ci: use push-charts nodejs tool to manage push to GHCR.io (#23)
This commit is contained in:
parent
8994c62db5
commit
394ce954f7
13 changed files with 1220 additions and 56 deletions
36
.github/workflows/ci.yaml
vendored
Normal file
36
.github/workflows/ci.yaml
vendored
Normal file
|
@ -0,0 +1,36 @@
|
||||||
|
name: CI
|
||||||
|
|
||||||
|
on:
|
||||||
|
pull_request:
|
||||||
|
merge_group:
|
||||||
|
|
||||||
|
concurrency:
|
||||||
|
group: ${{ github.workflow }}-${{ github.ref }}
|
||||||
|
cancel-in-progress: true
|
||||||
|
|
||||||
|
env:
|
||||||
|
# renovate: datasource=node-version depName=node
|
||||||
|
NODE_VERSION: 22.14.0
|
||||||
|
|
||||||
|
jobs:
|
||||||
|
test:
|
||||||
|
runs-on: ubuntu-24.04
|
||||||
|
steps:
|
||||||
|
- name: Checkout
|
||||||
|
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
|
||||||
|
|
||||||
|
- name: Install pnpm
|
||||||
|
uses: pnpm/action-setup@a7487c7e89a18df4991f7f222e4898a00d66ddda # v4.1.0
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
|
||||||
|
with:
|
||||||
|
node-version: ${{ env.NODE_VERSION }}
|
||||||
|
cache: pnpm
|
||||||
|
|
||||||
|
- name: Install dev dependencies
|
||||||
|
run: pnpm install --frozen-lockfile
|
||||||
|
|
||||||
|
- run: pnpm run prettier:check
|
||||||
|
|
||||||
|
- run: pnpm run test
|
16
.github/workflows/release.yaml
vendored
16
.github/workflows/release.yaml
vendored
|
@ -5,7 +5,12 @@ on:
|
||||||
branches:
|
branches:
|
||||||
- main
|
- main
|
||||||
|
|
||||||
|
env:
|
||||||
|
# renovate: datasource=node-version depName=node
|
||||||
|
NODE_VERSION: 22.14.0
|
||||||
|
|
||||||
permissions: {}
|
permissions: {}
|
||||||
|
|
||||||
jobs:
|
jobs:
|
||||||
release:
|
release:
|
||||||
permissions:
|
permissions:
|
||||||
|
@ -47,9 +52,10 @@ jobs:
|
||||||
username: ${{ github.actor }}
|
username: ${{ github.actor }}
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
password: ${{ secrets.GITHUB_TOKEN }}
|
||||||
|
|
||||||
|
- name: Setup Node.js
|
||||||
|
uses: actions/setup-node@1d0ff469b7ec7b3cb9d8673fde0c81c44821de2a # v4.2.0
|
||||||
|
with:
|
||||||
|
node-version: ${{ env.NODE_VERSION }}
|
||||||
|
|
||||||
- name: Push charts to GHCR
|
- name: Push charts to GHCR
|
||||||
run: |
|
run: "node --experimental-strip-types scripts/push-charts.ts ${{ steps.releaser.outputs.changed_charts }}"
|
||||||
IFS=',' read -ra CHARTS <<< "${{ steps.releaser.outputs.changed_charts }}"
|
|
||||||
for chart in "${CHARTS[@]}"; do
|
|
||||||
helm push "${chart}" "oci://ghcr.io/${GITHUB_REPOSITORY}"
|
|
||||||
done
|
|
||||||
|
|
4
.gitignore
vendored
4
.gitignore
vendored
|
@ -6,3 +6,7 @@
|
||||||
|
|
||||||
# Helm
|
# Helm
|
||||||
output
|
output
|
||||||
|
.cr-release-packages
|
||||||
|
|
||||||
|
# Node
|
||||||
|
node_modules
|
||||||
|
|
2
.prettierignore
Normal file
2
.prettierignore
Normal file
|
@ -0,0 +1,2 @@
|
||||||
|
templates
|
||||||
|
pnpm-lock.yaml
|
|
@ -10,6 +10,7 @@ Contains Helm charts maintained with love by myself.
|
||||||
See the README.md in each chart directory for more information.
|
See the README.md in each chart directory for more information.
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
You can add this repository to your [Helm](https://helm.sh/) installation by running the following command:
|
You can add this repository to your [Helm](https://helm.sh/) installation by running the following command:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
|
|
@ -4,11 +4,14 @@ This **unofficial** chart deploys [Immich](https://immich.app/) and
|
||||||
is targeted at an audience which wants to have some lower level control over the deployment.
|
is targeted at an audience which wants to have some lower level control over the deployment.
|
||||||
|
|
||||||
## Prerequisites
|
## Prerequisites
|
||||||
|
|
||||||
This chart requires:
|
This chart requires:
|
||||||
|
|
||||||
- a PostgreSQL database with `pgvector` or `pgvector.rs` extension installed
|
- a PostgreSQL database with `pgvector` or `pgvector.rs` extension installed
|
||||||
- a Redis instance
|
- a Redis instance
|
||||||
|
|
||||||
## Usage
|
## Usage
|
||||||
|
|
||||||
You can install this chart by running the following command:
|
You can install this chart by running the following command:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
|
@ -19,9 +22,11 @@ helm install my-release oci://ghcr.io/secustor/helm-charts/immich
|
||||||
```
|
```
|
||||||
|
|
||||||
## Example
|
## Example
|
||||||
|
|
||||||
This example assumes that the CloudNativePG operator has been deployed and configured.
|
This example assumes that the CloudNativePG operator has been deployed and configured.
|
||||||
|
|
||||||
You will:
|
You will:
|
||||||
|
|
||||||
- Create secrets for PostgreSQL and Redis
|
- Create secrets for PostgreSQL and Redis
|
||||||
- Request a PostgreSQL instance with the `pgvector` extension
|
- Request a PostgreSQL instance with the `pgvector` extension
|
||||||
- Deploy a Redis instance
|
- Deploy a Redis instance
|
||||||
|
@ -30,6 +35,7 @@ You will:
|
||||||
Value files can be found in the [`example` directory](https://github.com/secustor/helm-charts/tree/main/charts/immich/example).
|
Value files can be found in the [`example` directory](https://github.com/secustor/helm-charts/tree/main/charts/immich/example).
|
||||||
|
|
||||||
### PostgreSQL
|
### PostgreSQL
|
||||||
|
|
||||||
This assumes you have [CloudNativePG](https://cloudnative-pg.io/)
|
This assumes you have [CloudNativePG](https://cloudnative-pg.io/)
|
||||||
installed and configured.
|
installed and configured.
|
||||||
|
|
||||||
|
@ -38,18 +44,23 @@ kubectl create -f example/postgres.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
### Redis
|
### Redis
|
||||||
|
|
||||||
Create the static password secret for Redis.
|
Create the static password secret for Redis.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
kubectl create -f example/redis-secret.yaml
|
kubectl create -f example/redis-secret.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
Install the Redis chart.
|
Install the Redis chart.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
helm install immich-redis registry-1.docker.io/bitnamicharts/redis -f example/redis-values.yaml
|
helm install immich-redis registry-1.docker.io/bitnamicharts/redis -f example/redis-values.yaml
|
||||||
```
|
```
|
||||||
|
|
||||||
### Immich
|
### Immich
|
||||||
|
|
||||||
Install the Immich chart.
|
Install the Immich chart.
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
helm install immich oci://ghcr.io/secustor/helm-charts/immich -f example/immich-values.yaml
|
helm install immich oci://ghcr.io/secustor/helm-charts/immich -f example/immich-values.yaml
|
||||||
```
|
```
|
||||||
|
|
|
@ -4,7 +4,6 @@ fullnameOverride: ""
|
||||||
|
|
||||||
imagePullSecrets: []
|
imagePullSecrets: []
|
||||||
|
|
||||||
|
|
||||||
# Configurations that are relevant for all the components of the chart
|
# Configurations that are relevant for all the components of the chart
|
||||||
common:
|
common:
|
||||||
config:
|
config:
|
||||||
|
@ -51,7 +50,8 @@ server:
|
||||||
podAnnotations: {}
|
podAnnotations: {}
|
||||||
podLabels: {}
|
podLabels: {}
|
||||||
|
|
||||||
resources: {}
|
resources:
|
||||||
|
{}
|
||||||
# limits:
|
# limits:
|
||||||
# cpu: 100m
|
# cpu: 100m
|
||||||
# memory: 128Mi
|
# memory: 128Mi
|
||||||
|
@ -72,7 +72,8 @@ server:
|
||||||
podSecurityContext: {}
|
podSecurityContext: {}
|
||||||
# fsGroup: 2000
|
# fsGroup: 2000
|
||||||
|
|
||||||
securityContext: {}
|
securityContext:
|
||||||
|
{}
|
||||||
# capabilities:
|
# capabilities:
|
||||||
# drop:
|
# drop:
|
||||||
# - ALL
|
# - ALL
|
||||||
|
@ -81,7 +82,8 @@ server:
|
||||||
# runAsUser: 1000
|
# runAsUser: 1000
|
||||||
|
|
||||||
# Additional environment variables to set on the container.
|
# Additional environment variables to set on the container.
|
||||||
env: []
|
env:
|
||||||
|
[]
|
||||||
# - name: DB_VECTOR_EXTENSION
|
# - name: DB_VECTOR_EXTENSION
|
||||||
# value: "pgvector"
|
# value: "pgvector"
|
||||||
# - name: SOME_OTHER_ENV
|
# - name: SOME_OTHER_ENV
|
||||||
|
@ -105,7 +107,6 @@ server:
|
||||||
# - name: uploads
|
# - name: uploads
|
||||||
# mountPath: /usr/src/app/upload
|
# mountPath: /usr/src/app/upload
|
||||||
|
|
||||||
|
|
||||||
machineLearning:
|
machineLearning:
|
||||||
enabled: false
|
enabled: false
|
||||||
cache:
|
cache:
|
||||||
|
@ -125,7 +126,8 @@ machineLearning:
|
||||||
podAnnotations: {}
|
podAnnotations: {}
|
||||||
podLabels: {}
|
podLabels: {}
|
||||||
|
|
||||||
resources: {}
|
resources:
|
||||||
|
{}
|
||||||
# limits:
|
# limits:
|
||||||
# cpu: 100m
|
# cpu: 100m
|
||||||
# memory: 128Mi
|
# memory: 128Mi
|
||||||
|
@ -146,7 +148,8 @@ machineLearning:
|
||||||
podSecurityContext: {}
|
podSecurityContext: {}
|
||||||
# fsGroup: 2000
|
# fsGroup: 2000
|
||||||
|
|
||||||
securityContext: {}
|
securityContext:
|
||||||
|
{}
|
||||||
# capabilities:
|
# capabilities:
|
||||||
# drop:
|
# drop:
|
||||||
# - ALL
|
# - ALL
|
||||||
|
@ -155,7 +158,8 @@ machineLearning:
|
||||||
# runAsUser: 1000
|
# runAsUser: 1000
|
||||||
|
|
||||||
# Additional environment variables to set on the container.
|
# Additional environment variables to set on the container.
|
||||||
env: []
|
env:
|
||||||
|
[]
|
||||||
# - name: DB_VECTOR_EXTENSION
|
# - name: DB_VECTOR_EXTENSION
|
||||||
# value: "pgvector"
|
# value: "pgvector"
|
||||||
# - name: SOME_OTHER_ENV
|
# - name: SOME_OTHER_ENV
|
||||||
|
@ -195,7 +199,8 @@ serviceAccount:
|
||||||
ingress:
|
ingress:
|
||||||
enabled: false
|
enabled: false
|
||||||
className: ""
|
className: ""
|
||||||
annotations: {}
|
annotations:
|
||||||
|
{}
|
||||||
# kubernetes.io/ingress.class: nginx
|
# kubernetes.io/ingress.class: nginx
|
||||||
# kubernetes.io/tls-acme: "true"
|
# kubernetes.io/tls-acme: "true"
|
||||||
hosts:
|
hosts:
|
||||||
|
@ -208,7 +213,6 @@ ingress:
|
||||||
# hosts:
|
# hosts:
|
||||||
# - chart-example.local
|
# - chart-example.local
|
||||||
|
|
||||||
|
|
||||||
# This block is for setting up the HTTPROUTE for more information can be found here: https://kubernetes.io/docs/concepts/services-networking/gateway/#api-kind-httproute
|
# This block is for setting up the HTTPROUTE for more information can be found here: https://kubernetes.io/docs/concepts/services-networking/gateway/#api-kind-httproute
|
||||||
httpRoute:
|
httpRoute:
|
||||||
enabled: false
|
enabled: false
|
||||||
|
|
20
package.json
Normal file
20
package.json
Normal file
|
@ -0,0 +1,20 @@
|
||||||
|
{
|
||||||
|
"name": "helm-charts",
|
||||||
|
"type": "module",
|
||||||
|
"packageManager": "pnpm@10.5.2",
|
||||||
|
"volta": {
|
||||||
|
"node": "22.14.0",
|
||||||
|
"pnpm": "10.5.2"
|
||||||
|
},
|
||||||
|
"scripts": {
|
||||||
|
"test": "vitest",
|
||||||
|
"prettier:check": "prettier --check .",
|
||||||
|
"prettier:fix": "prettier --write ."
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "22.13.5",
|
||||||
|
"prettier": "3.5.2",
|
||||||
|
"vitest": "3.0.7",
|
||||||
|
"vitest-mock-extended": "3.0.1"
|
||||||
|
}
|
||||||
|
}
|
920
pnpm-lock.yaml
generated
Normal file
920
pnpm-lock.yaml
generated
Normal file
|
@ -0,0 +1,920 @@
|
||||||
|
lockfileVersion: '9.0'
|
||||||
|
|
||||||
|
settings:
|
||||||
|
autoInstallPeers: true
|
||||||
|
excludeLinksFromLockfile: false
|
||||||
|
|
||||||
|
importers:
|
||||||
|
|
||||||
|
.:
|
||||||
|
devDependencies:
|
||||||
|
"@types/node":
|
||||||
|
specifier: 22.13.5
|
||||||
|
version: 22.13.5
|
||||||
|
prettier:
|
||||||
|
specifier: 3.5.2
|
||||||
|
version: 3.5.2
|
||||||
|
vitest:
|
||||||
|
specifier: 3.0.7
|
||||||
|
version: 3.0.7(@types/node@22.13.5)
|
||||||
|
vitest-mock-extended:
|
||||||
|
specifier: 3.0.1
|
||||||
|
version: 3.0.1(typescript@5.8.2)(vitest@3.0.7(@types/node@22.13.5))
|
||||||
|
|
||||||
|
packages:
|
||||||
|
|
||||||
|
'@esbuild/aix-ppc64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-O7vun9Sf8DFjH2UtqK8Ku3LkquL9SZL8OLY1T5NZkA34+wG3OQF7cl4Ql8vdNzM6fzBbYfLaiRLIOZ+2FOCgBQ==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [ppc64]
|
||||||
|
os: [aix]
|
||||||
|
|
||||||
|
'@esbuild/android-arm64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-grvv8WncGjDSyUBjN9yHXNt+cq0snxXbDxy5pJtzMKGmmpPxeAmAhWxXI+01lU5rwZomDgD3kJwulEnhTRUd6g==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [android]
|
||||||
|
|
||||||
|
'@esbuild/android-arm@0.25.0':
|
||||||
|
resolution: {integrity: sha512-PTyWCYYiU0+1eJKmw21lWtC+d08JDZPQ5g+kFyxP0V+es6VPPSUhM6zk8iImp2jbV6GwjX4pap0JFbUQN65X1g==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [android]
|
||||||
|
|
||||||
|
'@esbuild/android-x64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-m/ix7SfKG5buCnxasr52+LI78SQ+wgdENi9CqyCXwjVR2X4Jkz+BpC3le3AoBPYTC9NHklwngVXvbJ9/Akhrfg==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [android]
|
||||||
|
|
||||||
|
'@esbuild/darwin-arm64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-mVwdUb5SRkPayVadIOI78K7aAnPamoeFR2bT5nszFUZ9P8UpK4ratOdYbZZXYSqPKMHfS1wdHCJk1P1EZpRdvw==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [darwin]
|
||||||
|
|
||||||
|
'@esbuild/darwin-x64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-DgDaYsPWFTS4S3nWpFcMn/33ZZwAAeAFKNHNa1QN0rI4pUjgqf0f7ONmXf6d22tqTY+H9FNdgeaAa+YIFUn2Rg==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [darwin]
|
||||||
|
|
||||||
|
'@esbuild/freebsd-arm64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-VN4ocxy6dxefN1MepBx/iD1dH5K8qNtNe227I0mnTRjry8tj5MRk4zprLEdG8WPyAPb93/e4pSgi1SoHdgOa4w==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [freebsd]
|
||||||
|
|
||||||
|
'@esbuild/freebsd-x64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-mrSgt7lCh07FY+hDD1TxiTyIHyttn6vnjesnPoVDNmDfOmggTLXRv8Id5fNZey1gl/V2dyVK1VXXqVsQIiAk+A==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [freebsd]
|
||||||
|
|
||||||
|
'@esbuild/linux-arm64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-9QAQjTWNDM/Vk2bgBl17yWuZxZNQIF0OUUuPZRKoDtqF2k4EtYbpyiG5/Dk7nqeK6kIJWPYldkOcBqjXjrUlmg==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/linux-arm@0.25.0':
|
||||||
|
resolution: {integrity: sha512-vkB3IYj2IDo3g9xX7HqhPYxVkNQe8qTK55fraQyTzTX/fxaDtXiEnavv9geOsonh2Fd2RMB+i5cbhu2zMNWJwg==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/linux-ia32@0.25.0':
|
||||||
|
resolution: {integrity: sha512-43ET5bHbphBegyeqLb7I1eYn2P/JYGNmzzdidq/w0T8E2SsYL1U6un2NFROFRg1JZLTzdCoRomg8Rvf9M6W6Gg==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [ia32]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/linux-loong64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-fC95c/xyNFueMhClxJmeRIj2yrSMdDfmqJnyOY4ZqsALkDrrKJfIg5NTMSzVBr5YW1jf+l7/cndBfP3MSDpoHw==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [loong64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/linux-mips64el@0.25.0':
|
||||||
|
resolution: {integrity: sha512-nkAMFju7KDW73T1DdH7glcyIptm95a7Le8irTQNO/qtkoyypZAnjchQgooFUDQhNAy4iu08N79W4T4pMBwhPwQ==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [mips64el]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/linux-ppc64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-NhyOejdhRGS8Iwv+KKR2zTq2PpysF9XqY+Zk77vQHqNbo/PwZCzB5/h7VGuREZm1fixhs4Q/qWRSi5zmAiO4Fw==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [ppc64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/linux-riscv64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-5S/rbP5OY+GHLC5qXp1y/Mx//e92L1YDqkiBbO9TQOvuFXM+iDqUNG5XopAnXoRH3FjIUDkeGcY1cgNvnXp/kA==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [riscv64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/linux-s390x@0.25.0':
|
||||||
|
resolution: {integrity: sha512-XM2BFsEBz0Fw37V0zU4CXfcfuACMrppsMFKdYY2WuTS3yi8O1nFOhil/xhKTmE1nPmVyvQJjJivgDT+xh8pXJA==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [s390x]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/linux-x64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-9yl91rHw/cpwMCNytUDxwj2XjFpxML0y9HAOH9pNVQDpQrBxHy01Dx+vaMu0N1CKa/RzBD2hB4u//nfc+Sd3Cw==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/netbsd-arm64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-RuG4PSMPFfrkH6UwCAqBzauBWTygTvb1nxWasEJooGSJ/NwRw7b2HOwyRTQIU97Hq37l3npXoZGYMy3b3xYvPw==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [netbsd]
|
||||||
|
|
||||||
|
'@esbuild/netbsd-x64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-jl+qisSB5jk01N5f7sPCsBENCOlPiS/xptD5yxOx2oqQfyourJwIKLRA2yqWdifj3owQZCL2sn6o08dBzZGQzA==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [netbsd]
|
||||||
|
|
||||||
|
'@esbuild/openbsd-arm64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-21sUNbq2r84YE+SJDfaQRvdgznTD8Xc0oc3p3iW/a1EVWeNj/SdUCbm5U0itZPQYRuRTW20fPMWMpcrciH2EJw==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [openbsd]
|
||||||
|
|
||||||
|
'@esbuild/openbsd-x64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-2gwwriSMPcCFRlPlKx3zLQhfN/2WjJ2NSlg5TKLQOJdV0mSxIcYNTMhk3H3ulL/cak+Xj0lY1Ym9ysDV1igceg==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [openbsd]
|
||||||
|
|
||||||
|
'@esbuild/sunos-x64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-bxI7ThgLzPrPz484/S9jLlvUAHYMzy6I0XiU1ZMeAEOBcS0VePBFxh1JjTQt3Xiat5b6Oh4x7UC7IwKQKIJRIg==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [sunos]
|
||||||
|
|
||||||
|
'@esbuild/win32-arm64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-ZUAc2YK6JW89xTbXvftxdnYy3m4iHIkDtK3CLce8wg8M2L+YZhIvO1DKpxrd0Yr59AeNNkTiic9YLf6FTtXWMw==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
|
'@esbuild/win32-ia32@0.25.0':
|
||||||
|
resolution: {integrity: sha512-eSNxISBu8XweVEWG31/JzjkIGbGIJN/TrRoiSVZwZ6pkC6VX4Im/WV2cz559/TXLcYbcrDN8JtKgd9DJVIo8GA==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [ia32]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
|
'@esbuild/win32-x64@0.25.0':
|
||||||
|
resolution: {integrity: sha512-ZENoHJBxA20C2zFzh6AI4fT6RraMzjYw4xKWemRTRmRVtN9c5DcH9r/f2ihEkMjOW5eGgrwCslG/+Y/3bL+DHQ==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
|
'@jridgewell/sourcemap-codec@1.5.0':
|
||||||
|
resolution: {integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==}
|
||||||
|
|
||||||
|
'@rollup/rollup-android-arm-eabi@4.34.8':
|
||||||
|
resolution: {integrity: sha512-q217OSE8DTp8AFHuNHXo0Y86e1wtlfVrXiAlwkIvGRQv9zbc6mE3sjIVfwI8sYUyNxwOg0j/Vm1RKM04JcWLJw==}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [android]
|
||||||
|
|
||||||
|
'@rollup/rollup-android-arm64@4.34.8':
|
||||||
|
resolution: {integrity: sha512-Gigjz7mNWaOL9wCggvoK3jEIUUbGul656opstjaUSGC3eT0BM7PofdAJaBfPFWWkXNVAXbaQtC99OCg4sJv70Q==}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [android]
|
||||||
|
|
||||||
|
'@rollup/rollup-darwin-arm64@4.34.8':
|
||||||
|
resolution: {integrity: sha512-02rVdZ5tgdUNRxIUrFdcMBZQoaPMrxtwSb+/hOfBdqkatYHR3lZ2A2EGyHq2sGOd0Owk80oV3snlDASC24He3Q==}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [darwin]
|
||||||
|
|
||||||
|
'@rollup/rollup-darwin-x64@4.34.8':
|
||||||
|
resolution: {integrity: sha512-qIP/elwR/tq/dYRx3lgwK31jkZvMiD6qUtOycLhTzCvrjbZ3LjQnEM9rNhSGpbLXVJYQ3rq39A6Re0h9tU2ynw==}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [darwin]
|
||||||
|
|
||||||
|
'@rollup/rollup-freebsd-arm64@4.34.8':
|
||||||
|
resolution: {integrity: sha512-IQNVXL9iY6NniYbTaOKdrlVP3XIqazBgJOVkddzJlqnCpRi/yAeSOa8PLcECFSQochzqApIOE1GHNu3pCz+BDA==}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [freebsd]
|
||||||
|
|
||||||
|
'@rollup/rollup-freebsd-x64@4.34.8':
|
||||||
|
resolution: {integrity: sha512-TYXcHghgnCqYFiE3FT5QwXtOZqDj5GmaFNTNt3jNC+vh22dc/ukG2cG+pi75QO4kACohZzidsq7yKTKwq/Jq7Q==}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [freebsd]
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-arm-gnueabihf@4.34.8':
|
||||||
|
resolution: {integrity: sha512-A4iphFGNkWRd+5m3VIGuqHnG3MVnqKe7Al57u9mwgbyZ2/xF9Jio72MaY7xxh+Y87VAHmGQr73qoKL9HPbXj1g==}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-arm-musleabihf@4.34.8':
|
||||||
|
resolution: {integrity: sha512-S0lqKLfTm5u+QTxlFiAnb2J/2dgQqRy/XvziPtDd1rKZFXHTyYLoVL58M/XFwDI01AQCDIevGLbQrMAtdyanpA==}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-arm64-gnu@4.34.8':
|
||||||
|
resolution: {integrity: sha512-jpz9YOuPiSkL4G4pqKrus0pn9aYwpImGkosRKwNi+sJSkz+WU3anZe6hi73StLOQdfXYXC7hUfsQlTnjMd3s1A==}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-arm64-musl@4.34.8':
|
||||||
|
resolution: {integrity: sha512-KdSfaROOUJXgTVxJNAZ3KwkRc5nggDk+06P6lgi1HLv1hskgvxHUKZ4xtwHkVYJ1Rep4GNo+uEfycCRRxht7+Q==}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-loongarch64-gnu@4.34.8':
|
||||||
|
resolution: {integrity: sha512-NyF4gcxwkMFRjgXBM6g2lkT58OWztZvw5KkV2K0qqSnUEqCVcqdh2jN4gQrTn/YUpAcNKyFHfoOZEer9nwo6uQ==}
|
||||||
|
cpu: [loong64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-powerpc64le-gnu@4.34.8':
|
||||||
|
resolution: {integrity: sha512-LMJc999GkhGvktHU85zNTDImZVUCJ1z/MbAJTnviiWmmjyckP5aQsHtcujMjpNdMZPT2rQEDBlJfubhs3jsMfw==}
|
||||||
|
cpu: [ppc64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-riscv64-gnu@4.34.8':
|
||||||
|
resolution: {integrity: sha512-xAQCAHPj8nJq1PI3z8CIZzXuXCstquz7cIOL73HHdXiRcKk8Ywwqtx2wrIy23EcTn4aZ2fLJNBB8d0tQENPCmw==}
|
||||||
|
cpu: [riscv64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-s390x-gnu@4.34.8':
|
||||||
|
resolution: {integrity: sha512-DdePVk1NDEuc3fOe3dPPTb+rjMtuFw89gw6gVWxQFAuEqqSdDKnrwzZHrUYdac7A7dXl9Q2Vflxpme15gUWQFA==}
|
||||||
|
cpu: [s390x]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-x64-gnu@4.34.8':
|
||||||
|
resolution: {integrity: sha512-8y7ED8gjxITUltTUEJLQdgpbPh1sUQ0kMTmufRF/Ns5tI9TNMNlhWtmPKKHCU0SilX+3MJkZ0zERYYGIVBYHIA==}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-x64-musl@4.34.8':
|
||||||
|
resolution: {integrity: sha512-SCXcP0ZpGFIe7Ge+McxY5zKxiEI5ra+GT3QRxL0pMMtxPfpyLAKleZODi1zdRHkz5/BhueUrYtYVgubqe9JBNQ==}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@rollup/rollup-win32-arm64-msvc@4.34.8':
|
||||||
|
resolution: {integrity: sha512-YHYsgzZgFJzTRbth4h7Or0m5O74Yda+hLin0irAIobkLQFRQd1qWmnoVfwmKm9TXIZVAD0nZ+GEb2ICicLyCnQ==}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
|
'@rollup/rollup-win32-ia32-msvc@4.34.8':
|
||||||
|
resolution: {integrity: sha512-r3NRQrXkHr4uWy5TOjTpTYojR9XmF0j/RYgKCef+Ag46FWUTltm5ziticv8LdNsDMehjJ543x/+TJAek/xBA2w==}
|
||||||
|
cpu: [ia32]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
|
'@rollup/rollup-win32-x64-msvc@4.34.8':
|
||||||
|
resolution: {integrity: sha512-U0FaE5O1BCpZSeE6gBl3c5ObhePQSfk9vDRToMmTkbhCOgW4jqvtS5LGyQ76L1fH8sM0keRp4uDTsbjiUyjk0g==}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
|
'@types/estree@1.0.6':
|
||||||
|
resolution: {integrity: sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==}
|
||||||
|
|
||||||
|
'@types/node@22.13.5':
|
||||||
|
resolution: {integrity: sha512-+lTU0PxZXn0Dr1NBtC7Y8cR21AJr87dLLU953CWA6pMxxv/UDc7jYAY90upcrie1nRcD6XNG5HOYEDtgW5TxAg==}
|
||||||
|
|
||||||
|
'@vitest/expect@3.0.7':
|
||||||
|
resolution: {integrity: sha512-QP25f+YJhzPfHrHfYHtvRn+uvkCFCqFtW9CktfBxmB+25QqWsx7VB2As6f4GmwllHLDhXNHvqedwhvMmSnNmjw==}
|
||||||
|
|
||||||
|
'@vitest/mocker@3.0.7':
|
||||||
|
resolution: {integrity: sha512-qui+3BLz9Eonx4EAuR/i+QlCX6AUZ35taDQgwGkK/Tw6/WgwodSrjN1X2xf69IA/643ZX5zNKIn2svvtZDrs4w==}
|
||||||
|
peerDependencies:
|
||||||
|
msw: ^2.4.9
|
||||||
|
vite: ^5.0.0 || ^6.0.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
msw:
|
||||||
|
optional: true
|
||||||
|
vite:
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@vitest/pretty-format@3.0.7':
|
||||||
|
resolution: {integrity: sha512-CiRY0BViD/V8uwuEzz9Yapyao+M9M008/9oMOSQydwbwb+CMokEq3XVaF3XK/VWaOK0Jm9z7ENhybg70Gtxsmg==}
|
||||||
|
|
||||||
|
'@vitest/runner@3.0.7':
|
||||||
|
resolution: {integrity: sha512-WeEl38Z0S2ZcuRTeyYqaZtm4e26tq6ZFqh5y8YD9YxfWuu0OFiGFUbnxNynwLjNRHPsXyee2M9tV7YxOTPZl2g==}
|
||||||
|
|
||||||
|
'@vitest/snapshot@3.0.7':
|
||||||
|
resolution: {integrity: sha512-eqTUryJWQN0Rtf5yqCGTQWsCFOQe4eNz5Twsu21xYEcnFJtMU5XvmG0vgebhdLlrHQTSq5p8vWHJIeJQV8ovsA==}
|
||||||
|
|
||||||
|
'@vitest/spy@3.0.7':
|
||||||
|
resolution: {integrity: sha512-4T4WcsibB0B6hrKdAZTM37ekuyFZt2cGbEGd2+L0P8ov15J1/HUsUaqkXEQPNAWr4BtPPe1gI+FYfMHhEKfR8w==}
|
||||||
|
|
||||||
|
'@vitest/utils@3.0.7':
|
||||||
|
resolution: {integrity: sha512-xePVpCRfooFX3rANQjwoditoXgWb1MaFbzmGuPP59MK6i13mrnDw/yEIyJudLeW6/38mCNcwCiJIGmpDPibAIg==}
|
||||||
|
|
||||||
|
assertion-error@2.0.1:
|
||||||
|
resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
cac@6.7.14:
|
||||||
|
resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==}
|
||||||
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
|
chai@5.2.0:
|
||||||
|
resolution: {integrity: sha512-mCuXncKXk5iCLhfhwTc0izo0gtEmpz5CtG2y8GiOINBlMVS6v8TMRc5TaLWKS6692m9+dVVfzgeVxR5UxWHTYw==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
check-error@2.1.1:
|
||||||
|
resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
|
||||||
|
engines: {node: '>= 16'}
|
||||||
|
|
||||||
|
debug@4.4.0:
|
||||||
|
resolution: {integrity: sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==}
|
||||||
|
engines: {node: '>=6.0'}
|
||||||
|
peerDependencies:
|
||||||
|
supports-color: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
supports-color:
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
deep-eql@5.0.2:
|
||||||
|
resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
|
||||||
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
|
es-module-lexer@1.6.0:
|
||||||
|
resolution: {integrity: sha512-qqnD1yMU6tk/jnaMosogGySTZP8YtUgAffA9nMN+E/rjxcfRQ6IEk7IiozUjgxKoFHBGjTLnrHB/YC45r/59EQ==}
|
||||||
|
|
||||||
|
esbuild@0.25.0:
|
||||||
|
resolution: {integrity: sha512-BXq5mqc8ltbaN34cDqWuYKyNhX8D/Z0J1xdtdQ8UcIIIyJyz+ZMKUt58tF3SrZ85jcfN/PZYhjR5uDQAYNVbuw==}
|
||||||
|
engines: {node: '>=18'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
|
estree-walker@3.0.3:
|
||||||
|
resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==}
|
||||||
|
|
||||||
|
expect-type@1.2.0:
|
||||||
|
resolution: {integrity: sha512-80F22aiJ3GLyVnS/B3HzgR6RelZVumzj9jkL0Rhz4h0xYbNW9PjlQz5h3J/SShErbXBc295vseR4/MIbVmUbeA==}
|
||||||
|
engines: {node: '>=12.0.0'}
|
||||||
|
|
||||||
|
fsevents@2.3.3:
|
||||||
|
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
|
||||||
|
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
||||||
|
os: [darwin]
|
||||||
|
|
||||||
|
loupe@3.1.3:
|
||||||
|
resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==}
|
||||||
|
|
||||||
|
magic-string@0.30.17:
|
||||||
|
resolution: {integrity: sha512-sNPKHvyjVf7gyjwS4xGTaW/mCnF8wnjtifKBEhxfZ7E/S8tQ0rssrwGNn6q8JH/ohItJfSQp9mBtQYuTlH5QnA==}
|
||||||
|
|
||||||
|
ms@2.1.3:
|
||||||
|
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
|
||||||
|
|
||||||
|
nanoid@3.3.8:
|
||||||
|
resolution: {integrity: sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==}
|
||||||
|
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
|
pathe@2.0.3:
|
||||||
|
resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==}
|
||||||
|
|
||||||
|
pathval@2.0.0:
|
||||||
|
resolution: {integrity: sha512-vE7JKRyES09KiunauX7nd2Q9/L7lhok4smP9RZTDeD4MVs72Dp2qNFVz39Nz5a0FVEW0BJR6C0DYrq6unoziZA==}
|
||||||
|
engines: {node: '>= 14.16'}
|
||||||
|
|
||||||
|
picocolors@1.1.1:
|
||||||
|
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
|
||||||
|
|
||||||
|
postcss@8.5.3:
|
||||||
|
resolution: {integrity: sha512-dle9A3yYxlBSrt8Fu+IpjGT8SY8hN0mlaA6GY8t0P5PjIOZemULz/E2Bnm/2dcUOena75OTNkHI76uZBNUUq3A==}
|
||||||
|
engines: {node: ^10 || ^12 || >=14}
|
||||||
|
|
||||||
|
prettier@3.5.2:
|
||||||
|
resolution: {integrity: sha512-lc6npv5PH7hVqozBR7lkBNOGXV9vMwROAPlumdBkX0wTbbzPu/U1hk5yL8p2pt4Xoc+2mkT8t/sow2YrV/M5qg==}
|
||||||
|
engines: {node: '>=14'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
|
rollup@4.34.8:
|
||||||
|
resolution: {integrity: sha512-489gTVMzAYdiZHFVA/ig/iYFllCcWFHMvUHI1rpFmkoUtRlQxqh6/yiNqnYibjMZ2b/+FUQwldG+aLsEt6bglQ==}
|
||||||
|
engines: {node: '>=18.0.0', npm: '>=8.0.0'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
|
siginfo@2.0.0:
|
||||||
|
resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==}
|
||||||
|
|
||||||
|
source-map-js@1.2.1:
|
||||||
|
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
|
stackback@0.0.2:
|
||||||
|
resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==}
|
||||||
|
|
||||||
|
std-env@3.8.0:
|
||||||
|
resolution: {integrity: sha512-Bc3YwwCB+OzldMxOXJIIvC6cPRWr/LxOp48CdQTOkPyk/t4JWWJbrilwBd7RJzKV8QW7tJkcgAmeuLLJugl5/w==}
|
||||||
|
|
||||||
|
tinybench@2.9.0:
|
||||||
|
resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==}
|
||||||
|
|
||||||
|
tinyexec@0.3.2:
|
||||||
|
resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==}
|
||||||
|
|
||||||
|
tinypool@1.0.2:
|
||||||
|
resolution: {integrity: sha512-al6n+QEANGFOMf/dmUMsuS5/r9B06uwlyNjZZql/zv8J7ybHCgoihBNORZCY2mzUuAnomQa2JdhyHKzZxPCrFA==}
|
||||||
|
engines: {node: ^18.0.0 || >=20.0.0}
|
||||||
|
|
||||||
|
tinyrainbow@2.0.0:
|
||||||
|
resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==}
|
||||||
|
engines: {node: '>=14.0.0'}
|
||||||
|
|
||||||
|
tinyspy@3.0.2:
|
||||||
|
resolution: {integrity: sha512-n1cw8k1k0x4pgA2+9XrOkFydTerNcJ1zWCO5Nn9scWHTD+5tp8dghT2x1uduQePZTZgd3Tupf+x9BxJjeJi77Q==}
|
||||||
|
engines: {node: '>=14.0.0'}
|
||||||
|
|
||||||
|
ts-essentials@10.0.4:
|
||||||
|
resolution: {integrity: sha512-lwYdz28+S4nicm+jFi6V58LaAIpxzhg9rLdgNC1VsdP/xiFBseGhF1M/shwCk6zMmwahBZdXcl34LVHrEang3A==}
|
||||||
|
peerDependencies:
|
||||||
|
typescript: '>=4.5.0'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
typescript:
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
typescript@5.8.2:
|
||||||
|
resolution: {integrity: sha512-aJn6wq13/afZp/jT9QZmwEjDqqvSGp1VT5GVg+f/t6/oVyrgXM6BY1h9BRh/O5p3PlUPAe+WuiEZOmb/49RqoQ==}
|
||||||
|
engines: {node: '>=14.17'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
|
undici-types@6.20.0:
|
||||||
|
resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
|
||||||
|
|
||||||
|
vite-node@3.0.7:
|
||||||
|
resolution: {integrity: sha512-2fX0QwX4GkkkpULXdT1Pf4q0tC1i1lFOyseKoonavXUNlQ77KpW2XqBGGNIm/J4Ows4KxgGJzDguYVPKwG/n5A==}
|
||||||
|
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
|
vite@6.2.0:
|
||||||
|
resolution: {integrity: sha512-7dPxoo+WsT/64rDcwoOjk76XHj+TqNTIvHKcuMQ1k4/SeHDaQt5GFAeLYzrimZrMpn/O6DtdI03WUjdxuPM0oQ==}
|
||||||
|
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
|
||||||
|
hasBin: true
|
||||||
|
peerDependencies:
|
||||||
|
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
|
||||||
|
jiti: '>=1.21.0'
|
||||||
|
less: '*'
|
||||||
|
lightningcss: ^1.21.0
|
||||||
|
sass: '*'
|
||||||
|
sass-embedded: '*'
|
||||||
|
stylus: '*'
|
||||||
|
sugarss: '*'
|
||||||
|
terser: ^5.16.0
|
||||||
|
tsx: ^4.8.1
|
||||||
|
yaml: ^2.4.2
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@types/node':
|
||||||
|
optional: true
|
||||||
|
jiti:
|
||||||
|
optional: true
|
||||||
|
less:
|
||||||
|
optional: true
|
||||||
|
lightningcss:
|
||||||
|
optional: true
|
||||||
|
sass:
|
||||||
|
optional: true
|
||||||
|
sass-embedded:
|
||||||
|
optional: true
|
||||||
|
stylus:
|
||||||
|
optional: true
|
||||||
|
sugarss:
|
||||||
|
optional: true
|
||||||
|
terser:
|
||||||
|
optional: true
|
||||||
|
tsx:
|
||||||
|
optional: true
|
||||||
|
yaml:
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
vitest-mock-extended@3.0.1:
|
||||||
|
resolution: {integrity: sha512-VI7CRRvIi+MbAsqdGTxp3K+eiY7BR1zrVflZ5DBrFUXPjRZRgxXajlYdNyIu3v1bb5ZfdLANXwZ9i/RfVMfS6A==}
|
||||||
|
peerDependencies:
|
||||||
|
typescript: 3.x || 4.x || 5.x
|
||||||
|
vitest: '>=3.0.0'
|
||||||
|
|
||||||
|
vitest@3.0.7:
|
||||||
|
resolution: {integrity: sha512-IP7gPK3LS3Fvn44x30X1dM9vtawm0aesAa2yBIZ9vQf+qB69NXC5776+Qmcr7ohUXIQuLhk7xQR0aSUIDPqavg==}
|
||||||
|
engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0}
|
||||||
|
hasBin: true
|
||||||
|
peerDependencies:
|
||||||
|
'@edge-runtime/vm': '*'
|
||||||
|
'@types/debug': ^4.1.12
|
||||||
|
'@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0
|
||||||
|
'@vitest/browser': 3.0.7
|
||||||
|
'@vitest/ui': 3.0.7
|
||||||
|
happy-dom: '*'
|
||||||
|
jsdom: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@edge-runtime/vm':
|
||||||
|
optional: true
|
||||||
|
'@types/debug':
|
||||||
|
optional: true
|
||||||
|
'@types/node':
|
||||||
|
optional: true
|
||||||
|
'@vitest/browser':
|
||||||
|
optional: true
|
||||||
|
'@vitest/ui':
|
||||||
|
optional: true
|
||||||
|
happy-dom:
|
||||||
|
optional: true
|
||||||
|
jsdom:
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
why-is-node-running@2.3.0:
|
||||||
|
resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==}
|
||||||
|
engines: {node: '>=8'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
|
snapshots:
|
||||||
|
|
||||||
|
'@esbuild/aix-ppc64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/android-arm64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/android-arm@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/android-x64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/darwin-arm64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/darwin-x64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/freebsd-arm64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/freebsd-x64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-arm64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-arm@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-ia32@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-loong64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-mips64el@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-ppc64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-riscv64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-s390x@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-x64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/netbsd-arm64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/netbsd-x64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/openbsd-arm64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/openbsd-x64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/sunos-x64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/win32-arm64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/win32-ia32@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/win32-x64@0.25.0':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@jridgewell/sourcemap-codec@1.5.0': {}
|
||||||
|
|
||||||
|
'@rollup/rollup-android-arm-eabi@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-android-arm64@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-darwin-arm64@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-darwin-x64@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-freebsd-arm64@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-freebsd-x64@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-arm-gnueabihf@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-arm-musleabihf@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-arm64-gnu@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-arm64-musl@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-loongarch64-gnu@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-powerpc64le-gnu@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-riscv64-gnu@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-s390x-gnu@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-x64-gnu@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-linux-x64-musl@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-win32-arm64-msvc@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-win32-ia32-msvc@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@rollup/rollup-win32-x64-msvc@4.34.8':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@types/estree@1.0.6': {}
|
||||||
|
|
||||||
|
'@types/node@22.13.5':
|
||||||
|
dependencies:
|
||||||
|
undici-types: 6.20.0
|
||||||
|
|
||||||
|
'@vitest/expect@3.0.7':
|
||||||
|
dependencies:
|
||||||
|
'@vitest/spy': 3.0.7
|
||||||
|
'@vitest/utils': 3.0.7
|
||||||
|
chai: 5.2.0
|
||||||
|
tinyrainbow: 2.0.0
|
||||||
|
|
||||||
|
'@vitest/mocker@3.0.7(vite@6.2.0(@types/node@22.13.5))':
|
||||||
|
dependencies:
|
||||||
|
'@vitest/spy': 3.0.7
|
||||||
|
estree-walker: 3.0.3
|
||||||
|
magic-string: 0.30.17
|
||||||
|
optionalDependencies:
|
||||||
|
vite: 6.2.0(@types/node@22.13.5)
|
||||||
|
|
||||||
|
'@vitest/pretty-format@3.0.7':
|
||||||
|
dependencies:
|
||||||
|
tinyrainbow: 2.0.0
|
||||||
|
|
||||||
|
'@vitest/runner@3.0.7':
|
||||||
|
dependencies:
|
||||||
|
'@vitest/utils': 3.0.7
|
||||||
|
pathe: 2.0.3
|
||||||
|
|
||||||
|
'@vitest/snapshot@3.0.7':
|
||||||
|
dependencies:
|
||||||
|
'@vitest/pretty-format': 3.0.7
|
||||||
|
magic-string: 0.30.17
|
||||||
|
pathe: 2.0.3
|
||||||
|
|
||||||
|
'@vitest/spy@3.0.7':
|
||||||
|
dependencies:
|
||||||
|
tinyspy: 3.0.2
|
||||||
|
|
||||||
|
'@vitest/utils@3.0.7':
|
||||||
|
dependencies:
|
||||||
|
'@vitest/pretty-format': 3.0.7
|
||||||
|
loupe: 3.1.3
|
||||||
|
tinyrainbow: 2.0.0
|
||||||
|
|
||||||
|
assertion-error@2.0.1: {}
|
||||||
|
|
||||||
|
cac@6.7.14: {}
|
||||||
|
|
||||||
|
chai@5.2.0:
|
||||||
|
dependencies:
|
||||||
|
assertion-error: 2.0.1
|
||||||
|
check-error: 2.1.1
|
||||||
|
deep-eql: 5.0.2
|
||||||
|
loupe: 3.1.3
|
||||||
|
pathval: 2.0.0
|
||||||
|
|
||||||
|
check-error@2.1.1: {}
|
||||||
|
|
||||||
|
debug@4.4.0:
|
||||||
|
dependencies:
|
||||||
|
ms: 2.1.3
|
||||||
|
|
||||||
|
deep-eql@5.0.2: {}
|
||||||
|
|
||||||
|
es-module-lexer@1.6.0: {}
|
||||||
|
|
||||||
|
esbuild@0.25.0:
|
||||||
|
optionalDependencies:
|
||||||
|
'@esbuild/aix-ppc64': 0.25.0
|
||||||
|
'@esbuild/android-arm': 0.25.0
|
||||||
|
'@esbuild/android-arm64': 0.25.0
|
||||||
|
'@esbuild/android-x64': 0.25.0
|
||||||
|
'@esbuild/darwin-arm64': 0.25.0
|
||||||
|
'@esbuild/darwin-x64': 0.25.0
|
||||||
|
'@esbuild/freebsd-arm64': 0.25.0
|
||||||
|
'@esbuild/freebsd-x64': 0.25.0
|
||||||
|
'@esbuild/linux-arm': 0.25.0
|
||||||
|
'@esbuild/linux-arm64': 0.25.0
|
||||||
|
'@esbuild/linux-ia32': 0.25.0
|
||||||
|
'@esbuild/linux-loong64': 0.25.0
|
||||||
|
'@esbuild/linux-mips64el': 0.25.0
|
||||||
|
'@esbuild/linux-ppc64': 0.25.0
|
||||||
|
'@esbuild/linux-riscv64': 0.25.0
|
||||||
|
'@esbuild/linux-s390x': 0.25.0
|
||||||
|
'@esbuild/linux-x64': 0.25.0
|
||||||
|
'@esbuild/netbsd-arm64': 0.25.0
|
||||||
|
'@esbuild/netbsd-x64': 0.25.0
|
||||||
|
'@esbuild/openbsd-arm64': 0.25.0
|
||||||
|
'@esbuild/openbsd-x64': 0.25.0
|
||||||
|
'@esbuild/sunos-x64': 0.25.0
|
||||||
|
'@esbuild/win32-arm64': 0.25.0
|
||||||
|
'@esbuild/win32-ia32': 0.25.0
|
||||||
|
'@esbuild/win32-x64': 0.25.0
|
||||||
|
|
||||||
|
estree-walker@3.0.3:
|
||||||
|
dependencies:
|
||||||
|
'@types/estree': 1.0.6
|
||||||
|
|
||||||
|
expect-type@1.2.0: {}
|
||||||
|
|
||||||
|
fsevents@2.3.3:
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
loupe@3.1.3: {}
|
||||||
|
|
||||||
|
magic-string@0.30.17:
|
||||||
|
dependencies:
|
||||||
|
'@jridgewell/sourcemap-codec': 1.5.0
|
||||||
|
|
||||||
|
ms@2.1.3: {}
|
||||||
|
|
||||||
|
nanoid@3.3.8: {}
|
||||||
|
|
||||||
|
pathe@2.0.3: {}
|
||||||
|
|
||||||
|
pathval@2.0.0: {}
|
||||||
|
|
||||||
|
picocolors@1.1.1: {}
|
||||||
|
|
||||||
|
postcss@8.5.3:
|
||||||
|
dependencies:
|
||||||
|
nanoid: 3.3.8
|
||||||
|
picocolors: 1.1.1
|
||||||
|
source-map-js: 1.2.1
|
||||||
|
|
||||||
|
prettier@3.5.2: {}
|
||||||
|
|
||||||
|
rollup@4.34.8:
|
||||||
|
dependencies:
|
||||||
|
'@types/estree': 1.0.6
|
||||||
|
optionalDependencies:
|
||||||
|
'@rollup/rollup-android-arm-eabi': 4.34.8
|
||||||
|
'@rollup/rollup-android-arm64': 4.34.8
|
||||||
|
'@rollup/rollup-darwin-arm64': 4.34.8
|
||||||
|
'@rollup/rollup-darwin-x64': 4.34.8
|
||||||
|
'@rollup/rollup-freebsd-arm64': 4.34.8
|
||||||
|
'@rollup/rollup-freebsd-x64': 4.34.8
|
||||||
|
'@rollup/rollup-linux-arm-gnueabihf': 4.34.8
|
||||||
|
'@rollup/rollup-linux-arm-musleabihf': 4.34.8
|
||||||
|
'@rollup/rollup-linux-arm64-gnu': 4.34.8
|
||||||
|
'@rollup/rollup-linux-arm64-musl': 4.34.8
|
||||||
|
'@rollup/rollup-linux-loongarch64-gnu': 4.34.8
|
||||||
|
'@rollup/rollup-linux-powerpc64le-gnu': 4.34.8
|
||||||
|
'@rollup/rollup-linux-riscv64-gnu': 4.34.8
|
||||||
|
'@rollup/rollup-linux-s390x-gnu': 4.34.8
|
||||||
|
'@rollup/rollup-linux-x64-gnu': 4.34.8
|
||||||
|
'@rollup/rollup-linux-x64-musl': 4.34.8
|
||||||
|
'@rollup/rollup-win32-arm64-msvc': 4.34.8
|
||||||
|
'@rollup/rollup-win32-ia32-msvc': 4.34.8
|
||||||
|
'@rollup/rollup-win32-x64-msvc': 4.34.8
|
||||||
|
fsevents: 2.3.3
|
||||||
|
|
||||||
|
siginfo@2.0.0: {}
|
||||||
|
|
||||||
|
source-map-js@1.2.1: {}
|
||||||
|
|
||||||
|
stackback@0.0.2: {}
|
||||||
|
|
||||||
|
std-env@3.8.0: {}
|
||||||
|
|
||||||
|
tinybench@2.9.0: {}
|
||||||
|
|
||||||
|
tinyexec@0.3.2: {}
|
||||||
|
|
||||||
|
tinypool@1.0.2: {}
|
||||||
|
|
||||||
|
tinyrainbow@2.0.0: {}
|
||||||
|
|
||||||
|
tinyspy@3.0.2: {}
|
||||||
|
|
||||||
|
ts-essentials@10.0.4(typescript@5.8.2):
|
||||||
|
optionalDependencies:
|
||||||
|
typescript: 5.8.2
|
||||||
|
|
||||||
|
typescript@5.8.2: {}
|
||||||
|
|
||||||
|
undici-types@6.20.0: {}
|
||||||
|
|
||||||
|
vite-node@3.0.7(@types/node@22.13.5):
|
||||||
|
dependencies:
|
||||||
|
cac: 6.7.14
|
||||||
|
debug: 4.4.0
|
||||||
|
es-module-lexer: 1.6.0
|
||||||
|
pathe: 2.0.3
|
||||||
|
vite: 6.2.0(@types/node@22.13.5)
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- '@types/node'
|
||||||
|
- jiti
|
||||||
|
- less
|
||||||
|
- lightningcss
|
||||||
|
- sass
|
||||||
|
- sass-embedded
|
||||||
|
- stylus
|
||||||
|
- sugarss
|
||||||
|
- supports-color
|
||||||
|
- terser
|
||||||
|
- tsx
|
||||||
|
- yaml
|
||||||
|
|
||||||
|
vite@6.2.0(@types/node@22.13.5):
|
||||||
|
dependencies:
|
||||||
|
esbuild: 0.25.0
|
||||||
|
postcss: 8.5.3
|
||||||
|
rollup: 4.34.8
|
||||||
|
optionalDependencies:
|
||||||
|
'@types/node': 22.13.5
|
||||||
|
fsevents: 2.3.3
|
||||||
|
|
||||||
|
vitest-mock-extended@3.0.1(typescript@5.8.2)(vitest@3.0.7(@types/node@22.13.5)):
|
||||||
|
dependencies:
|
||||||
|
ts-essentials: 10.0.4(typescript@5.8.2)
|
||||||
|
typescript: 5.8.2
|
||||||
|
vitest: 3.0.7(@types/node@22.13.5)
|
||||||
|
|
||||||
|
vitest@3.0.7(@types/node@22.13.5):
|
||||||
|
dependencies:
|
||||||
|
'@vitest/expect': 3.0.7
|
||||||
|
'@vitest/mocker': 3.0.7(vite@6.2.0(@types/node@22.13.5))
|
||||||
|
'@vitest/pretty-format': 3.0.7
|
||||||
|
'@vitest/runner': 3.0.7
|
||||||
|
'@vitest/snapshot': 3.0.7
|
||||||
|
'@vitest/spy': 3.0.7
|
||||||
|
'@vitest/utils': 3.0.7
|
||||||
|
chai: 5.2.0
|
||||||
|
debug: 4.4.0
|
||||||
|
expect-type: 1.2.0
|
||||||
|
magic-string: 0.30.17
|
||||||
|
pathe: 2.0.3
|
||||||
|
std-env: 3.8.0
|
||||||
|
tinybench: 2.9.0
|
||||||
|
tinyexec: 0.3.2
|
||||||
|
tinypool: 1.0.2
|
||||||
|
tinyrainbow: 2.0.0
|
||||||
|
vite: 6.2.0(@types/node@22.13.5)
|
||||||
|
vite-node: 3.0.7(@types/node@22.13.5)
|
||||||
|
why-is-node-running: 2.3.0
|
||||||
|
optionalDependencies:
|
||||||
|
'@types/node': 22.13.5
|
||||||
|
transitivePeerDependencies:
|
||||||
|
- jiti
|
||||||
|
- less
|
||||||
|
- lightningcss
|
||||||
|
- msw
|
||||||
|
- sass
|
||||||
|
- sass-embedded
|
||||||
|
- stylus
|
||||||
|
- sugarss
|
||||||
|
- supports-color
|
||||||
|
- terser
|
||||||
|
- tsx
|
||||||
|
- yaml
|
||||||
|
|
||||||
|
why-is-node-running@2.3.0:
|
||||||
|
dependencies:
|
||||||
|
siginfo: 2.0.0
|
||||||
|
stackback: 0.0.2
|
|
@ -1,9 +1,9 @@
|
||||||
{
|
{
|
||||||
$schema: 'https://docs.renovatebot.com/renovate-schema.json',
|
$schema: "https://docs.renovatebot.com/renovate-schema.json",
|
||||||
extends: [
|
extends: [
|
||||||
'config:recommended',
|
"config:recommended",
|
||||||
'customManagers:helmChartYamlAppVersions',
|
"customManagers:helmChartYamlAppVersions",
|
||||||
'helpers:pinGitHubActionDigests',
|
"helpers:pinGitHubActionDigests",
|
||||||
],
|
],
|
||||||
helmv3: {
|
helmv3: {
|
||||||
// bump chart version if the appVersion changes
|
// bump chart version if the appVersion changes
|
||||||
|
@ -12,12 +12,12 @@
|
||||||
customManagers: [
|
customManagers: [
|
||||||
{
|
{
|
||||||
customType: "regex",
|
customType: "regex",
|
||||||
fileMatch: ['\\.github\/workflows\/release\\.ya?ml'],
|
fileMatch: ["\\.github\/workflows\/release\\.ya?ml"],
|
||||||
matchStrings: [
|
matchStrings: [
|
||||||
// this is mostly a copy from https://docs.renovatebot.com/presets-customManagers/#custommanagersgithubactionsversions
|
// this is mostly a copy from https://docs.renovatebot.com/presets-customManagers/#custommanagersgithubactionsversions
|
||||||
// and only changes the expected version prefix
|
// and only changes the expected version prefix
|
||||||
"# renovate: datasource=(?<datasource>[a-z-.]+?) depName=(?<depName>[^\\s]+?)(?: (?:lookupName|packageName)=(?<packageName>[^\\s]+?))?(?: versioning=(?<versioning>[^\\s]+?))?(?: extractVersion=(?<extractVersion>[^\\s]+?))?\\s+version\\s*:\\s*[\"']?(?<currentValue>.+?)[\"']?\\s"
|
"# renovate: datasource=(?<datasource>[a-z-.]+?) depName=(?<depName>[^\\s]+?)(?: (?:lookupName|packageName)=(?<packageName>[^\\s]+?))?(?: versioning=(?<versioning>[^\\s]+?))?(?: extractVersion=(?<extractVersion>[^\\s]+?))?\\s+version\\s*:\\s*[\"']?(?<currentValue>.+?)[\"']?\\s",
|
||||||
]
|
],
|
||||||
}
|
},
|
||||||
]
|
],
|
||||||
}
|
}
|
79
scripts/push-charts.test.ts
Normal file
79
scripts/push-charts.test.ts
Normal file
|
@ -0,0 +1,79 @@
|
||||||
|
import { describe, assert, expect, test, vi, beforeEach } from "vitest";
|
||||||
|
import { mockDeep } from "vitest-mock-extended";
|
||||||
|
import { getChangedChartsArchives, main } from "./push-charts.ts";
|
||||||
|
import { Dirent } from "node:fs";
|
||||||
|
|
||||||
|
vi.mock("node:fs/promises");
|
||||||
|
import * as _fs from "node:fs/promises";
|
||||||
|
const fs = vi.mocked(_fs);
|
||||||
|
|
||||||
|
vi.mock("node:child_process");
|
||||||
|
import * as _child_process from "node:child_process";
|
||||||
|
import { exec } from "child_process";
|
||||||
|
const child_process = vi.mocked(_child_process);
|
||||||
|
|
||||||
|
process.env.GITHUB_REPOSITORY = "lore/ipsum";
|
||||||
|
|
||||||
|
describe("push-charts", () => {
|
||||||
|
const myChartDirentMock = mockDeep<Dirent>();
|
||||||
|
myChartDirentMock.name = "my-chart-1.0.0.tgz";
|
||||||
|
|
||||||
|
const fooChartDirentMock = mockDeep<Dirent>();
|
||||||
|
fooChartDirentMock.name = "foo-2.0.0.tgz";
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
vi.resetAllMocks();
|
||||||
|
|
||||||
|
myChartDirentMock.isFile.mockReturnValue(true);
|
||||||
|
fooChartDirentMock.isFile.mockReturnValue(true);
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("main", () => {
|
||||||
|
test("should push single chart", async () => {
|
||||||
|
fs.readdir.mockResolvedValue([myChartDirentMock]);
|
||||||
|
await main(["node", "push-chart.ts", "my-chart"]);
|
||||||
|
expect(child_process.exec).toHaveBeenCalledWith(
|
||||||
|
`helm push ".cr-release-packages/my-chart-1.0.0.tgz" "oci://ghcr.io/lore/ipsum"`,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("should push multiple charts", async () => {
|
||||||
|
fs.readdir.mockResolvedValue([myChartDirentMock, fooChartDirentMock]);
|
||||||
|
await main(["node", "push-chart.ts", "my-chart,foo"]);
|
||||||
|
expect(child_process.exec).toHaveBeenNthCalledWith(
|
||||||
|
1,
|
||||||
|
`helm push ".cr-release-packages/my-chart-1.0.0.tgz" "oci://ghcr.io/lore/ipsum"`,
|
||||||
|
);
|
||||||
|
expect(child_process.exec).toHaveBeenNthCalledWith(
|
||||||
|
2,
|
||||||
|
`helm push ".cr-release-packages/foo-2.0.0.tgz" "oci://ghcr.io/lore/ipsum"`,
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("getChangedCharts", () => {
|
||||||
|
test("should return changed chart if only one exists", async () => {
|
||||||
|
fs.readdir.mockResolvedValue([myChartDirentMock]);
|
||||||
|
await expect(getChangedChartsArchives(["my-chart"])).resolves.toEqual([
|
||||||
|
".cr-release-packages/my-chart-1.0.0.tgz",
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("should return changed chart if multiple exists", async () => {
|
||||||
|
fs.readdir.mockResolvedValue([fooChartDirentMock, myChartDirentMock]);
|
||||||
|
await expect(getChangedChartsArchives(["foo"])).resolves.toEqual([
|
||||||
|
".cr-release-packages/foo-2.0.0.tgz",
|
||||||
|
]);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("should return multiple changed charts if multiple exists and changed", async () => {
|
||||||
|
fs.readdir.mockResolvedValue([fooChartDirentMock, myChartDirentMock]);
|
||||||
|
await expect(getChangedChartsArchives(["my-chart,foo"])).resolves.toEqual(
|
||||||
|
[
|
||||||
|
".cr-release-packages/my-chart-1.0.0.tgz",
|
||||||
|
".cr-release-packages/foo-2.0.0.tgz",
|
||||||
|
],
|
||||||
|
);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
});
|
74
scripts/push-charts.ts
Normal file
74
scripts/push-charts.ts
Normal file
|
@ -0,0 +1,74 @@
|
||||||
|
import * as fs from "node:fs/promises";
|
||||||
|
import * as process from "node:process";
|
||||||
|
import * as path from "node:path";
|
||||||
|
import { exec } from "node:child_process";
|
||||||
|
|
||||||
|
const CR_RELEASE_PACKAGE_PATH = ".cr-release-packages";
|
||||||
|
|
||||||
|
export async function main(rawArgs: string[]) {
|
||||||
|
// remove file path node and script name
|
||||||
|
const args = rawArgs.slice(2);
|
||||||
|
const archives = await getChangedChartsArchives(args);
|
||||||
|
|
||||||
|
console.log("Pushing charts:");
|
||||||
|
for (const archive of archives) {
|
||||||
|
console.log(`- ${archive}`);
|
||||||
|
exec(
|
||||||
|
`helm push "${archive}" "oci://ghcr.io/${process.env.GITHUB_REPOSITORY}"`,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
export async function getChangedChartsArchives(
|
||||||
|
args: string[],
|
||||||
|
): Promise<string[]> {
|
||||||
|
if (args.length === 0) {
|
||||||
|
console.log("Usage: push-charts <chart-list>");
|
||||||
|
process.exit(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
const changedCharts = parseChartList(args[0]);
|
||||||
|
const chartArchives = await getChartArchives();
|
||||||
|
|
||||||
|
// translate chart names to chart archives
|
||||||
|
const changedChartArchives: string[] = [];
|
||||||
|
for (const chart of changedCharts) {
|
||||||
|
if (chartArchives[chart]) {
|
||||||
|
const archive = chartArchives[chart];
|
||||||
|
changedChartArchives.push(archive);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return changedChartArchives;
|
||||||
|
}
|
||||||
|
|
||||||
|
function parseChartList(chartListArg: string): string[] {
|
||||||
|
const parsed: string[] = [];
|
||||||
|
for (const chartPath of chartListArg.split(",")) {
|
||||||
|
const name = path.parse(chartPath).name;
|
||||||
|
parsed.push(name);
|
||||||
|
}
|
||||||
|
return parsed;
|
||||||
|
}
|
||||||
|
|
||||||
|
async function getChartArchives(): Promise<Record<string, string>> {
|
||||||
|
const archiveList = await fs.readdir(CR_RELEASE_PACKAGE_PATH, {
|
||||||
|
withFileTypes: true,
|
||||||
|
});
|
||||||
|
const chartNames: Record<string, string> = {};
|
||||||
|
for (const dirent of archiveList) {
|
||||||
|
if (dirent.isFile() && dirent.name.endsWith(".tgz")) {
|
||||||
|
const parsed = /^(?<name>[\w-]+?)-\d/.exec(dirent.name);
|
||||||
|
// immich --> .cr-release-packages/immich-1.0.0.tgz
|
||||||
|
chartNames[parsed.groups.name] = path.join(
|
||||||
|
CR_RELEASE_PACKAGE_PATH,
|
||||||
|
dirent.name,
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return chartNames;
|
||||||
|
}
|
||||||
|
|
||||||
|
// do not run main if this script is being tested
|
||||||
|
if (!process.env.VITEST_WORKER_ID) {
|
||||||
|
main(process.argv);
|
||||||
|
}
|
7
tsconfig.json
Normal file
7
tsconfig.json
Normal file
|
@ -0,0 +1,7 @@
|
||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"moduleResolution": "nodenext",
|
||||||
|
"allowImportingTsExtensions": true,
|
||||||
|
"target": "esnext"
|
||||||
|
}
|
||||||
|
}
|
Loading…
Add table
Add a link
Reference in a new issue