From fbe431afbbbed3a6641a3033b3fca900de1e698b Mon Sep 17 00:00:00 2001 From: Javier Carrillo Date: Tue, 3 Sep 2024 11:35:21 -0400 Subject: [PATCH 01/15] feat: (RI-4198) Add onepassword provider --- .tool-versions | 3 +- cli.ts | 65 +++++----------------------------------- package-lock.json | 18 ++++++++++-- package.json | 4 ++- src/commands/op.ts | 57 ++++++++++++++++++++++++++++++++++++ src/commands/werf.ts | 70 ++++++++++++++++++++++++++++++++++++++++++++ src/parser.ts | 2 +- 7 files changed, 155 insertions(+), 64 deletions(-) create mode 100644 src/commands/op.ts create mode 100644 src/commands/werf.ts diff --git a/.tool-versions b/.tool-versions index d8e5a1e..0cc0e90 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,3 +1,2 @@ -awscli 2.17.4 -bun 1.1.17 +bun 1.1.21 werf 2.0.4 diff --git a/cli.ts b/cli.ts index b5ce6c4..80f2de2 100755 --- a/cli.ts +++ b/cli.ts @@ -1,68 +1,17 @@ #!/usr/bin/env bun -import { execSync } from 'node:child_process'; import { Command } from 'commander'; -import yaml from 'js-yaml'; -import { version } from './package.json'; -import type { yamlDoc } from './src/interfaces'; -import { generateEnvFile, mergeDataFromManifests } from './src/parser'; +import { description, name, version } from './package.json'; +import { werfCommand } from './src/commands/werf'; +import { onePasswordCommand } from './src/commands/op'; const cli = new Command(); cli - .name('werf-env-file-generator') + .name(name) .version(version) - .summary('Werf Env-File Generator CLI') - .option('-v,--values ', 'Set extra environment values') - .requiredOption( - '-e, --environment ', - 'Target environment for which to generate the .env file', - ) - .option( - '-s, --secrets', - 'Whether to include secret files in the Werf command', - true, - ) - .option( - '-p, --to-path ', - 'Path(s) to generate the dot env (.env) file to', - ['.env'], - ) - .action((options) => { - const environment = options.environment.trim(); - - const werfCommand = [ - 'werf', - 'render', - `--env ${environment}`, - `--values .helm/values/${environment}.yaml`, - '--dev', - ]; - - if (options.secrets) { - werfCommand.push(`--secret-values .helm/secrets/${environment}.yaml`); - } - - if (options.values) { - const extra_vars = options.values.trim(); - werfCommand.push(`--set ${extra_vars}`); - } - - console.log('Werf command:'); - console.log(werfCommand); - - const renderedManifests = execSync(werfCommand.join(' ').trim(), { - encoding: 'utf-8', - }); - - console.log('Obtaining env vars from rendered manifests...'); - const manifests = yaml.loadAll(renderedManifests) as yamlDoc[]; - - const envData = mergeDataFromManifests(manifests); - - for (const path of options.toPath) { - generateEnvFile(envData, path); - } - }); + .summary(description) + .addCommand(werfCommand()) + .addCommand(onePasswordCommand()) cli.parse(); diff --git a/package-lock.json b/package-lock.json index 04ab50f..67a7c30 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,14 +1,15 @@ { - "name": "werf-env-file-generator", + "name": "dot-env-generator", "version": "0.0.2", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "werf-env-file-generator", + "name": "dot-env-generator", "version": "0.0.2", "license": "MIT", "dependencies": { + "@1password/sdk": "^0.1.1", "@inquirer/prompts": "^5.1.0", "commander": "^12.1.0", "js-yaml": "^4.0.9" @@ -23,6 +24,19 @@ "typescript": "^5.0.0" } }, + "node_modules/@1password/sdk": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@1password/sdk/-/sdk-0.1.1.tgz", + "integrity": "sha512-Hzf7jiobM1v8v5ZItGEuLYKjoDxNJKoNfN572scBi6unUGC4hrGToN814IxVVgplrZetsRHX5rKyRzG/YGHoJA==", + "dependencies": { + "@1password/sdk-core": "0.1.0-beta.15" + } + }, + "node_modules/@1password/sdk-core": { + "version": "0.1.0-beta.15", + "resolved": "https://registry.npmjs.org/@1password/sdk-core/-/sdk-core-0.1.0-beta.15.tgz", + "integrity": "sha512-ZmQVTB4szM7TkXEtlMr0xIg87q6qhRqnbI0AThSwSknwDOm0z08NEb1GIeD4Z/Z02+YqVXa7A1cBXFLoHSt1IQ==" + }, "node_modules/@biomejs/biome": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-1.8.3.tgz", diff --git a/package.json b/package.json index f2964fc..5bf3beb 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,7 @@ { - "name": "werf-env-file-generator", + "name": "dot-env-generator", "version": "0.0.2", + "description": "dot env file generator based on multiple providers", "module": "cli.ts", "license": "MIT", "type": "module", @@ -25,6 +26,7 @@ "typescript": "^5.0.0" }, "dependencies": { + "@1password/sdk": "^0.1.1", "@inquirer/prompts": "^5.1.0", "commander": "^12.1.0", "js-yaml": "^4.0.9" diff --git a/src/commands/op.ts b/src/commands/op.ts new file mode 100644 index 0000000..e1456a1 --- /dev/null +++ b/src/commands/op.ts @@ -0,0 +1,57 @@ +#!/usr/bin/env bun + +import { Command } from 'commander'; +import { createClient } from "@1password/sdk"; +import { generateEnvFile } from '../parser'; +import { name, version } from '../../package.json'; + +export const onePasswordCommand = () => { + const command = new Command(); + + command + .name('op') + .summary('1Password Env-File Generator CLI') + .requiredOption( + '-v, --vault ', + 'Target vault to fetch secret item' + ) + .requiredOption( + '-i, --item ', + 'Target secret for which to generate the .env file', + [] + ) + .option( + '-p, --to-path ', + 'Path(s) to generate the dot env (.env) file to', + ['.env'], + ) + .action(async(options) => { + const vault = options.vault.trim(); + const items = options.item; + + const client = await createClient({ + auth: process.env.OP_SERVICE_ACCOUNT_TOKEN ?? '', + integrationName: name, + integrationVersion: version, + }); + + for (const item of items) { + const vaultItem = await client.items.get(vault, item); + + const secret = vaultItem.fields.map(obj=> ({ title: obj.title, value: obj.value })); + + const envData = secret.reduce( + (obj, item) => Object.assign(obj, { [item.title]: item.value }), {}); + + + for (const path of options.toPath) { + generateEnvFile(envData, path); + } + } + }); + + return command; +}; + +export default onePasswordCommand(); + diff --git a/src/commands/werf.ts b/src/commands/werf.ts new file mode 100644 index 0000000..ff8777e --- /dev/null +++ b/src/commands/werf.ts @@ -0,0 +1,70 @@ +#!/usr/bin/env bun + +import { execSync } from 'node:child_process'; +import { Command } from 'commander'; +import yaml from 'js-yaml'; +import type { yamlDoc } from '../interfaces'; +import { generateEnvFile, mergeDataFromManifests } from '../parser'; + +export const werfCommand = () => { + const command = new Command(); + + command + .name('werf') + .summary('Werf Env-File Generator CLI') + .option('-v,--values ', 'Set extra environment values') + .requiredOption( + '-e, --environment ', + 'Target environment for which to generate the .env file', + ) + .option( + '-s, --secrets', + 'Whether to include secret files in the Werf command', + true, + ) + .option( + '-p, --to-path ', + 'Path(s) to generate the dot env (.env) file to', + ['.env'], + ) + .action((options) => { + const environment = options.environment.trim(); + + const werfCommand = [ + 'werf', + 'render', + `--env ${environment}`, + `--values .helm/values/${environment}.yaml`, + '--dev', + ]; + + if (options.secrets) { + werfCommand.push(`--secret-values .helm/secrets/${environment}.yaml`); + } + + if (options.values) { + const extra_vars = options.values.trim(); + werfCommand.push(`--set ${extra_vars}`); + } + + console.log('Werf command:'); + console.log(werfCommand); + + const renderedManifests = execSync(werfCommand.join(' ').trim(), { + encoding: 'utf-8', + }); + + console.log('Obtaining env vars from rendered manifests...'); + const manifests = yaml.loadAll(renderedManifests) as yamlDoc[]; + + const envData = mergeDataFromManifests(manifests); + + for (const path of options.toPath) { + generateEnvFile(envData, path); + } + }); + + return command; +}; + +export default werfCommand(); diff --git a/src/parser.ts b/src/parser.ts index 4e049a4..a3065a2 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -22,6 +22,6 @@ export function generateEnvFile(envObject: EnvVarObject, filePath: string) { .map(([key, value]) => `${key}='${value}'`) .join('\n'); - fs.writeFileSync(filePath, envContent, 'utf8'); + fs.appendFileSync(filePath, envContent + '\n', 'utf8'); console.log(`dotenv file generated in ${filePath}!`); } From 51a984a3abbc727104eabda14fd14b0804b92dc8 Mon Sep 17 00:00:00 2001 From: Javier Carrillo Date: Tue, 3 Sep 2024 13:34:15 -0400 Subject: [PATCH 02/15] ci: (RI-4198) Repository workflows updated --- .github/workflows/lint.yml | 54 + .github/workflows/release.yml | 43 + .github/workflows/test.yaml | 6 - .github/workflows/upload-s3.yaml | 80 - .gitignore | 1 - .husky/commit-msg | 3 + .husky/pre-commit | 9 + .ops/taskfiles/werf.yaml | 14 - .tool-versions | 1 + bun.lockb | Bin 23212 -> 174753 bytes package-lock.json | 5334 ++++++++++++++++++++++++++++-- package.json | 94 +- taskfile.yaml | 36 +- 13 files changed, 5378 insertions(+), 297 deletions(-) create mode 100644 .github/workflows/lint.yml create mode 100644 .github/workflows/release.yml delete mode 100644 .github/workflows/upload-s3.yaml create mode 100644 .husky/commit-msg create mode 100644 .husky/pre-commit diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml new file mode 100644 index 0000000..c5f661d --- /dev/null +++ b/.github/workflows/lint.yml @@ -0,0 +1,54 @@ +name: ๐Ÿ“ Lint + +on: + pull_request: + +concurrency: + group: '${{ github.workflow }} @ ${{ github.head_ref || github.ref }}' + cancel-in-progress: true + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - name: ๐Ÿ’ป Checkout current code ref + uses: actions/checkout@v4 + + - name: ๐ŸŸข Configure Bun on runner + uses: oven-sh/setup-bun@v1 + + - name: ๐Ÿ“ฆ Install package dependencies using lockfile + run: bun install --frozen-lockfile + + - name: ๐Ÿ”จ Run build + run: bun run build + + - name: ๐ŸŒท Run format, lint & check with Biome + run: | + bun run format + bun run lint + bun run check + + commitlint: + runs-on: ubuntu-latest + steps: + - name: ๐Ÿ’ป Checkout current code ref + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: ๐ŸŸข Configure Bun on runner + uses: oven-sh/setup-bun@v1 + + - name: ๐Ÿšง Install dev dependencies + run: npm install --only=dev + + # Check all commits pushed to this PR + - name: ๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ Validate PR commits with commitlint + run: >- + npx commitlint + --from ${{ github.event.pull_request.head.sha }}~${{ github.event.pull_request.commits }} + --to ${{ github.event.pull_request.head.sha }} + --verbose + - name: ๐Ÿ”Ž Validate PR title with commitlint + run: echo "${{ github.event.pull_request.title }}" | npx commitlint diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..a8e3d33 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,43 @@ +name: ๐Ÿš€ Release + +on: + workflow_dispatch: + +env: + NAME: 'dot-env-generator' + +jobs: + release: + runs-on: ubuntu-latest + steps: + - name: ๐Ÿ’ป Checkout current pull-request revision code + uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: ๐ŸŸข Configure Bun on runner + uses: oven-sh/setup-bun@v1 + with: + bun-version: latest + + - name: ๐Ÿ”ต Install Task + uses: arduino/setup-task@v2 + + - name: ๐Ÿ’ผ Configure Git user + run: | + git config user.name "gbh-devops-bot" + git config user.email "devops@gbh.com.do" + + - name: ๐Ÿ“ฆ Install package dependencies using lockfile + run: bun install --frozen-lockfile + + - name: ๐Ÿ”จ Run build + run: bun run build + + - name: ๐Ÿ”จ Compile binary for supported platforms + run: task build-and-compress + + - name: ๐Ÿš€ Run new version for production + run: npx release-it --ci + env: + GITHUB_TOKEN: ${{ secrets.DEVOPS_USER_TOKEN }} diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 26e1b86..f1af9e8 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -32,11 +32,5 @@ jobs: bun run build bun run compile - - name: ๐ŸŒท Run format, lint & check with Biome - run: | - bun run format:ci - bun run lint:ci - bun run check:ci - - name: ๐Ÿงช Run tests run: bun run test diff --git a/.github/workflows/upload-s3.yaml b/.github/workflows/upload-s3.yaml deleted file mode 100644 index 1157a26..0000000 --- a/.github/workflows/upload-s3.yaml +++ /dev/null @@ -1,80 +0,0 @@ -name: ๐Ÿš€ Deploy to S3 - -on: - push: - branches: - - main - -env: - BUCKET: 's3://gbh-utils' - NAME: 'werf-env-generator' - -jobs: - deploy-s3: - runs-on: ubuntu-latest - strategy: - matrix: - os: [linux-x64, linux-arm64, windows-x64, darwin-arm64, darwin-x64] - steps: - - name: ๐Ÿ’ป Checkout current code ref - uses: actions/checkout@v4 - - - name: ๐ŸŸข Configure Bun on runner - uses: oven-sh/setup-bun@v1 - with: - bun-version: latest - - - name: โ˜๏ธ Configure AWS Credentials - uses: aws-actions/configure-aws-credentials@v4 - with: - aws-access-key-id: ${{ vars.AWS_ACCESS_KEY_ID }} - aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} - aws-region: 'us-east-1' - - - name: ๐Ÿ“ฆ Install package dependencies using lockfile - run: bun install --frozen-lockfile - - - name: ๐Ÿ”จ Run build - run: bun run build - - - name: ๐Ÿ”จ Compile binary for supported platforms - run: bun build - --compile - --target=bun-${{ matrix.os }} - --minify - --sourcemap - ./cli.ts - --outfile ${NAME}-${{ matrix.os }} - - - name: ๐Ÿ”จ Compile and upload binary for CI - run: | - bun build --compile --minify --sourcemap ./cli.ts --outfile ${NAME}-ci - aws s3 cp ${NAME}-ci ${BUCKET}/${NAME} --acl public-read - - - name: ๐Ÿš€ Upload binaries to S3 - run: | - OS=${{ matrix.os }} - case $OS in - linux-*) - PLATFORM="linux" - SUFFIX="${OS#linux-}" - ;; - windows-*) - PLATFORM="windows" - SUFFIX="${OS#windows-}.exe" - ;; - darwin-*) - PLATFORM="darwin" - SUFFIX="${OS#darwin-}" - ;; - esac - - BIN="${NAME}-${SUFFIX}" - - if [[ $PLATFORM == "windows" ]]; then - WERF_FILE=${NAME}-${{ matrix.os }}.exe - else - WERF_FILE=${NAME}-${{ matrix.os }} - fi - - aws s3 cp ${WERF_FILE} ${BUCKET}/${PLATFORM}/${BIN} --acl public-read diff --git a/.gitignore b/.gitignore index 91421e5..1b4d454 100644 --- a/.gitignore +++ b/.gitignore @@ -176,5 +176,4 @@ dist .DS_Store # Binary -werf-env-generator* .werf_secret_key diff --git a/.husky/commit-msg b/.husky/commit-msg new file mode 100644 index 0000000..7878d79 --- /dev/null +++ b/.husky/commit-msg @@ -0,0 +1,3 @@ +#!/usr/bin/env sh + +npx --no -- commitlint --edit ${1} diff --git a/.husky/pre-commit b/.husky/pre-commit new file mode 100644 index 0000000..03f944f --- /dev/null +++ b/.husky/pre-commit @@ -0,0 +1,9 @@ +#!/bin/bash + +BRANCH=$(git rev-parse --abbrev-ref HEAD) +REGEX="^(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test)-[A-Z]{2,4}-[0-9]{1,5}-[A-Za-z0-9-]+$" + +if ! [[ $BRANCH =~ $REGEX ]]; then + echo "Your commit was rejected due to branching name" + exit 1 +fi diff --git a/.ops/taskfiles/werf.yaml b/.ops/taskfiles/werf.yaml index 33ad926..fb7cb9e 100644 --- a/.ops/taskfiles/werf.yaml +++ b/.ops/taskfiles/werf.yaml @@ -63,17 +63,3 @@ tasks: preconditions: - sh: 'test -f .werf_secret_key' msg: '.werf_secret_key file does not exist.' - - # Utils: Check werf env generator - download-env-generator: - internal: true - desc: 'Check if werf-env-generate exists, if not, download it.' - vars: - OS: '{{.OS}}' - ARCH: '{{ "x64" | default .ARCH}}' - cmds: - - curl -O https://gbh-utils.s3.amazonaws.com/{{.OS}}/werf-env-generator-{{.ARCH}} - - mv werf-env-generator-{{.ARCH}} werf-env-generator - - chmod +x werf-env-generator - status: - - test -f werf-env-generator diff --git a/.tool-versions b/.tool-versions index 0cc0e90..2f98526 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,2 +1,3 @@ bun 1.1.21 werf 2.0.4 +task 3.37.2 diff --git a/bun.lockb b/bun.lockb index 090f98cdc18edee4b44173bdc4f334210ece2dbb..df5b6a80faedb88ab82c1f2875e01521bb159dcb 100755 GIT binary patch literal 174753 zcmeFZd0b83_dkBqprVOpB^4D-q*Mw;X+Q&oG-)0*&k>4bNC_D-MO0K&l37KRqRfRt zAwv;T=J>AFJ^S@KZ=ctTd-Hode*e7o!|8eV-s`#6+H0@9&pziCMS0E0@GwnxzaUMo zpr{e&kRKY+nttk;lv!M|rmCdbsIe9slJU#CpD z-eR<_bkYNf?Pd45?{$jgp%jC0g`*D`yiE8D6CViW{~rLNeh*)_ zFi)=t#(Ci3cnbkhe;Tkb9xCAcP{1UpBhLdG#Q{m&?4XWz*1!)jz#o9fdjp96_yzg( z*~KnqVC51p+b9FFbK=Z8K_P(*2E;vJ5xC?Y9OD%P zNb=~rG;>@ekABX#66iM2ESBgut9gLO>IhcF;aVf;664(H<~AoA}5qF;OnnnDubjpu)kA3s6UWCjoKXmZO>I zAMPFm-3(7J_edYWKoo{@Uzyo23-X{cUJwxNa;h@*1bIaSx`i)dSVJA{d4-3B`31T$ z8ljH!a#W4U_X>}U@CyiM9Hi>?RDVQxfS)_q=>|LK_ftTOkB=A3QCL+x3 zy#~{se|T^ZZnOuXj_WoP5bZo2!(c$j;<>>;tbd2eLVw!EGVMEzW9l~q#Q1uJg$0L! zYAY=&PE>yz)X~1tcm@NeFun=u7$;q*qh6B7%e0ws4*|ru__~Fwdk47rki7hPAG`;C zVBCEsFmVAO=2H(K>b(yAi0>)C!@MHGa0$Pl>JI_YkA-^7am)q8I-fq%k55!PiOX$D zKF}}FOWo6*5g8Vs?jH=hOHgQ}Uzk_e^NCD*VKM%FGaVe}hSSZ+H(=`94T$5~1c-4Y z0+dqDKB4Un3r;OHO*Lw6c8{+`f|dVB(cF%219Cd~Q&4E;Fnw}9Ax z8`?4N^-P)i#sH!|zaZ}bKOf(SVA$u}VBC|YGv&Nuygb}M-#|0wy8Hs|FeUMwfS3m% zZV|rfi@ahVQ}sqbv={B`=iv)Hzi`k1xYwMiFWiF3uLC(8&qYA=Yb+q@4G8vh!+i_K z;SPy2WCpW6JfN?c!3TAe_wxw~4nxIM-FqfeUjZQYyN9`XctJ)e&SJLv0pd8%0Ahcj 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 Nt7J#&pZ=fz^M4sbq@Mr) delta 4864 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 HWXHb&D*!z^ diff --git a/package-lock.json b/package-lock.json index 67a7c30..87111dd 100644 --- a/package-lock.json +++ b/package-lock.json @@ -15,10 +15,15 @@ "js-yaml": "^4.0.9" }, "devDependencies": { - "@biomejs/biome": "^1.6.1", + "@biomejs/biome": "^1.8.3", + "@commitlint/config-conventional": "^19.2.2", + "@release-it/conventional-changelog": "^8.0.1", "@types/bun": "latest", "@types/js-yaml": "^4.0.9", - "@types/node": "^20.14.1" + "@types/node": "^20.14.1", + "commitlint": "^19.4.0", + "husky": "^9.1.5", + "release-it": "^17.6.0" }, "peerDependencies": { "typescript": "^5.0.0" @@ -37,6 +42,84 @@ "resolved": "https://registry.npmjs.org/@1password/sdk-core/-/sdk-core-0.1.0-beta.15.tgz", "integrity": "sha512-ZmQVTB4szM7TkXEtlMr0xIg87q6qhRqnbI0AThSwSknwDOm0z08NEb1GIeD4Z/Z02+YqVXa7A1cBXFLoHSt1IQ==" }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, "node_modules/@biomejs/biome": { "version": "1.8.3", "resolved": "https://registry.npmjs.org/@biomejs/biome/-/biome-1.8.3.tgz", @@ -192,6 +275,262 @@ "node": ">=14.21.3" } }, + "node_modules/@commitlint/cli": { + "version": "19.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-19.4.1.tgz", + "integrity": "sha512-EerFVII3ZcnhXsDT9VePyIdCJoh3jEzygN1L37MjQXgPfGS6fJTWL/KHClVMod1d8w94lFC3l4Vh/y5ysVAz2A==", + "dev": true, + "dependencies": { + "@commitlint/format": "^19.3.0", + "@commitlint/lint": "^19.4.1", + "@commitlint/load": "^19.4.0", + "@commitlint/read": "^19.4.0", + "@commitlint/types": "^19.0.3", + "execa": "^8.0.1", + "yargs": "^17.0.0" + }, + "bin": { + "commitlint": "cli.js" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-conventional": { + "version": "19.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-19.4.1.tgz", + "integrity": "sha512-D5S5T7ilI5roybWGc8X35OBlRXLAwuTseH1ro0XgqkOWrhZU8yOwBOslrNmSDlTXhXLq8cnfhQyC42qaUCzlXA==", + "dev": true, + "dependencies": { + "@commitlint/types": "^19.0.3", + "conventional-changelog-conventionalcommits": "^7.0.2" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/config-validator": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-19.0.3.tgz", + "integrity": "sha512-2D3r4PKjoo59zBc2auodrSCaUnCSALCx54yveOFwwP/i2kfEAQrygwOleFWswLqK0UL/F9r07MFi5ev2ohyM4Q==", + "dev": true, + "dependencies": { + "@commitlint/types": "^19.0.3", + "ajv": "^8.11.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/ensure": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-19.0.3.tgz", + "integrity": "sha512-SZEpa/VvBLoT+EFZVb91YWbmaZ/9rPH3ESrINOl0HD2kMYsjvl0tF7nMHh0EpTcv4+gTtZBAe1y/SS6/OhfZzQ==", + "dev": true, + "dependencies": { + "@commitlint/types": "^19.0.3", + "lodash.camelcase": "^4.3.0", + "lodash.kebabcase": "^4.1.1", + "lodash.snakecase": "^4.1.1", + "lodash.startcase": "^4.4.0", + "lodash.upperfirst": "^4.3.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/execute-rule": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-19.0.0.tgz", + "integrity": "sha512-mtsdpY1qyWgAO/iOK0L6gSGeR7GFcdW7tIjcNFxcWkfLDF5qVbPHKuGATFqRMsxcO8OUKNj0+3WOHB7EHm4Jdw==", + "dev": true, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/format": { + "version": "19.3.0", + "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-19.3.0.tgz", + "integrity": "sha512-luguk5/aF68HiF4H23ACAfk8qS8AHxl4LLN5oxPc24H+2+JRPsNr1OS3Gaea0CrH7PKhArBMKBz5RX9sA5NtTg==", + "dev": true, + "dependencies": { + "@commitlint/types": "^19.0.3", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/is-ignored": { + "version": "19.2.2", + "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-19.2.2.tgz", + "integrity": "sha512-eNX54oXMVxncORywF4ZPFtJoBm3Tvp111tg1xf4zWXGfhBPKpfKG6R+G3G4v5CPlRROXpAOpQ3HMhA9n1Tck1g==", + "dev": true, + "dependencies": { + "@commitlint/types": "^19.0.3", + "semver": "^7.6.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/lint": { + "version": "19.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-19.4.1.tgz", + "integrity": "sha512-Ws4YVAZ0jACTv6VThumITC1I5AG0UyXMGua3qcf55JmXIXm/ejfaVKykrqx7RyZOACKVAs8uDRIsEsi87JZ3+Q==", + "dev": true, + "dependencies": { + "@commitlint/is-ignored": "^19.2.2", + "@commitlint/parse": "^19.0.3", + "@commitlint/rules": "^19.4.1", + "@commitlint/types": "^19.0.3" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/load": { + "version": "19.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-19.4.0.tgz", + "integrity": "sha512-I4lCWaEZYQJ1y+Y+gdvbGAx9pYPavqZAZ3/7/8BpWh+QjscAn8AjsUpLV2PycBsEx7gupq5gM4BViV9xwTIJuw==", + "dev": true, + "dependencies": { + "@commitlint/config-validator": "^19.0.3", + "@commitlint/execute-rule": "^19.0.0", + "@commitlint/resolve-extends": "^19.1.0", + "@commitlint/types": "^19.0.3", + "chalk": "^5.3.0", + "cosmiconfig": "^9.0.0", + "cosmiconfig-typescript-loader": "^5.0.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "lodash.uniq": "^4.5.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/message": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-19.0.0.tgz", + "integrity": "sha512-c9czf6lU+9oF9gVVa2lmKaOARJvt4soRsVmbR7Njwp9FpbBgste5i7l/2l5o8MmbwGh4yE1snfnsy2qyA2r/Fw==", + "dev": true, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/parse": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-19.0.3.tgz", + "integrity": "sha512-Il+tNyOb8VDxN3P6XoBBwWJtKKGzHlitEuXA5BP6ir/3loWlsSqDr5aecl6hZcC/spjq4pHqNh0qPlfeWu38QA==", + "dev": true, + "dependencies": { + "@commitlint/types": "^19.0.3", + "conventional-changelog-angular": "^7.0.0", + "conventional-commits-parser": "^5.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/read": { + "version": "19.4.0", + "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-19.4.0.tgz", + "integrity": "sha512-r95jLOEZzKDakXtnQub+zR3xjdnrl2XzerPwm7ch1/cc5JGq04tyaNpa6ty0CRCWdVrk4CZHhqHozb8yZwy2+g==", + "dev": true, + "dependencies": { + "@commitlint/top-level": "^19.0.0", + "@commitlint/types": "^19.0.3", + "execa": "^8.0.1", + "git-raw-commits": "^4.0.0", + "minimist": "^1.2.8" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/resolve-extends": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-19.1.0.tgz", + "integrity": "sha512-z2riI+8G3CET5CPgXJPlzftH+RiWYLMYv4C9tSLdLXdr6pBNimSKukYP9MS27ejmscqCTVA4almdLh0ODD2KYg==", + "dev": true, + "dependencies": { + "@commitlint/config-validator": "^19.0.3", + "@commitlint/types": "^19.0.3", + "global-directory": "^4.0.1", + "import-meta-resolve": "^4.0.0", + "lodash.mergewith": "^4.6.2", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/rules": { + "version": "19.4.1", + "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-19.4.1.tgz", + "integrity": "sha512-AgctfzAONoVxmxOXRyxXIq7xEPrd7lK/60h2egp9bgGUMZK9v0+YqLOA+TH+KqCa63ZoCr8owP2YxoSSu7IgnQ==", + "dev": true, + "dependencies": { + "@commitlint/ensure": "^19.0.3", + "@commitlint/message": "^19.0.0", + "@commitlint/to-lines": "^19.0.0", + "@commitlint/types": "^19.0.3", + "execa": "^8.0.1" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/to-lines": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-19.0.0.tgz", + "integrity": "sha512-vkxWo+VQU5wFhiP9Ub9Sre0FYe019JxFikrALVoD5UGa8/t3yOJEpEhxC5xKiENKKhUkTpEItMTRAjHw2SCpZw==", + "dev": true, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/top-level": { + "version": "19.0.0", + "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-19.0.0.tgz", + "integrity": "sha512-KKjShd6u1aMGNkCkaX4aG1jOGdn7f8ZI8TR1VEuNqUOjWTOdcDSsmglinglJ18JTjuBX5I1PtjrhQCRcixRVFQ==", + "dev": true, + "dependencies": { + "find-up": "^7.0.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@commitlint/types": { + "version": "19.0.3", + "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-19.0.3.tgz", + "integrity": "sha512-tpyc+7i6bPG9mvaBbtKUeghfyZSDgWquIDfMgqYtTbmZ9Y9VzEm2je9EYcQ0aoz5o7NvGS+rcDec93yO08MHYA==", + "dev": true, + "dependencies": { + "@types/conventional-commits-parser": "^5.0.0", + "chalk": "^5.3.0" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/@hutson/parse-repository-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@hutson/parse-repository-url/-/parse-repository-url-5.0.0.tgz", + "integrity": "sha512-e5+YUKENATs1JgYHMzTr2MW/NDcXGfYFAuOQU8gJgF/kEh4EqKgfGrfLI67bMD4tbhZVlkigz/9YYwWcbOFthg==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@iarna/toml": { + "version": "2.2.5", + "resolved": "https://registry.npmjs.org/@iarna/toml/-/toml-2.2.5.tgz", + "integrity": "sha512-trnsAYxU3xnS1gPHPyU961coFyLkh4gAD/0zQ5mymY4yOZ+CYvsPqUbOFSw0aDM4y0tV7tiFxL/1XfXPNC6IPg==", + "dev": true + }, "node_modules/@inquirer/checkbox": { "version": "2.4.5", "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-2.4.5.tgz", @@ -399,278 +738,4757 @@ "node": ">=18" } }, - "node_modules/@types/bun": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@types/bun/-/bun-1.1.6.tgz", - "integrity": "sha512-uJgKjTdX0GkWEHZzQzFsJkWp5+43ZS7HC8sZPFnOwnSo1AsNl2q9o2bFeS23disNDqbggEgyFkKCHl/w8iZsMA==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "bun-types": "1.1.17" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@types/js-yaml": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", - "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", - "dev": true + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } }, - "node_modules/@types/mute-stream": { - "version": "0.0.4", - "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", - "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, "dependencies": { - "@types/node": "*" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@types/node": { - "version": "20.14.13", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.13.tgz", - "integrity": "sha512-+bHoGiZb8UiQ0+WEtmph2IWQCjIqg8MDZMAV+ppRRhUZnquF5mQkP/9vpSwJClEiSM/C7fZZExPzfU0vJTyp8w==", + "node_modules/@octokit/auth-token": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@octokit/auth-token/-/auth-token-4.0.0.tgz", + "integrity": "sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==", + "dev": true, + "engines": { + "node": ">= 18" + } + }, + "node_modules/@octokit/core": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/@octokit/core/-/core-5.2.0.tgz", + "integrity": "sha512-1LFfa/qnMQvEOAdzlQymH0ulepxbxnCYAKJZfMci/5XJyIHWgEYnDmgnKakbTh7CH2tFQ5O60oYDvns4i9RAIg==", + "dev": true, "dependencies": { - "undici-types": "~5.26.4" + "@octokit/auth-token": "^4.0.0", + "@octokit/graphql": "^7.1.0", + "@octokit/request": "^8.3.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.0.0", + "before-after-hook": "^2.2.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" } }, - "node_modules/@types/wrap-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", - "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==" + "node_modules/@octokit/endpoint": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/@octokit/endpoint/-/endpoint-9.0.5.tgz", + "integrity": "sha512-ekqR4/+PCLkEBF6qgj8WqJfvDq65RH85OAgrtnVp1mSxaXF03u2xW/hUdweGS5654IlC0wkNYC18Z50tSYTAFw==", + "dev": true, + "dependencies": { + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } }, - "node_modules/@types/ws": { - "version": "8.5.12", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", - "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "node_modules/@octokit/graphql": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@octokit/graphql/-/graphql-7.1.0.tgz", + "integrity": "sha512-r+oZUH7aMFui1ypZnAvZmn0KSqAUgE1/tUXIWaqUCa1758ts/Jio84GZuzsvUkme98kv0WFY8//n0J1Z+vsIsQ==", "dev": true, "dependencies": { - "@types/node": "*" + "@octokit/request": "^8.3.0", + "@octokit/types": "^13.0.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" } }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "node_modules/@octokit/openapi-types": { + "version": "22.2.0", + "resolved": "https://registry.npmjs.org/@octokit/openapi-types/-/openapi-types-22.2.0.tgz", + "integrity": "sha512-QBhVjcUa9W7Wwhm6DBFu6ZZ+1/t/oYxqc2tp81Pi41YNuJinbFRx8B133qVOrAaBbF7D/m0Et6f9/pZt9Rc+tg==", + "dev": true + }, + "node_modules/@octokit/plugin-paginate-rest": { + "version": "11.3.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-paginate-rest/-/plugin-paginate-rest-11.3.1.tgz", + "integrity": "sha512-ryqobs26cLtM1kQxqeZui4v8FeznirUsksiA+RYemMPJ7Micju0WSkv50dBksTuZks9O5cg4wp+t8fZ/cLY56g==", + "dev": true, "dependencies": { - "type-fest": "^0.21.3" + "@octokit/types": "^13.5.0" }, "engines": { - "node": ">=8" + "node": ">= 18" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "@octokit/core": "5" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/@octokit/plugin-request-log": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@octokit/plugin-request-log/-/plugin-request-log-4.0.1.tgz", + "integrity": "sha512-GihNqNpGHorUrO7Qa9JbAl0dbLnqJVrV8OXe2Zm5/Y4wFkZQDfTreBzVmiRfJVfE4mClXdihHnbpyyO9FSX4HA==", + "dev": true, "engines": { - "node": ">=8" + "node": ">= 18" + }, + "peerDependencies": { + "@octokit/core": "5" } }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/@octokit/plugin-rest-endpoint-methods": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/@octokit/plugin-rest-endpoint-methods/-/plugin-rest-endpoint-methods-13.2.2.tgz", + "integrity": "sha512-EI7kXWidkt3Xlok5uN43suK99VWqc8OaIMktY9d9+RNKl69juoTyxmLoWPIZgJYzi41qj/9zU7G/ljnNOJ5AFA==", + "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "@octokit/types": "^13.5.0" }, "engines": { - "node": ">=8" + "node": ">= 18" }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "peerDependencies": { + "@octokit/core": "^5" } }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + "node_modules/@octokit/request": { + "version": "8.4.0", + "resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.4.0.tgz", + "integrity": "sha512-9Bb014e+m2TgBeEJGEbdplMVWwPmL1FPtggHQRkV+WVsMggPtEkLKPlcVYm/o8xKLkpJ7B+6N8WfQMtDLX2Dpw==", + "dev": true, + "dependencies": { + "@octokit/endpoint": "^9.0.1", + "@octokit/request-error": "^5.1.0", + "@octokit/types": "^13.1.0", + "universal-user-agent": "^6.0.0" + }, + "engines": { + "node": ">= 18" + } }, - "node_modules/bun-types": { - "version": "1.1.17", - "resolved": "https://registry.npmjs.org/bun-types/-/bun-types-1.1.17.tgz", - "integrity": "sha512-Z4+OplcSd/YZq7ZsrfD00DKJeCwuNY96a1IDJyR73+cTBaFIS7SC6LhpY/W3AMEXO9iYq5NJ58WAwnwL1p5vKg==", + "node_modules/@octokit/request-error": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/@octokit/request-error/-/request-error-5.1.0.tgz", + "integrity": "sha512-GETXfE05J0+7H2STzekpKObFe765O5dlAKUTLNGeH+x47z7JjXHfsHKo5z21D/o/IOZTUEI6nyWyR+bZVP/n5Q==", "dev": true, "dependencies": { - "@types/node": "~20.12.8", - "@types/ws": "~8.5.10" + "@octokit/types": "^13.1.0", + "deprecation": "^2.0.0", + "once": "^1.4.0" + }, + "engines": { + "node": ">= 18" } }, - "node_modules/bun-types/node_modules/@types/node": { - "version": "20.12.14", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.14.tgz", - "integrity": "sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg==", + "node_modules/@octokit/rest": { + "version": "20.1.1", + "resolved": "https://registry.npmjs.org/@octokit/rest/-/rest-20.1.1.tgz", + "integrity": "sha512-MB4AYDsM5jhIHro/dq4ix1iWTLGToIGk6cWF5L6vanFaMble5jTX/UBQyiv05HsWnwUtY8JrfHy2LWfKwihqMw==", "dev": true, "dependencies": { - "undici-types": "~5.26.4" + "@octokit/core": "^5.0.2", + "@octokit/plugin-paginate-rest": "11.3.1", + "@octokit/plugin-request-log": "^4.0.0", + "@octokit/plugin-rest-endpoint-methods": "13.2.2" + }, + "engines": { + "node": ">= 18" } }, - "node_modules/chardet": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", - "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + "node_modules/@octokit/types": { + "version": "13.5.0", + "resolved": "https://registry.npmjs.org/@octokit/types/-/types-13.5.0.tgz", + "integrity": "sha512-HdqWTf5Z3qwDVlzCrP8UJquMwunpDiMPt5er+QjGzL4hqr/vBVY/MauQgS1xWxCDT1oMx1EULyqxncdCY/NVSQ==", + "dev": true, + "dependencies": { + "@octokit/openapi-types": "^22.2.0" + } }, - "node_modules/cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "node_modules/@pnpm/config.env-replace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@pnpm/config.env-replace/-/config.env-replace-1.1.0.tgz", + "integrity": "sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==", + "dev": true, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@pnpm/network.ca-file/-/network.ca-file-1.0.2.tgz", + "integrity": "sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==", + "dev": true, + "dependencies": { + "graceful-fs": "4.2.10" + }, + "engines": { + "node": ">=12.22.0" + } + }, + "node_modules/@pnpm/network.ca-file/node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/@pnpm/npm-conf": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-2.3.1.tgz", + "integrity": "sha512-c83qWb22rNRuB0UaVCI0uRPNRr8Z0FWnEIvT47jiHAmOIUHbBOg5XvV7pM5x+rKn9HRpjxquDbXYSXr3fAKFcw==", + "dev": true, + "dependencies": { + "@pnpm/config.env-replace": "^1.1.0", + "@pnpm/network.ca-file": "^1.0.1", + "config-chain": "^1.1.11" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/@release-it/conventional-changelog": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@release-it/conventional-changelog/-/conventional-changelog-8.0.1.tgz", + "integrity": "sha512-pwc9jaBYDaSX5TXw6rEnPfqDkKJN2sFBhYpON1kBi9T3sA9EOBncC4ed0Bv3L1ciNb6eqEJXPfp+tQMqVlv/eg==", + "dev": true, + "dependencies": { + "concat-stream": "^2.0.0", + "conventional-changelog": "^5.1.0", + "conventional-recommended-bump": "^9.0.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=18" + }, + "peerDependencies": { + "release-it": "^17.0.0" + } + }, + "node_modules/@sindresorhus/is": { + "version": "5.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-5.6.0.tgz", + "integrity": "sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" + } + }, + "node_modules/@sindresorhus/merge-streams": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-2.3.0.tgz", + "integrity": "sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@szmarczak/http-timer": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-5.0.1.tgz", + "integrity": "sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.1" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", + "dev": true + }, + "node_modules/@types/bun": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@types/bun/-/bun-1.1.6.tgz", + "integrity": "sha512-uJgKjTdX0GkWEHZzQzFsJkWp5+43ZS7HC8sZPFnOwnSo1AsNl2q9o2bFeS23disNDqbggEgyFkKCHl/w8iZsMA==", + "dev": true, + "dependencies": { + "bun-types": "1.1.17" + } + }, + "node_modules/@types/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/@types/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-loB369iXNmAZglwWATL+WRe+CRMmmBPtpolYzIebFaX4YA3x+BEfLqhUAV9WanycKI3TG1IMr5bMJDajDKLlUQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.4.tgz", + "integrity": "sha512-1m0bIFVc7eJWyve9S0RnuRgcQqF/Xd5QsUZAZeQFr1Q3/p9JWoQQEqmVy+DPTNpGXwhgIetAoYF8JSc33q29QA==", + "dev": true + }, + "node_modules/@types/js-yaml": { + "version": "4.0.9", + "resolved": "https://registry.npmjs.org/@types/js-yaml/-/js-yaml-4.0.9.tgz", + "integrity": "sha512-k4MGaQl5TGo/iipqb2UDG2UwjXziSWkh0uysQelTlJpX1qGlpUZYm8PnO4DxG1qBomtJUdYJ6qR6xdIah10JLg==", + "dev": true + }, + "node_modules/@types/mute-stream": { + "version": "0.0.4", + "resolved": "https://registry.npmjs.org/@types/mute-stream/-/mute-stream-0.0.4.tgz", + "integrity": "sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "20.14.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.14.13.tgz", + "integrity": "sha512-+bHoGiZb8UiQ0+WEtmph2IWQCjIqg8MDZMAV+ppRRhUZnquF5mQkP/9vpSwJClEiSM/C7fZZExPzfU0vJTyp8w==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/normalize-package-data": { + "version": "2.4.4", + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true + }, + "node_modules/@types/wrap-ansi": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/wrap-ansi/-/wrap-ansi-3.0.0.tgz", + "integrity": "sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==" + }, + "node_modules/@types/ws": { + "version": "8.5.12", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.12.tgz", + "integrity": "sha512-3tPRkv1EtkDpzlgyKyI8pGsGZAGPEaXeu0DOj5DI25Ja91bdAYddYHbADRYVrZMRbfW+1l5YwXVDKohDJNQxkQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/add-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/add-stream/-/add-stream-1.0.0.tgz", + "integrity": "sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==", + "dev": true + }, + "node_modules/agent-base": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", + "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", + "dev": true, + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-align": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/ansi-align/-/ansi-align-3.0.1.tgz", + "integrity": "sha512-IOfwwBF5iczOjp/WeY4YxyjqAFMQoZufdQWDd19SEExbVLNXqvpzSJ/M7Za4/sCPmQ0+GRquoA7bGcINcxew6w==", + "dev": true, + "dependencies": { + "string-width": "^4.1.0" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/array-ify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/array-ify/-/array-ify-1.0.0.tgz", + "integrity": "sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==", + "dev": true + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dev": true, + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/async-retry": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/async-retry/-/async-retry-1.3.3.tgz", + "integrity": "sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==", + "dev": true, + "dependencies": { + "retry": "0.13.1" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "dev": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/before-after-hook": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/before-after-hook/-/before-after-hook-2.2.3.tgz", + "integrity": "sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==", + "dev": true + }, + "node_modules/bl": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", + "dev": true, + "dependencies": { + "buffer": "^5.5.0", + "inherits": "^2.0.4", + "readable-stream": "^3.4.0" + } + }, + "node_modules/boxen": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/boxen/-/boxen-7.1.1.tgz", + "integrity": "sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==", + "dev": true, + "dependencies": { + "ansi-align": "^3.0.1", + "camelcase": "^7.0.1", + "chalk": "^5.2.0", + "cli-boxes": "^3.0.0", + "string-width": "^5.1.2", + "type-fest": "^2.13.0", + "widest-line": "^4.0.1", + "wrap-ansi": "^8.1.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/boxen/node_modules/ansi-styles": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-6.2.1.tgz", + "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/boxen/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/boxen/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/boxen/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/boxen/node_modules/wrap-ansi": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bun-types": { + "version": "1.1.17", + "resolved": "https://registry.npmjs.org/bun-types/-/bun-types-1.1.17.tgz", + "integrity": "sha512-Z4+OplcSd/YZq7ZsrfD00DKJeCwuNY96a1IDJyR73+cTBaFIS7SC6LhpY/W3AMEXO9iYq5NJ58WAwnwL1p5vKg==", + "dev": true, + "dependencies": { + "@types/node": "~20.12.8", + "@types/ws": "~8.5.10" + } + }, + "node_modules/bun-types/node_modules/@types/node": { + "version": "20.12.14", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.12.14.tgz", + "integrity": "sha512-scnD59RpYD91xngrQQLGkE+6UrHUPzeKZWhhjBSa3HSkwjbQc38+q3RoIVEwxQGRw3M+j5hpNAM+lgV3cVormg==", + "dev": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/bundle-name": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bundle-name/-/bundle-name-4.1.0.tgz", + "integrity": "sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==", + "dev": true, + "dependencies": { + "run-applescript": "^7.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cacheable-lookup": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-7.0.0.tgz", + "integrity": "sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==", + "dev": true, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request": { + "version": "10.2.14", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-10.2.14.tgz", + "integrity": "sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "^4.0.2", + "get-stream": "^6.0.1", + "http-cache-semantics": "^4.1.1", + "keyv": "^4.5.3", + "mimic-response": "^4.0.0", + "normalize-url": "^8.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-7.0.1.tgz", + "integrity": "sha512-xlx1yCK2Oc1APsPXDL2LdlNP6+uu8OCDdhOBSVT279M/S+y75O30C2VuD8T2ogdePBBl7PfPF4504tnLgX3zfw==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chalk": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, + "engines": { + "node": "^12.17.0 || ^14.13 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/chardet": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/chardet/-/chardet-0.7.0.tgz", + "integrity": "sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==" + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cli-boxes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cli-boxes/-/cli-boxes-3.0.0.tgz", + "integrity": "sha512-/lzGpEWL/8PfI0BmBOPRwp0c/wFNX1RdUML3jK/RcSBA9T8mZDdQpqYBKtCFTOfQbwPqWEOpjqW+Fnayc0969g==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "dependencies": { + "restore-cursor": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-spinners": { + "version": "2.9.2", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/cli-width": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", + "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", + "dev": true, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/commander": { + "version": "12.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", + "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "engines": { + "node": ">=18" + } + }, + "node_modules/commitlint": { + "version": "19.4.1", + "resolved": "https://registry.npmjs.org/commitlint/-/commitlint-19.4.1.tgz", + "integrity": "sha512-w9PRvPad1ywVXl4QuS/OA9kzyoyW68dIpaxTdezpr1ycZeYkBRUHRQMmtL5rSYw1JytktojaKEBuvf1neDmeCg==", + "dev": true, + "dependencies": { + "@commitlint/cli": "^19.4.1", + "@commitlint/types": "^19.0.3" + }, + "bin": { + "commitlint": "cli.js" + }, + "engines": { + "node": ">=v18" + } + }, + "node_modules/compare-func": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/compare-func/-/compare-func-2.0.0.tgz", + "integrity": "sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==", + "dev": true, + "dependencies": { + "array-ify": "^1.0.0", + "dot-prop": "^5.1.0" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concat-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-2.0.0.tgz", + "integrity": "sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==", + "dev": true, + "engines": [ + "node >= 6.0" + ], + "dependencies": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^3.0.2", + "typedarray": "^0.0.6" + } + }, + "node_modules/config-chain": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz", + "integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==", + "dev": true, + "dependencies": { + "ini": "^1.3.4", + "proto-list": "~1.2.1" + } + }, + "node_modules/config-chain/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/configstore": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/configstore/-/configstore-6.0.0.tgz", + "integrity": "sha512-cD31W1v3GqUlQvbBCGcXmd2Nj9SvLDOP1oQ0YFuLETufzSPaKp11rYBsSOm7rCsW3OnIRAFM3OxRhceaXNYHkA==", + "dev": true, + "dependencies": { + "dot-prop": "^6.0.1", + "graceful-fs": "^4.2.6", + "unique-string": "^3.0.0", + "write-file-atomic": "^3.0.3", + "xdg-basedir": "^5.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/yeoman/configstore?sponsor=1" + } + }, + "node_modules/configstore/node_modules/dot-prop": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-6.0.1.tgz", + "integrity": "sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/conventional-changelog": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog/-/conventional-changelog-5.1.0.tgz", + "integrity": "sha512-aWyE/P39wGYRPllcCEZDxTVEmhyLzTc9XA6z6rVfkuCD2UBnhV/sgSOKbQrEG5z9mEZJjnopjgQooTKxEg8mAg==", + "dev": true, + "dependencies": { + "conventional-changelog-angular": "^7.0.0", + "conventional-changelog-atom": "^4.0.0", + "conventional-changelog-codemirror": "^4.0.0", + "conventional-changelog-conventionalcommits": "^7.0.2", + "conventional-changelog-core": "^7.0.0", + "conventional-changelog-ember": "^4.0.0", + "conventional-changelog-eslint": "^5.0.0", + "conventional-changelog-express": "^4.0.0", + "conventional-changelog-jquery": "^5.0.0", + "conventional-changelog-jshint": "^4.0.0", + "conventional-changelog-preset-loader": "^4.1.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-angular": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-7.0.0.tgz", + "integrity": "sha512-ROjNchA9LgfNMTTFSIWPzebCwOGFdgkEq45EnvvrmSLvCtAw0HSmrCs7/ty+wAeYUZyNay0YMUNYFTRL72PkBQ==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-atom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-atom/-/conventional-changelog-atom-4.0.0.tgz", + "integrity": "sha512-q2YtiN7rnT1TGwPTwjjBSIPIzDJCRE+XAUahWxnh+buKK99Kks4WLMHoexw38GXx9OUxAsrp44f9qXe5VEMYhw==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-codemirror": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-codemirror/-/conventional-changelog-codemirror-4.0.0.tgz", + "integrity": "sha512-hQSojc/5imn1GJK3A75m9hEZZhc3urojA5gMpnar4JHmgLnuM3CUIARPpEk86glEKr3c54Po3WV/vCaO/U8g3Q==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-conventionalcommits": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-7.0.2.tgz", + "integrity": "sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-core": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-core/-/conventional-changelog-core-7.0.0.tgz", + "integrity": "sha512-UYgaB1F/COt7VFjlYKVE/9tTzfU3VUq47r6iWf6lM5T7TlOxr0thI63ojQueRLIpVbrtHK4Ffw+yQGduw2Bhdg==", + "dev": true, + "dependencies": { + "@hutson/parse-repository-url": "^5.0.0", + "add-stream": "^1.0.0", + "conventional-changelog-writer": "^7.0.0", + "conventional-commits-parser": "^5.0.0", + "git-raw-commits": "^4.0.0", + "git-semver-tags": "^7.0.0", + "hosted-git-info": "^7.0.0", + "normalize-package-data": "^6.0.0", + "read-pkg": "^8.0.0", + "read-pkg-up": "^10.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-ember": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-ember/-/conventional-changelog-ember-4.0.0.tgz", + "integrity": "sha512-D0IMhwcJUg1Y8FSry6XAplEJcljkHVlvAZddhhsdbL1rbsqRsMfGx/PIkPYq0ru5aDgn+OxhQ5N5yR7P9mfsvA==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-eslint": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-eslint/-/conventional-changelog-eslint-5.0.0.tgz", + "integrity": "sha512-6JtLWqAQIeJLn/OzUlYmzd9fKeNSWmQVim9kql+v4GrZwLx807kAJl3IJVc3jTYfVKWLxhC3BGUxYiuVEcVjgA==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-express": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-express/-/conventional-changelog-express-4.0.0.tgz", + "integrity": "sha512-yWyy5c7raP9v7aTvPAWzqrztACNO9+FEI1FSYh7UP7YT1AkWgv5UspUeB5v3Ibv4/o60zj2o9GF2tqKQ99lIsw==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-jquery": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jquery/-/conventional-changelog-jquery-5.0.0.tgz", + "integrity": "sha512-slLjlXLRNa/icMI3+uGLQbtrgEny3RgITeCxevJB+p05ExiTgHACP5p3XiMKzjBn80n+Rzr83XMYfRInEtCPPw==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-jshint": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-jshint/-/conventional-changelog-jshint-4.0.0.tgz", + "integrity": "sha512-LyXq1bbl0yG0Ai1SbLxIk8ZxUOe3AjnlwE6sVRQmMgetBk+4gY9EO3d00zlEt8Y8gwsITytDnPORl8al7InTjg==", + "dev": true, + "dependencies": { + "compare-func": "^2.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-preset-loader": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/conventional-changelog-preset-loader/-/conventional-changelog-preset-loader-4.1.0.tgz", + "integrity": "sha512-HozQjJicZTuRhCRTq4rZbefaiCzRM2pr6u2NL3XhrmQm4RMnDXfESU6JKu/pnKwx5xtdkYfNCsbhN5exhiKGJA==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-changelog-writer": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/conventional-changelog-writer/-/conventional-changelog-writer-7.0.1.tgz", + "integrity": "sha512-Uo+R9neH3r/foIvQ0MKcsXkX642hdm9odUp7TqgFS7BsalTcjzRlIfWZrZR1gbxOozKucaKt5KAbjW8J8xRSmA==", + "dev": true, + "dependencies": { + "conventional-commits-filter": "^4.0.0", + "handlebars": "^4.7.7", + "json-stringify-safe": "^5.0.1", + "meow": "^12.0.1", + "semver": "^7.5.2", + "split2": "^4.0.0" + }, + "bin": { + "conventional-changelog-writer": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-commits-filter": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-filter/-/conventional-commits-filter-4.0.0.tgz", + "integrity": "sha512-rnpnibcSOdFcdclpFwWa+pPlZJhXE7l+XK04zxhbWrhgpR96h33QLz8hITTXbcYICxVr3HZFtbtUAQ+4LdBo9A==", + "dev": true, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-commits-parser": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-5.0.0.tgz", + "integrity": "sha512-ZPMl0ZJbw74iS9LuX9YIAiW8pfM5p3yh2o/NbXHbkFuZzY5jvdi5jFycEOkmBW5H5I7nA+D6f3UcsCLP2vvSEA==", + "dev": true, + "dependencies": { + "is-text-path": "^2.0.0", + "JSONStream": "^1.3.5", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "conventional-commits-parser": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/conventional-recommended-bump": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/conventional-recommended-bump/-/conventional-recommended-bump-9.0.0.tgz", + "integrity": "sha512-HR1yD0G5HgYAu6K0wJjLd7QGRK8MQDqqj6Tn1n/ja1dFwBCE6QmV+iSgQ5F7hkx7OUR/8bHpxJqYtXj2f/opPQ==", + "dev": true, + "dependencies": { + "conventional-changelog-preset-loader": "^4.1.0", + "conventional-commits-filter": "^4.0.0", + "conventional-commits-parser": "^5.0.0", + "git-raw-commits": "^4.0.0", + "git-semver-tags": "^7.0.0", + "meow": "^12.0.1" + }, + "bin": { + "conventional-recommended-bump": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dev": true, + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cosmiconfig-typescript-loader": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-5.0.0.tgz", + "integrity": "sha512-+8cK7jRAReYkMwMiG+bxhcNKiHJDM6bR9FD/nGBXOWdMLuYawjF5cGrtLilJ+LGd3ZjCXnJjR5DkfWPoIVlqJA==", + "dev": true, + "dependencies": { + "jiti": "^1.19.1" + }, + "engines": { + "node": ">=v16" + }, + "peerDependencies": { + "@types/node": "*", + "cosmiconfig": ">=8.2", + "typescript": ">=4" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/crypto-random-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/crypto-random-string/-/crypto-random-string-4.0.0.tgz", + "integrity": "sha512-x8dy3RnvYdlUcPOjkEHqozhiwzKNSq7GcPuXFbnyMOCHxX8V3OgIg/pYuabl2sbUPfIJaeAQB7PMOK8DFIdoRA==", + "dev": true, + "dependencies": { + "type-fest": "^1.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/crypto-random-string/node_modules/type-fest": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/dargs": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/dargs/-/dargs-8.1.0.tgz", + "integrity": "sha512-wAV9QHOsNbwnWdNW2FYvE1P56wtgSbM+3SZcdGiWQILwVjACCXDCI3Ai8QlCjMDB8YK5zySiXZYBiwGmNY3lnw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-4.0.1.tgz", + "integrity": "sha512-0R9ikRb668HB7QDxT1vkpuUBtqc53YyAwMwGeUFKRojY/NWKvdZ+9UYtRfGmhqNbRkTSVpMbmyhXipFFv2cb/A==", + "dev": true, + "engines": { + "node": ">= 12" + } + }, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "dev": true, + "dependencies": { + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-extend": { + "version": "0.6.0", + "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz", + "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/default-browser": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/default-browser/-/default-browser-5.2.1.tgz", + "integrity": "sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==", + "dev": true, + "dependencies": { + "bundle-name": "^4.1.0", + "default-browser-id": "^5.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/default-browser-id": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/default-browser-id/-/default-browser-id-5.0.0.tgz", + "integrity": "sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defaults": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", + "dev": true, + "dependencies": { + "clone": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/define-lazy-prop": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-3.0.0.tgz", + "integrity": "sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dev": true, + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/deprecation": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/deprecation/-/deprecation-2.3.1.tgz", + "integrity": "sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==", + "dev": true + }, + "node_modules/dot-prop": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/dot-prop/-/dot-prop-5.3.0.tgz", + "integrity": "sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==", + "dev": true, + "dependencies": { + "is-obj": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", + "dev": true + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-goat": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-goat/-/escape-goat-4.0.0.tgz", + "integrity": "sha512-2Sd4ShcWxbx6OY1IHyla/CVNwvg7XwZVoXZHcSu9w9SReNP1EzzD5T8NWKIR38fIqEns9kDWKUQTXXAmlDrdPg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dev": true, + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", + "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^8.0.1", + "human-signals": "^5.0.0", + "is-stream": "^3.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^5.1.0", + "onetime": "^6.0.0", + "signal-exit": "^4.1.0", + "strip-final-newline": "^3.0.0" + }, + "engines": { + "node": ">=16.17" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/external-editor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", + "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "dependencies": { + "chardet": "^0.7.0", + "iconv-lite": "^0.4.24", + "tmp": "^0.0.33" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fetch-blob": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/fetch-blob/-/fetch-blob-3.2.0.tgz", + "integrity": "sha512-7yAQpD2UMJzLi1Dqv7qFYnPbaPx7ZfFK6PiIxQ4PfkGPyNyl2Ugx+a/umUonmKqjhM4DnfbMvdX6otXq83soQQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "paypal", + "url": "https://paypal.me/jimmywarting" + } + ], + "dependencies": { + "node-domexception": "^1.0.0", + "web-streams-polyfill": "^3.0.3" + }, + "engines": { + "node": "^12.20 || >= 14.13" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-7.0.0.tgz", + "integrity": "sha512-YyZM99iHrqLKjmt4LJDj58KI+fYyufRLBSYcqycxf//KpBk9FoewoGX0450m9nB44qrZnovzC2oeP5hUibxc/g==", + "dev": true, + "dependencies": { + "locate-path": "^7.2.0", + "path-exists": "^5.0.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/form-data-encoder": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/form-data-encoder/-/form-data-encoder-2.1.4.tgz", + "integrity": "sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==", + "dev": true, + "engines": { + "node": ">= 14.17" + } + }, + "node_modules/formdata-polyfill": { + "version": "4.0.10", + "resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz", + "integrity": "sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==", + "dev": true, + "dependencies": { + "fetch-blob": "^3.1.2" + }, + "engines": { + "node": ">=12.20.0" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-east-asian-width": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.2.0.tgz", + "integrity": "sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-stream": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", + "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "dev": true, + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/get-uri/node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/git-raw-commits": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-4.0.0.tgz", + "integrity": "sha512-ICsMM1Wk8xSGMowkOmPrzo2Fgmfo4bMHLNX6ytHjajRJUqvHOw/TFapQ+QG75c3X/tTDDhOSRPGC52dDbNM8FQ==", + "dev": true, + "dependencies": { + "dargs": "^8.0.0", + "meow": "^12.0.1", + "split2": "^4.0.0" + }, + "bin": { + "git-raw-commits": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/git-semver-tags": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/git-semver-tags/-/git-semver-tags-7.0.1.tgz", + "integrity": "sha512-NY0ZHjJzyyNXHTDZmj+GG7PyuAKtMsyWSwh07CR2hOZFa+/yoTsXci/nF2obzL8UDhakFNkD9gNdt/Ed+cxh2Q==", + "dev": true, + "dependencies": { + "meow": "^12.0.1", + "semver": "^7.5.2" + }, + "bin": { + "git-semver-tags": "cli.mjs" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/git-up": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/git-up/-/git-up-7.0.0.tgz", + "integrity": "sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==", + "dev": true, + "dependencies": { + "is-ssh": "^1.4.0", + "parse-url": "^8.1.0" + } + }, + "node_modules/git-url-parse": { + "version": "14.0.0", + "resolved": "https://registry.npmjs.org/git-url-parse/-/git-url-parse-14.0.0.tgz", + "integrity": "sha512-NnLweV+2A4nCvn4U/m2AoYu0pPKlsmhK9cknG7IMwsjFY1S2jxM+mAhsDxyxfCIGfGaD+dozsyX4b6vkYc83yQ==", + "dev": true, + "dependencies": { + "git-up": "^7.0.0" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/global-directory": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-4.0.1.tgz", + "integrity": "sha512-wHTUcDUoZ1H5/0iVqEudYW4/kAlN5cZ3j/bXn0Dpbizl9iaUVeWSHqiOjsgk6OW2bkLclbBjzewBz6weQ1zA2Q==", + "dev": true, + "dependencies": { + "ini": "4.1.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-14.0.2.tgz", + "integrity": "sha512-s3Fq41ZVh7vbbe2PN3nrW7yC7U7MFVc5c98/iTl9c2GawNMKx/J648KQRW6WKkuU8GIbbh2IXfIRQjOZnXcTnw==", + "dev": true, + "dependencies": { + "@sindresorhus/merge-streams": "^2.1.0", + "fast-glob": "^3.3.2", + "ignore": "^5.2.4", + "path-type": "^5.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/got": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", + "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==", + "dev": true, + "dependencies": { + "@sindresorhus/is": "^5.2.0", + "@szmarczak/http-timer": "^5.0.1", + "cacheable-lookup": "^7.0.0", + "cacheable-request": "^10.2.8", + "decompress-response": "^6.0.0", + "form-data-encoder": "^2.1.2", + "get-stream": "^6.0.1", + "http2-wrapper": "^2.1.10", + "lowercase-keys": "^3.0.0", + "p-cancelable": "^3.0.0", + "responselike": "^3.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sindresorhus/got?sponsor=1" + } + }, + "node_modules/got/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dev": true, + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/hosted-git-info": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-7.0.2.tgz", + "integrity": "sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==", + "dev": true, + "dependencies": { + "lru-cache": "^10.0.1" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/http-cache-semantics": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/http2-wrapper": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-2.2.1.tgz", + "integrity": "sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==", + "dev": true, + "dependencies": { + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.2.0" + }, + "engines": { + "node": ">=10.19.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", + "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/human-signals": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", + "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", + "dev": true, + "engines": { + "node": ">=16.17.0" + } + }, + "node_modules/husky": { + "version": "9.1.5", + "resolved": "https://registry.npmjs.org/husky/-/husky-9.1.5.tgz", + "integrity": "sha512-rowAVRUBfI0b4+niA4SJMhfQwc107VLkBUgEYYAOQAbqDCnra1nYh83hF/MDmhYs9t9n1E3DuKOrs2LYNC+0Ag==", + "dev": true, + "bin": { + "husky": "bin.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/typicode" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-fresh/node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/import-lazy": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/import-lazy/-/import-lazy-4.0.0.tgz", + "integrity": "sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/import-meta-resolve": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.1.0.tgz", + "integrity": "sha512-I6fiaX09Xivtk+THaMfAwnA3MVA5Big1WHF1Dfx9hFuvNIWpXnorlkzhcQf6ehrqQiiZECRt1poOAkPmer3ruw==", + "dev": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.1.tgz", + "integrity": "sha512-QQnnxNyfvmHFIsj7gkPcYymR8Jdw/o7mp5ZFihxn6h8Ci6fh3Dx4E1gPjpQEpIuPo9XVNY/ZUwh4BPMjGyL01g==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/inquirer": { + "version": "9.3.2", + "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-9.3.2.tgz", + "integrity": "sha512-+ynEbhWKhyomnaX0n2aLIMSkgSlGB5RrWbNXnEqj6mdaIydu6y40MdBjL38SAB0JcdmOaIaMua1azdjLEr3sdw==", + "dev": true, + "dependencies": { + "@inquirer/figures": "^1.0.3", + "ansi-escapes": "^4.3.2", + "cli-width": "^4.1.0", + "external-editor": "^3.1.0", + "mute-stream": "1.0.0", + "ora": "^5.4.1", + "run-async": "^3.0.0", + "rxjs": "^7.8.1", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^6.2.0", + "yoctocolors-cjs": "^2.1.1" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/inquirer/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/inquirer/node_modules/cli-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "dev": true, + "dependencies": { + "restore-cursor": "^3.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/is-interactive": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dev": true, + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/inquirer/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/ora": { + "version": "5.4.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", + "dev": true, + "dependencies": { + "bl": "^4.1.0", + "chalk": "^4.1.0", + "cli-cursor": "^3.1.0", + "cli-spinners": "^2.5.0", + "is-interactive": "^1.0.0", + "is-unicode-supported": "^0.1.0", + "log-symbols": "^4.1.0", + "strip-ansi": "^6.0.0", + "wcwidth": "^1.0.1" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/inquirer/node_modules/restore-cursor": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/inquirer/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/inquirer/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dev": true, + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-ci": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-3.0.1.tgz", + "integrity": "sha512-ZYvCgrefwqoQ6yTyYUbQu64HsITZ3NfKX1lzaEYdkTDcfKzzCI/wthRRYKkdjHKFVgNiXKAKm65Zo1pk2as/QQ==", + "dev": true, + "dependencies": { + "ci-info": "^3.2.0" + }, + "bin": { + "is-ci": "bin.js" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", + "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", + "dev": true, + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-in-ci": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/is-in-ci/-/is-in-ci-0.1.0.tgz", + "integrity": "sha512-d9PXLEY0v1iJ64xLiQMJ51J128EYHAaOR4yZqQi8aHGfw6KgifM3/Viw1oZZ1GCVmb3gBuyhLyHj0HgR2DhSXQ==", + "dev": true, + "bin": { + "is-in-ci": "cli.js" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-inside-container": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", + "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", + "dev": true, + "dependencies": { + "is-docker": "^3.0.0" + }, + "bin": { + "is-inside-container": "cli.js" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-installed-globally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-installed-globally/-/is-installed-globally-1.0.0.tgz", + "integrity": "sha512-K55T22lfpQ63N4KEN57jZUAaAYqYHEe8veb/TycJRk9DdSCLLcovXz/mL6mOnhQaZsQGwPhuFopdQIlqGSEjiQ==", + "dev": true, + "dependencies": { + "global-directory": "^4.0.1", + "is-path-inside": "^4.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-interactive": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-2.0.0.tgz", + "integrity": "sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-npm": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/is-npm/-/is-npm-6.0.0.tgz", + "integrity": "sha512-JEjxbSmtPSt1c8XTkVrlujcXdKV1/tvuQ7GwKcAlyiVLeYFQ2VHat8xfrDJsIkhCdF/tZ7CiIR3sy141c6+gPQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-2.0.0.tgz", + "integrity": "sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-path-inside": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-4.0.0.tgz", + "integrity": "sha512-lJJV/5dYS+RcL8uQdBDW9c9uWFLLBNRyFhnAKXw5tVqLlKZ4RMGZKv+YQ/IA3OhD+RpbJa1LLFM1FQPGyIXvOA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-ssh": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/is-ssh/-/is-ssh-1.4.0.tgz", + "integrity": "sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==", + "dev": true, + "dependencies": { + "protocols": "^2.0.1" + } + }, + "node_modules/is-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", + "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-text-path": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-text-path/-/is-text-path-2.0.0.tgz", + "integrity": "sha512-+oDTluR6WEjdXEJMnC2z6A4FRwFoYuvShVVEGsS7ewc0UTi2QtAKMDJuL4BDEVt+5T7MjFo12RP8ghOM75oKJw==", + "dev": true, + "dependencies": { + "text-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-typedarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", + "integrity": "sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==", + "dev": true + }, + "node_modules/is-unicode-supported": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.0.0.tgz", + "integrity": "sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", + "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", + "dev": true, + "dependencies": { + "is-inside-container": "^1.0.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/issue-parser": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/issue-parser/-/issue-parser-7.0.1.tgz", + "integrity": "sha512-3YZcUUR2Wt1WsapF+S/WiA2WmlW0cWAoPccMqne7AxEBhCdFeTPjfv/Axb8V2gyCgY3nRw+ksZ3xSUX+R47iAg==", + "dev": true, + "dependencies": { + "lodash.capitalize": "^4.2.1", + "lodash.escaperegexp": "^4.1.2", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.uniqby": "^4.7.0" + }, + "engines": { + "node": "^18.17 || >=20.6.1" + } + }, + "node_modules/jiti": { + "version": "1.21.6", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.6.tgz", + "integrity": "sha512-2yTgeWTWzMWkHu6Jp9NKgePDaYHbntiwvYuuJLbbN9vl7DC9DvXKOB2BC3ZZ92D3cvV/aflH0osDfwpHepQ53w==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", + "dev": true + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/json-stringify-safe": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", + "integrity": "sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/jsonparse": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/jsonparse/-/jsonparse-1.3.1.tgz", + "integrity": "sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==", + "dev": true, + "engines": [ + "node >= 0.2.0" + ] + }, + "node_modules/JSONStream": { + "version": "1.3.5", + "resolved": "https://registry.npmjs.org/JSONStream/-/JSONStream-1.3.5.tgz", + "integrity": "sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==", + "dev": true, + "dependencies": { + "jsonparse": "^1.2.0", + "through": ">=2.2.7 <3" + }, + "bin": { + "JSONStream": "bin.js" + }, + "engines": { + "node": "*" + } + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/ky": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/ky/-/ky-1.7.2.tgz", + "integrity": "sha512-OzIvbHKKDpi60TnF9t7UUVAF1B4mcqc02z5PIvrm08Wyb+yOcz63GRvEuVxNT18a9E1SrNouhB4W2NNLeD7Ykg==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sindresorhus/ky?sponsor=1" + } + }, + "node_modules/latest-version": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/latest-version/-/latest-version-9.0.0.tgz", + "integrity": "sha512-7W0vV3rqv5tokqkBAFV1LbR7HPOWzXQDpDgEuib/aJ1jsZZx6x3c2mBI+TJhJzOhkGeaLbCKEHXEXLfirtG2JA==", + "dev": true, + "dependencies": { + "package-json": "^10.0.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-7.2.0.tgz", + "integrity": "sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==", + "dev": true, + "dependencies": { + "p-locate": "^6.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, + "node_modules/lodash.camelcase": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.camelcase/-/lodash.camelcase-4.3.0.tgz", + "integrity": "sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==", + "dev": true + }, + "node_modules/lodash.capitalize": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/lodash.capitalize/-/lodash.capitalize-4.2.1.tgz", + "integrity": "sha512-kZzYOKspf8XVX5AvmQF94gQW0lejFVgb80G85bU4ZWzoJ6C03PQg3coYAUpSTpQWelrZELd3XWgHzw4Ck5kaIw==", + "dev": true + }, + "node_modules/lodash.escaperegexp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.escaperegexp/-/lodash.escaperegexp-4.1.2.tgz", + "integrity": "sha512-TM9YBvyC84ZxE3rgfefxUWiQKLilstD6k7PTGt6wfbtXF8ixIJLOL3VYyV/z+ZiPLsVxAsKAFVwWlWeb2Y8Yyw==", + "dev": true + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "dev": true + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "dev": true + }, + "node_modules/lodash.kebabcase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.kebabcase/-/lodash.kebabcase-4.1.1.tgz", + "integrity": "sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.mergewith": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.mergewith/-/lodash.mergewith-4.6.2.tgz", + "integrity": "sha512-GK3g5RPZWTRSeLSpgP8Xhra+pnjBC56q9FZYe1d5RN3TJ35dbkGy3YqBSMbyCrlbi+CM9Z3Jk5yTL7RCsqboyQ==", + "dev": true + }, + "node_modules/lodash.snakecase": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", + "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==", + "dev": true + }, + "node_modules/lodash.startcase": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.startcase/-/lodash.startcase-4.4.0.tgz", + "integrity": "sha512-+WKqsK294HMSc2jEbNgpHpd0JfIBhp7rEV4aqXWqFr6AlXov+SlcgB1Fv01y2kGe3Gc8nMW7VA0SrGuSkRfIEg==", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true + }, + "node_modules/lodash.uniqby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.uniqby/-/lodash.uniqby-4.7.0.tgz", + "integrity": "sha512-e/zcLx6CSbmaEgFHCA7BnoQKyCtKMxnuWrJygbwPs/AIn+IMKl66L8/s+wBUn5LRw2pZx3bUHibiV1b6aTWIww==", + "dev": true + }, + "node_modules/lodash.upperfirst": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/lodash.upperfirst/-/lodash.upperfirst-4.3.1.tgz", + "integrity": "sha512-sReKOYJIJf74dhJONhU4e0/shzi1trVbSWDOhKYE5XV2O+H7Sb2Dihwuc7xWxVl+DgFPyTqIN3zMfT9cq5iWDg==", + "dev": true + }, + "node_modules/log-symbols": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-6.0.0.tgz", + "integrity": "sha512-i24m8rpwhmPIS4zscNzK6MSEhk0DUWa/8iYQWxhffV8jkI4Phvs3F+quL5xvS0gdQR0FyTCMMH33Y78dDTzzIw==", + "dev": true, + "dependencies": { + "chalk": "^5.3.0", + "is-unicode-supported": "^1.3.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/log-symbols/node_modules/is-unicode-supported": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-1.3.0.tgz", + "integrity": "sha512-43r2mRvz+8JRIKnWJ+3j8JtjRKZ6GmjzfaE/qiBJnikNnYv/6bagRJ1kUhNk8R5EX/GkobD+r+sfxCPJsiKBLQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lowercase-keys": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-3.0.0.tgz", + "integrity": "sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lru-cache": { + "version": "10.4.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", + "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==", + "dev": true + }, + "node_modules/macos-release": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/macos-release/-/macos-release-3.3.0.tgz", + "integrity": "sha512-tPJQ1HeyiU2vRruNGhZ+VleWuMQRro8iFtJxYgnS4NQe+EukKF6aGiIT+7flZhISAt2iaXBCfFGvAyif7/f8nQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/meow": { + "version": "12.1.1", + "resolved": "https://registry.npmjs.org/meow/-/meow-12.1.1.tgz", + "integrity": "sha512-BhXM0Au22RwUneMPwSCnyhTOizdWoIEPU9sp0Aqa1PnDMR5Wv2FGXYDjuzJEIX+Eo2Rb8xuYe5jrnm5QowQFkw==", + "dev": true, + "engines": { + "node": ">=16.10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", + "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mimic-response": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-4.0.0.tgz", + "integrity": "sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/mute-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", + "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "dev": true + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "dev": true, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/new-github-release-url": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/new-github-release-url/-/new-github-release-url-2.0.0.tgz", + "integrity": "sha512-NHDDGYudnvRutt/VhKFlX26IotXe1w0cmkDm6JGquh5bz/bDTw0LufSmH/GxTjEdpHEO+bVKFTwdrcGa/9XlKQ==", + "dev": true, + "dependencies": { + "type-fest": "^2.5.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/new-github-release-url/node_modules/type-fest": { + "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/node-domexception": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", + "integrity": "sha512-/jKZoMpw0F8GRwl4/eLROPA3cfcXtLApP0QzLmUT/HuPCZWyB7IY9ZrMeKw2O/nFIqPQB3PVM9aYm0F312AXDQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/jimmywarting" + }, + { + "type": "github", + "url": "https://paypal.me/jimmywarting" + } + ], + "engines": { + "node": ">=10.5.0" + } + }, + "node_modules/node-fetch": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-3.3.2.tgz", + "integrity": "sha512-dRB78srN/l6gqWulah9SrxeYnxeddIG30+GOqK/9OlLVyLg3HPnr6SqOWTWOXKRwC2eGYCkZ59NNuSgvSrpgOA==", + "dev": true, + "dependencies": { + "data-uri-to-buffer": "^4.0.0", + "fetch-blob": "^3.1.4", + "formdata-polyfill": "^4.0.10" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/node-fetch" + } + }, + "node_modules/normalize-package-data": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-6.0.2.tgz", + "integrity": "sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==", + "dev": true, + "dependencies": { + "hosted-git-info": "^7.0.0", + "semver": "^7.3.5", + "validate-npm-package-license": "^3.0.4" + }, + "engines": { + "node": "^16.14.0 || >=18.0.0" + } + }, + "node_modules/normalize-url": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-8.0.1.tgz", + "integrity": "sha512-IO9QvjUMWxPQQhs60oOu10CRkWCiZzSUkzbXGGV9pviYl1fXYcvkzQ5jV9z8Y6un8ARoVRl4EtC6v6jNqbaJ/w==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", + "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "dev": true, + "dependencies": { + "path-key": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/npm-run-path/node_modules/path-key": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", + "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", + "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", + "dev": true, + "dependencies": { + "mimic-fn": "^4.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/open": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/open/-/open-10.1.0.tgz", + "integrity": "sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==", + "dev": true, + "dependencies": { + "default-browser": "^5.2.1", + "define-lazy-prop": "^3.0.0", + "is-inside-container": "^1.0.0", + "is-wsl": "^3.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ora/-/ora-8.0.1.tgz", + "integrity": "sha512-ANIvzobt1rls2BDny5fWZ3ZVKyD6nscLvfFRpQgfWsythlcsVUC9kL0zq6j2Z5z9wwp1kd7wpsD/T9qNPVLCaQ==", + "dev": true, + "dependencies": { + "chalk": "^5.3.0", + "cli-cursor": "^4.0.0", + "cli-spinners": "^2.9.2", + "is-interactive": "^2.0.0", + "is-unicode-supported": "^2.0.0", + "log-symbols": "^6.0.0", + "stdin-discarder": "^0.2.1", + "string-width": "^7.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" + } + }, + "node_modules/ora/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true + }, + "node_modules/ora/node_modules/string-width": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-7.2.0.tgz", + "integrity": "sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==", + "dev": true, + "dependencies": { + "emoji-regex": "^10.3.0", + "get-east-asian-width": "^1.0.0", + "strip-ansi": "^7.1.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ora/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, + "dependencies": { + "ansi-regex": "^6.0.1" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" + } + }, + "node_modules/os-name": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/os-name/-/os-name-5.1.0.tgz", + "integrity": "sha512-YEIoAnM6zFmzw3PQ201gCVCIWbXNyKObGlVvpAVvraAeOHnlYVKFssbA/riRX5R40WA6kKrZ7Dr7dWzO3nKSeQ==", + "dev": true, + "dependencies": { + "macos-release": "^3.1.0", + "windows-release": "^5.0.1" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/os-tmpdir": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", + "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/p-cancelable": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", + "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", + "dev": true, + "engines": { + "node": ">=12.20" + } + }, + "node_modules/p-limit": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-4.0.0.tgz", + "integrity": "sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^1.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-6.0.0.tgz", + "integrity": "sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==", + "dev": true, + "dependencies": { + "p-limit": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pac-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", + "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", + "dev": true, + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.5", + "pac-resolver": "^7.0.1", + "socks-proxy-agent": "^8.0.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dev": true, + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/package-json": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/package-json/-/package-json-10.0.1.tgz", + "integrity": "sha512-ua1L4OgXSBdsu1FPb7F3tYH0F48a6kxvod4pLUlGY9COeJAJQNX/sNH2IiEmsxw7lqYiAwrdHMjz1FctOsyDQg==", + "dev": true, + "dependencies": { + "ky": "^1.2.0", + "registry-auth-token": "^5.0.2", + "registry-url": "^6.0.1", + "semver": "^7.6.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parse-path": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/parse-path/-/parse-path-7.0.0.tgz", + "integrity": "sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==", + "dev": true, + "dependencies": { + "protocols": "^2.0.0" + } + }, + "node_modules/parse-url": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/parse-url/-/parse-url-8.1.0.tgz", + "integrity": "sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==", + "dev": true, + "dependencies": { + "parse-path": "^7.0.0" + } + }, + "node_modules/path-exists": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-5.0.0.tgz", + "integrity": "sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-5.0.0.tgz", + "integrity": "sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==", + "dev": true + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/proto-list": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz", + "integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==", + "dev": true + }, + "node_modules/protocols": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/protocols/-/protocols-2.0.1.tgz", + "integrity": "sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==", + "dev": true + }, + "node_modules/proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "dev": true, + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-agent/node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "dev": true + }, + "node_modules/pupa": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/pupa/-/pupa-3.1.0.tgz", + "integrity": "sha512-FLpr4flz5xZTSJxSeaheeMKN/EDzMdK7b8PTOC6a5PYFKTucWbdqjgqaEyH0shFiSJrVB1+Qqi4Tk19ccU6Aug==", + "dev": true, + "dependencies": { + "escape-goat": "^4.0.0" + }, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/rc": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz", + "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==", + "dev": true, + "dependencies": { + "deep-extend": "^0.6.0", + "ini": "~1.3.0", + "minimist": "^1.2.0", + "strip-json-comments": "~2.0.1" + }, + "bin": { + "rc": "cli.js" + } + }, + "node_modules/rc/node_modules/ini": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz", + "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==", + "dev": true + }, + "node_modules/read-pkg": { + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-8.1.0.tgz", + "integrity": "sha512-PORM8AgzXeskHO/WEv312k9U03B8K9JSiWF/8N9sUuFjBa+9SF2u6K7VClzXwDXab51jCd8Nd36CNM+zR97ScQ==", + "dev": true, + "dependencies": { + "@types/normalize-package-data": "^2.4.1", + "normalize-package-data": "^6.0.0", + "parse-json": "^7.0.0", + "type-fest": "^4.2.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-10.1.0.tgz", + "integrity": "sha512-aNtBq4jR8NawpKJQldrQcSW9y/d+KWH4v24HWkHljOZ7H0av+YTGANBzRh9A5pw7v/bLVsLVPpOhJ7gHNVy8lA==", + "dev": true, + "dependencies": { + "find-up": "^6.3.0", + "read-pkg": "^8.1.0", + "type-fest": "^4.2.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/find-up": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-6.3.0.tgz", + "integrity": "sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==", + "dev": true, + "dependencies": { + "locate-path": "^7.1.0", + "path-exists": "^5.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg-up/node_modules/type-fest": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.0.tgz", + "integrity": "sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/json-parse-even-better-errors": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-3.0.2.tgz", + "integrity": "sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==", + "dev": true, + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/read-pkg/node_modules/lines-and-columns": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-2.0.4.tgz", + "integrity": "sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + } + }, + "node_modules/read-pkg/node_modules/parse-json": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-7.1.1.tgz", + "integrity": "sha512-SgOTCX/EZXtZxBE5eJ97P4yGM5n37BwRU+YMsH4vNzFqJV/oWFXXCmwFlgWUM4PrakybVOueJJ6pwHqSVhTFDw==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.21.4", + "error-ex": "^1.3.2", + "json-parse-even-better-errors": "^3.0.0", + "lines-and-columns": "^2.0.3", + "type-fest": "^3.8.0" + }, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/parse-json/node_modules/type-fest": { + "version": "3.13.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-3.13.1.tgz", + "integrity": "sha512-tLq3bSNx+xSpwvAJnzrK0Ep5CLNWjvFTOp71URMaAEWBfRb9nnJiBoUe0tF8bI4ZFO3omgBR6NvnbzVUT3Ly4g==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/read-pkg/node_modules/type-fest": { + "version": "4.26.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-4.26.0.tgz", + "integrity": "sha512-OduNjVJsFbifKb57UqZ2EMP1i4u64Xwow3NYXUtBbD4vIwJdQd4+xl8YDou1dlm4DVrtwT/7Ky8z8WyCULVfxw==", + "dev": true, + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/readable-stream": { + "version": "3.6.2", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz", + "integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==", + "dev": true, + "dependencies": { + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/registry-auth-token": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.0.2.tgz", + "integrity": "sha512-o/3ikDxtXaA59BmZuZrJZDJv8NMDGSj+6j6XaeBmHw8eY1i1qd9+6H+LjVvQXx3HN6aRCGa1cUdJ9RaJZUugnQ==", + "dev": true, + "dependencies": { + "@pnpm/npm-conf": "^2.1.0" + }, + "engines": { + "node": ">=14" + } + }, + "node_modules/registry-url": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/registry-url/-/registry-url-6.0.1.tgz", + "integrity": "sha512-+crtS5QjFRqFCoQmvGduwYWEBng99ZvmFvF+cUJkGYF1L1BfU8C6Zp9T7f5vPAwyLkUExpvK+ANVZmGU49qi4Q==", + "dev": true, + "dependencies": { + "rc": "1.2.8" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/release-it": { + "version": "17.6.0", + "resolved": "https://registry.npmjs.org/release-it/-/release-it-17.6.0.tgz", + "integrity": "sha512-EE34dtRPL7BHpYQC7E+zAU8kjkyxFHxLk5Iqnmn/5nGcjgOQu34Au29M2V9YvxiP3tZbIlEn4gItEzu7vAPRbw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/webpro" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/webpro" + } + ], + "dependencies": { + "@iarna/toml": "2.2.5", + "@octokit/rest": "20.1.1", + "async-retry": "1.3.3", + "chalk": "5.3.0", + "cosmiconfig": "9.0.0", + "execa": "8.0.1", + "git-url-parse": "14.0.0", + "globby": "14.0.2", + "got": "13.0.0", + "inquirer": "9.3.2", + "is-ci": "3.0.1", + "issue-parser": "7.0.1", + "lodash": "4.17.21", + "mime-types": "2.1.35", + "new-github-release-url": "2.0.0", + "node-fetch": "3.3.2", + "open": "10.1.0", + "ora": "8.0.1", + "os-name": "5.1.0", + "proxy-agent": "6.4.0", + "semver": "7.6.2", + "shelljs": "0.8.5", + "update-notifier": "7.1.0", + "url-join": "5.0.0", + "wildcard-match": "5.1.3", + "yargs-parser": "21.1.1" + }, + "bin": { + "release-it": "bin/release-it.js" + }, + "engines": { + "node": "^18.18.0 || ^20.9.0 || ^22.0.0" + } + }, + "node_modules/release-it/node_modules/semver": { + "version": "7.6.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/responselike": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", + "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", + "dev": true, + "dependencies": { + "lowercase-keys": "^3.0.0" + }, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", + "dev": true, + "dependencies": { + "onetime": "^5.1.0", + "signal-exit": "^3.0.2" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/restore-cursor/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/restore-cursor/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/retry": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", + "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/run-applescript": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/run-applescript/-/run-applescript-7.0.0.tgz", + "integrity": "sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/run-async": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/run-async/-/run-async-3.0.0.tgz", + "integrity": "sha512-540WwVDOMxA6dN6We19EcT9sc3hkXPw5mzRNGM3FkdN/vtE9NFvj5lFAPNwUDmJjXidm3v7TC1cTE7t17Ulm1Q==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "dependencies": { + "tslib": "^2.1.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver-diff": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/semver-diff/-/semver-diff-4.0.0.tgz", + "integrity": "sha512-0Ju4+6A8iOnpL/Thra7dZsSlOHYAHIeMxfhWQRI1/VLcT3WDBZKKtQt/QkBOsiIN9ZpuvHE6cGZ0x4glCMmfiA==", + "dev": true, + "dependencies": { + "semver": "^7.3.5" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/signal-exit": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "dev": true, + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.3", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", + "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", + "dev": true, + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.4", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", + "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", + "dev": true, + "dependencies": { + "agent-base": "^7.1.1", + "debug": "^4.3.4", + "socks": "^2.8.3" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/spdx-correct": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.2.0.tgz", + "integrity": "sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==", + "dev": true, + "dependencies": { + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-exceptions": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.5.0.tgz", + "integrity": "sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==", + "dev": true + }, + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "dev": true, + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" + } + }, + "node_modules/spdx-license-ids": { + "version": "3.0.20", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.20.tgz", + "integrity": "sha512-jg25NiDV/1fLtSgEgyvVyDunvaNHbuwF9lfNV17gSmPFAlYzdfNBlLtLzXTevwkPj7DhGbmN9VnmJIgLnhvaBw==", + "dev": true + }, + "node_modules/split2": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", + "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", + "dev": true, + "engines": { + "node": ">= 10.x" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", + "dev": true + }, + "node_modules/stdin-discarder": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/stdin-discarder/-/stdin-discarder-0.2.2.tgz", + "integrity": "sha512-UhDfHmA92YAlNnCfhmq0VeNL5bDbiZGg7sZ2IvPsXubGkiNa9EC+tUTsjBRsYUAz87btI6/1wf4XoVvQ3uRnmQ==", + "dev": true, + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "dev": true, + "dependencies": { + "safe-buffer": "~5.2.0" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", + "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/strip-json-comments": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/text-extensions": { + "version": "2.4.0", + "resolved": "https://registry.npmjs.org/text-extensions/-/text-extensions-2.4.0.tgz", + "integrity": "sha512-te/NtwBwfiNRLf9Ijqx3T0nlqZiQ2XrrtBvu+cLL8ZRrGkO0NHTug8MYFKyoSrv/sHTaSKfilUkizV6XhxMJ3g==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", + "dev": true + }, + "node_modules/tmp": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", + "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "dependencies": { + "os-tmpdir": "~1.0.2" + }, + "engines": { + "node": ">=0.6.0" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/tslib": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", + "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", + "dev": true + }, + "node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "dev": true + }, + "node_modules/typedarray-to-buffer": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", + "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", + "dev": true, + "dependencies": { + "is-typedarray": "^1.0.0" + } + }, + "node_modules/typescript": { + "version": "5.5.4", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", + "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", + "peer": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/uglify-js": { + "version": "3.19.3", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.19.3.tgz", + "integrity": "sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==", + "dev": true, + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, "engines": { - "node": ">=6" + "node": ">=0.8.0" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/unicorn-magic": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.1.0.tgz", + "integrity": "sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==", + "dev": true, + "engines": { + "node": ">=18" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", + "node_modules/unique-string": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-string/-/unique-string-3.0.0.tgz", + "integrity": "sha512-VGXBUVwxKMBUznyffQweQABPRRW1vHZAbadFZud4pLFAqRGvv/96vafgjWFqzourzr8YonlQiPgH0YCJfawoGQ==", + "dev": true, + "dependencies": { + "crypto-random-string": "^4.0.0" + }, "engines": { - "node": ">= 12" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/color-convert": { + "node_modules/universal-user-agent": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/universal-user-agent/-/universal-user-agent-6.0.1.tgz", + "integrity": "sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==", + "dev": true + }, + "node_modules/universalify": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/update-notifier": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/update-notifier/-/update-notifier-7.1.0.tgz", + "integrity": "sha512-8SV3rIqVY6EFC1WxH6L0j55s0MO79MFBS1pivmInRJg3pCEDgWHBj1Q6XByTtCLOZIFA0f6zoG9ZWf2Ks9lvTA==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "boxen": "^7.1.1", + "chalk": "^5.3.0", + "configstore": "^6.0.0", + "import-lazy": "^4.0.0", + "is-in-ci": "^0.1.0", + "is-installed-globally": "^1.0.0", + "is-npm": "^6.0.0", + "latest-version": "^9.0.0", + "pupa": "^3.1.0", + "semver": "^7.6.2", + "semver-diff": "^4.0.0", + "xdg-basedir": "^5.1.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=18" + }, + "funding": { + "url": "https://github.com/yeoman/update-notifier?sponsor=1" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" - }, - "node_modules/commander": { - "version": "12.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-12.1.0.tgz", - "integrity": "sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==", + "node_modules/url-join": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", + "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", + "dev": true, "engines": { - "node": ">=18" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true }, - "node_modules/external-editor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/external-editor/-/external-editor-3.1.0.tgz", - "integrity": "sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==", + "node_modules/validate-npm-package-license": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", + "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", + "dev": true, "dependencies": { - "chardet": "^0.7.0", - "iconv-lite": "^0.4.24", - "tmp": "^0.0.33" - }, - "engines": { - "node": ">=4" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, - "node_modules/iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "node_modules/wcwidth": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", + "dev": true, "dependencies": { - "safer-buffer": ">= 2.1.2 < 3" - }, - "engines": { - "node": ">=0.10.0" + "defaults": "^1.0.3" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/web-streams-polyfill": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.3.3.tgz", + "integrity": "sha512-d2JWLCivmZYTSIoge9MsgFCZrt571BikcWGYkjC1khllbTeDlGqZ2D8vD8E/lJa8WGWbb7Plm8/XJYV7IJHZZw==", + "dev": true, "engines": { - "node": ">=8" + "node": ">= 8" } }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, "dependencies": { - "argparse": "^2.0.1" + "isexe": "^2.0.0" }, "bin": { - "js-yaml": "bin/js-yaml.js" + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/mute-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-1.0.0.tgz", - "integrity": "sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==", + "node_modules/widest-line": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/widest-line/-/widest-line-4.0.1.tgz", + "integrity": "sha512-o0cyEG0e8GPzT4iGHphIOh0cJOV8fivsXxddQasHPHfoZf1ZexrfeA21w2NaEN1RHE+fXlfISmOE8R9N3u3Qig==", + "dev": true, + "dependencies": { + "string-width": "^5.0.1" + }, "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/os-tmpdir": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz", - "integrity": "sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==", + "node_modules/widest-line/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + "node_modules/widest-line/node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", + "node_modules/widest-line/node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "dev": true, + "dependencies": { + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" + }, "engines": { - "node": ">=14" + "node": ">=12" }, "funding": { - "url": "https://github.com/sponsors/isaacs" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/widest-line/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/wildcard-match": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/wildcard-match/-/wildcard-match-5.1.3.tgz", + "integrity": "sha512-a95hPUk+BNzSGLntNXYxsjz2Hooi5oL7xOfJR6CKwSsSALh7vUNuTlzsrZowtYy38JNduYFRVhFv19ocqNOZlg==", + "dev": true + }, + "node_modules/windows-release": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/windows-release/-/windows-release-5.1.1.tgz", + "integrity": "sha512-NMD00arvqcq2nwqc5Q6KtrSRHK+fVD31erE5FEMahAw5PmVCgD7MUXodq3pdZSUkqA9Cda2iWx6s1XYwiJWRmw==", + "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "execa": "^5.1.1" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tmp": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.0.33.tgz", - "integrity": "sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==", + "node_modules/windows-release/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, "dependencies": { - "os-tmpdir": "~1.0.2" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=0.6.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "node_modules/windows-release/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, "engines": { "node": ">=10" }, @@ -678,23 +5496,83 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/typescript": { - "version": "5.5.4", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz", - "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" + "node_modules/windows-release/node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/windows-release/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/windows-release/node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, "engines": { - "node": ">=14.17" + "node": ">=6" } }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + "node_modules/windows-release/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/windows-release/node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/windows-release/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/windows-release/node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==", + "dev": true }, "node_modules/wrap-ansi": { "version": "6.2.0", @@ -709,6 +5587,90 @@ "node": ">=8" } }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", + "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "is-typedarray": "^1.0.0", + "signal-exit": "^3.0.2", + "typedarray-to-buffer": "^3.1.5" + } + }, + "node_modules/write-file-atomic/node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/xdg-basedir": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/xdg-basedir/-/xdg-basedir-5.1.0.tgz", + "integrity": "sha512-GCPAHLvrIH13+c0SuacwvRYj2SxJXQ4kaVTT5xgL3kPrz56XxkF21IGhjSE1+W0aw7gpBWRGXLCPnPby6lSpmQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-1.1.1.tgz", + "integrity": "sha512-b4JR1PFR10y1mKjhHY9LaGo6tmrgjit7hxVIeAmyMw3jegXR4dhYqLaQF5zMXZxY7tLpMyJeLjr1C4rLmkVe8g==", + "dev": true, + "engines": { + "node": ">=12.20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/yoctocolors-cjs": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.2.tgz", diff --git a/package.json b/package.json index 5bf3beb..202bd66 100644 --- a/package.json +++ b/package.json @@ -7,7 +7,7 @@ "type": "module", "scripts": { "build": "bun build --target=bun ./cli.ts --outdir dist/", - "compile": "bun build --compile --minify --sourcemap ./cli.ts --outfile ./werf-env-generator", + "compile": "bun build --compile --minify --sourcemap ./cli.ts --outfile ./dot-env-generator", "format": "biome format ./cli.ts ./src ./test --write", "format:ci": "biome format ./cli.ts ./src ./test", "lint": "biome lint ./cli.ts ./src ./test --write", @@ -17,10 +17,15 @@ "test": "bun test --coverage" }, "devDependencies": { - "@biomejs/biome": "^1.6.1", + "@biomejs/biome": "^1.8.3", + "@commitlint/config-conventional": "^19.2.2", + "@release-it/conventional-changelog": "^8.0.1", "@types/bun": "latest", "@types/js-yaml": "^4.0.9", - "@types/node": "^20.14.1" + "@types/node": "^20.14.1", + "commitlint": "^19.4.0", + "husky": "^9.1.5", + "release-it": "^17.6.0" }, "peerDependencies": { "typescript": "^5.0.0" @@ -30,5 +35,88 @@ "@inquirer/prompts": "^5.1.0", "commander": "^12.1.0", "js-yaml": "^4.0.9" + }, + "commitlint": { + "extends": [ + "@commitlint/config-conventional" + ], + "defaultIgnores": true + }, + "renovate": { + "$schema": "https://docs.renovatebot.com/renovate-schema.json", + "extends": ["config:recommended"], + "prConcurrentLimit": 2 + }, + "release-it": { + "github": { + "release": false, + "releaseName": "v${version}", + "assets": ["dist/dot-env-generator*"] + }, + "git": { + "commitMessage": "chore: release v${version}", + "tagMatch": "v[0-9]*\\.[0-9]*\\.[0-9]*", + "tagName": "v${version}", + "getLatestTagFromAllRefs": true, + "tagExclude": "*[-]*", + "push": true, + "release": true, + "pushArgs": ["--no-verify", "--follow-tags", "--force"], + "commitArgs": ["--no-verify"] + }, + "plugins": { + "@release-it/conventional-changelog": { + "preset": { + "name": "conventionalcommits", + "types": [ + { + "type": "feat", + "section": "Features" + }, + { + "type": "fix", + "section": "Bug Fixes" + }, + { + "type": "chore", + "section": "Miscellaneous" + }, + { + "type": "docs", + "section": "Miscellaneous" + }, + { + "type": "style", + "section": "Miscellaneous" + }, + { + "type": "refactor", + "section": "Miscellaneous" + }, + { + "type": "perf", + "section": "Miscellaneous" + }, + { + "type": "test", + "section": "Miscellaneous" + }, + { + "type": "build", + "section": "Miscellaneous" + }, + { + "type": "revert", + "section": "Miscellaneous" + }, + { + "type": "ci", + "section": "Miscellaneous" + } + ] + }, + "infile": "CHANGELOG.md" + } + } } } diff --git a/taskfile.yaml b/taskfile.yaml index 2f1128b..72f5cb8 100644 --- a/taskfile.yaml +++ b/taskfile.yaml @@ -8,7 +8,7 @@ includes: taskfile: .ops/taskfiles/system.yaml env: - PROJECT: 'werf-env-generator' + PROJECT: 'dot-env-generator' tasks: # Tasks: Werf @@ -23,16 +23,12 @@ tasks: ENVIRONMENT: '{{.ENVIRONMENT}}' } - generate-env: + generate-env-werf: desc: Generates the .env of the provided environment from Werf vars: ENVIRONMENT: '{{.ENVIRONMENT | default .CLI_ARGS}}' cmds: - - task: werf:download-env-generator - vars: - OS: - sh: task system:os - - ./werf-env-generator -e '{{.ENVIRONMENT}}' + - ./dot-env-generator werf -e '{{.ENVIRONMENT}}' decrypt: desc: Decrypts secret values with 'werf helm secret values decrypt'. @@ -51,3 +47,29 @@ tasks: SECRET_COMMAND: 'encrypt', ENVIRONMENT: '{{.CLI_ARGS}}' } + + build: + desc: "Compile binary for supported platforms" + cmds: + - for: ['linux-x64', 'linux-arm64', 'darwin-arm64', 'darwin-x64'] + cmd: | + echo "Compiling for {{.ITEM}}..." + bun build \ + --compile \ + --target=bun-{{.ITEM}} \ + --minify \ + --sourcemap \ + ./cli.ts \ + --outfile ./dist/$PROJECT-{{.ITEM}} + + compress: + desc: "Compress the binaries" + cmds: + - for: ['linux-x64', 'linux-arm64', 'darwin-arm64', 'darwin-x64'] + cmd: | + echo "Compressing {{.ITEM}} binary..." + tar -czvf ./dist/$PROJECT-{{.ITEM}}.tar.gz -C ./dist/ $PROJECT-{{.ITEM}} + + build-and-compress: + desc: "Build and compress binaries for all platforms" + deps: [build, compress] From d3ef953b9c13c0aaa6fbce3b10553f44c53da98b Mon Sep 17 00:00:00 2001 From: Javier Carrillo Date: Tue, 3 Sep 2024 13:39:34 -0400 Subject: [PATCH 03/15] chore: (RI-4198) Update taskfiles --- .ops/taskfiles/system.yaml | 16 ---------------- taskfile.yaml | 3 +-- 2 files changed, 1 insertion(+), 18 deletions(-) delete mode 100644 .ops/taskfiles/system.yaml diff --git a/.ops/taskfiles/system.yaml b/.ops/taskfiles/system.yaml deleted file mode 100644 index 8702bca..0000000 --- a/.ops/taskfiles/system.yaml +++ /dev/null @@ -1,16 +0,0 @@ -version: '3' - -tasks: - # Tasks: System commands - os: - desc: Obtains the current OS type. - silent: true - preconditions: - - sh: '[[ {{.OS}} =~ (darwin|windows|linux) ]]' - msg: | - Error: '{{.OS}}' is not a supported OS. - vars: - OS: - sh: "uname -o | tr '[:upper:]' '[:lower:]'" - cmds: - - echo "{{.OS}}" diff --git a/taskfile.yaml b/taskfile.yaml index 72f5cb8..5381ba0 100644 --- a/taskfile.yaml +++ b/taskfile.yaml @@ -4,8 +4,6 @@ includes: werf: taskfile: .ops/taskfiles/werf.yaml internal: true - system: - taskfile: .ops/taskfiles/system.yaml env: PROJECT: 'dot-env-generator' @@ -28,6 +26,7 @@ tasks: vars: ENVIRONMENT: '{{.ENVIRONMENT | default .CLI_ARGS}}' cmds: + - bun run compile - ./dot-env-generator werf -e '{{.ENVIRONMENT}}' decrypt: From 8e778ee2fc8ee21e2e9fb7d5692c8c39be84d641 Mon Sep 17 00:00:00 2001 From: Javier Carrillo Date: Tue, 3 Sep 2024 13:57:29 -0400 Subject: [PATCH 04/15] chore: (RI-4198) Update husky lint configurations --- .github/workflows/lint.yml | 3 +++ .husky/commit-msg | 3 +++ 2 files changed, 6 insertions(+) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index c5f661d..42eddd6 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -2,6 +2,8 @@ name: ๐Ÿ“ Lint on: pull_request: + branches: + - main concurrency: group: '${{ github.workflow }} @ ${{ github.head_ref || github.ref }}' @@ -50,5 +52,6 @@ jobs: --from ${{ github.event.pull_request.head.sha }}~${{ github.event.pull_request.commits }} --to ${{ github.event.pull_request.head.sha }} --verbose + - name: ๐Ÿ”Ž Validate PR title with commitlint run: echo "${{ github.event.pull_request.title }}" | npx commitlint diff --git a/.husky/commit-msg b/.husky/commit-msg index 7878d79..eb91454 100644 --- a/.husky/commit-msg +++ b/.husky/commit-msg @@ -1,3 +1,6 @@ #!/usr/bin/env sh npx --no -- commitlint --edit ${1} +bun run lint +bun run format +bun run check From 3032b0fdf1cdaae3492549b65a1ad972c91e7bd7 Mon Sep 17 00:00:00 2001 From: Javier Carrillo Date: Tue, 3 Sep 2024 14:34:30 -0400 Subject: [PATCH 05/15] ci: (RI-4198) Modify S3 upload file --- .github/workflows/s3-upload.yml | 47 +++++++++++++++++++++++++++++++++ .tool-versions | 1 + 2 files changed, 48 insertions(+) create mode 100644 .github/workflows/s3-upload.yml diff --git a/.github/workflows/s3-upload.yml b/.github/workflows/s3-upload.yml new file mode 100644 index 0000000..88e579e --- /dev/null +++ b/.github/workflows/s3-upload.yml @@ -0,0 +1,47 @@ +name: ๐Ÿš€ Deploy to S3 + +on: + push: + branches: + - main + +env: + BUCKET: 's3://gbh-utils' + NAME: 'dot-env-generator' + +jobs: + deploy-s3: + runs-on: ubuntu-latest + strategy: + matrix: + os: [linux-x64, linux-arm64, windows-x64, darwin-arm64, darwin-x64] + steps: + - name: ๐Ÿ’ป Checkout current code ref + uses: actions/checkout@v4 + + - name: ๐ŸŸข Configure Bun on runner + uses: oven-sh/setup-bun@v1 + with: + bun-version: latest + + - name: ๐Ÿ”ต Install Task + uses: arduino/setup-task@v2 + + - name: ๐ŸŸก Configure AWS Credentials + uses: aws-actions/configure-aws-credentials@v4 + with: + aws-access-key-id: ${{ vars.AWS_ACCESS_KEY_ID }} + aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }} + aws-region: 'us-east-1' + + - name: ๐Ÿ“ฆ Install package dependencies using lockfile + run: bun install --frozen-lockfile + + - name: ๐Ÿ”จ Run build + run: bun run build + + - name: ๐Ÿ”จ Compile binary for supported platforms + run: task build-and-compress + + - name: ๐Ÿš€ Upload binaries to S3 + run: aws s3 cp ./dist ${BUCKET}/${NAME} --acl public-read diff --git a/.tool-versions b/.tool-versions index 2f98526..0d80e25 100644 --- a/.tool-versions +++ b/.tool-versions @@ -1,3 +1,4 @@ +awscli 2.17.4 bun 1.1.21 werf 2.0.4 task 3.37.2 From 9613a0d139f8f0db6c083d67fad166f2084d870c Mon Sep 17 00:00:00 2001 From: Javier Carrillo Date: Tue, 3 Sep 2024 15:59:29 -0400 Subject: [PATCH 06/15] refactor: (RI-4198) Use reduce function to merge object --- src/commands/op.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/commands/op.ts b/src/commands/op.ts index e1456a1..963f08b 100644 --- a/src/commands/op.ts +++ b/src/commands/op.ts @@ -2,6 +2,7 @@ import { Command } from 'commander'; import { createClient } from "@1password/sdk"; +import type { EnvVarObject } from '../interfaces' import { generateEnvFile } from '../parser'; import { name, version } from '../../package.json'; @@ -37,12 +38,11 @@ export const onePasswordCommand = () => { for (const item of items) { const vaultItem = await client.items.get(vault, item); - - const secret = vaultItem.fields.map(obj=> ({ title: obj.title, value: obj.value })); - - const envData = secret.reduce( - (obj, item) => Object.assign(obj, { [item.title]: item.value }), {}); + const envData = vaultItem.fields.reduce((key, item) => { + key[item.title] = item.value; + return key; + }, {} as EnvVarObject); for (const path of options.toPath) { generateEnvFile(envData, path); From b285f34ddcc66e27da537eedb5e439796d882905 Mon Sep 17 00:00:00 2001 From: Javier Carrillo Date: Wed, 4 Sep 2024 09:20:42 -0400 Subject: [PATCH 07/15] feat: (RI-4198) Update generateEnvFile function --- src/commands/op.ts | 3 +-- src/parser.ts | 14 +++++++++++++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/src/commands/op.ts b/src/commands/op.ts index 963f08b..fa17151 100644 --- a/src/commands/op.ts +++ b/src/commands/op.ts @@ -18,8 +18,7 @@ export const onePasswordCommand = () => { ) .requiredOption( '-i, --item ', - 'Target secret for which to generate the .env file', - [] + 'Target secret for which to generate the .env file' ) .option( '-p, --to-path ', diff --git a/src/parser.ts b/src/parser.ts index a3065a2..0106d4b 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -18,10 +18,22 @@ export function mergeDataFromManifests(manifests: yamlDoc[]) { } export function generateEnvFile(envObject: EnvVarObject, filePath: string) { + if (fs.existsSync(filePath)) { + let existingContent = ''; + existingContent = fs.readFileSync(filePath, 'utf8'); + + existingContent.split('\n').forEach(line => { + if (line.trim() && !line.startsWith('#')) { + const [key, value] = line.split('='); + envObject[key.trim()] = value.trim().replace(/^['"]|['"]$/g, ''); + } + }); + } + const envContent = Object.entries(envObject) .map(([key, value]) => `${key}='${value}'`) .join('\n'); - fs.appendFileSync(filePath, envContent + '\n', 'utf8'); + fs.writeFileSync(filePath, envContent, 'utf8'); console.log(`dotenv file generated in ${filePath}!`); } From 457b51f37d230b0f6b9690f7582c6183539db381 Mon Sep 17 00:00:00 2001 From: Javier Carrillo Date: Wed, 4 Sep 2024 10:21:10 -0400 Subject: [PATCH 08/15] chore: (RI-4198) Use for loop instead of foreach loop --- src/parser.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/parser.ts b/src/parser.ts index 0106d4b..f06b5c3 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -21,13 +21,13 @@ export function generateEnvFile(envObject: EnvVarObject, filePath: string) { if (fs.existsSync(filePath)) { let existingContent = ''; existingContent = fs.readFileSync(filePath, 'utf8'); - - existingContent.split('\n').forEach(line => { + + for (const line of existingContent.split('\n')) { if (line.trim() && !line.startsWith('#')) { const [key, value] = line.split('='); envObject[key.trim()] = value.trim().replace(/^['"]|['"]$/g, ''); } - }); + } } const envContent = Object.entries(envObject) From 6c9773c140175f8dae4ad00ff11fe046f73a89cd Mon Sep 17 00:00:00 2001 From: Javier Carrillo Date: Wed, 4 Sep 2024 10:21:36 -0400 Subject: [PATCH 09/15] style: (RI-4198) Apply lint suggestions --- cli.ts | 4 ++-- src/commands/op.ts | 20 ++++++++------------ 2 files changed, 10 insertions(+), 14 deletions(-) diff --git a/cli.ts b/cli.ts index 80f2de2..6e15dc8 100755 --- a/cli.ts +++ b/cli.ts @@ -2,8 +2,8 @@ import { Command } from 'commander'; import { description, name, version } from './package.json'; -import { werfCommand } from './src/commands/werf'; import { onePasswordCommand } from './src/commands/op'; +import { werfCommand } from './src/commands/werf'; const cli = new Command(); @@ -12,6 +12,6 @@ cli .version(version) .summary(description) .addCommand(werfCommand()) - .addCommand(onePasswordCommand()) + .addCommand(onePasswordCommand()); cli.parse(); diff --git a/src/commands/op.ts b/src/commands/op.ts index fa17151..04b4abf 100644 --- a/src/commands/op.ts +++ b/src/commands/op.ts @@ -1,10 +1,10 @@ #!/usr/bin/env bun +import { createClient } from '@1password/sdk'; import { Command } from 'commander'; -import { createClient } from "@1password/sdk"; -import type { EnvVarObject } from '../interfaces' -import { generateEnvFile } from '../parser'; import { name, version } from '../../package.json'; +import type { EnvVarObject } from '../interfaces'; +import { generateEnvFile } from '../parser'; export const onePasswordCommand = () => { const command = new Command(); @@ -12,20 +12,17 @@ export const onePasswordCommand = () => { command .name('op') .summary('1Password Env-File Generator CLI') - .requiredOption( - '-v, --vault ', - 'Target vault to fetch secret item' - ) + .requiredOption('-v, --vault ', 'Target vault to fetch secret item') .requiredOption( '-i, --item ', - 'Target secret for which to generate the .env file' + 'Target secret for which to generate the .env file', ) .option( '-p, --to-path ', 'Path(s) to generate the dot env (.env) file to', ['.env'], ) - .action(async(options) => { + .action(async (options) => { const vault = options.vault.trim(); const items = options.item; @@ -34,10 +31,10 @@ export const onePasswordCommand = () => { integrationName: name, integrationVersion: version, }); - + for (const item of items) { const vaultItem = await client.items.get(vault, item); - + const envData = vaultItem.fields.reduce((key, item) => { key[item.title] = item.value; return key; @@ -53,4 +50,3 @@ export const onePasswordCommand = () => { }; export default onePasswordCommand(); - From 302b0e7d6a11942ce34e9cb01d296781a09f7d89 Mon Sep 17 00:00:00 2001 From: Javier Carrillo Date: Wed, 4 Sep 2024 10:23:17 -0400 Subject: [PATCH 10/15] ci: (RI-4198) Update CI workflows --- .github/workflows/lint.yml | 7 ++----- .github/workflows/release.yml | 3 --- .github/workflows/test.yaml | 9 +++++---- 3 files changed, 7 insertions(+), 12 deletions(-) diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 42eddd6..faba630 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -22,9 +22,6 @@ jobs: - name: ๐Ÿ“ฆ Install package dependencies using lockfile run: bun install --frozen-lockfile - - name: ๐Ÿ”จ Run build - run: bun run build - - name: ๐ŸŒท Run format, lint & check with Biome run: | bun run format @@ -42,8 +39,8 @@ jobs: - name: ๐ŸŸข Configure Bun on runner uses: oven-sh/setup-bun@v1 - - name: ๐Ÿšง Install dev dependencies - run: npm install --only=dev + - name: ๐Ÿ“ฆ Install package dependencies using lockfile + run: bun install --frozen-lockfile # Check all commits pushed to this PR - name: ๐Ÿ‘๏ธโ€๐Ÿ—จ๏ธ Validate PR commits with commitlint diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index a8e3d33..6ae3d4f 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -31,9 +31,6 @@ jobs: - name: ๐Ÿ“ฆ Install package dependencies using lockfile run: bun install --frozen-lockfile - - name: ๐Ÿ”จ Run build - run: bun run build - - name: ๐Ÿ”จ Compile binary for supported platforms run: task build-and-compress diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index f1af9e8..1d123bf 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -24,13 +24,14 @@ jobs: with: bun-version: latest + - name: ๐Ÿ”ต Install Task + uses: arduino/setup-task@v2 + - name: ๐Ÿ“ฆ Install package dependencies using lockfile run: bun install --frozen-lockfile - - name: ๐Ÿ”จ Run build - run: | - bun run build - bun run compile + - name: ๐Ÿ”จ Compile binary for supported platforms + run: task build-and-compress - name: ๐Ÿงช Run tests run: bun run test From b4aa914ea53433b463874a5753a8cb63c3407e7d Mon Sep 17 00:00:00 2001 From: Javier Carrillo Date: Wed, 4 Sep 2024 10:23:36 -0400 Subject: [PATCH 11/15] chore: (RI-4198) Update gitignore file --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index 1b4d454..2b536ae 100644 --- a/.gitignore +++ b/.gitignore @@ -176,4 +176,5 @@ dist .DS_Store # Binary +dot-env-generator* .werf_secret_key From 16c9588850bf6424ce1c4306ef92e44ea6810778 Mon Sep 17 00:00:00 2001 From: Javier Carrillo Date: Wed, 4 Sep 2024 10:30:32 -0400 Subject: [PATCH 12/15] chore: (RI-4198) Update release-it configuration --- .github/workflows/test.yaml | 4 +++- package.json | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 1d123bf..651a7a3 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -31,7 +31,9 @@ jobs: run: bun install --frozen-lockfile - name: ๐Ÿ”จ Compile binary for supported platforms - run: task build-and-compress + run: | + mkdir -p ./dist/ + task build-and-compress - name: ๐Ÿงช Run tests run: bun run test diff --git a/package.json b/package.json index 202bd66..5e2b3de 100644 --- a/package.json +++ b/package.json @@ -51,7 +51,7 @@ "github": { "release": false, "releaseName": "v${version}", - "assets": ["dist/dot-env-generator*"] + "assets": ["dist/*tar.gz"] }, "git": { "commitMessage": "chore: release v${version}", From 2787f22713677fb9330566006f836daf74b3d4eb Mon Sep 17 00:00:00 2001 From: Javier Carrillo Date: Wed, 4 Sep 2024 10:34:27 -0400 Subject: [PATCH 13/15] ci: (RI-4198) Update build and compress tasks --- .github/workflows/release.yml | 4 +++- .github/workflows/s3-upload.yml | 7 +++---- .github/workflows/test.yaml | 4 ++-- taskfile.yaml | 4 ---- 4 files changed, 8 insertions(+), 11 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6ae3d4f..ffbcb58 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -32,7 +32,9 @@ jobs: run: bun install --frozen-lockfile - name: ๐Ÿ”จ Compile binary for supported platforms - run: task build-and-compress + run: | + task build + task compress - name: ๐Ÿš€ Run new version for production run: npx release-it --ci diff --git a/.github/workflows/s3-upload.yml b/.github/workflows/s3-upload.yml index 88e579e..df5a83d 100644 --- a/.github/workflows/s3-upload.yml +++ b/.github/workflows/s3-upload.yml @@ -37,11 +37,10 @@ jobs: - name: ๐Ÿ“ฆ Install package dependencies using lockfile run: bun install --frozen-lockfile - - name: ๐Ÿ”จ Run build - run: bun run build - - name: ๐Ÿ”จ Compile binary for supported platforms - run: task build-and-compress + run: | + task build + task compress - name: ๐Ÿš€ Upload binaries to S3 run: aws s3 cp ./dist ${BUCKET}/${NAME} --acl public-read diff --git a/.github/workflows/test.yaml b/.github/workflows/test.yaml index 651a7a3..5dfbc0b 100644 --- a/.github/workflows/test.yaml +++ b/.github/workflows/test.yaml @@ -32,8 +32,8 @@ jobs: - name: ๐Ÿ”จ Compile binary for supported platforms run: | - mkdir -p ./dist/ - task build-and-compress + task build + task compress - name: ๐Ÿงช Run tests run: bun run test diff --git a/taskfile.yaml b/taskfile.yaml index 5381ba0..bfd41f8 100644 --- a/taskfile.yaml +++ b/taskfile.yaml @@ -68,7 +68,3 @@ tasks: cmd: | echo "Compressing {{.ITEM}} binary..." tar -czvf ./dist/$PROJECT-{{.ITEM}}.tar.gz -C ./dist/ $PROJECT-{{.ITEM}} - - build-and-compress: - desc: "Build and compress binaries for all platforms" - deps: [build, compress] From 945f530f9c8684a73ef143b71dd6bd1b51a44717 Mon Sep 17 00:00:00 2001 From: Javier Carrillo Date: Wed, 4 Sep 2024 15:22:15 -0400 Subject: [PATCH 14/15] chore: (RI-4198) Fix generate env file function --- src/parser.ts | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/src/parser.ts b/src/parser.ts index f06b5c3..348272b 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -19,13 +19,15 @@ export function mergeDataFromManifests(manifests: yamlDoc[]) { export function generateEnvFile(envObject: EnvVarObject, filePath: string) { if (fs.existsSync(filePath)) { - let existingContent = ''; - existingContent = fs.readFileSync(filePath, 'utf8'); - - for (const line of existingContent.split('\n')) { - if (line.trim() && !line.startsWith('#')) { - const [key, value] = line.split('='); - envObject[key.trim()] = value.trim().replace(/^['"]|['"]$/g, ''); + const existingContent = fs.readFileSync(filePath, 'utf8').split('\n'); + + for (const line of existingContent) { + if (line.length !== 0 && !line.startsWith('#')) { + const [key, value] = line.split(/=(.+)/s); + if (!envObject.hasOwnProperty(key)) { + // Save value to object and remove quotes from value + envObject[key.trim()] = value.trim().replace(/^['"]|['"]$/g, ''); + } } } } From 4d4351fbaec5389f9d39736b8ec93279c2493100 Mon Sep 17 00:00:00 2001 From: Javier Carrillo Date: Wed, 4 Sep 2024 15:40:09 -0400 Subject: [PATCH 15/15] style: (RI-4198) Apply lint suggestions --- src/parser.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/parser.ts b/src/parser.ts index 348272b..297ee2d 100644 --- a/src/parser.ts +++ b/src/parser.ts @@ -24,7 +24,7 @@ export function generateEnvFile(envObject: EnvVarObject, filePath: string) { for (const line of existingContent) { if (line.length !== 0 && !line.startsWith('#')) { const [key, value] = line.split(/=(.+)/s); - if (!envObject.hasOwnProperty(key)) { + if (!(Object.hasOwn(envObject, key))) { // Save value to object and remove quotes from value envObject[key.trim()] = value.trim().replace(/^['"]|['"]$/g, ''); }