From a243c841b9e41984255e19ae7b847b8ae00612e4 Mon Sep 17 00:00:00 2001 From: Simo Kinnunen Date: Wed, 13 May 2026 14:02:55 +0900 Subject: [PATCH 01/13] ci: run test and check-ai-context workflows on next/* branches Allow PRs targeting release branches (like next/v8) to trigger CI. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/check-ai-context.yml | 1 + .github/workflows/test.yml | 1 + 2 files changed, 2 insertions(+) diff --git a/.github/workflows/check-ai-context.yml b/.github/workflows/check-ai-context.yml index d54e73557..da3ee8e36 100644 --- a/.github/workflows/check-ai-context.yml +++ b/.github/workflows/check-ai-context.yml @@ -4,6 +4,7 @@ on: pull_request: branches: - main + - next/* paths: - "packages/cli/**" diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 083041bff..54d69aca1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -4,6 +4,7 @@ on: pull_request: branches: - main + - next/* jobs: lint: From 63877e3cca94c28a50fe6f5bbbb6c645b23b0534 Mon Sep 17 00:00:00 2001 From: Simo Kinnunen Date: Wed, 13 May 2026 19:42:06 +0900 Subject: [PATCH 02/13] feat!: switch CLI to ESM and bump minimum Node.js to 20.19.0 (#1296) --- package-lock.json | 20475 ---------------- package.json | 4 +- packages/cli/bin/run | 6 +- .../fixtures/check-parse-error/package.json | 4 + packages/cli/e2e/config/default.js | 5 +- packages/cli/e2e/config/test.js | 2 +- packages/cli/package.json | 31 +- packages/cli/src/auth/index.ts | 7 +- .../__tests__/account-members.spec.ts | 2 +- .../__tests__/auth-command-init.spec.ts | 6 +- .../__tests__/command-metadata.spec.ts | 70 +- .../__tests__/confirm-flow-deploy.spec.ts | 10 +- .../__tests__/confirm-flow-destroy.spec.ts | 8 +- .../__tests__/confirm-flow-env-rm.spec.ts | 8 +- .../__tests__/confirm-or-abort.spec.ts | 6 +- .../cli/src/commands/__tests__/init.spec.ts | 18 +- packages/cli/src/commands/account/members.ts | 12 +- packages/cli/src/commands/account/plan.ts | 12 +- packages/cli/src/commands/authCommand.ts | 12 +- packages/cli/src/commands/baseCommand.ts | 12 +- packages/cli/src/commands/checks/get.ts | 20 +- packages/cli/src/commands/checks/list.ts | 14 +- packages/cli/src/commands/checks/stats.ts | 20 +- packages/cli/src/commands/debug/parse-file.ts | 6 +- .../commands/debug/parse-playwright-config.ts | 6 +- .../cli/src/commands/debug/parse-project.ts | 14 +- packages/cli/src/commands/deploy.ts | 26 +- packages/cli/src/commands/destroy.ts | 12 +- packages/cli/src/commands/env/add.ts | 4 +- packages/cli/src/commands/env/ls.ts | 6 +- packages/cli/src/commands/env/pull.ts | 6 +- packages/cli/src/commands/env/rm.ts | 6 +- packages/cli/src/commands/env/update.ts | 4 +- packages/cli/src/commands/help.ts | 4 +- packages/cli/src/commands/import/apply.ts | 16 +- packages/cli/src/commands/import/cancel.ts | 12 +- packages/cli/src/commands/import/commit.ts | 14 +- packages/cli/src/commands/import/plan.ts | 47 +- .../incidents/__tests__/confirm-flow.spec.ts | 16 +- .../__tests__/notify-subscribers.spec.ts | 12 +- packages/cli/src/commands/incidents/create.ts | 12 +- packages/cli/src/commands/incidents/list.ts | 12 +- .../cli/src/commands/incidents/resolve.ts | 12 +- packages/cli/src/commands/incidents/update.ts | 12 +- packages/cli/src/commands/init.ts | 8 +- packages/cli/src/commands/login.ts | 10 +- packages/cli/src/commands/logout.ts | 6 +- packages/cli/src/commands/pw-test.ts | 46 +- packages/cli/src/commands/rca/get.ts | 8 +- packages/cli/src/commands/rca/run.ts | 8 +- packages/cli/src/commands/rules.ts | 5 +- packages/cli/src/commands/runtimes.ts | 4 +- .../commands/skills/__tests__/install.spec.ts | 4 +- packages/cli/src/commands/skills/index.ts | 9 +- packages/cli/src/commands/skills/install.ts | 9 +- packages/cli/src/commands/status-pages/get.ts | 10 +- .../cli/src/commands/status-pages/list.ts | 10 +- packages/cli/src/commands/switch.ts | 8 +- packages/cli/src/commands/sync-playwright.ts | 12 +- packages/cli/src/commands/test.ts | 42 +- packages/cli/src/commands/trigger.ts | 26 +- packages/cli/src/commands/validate.ts | 16 +- packages/cli/src/commands/whoami.ts | 4 +- packages/cli/src/config.ts | 4 +- .../__tests__/agentic-check-codegen.spec.ts | 6 +- .../__tests__/agentic-check.spec.ts | 4 +- .../__tests__/alert-channel.spec.ts | 4 +- .../constructs/__tests__/api-check.spec.ts | 4 +- .../__tests__/browser-check.spec.ts | 4 +- .../constructs/__tests__/check-group.spec.ts | 6 +- .../constructs/__tests__/dashboard.spec.ts | 6 +- .../constructs/__tests__/dns-monitor.spec.ts | 6 +- .../test-shared-bundling/checkly.config.ts | 11 + .../test-shared-bundling/package.json | 17 + .../test-shared-bundling/playwright.check.ts | 18 + .../test-shared-bundling/pnpm-lock.yaml | 61 + .../projects/a/playwright.config.ts | 81 + .../projects/a/tests-2/example1.spec.ts | 18 + .../projects/a/tests-2/example2.spec.ts | 18 + .../projects/a/tests-3/example1.spec.ts | 18 + .../projects/a/tests-3/example2.spec.ts | 18 + .../projects/a/tests/example.spec.ts | 18 + .../projects/b/playwright.config.ts | 79 + .../projects/b/tests/example.spec.ts | 18 + .../__tests__/frequency-codegen.spec.ts | 6 +- .../constructs/__tests__/icmp-monitor.spec.ts | 6 +- .../__tests__/multi-step-check.spec.ts | 8 +- .../__tests__/playwright-check.spec.ts | 4 +- .../__tests__/private-location.spec.ts | 4 +- .../src/constructs/__tests__/project.spec.ts | 6 +- .../__tests__/status-page-service.spec.ts | 4 +- .../constructs/__tests__/tcp-monitor.spec.ts | 6 +- .../src/constructs/agentic-check-codegen.ts | 6 +- packages/cli/src/constructs/agentic-check.ts | 12 +- .../src/constructs/alert-channel-codegen.ts | 20 +- .../alert-channel-subscription-codegen.ts | 2 +- .../constructs/alert-channel-subscription.ts | 6 +- packages/cli/src/constructs/alert-channel.ts | 8 +- .../alert-escalation-policy-codegen.ts | 4 +- .../src/constructs/api-assertion-codegen.ts | 6 +- packages/cli/src/constructs/api-assertion.ts | 2 +- .../cli/src/constructs/api-check-bundle.ts | 6 +- .../cli/src/constructs/api-check-codegen.ts | 10 +- packages/cli/src/constructs/api-check.ts | 24 +- .../cli/src/constructs/api-request-codegen.ts | 10 +- packages/cli/src/constructs/api-request.ts | 10 +- .../src/constructs/browser-check-bundle.ts | 8 +- .../src/constructs/browser-check-codegen.ts | 8 +- packages/cli/src/constructs/browser-check.ts | 22 +- packages/cli/src/constructs/check-codegen.ts | 38 +- .../cli/src/constructs/check-group-codegen.ts | 22 +- .../cli/src/constructs/check-group-ref.ts | 12 +- packages/cli/src/constructs/check-group-v1.ts | 46 +- packages/cli/src/constructs/check-group-v2.ts | 14 +- packages/cli/src/constructs/check-group.ts | 8 +- packages/cli/src/constructs/check.ts | 38 +- .../cli/src/constructs/construct-codegen.ts | 26 +- .../src/constructs/construct-diagnostics.ts | 4 +- packages/cli/src/constructs/construct.ts | 12 +- .../cli/src/constructs/dashboard-bundle.ts | 4 +- .../cli/src/constructs/dashboard-codegen.ts | 4 +- packages/cli/src/constructs/dashboard.ts | 12 +- .../src/constructs/dns-assertion-codegen.ts | 6 +- packages/cli/src/constructs/dns-assertion.ts | 2 +- .../cli/src/constructs/dns-monitor-codegen.ts | 10 +- packages/cli/src/constructs/dns-monitor.ts | 12 +- .../cli/src/constructs/dns-request-codegen.ts | 8 +- packages/cli/src/constructs/dns-request.ts | 2 +- .../constructs/email-alert-channel-codegen.ts | 6 +- .../cli/src/constructs/email-alert-channel.ts | 4 +- .../src/constructs/environment-variable.ts | 2 +- .../cli/src/constructs/frequency-codegen.ts | 4 +- .../constructs/heartbeat-monitor-codegen.ts | 8 +- .../cli/src/constructs/heartbeat-monitor.ts | 6 +- packages/cli/src/constructs/http-header.ts | 2 +- .../src/constructs/icmp-assertion-codegen.ts | 6 +- packages/cli/src/constructs/icmp-assertion.ts | 2 +- .../src/constructs/icmp-monitor-codegen.ts | 10 +- packages/cli/src/constructs/icmp-monitor.ts | 8 +- .../src/constructs/icmp-request-codegen.ts | 8 +- packages/cli/src/constructs/icmp-request.ts | 4 +- packages/cli/src/constructs/incident.ts | 2 +- .../incidentio-alert-channel-codegen.ts | 12 +- .../constructs/incidentio-alert-channel.ts | 4 +- packages/cli/src/constructs/index.ts | 102 +- .../constructs/internal/assertion-codegen.ts | 4 +- .../constructs/internal/codegen/codegen.ts | 4 +- .../constructs/internal/codegen/context.ts | 8 +- .../src/constructs/internal/codegen/index.ts | 8 +- .../constructs/internal/codegen/snippet.ts | 2 +- .../constructs/internal/common-diagnostics.ts | 6 +- .../cli/src/constructs/internal/sanitize.ts | 36 + .../src/constructs/key-value-pair-codegen.ts | 6 +- .../constructs/maintenance-window-codegen.ts | 4 +- .../cli/src/constructs/maintenance-window.ts | 4 +- .../cli/src/constructs/monitor-codegen.ts | 2 +- packages/cli/src/constructs/monitor.ts | 26 +- .../msteams-alert-channel-codegen.ts | 10 +- .../src/constructs/msteams-alert-channel.ts | 4 +- .../src/constructs/multi-step-check-bundle.ts | 6 +- .../constructs/multi-step-check-codegen.ts | 8 +- .../cli/src/constructs/multi-step-check.ts | 22 +- .../opsgenie-alert-channel-codegen.ts | 6 +- .../src/constructs/opsgenie-alert-channel.ts | 4 +- .../pagerduty-alert-channel-codegen.ts | 6 +- .../src/constructs/pagerduty-alert-channel.ts | 4 +- .../phone-call-alert-channel-codegen.ts | 6 +- .../constructs/phone-call-alert-channel.ts | 4 +- .../src/constructs/playwright-check-bundle.ts | 8 +- .../cli/src/constructs/playwright-check.ts | 22 +- .../constructs/playwright-config-codegen.ts | 4 +- ...ivate-location-check-assignment-codegen.ts | 2 +- .../private-location-check-assignment.ts | 6 +- .../constructs/private-location-codegen.ts | 4 +- ...ivate-location-group-assignment-codegen.ts | 2 +- .../private-location-group-assignment.ts | 6 +- .../cli/src/constructs/private-location.ts | 10 +- packages/cli/src/constructs/project-bundle.ts | 4 +- packages/cli/src/constructs/project.ts | 34 +- packages/cli/src/constructs/query-param.ts | 2 +- packages/cli/src/constructs/ref-codegen.ts | 4 +- .../src/constructs/retry-strategy-codegen.ts | 4 +- .../constructs/slack-alert-channel-codegen.ts | 6 +- .../cli/src/constructs/slack-alert-channel.ts | 4 +- .../constructs/sms-alert-channel-codegen.ts | 6 +- .../cli/src/constructs/sms-alert-channel.ts | 4 +- .../cli/src/constructs/status-page-codegen.ts | 8 +- .../constructs/status-page-service-codegen.ts | 4 +- .../cli/src/constructs/status-page-service.ts | 8 +- packages/cli/src/constructs/status-page.ts | 8 +- .../cli/src/constructs/tcp-monitor-codegen.ts | 10 +- packages/cli/src/constructs/tcp-monitor.ts | 12 +- .../telegram-alert-channel-codegen.ts | 10 +- .../src/constructs/telegram-alert-channel.ts | 4 +- .../src/constructs/url-assertion-codegen.ts | 6 +- packages/cli/src/constructs/url-assertion.ts | 2 +- .../cli/src/constructs/url-monitor-codegen.ts | 10 +- packages/cli/src/constructs/url-monitor.ts | 10 +- .../cli/src/constructs/url-request-codegen.ts | 8 +- packages/cli/src/constructs/url-request.ts | 4 +- .../webhook-alert-channel-codegen.ts | 20 +- .../src/constructs/webhook-alert-channel.ts | 10 +- .../__fixtures__/account-plan-fixtures.ts | 2 +- .../__fixtures__/incident-fixtures.ts | 2 +- .../__fixtures__/status-page-fixtures.ts | 2 +- .../__tests__/account-members.spec.ts | 6 +- .../formatters/__tests__/account-plan.spec.ts | 6 +- .../formatters/__tests__/analytics.spec.ts | 6 +- .../__tests__/check-result-detail.spec.ts | 6 +- .../src/formatters/__tests__/checks.spec.ts | 6 +- .../formatters/__tests__/incidents.spec.ts | 6 +- .../cli/src/formatters/__tests__/rca.spec.ts | 6 +- .../src/formatters/__tests__/render.spec.ts | 2 +- .../formatters/__tests__/status-pages.spec.ts | 6 +- .../cli/src/formatters/account-members.ts | 4 +- packages/cli/src/formatters/account-plan.ts | 4 +- packages/cli/src/formatters/analytics.ts | 6 +- packages/cli/src/formatters/batch-stats.ts | 12 +- .../cli/src/formatters/check-result-detail.ts | 4 +- packages/cli/src/formatters/checks.ts | 12 +- packages/cli/src/formatters/incidents.ts | 4 +- packages/cli/src/formatters/rca.ts | 4 +- packages/cli/src/formatters/status-pages.ts | 4 +- packages/cli/src/help/help-extension.ts | 4 +- .../src/helpers/__tests__/cli-mode.spec.ts | 2 +- .../helpers/__tests__/command-preview.spec.ts | 4 +- .../__tests__/recast-acorn-parser.spec.ts | 4 +- .../src/helpers/__tests__/test-helper.spec.ts | 2 +- packages/cli/src/helpers/command-style.ts | 4 +- packages/cli/src/helpers/incidents.ts | 4 +- .../onboarding/__tests__/boilerplate.spec.ts | 4 +- .../onboarding/__tests__/clipboard.spec.ts | 2 +- .../__tests__/detect-project.spec.ts | 4 +- .../onboarding/__tests__/messages.spec.ts | 2 +- .../__tests__/prompt-display.spec.ts | 4 +- .../__tests__/skill-install.spec.ts | 6 +- .../__tests__/template-prompt.spec.ts | 2 +- .../cli/src/helpers/onboarding/boilerplate.ts | 9 +- .../src/helpers/onboarding/detect-project.ts | 6 +- packages/cli/src/helpers/onboarding/index.ts | 14 +- .../cli/src/helpers/onboarding/messages.ts | 2 +- .../src/helpers/onboarding/prompt-display.ts | 4 +- .../src/helpers/onboarding/skill-install.ts | 6 +- .../src/helpers/onboarding/template-prompt.ts | 5 +- packages/cli/src/helpers/test-helper.ts | 10 +- packages/cli/src/index.ts | 6 +- packages/cli/src/loader/index.ts | 12 +- packages/cli/src/loader/jiti.ts | 9 +- packages/cli/src/loader/loader.ts | 2 +- packages/cli/src/loader/mixed.ts | 2 +- packages/cli/src/loader/native.ts | 8 +- packages/cli/src/loader/ts-node.ts | 9 +- .../playwright/playwright-config-loader.ts | 2 +- .../playwright/playwright-config-template.ts | 4 +- .../__tests__/__snapshots__/util.spec.ts.snap | 5 - .../__tests__/github-md-builder.spec.ts | 4 +- .../cli/src/reporters/__tests__/helpers.ts | 8 +- .../reporters/__tests__/json-builder.spec.ts | 4 +- .../cli/src/reporters/__tests__/util.spec.ts | 35 +- packages/cli/src/reporters/abstract-list.ts | 12 +- packages/cli/src/reporters/ci.ts | 10 +- packages/cli/src/reporters/dot.ts | 6 +- packages/cli/src/reporters/github.ts | 8 +- packages/cli/src/reporters/json.ts | 6 +- packages/cli/src/reporters/list.ts | 10 +- packages/cli/src/reporters/reporter.ts | 14 +- packages/cli/src/reporters/util.ts | 6 +- packages/cli/src/rest/__tests__/api.spec.ts | 2 +- packages/cli/src/rest/analytics.ts | 2 +- packages/cli/src/rest/api.ts | 54 +- .../cli/src/rest/environment-variables.ts | 2 +- packages/cli/src/rest/projects.ts | 8 +- packages/cli/src/rest/rca.ts | 2 +- packages/cli/src/rest/runtimes.ts | 2 +- packages/cli/src/rest/test-sessions.ts | 10 +- packages/cli/src/runtimes/index.ts | 4 +- packages/cli/src/runtimes/snapshot.ts | 5 +- .../__tests__/checkly-config-loader.spec.ts | 4 +- .../cli/src/services/__tests__/config.spec.ts | 2 +- .../__tests__/fixtures/configs/good-config.js | 2 +- .../fixtures/configs/no-logical-id-config.js | 2 +- .../__tests__/playwright-config.spec.ts | 4 +- .../services/__tests__/project-parser.spec.ts | 4 +- .../cli/src/services/__tests__/shell.spec.ts | 2 +- .../services/__tests__/test-filters.spec.ts | 2 +- .../cli/src/services/__tests__/util.spec.ts | 4 +- .../cli/src/services/abstract-check-runner.ts | 10 +- .../check-parser/__tests__/cache-hash.spec.ts | 2 +- .../src/entrypoint.ts | 2 +- .../typescript-example/dep2.ts | 2 +- .../typescript-example/dep5.ts | 2 +- .../typescript-example/entrypoint.ts | 12 +- .../__tests__/check-parser.spec.ts | 10 +- .../__tests__/parse-files.spec.ts | 6 +- .../cli/src/services/check-parser/bundler.ts | 8 +- .../src/services/check-parser/cache-hash.ts | 2 +- .../src/services/check-parser/collector.ts | 2 +- .../cli/src/services/check-parser/errors.ts | 2 +- .../src/services/check-parser/faux-package.ts | 4 +- .../__tests__/json-text-source-file.spec.ts | 4 +- .../__tests__/package-json-file.spec.ts | 2 +- .../package-files/__tests__/paths.spec.ts | 2 +- .../package-files/__tests__/workspace.spec.ts | 2 +- .../package-files/jsconfig-json-file.ts | 4 +- .../package-files/json-source-file.ts | 2 +- .../json-text-source-file-parser.ts | 4 +- .../package-files/json-text-source-file.ts | 6 +- .../check-parser/package-files/lookup.ts | 4 +- .../package-files/package-json-file.ts | 6 +- .../package-files/package-manager.ts | 16 +- .../check-parser/package-files/resolver.ts | 22 +- .../package-files/source-file-parser.ts | 2 +- .../package-files/tsconfig-json-file.ts | 6 +- .../check-parser/package-files/workspace.ts | 4 +- .../cli/src/services/check-parser/parser.ts | 21 +- .../playwright-config-expander.ts | 4 +- .../src/services/checkly-config-codegen.ts | 20 +- .../cli/src/services/checkly-config-loader.ts | 18 +- packages/cli/src/services/project-parser.ts | 20 +- packages/cli/src/services/snapshot-service.ts | 4 +- packages/cli/src/services/socket-client.ts | 2 +- packages/cli/src/services/test-runner.ts | 16 +- packages/cli/src/services/trigger-runner.ts | 8 +- packages/cli/src/services/util.ts | 15 +- .../cli/src/sourcegen/__tests__/case.spec.ts | 2 +- packages/cli/src/sourcegen/args.ts | 4 +- packages/cli/src/sourcegen/argsbuilder.ts | 22 +- packages/cli/src/sourcegen/array.ts | 4 +- packages/cli/src/sourcegen/arraybuilder.ts | 20 +- packages/cli/src/sourcegen/boolean.ts | 4 +- packages/cli/src/sourcegen/comment.ts | 4 +- packages/cli/src/sourcegen/decl.ts | 8 +- packages/cli/src/sourcegen/declbuilder.ts | 8 +- packages/cli/src/sourcegen/expr.ts | 6 +- packages/cli/src/sourcegen/exprbuilder.ts | 6 +- packages/cli/src/sourcegen/identifier.ts | 6 +- packages/cli/src/sourcegen/index.ts | 44 +- packages/cli/src/sourcegen/null.ts | 4 +- packages/cli/src/sourcegen/number.ts | 4 +- packages/cli/src/sourcegen/object.ts | 6 +- packages/cli/src/sourcegen/objectbuilder.ts | 20 +- packages/cli/src/sourcegen/program.ts | 8 +- packages/cli/src/sourcegen/string.ts | 4 +- packages/cli/src/sourcegen/undefined.ts | 4 +- packages/cli/src/sourcegen/unknown.ts | 16 +- packages/cli/src/sourcegen/value.ts | 2 +- packages/cli/src/testing/fixture-sandbox.ts | 8 +- packages/cli/tsconfig.json | 3 +- packages/create-cli/bin/run | 9 +- .../e2e/__tests__/bootstrap.spec.ts | 6 +- packages/create-cli/e2e/run-create-cli.ts | 8 +- packages/create-cli/package.json | 15 +- packages/create-cli/src/actions/creates.ts | 4 +- .../create-cli/src/actions/dependencies.ts | 12 +- packages/create-cli/src/actions/git.ts | 6 +- packages/create-cli/src/actions/playwright.ts | 10 +- packages/create-cli/src/actions/template.ts | 2 +- packages/create-cli/src/commands/bootstrap.ts | 8 +- packages/create-cli/src/loader/index.ts | 12 +- packages/create-cli/src/loader/jiti.ts | 8 +- packages/create-cli/src/loader/loader.ts | 2 +- packages/create-cli/src/loader/mixed.ts | 2 +- packages/create-cli/src/loader/native.ts | 4 +- packages/create-cli/src/loader/ts-node.ts | 8 +- .../src/utils/__tests__/directory.spec.ts | 2 +- .../src/utils/__tests__/prompts.spec.ts | 4 +- packages/create-cli/src/utils/directory.ts | 2 +- packages/create-cli/src/utils/fileloader.ts | 2 +- packages/create-cli/src/utils/fullname.ts | 4 +- packages/create-cli/src/utils/installation.ts | 14 +- packages/create-cli/src/utils/messages.ts | 2 +- .../src/utils/playwright-config-template.ts | 2 +- packages/create-cli/src/utils/prompts.ts | 2 +- packages/create-cli/tsconfig.json | 4 +- 374 files changed, 1979 insertions(+), 22004 deletions(-) delete mode 100644 package-lock.json create mode 100644 packages/cli/e2e/__tests__/fixtures/check-parse-error/package.json create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/checkly.config.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/package.json create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/playwright.check.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/playwright.config.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests-2/example1.spec.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests-2/example2.spec.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests-3/example1.spec.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests-3/example2.spec.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests/example.spec.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/b/playwright.config.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/b/tests/example.spec.ts create mode 100644 packages/cli/src/constructs/internal/sanitize.ts diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index 7aba60d3d..000000000 --- a/package-lock.json +++ /dev/null @@ -1,20475 +0,0 @@ -{ - "name": "@checkly/cli-monorepo", - "version": "0.0.1", - "lockfileVersion": 2, - "requires": true, - "packages": { - "": { - "name": "@checkly/cli-monorepo", - "version": "0.0.1", - "workspaces": [ - "packages/*" - ], - "devDependencies": { - "@commitlint/cli": "^20.5.3", - "@commitlint/config-conventional": "^20.5.3", - "@eslint/js": "^10.0.1", - "@stylistic/eslint-plugin": "^5.10.0", - "eslint": "^10.0.1", - "globals": "^17.6.0", - "lint-staged": "^15.5.2", - "rimraf": "5.0.10", - "simple-git-hooks": "^2.13.1", - "typescript-eslint": "^8.59.2" - } - }, - "node_modules/@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/@aws-crypto/crc32": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", - "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-crypto/crc32c": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", - "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/sha1-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", - "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha1-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha256-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", - "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-js": "^5.2.0", - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha256-browser/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/sha256-js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", - "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/@aws-crypto/supports-web-crypto": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", - "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/util": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", - "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-crypto/util/node_modules/@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/util/node_modules/@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-crypto/util/node_modules/@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@aws-sdk/client-cloudfront": { - "version": "3.1009.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.1009.0.tgz", - "integrity": "sha512-KRac+gkuj3u49IyWkrudHRlP/q/faTto+1xRS7Aj6cDGewMIzgdQArrdZEJoVntbaVZHLM5s/NVmWORzBWNcSw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.20", - "@aws-sdk/credential-provider-node": "^3.972.21", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.8", - "@aws-sdk/middleware-user-agent": "^3.972.21", - "@aws-sdk/region-config-resolver": "^3.972.8", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.7", - "@smithy/config-resolver": "^4.4.11", - "@smithy/core": "^3.23.11", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.25", - "@smithy/middleware-retry": "^4.4.42", - "@smithy/middleware-serde": "^4.2.14", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.4.16", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.5", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.41", - "@smithy/util-defaults-mode-node": "^4.2.44", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", - "@smithy/util-stream": "^4.5.19", - "@smithy/util-utf8": "^4.2.2", - "@smithy/util-waiter": "^4.2.13", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/client-s3": { - "version": "3.1014.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1014.0.tgz", - "integrity": "sha512-0XLrOT4Cm3NEhhiME7l/8LbTXS4KdsbR4dSrY207KNKTcHLLTZ9EXt4ZpgnTfLvWQF3pGP2us4Zi1fYLo0N+Ow==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha1-browser": "5.2.0", - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.23", - "@aws-sdk/credential-provider-node": "^3.972.24", - "@aws-sdk/middleware-bucket-endpoint": "^3.972.8", - "@aws-sdk/middleware-expect-continue": "^3.972.8", - "@aws-sdk/middleware-flexible-checksums": "^3.974.3", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-location-constraint": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.8", - "@aws-sdk/middleware-sdk-s3": "^3.972.23", - "@aws-sdk/middleware-ssec": "^3.972.8", - "@aws-sdk/middleware-user-agent": "^3.972.24", - "@aws-sdk/region-config-resolver": "^3.972.9", - "@aws-sdk/signature-v4-multi-region": "^3.996.11", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.10", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.12", - "@smithy/eventstream-serde-browser": "^4.2.12", - "@smithy/eventstream-serde-config-resolver": "^4.3.12", - "@smithy/eventstream-serde-node": "^4.2.12", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-blob-browser": "^4.2.13", - "@smithy/hash-node": "^4.2.12", - "@smithy/hash-stream-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/md5-js": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-retry": "^4.4.44", - "@smithy/middleware-serde": "^4.2.15", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.0", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.43", - "@smithy/util-defaults-mode-node": "^4.2.47", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", - "@smithy/util-stream": "^4.5.20", - "@smithy/util-utf8": "^4.2.2", - "@smithy/util-waiter": "^4.2.13", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/core": { - "version": "3.974.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.8.tgz", - "integrity": "sha512-njR2qoG6ZuB0kvAS2FyICsFZJ6gmCcf2X/7JcD14sUvGDm26wiZ5BrA6LOiUxKFEF+IVe7kdroxyE00YlkiYsw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/xml-builder": "^3.972.22", - "@smithy/core": "^3.23.17", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/signature-v4": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-retry": "^4.3.6", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/crc64-nvme": { - "version": "3.972.7", - "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.7.tgz", - "integrity": "sha512-QUagVVBbC8gODCF6e1aV0mE2TXWB9Opz4k8EJFdNrujUVQm5R4AjJa1mpOqzwOuROBzqJU9zawzig7M96L8Ejg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-env": { - "version": "3.972.34", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.34.tgz", - "integrity": "sha512-XT0jtf8Fw9JE6ppsQeoNnZRiG+jqRixMT1v1ZR17G60UvVdsQmTG8nbEyHuEPfMxDXEhfdARaM/XiEhca4lGHQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-http": { - "version": "3.972.36", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.36.tgz", - "integrity": "sha512-DPoGWfy7J7RKxvbf5kOKIGQkD2ek3dbKgzKIGrnLuvZBz5myU+Im/H6pmc14QcnFbqHMqxvtWSgRDSJW3qXLQg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/types": "^3.973.8", - "@smithy/fetch-http-handler": "^5.3.17", - "@smithy/node-http-handler": "^4.6.1", - "@smithy/property-provider": "^4.2.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "@smithy/util-stream": "^4.5.25", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.38.tgz", - "integrity": "sha512-oDzUBu2MGJFgoar05sPMCwSrhw44ASyccrHzj66vO69OZqi7I6hZZxXfuPLC8OCzW7C+sU+bI73XHij41yekgQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/credential-provider-env": "^3.972.34", - "@aws-sdk/credential-provider-http": "^3.972.36", - "@aws-sdk/credential-provider-login": "^3.972.38", - "@aws-sdk/credential-provider-process": "^3.972.34", - "@aws-sdk/credential-provider-sso": "^3.972.38", - "@aws-sdk/credential-provider-web-identity": "^3.972.38", - "@aws-sdk/nested-clients": "^3.997.6", - "@aws-sdk/types": "^3.973.8", - "@smithy/credential-provider-imds": "^4.2.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-login": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.38.tgz", - "integrity": "sha512-g1NosS8qe4OF++G2UFCM5ovSkgipC7YYor5KCWatG0UoMSO5YFj9C8muePlyVmOBV/WTI16Jo3/s1NUo/o1Bww==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/nested-clients": "^3.997.6", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-node": { - "version": "3.972.39", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.39.tgz", - "integrity": "sha512-HEswDQyxUtadoZ/bJsPPENHg7R0Lzym5LuMksJeHvqhCOpP+rtkDLKI4/ZChH4w3cf5kG8n6bZuI8PzajoiqMg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "^3.972.34", - "@aws-sdk/credential-provider-http": "^3.972.36", - "@aws-sdk/credential-provider-ini": "^3.972.38", - "@aws-sdk/credential-provider-process": "^3.972.34", - "@aws-sdk/credential-provider-sso": "^3.972.38", - "@aws-sdk/credential-provider-web-identity": "^3.972.38", - "@aws-sdk/types": "^3.973.8", - "@smithy/credential-provider-imds": "^4.2.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-process": { - "version": "3.972.34", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.34.tgz", - "integrity": "sha512-T3IFs4EVmVi1dVN5RciFnklCANSzvrQd/VuHY9ThHSQmYkTogjcGkoJEr+oNUPQZnso52183088NqysMPji1/Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.38.tgz", - "integrity": "sha512-5ZxG+t0+3Q3QPh8KEjX6syskhgNf7I0MN7oGioTf6Lm1NTjfP7sIcYGNsthXC2qR8vcD3edNZwCr2ovfSSWuRA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/nested-clients": "^3.997.6", - "@aws-sdk/token-providers": "3.1041.0", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.38.tgz", - "integrity": "sha512-lYHFF30DGI20jZcYX8cm6Ns0V7f1dDN6g/MBDLTyD/5iw+bXs3yBr2iAiHDkx4RFU5JgsnZvCHYKiRVPRdmOgw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/nested-clients": "^3.997.6", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.10.tgz", - "integrity": "sha512-Vbc2frZH7wXlMNd+ZZSXUEs/l1Sv8Jj4zUnIfwrYF5lwaLdXHZ9xx4U3rjUcaye3HRhFVc+E5DbBxpRAbB16BA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-arn-parser": "^3.972.3", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-config-provider": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.10.tgz", - "integrity": "sha512-2Yn0f1Qiq/DjxYR3wfI3LokXnjOhFM7Ssn4LTdFDIxRMCE6I32MAsVnhPX1cUZsuVA9tiZtwwhlSLAtFGxAZlQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.974.16", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.16.tgz", - "integrity": "sha512-6ru8doI0/XzszqLIPXf0E/V7HhAw1Pu94010XCKYtBUfD0LxF0BuOzrUf8OQGR6j2o6wgKTHUniOmndQycHwCA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@aws-crypto/crc32c": "5.2.0", - "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/crc64-nvme": "^3.972.7", - "@aws-sdk/types": "^3.973.8", - "@smithy/is-array-buffer": "^4.2.2", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-stream": "^4.5.25", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-host-header": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.10.tgz", - "integrity": "sha512-IJSsIMeVQ8MMCPbuh1AbltkFhLBLXn7aejzfX5YKT/VLDHn++Dcz8886tXckE+wQssyPUhaXrJhdakO2VilRhg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.10.tgz", - "integrity": "sha512-rI3NZvJcEvjoD0+0PI0iUAwlPw2IlSlhyvgBK/3WkKJQE/YiKFedd9dMN2lVacdNxPNhxL/jzQaKQdrGtQagjQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-logger": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.10.tgz", - "integrity": "sha512-OOuGvvz1Dm20SjZo5oEBePFqxt5nf8AwkNDSyUHvD9/bfNASmstcYxFAHUowy4n6Io7mWUZ04JURZwSBvyQanQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.972.11", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.11.tgz", - "integrity": "sha512-+zz6f79Kj9V5qFK2P+D8Ehjnw4AhphAlCAsPjUqEcInA9umtSSKMrHbSagEeOIsDNuvVrH98bjRHcyQukTrhaQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.972.37", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.37.tgz", - "integrity": "sha512-Km7M+i8DrLArVzrid1gfxeGhYHBd3uxvE77g0s5a52zPSVosxzQBnJ0gwWb6NIp/DOk8gsBMhi7V+cpJG0ndTA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-arn-parser": "^3.972.3", - "@smithy/core": "^3.23.17", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/signature-v4": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "@smithy/util-config-provider": "^4.2.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-stream": "^4.5.25", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-ssec": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.10.tgz", - "integrity": "sha512-Gli9A0u8EVVb+5bFDGS/QbSVg28w/wpEidg1ggVcSj65BDTdGR6punsOcVjqdiu1i42WHWo51MCvARPIIz9juw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.38.tgz", - "integrity": "sha512-iz+B29TXcAZsJpwB+AwG/TTGA5l/VnmMZ2UxtiySOZjI6gCdmviXPwdgzcmuazMy16rXoPY4mYCGe7zdNKfx5A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-endpoints": "^3.996.8", - "@smithy/core": "^3.23.17", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-retry": "^4.3.6", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/nested-clients": { - "version": "3.997.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.6.tgz", - "integrity": "sha512-WBDnqatJl+kGObpfmfSxqnXeYTu3Me8wx8WCtvoxX3pfWrrTv8I4WTMSSs7PZqcRcVh8WeUKMgGFjMG+52SR1w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/middleware-host-header": "^3.972.10", - "@aws-sdk/middleware-logger": "^3.972.10", - "@aws-sdk/middleware-recursion-detection": "^3.972.11", - "@aws-sdk/middleware-user-agent": "^3.972.38", - "@aws-sdk/region-config-resolver": "^3.972.13", - "@aws-sdk/signature-v4-multi-region": "^3.996.25", - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-endpoints": "^3.996.8", - "@aws-sdk/util-user-agent-browser": "^3.972.10", - "@aws-sdk/util-user-agent-node": "^3.973.24", - "@smithy/config-resolver": "^4.4.17", - "@smithy/core": "^3.23.17", - "@smithy/fetch-http-handler": "^5.3.17", - "@smithy/hash-node": "^4.2.14", - "@smithy/invalid-dependency": "^4.2.14", - "@smithy/middleware-content-length": "^4.2.14", - "@smithy/middleware-endpoint": "^4.4.32", - "@smithy/middleware-retry": "^4.5.7", - "@smithy/middleware-serde": "^4.2.20", - "@smithy/middleware-stack": "^4.2.14", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/node-http-handler": "^4.6.1", - "@smithy/protocol-http": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.49", - "@smithy/util-defaults-mode-node": "^4.2.54", - "@smithy/util-endpoints": "^3.4.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-retry": "^4.3.6", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/region-config-resolver": { - "version": "3.972.13", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.13.tgz", - "integrity": "sha512-CvJ2ZIjK/jVD/lbOpowBVElJyC1YxLTIJ13yM0AEo0t2v7swOzGjSA6lJGH+DwZXQhcjUjoYwc8bVYCX5MDr1A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/config-resolver": "^4.4.17", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.996.25", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.25.tgz", - "integrity": "sha512-+CMIt3e1VzlklAECmG+DtP1sV8iKq25FuA0OKpnJ4KA0kxUtd7CgClY7/RU6VzJBQwbN4EJ9Ue6plvqx1qGadw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-sdk-s3": "^3.972.37", - "@aws-sdk/types": "^3.973.8", - "@smithy/protocol-http": "^5.3.14", - "@smithy/signature-v4": "^5.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/token-providers": { - "version": "3.1041.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1041.0.tgz", - "integrity": "sha512-Th7kPI6YPtvJUcdznooXJMy+9rQWjmEF81LxaJssngBzuysK4a/x+l8kjm1zb7nYsUPbndnBdUnwng/3PLvtGw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/nested-clients": "^3.997.6", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/types": { - "version": "3.973.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz", - "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/util-arn-parser": { - "version": "3.972.3", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.3.tgz", - "integrity": "sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/util-endpoints": { - "version": "3.996.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.8.tgz", - "integrity": "sha512-oOZHcRDihk5iEe5V25NVWg45b3qEA8OpHWVdU/XQh8Zj4heVPAJqWvMphQnU7LkufmUo10EpvFPZuQMiFLJK3g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-endpoints": "^3.4.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/util-locate-window": { - "version": "3.965.5", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", - "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.10.tgz", - "integrity": "sha512-FAzqXvfEssGdSIz8ejatan0bOdx1qefBWKF/gWmVBXIP1HkS7v/wjjaqrAGGKvyihrXTXW00/2/1nTJtxpXz7g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - } - }, - "node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.973.24", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.24.tgz", - "integrity": "sha512-ZWwlkjcIp7cEL8ZfTpTAPNkwx25p7xol0xlKoWVVf22+nsjwmLcHYtTPjIV1cSpmB/b6DaK4cb1fSkvCXHgRdw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-user-agent": "^3.972.38", - "@aws-sdk/types": "^3.973.8", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-config-provider": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, - "node_modules/@aws-sdk/xml-builder": { - "version": "3.972.22", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.22.tgz", - "integrity": "sha512-PMYKKtJd70IsSG0yHrdAbxBr+ZWBKLvzFZfD3/urxgf6hXVMzuU5M+3MJ5G67RpOmLBu1fAUN65SbWuKUCOlAA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@nodable/entities": "2.1.0", - "@smithy/types": "^4.14.1", - "fast-xml-parser": "5.7.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@aws/lambda-invoke-store": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", - "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==", - "license": "MIT", - "engines": { - "node": ">=6.9.0" - } - }, - "node_modules/@commitlint/cli": { - "version": "20.5.3", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-20.5.3.tgz", - "integrity": "sha512-OJdL0EXWD5y9LPa0nr/geOwzaS8BsdaybKkcloB0JgsguGxNv2R+hC2FTPqrAcprg35zF33KOQerY0x8W1aesA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/format": "^20.5.0", - "@commitlint/lint": "^20.5.3", - "@commitlint/load": "^20.5.3", - "@commitlint/read": "^20.5.0", - "@commitlint/types": "^20.5.0", - "tinyexec": "^1.0.0", - "yargs": "^17.0.0" - }, - "bin": { - "commitlint": "cli.js" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/config-conventional": { - "version": "20.5.3", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-20.5.3.tgz", - "integrity": "sha512-j34Qqeaa152chJgz2ysyk0BCpHenJn1lV0Rx0VXf8k3ccQcED+48EZrzMvo9jLmJUyBrrBwvu89I+2er4gW7QQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/types": "^20.5.0", - "conventional-changelog-conventionalcommits": "^9.2.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/config-validator": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-20.5.0.tgz", - "integrity": "sha512-T/Uh6iJUzyx7j35GmHWdIiGRQB+ouZDk0pwAaYq4SXgB54KZhFdJ0vYmxiW6AMYICTIWuyMxDBl1jK74oFp/Gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/types": "^20.5.0", - "ajv": "^8.11.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/ensure": { - "version": "20.5.3", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-20.5.3.tgz", - "integrity": "sha512-4i4AgNvH62owG9MwSiWKrle7HGNpBHHdLnWFIp5fTsHUYe5kRuh15t08L/0pdbbrRk8JKXQxxN4hZQcn+szkrw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/types": "^20.5.0", - "es-toolkit": "^1.46.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/execute-rule": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-20.0.0.tgz", - "integrity": "sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/format": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-20.5.0.tgz", - "integrity": "sha512-TI9EwFU/qZWSK7a5qyXMpKPPv3qta7FO4tKW+Wt2al7sgMbLWTsAcDpX1cU8k16TRdsiiet9aOw0zpvRXNJu7Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/types": "^20.5.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/is-ignored": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-20.5.0.tgz", - "integrity": "sha512-JWLarAsurHJhPozbuAH6GbP4p/hdOCoqS9zJMfqwswne+/GPs5V0+rrsfOkP68Y8PSLphwtFXV0EzJ+GTXTTGg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/types": "^20.5.0", - "semver": "^7.6.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/lint": { - "version": "20.5.3", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-20.5.3.tgz", - "integrity": "sha512-M7JbWBNr2gXKaPc4i/KipsuW1gkDHpj35KPjWtKy3Z+2AQw5wu1gBi1LIO0uoaij67CqY4K8PxPZSGens4evCw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/is-ignored": "^20.5.0", - "@commitlint/parse": "^20.5.0", - "@commitlint/rules": "^20.5.3", - "@commitlint/types": "^20.5.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/load": { - "version": "20.5.3", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-20.5.3.tgz", - "integrity": "sha512-1FDZWuKyu98Myb8i7Tp31jPU2rZpOwAdYRyJcy2KoGg7Xk2A+bgHN8smhMaaNSNkmE8fwt53BokywZq8Gv/5XQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/config-validator": "^20.5.0", - "@commitlint/execute-rule": "^20.0.0", - "@commitlint/resolve-extends": "^20.5.3", - "@commitlint/types": "^20.5.0", - "cosmiconfig": "^9.0.1", - "cosmiconfig-typescript-loader": "^6.1.0", - "es-toolkit": "^1.46.0", - "is-plain-obj": "^4.1.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/message": { - "version": "20.4.3", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-20.4.3.tgz", - "integrity": "sha512-6akwCYrzcrFcTYz9GyUaWlhisY4lmQ3KvrnabmhoeAV8nRH4dXJAh4+EUQ3uArtxxKQkvxJS78hNX2EU3USgxQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/parse": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-20.5.0.tgz", - "integrity": "sha512-SeKWHBMk7YOTnnEWUhx+d1a9vHsjjuo6Uo1xRfPNfeY4bdYFasCH1dDpAv13Lyn+dDPOels+jP6D2GRZqzc5fA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/types": "^20.5.0", - "conventional-changelog-angular": "^8.2.0", - "conventional-commits-parser": "^6.3.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/read": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-20.5.0.tgz", - "integrity": "sha512-JDEIJ2+GnWpK8QqwfmW7O42h0aycJEWNqcdkJnyzLD11nf9dW2dWLTVEa8Wtlo4IZFGLPATjR5neA5QlOvIH1w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/top-level": "^20.4.3", - "@commitlint/types": "^20.5.0", - "git-raw-commits": "^5.0.0", - "minimist": "^1.2.8", - "tinyexec": "^1.0.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/resolve-extends": { - "version": "20.5.3", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-20.5.3.tgz", - "integrity": "sha512-+ogW9v/u9JqpvAgTrLra/YTFo0KkjU6iNblF89pPsj4NebNc+DAWctsludwezI8YnsjBmfHpApSwcXprN/f/ew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/config-validator": "^20.5.0", - "@commitlint/types": "^20.5.0", - "es-toolkit": "^1.46.0", - "global-directory": "^5.0.0", - "import-meta-resolve": "^4.0.0", - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/rules": { - "version": "20.5.3", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-20.5.3.tgz", - "integrity": "sha512-MPlMnb9D3wbszYMp+1hPtuhtPJndRo6I6yfkZVA4+jR8w7Kqp0u2u/Y+gzbaItx5Lltq5rw7FSZQWJMoXUC4NQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@commitlint/ensure": "^20.5.3", - "@commitlint/message": "^20.4.3", - "@commitlint/to-lines": "^20.0.0", - "@commitlint/types": "^20.5.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/to-lines": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-20.0.0.tgz", - "integrity": "sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/top-level": { - "version": "20.4.3", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-20.4.3.tgz", - "integrity": "sha512-qD9xfP6dFg5jQ3NMrOhG0/w5y3bBUsVGyJvXxdWEwBm8hyx4WOk3kKXw28T5czBYvyeCVJgJJ6aoJZUWDpaacQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "escalade": "^3.2.0" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@commitlint/types": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.5.0.tgz", - "integrity": "sha512-ZJoS8oSq2CAZEpc/YI9SulLrdiIyXeHb/OGqGrkUP6Q7YV+0ouNAa7GjqRdXeQPncHQIDz/jbCTlHScvYvO/gA==", - "dev": true, - "license": "MIT", - "dependencies": { - "conventional-commits-parser": "^6.3.0", - "picocolors": "^1.1.1" - }, - "engines": { - "node": ">=v18" - } - }, - "node_modules/@conventional-changelog/git-client": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-2.7.0.tgz", - "integrity": "sha512-j7A8/LBEQ+3rugMzPXoKYzyUPpw/0CBQCyvtTR7Lmu4olG4yRC/Tfkq79Mr3yuPs0SUitlO2HwGP3gitMJnRFw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@simple-libs/child-process-utils": "^1.0.0", - "@simple-libs/stream-utils": "^1.2.0", - "semver": "^7.5.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "conventional-commits-filter": "^5.0.0", - "conventional-commits-parser": "^6.4.0" - }, - "peerDependenciesMeta": { - "conventional-commits-filter": { - "optional": true - }, - "conventional-commits-parser": { - "optional": true - } - } - }, - "node_modules/@cspotcode/source-map-support": { - "version": "0.8.1", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/trace-mapping": "0.3.9" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@epic-web/invariant": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", - "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@esbuild/aix-ppc64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", - "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "aix" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", - "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", - "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/android-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", - "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", - "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/darwin-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", - "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", - "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/freebsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", - "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", - "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", - "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ia32": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", - "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-loong64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", - "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-mips64el": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", - "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", - "cpu": [ - "mips64el" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-ppc64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", - "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-riscv64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", - "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-s390x": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", - "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/linux-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", - "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", - "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/netbsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", - "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "netbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", - "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openbsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", - "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/openharmony-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", - "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/sunos-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", - "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "sunos" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", - "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-ia32": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", - "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@esbuild/win32-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", - "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=18" - } - }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", - "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "eslint-visitor-keys": "^3.4.3" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - }, - "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" - } - }, - "node_modules/@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" - } - }, - "node_modules/@eslint/config-array": { - "version": "0.23.5", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", - "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/object-schema": "^3.0.5", - "debug": "^4.3.1", - "minimatch": "^10.2.4" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - } - }, - "node_modules/@eslint/config-array/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@eslint/config-array/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@eslint/config-array/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@eslint/config-helpers": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.5.tgz", - "integrity": "sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^1.2.1" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - } - }, - "node_modules/@eslint/core": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", - "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@types/json-schema": "^7.0.15" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - } - }, - "node_modules/@eslint/js": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", - "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "eslint": "^10.0.0" - }, - "peerDependenciesMeta": { - "eslint": { - "optional": true - } - } - }, - "node_modules/@eslint/object-schema": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", - "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - } - }, - "node_modules/@eslint/plugin-kit": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.1.tgz", - "integrity": "sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@eslint/core": "^1.2.1", - "levn": "^0.4.1" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - } - }, - "node_modules/@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" - }, - "engines": { - "node": ">=18.18.0" - } - }, - "node_modules/@humanfs/node/node_modules/@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@humanwhocodes/retry": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", - "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=18.18" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" - } - }, - "node_modules/@inquirer/ansi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", - "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/checkbox": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", - "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/checkbox/node_modules/@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/checkbox/node_modules/@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/checkbox/node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@inquirer/checkbox/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==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@inquirer/checkbox/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@inquirer/confirm": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.2.0.tgz", - "integrity": "sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/core": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", - "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", - "@types/mute-stream": "^0.0.4", - "@types/node": "^22.5.5", - "@types/wrap-ansi": "^3.0.0", - "ansi-escapes": "^4.3.2", - "cli-width": "^4.1.0", - "mute-stream": "^1.0.0", - "signal-exit": "^4.1.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/core/node_modules/@inquirer/type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", - "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", - "dev": true, - "license": "MIT", - "dependencies": { - "mute-stream": "^1.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/core/node_modules/@types/node": { - "version": "22.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", - "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@inquirer/core/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==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@inquirer/core/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@inquirer/editor": { - "version": "4.2.23", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", - "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/external-editor": "^1.0.3", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/editor/node_modules/@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/editor/node_modules/@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/editor/node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@inquirer/editor/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==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@inquirer/editor/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@inquirer/expand": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", - "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/expand/node_modules/@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/expand/node_modules/@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/expand/node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@inquirer/expand/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==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@inquirer/expand/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@inquirer/external-editor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", - "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", - "dev": true, - "license": "MIT", - "dependencies": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/figures": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", - "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/input": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-2.3.0.tgz", - "integrity": "sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/number": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", - "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/number/node_modules/@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/number/node_modules/@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/number/node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@inquirer/number/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==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@inquirer/number/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@inquirer/password": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", - "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/password/node_modules/@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/password/node_modules/@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/password/node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@inquirer/password/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==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@inquirer/password/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@inquirer/prompts": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", - "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/checkbox": "^4.3.2", - "@inquirer/confirm": "^5.1.21", - "@inquirer/editor": "^4.2.23", - "@inquirer/expand": "^4.0.23", - "@inquirer/input": "^4.3.1", - "@inquirer/number": "^3.0.23", - "@inquirer/password": "^4.0.23", - "@inquirer/rawlist": "^4.1.11", - "@inquirer/search": "^3.2.2", - "@inquirer/select": "^4.4.2" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/prompts/node_modules/@inquirer/confirm": { - "version": "5.1.21", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", - "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/prompts/node_modules/@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/prompts/node_modules/@inquirer/input": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", - "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/prompts/node_modules/@inquirer/select": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", - "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/prompts/node_modules/@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/prompts/node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@inquirer/prompts/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==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@inquirer/prompts/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@inquirer/rawlist": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", - "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/rawlist/node_modules/@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/rawlist/node_modules/@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/rawlist/node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@inquirer/rawlist/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==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@inquirer/rawlist/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@inquirer/search": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", - "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/search/node_modules/@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/search/node_modules/@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "@types/node": ">=18" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - } - } - }, - "node_modules/@inquirer/search/node_modules/mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^18.17.0 || >=20.5.0" - } - }, - "node_modules/@inquirer/search/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==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@inquirer/search/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/@inquirer/select": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-2.5.0.tgz", - "integrity": "sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/core": "^9.1.0", - "@inquirer/figures": "^1.0.5", - "@inquirer/type": "^1.5.3", - "ansi-escapes": "^4.3.2", - "yoctocolors-cjs": "^2.1.2" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@inquirer/type": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz", - "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", - "dev": true, - "license": "MIT", - "dependencies": { - "mute-stream": "^1.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "license": "ISC", - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/ansi-styles": { - "version": "6.2.1", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/emoji-regex": { - "version": "9.2.2", - "license": "MIT" - }, - "node_modules/@isaacs/cliui/node_modules/string-width": { - "version": "5.1.2", - "license": "MIT", - "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/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/@isaacs/cliui/node_modules/wrap-ansi": { - "version": "8.1.0", - "license": "MIT", - "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/@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "dev": true, - "license": "ISC", - "dependencies": { - "minipass": "^7.0.4" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true, - "license": "MIT" - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.9", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "node_modules/@nodable/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/nodable" - } - ], - "license": "MIT" - }, - "node_modules/@oclif/core": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@oclif/core/-/core-4.11.1.tgz", - "integrity": "sha512-+N5yqeoOKPnT0p+ZJiNutMILsZukZrEpsVup24XERla594EkGSWS9tiCqRfvzr1xfvf/AhM9pb0yPaf8L3Y9Uw==", - "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.3.2", - "ansis": "^3.17.0", - "clean-stack": "^3.0.1", - "cli-spinners": "^2.9.2", - "debug": "^4.4.3", - "ejs": "^3.1.10", - "get-package-type": "^0.1.0", - "indent-string": "^4.0.0", - "is-wsl": "^2.2.0", - "lilconfig": "^3.1.3", - "minimatch": "^10.2.5", - "semver": "^7.7.3", - "string-width": "^4.2.3", - "supports-color": "^8", - "tinyglobby": "^0.2.14", - "widest-line": "^3.1.0", - "wordwrap": "^1.0.0", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@oclif/core/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@oclif/core/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@oclif/core/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@oclif/core/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/@oclif/plugin-help": { - "version": "6.2.46", - "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-6.2.46.tgz", - "integrity": "sha512-KmuMFt/fURCVxor0rrRjEqs2nLN0Y3ixcixo/M5VjKcN920gbuw5T+AF23FBeyUDuW/Dg79YPcTWy/Rtz0Dg/A==", - "license": "MIT", - "dependencies": { - "@oclif/core": "^4" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@oclif/plugin-not-found": { - "version": "3.2.82", - "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-3.2.82.tgz", - "integrity": "sha512-6heNFE2gadcDYijWy4XJc6ZLzPd1qKe0i8sb8uyrR3mX0o5IFA+5KSAx/BFBkGS8j/tKOsCYvvmMKVdReeb1Gg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@inquirer/prompts": "^7.10.1", - "@oclif/core": "^4.11.0", - "ansis": "^3.17.0", - "fast-levenshtein": "^3.0.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@oclif/plugin-not-found/node_modules/fast-levenshtein": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", - "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "fastest-levenshtein": "^1.0.7" - } - }, - "node_modules/@oclif/plugin-warn-if-update-available": { - "version": "3.1.62", - "resolved": "https://registry.npmjs.org/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-3.1.62.tgz", - "integrity": "sha512-g1tOOf9tJ3RE4dqhUynw3TH8Gea78IkzG9hq2lcUJ5wIdOSzcp8+3SWVzzpKfHgwBGgFupmj8peCjypybJVIrg==", - "license": "MIT", - "dependencies": { - "@oclif/core": "^4", - "ansis": "^3.17.0", - "debug": "^4.4.3", - "http-call": "^5.2.2", - "lodash": "^4.18.1", - "registry-auth-token": "^5.1.1" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "license": "MIT", - "optional": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/@playwright/test": { - "version": "1.59.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.59.1.tgz", - "integrity": "sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright": "1.59.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "dependencies": { - "graceful-fs": "4.2.10" - }, - "engines": { - "node": ">=12.22.0" - } - }, - "node_modules/@pnpm/npm-conf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-3.0.2.tgz", - "integrity": "sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==", - "license": "MIT", - "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/@rollup/rollup-android-arm-eabi": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.3.tgz", - "integrity": "sha512-x35CNW/ANXG3hE/EZpRU8MXX1JDN86hBb2wMGAtltkz7pc6cxgjpy1OMMfDosOQ+2hWqIkag/fGok1Yady9nGw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.3.tgz", - "integrity": "sha512-xw3xtkDApIOGayehp2+Rz4zimfkaX65r4t47iy+ymQB2G4iJCBBfj0ogVg5jpvjpn8UWn/+q9tprxleYeNp3Hw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.3.tgz", - "integrity": "sha512-vo6Y5Qfpx7/5EaamIwi0WqW2+zfiusVihKatLvtN1VFVy3D13uERk/6gZLU1UiHRL6fDXqj/ELIeVRGnvcTE1g==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.3.tgz", - "integrity": "sha512-D+0QGcZhBzTN82weOnsSlY7V7+RMmPuF1CkbxyMAGE8+ZHeUjyb76ZiWmBlCu//AQQONvxcqRbwZTajZKqjuOw==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.3.tgz", - "integrity": "sha512-6HnvHCT7fDyj6R0Ph7A6x8dQS/S38MClRWeDLqc0MdfWkxjiu1HSDYrdPhqSILzjTIC/pnXbbJbo+ft+gy/9hQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.3.tgz", - "integrity": "sha512-KHLgC3WKlUYW3ShFKnnosZDOJ0xjg9zp7au3sIm2bs/tGBeC2ipmvRh/N7JKi0t9Ue20C0dpEshi8WUubg+cnA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "freebsd" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.3.tgz", - "integrity": "sha512-DV6fJoxEYWJOvaZIsok7KrYl0tPvga5OZ2yvKHNNYyk/2roMLqQAbGhr78EQ5YhHpnhLKJD3S1WFusAkmUuV5g==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.3.tgz", - "integrity": "sha512-mQKoJAzvuOs6F+TZybQO4GOTSMUu7v0WdxEk24krQ/uUxXoPTtHjuaUuPmFhtBcM4K0ons8nrE3JyhTuCFtT/w==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.3.tgz", - "integrity": "sha512-Whjj2qoiJ6+OOJMGptTYazaJvjOJm+iKHpXQM1P3LzGjt7Ff++Tp7nH4N8J/BUA7R9IHfDyx4DJIflifwnbmIA==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.3.tgz", - "integrity": "sha512-4YTNHKqGng5+yiZt3mg77nmyuCfmNfX4fPmyUapBcIk+BdwSwmCWGXOUxhXbBEkFHtoN5boLj/5NON+u5QC9tg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.3.tgz", - "integrity": "sha512-SU3kNlhkpI4UqlUc2VXPGK9o886ZsSeGfMAX2ba2b8DKmMXq4AL7KUrkSWVbb7koVqx41Yczx6dx5PNargIrEA==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.3.tgz", - "integrity": "sha512-6lDLl5h4TXpB1mTf2rQWnAk/LcXrx9vBfu/DT5TIPhvMhRWaZ5MxkIc8u4lJAmBo6klTe1ywXIUHFjylW505sg==", - "cpu": [ - "loong64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.3.tgz", - "integrity": "sha512-BMo8bOw8evlup/8G+cj5xWtPyp93xPdyoSN16Zy90Q2QZ0ZYRhCt6ZJSwbrRzG9HApFabjwj2p25TUPDWrhzqQ==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.3.tgz", - "integrity": "sha512-E0L8X1dZN1/Rph+5VPF6Xj2G7JJvMACVXtamTJIDrVI44Y3K+G8gQaMEAavbqCGTa16InptiVrX6eM6pmJ+7qA==", - "cpu": [ - "ppc64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.3.tgz", - "integrity": "sha512-oZJ/WHaVfHUiRAtmTAeo3DcevNsVvH8mbvodjZy7D5QKvCefO371SiKRpxoDcCxB3PTRTLayWBkvmDQKTcX/sw==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.3.tgz", - "integrity": "sha512-Dhbyh7j9FybM3YaTgaHmVALwA8AkUwTPccyCQ79TG9AJUsMQqgN1DDEZNr4+QUfwiWvLDumW5vdwzoeUF+TNxQ==", - "cpu": [ - "riscv64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.3.tgz", - "integrity": "sha512-cJd1X5XhHHlltkaypz1UcWLA8AcoIi1aWhsvaWDskD1oz2eKCypnqvTQ8ykMNI0RSmm7NkTdSqSSD7zM0xa6Ig==", - "cpu": [ - "s390x" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.3.tgz", - "integrity": "sha512-DAZDBHQfG2oQuhY7mc6I3/qB4LU2fQCjRvxbDwd/Jdvb9fypP4IJ4qmtu6lNjes6B531AI8cg1aKC2di97bUxA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.3.tgz", - "integrity": "sha512-cRxsE8c13mZOh3vP+wLDxpQBRrOHDIGOWyDL93Sy0Ga8y515fBcC2pjUfFwUe5T7tqvTvWbCpg1URM/AXdWIXA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.3.tgz", - "integrity": "sha512-QaWcIgRxqEdQdhJqW4DJctsH6HCmo5vHxY0krHSX4jMtOqfzC+dqDGuHM87bu4H8JBeibWx7jFz+h6/4C8wA5Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openbsd" - ] - }, - "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.3.tgz", - "integrity": "sha512-AaXwSvUi3QIPtroAUw1t5yHGIyqKEXwH54WUocFolZhpGDruJcs8c+xPNDRn4XiQsS7MEwnYsHW2l0MBLDMkWg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "openharmony" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.3.tgz", - "integrity": "sha512-65LAKM/bAWDqKNEelHlcHvm2V+Vfb8C6INFxQXRHCvaVN1rJfwr4NvdP4FyzUaLqWfaCGaadf6UbTm8xJeYfEg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.3.tgz", - "integrity": "sha512-EEM2gyhBF5MFnI6vMKdX1LAosE627RGBzIoGMdLloPZkXrUN0Ckqgr2Qi8+J3zip/8NVVro3/FjB+tjhZUgUHA==", - "cpu": [ - "ia32" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.3.tgz", - "integrity": "sha512-E5Eb5H/DpxaoXH++Qkv28RcUJboMopmdDUALBczvHMf7hNIxaDZqwY5lK12UK1BHacSmvupoEWGu+n993Z0y1A==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.3.tgz", - "integrity": "sha512-hPt/bgL5cE+Qp+/TPHBqptcAgPzgj46mPcg/16zNUmbQk0j+mOEQV/+Lqu8QRtDV3Ek95Q6FeFITpuhl6OTsAA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MIT", - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@sec-ant/readable-stream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==", - "license": "MIT" - }, - "node_modules/@simple-libs/child-process-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@simple-libs/child-process-utils/-/child-process-utils-1.0.2.tgz", - "integrity": "sha512-/4R8QKnd/8agJynkNdJmNw2MBxuFTRcNFnE5Sg/G+jkSsV8/UBgULMzhizWWW42p8L5H7flImV2ATi79Ove2Tw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@simple-libs/stream-utils": "^1.2.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://ko-fi.com/dangreen" - } - }, - "node_modules/@simple-libs/stream-utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@simple-libs/stream-utils/-/stream-utils-1.2.0.tgz", - "integrity": "sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://ko-fi.com/dangreen" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/@smithy/chunked-blob-reader": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.2.tgz", - "integrity": "sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/chunked-blob-reader-native": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.3.tgz", - "integrity": "sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-base64": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/config-resolver": { - "version": "4.4.17", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.17.tgz", - "integrity": "sha512-TzDZcAnhTyAHbXVxWZo7/tEcrIeFq20IBk8So3OLOetWpR8EwY/yEqBMBFaJMeyEiREDq4NfEl+qO3OAUD+vbQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-config-provider": "^4.2.2", - "@smithy/util-endpoints": "^3.4.2", - "@smithy/util-middleware": "^4.2.14", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/core": { - "version": "3.23.17", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.17.tgz", - "integrity": "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-stream": "^4.5.25", - "@smithy/util-utf8": "^4.2.2", - "@smithy/uuid": "^1.1.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/credential-provider-imds": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.14.tgz", - "integrity": "sha512-Au28zBN48ZAoXdooGUHemuVBrkE+Ie6RPmGNIAJsFqj33Vhb6xAgRifUydZ2aY+M+KaMAETAlKk5NC5h1G7wpg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-codec": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.14.tgz", - "integrity": "sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.14.1", - "@smithy/util-hex-encoding": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-browser": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.14.tgz", - "integrity": "sha512-8IelTCtTctWRbb+0Dcy+C0aICh1qa0qWXqgjcXDmMuCvPJRnv26hiDZoAau2ILOniki65mCPKqOQs/BaWvO4CQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "4.3.14", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.14.tgz", - "integrity": "sha512-sqHiHpYRYo3FJlaIxD1J8PhbcmJAm7IuM16mVnwSkCToD7g00IBZzKuiLNMGmftULmEUX6/UAz8/NN5uMP8bVA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-node": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.14.tgz", - "integrity": "sha512-Ht/8BuGlKfFTy0H3+8eEu0vdpwGztCnaLLXtpXNdQqiR7Hj4vFScU3T436vRAjATglOIPjJXronY+1WxxNLSiw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-serde-universal": "^4.2.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/eventstream-serde-universal": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.14.tgz", - "integrity": "sha512-lWyt4T2XQZUZgK3tQ3Wn0w3XBvZsK/vjTuJl6bXbnGZBHH0ZUSONTYiK9TgjTTzU54xQr3DRFwpjmhp0oLm3gg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-codec": "^4.2.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/fetch-http-handler": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.17.tgz", - "integrity": "sha512-bXOvQzaSm6MnmLaWA1elgfQcAtN4UP3vXqV97bHuoOrHQOJiLT3ds6o9eo5bqd0TJfRFpzdGnDQdW3FACiAVdw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.14", - "@smithy/querystring-builder": "^4.2.14", - "@smithy/types": "^4.14.1", - "@smithy/util-base64": "^4.3.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/hash-blob-browser": { - "version": "4.2.15", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.15.tgz", - "integrity": "sha512-0PJ4Al3fg2nM4qKrAIxyNcApgqHAXcBkN8FeizOz69z0rb26uZ6lMESYtxegaTlXB5Hj84JfwMPavMrwDMjucA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/chunked-blob-reader": "^5.2.2", - "@smithy/chunked-blob-reader-native": "^4.2.3", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/hash-node": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.14.tgz", - "integrity": "sha512-8ZBDY2DD4wr+GGjTpPtiglEsqr0lUP+KHqgZcWczFf6qeZ/YRjMIOoQWVQlmwu7EtxKTd8YXD8lblmYcpBIA1g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/hash-stream-node": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.14.tgz", - "integrity": "sha512-tw4GANWkZPb6+BdD4Fgucqzey2+r73Z/GRo9zklsCdwrnxxumUV83ZIaBDdudV4Ylazw3EPTiJZhpX42105ruQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/invalid-dependency": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.14.tgz", - "integrity": "sha512-c21qJiTSb25xvvOp+H2TNZzPCngrvl5vIPqPB8zQ/DmJF4QWXO19x1dWfMJZ6wZuuWUPPm0gV8C0cU3+ifcWuw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/is-array-buffer": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", - "integrity": "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/md5-js": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.14.tgz", - "integrity": "sha512-V2v0vx+h0iUSNG1Alt+GNBMSLGCrl9iVsdd+Ap67HPM9PN479x12V8LkuMoKImNZxn3MXeuyUjls+/7ZACZghA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-content-length": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.14.tgz", - "integrity": "sha512-xhHq7fX4/3lv5NHxLUk3OeEvl0xZ+Ek3qIbWaCL4f9JwgDZEclPBElljaZCAItdGPQl/kSM4LPMOpy1MYgprpw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-endpoint": { - "version": "4.4.32", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.32.tgz", - "integrity": "sha512-ZZkgyjnJppiZbIm6Qbx92pbXYi1uzenIvGhBSCDlc7NwuAkiqSgS75j1czAD25ZLs2FjMjYy1q7gyRVWG6JA0Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.23.17", - "@smithy/middleware-serde": "^4.2.20", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-middleware": "^4.2.14", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-retry": { - "version": "4.5.7", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.5.7.tgz", - "integrity": "sha512-bRt6ZImqVSeTk39Nm81K20ObIiAZ3WefY7G6+iz/0tZjs4dgRRjvRX2sgsH+zi6iDCRR/aQvQofLKxxz4rPBZg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.23.17", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/service-error-classification": "^4.3.1", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-retry": "^4.3.6", - "@smithy/uuid": "^1.1.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-serde": { - "version": "4.2.20", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.20.tgz", - "integrity": "sha512-Lx9JMO9vArPtiChE3wbEZ5akMIDQpWQtlu90lhACQmNOXcGXRbaDywMHDzuDZ2OkZzP+9wQfZi3YJT9F67zTQQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.23.17", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/middleware-stack": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.14.tgz", - "integrity": "sha512-2dvkUKLuFdKsCRmOE4Mn63co0Djtsm+JMh0bYZQupN1pJwMeE8FmQmRLLzzEMN0dnNi7CDCYYH8F0EVwWiPBeA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/node-config-provider": { - "version": "4.3.14", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.14.tgz", - "integrity": "sha512-S+gFjyo/weSVL0P1b9Ts8C/CwIfNCgUPikk3sl6QVsfE/uUuO+QsF+NsE/JkpvWqqyz1wg7HFdiaZuj5CoBMRg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/node-http-handler": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.6.1.tgz", - "integrity": "sha512-iB+orM4x3xrr57X3YaXazfKnntl0LHlZB1kcXSGzMV1Tt0+YwEjGlbjk/44qEGtBzXAz6yFDzkYTKSV6Pj2HUg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^5.3.14", - "@smithy/querystring-builder": "^4.2.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/property-provider": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.14.tgz", - "integrity": "sha512-WuM31CgfsnQ/10i7NYr0PyxqknD72Y5uMfUMVSniPjbEPceiTErb4eIqJQ+pdxNEAUEWrewrGjIRjVbVHsxZiQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/protocol-http": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.14.tgz", - "integrity": "sha512-dN5F8kHx8RNU0r+pCwNmFZyz6ChjMkzShy/zup6MtkRmmix4vZzJdW+di7x//b1LiynIev88FM18ie+wwPcQtQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/querystring-builder": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.14.tgz", - "integrity": "sha512-XYA5Z0IqTeF+5XDdh4BBmSA0HvbgVZIyv4cmOoUheDNR57K1HgBp9ukUMx3Cr3XpDHHpLBnexPE3LAtDsZkj2A==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "@smithy/util-uri-escape": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/querystring-parser": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.14.tgz", - "integrity": "sha512-hr+YyqBD23GVvRxGGrcc/oOeNlK3PzT5Fu4dzrDXxzS1LpFiuL2PQQqKPs87M79aW7ziMs+nvB3qdw77SqE7Lw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/service-error-classification": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.3.1.tgz", - "integrity": "sha512-aUQuDGh760ts/8MU+APjIZhlLPKhIIfqyzZaJikLEIMrdxFvxuLYD0WxWzaYWpmLbQlXDe9p7EWM3HsBe0K6Gw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/shared-ini-file-loader": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.9.tgz", - "integrity": "sha512-495/V2I15SHgedSJoDPD23JuSfKAp726ZI1V0wtjB07Wh7q/0tri/0e0DLefZCHgxZonrGKt/OCTpAtP1wE1kQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/signature-v4": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.14.tgz", - "integrity": "sha512-1D9Y/nmlVjCeSivCbhZ7hgEpmHyY1h0GvpSZt3l0xcD9JjmjVC1CHOozS6+Gh+/ldMH8JuJ6cujObQqfayAVFA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^4.2.2", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-hex-encoding": "^4.2.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-uri-escape": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/smithy-client": { - "version": "4.12.13", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.13.tgz", - "integrity": "sha512-y/Pcj1V9+qG98gyu1gvftHB7rDpdh+7kIBIggs55yGm3JdtBV8GT8IFF3a1qxZ79QnaJHX9GXzvBG6tAd+czJA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/core": "^3.23.17", - "@smithy/middleware-endpoint": "^4.4.32", - "@smithy/middleware-stack": "^4.2.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-stream": "^4.5.25", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/types": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", - "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/url-parser": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.14.tgz", - "integrity": "sha512-p06BiBigJ8bTA3MgnOfCtDUWnAMY0YfedO/GRpmc7p+wg3KW8vbXy1xwSu5ASy0wV7rRYtlfZOIKH4XqfhjSQQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/querystring-parser": "^4.2.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-base64": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", - "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-body-length-browser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz", - "integrity": "sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-body-length-node": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz", - "integrity": "sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-buffer-from": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", - "integrity": "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-config-provider": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz", - "integrity": "sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-browser": { - "version": "4.3.49", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.49.tgz", - "integrity": "sha512-a5bNrdiONYB/qE2BuKegvUMd/+ZDwdg4vsNuuSzYE8qs2EYAdK9CynL+Rzn29PbPiUqoz/cbpRbcLzD5lEevHw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/property-provider": "^4.2.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-defaults-mode-node": { - "version": "4.2.54", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.54.tgz", - "integrity": "sha512-g1cvrJvOnzeJgEdf7AE4luI7gp6L8weE0y9a9wQUSGtjb8QRHDbCJYuE4Sy0SD9N8RrnNPFsPltAz/OSoBR9Zw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/config-resolver": "^4.4.17", - "@smithy/credential-provider-imds": "^4.2.14", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-endpoints": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.4.2.tgz", - "integrity": "sha512-a55Tr+3OKld4TTtnT+RhKOQHyPxm3j/xL4OR83WBUhLJaKDS9dnJ7arRMOp3t31dcLhApwG9bgvrRXBHlLdIkg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^4.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-hex-encoding": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", - "integrity": "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-middleware": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.14.tgz", - "integrity": "sha512-1Su2vj9RYNDEv/V+2E+jXkkwGsgR7dc4sfHn9Z7ruzQHJIEni9zzw5CauvRXlFJfmgcqYP8fWa0dkh2Q2YaQyw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-retry": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.3.8.tgz", - "integrity": "sha512-LUIxbTBi+OpvXpg91poGA6BdyoleMDLnfXjVDqyi2RvZmTveY5loE/FgYUBCR5LU2BThW2SoZRh8dTIIy38IPw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/service-error-classification": "^4.3.1", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-stream": { - "version": "4.5.25", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.25.tgz", - "integrity": "sha512-/PFpG4k8Ze8Ei+mMKj3oiPICYekthuzePZMgZbCqMiXIHHf4n2aZ4Ps0aSRShycFTGuj/J6XldmC0x0DwednIA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/fetch-http-handler": "^5.3.17", - "@smithy/node-http-handler": "^4.6.1", - "@smithy/types": "^4.14.1", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-hex-encoding": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-uri-escape": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", - "integrity": "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-utf8": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", - "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^4.2.2", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/util-waiter": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.3.0.tgz", - "integrity": "sha512-JyjYmLAfS+pdxF92o4yLgEoy0zhayKTw73FU1aofLWwLcJw7iSqIY2exGmMTrl/lmZugP5p/zxdFSippJDfKWA==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@smithy/uuid": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.2.tgz", - "integrity": "sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@stylistic/eslint-plugin": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.10.0.tgz", - "integrity": "sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/types": "^8.56.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "estraverse": "^5.3.0", - "picomatch": "^4.0.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "peerDependencies": { - "eslint": "^9.0.0 || ^10.0.0" - } - }, - "node_modules/@stylistic/eslint-plugin/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/@stylistic/eslint-plugin/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "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, - "license": "MIT", - "dependencies": { - "defer-to-connect": "^2.0.1" - }, - "engines": { - "node": ">=14.16" - } - }, - "node_modules/@tsconfig/node10": { - "version": "1.0.9", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node12": { - "version": "1.0.11", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node14": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@tsconfig/node16": { - "version": "1.0.3", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/archiver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-7.0.0.tgz", - "integrity": "sha512-/3vwGwx9n+mCQdYZ2IKGGHEFL30I96UgBlk8EtRDDFQ9uxM1l4O5Ci6r00EMAkiDaTqD9DQ6nVrWRICnBPtzzg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/readdir-glob": "*" - } - }, - "node_modules/@types/chai": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", - "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/deep-eql": "*", - "assertion-error": "^2.0.1" - } - }, - "node_modules/@types/config": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@types/config/-/config-3.3.5.tgz", - "integrity": "sha512-itq2HtXQBrNUKwMNZnb9mBRE3T99VYCdl1gjST9rq+9kFaB1iMMGuDeZnP88qid73DnpAMKH9ZolqDpS1Lz7+w==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/debug": { - "version": "4.1.13", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", - "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/esrecurse": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", - "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/estree": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", - "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", - "dev": true, - "license": "MIT" - }, - "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, - "license": "MIT" - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/luxon": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.7.1.tgz", - "integrity": "sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/ms": { - "version": "0.7.31", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/node": { - "version": "25.6.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz", - "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", - "license": "MIT", - "dependencies": { - "undici-types": "~7.19.0" - } - }, - "node_modules/@types/node/node_modules/undici-types": { - "version": "7.19.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", - "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==", - "license": "MIT" - }, - "node_modules/@types/prompts": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/@types/prompts/-/prompts-2.4.9.tgz", - "integrity": "sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*", - "kleur": "^3.0.3" - } - }, - "node_modules/@types/readable-stream": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.23.tgz", - "integrity": "sha512-wwXrtQvbMHxCbBgjHaMGEmImFTQxxpfMOR/ZoQnXxB1woqkUbdLGFDgauo00Py9IudiaqSeiBiulSV9i6XIPig==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/readdir-glob": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@types/readdir-glob/-/readdir-glob-1.1.5.tgz", - "integrity": "sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/tunnel": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.7.tgz", - "integrity": "sha512-VYKjZSmb2PvUwXoux4Gy4LAk7kzOB1ktkjyL4lxvpkqL2adgR+Qrh/yFyWluvJgIXWFicqs7XuzPI2NbTO/r3Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "MIT" - }, - "node_modules/@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.2.tgz", - "integrity": "sha512-j/bwmkBvHUtPNxzuWe5z6BEk3q54YRyGlBXkSsmfoih7zNrBvl5A9A98anlp/7JbyZcWIJ8KXo/3Tq/DjFLtuQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.59.2", - "@typescript-eslint/type-utils": "8.59.2", - "@typescript-eslint/utils": "8.59.2", - "@typescript-eslint/visitor-keys": "8.59.2", - "ignore": "^7.0.5", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "@typescript-eslint/parser": "^8.59.2", - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/@typescript-eslint/parser": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.2.tgz", - "integrity": "sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/scope-manager": "8.59.2", - "@typescript-eslint/types": "8.59.2", - "@typescript-eslint/typescript-estree": "8.59.2", - "@typescript-eslint/visitor-keys": "8.59.2", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/project-service": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.2.tgz", - "integrity": "sha512-+2hqvEkeyf/0FBor67duF0Ll7Ot8jyKzDQOSrxazF/danillRq2DwR9dLptsXpoZQqxE1UisSmoZewrlPas9Vw==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/tsconfig-utils": "^8.59.2", - "@typescript-eslint/types": "^8.59.2", - "debug": "^4.4.3" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.2.tgz", - "integrity": "sha512-JzfyEpEtOU89CcFSwyNS3mu4MLvLSXqnmX05+aKBDM+TdR5jzcGOEBwxwGNxrEQ7p/z6kK2WyioCGBf2zZBnvg==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.59.2", - "@typescript-eslint/visitor-keys": "8.59.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/tsconfig-utils": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.2.tgz", - "integrity": "sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw==", - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/type-utils": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.2.tgz", - "integrity": "sha512-nhqaj1nmTdVVl/BP5omXNRGO38jn5iosis2vbdmupF2txCf8ylWT8lx+JlvMYYVqzGVKtjojUFoQ3JRWK+mfzQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.59.2", - "@typescript-eslint/typescript-estree": "8.59.2", - "@typescript-eslint/utils": "8.59.2", - "debug": "^4.4.3", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/types": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.2.tgz", - "integrity": "sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==", - "license": "MIT", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.2.tgz", - "integrity": "sha512-o0XPGNwcWw+FIwStOWn+BwBuEmL6QXP0rsvAFg7ET1dey1Nr6Wb1ac8p5HEsK0ygO/6mUxlk+YWQD9xcb/nnXg==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/project-service": "8.59.2", - "@typescript-eslint/tsconfig-utils": "8.59.2", - "@typescript-eslint/types": "8.59.2", - "@typescript-eslint/visitor-keys": "8.59.2", - "debug": "^4.4.3", - "minimatch": "^10.2.2", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.5.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/@typescript-eslint/utils": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.2.tgz", - "integrity": "sha512-Juw3EinkXqjaffxz6roowvV7GZT/kET5vSKKZT6upl5TXdWkLkYmNPXwDDL2Vkt2DPn0nODIS4egC/0AGxKo/Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.59.2", - "@typescript-eslint/types": "8.59.2", - "@typescript-eslint/typescript-estree": "8.59.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.2.tgz", - "integrity": "sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA==", - "license": "MIT", - "dependencies": { - "@typescript-eslint/types": "8.59.2", - "eslint-visitor-keys": "^5.0.0" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - } - }, - "node_modules/@typescript-eslint/visitor-keys/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "license": "Apache-2.0", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "dev": true, - "license": "MIT", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/acorn-walk": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", - "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", - "license": "MIT", - "dependencies": { - "acorn": "^8.11.0" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/ajv": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", - "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", - "license": "MIT", - "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/ajv-formats": { - "version": "2.1.1", - "license": "MIT", - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ansi-escapes": { - "version": "4.3.2", - "license": "MIT", - "dependencies": { - "type-fest": "^0.21.3" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "license": "MIT", - "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==", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ansis": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/ansis/-/ansis-3.17.0.tgz", - "integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==", - "license": "ISC", - "engines": { - "node": ">=14" - } - }, - "node_modules/archiver": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", - "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", - "license": "MIT", - "dependencies": { - "archiver-utils": "^5.0.2", - "async": "^3.2.4", - "buffer-crc32": "^1.0.0", - "readable-stream": "^4.0.0", - "readdir-glob": "^1.1.2", - "tar-stream": "^3.0.0", - "zip-stream": "^6.0.1" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/archiver-utils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", - "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", - "license": "MIT", - "dependencies": { - "glob": "^10.0.0", - "graceful-fs": "^4.2.0", - "is-stream": "^2.0.1", - "lazystream": "^1.0.0", - "lodash": "^4.17.15", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/archiver-utils/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/archiver-utils/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/archiver/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/archiver/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/arg": { - "version": "4.1.3", - "dev": true, - "license": "MIT" - }, - "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==", - "dev": true, - "license": "Python-2.0" - }, - "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, - "license": "MIT" - }, - "node_modules/assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/ast-types": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", - "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", - "dependencies": { - "tslib": "^2.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/async": { - "version": "3.2.4", - "license": "MIT" - }, - "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, - "license": "MIT", - "dependencies": { - "retry": "0.13.1" - } - }, - "node_modules/asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", - "license": "MIT" - }, - "node_modules/atomically": { - "version": "1.7.0", - "license": "MIT", - "engines": { - "node": ">=10.12.0" - } - }, - "node_modules/axios": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.0.tgz", - "integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.16.0", - "form-data": "^4.0.5", - "proxy-from-env": "^2.1.0" - } - }, - "node_modules/b4a": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==", - "license": "Apache-2.0" - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/bare-events": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", - "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", - "license": "Apache-2.0", - "optional": true - }, - "node_modules/base64-js": { - "version": "1.5.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/bl": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "node_modules/bowser": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", - "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", - "dev": true, - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", - "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", - "license": "MIT", - "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/broker-factory": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/broker-factory/-/broker-factory-3.1.10.tgz", - "integrity": "sha512-BzqK5GYFhvVFvO13uzPN0SCiOsOQuhMUbsGvTXDJMA2/N4GvIlFdxEuueE+60Zk841bBU5G3+fl2cqYEo0wgGg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.28.4", - "fast-unique-numbers": "^9.0.24", - "tslib": "^2.8.1", - "worker-factory": "^7.0.46" - } - }, - "node_modules/buffer": { - "version": "5.7.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "node_modules/buffer-crc32": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", - "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/buffer-from": { - "version": "1.1.2", - "license": "MIT" - }, - "node_modules/cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "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, - "license": "MIT", - "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, - "license": "MIT", - "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/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "node_modules/capital-case": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", - "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/change-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", - "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", - "dev": true, - "license": "MIT", - "dependencies": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/check-error": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", - "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 16" - } - }, - "node_modules/checkly": { - "resolved": "packages/cli", - "link": true - }, - "node_modules/chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/sibiraj-s" - } - ], - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/clean-stack": { - "version": "3.0.1", - "license": "MIT", - "dependencies": { - "escape-string-regexp": "4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-cursor": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "restore-cursor": "^3.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "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-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", - "dev": true, - "license": "MIT", - "dependencies": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/cli-truncate/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/cli-truncate/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, - "license": "MIT" - }, - "node_modules/cli-truncate/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, - "license": "MIT", - "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/cli-truncate/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, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "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==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">= 12" - } - }, - "node_modules/cliui": { - "version": "8.0.1", - "dev": true, - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/clone": { - "version": "1.0.4", - "license": "MIT", - "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==", - "license": "MIT", - "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==", - "license": "MIT" - }, - "node_modules/colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true, - "license": "MIT" - }, - "node_modules/combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "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, - "license": "MIT", - "dependencies": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - } - }, - "node_modules/compare-func/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, - "license": "MIT", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/compress-commons": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", - "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", - "license": "MIT", - "dependencies": { - "crc-32": "^1.2.0", - "crc32-stream": "^6.0.0", - "is-stream": "^2.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/compress-commons/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/compress-commons/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "license": "MIT" - }, - "node_modules/concat-stream": { - "version": "2.0.0", - "engines": [ - "node >= 6.0" - ], - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - } - }, - "node_modules/concat-stream/node_modules/typedarray": { - "version": "0.0.6", - "license": "MIT" - }, - "node_modules/conf": { - "version": "10.2.0", - "license": "MIT", - "dependencies": { - "ajv": "^8.6.3", - "ajv-formats": "^2.1.1", - "atomically": "^1.7.0", - "debounce-fn": "^4.0.0", - "dot-prop": "^6.0.1", - "env-paths": "^2.2.1", - "json-schema-typed": "^7.0.3", - "onetime": "^5.1.2", - "pkg-up": "^3.1.0", - "semver": "^7.3.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/config": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/config/-/config-3.3.12.tgz", - "integrity": "sha512-Vmx389R/QVM3foxqBzXO8t2tUikYZP64Q6vQxGrsMpREeJc/aWRnPRERXWsYzOHAumx/AOoILWe6nU3ZJL+6Sw==", - "dev": true, - "license": "MIT", - "dependencies": { - "json5": "^2.2.3" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "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==", - "license": "MIT", - "dependencies": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "node_modules/constant-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" - } - }, - "node_modules/content-type": { - "version": "1.0.5", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/conventional-changelog-angular": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.3.1.tgz", - "integrity": "sha512-6gfI3otXK5Ph5DfCOI1dblr+kN3FAm5a97hYoQkqNZxOaYa5WKfXH+AnpsmS+iUH2mgVC2Cg2Qw9m5OKcmNrIg==", - "dev": true, - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/conventional-changelog-conventionalcommits": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-9.3.1.tgz", - "integrity": "sha512-dTYtpIacRpcZgrvBYvBfArMmK2xvIpv2TaxM0/ZI5CBtNUzvF2x0t15HsbRABWprS6UPmvj+PzHVjSx4qAVKyw==", - "dev": true, - "license": "ISC", - "dependencies": { - "compare-func": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/conventional-commits-parser": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.4.0.tgz", - "integrity": "sha512-tvRg7FIBNlyPzjdG8wWRlPHQJJHI7DylhtRGeU9Lq+JuoPh5BKpPRX83ZdLrvXuOSu5Eo/e7SzOQhU4Hd2Miuw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@simple-libs/stream-utils": "^1.2.0", - "meow": "^13.0.0" - }, - "bin": { - "conventional-commits-parser": "dist/cli/index.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==", - "license": "MIT" - }, - "node_modules/cosmiconfig": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", - "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", - "dev": true, - "license": "MIT", - "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": "6.3.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.3.0.tgz", - "integrity": "sha512-Akr82WH1Wfqatyiqpj8HDkO2o2KmJRu1FhKfSNJP3K4IdXwHfEyL7MOb62i1AGQVLtIQM+iCE9CGOtrfhR+mmA==", - "dev": true, - "license": "MIT", - "dependencies": { - "jiti": "2.6.1" - }, - "engines": { - "node": ">=v18" - }, - "peerDependencies": { - "@types/node": "*", - "cosmiconfig": ">=9", - "typescript": ">=5" - } - }, - "node_modules/crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", - "license": "Apache-2.0", - "bin": { - "crc32": "bin/crc32.njs" - }, - "engines": { - "node": ">=0.8" - } - }, - "node_modules/crc32-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", - "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", - "license": "MIT", - "dependencies": { - "crc-32": "^1.2.0", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/crc32-stream/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/crc32-stream/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/create-checkly": { - "resolved": "packages/create-cli", - "link": true - }, - "node_modules/create-require": { - "version": "1.1.1", - "dev": true, - "license": "MIT" - }, - "node_modules/cross-env": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", - "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@epic-web/invariant": "^1.0.0", - "cross-spawn": "^7.0.6" - }, - "bin": { - "cross-env": "dist/bin/cross-env.js", - "cross-env-shell": "dist/bin/cross-env-shell.js" - }, - "engines": { - "node": ">=20" - } - }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "license": "MIT", - "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/debounce-fn": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "mimic-fn": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" - }, - "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, - "license": "MIT", - "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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "node_modules/defaults": { - "version": "1.0.4", - "license": "MIT", - "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, - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/detect-indent": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-7.0.1.tgz", - "integrity": "sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.20" - } - }, - "node_modules/detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, - "license": "Apache-2.0", - "optional": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/diff": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", - "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/dot-prop": { - "version": "6.0.1", - "license": "MIT", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/dotenv": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://dotenvx.com" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "license": "MIT" - }, - "node_modules/ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "dependencies": { - "jake": "^10.8.5" - }, - "bin": { - "ejs": "bin/cli.js" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ejs/node_modules/brace-expansion": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", - "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/ejs/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "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/ejs/node_modules/filelist": { - "version": "1.0.4", - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.0.1" - } - }, - "node_modules/ejs/node_modules/filelist/node_modules/minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/ejs/node_modules/jake": { - "version": "10.8.5", - "license": "Apache-2.0", - "dependencies": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - }, - "bin": { - "jake": "bin/cli.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/emoji-regex": { - "version": "8.0.0", - "license": "MIT" - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "node_modules/env-paths": { - "version": "2.2.1", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/error-ex": { - "version": "1.3.2", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-toolkit": { - "version": "1.46.1", - "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.46.1.tgz", - "integrity": "sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ==", - "dev": true, - "license": "MIT", - "workspaces": [ - "docs", - "benchmarks" - ] - }, - "node_modules/esbuild": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", - "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "esbuild": "bin/esbuild" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "@esbuild/aix-ppc64": "0.27.7", - "@esbuild/android-arm": "0.27.7", - "@esbuild/android-arm64": "0.27.7", - "@esbuild/android-x64": "0.27.7", - "@esbuild/darwin-arm64": "0.27.7", - "@esbuild/darwin-x64": "0.27.7", - "@esbuild/freebsd-arm64": "0.27.7", - "@esbuild/freebsd-x64": "0.27.7", - "@esbuild/linux-arm": "0.27.7", - "@esbuild/linux-arm64": "0.27.7", - "@esbuild/linux-ia32": "0.27.7", - "@esbuild/linux-loong64": "0.27.7", - "@esbuild/linux-mips64el": "0.27.7", - "@esbuild/linux-ppc64": "0.27.7", - "@esbuild/linux-riscv64": "0.27.7", - "@esbuild/linux-s390x": "0.27.7", - "@esbuild/linux-x64": "0.27.7", - "@esbuild/netbsd-arm64": "0.27.7", - "@esbuild/netbsd-x64": "0.27.7", - "@esbuild/openbsd-arm64": "0.27.7", - "@esbuild/openbsd-x64": "0.27.7", - "@esbuild/openharmony-arm64": "0.27.7", - "@esbuild/sunos-x64": "0.27.7", - "@esbuild/win32-arm64": "0.27.7", - "@esbuild/win32-ia32": "0.27.7", - "@esbuild/win32-x64": "0.27.7" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.3.0.tgz", - "integrity": "sha512-XbEXaRva5cF0ZQB8w6MluHA0kZZfV2DuCMJ3ozyEOHLwDpZX2Lmm/7Pp0xdJmI0GL1W05VH5VwIFHEm1Vcw2gw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.2", - "@eslint/config-array": "^0.23.5", - "@eslint/config-helpers": "^0.5.5", - "@eslint/core": "^1.2.1", - "@eslint/plugin-kit": "^0.7.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.14.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^9.1.2", - "eslint-visitor-keys": "^5.0.1", - "espree": "^11.2.0", - "esquery": "^1.7.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "minimatch": "^10.2.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://eslint.org/donate" - }, - "peerDependencies": { - "jiti": "*" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - } - } - }, - "node_modules/eslint-scope": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", - "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "@types/esrecurse": "^4.3.1", - "@types/estree": "^1.0.8", - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/ajv": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", - "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", - "dev": true, - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/eslint/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/eslint/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/eslint/node_modules/eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/espree": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", - "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.16.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^5.0.1" - }, - "engines": { - "node": "^20.19.0 || ^22.13.0 || >=24" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true, - "license": "MIT" - }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/eslint/node_modules/p-limit": { - "version": "3.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "dev": true, - "license": "MIT", - "dependencies": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/espree/node_modules/eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" - } - }, - "node_modules/esprima": { - "version": "4.0.1", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/esquery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", - "dev": true, - "license": "BSD-3-Clause", - "dependencies": { - "estraverse": "^5.1.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "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, - "license": "BSD-2-Clause", - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "^1.0.0" - } - }, - "node_modules/esutils": { - "version": "2.0.3", - "dev": true, - "license": "BSD-2-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/eventemitter3": { - "version": "4.0.7", - "license": "MIT" - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dependencies": { - "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": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/expect-type": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", - "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", - "dev": true, - "license": "Apache-2.0", - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "license": "MIT" - }, - "node_modules/fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==", - "license": "MIT" - }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true, - "license": "MIT" - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fast-unique-numbers": { - "version": "9.0.24", - "resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-9.0.24.tgz", - "integrity": "sha512-Dv0BYn4waOWse94j16rsZ5w/0zoaCa74O3q6IZjMqaXbtT92Q+Sb6pPk+phGzD8Xh+nueQmSRI3tSCaHKidzKw==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.28.4", - "tslib": "^2.8.1" - }, - "engines": { - "node": ">=18.2.0" - } - }, - "node_modules/fast-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", - "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fastify" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/fastify" - } - ], - "license": "BSD-3-Clause" - }, - "node_modules/fast-xml-builder": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.9.tgz", - "integrity": "sha512-jcyKVSEX13iseJqg7n/KWw+xnu/7fdrZ333Fac54KjHDIELVCfDDJXYIm6DTJ0Su4gSzrhqiK0DzY/wZbF40mw==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", - "dependencies": { - "path-expression-matcher": "^1.1.3" - } - }, - "node_modules/fast-xml-parser": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz", - "integrity": "sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", - "dependencies": { - "@nodable/entities": "^2.1.0", - "fast-xml-builder": "^1.1.5", - "path-expression-matcher": "^1.5.0", - "strnum": "^2.2.3" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, - "node_modules/figures": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", - "license": "MIT", - "dependencies": { - "is-unicode-supported": "^2.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/figures/node_modules/is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "flat-cache": "^4.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "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-yarn-workspace-root": { - "version": "2.0.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "micromatch": "^4.0.2" - } - }, - "node_modules/flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "license": "MIT", - "dependencies": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", - "dev": true, - "license": "ISC" - }, - "node_modules/follow-redirects": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", - "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/foreground-child": { - "version": "3.1.1", - "license": "ISC", - "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.0.2", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">= 14.17" - } - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "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==", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-caller-file": { - "version": "2.0.5", - "dev": true, - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/get-east-asian-width": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", - "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-package-type": { - "version": "0.1.0", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/get-stdin": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", - "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/get-stream": { - "version": "6.0.1", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/giget": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/giget/-/giget-3.2.0.tgz", - "integrity": "sha512-GvHTWcykIR/fP8cj8dMpuMMkvaeJfPvYnhq0oW+chSeIr+ldX21ifU2Ms6KBoyKZQZmVaUAAhQ2EZ68KJF8a7A==", - "license": "MIT", - "bin": { - "giget": "dist/cli.mjs" - } - }, - "node_modules/git-hooks-list": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-3.2.0.tgz", - "integrity": "sha512-ZHG9a1gEhUMX1TvGrLdyWb9kDopCBbTnI8z4JgRMYxsijWipgjSEYoPWqBuIB0DnRnvqlQSEeVmzpeuPm7NdFQ==", - "dev": true, - "license": "MIT", - "funding": { - "url": "https://github.com/fisker/git-hooks-list?sponsor=1" - } - }, - "node_modules/git-raw-commits": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-5.0.1.tgz", - "integrity": "sha512-Y+csSm2GD/PCSh6Isd/WiMjNAydu0VBiG9J7EdQsNA5P9uXvLayqjmTsNlK5Gs9IhblFZqOU0yid5Il5JPoLiQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@conventional-changelog/git-client": "^2.6.0", - "meow": "^13.0.0" - }, - "bin": { - "git-raw-commits": "src/cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/git-repo-info": { - "version": "2.1.1", - "license": "MIT", - "engines": { - "node": ">= 4.0" - } - }, - "node_modules/github-slugger": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", - "dev": true, - "license": "ISC" - }, - "node_modules/glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "license": "ISC", - "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob-parent": { - "version": "6.0.2", - "dev": true, - "license": "ISC", - "dependencies": { - "is-glob": "^4.0.3" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/glob/node_modules/brace-expansion": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", - "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/global-directory": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-5.0.0.tgz", - "integrity": "sha512-1pgFdhK3J2LeM+dVf2Pd424yHx2ou338lC0ErNP2hPx4j8eW1Sp0XqSjNxtk6Tc4Kr5wlWtSvz8cn2yb7/SG/w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ini": "6.0.0" - }, - "engines": { - "node": ">=20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/global-directory/node_modules/ini": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz", - "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^20.17.0 || >=22.9.0" - } - }, - "node_modules/globals": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.6.0.tgz", - "integrity": "sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/got": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", - "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==", - "dev": true, - "license": "MIT", - "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/graceful-fs": { - "version": "4.2.10", - "license": "ISC" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/header-case": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", - "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/help-me": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", - "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==" - }, - "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, - "license": "BSD-2-Clause" - }, - "node_modules/http-call": { - "version": "5.3.0", - "license": "ISC", - "dependencies": { - "content-type": "^1.0.4", - "debug": "^4.1.1", - "is-retry-allowed": "^1.1.0", - "is-stream": "^2.0.0", - "parse-json": "^4.0.0", - "tunnel-agent": "^0.6.0" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "node_modules/http-call/node_modules/parse-json": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - }, - "engines": { - "node": ">=4" - } - }, - "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, - "license": "MIT", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "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==", - "engines": { - "node": ">=10.17.0" - } - }, - "node_modules/iconv-lite": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.1.tgz", - "integrity": "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/express" - } - }, - "node_modules/ieee754": { - "version": "1.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "BSD-3-Clause" - }, - "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, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "license": "MIT", - "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, - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/import-meta-resolve": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", - "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", - "dev": true, - "license": "MIT", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "node_modules/indent-string": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/ini": { - "version": "1.3.8", - "license": "ISC" - }, - "node_modules/ip-address": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", - "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==", - "license": "MIT", - "engines": { - "node": ">= 12" - } - }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "license": "MIT" - }, - "node_modules/is-docker": { - "version": "2.2.1", - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-glob": { - "version": "4.0.3", - "dev": true, - "license": "MIT", - "dependencies": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "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", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-retry-allowed": { - "version": "1.2.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-stream": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", - "license": "MIT" - }, - "node_modules/isexe": { - "version": "2.0.0", - "license": "ISC" - }, - "node_modules/jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/cliui": "^8.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" - } - }, - "node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "node_modules/js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/js-sdsl" - } - }, - "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, - "license": "MIT" - }, - "node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "license": "MIT", - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "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, - "license": "MIT" - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "license": "MIT" - }, - "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, - "license": "MIT" - }, - "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==", - "license": "MIT" - }, - "node_modules/json-schema-typed": { - "version": "7.0.3", - "license": "BSD-2-Clause" - }, - "node_modules/json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/json-stream-stringify": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz", - "integrity": "sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==", - "engines": { - "node": ">=7.10.1" - } - }, - "node_modules/json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/jwt-decode": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", - "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==", - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "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, - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kleur": { - "version": "3.0.3", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "license": "MIT", - "dependencies": { - "readable-stream": "^2.0.5" - }, - "engines": { - "node": ">= 0.6.3" - } - }, - "node_modules/lazystream/node_modules/readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "node_modules/lazystream/node_modules/safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "license": "MIT" - }, - "node_modules/lazystream/node_modules/string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", - "dev": true, - "license": "MPL-2.0", - "optional": true, - "peer": true, - "dependencies": { - "detect-libc": "^2.0.3" - }, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - }, - "optionalDependencies": { - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" - } - }, - "node_modules/lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "android" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "freebsd" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", - "cpu": [ - "arm" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", - "cpu": [ - "arm64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", - "cpu": [ - "x64" - ], - "dev": true, - "license": "MPL-2.0", - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 12.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/parcel" - } - }, - "node_modules/lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==", - "license": "MIT", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/antonk52" - } - }, - "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, - "license": "MIT" - }, - "node_modules/lint-staged": { - "version": "15.5.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.5.2.tgz", - "integrity": "sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==", - "dev": true, - "license": "MIT", - "dependencies": { - "chalk": "^5.4.1", - "commander": "^13.1.0", - "debug": "^4.4.0", - "execa": "^8.0.1", - "lilconfig": "^3.1.3", - "listr2": "^8.2.5", - "micromatch": "^4.0.8", - "pidtree": "^0.6.0", - "string-argv": "^0.3.2", - "yaml": "^2.7.0" - }, - "bin": { - "lint-staged": "bin/lint-staged.js" - }, - "engines": { - "node": ">=18.12.0" - }, - "funding": { - "url": "https://opencollective.com/lint-staged" - } - }, - "node_modules/lint-staged/node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/lint-staged/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, - "license": "MIT", - "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/lint-staged/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, - "license": "MIT", - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/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, - "license": "Apache-2.0", - "engines": { - "node": ">=16.17.0" - } - }, - "node_modules/lint-staged/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, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/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, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/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, - "license": "MIT", - "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/lint-staged/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, - "license": "MIT", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/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, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/lint-staged/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==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/lint-staged/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, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/listr2": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", - "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "cli-truncate": "^4.0.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^6.1.0", - "rfdc": "^1.4.1", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/listr2/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/listr2/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, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/listr2/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, - "license": "MIT" - }, - "node_modules/listr2/node_modules/eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true, - "license": "MIT" - }, - "node_modules/listr2/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, - "license": "MIT", - "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/listr2/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, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/listr2/node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==", - "license": "MIT" - }, - "node_modules/log-symbols": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-symbols/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "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/log-update": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", - "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^7.0.0", - "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-escapes": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", - "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", - "dev": true, - "license": "MIT", - "dependencies": { - "environment": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" - } - }, - "node_modules/log-update/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, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-update/node_modules/cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "dev": true, - "license": "MIT", - "dependencies": { - "restore-cursor": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/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, - "license": "MIT" - }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", - "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", - "dev": true, - "license": "MIT", - "dependencies": { - "get-east-asian-width": "^1.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/onetime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "mimic-function": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/node_modules/restore-cursor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", - "dev": true, - "license": "MIT", - "dependencies": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/log-update/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==", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", - "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/log-update/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, - "license": "MIT", - "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/log-update/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, - "license": "MIT", - "dependencies": { - "ansi-regex": "^6.0.1" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" - } - }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/chalk/wrap-ansi?sponsor=1" - } - }, - "node_modules/loupe": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", - "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "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, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/luxon": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", - "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==", - "license": "MIT", - "engines": { - "node": ">=12" - } - }, - "node_modules/magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "node_modules/make-error": { - "version": "1.3.6", - "dev": true, - "license": "ISC" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/meow": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/merge-stream": { - "version": "2.0.0", - "license": "MIT" - }, - "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, - "license": "MIT", - "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==", - "license": "MIT", - "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==", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mimic-fn": { - "version": "3.1.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "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, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "license": "ISC", - "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==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=16 || 14 >=14.17" - } - }, - "node_modules/minizlib": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", - "dev": true, - "license": "MIT", - "dependencies": { - "minipass": "^7.1.2" - }, - "engines": { - "node": ">= 18" - } - }, - "node_modules/mqtt": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.15.1.tgz", - "integrity": "sha512-V1WnkGuJh3ec9QXzy5Iylw8OOBK+Xu1WhxcQ9mMpLThG+/JZIMV1PgLNRgIiqXhZnvnVLsuyxHl5A/3bHHbcAA==", - "license": "MIT", - "dependencies": { - "@types/readable-stream": "^4.0.21", - "@types/ws": "^8.18.1", - "commist": "^3.2.0", - "concat-stream": "^2.0.0", - "debug": "^4.4.1", - "help-me": "^5.0.0", - "lru-cache": "^10.4.3", - "minimist": "^1.2.8", - "mqtt-packet": "^9.0.2", - "number-allocator": "^1.0.14", - "readable-stream": "^4.7.0", - "rfdc": "^1.4.1", - "socks": "^2.8.6", - "split2": "^4.2.0", - "worker-timers": "^8.0.23", - "ws": "^8.18.3" - }, - "bin": { - "mqtt": "build/bin/mqtt.js", - "mqtt_pub": "build/bin/pub.js", - "mqtt_sub": "build/bin/sub.js" - }, - "engines": { - "node": ">=16.0.0" - } - }, - "node_modules/mqtt-packet": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-9.0.2.tgz", - "integrity": "sha512-MvIY0B8/qjq7bKxdN1eD+nrljoeaai+qjLJgfRn3TiMuz0pamsIWY2bFODPZMSNmabsLANXsLl4EMoWvlaTZWA==", - "license": "MIT", - "dependencies": { - "bl": "^6.0.8", - "debug": "^4.3.4", - "process-nextick-args": "^2.0.1" - } - }, - "node_modules/mqtt-packet/node_modules/bl": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-6.1.0.tgz", - "integrity": "sha512-ClDyJGQkc8ZtzdAAbAwBmhMSpwN/sC9HA8jxdYm6nVUbCfZbe2mgza4qh7AuEYyEPB/c4Kznf9s66bnsKMQDjw==", - "license": "MIT", - "dependencies": { - "@types/readable-stream": "^4.0.0", - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^4.2.0" - } - }, - "node_modules/mqtt-packet/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/mqtt-packet/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/mqtt/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/mqtt/node_modules/commist": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/commist/-/commist-3.2.0.tgz", - "integrity": "sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw==" - }, - "node_modules/mqtt/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==" - }, - "node_modules/mqtt/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "node_modules/mqtt/node_modules/split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==", - "engines": { - "node": ">= 10.x" - } - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "license": "MIT" - }, - "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==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/nanoid": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", - "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/natural-compare": { - "version": "1.4.0", - "dev": true, - "license": "MIT" - }, - "node_modules/nice-try": { - "version": "1.0.5", - "license": "MIT" - }, - "node_modules/no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "license": "MIT", - "engines": { - "node": ">=0.10.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, - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/npm-run-path": { - "version": "4.0.1", - "license": "MIT", - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/number-allocator": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz", - "integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==", - "dependencies": { - "debug": "^4.3.1", - "js-sdsl": "4.3.0" - } - }, - "node_modules/oclif": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/oclif/-/oclif-4.23.0.tgz", - "integrity": "sha512-0Rz8YsJx6NQORMgyDeDr6i0OlJa6h4oLXBht9iRZhn/YI/by/ONKgcJIPXyTgeLK21JmhbFqJn6Y1AME0EH1Dw==", - "dev": true, - "license": "MIT", - "dependencies": { - "@aws-sdk/client-cloudfront": "3.1009.0", - "@aws-sdk/client-s3": "3.1014.0", - "@inquirer/confirm": "^3.1.22", - "@inquirer/input": "^2.2.4", - "@inquirer/select": "^2.5.0", - "@oclif/core": "4.9.0", - "@oclif/plugin-help": "^6.2.38", - "@oclif/plugin-not-found": "^3.2.76", - "@oclif/plugin-warn-if-update-available": "^3.1.57", - "ansis": "^3.16.0", - "async-retry": "^1.3.3", - "change-case": "^4", - "debug": "^4.4.0", - "ejs": "^3.1.10", - "find-yarn-workspace-root": "^2.0.0", - "fs-extra": "^8.1", - "github-slugger": "^2", - "got": "^13", - "lodash": "^4.18.1", - "normalize-package-data": "^6", - "semver": "^7.7.4", - "sort-package-json": "^2.15.1", - "tiny-jsonc": "^1.0.2", - "validate-npm-package-name": "^5.0.1" - }, - "bin": { - "oclif": "bin/run.js" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/oclif/node_modules/@oclif/core": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@oclif/core/-/core-4.9.0.tgz", - "integrity": "sha512-k/ntRgDcUprTT+aaNoF+whk3cY3f9fRD2lkF6ul7JeCUg2MaMXVXZXfbRhJCfsiX51X8/5Pqo0LGdO9SLYXNHg==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-escapes": "^4.3.2", - "ansis": "^3.17.0", - "clean-stack": "^3.0.1", - "cli-spinners": "^2.9.2", - "debug": "^4.4.3", - "ejs": "^3.1.10", - "get-package-type": "^0.1.0", - "indent-string": "^4.0.0", - "is-wsl": "^2.2.0", - "lilconfig": "^3.1.3", - "minimatch": "^10.2.4", - "semver": "^7.7.3", - "string-width": "^4.2.3", - "supports-color": "^8", - "tinyglobby": "^0.2.14", - "widest-line": "^3.1.0", - "wordwrap": "^1.0.0", - "wrap-ansi": "^7.0.0" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/oclif/node_modules/balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true, - "license": "MIT", - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/oclif/node_modules/brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "balanced-match": "^4.0.2" - }, - "engines": { - "node": "18 || 20 || >=22" - } - }, - "node_modules/oclif/node_modules/fs-extra": { - "version": "8.1.0", - "dev": true, - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "engines": { - "node": ">=6 <7 || >=8" - } - }, - "node_modules/oclif/node_modules/fs-extra/node_modules/jsonfile": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/oclif/node_modules/fs-extra/node_modules/universalify": { - "version": "0.1.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "node_modules/oclif/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, - "license": "ISC", - "dependencies": { - "lru-cache": "^10.0.1" - }, - "engines": { - "node": "^16.14.0 || >=18.0.0" - } - }, - "node_modules/oclif/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, - "license": "ISC" - }, - "node_modules/oclif/node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "brace-expansion": "^5.0.5" - }, - "engines": { - "node": "18 || 20 || >=22" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/oclif/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, - "license": "BSD-2-Clause", - "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/oclif/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/onetime": { - "version": "5.1.2", - "license": "MIT", - "dependencies": { - "mimic-fn": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/onetime/node_modules/mimic-fn": { - "version": "2.1.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "license": "MIT", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - }, - "engines": { - "node": ">= 0.8.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, - "license": "MIT", - "engines": { - "node": ">=12.20" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/p-limit": { - "version": "2.3.0", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-queue": { - "version": "6.6.2", - "license": "MIT", - "dependencies": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/p-timeout": { - "version": "3.2.0", - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==", - "license": "BlueOak-1.0.0" - }, - "node_modules/param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "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, - "license": "MIT", - "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, - "license": "MIT", - "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-ms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", - "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", - "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", - "dev": true, - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-expression-matcher": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", - "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/path-key": { - "version": "3.1.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "license": "BlueOak-1.0.0", - "dependencies": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.18" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/path-scurry/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==", - "license": "ISC" - }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true, - "license": "MIT" - }, - "node_modules/pathval": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", - "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 14.16" - } - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true, - "license": "ISC" - }, - "node_modules/picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/pidtree": { - "version": "0.6.0", - "dev": true, - "license": "MIT", - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/pkg-up": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "find-up": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/pkg-up/node_modules/find-up": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/locate-path": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/p-locate": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/pkg-up/node_modules/path-exists": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "node_modules/playwright": { - "version": "1.59.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.59.1.tgz", - "integrity": "sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright-core": "1.59.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.59.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.1.tgz", - "integrity": "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/postcss": { - "version": "8.5.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", - "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "license": "MIT", - "dependencies": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/pretty-ms": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", - "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", - "license": "MIT", - "dependencies": { - "parse-ms": "^4.0.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==", - "license": "MIT" - }, - "node_modules/prompts": { - "version": "2.4.2", - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "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==", - "license": "ISC" - }, - "node_modules/proxy-from-env": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", - "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "node_modules/pump": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "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, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/readable-stream": { - "version": "3.6.0", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readdir-glob": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", - "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", - "license": "Apache-2.0", - "dependencies": { - "minimatch": "^5.1.0" - } - }, - "node_modules/readdir-glob/node_modules/brace-expansion": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", - "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/recast": { - "version": "0.23.11", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", - "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", - "license": "MIT", - "dependencies": { - "ast-types": "^0.16.1", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tiny-invariant": "^1.3.3", - "tslib": "^2.0.1" - }, - "engines": { - "node": ">= 4" - } - }, - "node_modules/registry-auth-token": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.1.tgz", - "integrity": "sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==", - "license": "MIT", - "dependencies": { - "@pnpm/npm-conf": "^3.0.2" - }, - "engines": { - "node": ">=14" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/require-from-string": { - "version": "2.0.2", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "license": "MIT" - }, - "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, - "license": "MIT", - "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, - "license": "MIT", - "dependencies": { - "lowercase-keys": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/restore-cursor": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==", - "license": "MIT" - }, - "node_modules/rimraf": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", - "dev": true, - "license": "ISC", - "dependencies": { - "glob": "^10.3.7" - }, - "bin": { - "rimraf": "dist/esm/bin.mjs" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/rollup": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.3.tgz", - "integrity": "sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/estree": "1.0.8" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.60.3", - "@rollup/rollup-android-arm64": "4.60.3", - "@rollup/rollup-darwin-arm64": "4.60.3", - "@rollup/rollup-darwin-x64": "4.60.3", - "@rollup/rollup-freebsd-arm64": "4.60.3", - "@rollup/rollup-freebsd-x64": "4.60.3", - "@rollup/rollup-linux-arm-gnueabihf": "4.60.3", - "@rollup/rollup-linux-arm-musleabihf": "4.60.3", - "@rollup/rollup-linux-arm64-gnu": "4.60.3", - "@rollup/rollup-linux-arm64-musl": "4.60.3", - "@rollup/rollup-linux-loong64-gnu": "4.60.3", - "@rollup/rollup-linux-loong64-musl": "4.60.3", - "@rollup/rollup-linux-ppc64-gnu": "4.60.3", - "@rollup/rollup-linux-ppc64-musl": "4.60.3", - "@rollup/rollup-linux-riscv64-gnu": "4.60.3", - "@rollup/rollup-linux-riscv64-musl": "4.60.3", - "@rollup/rollup-linux-s390x-gnu": "4.60.3", - "@rollup/rollup-linux-x64-gnu": "4.60.3", - "@rollup/rollup-linux-x64-musl": "4.60.3", - "@rollup/rollup-openbsd-x64": "4.60.3", - "@rollup/rollup-openharmony-arm64": "4.60.3", - "@rollup/rollup-win32-arm64-msvc": "4.60.3", - "@rollup/rollup-win32-ia32-msvc": "4.60.3", - "@rollup/rollup-win32-x64-gnu": "4.60.3", - "@rollup/rollup-win32-x64-msvc": "4.60.3", - "fsevents": "~2.3.2" - } - }, - "node_modules/rollup/node_modules/@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true, - "license": "MIT" - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true, - "license": "MIT" - }, - "node_modules/semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/sentence-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", - "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", - "dev": true, - "license": "MIT", - "dependencies": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "node_modules/shebang-command": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "shebang-regex": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true, - "license": "ISC" - }, - "node_modules/signal-exit": { - "version": "3.0.7", - "license": "ISC" - }, - "node_modules/simple-git-hooks": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/simple-git-hooks/-/simple-git-hooks-2.13.1.tgz", - "integrity": "sha512-WszCLXwT4h2k1ufIXAgsbiTOazqqevFCIncOuUBZJ91DdvWcC5+OFkluWRQPrcuSYd8fjq+o2y1QfWqYMoAToQ==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "bin": { - "simple-git-hooks": "cli.js" - } - }, - "node_modules/sisteransi": { - "version": "1.0.5", - "license": "MIT" - }, - "node_modules/slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/slice-ansi/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, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/slice-ansi/node_modules/is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "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==", - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dev": true, - "license": "MIT", - "dependencies": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "node_modules/socks": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", - "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", - "license": "MIT", - "dependencies": { - "ip-address": "^10.0.1", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.0.0", - "npm": ">= 3.0.0" - } - }, - "node_modules/sort-object-keys": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-1.1.3.tgz", - "integrity": "sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==", - "dev": true, - "license": "MIT" - }, - "node_modules/sort-package-json": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-2.15.1.tgz", - "integrity": "sha512-9x9+o8krTT2saA9liI4BljNjwAbvUnWf11Wq+i/iZt8nl2UGYnf3TH5uBydE7VALmP7AGwlfszuEeL8BDyb0YA==", - "dev": true, - "license": "MIT", - "dependencies": { - "detect-indent": "^7.0.1", - "detect-newline": "^4.0.0", - "get-stdin": "^9.0.0", - "git-hooks-list": "^3.0.0", - "is-plain-obj": "^4.1.0", - "semver": "^7.6.0", - "sort-object-keys": "^1.1.3", - "tinyglobby": "^0.2.9" - }, - "bin": { - "sort-package-json": "cli.js" - } - }, - "node_modules/sort-package-json/node_modules/detect-newline": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-4.0.1.tgz", - "integrity": "sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/spdx-correct": { - "version": "3.2.0", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "dev": true, - "license": "CC-BY-3.0" - }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "node_modules/spdx-license-ids": { - "version": "3.0.12", - "dev": true, - "license": "CC0-1.0" - }, - "node_modules/stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true, - "license": "MIT" - }, - "node_modules/streamx": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", - "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", - "license": "MIT", - "dependencies": { - "fast-fifo": "^1.3.2", - "text-decoder": "^1.1.0" - }, - "optionalDependencies": { - "bare-events": "^2.2.0" - } - }, - "node_modules/string_decoder": { - "version": "1.3.0", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "node_modules/string-argv": { - "version": "0.3.2", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=0.6.19" - } - }, - "node_modules/string-width": { - "version": "4.2.3", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "license": "MIT", - "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", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/strip-literal": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", - "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", - "dev": true, - "license": "MIT", - "dependencies": { - "js-tokens": "^9.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/strip-literal/node_modules/js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/strnum": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.3.0.tgz", - "integrity": "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT" - }, - "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==", - "license": "MIT", - "dependencies": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/tar": { - "version": "7.5.14", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.14.tgz", - "integrity": "sha512-/7sHKgQO3JLP9ESlwTYUUftHUadOURUqq23xs1vjcnp8Vss6k0wCfzulyEtk5g91pjvnuriimGlyG7k6msrzRw==", - "dev": true, - "license": "BlueOak-1.0.0", - "dependencies": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "license": "MIT", - "dependencies": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "node_modules/text-decoder": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", - "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", - "license": "Apache-2.0", - "dependencies": { - "b4a": "^1.6.4" - } - }, - "node_modules/tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==", - "license": "MIT" - }, - "node_modules/tiny-jsonc": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tiny-jsonc/-/tiny-jsonc-1.0.2.tgz", - "integrity": "sha512-f5QDAfLq6zIVSyCZQZhhyl0QS6MvAyTxgz4X4x3+EoCktNWEYJ6PeoEA97fyb98njpBNNi88ybpD7m+BDFXaCw==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinybench": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", - "dev": true, - "license": "MIT" - }, - "node_modules/tinyexec": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.1.2.tgz", - "integrity": "sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - } - }, - "node_modules/tinyglobby": { - "version": "0.2.16", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", - "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, - "node_modules/tinyglobby/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/tinyglobby/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/tinypool": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", - "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", - "dev": true, - "license": "MIT", - "engines": { - "node": "^18.0.0 || >=20.0.0" - } - }, - "node_modules/tinyspy": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", - "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.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/ts-api-utils": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", - "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", - "license": "MIT", - "engines": { - "node": ">=18.12" - }, - "peerDependencies": { - "typescript": ">=4.8.4" - } - }, - "node_modules/ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - }, - "bin": { - "ts-node": "dist/bin.js", - "ts-node-cwd": "dist/bin-cwd.js", - "ts-node-esm": "dist/bin-esm.js", - "ts-node-script": "dist/bin-script.js", - "ts-node-transpile-only": "dist/bin-transpile.js", - "ts-script": "dist/bin-script-deprecated.js" - }, - "peerDependencies": { - "@swc/core": ">=1.2.50", - "@swc/wasm": ">=1.2.50", - "@types/node": "*", - "typescript": ">=2.7" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "@swc/wasm": { - "optional": true - } - } - }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/tunnel-agent": { - "version": "0.6.0", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "node_modules/type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "dependencies": { - "prelude-ls": "^1.2.1" - }, - "engines": { - "node": ">= 0.8.0" - } - }, - "node_modules/type-fest": { - "version": "0.21.3", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "node_modules/typescript-eslint": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.2.tgz", - "integrity": "sha512-pJw051uomb3ZeCzGTpRb8RbEqB5Y4WWet8gl/GcTlU35BSx0PVdZ86/bqkQCyKKuraVQEK7r6kBHQXF+fBhkoQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@typescript-eslint/eslint-plugin": "8.59.2", - "@typescript-eslint/parser": "8.59.2", - "@typescript-eslint/typescript-estree": "8.59.2", - "@typescript-eslint/utils": "8.59.2" - }, - "engines": { - "node": "^18.18.0 || ^20.9.0 || >=21.1.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^8.57.0 || ^9.0.0 || ^10.0.0", - "typescript": ">=4.8.4 <6.1.0" - } - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/unique-names-generator": { - "version": "4.7.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "node_modules/upper-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", - "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/upper-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "dev": true, - "license": "MIT", - "dependencies": { - "tslib": "^2.0.3" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/uuid": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.1.tgz", - "integrity": "sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], - "license": "MIT", - "bin": { - "uuid": "dist/esm/bin/uuid" - } - }, - "node_modules/v8-compile-cache-lib": { - "version": "3.0.1", - "dev": true, - "license": "MIT" - }, - "node_modules/validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "node_modules/validate-npm-package-name": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", - "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, - "node_modules/vite": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.3.tgz", - "integrity": "sha512-/4XH147Ui7OGTjg3HbdWe5arnZQSbfuRzdr9Ec7TQi5I7R+ir0Rlc9GIvD4v0XZurELqA035KVXJXpR61xhiTA==", - "dev": true, - "license": "MIT", - "dependencies": { - "esbuild": "^0.27.0", - "fdir": "^6.5.0", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" - }, - "bin": { - "vite": "bin/vite.js" - }, - "engines": { - "node": "^20.19.0 || >=22.12.0" - }, - "funding": { - "url": "https://github.com/vitejs/vite?sponsor=1" - }, - "optionalDependencies": { - "fsevents": "~2.3.3" - }, - "peerDependencies": { - "@types/node": "^20.19.0 || >=22.12.0", - "jiti": ">=1.21.0", - "less": "^4.0.0", - "lightningcss": "^1.21.0", - "sass": "^1.70.0", - "sass-embedded": "^1.70.0", - "stylus": ">=0.54.8", - "sugarss": "^5.0.0", - "terser": "^5.16.0", - "tsx": "^4.8.1", - "yaml": "^2.4.2" - }, - "peerDependenciesMeta": { - "@types/node": { - "optional": true - }, - "jiti": { - "optional": true - }, - "less": { - "optional": true - }, - "lightningcss": { - "optional": true - }, - "sass": { - "optional": true - }, - "sass-embedded": { - "optional": true - }, - "stylus": { - "optional": true - }, - "sugarss": { - "optional": true - }, - "terser": { - "optional": true - }, - "tsx": { - "optional": true - }, - "yaml": { - "optional": true - } - } - }, - "node_modules/vite-node": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", - "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", - "dev": true, - "license": "MIT", - "dependencies": { - "cac": "^6.7.14", - "debug": "^4.4.1", - "es-module-lexer": "^1.7.0", - "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "bin": { - "vite-node": "vite-node.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "node_modules/vite-node/node_modules/es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "dev": true, - "license": "MIT" - }, - "node_modules/vite/node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, - "node_modules/vite/node_modules/fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/vite/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/wcwidth": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "defaults": "^1.0.3" - } - }, - "node_modules/which": { - "version": "2.0.2", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "node-which": "bin/node-which" - }, - "engines": { - "node": ">= 8" - } - }, - "node_modules/why-is-node-running": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", - "dev": true, - "license": "MIT", - "dependencies": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - }, - "bin": { - "why-is-node-running": "cli.js" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/widest-line": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "string-width": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wordwrap": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/worker-factory": { - "version": "7.0.46", - "resolved": "https://registry.npmjs.org/worker-factory/-/worker-factory-7.0.46.tgz", - "integrity": "sha512-Sr1hq2FMgNa04UVhYQacsw+i58BtMimzDb4+CqYphZ97OfefRpURu0UZ+JxMr/H36VVJBfuVkxTK7MytsanC3w==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.28.4", - "fast-unique-numbers": "^9.0.24", - "tslib": "^2.8.1" - } - }, - "node_modules/worker-timers": { - "version": "8.0.26", - "resolved": "https://registry.npmjs.org/worker-timers/-/worker-timers-8.0.26.tgz", - "integrity": "sha512-Yfr8t1SfvA5Qwr5JlvTHVd0aI1r1kQ+dtJQ5aHjNleK/GRIOrwtoEUnGhwumLR9qH6YghFZsqD9w8IzsP7RHwg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.28.4", - "tslib": "^2.8.1", - "worker-timers-broker": "^8.0.12", - "worker-timers-worker": "^9.0.11" - } - }, - "node_modules/worker-timers-broker": { - "version": "8.0.12", - "resolved": "https://registry.npmjs.org/worker-timers-broker/-/worker-timers-broker-8.0.12.tgz", - "integrity": "sha512-Udml0yZv59tj/5Y2eCW2bYmrBgFSYmg0MXSzlDUdmsjcmf272hJaY8R3TWteetfL6tmL2+yJwRmcJgDtwCcOZg==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.28.4", - "broker-factory": "^3.1.10", - "fast-unique-numbers": "^9.0.24", - "tslib": "^2.8.1", - "worker-timers-worker": "^9.0.11" - } - }, - "node_modules/worker-timers-worker": { - "version": "9.0.11", - "resolved": "https://registry.npmjs.org/worker-timers-worker/-/worker-timers-worker-9.0.11.tgz", - "integrity": "sha512-pArb5xtgHWImYpXhjg1OFv7JFG0ubmccb73TFoXHXjG830fFj+16N57q9YeBnZX52dn+itRrMoJZ9HaZBVzDaA==", - "license": "MIT", - "dependencies": { - "@babel/runtime": "^7.28.4", - "tslib": "^2.8.1", - "worker-factory": "^7.0.46" - } - }, - "node_modules/wrap-ansi": { - "version": "7.0.0", - "license": "MIT", - "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/wrap-ansi-cjs": { - "name": "wrap-ansi", - "version": "7.0.0", - "license": "MIT", - "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/wrappy": { - "version": "1.0.2", - "license": "ISC" - }, - "node_modules/ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - }, - "peerDependencies": { - "bufferutil": "^4.0.1", - "utf-8-validate": ">=5.0.2" - }, - "peerDependenciesMeta": { - "bufferutil": { - "optional": true - }, - "utf-8-validate": { - "optional": true - } - } - }, - "node_modules/y18n": { - "version": "5.0.8", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "node_modules/yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "dev": true, - "license": "BlueOak-1.0.0", - "engines": { - "node": ">=18" - } - }, - "node_modules/yaml": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.4.tgz", - "integrity": "sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==", - "dev": true, - "license": "ISC", - "bin": { - "yaml": "bin.mjs" - }, - "engines": { - "node": ">= 14.6" - }, - "funding": { - "url": "https://github.com/sponsors/eemeli" - } - }, - "node_modules/yargs": { - "version": "17.7.1", - "dev": true, - "license": "MIT", - "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", - "dev": true, - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "node_modules/yn": { - "version": "3.1.1", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yoctocolors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", - "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/yoctocolors-cjs": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", - "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/zip-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", - "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", - "license": "MIT", - "dependencies": { - "archiver-utils": "^5.0.0", - "compress-commons": "^6.0.2", - "readable-stream": "^4.0.0" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/zip-stream/node_modules/buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "node_modules/zip-stream/node_modules/readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "license": "MIT", - "dependencies": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - } - }, - "packages/cli": { - "name": "checkly", - "version": "0.0.1-dev", - "license": "Apache-2.0", - "dependencies": { - "@oclif/core": "^4.11.1", - "@oclif/plugin-help": "^6.2.46", - "@oclif/plugin-warn-if-update-available": "^3.1.62", - "@typescript-eslint/typescript-estree": "^8.59.2", - "acorn": "^8.16.0", - "acorn-walk": "^8.3.5", - "archiver": "7.0.1", - "axios": "^1.16.0", - "chalk": "^4.1.2", - "ci-info": "^4.4.0", - "conf": "^10.2.0", - "debug": "^4.4.3", - "dotenv": "^16.6.1", - "execa": "^9.6.1", - "git-repo-info": "^2.1.1", - "glob": "^10.5.0", - "indent-string": "^4.0.0", - "json-stream-stringify": "^3.1.6", - "json5": "^2.2.3", - "jwt-decode": "^4.0.0", - "log-symbols": "^4.1.0", - "luxon": "^3.7.2", - "minimatch": "^9.0.9", - "mqtt": "^5.15.1", - "open": "^8.4.2", - "p-queue": "^6.6.2", - "prompts": "^2.4.2", - "proxy-from-env": "^2.1.0", - "recast": "^0.23.11", - "semver": "^7.7.3", - "tunnel": "^0.0.6", - "uuid": "^11.1.1" - }, - "bin": { - "checkly": "bin/run" - }, - "devDependencies": { - "@playwright/test": "^1.59.1", - "@types/archiver": "^7.0.0", - "@types/config": "^3.3.5", - "@types/debug": "^4.1.13", - "@types/luxon": "^3.7.1", - "@types/node": "^22.19.17", - "@types/prompts": "^2.4.9", - "@types/semver": "^7.7.1", - "@types/tunnel": "^0.0.7", - "@types/uuid": "^10.0.0", - "@types/ws": "^8.5.5", - "config": "^3.3.12", - "cross-env": "^10.1.0", - "jiti": "^2.7.0", - "nanoid": "^3.3.12", - "oclif": "^4.23.0", - "rimraf": "^5.0.10", - "tar": "^7.5.14", - "ts-node": "^10.9.2", - "typescript": "^6.0.3", - "vitest": "^3.2.4" - }, - "engines": { - "node": "^18.19.0 || >=20.5.0" - }, - "peerDependencies": { - "jiti": ">=2", - "ts-node": ">=10" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - }, - "ts-node": { - "optional": true - } - } - }, - "packages/cli/node_modules/@types/node": { - "version": "22.19.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.17.tgz", - "integrity": "sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "packages/cli/node_modules/@vitest/expect": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", - "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "packages/cli/node_modules/@vitest/mocker": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", - "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "3.2.4", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.17" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "packages/cli/node_modules/@vitest/pretty-format": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", - "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "packages/cli/node_modules/@vitest/runner": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", - "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "3.2.4", - "pathe": "^2.0.3", - "strip-literal": "^3.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "packages/cli/node_modules/@vitest/snapshot": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", - "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.4", - "magic-string": "^0.30.17", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "packages/cli/node_modules/@vitest/spy": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", - "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^4.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "packages/cli/node_modules/@vitest/utils": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", - "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.4", - "loupe": "^3.1.4", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "packages/cli/node_modules/brace-expansion": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", - "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "packages/cli/node_modules/chai": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", - "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "packages/cli/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "packages/cli/node_modules/execa": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", - "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", - "license": "MIT", - "dependencies": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.6", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.1", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", - "pretty-ms": "^9.2.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.1.1" - }, - "engines": { - "node": "^18.19.0 || >=20.5.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "packages/cli/node_modules/get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", - "license": "MIT", - "dependencies": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/cli/node_modules/human-signals": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", - "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==", - "license": "Apache-2.0", - "engines": { - "node": ">=18.18.0" - } - }, - "packages/cli/node_modules/is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/cli/node_modules/jiti": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", - "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "packages/cli/node_modules/minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "license": "ISC", - "dependencies": { - "brace-expansion": "^2.0.2" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/cli/node_modules/npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", - "license": "MIT", - "dependencies": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/cli/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==", - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/cli/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "packages/cli/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==", - "license": "ISC", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "packages/cli/node_modules/std-env": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", - "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", - "dev": true, - "license": "MIT" - }, - "packages/cli/node_modules/strip-final-newline": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==", - "license": "MIT", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "packages/cli/node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true, - "license": "MIT" - }, - "packages/cli/node_modules/tinyrainbow": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", - "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "packages/cli/node_modules/typescript": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", - "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "packages/cli/node_modules/vitest": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", - "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.4", - "@vitest/mocker": "3.2.4", - "@vitest/pretty-format": "^3.2.4", - "@vitest/runner": "3.2.4", - "@vitest/snapshot": "3.2.4", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "debug": "^4.4.1", - "expect-type": "^1.2.1", - "magic-string": "^0.30.17", - "pathe": "^2.0.3", - "picomatch": "^4.0.2", - "std-env": "^3.9.0", - "tinybench": "^2.9.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.14", - "tinypool": "^1.1.1", - "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.4", - "why-is-node-running": "^2.3.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@types/debug": "^4.1.12", - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.2.4", - "@vitest/ui": "3.2.4", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@types/debug": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, - "packages/create-cli": { - "name": "create-checkly", - "version": "0.0.1-dev", - "license": "Apache-2.0", - "dependencies": { - "@oclif/core": "^4.11.1", - "@oclif/plugin-help": "^6.2.46", - "@oclif/plugin-warn-if-update-available": "^3.1.62", - "axios": "^1.16.0", - "chalk": "^4.1.2", - "debug": "^4.4.3", - "execa": "^5.1.1", - "giget": "^3.2.0", - "jiti": "^2.7.0", - "json5": "^2.2.3", - "ora": "^5.4.1", - "passwd-user": "^3.0.0", - "prompts": "^2.4.2", - "recast": "^0.23.11", - "unique-names-generator": "^4.7.1" - }, - "bin": { - "create-cli": "bin/run" - }, - "devDependencies": { - "@types/debug": "^4.1.13", - "@types/node": "^22.19.17", - "@types/prompts": "^2.4.9", - "@types/uuid": "^10.0.0", - "cross-env": "^10.1.0", - "rimraf": "^5.0.10", - "ts-node": "^10.9.2", - "typescript": "^6.0.3", - "uuid": "^11.1.1", - "vitest": "^3.2.4" - }, - "engines": { - "node": "^18.19.0 || >=20.5.0" - }, - "peerDependencies": { - "ts-node": ">=10" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } - } - }, - "packages/create-cli/node_modules/@types/node": { - "version": "22.19.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.17.tgz", - "integrity": "sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==", - "dev": true, - "license": "MIT", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "packages/create-cli/node_modules/@vitest/expect": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", - "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "packages/create-cli/node_modules/@vitest/mocker": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", - "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/spy": "3.2.4", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.17" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "msw": "^2.4.9", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "peerDependenciesMeta": { - "msw": { - "optional": true - }, - "vite": { - "optional": true - } - } - }, - "packages/create-cli/node_modules/@vitest/pretty-format": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", - "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "packages/create-cli/node_modules/@vitest/runner": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", - "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/utils": "3.2.4", - "pathe": "^2.0.3", - "strip-literal": "^3.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "packages/create-cli/node_modules/@vitest/snapshot": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", - "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.4", - "magic-string": "^0.30.17", - "pathe": "^2.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "packages/create-cli/node_modules/@vitest/spy": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", - "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", - "dev": true, - "license": "MIT", - "dependencies": { - "tinyspy": "^4.0.3" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "packages/create-cli/node_modules/@vitest/utils": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", - "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", - "dev": true, - "license": "MIT", - "dependencies": { - "@vitest/pretty-format": "3.2.4", - "loupe": "^3.1.4", - "tinyrainbow": "^2.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - } - }, - "packages/create-cli/node_modules/chai": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", - "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", - "dev": true, - "license": "MIT", - "dependencies": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - }, - "engines": { - "node": ">=18" - } - }, - "packages/create-cli/node_modules/chalk": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "packages/create-cli/node_modules/cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", - "license": "MIT", - "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "engines": { - "node": ">=4.8" - } - }, - "packages/create-cli/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==", - "engines": { - "node": ">=8" - } - }, - "packages/create-cli/node_modules/jiti": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", - "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, - "packages/create-cli/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==", - "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" - } - }, - "packages/create-cli/node_modules/passwd-user": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/passwd-user/-/passwd-user-3.0.0.tgz", - "integrity": "sha512-Iu90rROks+uDK00ppSewoZyqeCwjGR6W8PcY0Phl8YFWju/lRmIogQb98+vSb5RUeYkONL3IC4ZLBFg4FiE0Hg==", - "dependencies": { - "execa": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "packages/create-cli/node_modules/passwd-user/node_modules/execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dependencies": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "packages/create-cli/node_modules/passwd-user/node_modules/get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "packages/create-cli/node_modules/passwd-user/node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "packages/create-cli/node_modules/passwd-user/node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "packages/create-cli/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "packages/create-cli/node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "packages/create-cli/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "packages/create-cli/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "packages/create-cli/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "engines": { - "node": ">=0.10.0" - } - }, - "packages/create-cli/node_modules/std-env": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", - "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", - "dev": true, - "license": "MIT" - }, - "packages/create-cli/node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true, - "license": "MIT" - }, - "packages/create-cli/node_modules/tinyrainbow": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", - "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=14.0.0" - } - }, - "packages/create-cli/node_modules/typescript": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", - "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=14.17" - } - }, - "packages/create-cli/node_modules/vitest": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", - "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.4", - "@vitest/mocker": "3.2.4", - "@vitest/pretty-format": "^3.2.4", - "@vitest/runner": "3.2.4", - "@vitest/snapshot": "3.2.4", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "debug": "^4.4.1", - "expect-type": "^1.2.1", - "magic-string": "^0.30.17", - "pathe": "^2.0.3", - "picomatch": "^4.0.2", - "std-env": "^3.9.0", - "tinybench": "^2.9.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.14", - "tinypool": "^1.1.1", - "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.4", - "why-is-node-running": "^2.3.0" - }, - "bin": { - "vitest": "vitest.mjs" - }, - "engines": { - "node": "^18.0.0 || ^20.0.0 || >=22.0.0" - }, - "funding": { - "url": "https://opencollective.com/vitest" - }, - "peerDependencies": { - "@edge-runtime/vm": "*", - "@types/debug": "^4.1.12", - "@types/node": "^18.0.0 || ^20.0.0 || >=22.0.0", - "@vitest/browser": "3.2.4", - "@vitest/ui": "3.2.4", - "happy-dom": "*", - "jsdom": "*" - }, - "peerDependenciesMeta": { - "@edge-runtime/vm": { - "optional": true - }, - "@types/debug": { - "optional": true - }, - "@types/node": { - "optional": true - }, - "@vitest/browser": { - "optional": true - }, - "@vitest/ui": { - "optional": true - }, - "happy-dom": { - "optional": true - }, - "jsdom": { - "optional": true - } - } - }, - "packages/create-cli/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - } - }, - "dependencies": { - "@aashutoshrathi/word-wrap": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", - "integrity": "sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==", - "dev": true - }, - "@aws-crypto/crc32": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32/-/crc32-5.2.0.tgz", - "integrity": "sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==", - "dev": true, - "requires": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - } - }, - "@aws-crypto/crc32c": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/crc32c/-/crc32c-5.2.0.tgz", - "integrity": "sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==", - "dev": true, - "requires": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - } - }, - "@aws-crypto/sha1-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha1-browser/-/sha1-browser-5.2.0.tgz", - "integrity": "sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==", - "dev": true, - "requires": { - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - }, - "dependencies": { - "@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - }, - "@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "dev": true, - "requires": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - } - }, - "@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "dev": true, - "requires": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - } - } - } - }, - "@aws-crypto/sha256-browser": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-5.2.0.tgz", - "integrity": "sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==", - "dev": true, - "requires": { - "@aws-crypto/sha256-js": "^5.2.0", - "@aws-crypto/supports-web-crypto": "^5.2.0", - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - }, - "dependencies": { - "@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - }, - "@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "dev": true, - "requires": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - } - }, - "@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "dev": true, - "requires": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - } - } - } - }, - "@aws-crypto/sha256-js": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-5.2.0.tgz", - "integrity": "sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==", - "dev": true, - "requires": { - "@aws-crypto/util": "^5.2.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^2.6.2" - } - }, - "@aws-crypto/supports-web-crypto": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-5.2.0.tgz", - "integrity": "sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - }, - "@aws-crypto/util": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-5.2.0.tgz", - "integrity": "sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==", - "dev": true, - "requires": { - "@aws-sdk/types": "^3.222.0", - "@smithy/util-utf8": "^2.0.0", - "tslib": "^2.6.2" - }, - "dependencies": { - "@smithy/is-array-buffer": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-2.2.0.tgz", - "integrity": "sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - }, - "@smithy/util-buffer-from": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-2.2.0.tgz", - "integrity": "sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==", - "dev": true, - "requires": { - "@smithy/is-array-buffer": "^2.2.0", - "tslib": "^2.6.2" - } - }, - "@smithy/util-utf8": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-2.3.0.tgz", - "integrity": "sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==", - "dev": true, - "requires": { - "@smithy/util-buffer-from": "^2.2.0", - "tslib": "^2.6.2" - } - } - } - }, - "@aws-sdk/client-cloudfront": { - "version": "3.1009.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-cloudfront/-/client-cloudfront-3.1009.0.tgz", - "integrity": "sha512-KRac+gkuj3u49IyWkrudHRlP/q/faTto+1xRS7Aj6cDGewMIzgdQArrdZEJoVntbaVZHLM5s/NVmWORzBWNcSw==", - "dev": true, - "requires": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.20", - "@aws-sdk/credential-provider-node": "^3.972.21", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.8", - "@aws-sdk/middleware-user-agent": "^3.972.21", - "@aws-sdk/region-config-resolver": "^3.972.8", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.7", - "@smithy/config-resolver": "^4.4.11", - "@smithy/core": "^3.23.11", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.25", - "@smithy/middleware-retry": "^4.4.42", - "@smithy/middleware-serde": "^4.2.14", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.4.16", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.5", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.41", - "@smithy/util-defaults-mode-node": "^4.2.44", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", - "@smithy/util-stream": "^4.5.19", - "@smithy/util-utf8": "^4.2.2", - "@smithy/util-waiter": "^4.2.13", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/client-s3": { - "version": "3.1014.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/client-s3/-/client-s3-3.1014.0.tgz", - "integrity": "sha512-0XLrOT4Cm3NEhhiME7l/8LbTXS4KdsbR4dSrY207KNKTcHLLTZ9EXt4ZpgnTfLvWQF3pGP2us4Zi1fYLo0N+Ow==", - "dev": true, - "requires": { - "@aws-crypto/sha1-browser": "5.2.0", - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.973.23", - "@aws-sdk/credential-provider-node": "^3.972.24", - "@aws-sdk/middleware-bucket-endpoint": "^3.972.8", - "@aws-sdk/middleware-expect-continue": "^3.972.8", - "@aws-sdk/middleware-flexible-checksums": "^3.974.3", - "@aws-sdk/middleware-host-header": "^3.972.8", - "@aws-sdk/middleware-location-constraint": "^3.972.8", - "@aws-sdk/middleware-logger": "^3.972.8", - "@aws-sdk/middleware-recursion-detection": "^3.972.8", - "@aws-sdk/middleware-sdk-s3": "^3.972.23", - "@aws-sdk/middleware-ssec": "^3.972.8", - "@aws-sdk/middleware-user-agent": "^3.972.24", - "@aws-sdk/region-config-resolver": "^3.972.9", - "@aws-sdk/signature-v4-multi-region": "^3.996.11", - "@aws-sdk/types": "^3.973.6", - "@aws-sdk/util-endpoints": "^3.996.5", - "@aws-sdk/util-user-agent-browser": "^3.972.8", - "@aws-sdk/util-user-agent-node": "^3.973.10", - "@smithy/config-resolver": "^4.4.13", - "@smithy/core": "^3.23.12", - "@smithy/eventstream-serde-browser": "^4.2.12", - "@smithy/eventstream-serde-config-resolver": "^4.3.12", - "@smithy/eventstream-serde-node": "^4.2.12", - "@smithy/fetch-http-handler": "^5.3.15", - "@smithy/hash-blob-browser": "^4.2.13", - "@smithy/hash-node": "^4.2.12", - "@smithy/hash-stream-node": "^4.2.12", - "@smithy/invalid-dependency": "^4.2.12", - "@smithy/md5-js": "^4.2.12", - "@smithy/middleware-content-length": "^4.2.12", - "@smithy/middleware-endpoint": "^4.4.27", - "@smithy/middleware-retry": "^4.4.44", - "@smithy/middleware-serde": "^4.2.15", - "@smithy/middleware-stack": "^4.2.12", - "@smithy/node-config-provider": "^4.3.12", - "@smithy/node-http-handler": "^4.5.0", - "@smithy/protocol-http": "^5.3.12", - "@smithy/smithy-client": "^4.12.7", - "@smithy/types": "^4.13.1", - "@smithy/url-parser": "^4.2.12", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.43", - "@smithy/util-defaults-mode-node": "^4.2.47", - "@smithy/util-endpoints": "^3.3.3", - "@smithy/util-middleware": "^4.2.12", - "@smithy/util-retry": "^4.2.12", - "@smithy/util-stream": "^4.5.20", - "@smithy/util-utf8": "^4.2.2", - "@smithy/util-waiter": "^4.2.13", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/core": { - "version": "3.974.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/core/-/core-3.974.8.tgz", - "integrity": "sha512-njR2qoG6ZuB0kvAS2FyICsFZJ6gmCcf2X/7JcD14sUvGDm26wiZ5BrA6LOiUxKFEF+IVe7kdroxyE00YlkiYsw==", - "dev": true, - "requires": { - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/xml-builder": "^3.972.22", - "@smithy/core": "^3.23.17", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/signature-v4": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-retry": "^4.3.6", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/crc64-nvme": { - "version": "3.972.7", - "resolved": "https://registry.npmjs.org/@aws-sdk/crc64-nvme/-/crc64-nvme-3.972.7.tgz", - "integrity": "sha512-QUagVVBbC8gODCF6e1aV0mE2TXWB9Opz4k8EJFdNrujUVQm5R4AjJa1mpOqzwOuROBzqJU9zawzig7M96L8Ejg==", - "dev": true, - "requires": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/credential-provider-env": { - "version": "3.972.34", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.972.34.tgz", - "integrity": "sha512-XT0jtf8Fw9JE6ppsQeoNnZRiG+jqRixMT1v1ZR17G60UvVdsQmTG8nbEyHuEPfMxDXEhfdARaM/XiEhca4lGHQ==", - "dev": true, - "requires": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/credential-provider-http": { - "version": "3.972.36", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-http/-/credential-provider-http-3.972.36.tgz", - "integrity": "sha512-DPoGWfy7J7RKxvbf5kOKIGQkD2ek3dbKgzKIGrnLuvZBz5myU+Im/H6pmc14QcnFbqHMqxvtWSgRDSJW3qXLQg==", - "dev": true, - "requires": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/types": "^3.973.8", - "@smithy/fetch-http-handler": "^5.3.17", - "@smithy/node-http-handler": "^4.6.1", - "@smithy/property-provider": "^4.2.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "@smithy/util-stream": "^4.5.25", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/credential-provider-ini": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.972.38.tgz", - "integrity": "sha512-oDzUBu2MGJFgoar05sPMCwSrhw44ASyccrHzj66vO69OZqi7I6hZZxXfuPLC8OCzW7C+sU+bI73XHij41yekgQ==", - "dev": true, - "requires": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/credential-provider-env": "^3.972.34", - "@aws-sdk/credential-provider-http": "^3.972.36", - "@aws-sdk/credential-provider-login": "^3.972.38", - "@aws-sdk/credential-provider-process": "^3.972.34", - "@aws-sdk/credential-provider-sso": "^3.972.38", - "@aws-sdk/credential-provider-web-identity": "^3.972.38", - "@aws-sdk/nested-clients": "^3.997.6", - "@aws-sdk/types": "^3.973.8", - "@smithy/credential-provider-imds": "^4.2.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/credential-provider-login": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-login/-/credential-provider-login-3.972.38.tgz", - "integrity": "sha512-g1NosS8qe4OF++G2UFCM5ovSkgipC7YYor5KCWatG0UoMSO5YFj9C8muePlyVmOBV/WTI16Jo3/s1NUo/o1Bww==", - "dev": true, - "requires": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/nested-clients": "^3.997.6", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/credential-provider-node": { - "version": "3.972.39", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.972.39.tgz", - "integrity": "sha512-HEswDQyxUtadoZ/bJsPPENHg7R0Lzym5LuMksJeHvqhCOpP+rtkDLKI4/ZChH4w3cf5kG8n6bZuI8PzajoiqMg==", - "dev": true, - "requires": { - "@aws-sdk/credential-provider-env": "^3.972.34", - "@aws-sdk/credential-provider-http": "^3.972.36", - "@aws-sdk/credential-provider-ini": "^3.972.38", - "@aws-sdk/credential-provider-process": "^3.972.34", - "@aws-sdk/credential-provider-sso": "^3.972.38", - "@aws-sdk/credential-provider-web-identity": "^3.972.38", - "@aws-sdk/types": "^3.973.8", - "@smithy/credential-provider-imds": "^4.2.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/credential-provider-process": { - "version": "3.972.34", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.972.34.tgz", - "integrity": "sha512-T3IFs4EVmVi1dVN5RciFnklCANSzvrQd/VuHY9ThHSQmYkTogjcGkoJEr+oNUPQZnso52183088NqysMPji1/Q==", - "dev": true, - "requires": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/credential-provider-sso": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.972.38.tgz", - "integrity": "sha512-5ZxG+t0+3Q3QPh8KEjX6syskhgNf7I0MN7oGioTf6Lm1NTjfP7sIcYGNsthXC2qR8vcD3edNZwCr2ovfSSWuRA==", - "dev": true, - "requires": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/nested-clients": "^3.997.6", - "@aws-sdk/token-providers": "3.1041.0", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/credential-provider-web-identity": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.972.38.tgz", - "integrity": "sha512-lYHFF30DGI20jZcYX8cm6Ns0V7f1dDN6g/MBDLTyD/5iw+bXs3yBr2iAiHDkx4RFU5JgsnZvCHYKiRVPRdmOgw==", - "dev": true, - "requires": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/nested-clients": "^3.997.6", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/middleware-bucket-endpoint": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-bucket-endpoint/-/middleware-bucket-endpoint-3.972.10.tgz", - "integrity": "sha512-Vbc2frZH7wXlMNd+ZZSXUEs/l1Sv8Jj4zUnIfwrYF5lwaLdXHZ9xx4U3rjUcaye3HRhFVc+E5DbBxpRAbB16BA==", - "dev": true, - "requires": { - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-arn-parser": "^3.972.3", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-config-provider": "^4.2.2", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/middleware-expect-continue": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-expect-continue/-/middleware-expect-continue-3.972.10.tgz", - "integrity": "sha512-2Yn0f1Qiq/DjxYR3wfI3LokXnjOhFM7Ssn4LTdFDIxRMCE6I32MAsVnhPX1cUZsuVA9tiZtwwhlSLAtFGxAZlQ==", - "dev": true, - "requires": { - "@aws-sdk/types": "^3.973.8", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/middleware-flexible-checksums": { - "version": "3.974.16", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-flexible-checksums/-/middleware-flexible-checksums-3.974.16.tgz", - "integrity": "sha512-6ru8doI0/XzszqLIPXf0E/V7HhAw1Pu94010XCKYtBUfD0LxF0BuOzrUf8OQGR6j2o6wgKTHUniOmndQycHwCA==", - "dev": true, - "requires": { - "@aws-crypto/crc32": "5.2.0", - "@aws-crypto/crc32c": "5.2.0", - "@aws-crypto/util": "5.2.0", - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/crc64-nvme": "^3.972.7", - "@aws-sdk/types": "^3.973.8", - "@smithy/is-array-buffer": "^4.2.2", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-stream": "^4.5.25", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/middleware-host-header": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.972.10.tgz", - "integrity": "sha512-IJSsIMeVQ8MMCPbuh1AbltkFhLBLXn7aejzfX5YKT/VLDHn++Dcz8886tXckE+wQssyPUhaXrJhdakO2VilRhg==", - "dev": true, - "requires": { - "@aws-sdk/types": "^3.973.8", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/middleware-location-constraint": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-location-constraint/-/middleware-location-constraint-3.972.10.tgz", - "integrity": "sha512-rI3NZvJcEvjoD0+0PI0iUAwlPw2IlSlhyvgBK/3WkKJQE/YiKFedd9dMN2lVacdNxPNhxL/jzQaKQdrGtQagjQ==", - "dev": true, - "requires": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/middleware-logger": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.972.10.tgz", - "integrity": "sha512-OOuGvvz1Dm20SjZo5oEBePFqxt5nf8AwkNDSyUHvD9/bfNASmstcYxFAHUowy4n6Io7mWUZ04JURZwSBvyQanQ==", - "dev": true, - "requires": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/middleware-recursion-detection": { - "version": "3.972.11", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.972.11.tgz", - "integrity": "sha512-+zz6f79Kj9V5qFK2P+D8Ehjnw4AhphAlCAsPjUqEcInA9umtSSKMrHbSagEeOIsDNuvVrH98bjRHcyQukTrhaQ==", - "dev": true, - "requires": { - "@aws-sdk/types": "^3.973.8", - "@aws/lambda-invoke-store": "^0.2.2", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/middleware-sdk-s3": { - "version": "3.972.37", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-s3/-/middleware-sdk-s3-3.972.37.tgz", - "integrity": "sha512-Km7M+i8DrLArVzrid1gfxeGhYHBd3uxvE77g0s5a52zPSVosxzQBnJ0gwWb6NIp/DOk8gsBMhi7V+cpJG0ndTA==", - "dev": true, - "requires": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-arn-parser": "^3.972.3", - "@smithy/core": "^3.23.17", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/signature-v4": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "@smithy/util-config-provider": "^4.2.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-stream": "^4.5.25", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/middleware-ssec": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-ssec/-/middleware-ssec-3.972.10.tgz", - "integrity": "sha512-Gli9A0u8EVVb+5bFDGS/QbSVg28w/wpEidg1ggVcSj65BDTdGR6punsOcVjqdiu1i42WHWo51MCvARPIIz9juw==", - "dev": true, - "requires": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/middleware-user-agent": { - "version": "3.972.38", - "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.972.38.tgz", - "integrity": "sha512-iz+B29TXcAZsJpwB+AwG/TTGA5l/VnmMZ2UxtiySOZjI6gCdmviXPwdgzcmuazMy16rXoPY4mYCGe7zdNKfx5A==", - "dev": true, - "requires": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-endpoints": "^3.996.8", - "@smithy/core": "^3.23.17", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-retry": "^4.3.6", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/nested-clients": { - "version": "3.997.6", - "resolved": "https://registry.npmjs.org/@aws-sdk/nested-clients/-/nested-clients-3.997.6.tgz", - "integrity": "sha512-WBDnqatJl+kGObpfmfSxqnXeYTu3Me8wx8WCtvoxX3pfWrrTv8I4WTMSSs7PZqcRcVh8WeUKMgGFjMG+52SR1w==", - "dev": true, - "requires": { - "@aws-crypto/sha256-browser": "5.2.0", - "@aws-crypto/sha256-js": "5.2.0", - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/middleware-host-header": "^3.972.10", - "@aws-sdk/middleware-logger": "^3.972.10", - "@aws-sdk/middleware-recursion-detection": "^3.972.11", - "@aws-sdk/middleware-user-agent": "^3.972.38", - "@aws-sdk/region-config-resolver": "^3.972.13", - "@aws-sdk/signature-v4-multi-region": "^3.996.25", - "@aws-sdk/types": "^3.973.8", - "@aws-sdk/util-endpoints": "^3.996.8", - "@aws-sdk/util-user-agent-browser": "^3.972.10", - "@aws-sdk/util-user-agent-node": "^3.973.24", - "@smithy/config-resolver": "^4.4.17", - "@smithy/core": "^3.23.17", - "@smithy/fetch-http-handler": "^5.3.17", - "@smithy/hash-node": "^4.2.14", - "@smithy/invalid-dependency": "^4.2.14", - "@smithy/middleware-content-length": "^4.2.14", - "@smithy/middleware-endpoint": "^4.4.32", - "@smithy/middleware-retry": "^4.5.7", - "@smithy/middleware-serde": "^4.2.20", - "@smithy/middleware-stack": "^4.2.14", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/node-http-handler": "^4.6.1", - "@smithy/protocol-http": "^5.3.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-body-length-node": "^4.2.3", - "@smithy/util-defaults-mode-browser": "^4.3.49", - "@smithy/util-defaults-mode-node": "^4.2.54", - "@smithy/util-endpoints": "^3.4.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-retry": "^4.3.6", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/region-config-resolver": { - "version": "3.972.13", - "resolved": "https://registry.npmjs.org/@aws-sdk/region-config-resolver/-/region-config-resolver-3.972.13.tgz", - "integrity": "sha512-CvJ2ZIjK/jVD/lbOpowBVElJyC1YxLTIJ13yM0AEo0t2v7swOzGjSA6lJGH+DwZXQhcjUjoYwc8bVYCX5MDr1A==", - "dev": true, - "requires": { - "@aws-sdk/types": "^3.973.8", - "@smithy/config-resolver": "^4.4.17", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/signature-v4-multi-region": { - "version": "3.996.25", - "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4-multi-region/-/signature-v4-multi-region-3.996.25.tgz", - "integrity": "sha512-+CMIt3e1VzlklAECmG+DtP1sV8iKq25FuA0OKpnJ4KA0kxUtd7CgClY7/RU6VzJBQwbN4EJ9Ue6plvqx1qGadw==", - "dev": true, - "requires": { - "@aws-sdk/middleware-sdk-s3": "^3.972.37", - "@aws-sdk/types": "^3.973.8", - "@smithy/protocol-http": "^5.3.14", - "@smithy/signature-v4": "^5.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/token-providers": { - "version": "3.1041.0", - "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.1041.0.tgz", - "integrity": "sha512-Th7kPI6YPtvJUcdznooXJMy+9rQWjmEF81LxaJssngBzuysK4a/x+l8kjm1zb7nYsUPbndnBdUnwng/3PLvtGw==", - "dev": true, - "requires": { - "@aws-sdk/core": "^3.974.8", - "@aws-sdk/nested-clients": "^3.997.6", - "@aws-sdk/types": "^3.973.8", - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/types": { - "version": "3.973.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.973.8.tgz", - "integrity": "sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==", - "dev": true, - "requires": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/util-arn-parser": { - "version": "3.972.3", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-arn-parser/-/util-arn-parser-3.972.3.tgz", - "integrity": "sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - }, - "@aws-sdk/util-endpoints": { - "version": "3.996.8", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.996.8.tgz", - "integrity": "sha512-oOZHcRDihk5iEe5V25NVWg45b3qEA8OpHWVdU/XQh8Zj4heVPAJqWvMphQnU7LkufmUo10EpvFPZuQMiFLJK3g==", - "dev": true, - "requires": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-endpoints": "^3.4.2", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/util-locate-window": { - "version": "3.965.5", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.965.5.tgz", - "integrity": "sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - }, - "@aws-sdk/util-user-agent-browser": { - "version": "3.972.10", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.972.10.tgz", - "integrity": "sha512-FAzqXvfEssGdSIz8ejatan0bOdx1qefBWKF/gWmVBXIP1HkS7v/wjjaqrAGGKvyihrXTXW00/2/1nTJtxpXz7g==", - "dev": true, - "requires": { - "@aws-sdk/types": "^3.973.8", - "@smithy/types": "^4.14.1", - "bowser": "^2.11.0", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/util-user-agent-node": { - "version": "3.973.24", - "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.973.24.tgz", - "integrity": "sha512-ZWwlkjcIp7cEL8ZfTpTAPNkwx25p7xol0xlKoWVVf22+nsjwmLcHYtTPjIV1cSpmB/b6DaK4cb1fSkvCXHgRdw==", - "dev": true, - "requires": { - "@aws-sdk/middleware-user-agent": "^3.972.38", - "@aws-sdk/types": "^3.973.8", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-config-provider": "^4.2.2", - "tslib": "^2.6.2" - } - }, - "@aws-sdk/xml-builder": { - "version": "3.972.22", - "resolved": "https://registry.npmjs.org/@aws-sdk/xml-builder/-/xml-builder-3.972.22.tgz", - "integrity": "sha512-PMYKKtJd70IsSG0yHrdAbxBr+ZWBKLvzFZfD3/urxgf6hXVMzuU5M+3MJ5G67RpOmLBu1fAUN65SbWuKUCOlAA==", - "dev": true, - "requires": { - "@nodable/entities": "2.1.0", - "@smithy/types": "^4.14.1", - "fast-xml-parser": "5.7.2", - "tslib": "^2.6.2" - } - }, - "@aws/lambda-invoke-store": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/@aws/lambda-invoke-store/-/lambda-invoke-store-0.2.4.tgz", - "integrity": "sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==", - "dev": true - }, - "@babel/code-frame": { - "version": "7.29.0", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.29.0.tgz", - "integrity": "sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.28.5", - "js-tokens": "^4.0.0", - "picocolors": "^1.1.1" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.28.5", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.28.5.tgz", - "integrity": "sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==", - "dev": true - }, - "@babel/runtime": { - "version": "7.28.4", - "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.28.4.tgz", - "integrity": "sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==" - }, - "@commitlint/cli": { - "version": "20.5.3", - "resolved": "https://registry.npmjs.org/@commitlint/cli/-/cli-20.5.3.tgz", - "integrity": "sha512-OJdL0EXWD5y9LPa0nr/geOwzaS8BsdaybKkcloB0JgsguGxNv2R+hC2FTPqrAcprg35zF33KOQerY0x8W1aesA==", - "dev": true, - "requires": { - "@commitlint/format": "^20.5.0", - "@commitlint/lint": "^20.5.3", - "@commitlint/load": "^20.5.3", - "@commitlint/read": "^20.5.0", - "@commitlint/types": "^20.5.0", - "tinyexec": "^1.0.0", - "yargs": "^17.0.0" - } - }, - "@commitlint/config-conventional": { - "version": "20.5.3", - "resolved": "https://registry.npmjs.org/@commitlint/config-conventional/-/config-conventional-20.5.3.tgz", - "integrity": "sha512-j34Qqeaa152chJgz2ysyk0BCpHenJn1lV0Rx0VXf8k3ccQcED+48EZrzMvo9jLmJUyBrrBwvu89I+2er4gW7QQ==", - "dev": true, - "requires": { - "@commitlint/types": "^20.5.0", - "conventional-changelog-conventionalcommits": "^9.2.0" - } - }, - "@commitlint/config-validator": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/config-validator/-/config-validator-20.5.0.tgz", - "integrity": "sha512-T/Uh6iJUzyx7j35GmHWdIiGRQB+ouZDk0pwAaYq4SXgB54KZhFdJ0vYmxiW6AMYICTIWuyMxDBl1jK74oFp/Gw==", - "dev": true, - "requires": { - "@commitlint/types": "^20.5.0", - "ajv": "^8.11.0" - } - }, - "@commitlint/ensure": { - "version": "20.5.3", - "resolved": "https://registry.npmjs.org/@commitlint/ensure/-/ensure-20.5.3.tgz", - "integrity": "sha512-4i4AgNvH62owG9MwSiWKrle7HGNpBHHdLnWFIp5fTsHUYe5kRuh15t08L/0pdbbrRk8JKXQxxN4hZQcn+szkrw==", - "dev": true, - "requires": { - "@commitlint/types": "^20.5.0", - "es-toolkit": "^1.46.0" - } - }, - "@commitlint/execute-rule": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/execute-rule/-/execute-rule-20.0.0.tgz", - "integrity": "sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==", - "dev": true - }, - "@commitlint/format": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/format/-/format-20.5.0.tgz", - "integrity": "sha512-TI9EwFU/qZWSK7a5qyXMpKPPv3qta7FO4tKW+Wt2al7sgMbLWTsAcDpX1cU8k16TRdsiiet9aOw0zpvRXNJu7Q==", - "dev": true, - "requires": { - "@commitlint/types": "^20.5.0", - "picocolors": "^1.1.1" - } - }, - "@commitlint/is-ignored": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/is-ignored/-/is-ignored-20.5.0.tgz", - "integrity": "sha512-JWLarAsurHJhPozbuAH6GbP4p/hdOCoqS9zJMfqwswne+/GPs5V0+rrsfOkP68Y8PSLphwtFXV0EzJ+GTXTTGg==", - "dev": true, - "requires": { - "@commitlint/types": "^20.5.0", - "semver": "^7.6.0" - } - }, - "@commitlint/lint": { - "version": "20.5.3", - "resolved": "https://registry.npmjs.org/@commitlint/lint/-/lint-20.5.3.tgz", - "integrity": "sha512-M7JbWBNr2gXKaPc4i/KipsuW1gkDHpj35KPjWtKy3Z+2AQw5wu1gBi1LIO0uoaij67CqY4K8PxPZSGens4evCw==", - "dev": true, - "requires": { - "@commitlint/is-ignored": "^20.5.0", - "@commitlint/parse": "^20.5.0", - "@commitlint/rules": "^20.5.3", - "@commitlint/types": "^20.5.0" - } - }, - "@commitlint/load": { - "version": "20.5.3", - "resolved": "https://registry.npmjs.org/@commitlint/load/-/load-20.5.3.tgz", - "integrity": "sha512-1FDZWuKyu98Myb8i7Tp31jPU2rZpOwAdYRyJcy2KoGg7Xk2A+bgHN8smhMaaNSNkmE8fwt53BokywZq8Gv/5XQ==", - "dev": true, - "requires": { - "@commitlint/config-validator": "^20.5.0", - "@commitlint/execute-rule": "^20.0.0", - "@commitlint/resolve-extends": "^20.5.3", - "@commitlint/types": "^20.5.0", - "cosmiconfig": "^9.0.1", - "cosmiconfig-typescript-loader": "^6.1.0", - "es-toolkit": "^1.46.0", - "is-plain-obj": "^4.1.0", - "picocolors": "^1.1.1" - } - }, - "@commitlint/message": { - "version": "20.4.3", - "resolved": "https://registry.npmjs.org/@commitlint/message/-/message-20.4.3.tgz", - "integrity": "sha512-6akwCYrzcrFcTYz9GyUaWlhisY4lmQ3KvrnabmhoeAV8nRH4dXJAh4+EUQ3uArtxxKQkvxJS78hNX2EU3USgxQ==", - "dev": true - }, - "@commitlint/parse": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/parse/-/parse-20.5.0.tgz", - "integrity": "sha512-SeKWHBMk7YOTnnEWUhx+d1a9vHsjjuo6Uo1xRfPNfeY4bdYFasCH1dDpAv13Lyn+dDPOels+jP6D2GRZqzc5fA==", - "dev": true, - "requires": { - "@commitlint/types": "^20.5.0", - "conventional-changelog-angular": "^8.2.0", - "conventional-commits-parser": "^6.3.0" - } - }, - "@commitlint/read": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/read/-/read-20.5.0.tgz", - "integrity": "sha512-JDEIJ2+GnWpK8QqwfmW7O42h0aycJEWNqcdkJnyzLD11nf9dW2dWLTVEa8Wtlo4IZFGLPATjR5neA5QlOvIH1w==", - "dev": true, - "requires": { - "@commitlint/top-level": "^20.4.3", - "@commitlint/types": "^20.5.0", - "git-raw-commits": "^5.0.0", - "minimist": "^1.2.8", - "tinyexec": "^1.0.0" - } - }, - "@commitlint/resolve-extends": { - "version": "20.5.3", - "resolved": "https://registry.npmjs.org/@commitlint/resolve-extends/-/resolve-extends-20.5.3.tgz", - "integrity": "sha512-+ogW9v/u9JqpvAgTrLra/YTFo0KkjU6iNblF89pPsj4NebNc+DAWctsludwezI8YnsjBmfHpApSwcXprN/f/ew==", - "dev": true, - "requires": { - "@commitlint/config-validator": "^20.5.0", - "@commitlint/types": "^20.5.0", - "es-toolkit": "^1.46.0", - "global-directory": "^5.0.0", - "import-meta-resolve": "^4.0.0", - "resolve-from": "^5.0.0" - } - }, - "@commitlint/rules": { - "version": "20.5.3", - "resolved": "https://registry.npmjs.org/@commitlint/rules/-/rules-20.5.3.tgz", - "integrity": "sha512-MPlMnb9D3wbszYMp+1hPtuhtPJndRo6I6yfkZVA4+jR8w7Kqp0u2u/Y+gzbaItx5Lltq5rw7FSZQWJMoXUC4NQ==", - "dev": true, - "requires": { - "@commitlint/ensure": "^20.5.3", - "@commitlint/message": "^20.4.3", - "@commitlint/to-lines": "^20.0.0", - "@commitlint/types": "^20.5.0" - } - }, - "@commitlint/to-lines": { - "version": "20.0.0", - "resolved": "https://registry.npmjs.org/@commitlint/to-lines/-/to-lines-20.0.0.tgz", - "integrity": "sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==", - "dev": true - }, - "@commitlint/top-level": { - "version": "20.4.3", - "resolved": "https://registry.npmjs.org/@commitlint/top-level/-/top-level-20.4.3.tgz", - "integrity": "sha512-qD9xfP6dFg5jQ3NMrOhG0/w5y3bBUsVGyJvXxdWEwBm8hyx4WOk3kKXw28T5czBYvyeCVJgJJ6aoJZUWDpaacQ==", - "dev": true, - "requires": { - "escalade": "^3.2.0" - } - }, - "@commitlint/types": { - "version": "20.5.0", - "resolved": "https://registry.npmjs.org/@commitlint/types/-/types-20.5.0.tgz", - "integrity": "sha512-ZJoS8oSq2CAZEpc/YI9SulLrdiIyXeHb/OGqGrkUP6Q7YV+0ouNAa7GjqRdXeQPncHQIDz/jbCTlHScvYvO/gA==", - "dev": true, - "requires": { - "conventional-commits-parser": "^6.3.0", - "picocolors": "^1.1.1" - } - }, - "@conventional-changelog/git-client": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/@conventional-changelog/git-client/-/git-client-2.7.0.tgz", - "integrity": "sha512-j7A8/LBEQ+3rugMzPXoKYzyUPpw/0CBQCyvtTR7Lmu4olG4yRC/Tfkq79Mr3yuPs0SUitlO2HwGP3gitMJnRFw==", - "dev": true, - "requires": { - "@simple-libs/child-process-utils": "^1.0.0", - "@simple-libs/stream-utils": "^1.2.0", - "semver": "^7.5.2" - } - }, - "@cspotcode/source-map-support": { - "version": "0.8.1", - "dev": true, - "requires": { - "@jridgewell/trace-mapping": "0.3.9" - } - }, - "@epic-web/invariant": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@epic-web/invariant/-/invariant-1.0.0.tgz", - "integrity": "sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==", - "dev": true - }, - "@esbuild/aix-ppc64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.27.7.tgz", - "integrity": "sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.27.7.tgz", - "integrity": "sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==", - "dev": true, - "optional": true - }, - "@esbuild/android-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.27.7.tgz", - "integrity": "sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==", - "dev": true, - "optional": true - }, - "@esbuild/android-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.27.7.tgz", - "integrity": "sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.27.7.tgz", - "integrity": "sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==", - "dev": true, - "optional": true - }, - "@esbuild/darwin-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.27.7.tgz", - "integrity": "sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.27.7.tgz", - "integrity": "sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==", - "dev": true, - "optional": true - }, - "@esbuild/freebsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.27.7.tgz", - "integrity": "sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.27.7.tgz", - "integrity": "sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==", - "dev": true, - "optional": true - }, - "@esbuild/linux-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.27.7.tgz", - "integrity": "sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ia32": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.27.7.tgz", - "integrity": "sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==", - "dev": true, - "optional": true - }, - "@esbuild/linux-loong64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.27.7.tgz", - "integrity": "sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==", - "dev": true, - "optional": true - }, - "@esbuild/linux-mips64el": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.27.7.tgz", - "integrity": "sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-ppc64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.27.7.tgz", - "integrity": "sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-riscv64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.27.7.tgz", - "integrity": "sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==", - "dev": true, - "optional": true - }, - "@esbuild/linux-s390x": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.27.7.tgz", - "integrity": "sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==", - "dev": true, - "optional": true - }, - "@esbuild/linux-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.27.7.tgz", - "integrity": "sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.27.7.tgz", - "integrity": "sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==", - "dev": true, - "optional": true - }, - "@esbuild/netbsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.27.7.tgz", - "integrity": "sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.27.7.tgz", - "integrity": "sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==", - "dev": true, - "optional": true - }, - "@esbuild/openbsd-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.27.7.tgz", - "integrity": "sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==", - "dev": true, - "optional": true - }, - "@esbuild/openharmony-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.27.7.tgz", - "integrity": "sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==", - "dev": true, - "optional": true - }, - "@esbuild/sunos-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.27.7.tgz", - "integrity": "sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==", - "dev": true, - "optional": true - }, - "@esbuild/win32-arm64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.27.7.tgz", - "integrity": "sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==", - "dev": true, - "optional": true - }, - "@esbuild/win32-ia32": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.27.7.tgz", - "integrity": "sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==", - "dev": true, - "optional": true - }, - "@esbuild/win32-x64": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.27.7.tgz", - "integrity": "sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==", - "dev": true, - "optional": true - }, - "@eslint-community/eslint-utils": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", - "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", - "dev": true, - "requires": { - "eslint-visitor-keys": "^3.4.3" - } - }, - "@eslint-community/regexpp": { - "version": "4.12.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.12.2.tgz", - "integrity": "sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==", - "dev": true - }, - "@eslint/config-array": { - "version": "0.23.5", - "resolved": "https://registry.npmjs.org/@eslint/config-array/-/config-array-0.23.5.tgz", - "integrity": "sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==", - "dev": true, - "requires": { - "@eslint/object-schema": "^3.0.5", - "debug": "^4.3.1", - "minimatch": "^10.2.4" - }, - "dependencies": { - "balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true - }, - "brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, - "requires": { - "balanced-match": "^4.0.2" - } - }, - "minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "requires": { - "brace-expansion": "^5.0.5" - } - } - } - }, - "@eslint/config-helpers": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.5.5.tgz", - "integrity": "sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==", - "dev": true, - "requires": { - "@eslint/core": "^1.2.1" - } - }, - "@eslint/core": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@eslint/core/-/core-1.2.1.tgz", - "integrity": "sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.15" - } - }, - "@eslint/js": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-10.0.1.tgz", - "integrity": "sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==", - "dev": true, - "requires": {} - }, - "@eslint/object-schema": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/@eslint/object-schema/-/object-schema-3.0.5.tgz", - "integrity": "sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==", - "dev": true - }, - "@eslint/plugin-kit": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/@eslint/plugin-kit/-/plugin-kit-0.7.1.tgz", - "integrity": "sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==", - "dev": true, - "requires": { - "@eslint/core": "^1.2.1", - "levn": "^0.4.1" - } - }, - "@humanfs/core": { - "version": "0.19.1", - "resolved": "https://registry.npmjs.org/@humanfs/core/-/core-0.19.1.tgz", - "integrity": "sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==", - "dev": true - }, - "@humanfs/node": { - "version": "0.16.6", - "resolved": "https://registry.npmjs.org/@humanfs/node/-/node-0.16.6.tgz", - "integrity": "sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==", - "dev": true, - "requires": { - "@humanfs/core": "^0.19.1", - "@humanwhocodes/retry": "^0.3.0" - }, - "dependencies": { - "@humanwhocodes/retry": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.3.1.tgz", - "integrity": "sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==", - "dev": true - } - } - }, - "@humanwhocodes/module-importer": { - "version": "1.0.1", - "dev": true - }, - "@humanwhocodes/retry": { - "version": "0.4.2", - "resolved": "https://registry.npmjs.org/@humanwhocodes/retry/-/retry-0.4.2.tgz", - "integrity": "sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==", - "dev": true - }, - "@inquirer/ansi": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@inquirer/ansi/-/ansi-1.0.2.tgz", - "integrity": "sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==", - "dev": true - }, - "@inquirer/checkbox": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/checkbox/-/checkbox-4.3.2.tgz", - "integrity": "sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==", - "dev": true, - "requires": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "dependencies": { - "@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "requires": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - } - }, - "@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "requires": {} - }, - "mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "@inquirer/confirm": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-3.2.0.tgz", - "integrity": "sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==", - "dev": true, - "requires": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3" - } - }, - "@inquirer/core": { - "version": "9.2.1", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-9.2.1.tgz", - "integrity": "sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==", - "dev": true, - "requires": { - "@inquirer/figures": "^1.0.6", - "@inquirer/type": "^2.0.0", - "@types/mute-stream": "^0.0.4", - "@types/node": "^22.5.5", - "@types/wrap-ansi": "^3.0.0", - "ansi-escapes": "^4.3.2", - "cli-width": "^4.1.0", - "mute-stream": "^1.0.0", - "signal-exit": "^4.1.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.2" - }, - "dependencies": { - "@inquirer/type": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-2.0.0.tgz", - "integrity": "sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==", - "dev": true, - "requires": { - "mute-stream": "^1.0.0" - } - }, - "@types/node": { - "version": "22.14.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", - "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "@inquirer/editor": { - "version": "4.2.23", - "resolved": "https://registry.npmjs.org/@inquirer/editor/-/editor-4.2.23.tgz", - "integrity": "sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==", - "dev": true, - "requires": { - "@inquirer/core": "^10.3.2", - "@inquirer/external-editor": "^1.0.3", - "@inquirer/type": "^3.0.10" - }, - "dependencies": { - "@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "requires": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - } - }, - "@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "requires": {} - }, - "mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "@inquirer/expand": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/expand/-/expand-4.0.23.tgz", - "integrity": "sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==", - "dev": true, - "requires": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "dependencies": { - "@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "requires": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - } - }, - "@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "requires": {} - }, - "mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "@inquirer/external-editor": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/@inquirer/external-editor/-/external-editor-1.0.3.tgz", - "integrity": "sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==", - "dev": true, - "requires": { - "chardet": "^2.1.1", - "iconv-lite": "^0.7.0" - } - }, - "@inquirer/figures": { - "version": "1.0.15", - "resolved": "https://registry.npmjs.org/@inquirer/figures/-/figures-1.0.15.tgz", - "integrity": "sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==", - "dev": true - }, - "@inquirer/input": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-2.3.0.tgz", - "integrity": "sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==", - "dev": true, - "requires": { - "@inquirer/core": "^9.1.0", - "@inquirer/type": "^1.5.3" - } - }, - "@inquirer/number": { - "version": "3.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/number/-/number-3.0.23.tgz", - "integrity": "sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==", - "dev": true, - "requires": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "dependencies": { - "@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "requires": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - } - }, - "@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "requires": {} - }, - "mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "@inquirer/password": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@inquirer/password/-/password-4.0.23.tgz", - "integrity": "sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==", - "dev": true, - "requires": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - }, - "dependencies": { - "@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "requires": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - } - }, - "@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "requires": {} - }, - "mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "@inquirer/prompts": { - "version": "7.10.1", - "resolved": "https://registry.npmjs.org/@inquirer/prompts/-/prompts-7.10.1.tgz", - "integrity": "sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==", - "dev": true, - "requires": { - "@inquirer/checkbox": "^4.3.2", - "@inquirer/confirm": "^5.1.21", - "@inquirer/editor": "^4.2.23", - "@inquirer/expand": "^4.0.23", - "@inquirer/input": "^4.3.1", - "@inquirer/number": "^3.0.23", - "@inquirer/password": "^4.0.23", - "@inquirer/rawlist": "^4.1.11", - "@inquirer/search": "^3.2.2", - "@inquirer/select": "^4.4.2" - }, - "dependencies": { - "@inquirer/confirm": { - "version": "5.1.21", - "resolved": "https://registry.npmjs.org/@inquirer/confirm/-/confirm-5.1.21.tgz", - "integrity": "sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==", - "dev": true, - "requires": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - } - }, - "@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "requires": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - } - }, - "@inquirer/input": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@inquirer/input/-/input-4.3.1.tgz", - "integrity": "sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==", - "dev": true, - "requires": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10" - } - }, - "@inquirer/select": { - "version": "4.4.2", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-4.4.2.tgz", - "integrity": "sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==", - "dev": true, - "requires": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - } - }, - "@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "requires": {} - }, - "mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "@inquirer/rawlist": { - "version": "4.1.11", - "resolved": "https://registry.npmjs.org/@inquirer/rawlist/-/rawlist-4.1.11.tgz", - "integrity": "sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==", - "dev": true, - "requires": { - "@inquirer/core": "^10.3.2", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "dependencies": { - "@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "requires": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - } - }, - "@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "requires": {} - }, - "mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "@inquirer/search": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/@inquirer/search/-/search-3.2.2.tgz", - "integrity": "sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==", - "dev": true, - "requires": { - "@inquirer/core": "^10.3.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "yoctocolors-cjs": "^2.1.3" - }, - "dependencies": { - "@inquirer/core": { - "version": "10.3.2", - "resolved": "https://registry.npmjs.org/@inquirer/core/-/core-10.3.2.tgz", - "integrity": "sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==", - "dev": true, - "requires": { - "@inquirer/ansi": "^1.0.2", - "@inquirer/figures": "^1.0.15", - "@inquirer/type": "^3.0.10", - "cli-width": "^4.1.0", - "mute-stream": "^2.0.0", - "signal-exit": "^4.1.0", - "wrap-ansi": "^6.2.0", - "yoctocolors-cjs": "^2.1.3" - } - }, - "@inquirer/type": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-3.0.10.tgz", - "integrity": "sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==", - "dev": true, - "requires": {} - }, - "mute-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-2.0.0.tgz", - "integrity": "sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==", - "dev": true - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "@inquirer/select": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@inquirer/select/-/select-2.5.0.tgz", - "integrity": "sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==", - "dev": true, - "requires": { - "@inquirer/core": "^9.1.0", - "@inquirer/figures": "^1.0.5", - "@inquirer/type": "^1.5.3", - "ansi-escapes": "^4.3.2", - "yoctocolors-cjs": "^2.1.2" - } - }, - "@inquirer/type": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@inquirer/type/-/type-1.5.5.tgz", - "integrity": "sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==", - "dev": true, - "requires": { - "mute-stream": "^1.0.0" - } - }, - "@isaacs/cliui": { - "version": "8.0.2", - "requires": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.0.1" - }, - "ansi-styles": { - "version": "6.2.1" - }, - "emoji-regex": { - "version": "9.2.2" - }, - "string-width": { - "version": "5.1.2", - "requires": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" - } - }, - "strip-ansi": { - "version": "7.1.0", - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "8.1.0", - "requires": { - "ansi-styles": "^6.1.0", - "string-width": "^5.0.1", - "strip-ansi": "^7.0.1" - } - } - } - }, - "@isaacs/fs-minipass": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@isaacs/fs-minipass/-/fs-minipass-4.0.1.tgz", - "integrity": "sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==", - "dev": true, - "requires": { - "minipass": "^7.0.4" - } - }, - "@jridgewell/resolve-uri": { - "version": "3.1.0", - "dev": true - }, - "@jridgewell/sourcemap-codec": { - "version": "1.5.5", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.5.tgz", - "integrity": "sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==", - "dev": true - }, - "@jridgewell/trace-mapping": { - "version": "0.3.9", - "dev": true, - "requires": { - "@jridgewell/resolve-uri": "^3.0.3", - "@jridgewell/sourcemap-codec": "^1.4.10" - } - }, - "@nodable/entities": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@nodable/entities/-/entities-2.1.0.tgz", - "integrity": "sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==", - "dev": true - }, - "@oclif/core": { - "version": "4.11.1", - "resolved": "https://registry.npmjs.org/@oclif/core/-/core-4.11.1.tgz", - "integrity": "sha512-+N5yqeoOKPnT0p+ZJiNutMILsZukZrEpsVup24XERla594EkGSWS9tiCqRfvzr1xfvf/AhM9pb0yPaf8L3Y9Uw==", - "requires": { - "ansi-escapes": "^4.3.2", - "ansis": "^3.17.0", - "clean-stack": "^3.0.1", - "cli-spinners": "^2.9.2", - "debug": "^4.4.3", - "ejs": "^3.1.10", - "get-package-type": "^0.1.0", - "indent-string": "^4.0.0", - "is-wsl": "^2.2.0", - "lilconfig": "^3.1.3", - "minimatch": "^10.2.5", - "semver": "^7.7.3", - "string-width": "^4.2.3", - "supports-color": "^8", - "tinyglobby": "^0.2.14", - "widest-line": "^3.1.0", - "wordwrap": "^1.0.0", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==" - }, - "brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "requires": { - "balanced-match": "^4.0.2" - } - }, - "minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "requires": { - "brace-expansion": "^5.0.5" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@oclif/plugin-help": { - "version": "6.2.46", - "resolved": "https://registry.npmjs.org/@oclif/plugin-help/-/plugin-help-6.2.46.tgz", - "integrity": "sha512-KmuMFt/fURCVxor0rrRjEqs2nLN0Y3ixcixo/M5VjKcN920gbuw5T+AF23FBeyUDuW/Dg79YPcTWy/Rtz0Dg/A==", - "requires": { - "@oclif/core": "^4" - } - }, - "@oclif/plugin-not-found": { - "version": "3.2.82", - "resolved": "https://registry.npmjs.org/@oclif/plugin-not-found/-/plugin-not-found-3.2.82.tgz", - "integrity": "sha512-6heNFE2gadcDYijWy4XJc6ZLzPd1qKe0i8sb8uyrR3mX0o5IFA+5KSAx/BFBkGS8j/tKOsCYvvmMKVdReeb1Gg==", - "dev": true, - "requires": { - "@inquirer/prompts": "^7.10.1", - "@oclif/core": "^4.11.0", - "ansis": "^3.17.0", - "fast-levenshtein": "^3.0.0" - }, - "dependencies": { - "fast-levenshtein": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-3.0.0.tgz", - "integrity": "sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==", - "dev": true, - "requires": { - "fastest-levenshtein": "^1.0.7" - } - } - } - }, - "@oclif/plugin-warn-if-update-available": { - "version": "3.1.62", - "resolved": "https://registry.npmjs.org/@oclif/plugin-warn-if-update-available/-/plugin-warn-if-update-available-3.1.62.tgz", - "integrity": "sha512-g1tOOf9tJ3RE4dqhUynw3TH8Gea78IkzG9hq2lcUJ5wIdOSzcp8+3SWVzzpKfHgwBGgFupmj8peCjypybJVIrg==", - "requires": { - "@oclif/core": "^4", - "ansis": "^3.17.0", - "debug": "^4.4.3", - "http-call": "^5.2.2", - "lodash": "^4.18.1", - "registry-auth-token": "^5.1.1" - } - }, - "@pkgjs/parseargs": { - "version": "0.11.0", - "optional": true - }, - "@playwright/test": { - "version": "1.59.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.59.1.tgz", - "integrity": "sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==", - "dev": true, - "requires": { - "playwright": "1.59.1" - } - }, - "@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==" - }, - "@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==", - "requires": { - "graceful-fs": "4.2.10" - } - }, - "@pnpm/npm-conf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-3.0.2.tgz", - "integrity": "sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==", - "requires": { - "@pnpm/config.env-replace": "^1.1.0", - "@pnpm/network.ca-file": "^1.0.1", - "config-chain": "^1.1.11" - } - }, - "@rollup/rollup-android-arm-eabi": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.60.3.tgz", - "integrity": "sha512-x35CNW/ANXG3hE/EZpRU8MXX1JDN86hBb2wMGAtltkz7pc6cxgjpy1OMMfDosOQ+2hWqIkag/fGok1Yady9nGw==", - "dev": true, - "optional": true - }, - "@rollup/rollup-android-arm64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.60.3.tgz", - "integrity": "sha512-xw3xtkDApIOGayehp2+Rz4zimfkaX65r4t47iy+ymQB2G4iJCBBfj0ogVg5jpvjpn8UWn/+q9tprxleYeNp3Hw==", - "dev": true, - "optional": true - }, - "@rollup/rollup-darwin-arm64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.60.3.tgz", - "integrity": "sha512-vo6Y5Qfpx7/5EaamIwi0WqW2+zfiusVihKatLvtN1VFVy3D13uERk/6gZLU1UiHRL6fDXqj/ELIeVRGnvcTE1g==", - "dev": true, - "optional": true - }, - "@rollup/rollup-darwin-x64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.60.3.tgz", - "integrity": "sha512-D+0QGcZhBzTN82weOnsSlY7V7+RMmPuF1CkbxyMAGE8+ZHeUjyb76ZiWmBlCu//AQQONvxcqRbwZTajZKqjuOw==", - "dev": true, - "optional": true - }, - "@rollup/rollup-freebsd-arm64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.60.3.tgz", - "integrity": "sha512-6HnvHCT7fDyj6R0Ph7A6x8dQS/S38MClRWeDLqc0MdfWkxjiu1HSDYrdPhqSILzjTIC/pnXbbJbo+ft+gy/9hQ==", - "dev": true, - "optional": true - }, - "@rollup/rollup-freebsd-x64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.60.3.tgz", - "integrity": "sha512-KHLgC3WKlUYW3ShFKnnosZDOJ0xjg9zp7au3sIm2bs/tGBeC2ipmvRh/N7JKi0t9Ue20C0dpEshi8WUubg+cnA==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.60.3.tgz", - "integrity": "sha512-DV6fJoxEYWJOvaZIsok7KrYl0tPvga5OZ2yvKHNNYyk/2roMLqQAbGhr78EQ5YhHpnhLKJD3S1WFusAkmUuV5g==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-arm-musleabihf": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.60.3.tgz", - "integrity": "sha512-mQKoJAzvuOs6F+TZybQO4GOTSMUu7v0WdxEk24krQ/uUxXoPTtHjuaUuPmFhtBcM4K0ons8nrE3JyhTuCFtT/w==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-arm64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.60.3.tgz", - "integrity": "sha512-Whjj2qoiJ6+OOJMGptTYazaJvjOJm+iKHpXQM1P3LzGjt7Ff++Tp7nH4N8J/BUA7R9IHfDyx4DJIflifwnbmIA==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-arm64-musl": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.60.3.tgz", - "integrity": "sha512-4YTNHKqGng5+yiZt3mg77nmyuCfmNfX4fPmyUapBcIk+BdwSwmCWGXOUxhXbBEkFHtoN5boLj/5NON+u5QC9tg==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-loong64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.60.3.tgz", - "integrity": "sha512-SU3kNlhkpI4UqlUc2VXPGK9o886ZsSeGfMAX2ba2b8DKmMXq4AL7KUrkSWVbb7koVqx41Yczx6dx5PNargIrEA==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-loong64-musl": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.60.3.tgz", - "integrity": "sha512-6lDLl5h4TXpB1mTf2rQWnAk/LcXrx9vBfu/DT5TIPhvMhRWaZ5MxkIc8u4lJAmBo6klTe1ywXIUHFjylW505sg==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-ppc64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.60.3.tgz", - "integrity": "sha512-BMo8bOw8evlup/8G+cj5xWtPyp93xPdyoSN16Zy90Q2QZ0ZYRhCt6ZJSwbrRzG9HApFabjwj2p25TUPDWrhzqQ==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-ppc64-musl": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.60.3.tgz", - "integrity": "sha512-E0L8X1dZN1/Rph+5VPF6Xj2G7JJvMACVXtamTJIDrVI44Y3K+G8gQaMEAavbqCGTa16InptiVrX6eM6pmJ+7qA==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-riscv64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.60.3.tgz", - "integrity": "sha512-oZJ/WHaVfHUiRAtmTAeo3DcevNsVvH8mbvodjZy7D5QKvCefO371SiKRpxoDcCxB3PTRTLayWBkvmDQKTcX/sw==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-riscv64-musl": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.60.3.tgz", - "integrity": "sha512-Dhbyh7j9FybM3YaTgaHmVALwA8AkUwTPccyCQ79TG9AJUsMQqgN1DDEZNr4+QUfwiWvLDumW5vdwzoeUF+TNxQ==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-s390x-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.60.3.tgz", - "integrity": "sha512-cJd1X5XhHHlltkaypz1UcWLA8AcoIi1aWhsvaWDskD1oz2eKCypnqvTQ8ykMNI0RSmm7NkTdSqSSD7zM0xa6Ig==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-x64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.60.3.tgz", - "integrity": "sha512-DAZDBHQfG2oQuhY7mc6I3/qB4LU2fQCjRvxbDwd/Jdvb9fypP4IJ4qmtu6lNjes6B531AI8cg1aKC2di97bUxA==", - "dev": true, - "optional": true - }, - "@rollup/rollup-linux-x64-musl": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.60.3.tgz", - "integrity": "sha512-cRxsE8c13mZOh3vP+wLDxpQBRrOHDIGOWyDL93Sy0Ga8y515fBcC2pjUfFwUe5T7tqvTvWbCpg1URM/AXdWIXA==", - "dev": true, - "optional": true - }, - "@rollup/rollup-openbsd-x64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.60.3.tgz", - "integrity": "sha512-QaWcIgRxqEdQdhJqW4DJctsH6HCmo5vHxY0krHSX4jMtOqfzC+dqDGuHM87bu4H8JBeibWx7jFz+h6/4C8wA5Q==", - "dev": true, - "optional": true - }, - "@rollup/rollup-openharmony-arm64": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.60.3.tgz", - "integrity": "sha512-AaXwSvUi3QIPtroAUw1t5yHGIyqKEXwH54WUocFolZhpGDruJcs8c+xPNDRn4XiQsS7MEwnYsHW2l0MBLDMkWg==", - "dev": true, - "optional": true - }, - "@rollup/rollup-win32-arm64-msvc": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.60.3.tgz", - "integrity": "sha512-65LAKM/bAWDqKNEelHlcHvm2V+Vfb8C6INFxQXRHCvaVN1rJfwr4NvdP4FyzUaLqWfaCGaadf6UbTm8xJeYfEg==", - "dev": true, - "optional": true - }, - "@rollup/rollup-win32-ia32-msvc": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.60.3.tgz", - "integrity": "sha512-EEM2gyhBF5MFnI6vMKdX1LAosE627RGBzIoGMdLloPZkXrUN0Ckqgr2Qi8+J3zip/8NVVro3/FjB+tjhZUgUHA==", - "dev": true, - "optional": true - }, - "@rollup/rollup-win32-x64-gnu": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.60.3.tgz", - "integrity": "sha512-E5Eb5H/DpxaoXH++Qkv28RcUJboMopmdDUALBczvHMf7hNIxaDZqwY5lK12UK1BHacSmvupoEWGu+n993Z0y1A==", - "dev": true, - "optional": true - }, - "@rollup/rollup-win32-x64-msvc": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.60.3.tgz", - "integrity": "sha512-hPt/bgL5cE+Qp+/TPHBqptcAgPzgj46mPcg/16zNUmbQk0j+mOEQV/+Lqu8QRtDV3Ek95Q6FeFITpuhl6OTsAA==", - "dev": true, - "optional": true - }, - "@sec-ant/readable-stream": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/@sec-ant/readable-stream/-/readable-stream-0.4.1.tgz", - "integrity": "sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==" - }, - "@simple-libs/child-process-utils": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/@simple-libs/child-process-utils/-/child-process-utils-1.0.2.tgz", - "integrity": "sha512-/4R8QKnd/8agJynkNdJmNw2MBxuFTRcNFnE5Sg/G+jkSsV8/UBgULMzhizWWW42p8L5H7flImV2ATi79Ove2Tw==", - "dev": true, - "requires": { - "@simple-libs/stream-utils": "^1.2.0" - } - }, - "@simple-libs/stream-utils": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@simple-libs/stream-utils/-/stream-utils-1.2.0.tgz", - "integrity": "sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==", - "dev": true - }, - "@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 - }, - "@sindresorhus/merge-streams": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", - "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==" - }, - "@smithy/chunked-blob-reader": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader/-/chunked-blob-reader-5.2.2.tgz", - "integrity": "sha512-St+kVicSyayWQca+I1rGitaOEH6uKgE8IUWoYnnEX26SWdWQcL6LvMSD19Lg+vYHKdT9B2Zuu7rd3i6Wnyb/iw==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - }, - "@smithy/chunked-blob-reader-native": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/chunked-blob-reader-native/-/chunked-blob-reader-native-4.2.3.tgz", - "integrity": "sha512-jA5k5Udn7Y5717L86h4EIv06wIr3xn8GM1qHRi/Nf31annXcXHJjBKvgztnbn2TxH3xWrPBfgwHsOwZf0UmQWw==", - "dev": true, - "requires": { - "@smithy/util-base64": "^4.3.2", - "tslib": "^2.6.2" - } - }, - "@smithy/config-resolver": { - "version": "4.4.17", - "resolved": "https://registry.npmjs.org/@smithy/config-resolver/-/config-resolver-4.4.17.tgz", - "integrity": "sha512-TzDZcAnhTyAHbXVxWZo7/tEcrIeFq20IBk8So3OLOetWpR8EwY/yEqBMBFaJMeyEiREDq4NfEl+qO3OAUD+vbQ==", - "dev": true, - "requires": { - "@smithy/node-config-provider": "^4.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-config-provider": "^4.2.2", - "@smithy/util-endpoints": "^3.4.2", - "@smithy/util-middleware": "^4.2.14", - "tslib": "^2.6.2" - } - }, - "@smithy/core": { - "version": "3.23.17", - "resolved": "https://registry.npmjs.org/@smithy/core/-/core-3.23.17.tgz", - "integrity": "sha512-x7BlLbUFL8NWCGjMF9C+1N5cVCxcPa7g6Tv9B4A2luWx3be3oU8hQ96wIwxe/s7OhIzvoJH73HAUSg5JXVlEtQ==", - "dev": true, - "requires": { - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-body-length-browser": "^4.2.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-stream": "^4.5.25", - "@smithy/util-utf8": "^4.2.2", - "@smithy/uuid": "^1.1.2", - "tslib": "^2.6.2" - } - }, - "@smithy/credential-provider-imds": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/credential-provider-imds/-/credential-provider-imds-4.2.14.tgz", - "integrity": "sha512-Au28zBN48ZAoXdooGUHemuVBrkE+Ie6RPmGNIAJsFqj33Vhb6xAgRifUydZ2aY+M+KaMAETAlKk5NC5h1G7wpg==", - "dev": true, - "requires": { - "@smithy/node-config-provider": "^4.3.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "tslib": "^2.6.2" - } - }, - "@smithy/eventstream-codec": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-codec/-/eventstream-codec-4.2.14.tgz", - "integrity": "sha512-erZq0nOIpzfeZdCyzZjdJb4nVSKLUmSkaQUVkRGQTXs30gyUGeKnrYEg+Xe1W5gE3aReS7IgsvANwVPxSzY6Pw==", - "dev": true, - "requires": { - "@aws-crypto/crc32": "5.2.0", - "@smithy/types": "^4.14.1", - "@smithy/util-hex-encoding": "^4.2.2", - "tslib": "^2.6.2" - } - }, - "@smithy/eventstream-serde-browser": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-browser/-/eventstream-serde-browser-4.2.14.tgz", - "integrity": "sha512-8IelTCtTctWRbb+0Dcy+C0aICh1qa0qWXqgjcXDmMuCvPJRnv26hiDZoAau2ILOniki65mCPKqOQs/BaWvO4CQ==", - "dev": true, - "requires": { - "@smithy/eventstream-serde-universal": "^4.2.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/eventstream-serde-config-resolver": { - "version": "4.3.14", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-config-resolver/-/eventstream-serde-config-resolver-4.3.14.tgz", - "integrity": "sha512-sqHiHpYRYo3FJlaIxD1J8PhbcmJAm7IuM16mVnwSkCToD7g00IBZzKuiLNMGmftULmEUX6/UAz8/NN5uMP8bVA==", - "dev": true, - "requires": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/eventstream-serde-node": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-node/-/eventstream-serde-node-4.2.14.tgz", - "integrity": "sha512-Ht/8BuGlKfFTy0H3+8eEu0vdpwGztCnaLLXtpXNdQqiR7Hj4vFScU3T436vRAjATglOIPjJXronY+1WxxNLSiw==", - "dev": true, - "requires": { - "@smithy/eventstream-serde-universal": "^4.2.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/eventstream-serde-universal": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/eventstream-serde-universal/-/eventstream-serde-universal-4.2.14.tgz", - "integrity": "sha512-lWyt4T2XQZUZgK3tQ3Wn0w3XBvZsK/vjTuJl6bXbnGZBHH0ZUSONTYiK9TgjTTzU54xQr3DRFwpjmhp0oLm3gg==", - "dev": true, - "requires": { - "@smithy/eventstream-codec": "^4.2.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/fetch-http-handler": { - "version": "5.3.17", - "resolved": "https://registry.npmjs.org/@smithy/fetch-http-handler/-/fetch-http-handler-5.3.17.tgz", - "integrity": "sha512-bXOvQzaSm6MnmLaWA1elgfQcAtN4UP3vXqV97bHuoOrHQOJiLT3ds6o9eo5bqd0TJfRFpzdGnDQdW3FACiAVdw==", - "dev": true, - "requires": { - "@smithy/protocol-http": "^5.3.14", - "@smithy/querystring-builder": "^4.2.14", - "@smithy/types": "^4.14.1", - "@smithy/util-base64": "^4.3.2", - "tslib": "^2.6.2" - } - }, - "@smithy/hash-blob-browser": { - "version": "4.2.15", - "resolved": "https://registry.npmjs.org/@smithy/hash-blob-browser/-/hash-blob-browser-4.2.15.tgz", - "integrity": "sha512-0PJ4Al3fg2nM4qKrAIxyNcApgqHAXcBkN8FeizOz69z0rb26uZ6lMESYtxegaTlXB5Hj84JfwMPavMrwDMjucA==", - "dev": true, - "requires": { - "@smithy/chunked-blob-reader": "^5.2.2", - "@smithy/chunked-blob-reader-native": "^4.2.3", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/hash-node": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/hash-node/-/hash-node-4.2.14.tgz", - "integrity": "sha512-8ZBDY2DD4wr+GGjTpPtiglEsqr0lUP+KHqgZcWczFf6qeZ/YRjMIOoQWVQlmwu7EtxKTd8YXD8lblmYcpBIA1g==", - "dev": true, - "requires": { - "@smithy/types": "^4.14.1", - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - } - }, - "@smithy/hash-stream-node": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/hash-stream-node/-/hash-stream-node-4.2.14.tgz", - "integrity": "sha512-tw4GANWkZPb6+BdD4Fgucqzey2+r73Z/GRo9zklsCdwrnxxumUV83ZIaBDdudV4Ylazw3EPTiJZhpX42105ruQ==", - "dev": true, - "requires": { - "@smithy/types": "^4.14.1", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - } - }, - "@smithy/invalid-dependency": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/invalid-dependency/-/invalid-dependency-4.2.14.tgz", - "integrity": "sha512-c21qJiTSb25xvvOp+H2TNZzPCngrvl5vIPqPB8zQ/DmJF4QWXO19x1dWfMJZ6wZuuWUPPm0gV8C0cU3+ifcWuw==", - "dev": true, - "requires": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/is-array-buffer": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/is-array-buffer/-/is-array-buffer-4.2.2.tgz", - "integrity": "sha512-n6rQ4N8Jj4YTQO3YFrlgZuwKodf4zUFs7EJIWH86pSCWBaAtAGBFfCM7Wx6D2bBJ2xqFNxGBSrUWswT3M0VJow==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - }, - "@smithy/md5-js": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/md5-js/-/md5-js-4.2.14.tgz", - "integrity": "sha512-V2v0vx+h0iUSNG1Alt+GNBMSLGCrl9iVsdd+Ap67HPM9PN479x12V8LkuMoKImNZxn3MXeuyUjls+/7ZACZghA==", - "dev": true, - "requires": { - "@smithy/types": "^4.14.1", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - } - }, - "@smithy/middleware-content-length": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/middleware-content-length/-/middleware-content-length-4.2.14.tgz", - "integrity": "sha512-xhHq7fX4/3lv5NHxLUk3OeEvl0xZ+Ek3qIbWaCL4f9JwgDZEclPBElljaZCAItdGPQl/kSM4LPMOpy1MYgprpw==", - "dev": true, - "requires": { - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/middleware-endpoint": { - "version": "4.4.32", - "resolved": "https://registry.npmjs.org/@smithy/middleware-endpoint/-/middleware-endpoint-4.4.32.tgz", - "integrity": "sha512-ZZkgyjnJppiZbIm6Qbx92pbXYi1uzenIvGhBSCDlc7NwuAkiqSgS75j1czAD25ZLs2FjMjYy1q7gyRVWG6JA0Q==", - "dev": true, - "requires": { - "@smithy/core": "^3.23.17", - "@smithy/middleware-serde": "^4.2.20", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "@smithy/url-parser": "^4.2.14", - "@smithy/util-middleware": "^4.2.14", - "tslib": "^2.6.2" - } - }, - "@smithy/middleware-retry": { - "version": "4.5.7", - "resolved": "https://registry.npmjs.org/@smithy/middleware-retry/-/middleware-retry-4.5.7.tgz", - "integrity": "sha512-bRt6ZImqVSeTk39Nm81K20ObIiAZ3WefY7G6+iz/0tZjs4dgRRjvRX2sgsH+zi6iDCRR/aQvQofLKxxz4rPBZg==", - "dev": true, - "requires": { - "@smithy/core": "^3.23.17", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/service-error-classification": "^4.3.1", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-retry": "^4.3.6", - "@smithy/uuid": "^1.1.2", - "tslib": "^2.6.2" - } - }, - "@smithy/middleware-serde": { - "version": "4.2.20", - "resolved": "https://registry.npmjs.org/@smithy/middleware-serde/-/middleware-serde-4.2.20.tgz", - "integrity": "sha512-Lx9JMO9vArPtiChE3wbEZ5akMIDQpWQtlu90lhACQmNOXcGXRbaDywMHDzuDZ2OkZzP+9wQfZi3YJT9F67zTQQ==", - "dev": true, - "requires": { - "@smithy/core": "^3.23.17", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/middleware-stack": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/middleware-stack/-/middleware-stack-4.2.14.tgz", - "integrity": "sha512-2dvkUKLuFdKsCRmOE4Mn63co0Djtsm+JMh0bYZQupN1pJwMeE8FmQmRLLzzEMN0dnNi7CDCYYH8F0EVwWiPBeA==", - "dev": true, - "requires": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/node-config-provider": { - "version": "4.3.14", - "resolved": "https://registry.npmjs.org/@smithy/node-config-provider/-/node-config-provider-4.3.14.tgz", - "integrity": "sha512-S+gFjyo/weSVL0P1b9Ts8C/CwIfNCgUPikk3sl6QVsfE/uUuO+QsF+NsE/JkpvWqqyz1wg7HFdiaZuj5CoBMRg==", - "dev": true, - "requires": { - "@smithy/property-provider": "^4.2.14", - "@smithy/shared-ini-file-loader": "^4.4.9", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/node-http-handler": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/@smithy/node-http-handler/-/node-http-handler-4.6.1.tgz", - "integrity": "sha512-iB+orM4x3xrr57X3YaXazfKnntl0LHlZB1kcXSGzMV1Tt0+YwEjGlbjk/44qEGtBzXAz6yFDzkYTKSV6Pj2HUg==", - "dev": true, - "requires": { - "@smithy/protocol-http": "^5.3.14", - "@smithy/querystring-builder": "^4.2.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/property-provider": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/property-provider/-/property-provider-4.2.14.tgz", - "integrity": "sha512-WuM31CgfsnQ/10i7NYr0PyxqknD72Y5uMfUMVSniPjbEPceiTErb4eIqJQ+pdxNEAUEWrewrGjIRjVbVHsxZiQ==", - "dev": true, - "requires": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/protocol-http": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@smithy/protocol-http/-/protocol-http-5.3.14.tgz", - "integrity": "sha512-dN5F8kHx8RNU0r+pCwNmFZyz6ChjMkzShy/zup6MtkRmmix4vZzJdW+di7x//b1LiynIev88FM18ie+wwPcQtQ==", - "dev": true, - "requires": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/querystring-builder": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/querystring-builder/-/querystring-builder-4.2.14.tgz", - "integrity": "sha512-XYA5Z0IqTeF+5XDdh4BBmSA0HvbgVZIyv4cmOoUheDNR57K1HgBp9ukUMx3Cr3XpDHHpLBnexPE3LAtDsZkj2A==", - "dev": true, - "requires": { - "@smithy/types": "^4.14.1", - "@smithy/util-uri-escape": "^4.2.2", - "tslib": "^2.6.2" - } - }, - "@smithy/querystring-parser": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/querystring-parser/-/querystring-parser-4.2.14.tgz", - "integrity": "sha512-hr+YyqBD23GVvRxGGrcc/oOeNlK3PzT5Fu4dzrDXxzS1LpFiuL2PQQqKPs87M79aW7ziMs+nvB3qdw77SqE7Lw==", - "dev": true, - "requires": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/service-error-classification": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@smithy/service-error-classification/-/service-error-classification-4.3.1.tgz", - "integrity": "sha512-aUQuDGh760ts/8MU+APjIZhlLPKhIIfqyzZaJikLEIMrdxFvxuLYD0WxWzaYWpmLbQlXDe9p7EWM3HsBe0K6Gw==", - "dev": true, - "requires": { - "@smithy/types": "^4.14.1" - } - }, - "@smithy/shared-ini-file-loader": { - "version": "4.4.9", - "resolved": "https://registry.npmjs.org/@smithy/shared-ini-file-loader/-/shared-ini-file-loader-4.4.9.tgz", - "integrity": "sha512-495/V2I15SHgedSJoDPD23JuSfKAp726ZI1V0wtjB07Wh7q/0tri/0e0DLefZCHgxZonrGKt/OCTpAtP1wE1kQ==", - "dev": true, - "requires": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/signature-v4": { - "version": "5.3.14", - "resolved": "https://registry.npmjs.org/@smithy/signature-v4/-/signature-v4-5.3.14.tgz", - "integrity": "sha512-1D9Y/nmlVjCeSivCbhZ7hgEpmHyY1h0GvpSZt3l0xcD9JjmjVC1CHOozS6+Gh+/ldMH8JuJ6cujObQqfayAVFA==", - "dev": true, - "requires": { - "@smithy/is-array-buffer": "^4.2.2", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-hex-encoding": "^4.2.2", - "@smithy/util-middleware": "^4.2.14", - "@smithy/util-uri-escape": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - } - }, - "@smithy/smithy-client": { - "version": "4.12.13", - "resolved": "https://registry.npmjs.org/@smithy/smithy-client/-/smithy-client-4.12.13.tgz", - "integrity": "sha512-y/Pcj1V9+qG98gyu1gvftHB7rDpdh+7kIBIggs55yGm3JdtBV8GT8IFF3a1qxZ79QnaJHX9GXzvBG6tAd+czJA==", - "dev": true, - "requires": { - "@smithy/core": "^3.23.17", - "@smithy/middleware-endpoint": "^4.4.32", - "@smithy/middleware-stack": "^4.2.14", - "@smithy/protocol-http": "^5.3.14", - "@smithy/types": "^4.14.1", - "@smithy/util-stream": "^4.5.25", - "tslib": "^2.6.2" - } - }, - "@smithy/types": { - "version": "4.14.1", - "resolved": "https://registry.npmjs.org/@smithy/types/-/types-4.14.1.tgz", - "integrity": "sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - }, - "@smithy/url-parser": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/url-parser/-/url-parser-4.2.14.tgz", - "integrity": "sha512-p06BiBigJ8bTA3MgnOfCtDUWnAMY0YfedO/GRpmc7p+wg3KW8vbXy1xwSu5ASy0wV7rRYtlfZOIKH4XqfhjSQQ==", - "dev": true, - "requires": { - "@smithy/querystring-parser": "^4.2.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/util-base64": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/@smithy/util-base64/-/util-base64-4.3.2.tgz", - "integrity": "sha512-XRH6b0H/5A3SgblmMa5ErXQ2XKhfbQB+Fm/oyLZ2O2kCUrwgg55bU0RekmzAhuwOjA9qdN5VU2BprOvGGUkOOQ==", - "dev": true, - "requires": { - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - } - }, - "@smithy/util-body-length-browser": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-browser/-/util-body-length-browser-4.2.2.tgz", - "integrity": "sha512-JKCrLNOup3OOgmzeaKQwi4ZCTWlYR5H4Gm1r2uTMVBXoemo1UEghk5vtMi1xSu2ymgKVGW631e2fp9/R610ZjQ==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - }, - "@smithy/util-body-length-node": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/@smithy/util-body-length-node/-/util-body-length-node-4.2.3.tgz", - "integrity": "sha512-ZkJGvqBzMHVHE7r/hcuCxlTY8pQr1kMtdsVPs7ex4mMU+EAbcXppfo5NmyxMYi2XU49eqaz56j2gsk4dHHPG/g==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - }, - "@smithy/util-buffer-from": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-buffer-from/-/util-buffer-from-4.2.2.tgz", - "integrity": "sha512-FDXD7cvUoFWwN6vtQfEta540Y/YBe5JneK3SoZg9bThSoOAC/eGeYEua6RkBgKjGa/sz6Y+DuBZj3+YEY21y4Q==", - "dev": true, - "requires": { - "@smithy/is-array-buffer": "^4.2.2", - "tslib": "^2.6.2" - } - }, - "@smithy/util-config-provider": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-config-provider/-/util-config-provider-4.2.2.tgz", - "integrity": "sha512-dWU03V3XUprJwaUIFVv4iOnS1FC9HnMHDfUrlNDSh4315v0cWyaIErP8KiqGVbf5z+JupoVpNM7ZB3jFiTejvQ==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - }, - "@smithy/util-defaults-mode-browser": { - "version": "4.3.49", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-browser/-/util-defaults-mode-browser-4.3.49.tgz", - "integrity": "sha512-a5bNrdiONYB/qE2BuKegvUMd/+ZDwdg4vsNuuSzYE8qs2EYAdK9CynL+Rzn29PbPiUqoz/cbpRbcLzD5lEevHw==", - "dev": true, - "requires": { - "@smithy/property-provider": "^4.2.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/util-defaults-mode-node": { - "version": "4.2.54", - "resolved": "https://registry.npmjs.org/@smithy/util-defaults-mode-node/-/util-defaults-mode-node-4.2.54.tgz", - "integrity": "sha512-g1cvrJvOnzeJgEdf7AE4luI7gp6L8weE0y9a9wQUSGtjb8QRHDbCJYuE4Sy0SD9N8RrnNPFsPltAz/OSoBR9Zw==", - "dev": true, - "requires": { - "@smithy/config-resolver": "^4.4.17", - "@smithy/credential-provider-imds": "^4.2.14", - "@smithy/node-config-provider": "^4.3.14", - "@smithy/property-provider": "^4.2.14", - "@smithy/smithy-client": "^4.12.13", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/util-endpoints": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@smithy/util-endpoints/-/util-endpoints-3.4.2.tgz", - "integrity": "sha512-a55Tr+3OKld4TTtnT+RhKOQHyPxm3j/xL4OR83WBUhLJaKDS9dnJ7arRMOp3t31dcLhApwG9bgvrRXBHlLdIkg==", - "dev": true, - "requires": { - "@smithy/node-config-provider": "^4.3.14", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/util-hex-encoding": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-hex-encoding/-/util-hex-encoding-4.2.2.tgz", - "integrity": "sha512-Qcz3W5vuHK4sLQdyT93k/rfrUwdJ8/HZ+nMUOyGdpeGA1Wxt65zYwi3oEl9kOM+RswvYq90fzkNDahPS8K0OIg==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - }, - "@smithy/util-middleware": { - "version": "4.2.14", - "resolved": "https://registry.npmjs.org/@smithy/util-middleware/-/util-middleware-4.2.14.tgz", - "integrity": "sha512-1Su2vj9RYNDEv/V+2E+jXkkwGsgR7dc4sfHn9Z7ruzQHJIEni9zzw5CauvRXlFJfmgcqYP8fWa0dkh2Q2YaQyw==", - "dev": true, - "requires": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/util-retry": { - "version": "4.3.8", - "resolved": "https://registry.npmjs.org/@smithy/util-retry/-/util-retry-4.3.8.tgz", - "integrity": "sha512-LUIxbTBi+OpvXpg91poGA6BdyoleMDLnfXjVDqyi2RvZmTveY5loE/FgYUBCR5LU2BThW2SoZRh8dTIIy38IPw==", - "dev": true, - "requires": { - "@smithy/service-error-classification": "^4.3.1", - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/util-stream": { - "version": "4.5.25", - "resolved": "https://registry.npmjs.org/@smithy/util-stream/-/util-stream-4.5.25.tgz", - "integrity": "sha512-/PFpG4k8Ze8Ei+mMKj3oiPICYekthuzePZMgZbCqMiXIHHf4n2aZ4Ps0aSRShycFTGuj/J6XldmC0x0DwednIA==", - "dev": true, - "requires": { - "@smithy/fetch-http-handler": "^5.3.17", - "@smithy/node-http-handler": "^4.6.1", - "@smithy/types": "^4.14.1", - "@smithy/util-base64": "^4.3.2", - "@smithy/util-buffer-from": "^4.2.2", - "@smithy/util-hex-encoding": "^4.2.2", - "@smithy/util-utf8": "^4.2.2", - "tslib": "^2.6.2" - } - }, - "@smithy/util-uri-escape": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-uri-escape/-/util-uri-escape-4.2.2.tgz", - "integrity": "sha512-2kAStBlvq+lTXHyAZYfJRb/DfS3rsinLiwb+69SstC9Vb0s9vNWkRwpnj918Pfi85mzi42sOqdV72OLxWAISnw==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - }, - "@smithy/util-utf8": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@smithy/util-utf8/-/util-utf8-4.2.2.tgz", - "integrity": "sha512-75MeYpjdWRe8M5E3AW0O4Cx3UadweS+cwdXjwYGBW5h/gxxnbeZ877sLPX/ZJA9GVTlL/qG0dXP29JWFCD1Ayw==", - "dev": true, - "requires": { - "@smithy/util-buffer-from": "^4.2.2", - "tslib": "^2.6.2" - } - }, - "@smithy/util-waiter": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/@smithy/util-waiter/-/util-waiter-4.3.0.tgz", - "integrity": "sha512-JyjYmLAfS+pdxF92o4yLgEoy0zhayKTw73FU1aofLWwLcJw7iSqIY2exGmMTrl/lmZugP5p/zxdFSippJDfKWA==", - "dev": true, - "requires": { - "@smithy/types": "^4.14.1", - "tslib": "^2.6.2" - } - }, - "@smithy/uuid": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@smithy/uuid/-/uuid-1.1.2.tgz", - "integrity": "sha512-O/IEdcCUKkubz60tFbGA7ceITTAJsty+lBjNoorP4Z6XRqaFb/OjQjZODophEcuq68nKm6/0r+6/lLQ+XVpk8g==", - "dev": true, - "requires": { - "tslib": "^2.6.2" - } - }, - "@stylistic/eslint-plugin": { - "version": "5.10.0", - "resolved": "https://registry.npmjs.org/@stylistic/eslint-plugin/-/eslint-plugin-5.10.0.tgz", - "integrity": "sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/types": "^8.56.0", - "eslint-visitor-keys": "^4.2.1", - "espree": "^10.4.0", - "estraverse": "^5.3.0", - "picomatch": "^4.0.3" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true - }, - "picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true - } - } - }, - "@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, - "requires": { - "defer-to-connect": "^2.0.1" - } - }, - "@tsconfig/node10": { - "version": "1.0.9", - "dev": true - }, - "@tsconfig/node12": { - "version": "1.0.11", - "dev": true - }, - "@tsconfig/node14": { - "version": "1.0.3", - "dev": true - }, - "@tsconfig/node16": { - "version": "1.0.3", - "dev": true - }, - "@types/archiver": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/@types/archiver/-/archiver-7.0.0.tgz", - "integrity": "sha512-/3vwGwx9n+mCQdYZ2IKGGHEFL30I96UgBlk8EtRDDFQ9uxM1l4O5Ci6r00EMAkiDaTqD9DQ6nVrWRICnBPtzzg==", - "dev": true, - "requires": { - "@types/readdir-glob": "*" - } - }, - "@types/chai": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/@types/chai/-/chai-5.2.3.tgz", - "integrity": "sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==", - "dev": true, - "requires": { - "@types/deep-eql": "*", - "assertion-error": "^2.0.1" - } - }, - "@types/config": { - "version": "3.3.5", - "resolved": "https://registry.npmjs.org/@types/config/-/config-3.3.5.tgz", - "integrity": "sha512-itq2HtXQBrNUKwMNZnb9mBRE3T99VYCdl1gjST9rq+9kFaB1iMMGuDeZnP88qid73DnpAMKH9ZolqDpS1Lz7+w==", - "dev": true - }, - "@types/debug": { - "version": "4.1.13", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.13.tgz", - "integrity": "sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==", - "dev": true, - "requires": { - "@types/ms": "*" - } - }, - "@types/deep-eql": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/@types/deep-eql/-/deep-eql-4.0.2.tgz", - "integrity": "sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==", - "dev": true - }, - "@types/esrecurse": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/@types/esrecurse/-/esrecurse-4.3.1.tgz", - "integrity": "sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==", - "dev": true - }, - "@types/estree": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.9.tgz", - "integrity": "sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==", - "dev": true - }, - "@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 - }, - "@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true - }, - "@types/luxon": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/@types/luxon/-/luxon-3.7.1.tgz", - "integrity": "sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==", - "dev": true - }, - "@types/ms": { - "version": "0.7.31", - "dev": true - }, - "@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==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/node": { - "version": "25.6.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.6.0.tgz", - "integrity": "sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==", - "requires": { - "undici-types": "~7.19.0" - }, - "dependencies": { - "undici-types": { - "version": "7.19.2", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.19.2.tgz", - "integrity": "sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==" - } - } - }, - "@types/prompts": { - "version": "2.4.9", - "resolved": "https://registry.npmjs.org/@types/prompts/-/prompts-2.4.9.tgz", - "integrity": "sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==", - "dev": true, - "requires": { - "@types/node": "*", - "kleur": "^3.0.3" - } - }, - "@types/readable-stream": { - "version": "4.0.23", - "resolved": "https://registry.npmjs.org/@types/readable-stream/-/readable-stream-4.0.23.tgz", - "integrity": "sha512-wwXrtQvbMHxCbBgjHaMGEmImFTQxxpfMOR/ZoQnXxB1woqkUbdLGFDgauo00Py9IudiaqSeiBiulSV9i6XIPig==", - "requires": { - "@types/node": "*" - } - }, - "@types/readdir-glob": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/@types/readdir-glob/-/readdir-glob-1.1.5.tgz", - "integrity": "sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", - "dev": true - }, - "@types/tunnel": { - "version": "0.0.7", - "resolved": "https://registry.npmjs.org/@types/tunnel/-/tunnel-0.0.7.tgz", - "integrity": "sha512-VYKjZSmb2PvUwXoux4Gy4LAk7kzOB1ktkjyL4lxvpkqL2adgR+Qrh/yFyWluvJgIXWFicqs7XuzPI2NbTO/r3Q==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/uuid": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-10.0.0.tgz", - "integrity": "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==", - "dev": true - }, - "@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==", - "dev": true - }, - "@types/ws": { - "version": "8.18.1", - "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", - "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", - "requires": { - "@types/node": "*" - } - }, - "@typescript-eslint/eslint-plugin": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-8.59.2.tgz", - "integrity": "sha512-j/bwmkBvHUtPNxzuWe5z6BEk3q54YRyGlBXkSsmfoih7zNrBvl5A9A98anlp/7JbyZcWIJ8KXo/3Tq/DjFLtuQ==", - "dev": true, - "requires": { - "@eslint-community/regexpp": "^4.12.2", - "@typescript-eslint/scope-manager": "8.59.2", - "@typescript-eslint/type-utils": "8.59.2", - "@typescript-eslint/utils": "8.59.2", - "@typescript-eslint/visitor-keys": "8.59.2", - "ignore": "^7.0.5", - "natural-compare": "^1.4.0", - "ts-api-utils": "^2.5.0" - }, - "dependencies": { - "ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true - } - } - }, - "@typescript-eslint/parser": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-8.59.2.tgz", - "integrity": "sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ==", - "dev": true, - "requires": { - "@typescript-eslint/scope-manager": "8.59.2", - "@typescript-eslint/types": "8.59.2", - "@typescript-eslint/typescript-estree": "8.59.2", - "@typescript-eslint/visitor-keys": "8.59.2", - "debug": "^4.4.3" - } - }, - "@typescript-eslint/project-service": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/project-service/-/project-service-8.59.2.tgz", - "integrity": "sha512-+2hqvEkeyf/0FBor67duF0Ll7Ot8jyKzDQOSrxazF/danillRq2DwR9dLptsXpoZQqxE1UisSmoZewrlPas9Vw==", - "requires": { - "@typescript-eslint/tsconfig-utils": "^8.59.2", - "@typescript-eslint/types": "^8.59.2", - "debug": "^4.4.3" - } - }, - "@typescript-eslint/scope-manager": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-8.59.2.tgz", - "integrity": "sha512-JzfyEpEtOU89CcFSwyNS3mu4MLvLSXqnmX05+aKBDM+TdR5jzcGOEBwxwGNxrEQ7p/z6kK2WyioCGBf2zZBnvg==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.59.2", - "@typescript-eslint/visitor-keys": "8.59.2" - } - }, - "@typescript-eslint/tsconfig-utils": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/tsconfig-utils/-/tsconfig-utils-8.59.2.tgz", - "integrity": "sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw==", - "requires": {} - }, - "@typescript-eslint/type-utils": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-8.59.2.tgz", - "integrity": "sha512-nhqaj1nmTdVVl/BP5omXNRGO38jn5iosis2vbdmupF2txCf8ylWT8lx+JlvMYYVqzGVKtjojUFoQ3JRWK+mfzQ==", - "dev": true, - "requires": { - "@typescript-eslint/types": "8.59.2", - "@typescript-eslint/typescript-estree": "8.59.2", - "@typescript-eslint/utils": "8.59.2", - "debug": "^4.4.3", - "ts-api-utils": "^2.5.0" - } - }, - "@typescript-eslint/types": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-8.59.2.tgz", - "integrity": "sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==" - }, - "@typescript-eslint/typescript-estree": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-8.59.2.tgz", - "integrity": "sha512-o0XPGNwcWw+FIwStOWn+BwBuEmL6QXP0rsvAFg7ET1dey1Nr6Wb1ac8p5HEsK0ygO/6mUxlk+YWQD9xcb/nnXg==", - "requires": { - "@typescript-eslint/project-service": "8.59.2", - "@typescript-eslint/tsconfig-utils": "8.59.2", - "@typescript-eslint/types": "8.59.2", - "@typescript-eslint/visitor-keys": "8.59.2", - "debug": "^4.4.3", - "minimatch": "^10.2.2", - "semver": "^7.7.3", - "tinyglobby": "^0.2.15", - "ts-api-utils": "^2.5.0" - }, - "dependencies": { - "balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==" - }, - "brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "requires": { - "balanced-match": "^4.0.2" - } - }, - "minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "requires": { - "brace-expansion": "^5.0.5" - } - } - } - }, - "@typescript-eslint/utils": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-8.59.2.tgz", - "integrity": "sha512-Juw3EinkXqjaffxz6roowvV7GZT/kET5vSKKZT6upl5TXdWkLkYmNPXwDDL2Vkt2DPn0nODIS4egC/0AGxKo/Q==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.9.1", - "@typescript-eslint/scope-manager": "8.59.2", - "@typescript-eslint/types": "8.59.2", - "@typescript-eslint/typescript-estree": "8.59.2" - } - }, - "@typescript-eslint/visitor-keys": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-8.59.2.tgz", - "integrity": "sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA==", - "requires": { - "@typescript-eslint/types": "8.59.2", - "eslint-visitor-keys": "^5.0.0" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==" - } - } - }, - "abort-controller": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", - "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", - "requires": { - "event-target-shim": "^5.0.0" - } - }, - "acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==" - }, - "acorn-jsx": { - "version": "5.3.2", - "dev": true, - "requires": {} - }, - "acorn-walk": { - "version": "8.3.5", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-8.3.5.tgz", - "integrity": "sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==", - "requires": { - "acorn": "^8.11.0" - } - }, - "ajv": { - "version": "8.20.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.20.0.tgz", - "integrity": "sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==", - "requires": { - "fast-deep-equal": "^3.1.3", - "fast-uri": "^3.0.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2" - } - }, - "ajv-formats": { - "version": "2.1.1", - "requires": { - "ajv": "^8.0.0" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "requires": { - "type-fest": "^0.21.3" - } - }, - "ansi-regex": { - "version": "5.0.1" - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "requires": { - "color-convert": "^2.0.1" - } - }, - "ansis": { - "version": "3.17.0", - "resolved": "https://registry.npmjs.org/ansis/-/ansis-3.17.0.tgz", - "integrity": "sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==" - }, - "archiver": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/archiver/-/archiver-7.0.1.tgz", - "integrity": "sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==", - "requires": { - "archiver-utils": "^5.0.2", - "async": "^3.2.4", - "buffer-crc32": "^1.0.0", - "readable-stream": "^4.0.0", - "readdir-glob": "^1.1.2", - "tar-stream": "^3.0.0", - "zip-stream": "^6.0.1" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - } - } - } - }, - "archiver-utils": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/archiver-utils/-/archiver-utils-5.0.2.tgz", - "integrity": "sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==", - "requires": { - "glob": "^10.0.0", - "graceful-fs": "^4.2.0", - "is-stream": "^2.0.1", - "lazystream": "^1.0.0", - "lodash": "^4.17.15", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - } - } - } - }, - "arg": { - "version": "4.1.3", - "dev": true - }, - "argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", - "dev": true - }, - "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 - }, - "assertion-error": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/assertion-error/-/assertion-error-2.0.1.tgz", - "integrity": "sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==", - "dev": true - }, - "ast-types": { - "version": "0.16.1", - "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", - "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", - "requires": { - "tslib": "^2.0.1" - } - }, - "async": { - "version": "3.2.4" - }, - "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, - "requires": { - "retry": "0.13.1" - } - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" - }, - "atomically": { - "version": "1.7.0" - }, - "axios": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/axios/-/axios-1.16.0.tgz", - "integrity": "sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==", - "requires": { - "follow-redirects": "^1.16.0", - "form-data": "^4.0.5", - "proxy-from-env": "^2.1.0" - } - }, - "b4a": { - "version": "1.6.7", - "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.7.tgz", - "integrity": "sha512-OnAYlL5b7LEkALw87fUVafQw5rVR9RjwGd4KUwNQ6DrrNmaVaUCgLipfVlzrPQ4tWOR9P0IXGNOx50jYCCdSJg==" - }, - "balanced-match": { - "version": "1.0.2" - }, - "bare-events": { - "version": "2.5.4", - "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.5.4.tgz", - "integrity": "sha512-+gFfDkR8pj4/TrWCGUGWmJIkBwuxPS5F+a5yWjOHQt2hHvNZd5YLzadjmDUtFmMM4y429bnKLa8bYBMHcYdnQA==", - "optional": true - }, - "base64-js": { - "version": "1.5.1" - }, - "bl": { - "version": "4.1.0", - "requires": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "bowser": { - "version": "2.14.1", - "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.14.1.tgz", - "integrity": "sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==", - "dev": true - }, - "brace-expansion": { - "version": "1.1.14", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.14.tgz", - "integrity": "sha512-MWPGfDxnyzKU7rNOW9SP/c50vi3xrmrua/+6hfPbCS2ABNWfx24vPidzvC7krjU/RTo235sV776ymlsMtGKj8g==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "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, - "requires": { - "fill-range": "^7.1.1" - } - }, - "broker-factory": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/broker-factory/-/broker-factory-3.1.10.tgz", - "integrity": "sha512-BzqK5GYFhvVFvO13uzPN0SCiOsOQuhMUbsGvTXDJMA2/N4GvIlFdxEuueE+60Zk841bBU5G3+fl2cqYEo0wgGg==", - "requires": { - "@babel/runtime": "^7.28.4", - "fast-unique-numbers": "^9.0.24", - "tslib": "^2.8.1", - "worker-factory": "^7.0.46" - } - }, - "buffer": { - "version": "5.7.1", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "buffer-crc32": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-1.0.0.tgz", - "integrity": "sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==" - }, - "buffer-from": { - "version": "1.1.2" - }, - "cac": { - "version": "6.7.14", - "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", - "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", - "dev": true - }, - "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 - }, - "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, - "requires": { - "@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" - } - }, - "call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", - "requires": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camel-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/camel-case/-/camel-case-4.1.2.tgz", - "integrity": "sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==", - "dev": true, - "requires": { - "pascal-case": "^3.1.2", - "tslib": "^2.0.3" - } - }, - "capital-case": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/capital-case/-/capital-case-1.0.4.tgz", - "integrity": "sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "dev": true - }, - "change-case": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/change-case/-/change-case-4.1.2.tgz", - "integrity": "sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==", - "dev": true, - "requires": { - "camel-case": "^4.1.2", - "capital-case": "^1.0.4", - "constant-case": "^3.0.4", - "dot-case": "^3.0.4", - "header-case": "^2.0.4", - "no-case": "^3.0.4", - "param-case": "^3.0.4", - "pascal-case": "^3.1.2", - "path-case": "^3.0.4", - "sentence-case": "^3.0.4", - "snake-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "chardet": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/chardet/-/chardet-2.1.1.tgz", - "integrity": "sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==", - "dev": true - }, - "check-error": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/check-error/-/check-error-2.1.3.tgz", - "integrity": "sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==", - "dev": true - }, - "checkly": { - "version": "file:packages/cli", - "requires": { - "@oclif/core": "^4.11.1", - "@oclif/plugin-help": "^6.2.46", - "@oclif/plugin-warn-if-update-available": "^3.1.62", - "@playwright/test": "^1.59.1", - "@types/archiver": "^7.0.0", - "@types/config": "^3.3.5", - "@types/debug": "^4.1.13", - "@types/luxon": "^3.7.1", - "@types/node": "^22.19.17", - "@types/prompts": "^2.4.9", - "@types/semver": "^7.7.1", - "@types/tunnel": "^0.0.7", - "@types/uuid": "^10.0.0", - "@types/ws": "^8.5.5", - "@typescript-eslint/typescript-estree": "^8.59.2", - "acorn": "^8.16.0", - "acorn-walk": "^8.3.5", - "archiver": "7.0.1", - "axios": "^1.16.0", - "chalk": "^4.1.2", - "ci-info": "^4.4.0", - "conf": "^10.2.0", - "config": "^3.3.12", - "cross-env": "^10.1.0", - "debug": "^4.4.3", - "dotenv": "^16.6.1", - "execa": "^9.6.1", - "git-repo-info": "^2.1.1", - "glob": "^10.5.0", - "indent-string": "^4.0.0", - "jiti": "^2.7.0", - "json-stream-stringify": "^3.1.6", - "json5": "^2.2.3", - "jwt-decode": "^4.0.0", - "log-symbols": "^4.1.0", - "luxon": "^3.7.2", - "minimatch": "^9.0.9", - "mqtt": "^5.15.1", - "nanoid": "^3.3.12", - "oclif": "^4.23.0", - "open": "^8.4.2", - "p-queue": "^6.6.2", - "prompts": "^2.4.2", - "proxy-from-env": "^2.1.0", - "recast": "^0.23.11", - "rimraf": "^5.0.10", - "semver": "^7.7.3", - "tar": "^7.5.14", - "ts-node": "^10.9.2", - "tunnel": "^0.0.6", - "typescript": "^6.0.3", - "uuid": "^11.1.1", - "vitest": "^3.2.4" - }, - "dependencies": { - "@types/node": { - "version": "22.19.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.17.tgz", - "integrity": "sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, - "@vitest/expect": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", - "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", - "dev": true, - "requires": { - "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "tinyrainbow": "^2.0.0" - } - }, - "@vitest/mocker": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", - "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", - "dev": true, - "requires": { - "@vitest/spy": "3.2.4", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.17" - } - }, - "@vitest/pretty-format": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", - "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", - "dev": true, - "requires": { - "tinyrainbow": "^2.0.0" - } - }, - "@vitest/runner": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", - "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", - "dev": true, - "requires": { - "@vitest/utils": "3.2.4", - "pathe": "^2.0.3", - "strip-literal": "^3.0.0" - } - }, - "@vitest/snapshot": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", - "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", - "dev": true, - "requires": { - "@vitest/pretty-format": "3.2.4", - "magic-string": "^0.30.17", - "pathe": "^2.0.3" - } - }, - "@vitest/spy": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", - "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", - "dev": true, - "requires": { - "tinyspy": "^4.0.3" - } - }, - "@vitest/utils": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", - "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", - "dev": true, - "requires": { - "@vitest/pretty-format": "3.2.4", - "loupe": "^3.1.4", - "tinyrainbow": "^2.0.0" - } - }, - "brace-expansion": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", - "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "chai": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", - "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", - "dev": true, - "requires": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - } - }, - "chalk": { - "version": "4.1.2", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "execa": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-9.6.1.tgz", - "integrity": "sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==", - "requires": { - "@sindresorhus/merge-streams": "^4.0.0", - "cross-spawn": "^7.0.6", - "figures": "^6.1.0", - "get-stream": "^9.0.0", - "human-signals": "^8.0.1", - "is-plain-obj": "^4.1.0", - "is-stream": "^4.0.1", - "npm-run-path": "^6.0.0", - "pretty-ms": "^9.2.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^4.0.0", - "yoctocolors": "^2.1.1" - } - }, - "get-stream": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-9.0.1.tgz", - "integrity": "sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==", - "requires": { - "@sec-ant/readable-stream": "^0.4.1", - "is-stream": "^4.0.1" - } - }, - "human-signals": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-8.0.1.tgz", - "integrity": "sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==" - }, - "is-stream": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-4.0.1.tgz", - "integrity": "sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==" - }, - "jiti": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", - "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==", - "dev": true - }, - "minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "requires": { - "brace-expansion": "^2.0.2" - } - }, - "npm-run-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-6.0.0.tgz", - "integrity": "sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==", - "requires": { - "path-key": "^4.0.0", - "unicorn-magic": "^0.3.0" - } - }, - "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==" - }, - "picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==" - }, - "std-env": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", - "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", - "dev": true - }, - "strip-final-newline": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-4.0.0.tgz", - "integrity": "sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==" - }, - "tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true - }, - "tinyrainbow": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", - "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", - "dev": true - }, - "typescript": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", - "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "dev": true - }, - "vitest": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", - "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", - "dev": true, - "requires": { - "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.4", - "@vitest/mocker": "3.2.4", - "@vitest/pretty-format": "^3.2.4", - "@vitest/runner": "3.2.4", - "@vitest/snapshot": "3.2.4", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "debug": "^4.4.1", - "expect-type": "^1.2.1", - "magic-string": "^0.30.17", - "pathe": "^2.0.3", - "picomatch": "^4.0.2", - "std-env": "^3.9.0", - "tinybench": "^2.9.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.14", - "tinypool": "^1.1.1", - "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.4", - "why-is-node-running": "^2.3.0" - } - } - } - }, - "chownr": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/chownr/-/chownr-3.0.0.tgz", - "integrity": "sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==", - "dev": true - }, - "ci-info": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-4.4.0.tgz", - "integrity": "sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==" - }, - "clean-stack": { - "version": "3.0.1", - "requires": { - "escape-string-regexp": "4.0.0" - } - }, - "cli-cursor": { - "version": "3.1.0", - "requires": { - "restore-cursor": "^3.1.0" - } - }, - "cli-spinners": { - "version": "2.9.2", - "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", - "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==" - }, - "cli-truncate": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-4.0.0.tgz", - "integrity": "sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==", - "dev": true, - "requires": { - "slice-ansi": "^5.0.0", - "string-width": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true - }, - "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 - }, - "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, - "requires": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - } - }, - "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, - "requires": { - "ansi-regex": "^6.0.1" - } - } - } - }, - "cli-width": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cli-width/-/cli-width-4.1.0.tgz", - "integrity": "sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==", - "dev": true - }, - "cliui": { - "version": "8.0.1", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.1", - "wrap-ansi": "^7.0.0" - } - }, - "clone": { - "version": "1.0.4" - }, - "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==", - "requires": { - "color-name": "~1.1.4" - } - }, - "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==" - }, - "colorette": { - "version": "2.0.20", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", - "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "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, - "requires": { - "array-ify": "^1.0.0", - "dot-prop": "^5.1.0" - }, - "dependencies": { - "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, - "requires": { - "is-obj": "^2.0.0" - } - } - } - }, - "compress-commons": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/compress-commons/-/compress-commons-6.0.2.tgz", - "integrity": "sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==", - "requires": { - "crc-32": "^1.2.0", - "crc32-stream": "^6.0.0", - "is-stream": "^2.0.1", - "normalize-path": "^3.0.0", - "readable-stream": "^4.0.0" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - } - } - } - }, - "concat-map": { - "version": "0.0.1" - }, - "concat-stream": { - "version": "2.0.0", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.0.2", - "typedarray": "^0.0.6" - }, - "dependencies": { - "typedarray": { - "version": "0.0.6" - } - } - }, - "conf": { - "version": "10.2.0", - "requires": { - "ajv": "^8.6.3", - "ajv-formats": "^2.1.1", - "atomically": "^1.7.0", - "debounce-fn": "^4.0.0", - "dot-prop": "^6.0.1", - "env-paths": "^2.2.1", - "json-schema-typed": "^7.0.3", - "onetime": "^5.1.2", - "pkg-up": "^3.1.0", - "semver": "^7.3.5" - } - }, - "config": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/config/-/config-3.3.12.tgz", - "integrity": "sha512-Vmx389R/QVM3foxqBzXO8t2tUikYZP64Q6vQxGrsMpREeJc/aWRnPRERXWsYzOHAumx/AOoILWe6nU3ZJL+6Sw==", - "dev": true, - "requires": { - "json5": "^2.2.3" - } - }, - "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==", - "requires": { - "ini": "^1.3.4", - "proto-list": "~1.2.1" - } - }, - "constant-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/constant-case/-/constant-case-3.0.4.tgz", - "integrity": "sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case": "^2.0.2" - } - }, - "content-type": { - "version": "1.0.5" - }, - "conventional-changelog-angular": { - "version": "8.3.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-angular/-/conventional-changelog-angular-8.3.1.tgz", - "integrity": "sha512-6gfI3otXK5Ph5DfCOI1dblr+kN3FAm5a97hYoQkqNZxOaYa5WKfXH+AnpsmS+iUH2mgVC2Cg2Qw9m5OKcmNrIg==", - "dev": true, - "requires": { - "compare-func": "^2.0.0" - } - }, - "conventional-changelog-conventionalcommits": { - "version": "9.3.1", - "resolved": "https://registry.npmjs.org/conventional-changelog-conventionalcommits/-/conventional-changelog-conventionalcommits-9.3.1.tgz", - "integrity": "sha512-dTYtpIacRpcZgrvBYvBfArMmK2xvIpv2TaxM0/ZI5CBtNUzvF2x0t15HsbRABWprS6UPmvj+PzHVjSx4qAVKyw==", - "dev": true, - "requires": { - "compare-func": "^2.0.0" - } - }, - "conventional-commits-parser": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/conventional-commits-parser/-/conventional-commits-parser-6.4.0.tgz", - "integrity": "sha512-tvRg7FIBNlyPzjdG8wWRlPHQJJHI7DylhtRGeU9Lq+JuoPh5BKpPRX83ZdLrvXuOSu5Eo/e7SzOQhU4Hd2Miuw==", - "dev": true, - "requires": { - "@simple-libs/stream-utils": "^1.2.0", - "meow": "^13.0.0" - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" - }, - "cosmiconfig": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.1.tgz", - "integrity": "sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==", - "dev": true, - "requires": { - "env-paths": "^2.2.1", - "import-fresh": "^3.3.0", - "js-yaml": "^4.1.0", - "parse-json": "^5.2.0" - } - }, - "cosmiconfig-typescript-loader": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/cosmiconfig-typescript-loader/-/cosmiconfig-typescript-loader-6.3.0.tgz", - "integrity": "sha512-Akr82WH1Wfqatyiqpj8HDkO2o2KmJRu1FhKfSNJP3K4IdXwHfEyL7MOb62i1AGQVLtIQM+iCE9CGOtrfhR+mmA==", - "dev": true, - "requires": { - "jiti": "2.6.1" - } - }, - "crc-32": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", - "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==" - }, - "crc32-stream": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/crc32-stream/-/crc32-stream-6.0.0.tgz", - "integrity": "sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==", - "requires": { - "crc-32": "^1.2.0", - "readable-stream": "^4.0.0" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - } - } - } - }, - "create-checkly": { - "version": "file:packages/create-cli", - "requires": { - "@oclif/core": "^4.11.1", - "@oclif/plugin-help": "^6.2.46", - "@oclif/plugin-warn-if-update-available": "^3.1.62", - "@types/debug": "^4.1.13", - "@types/node": "^22.19.17", - "@types/prompts": "^2.4.9", - "@types/uuid": "^10.0.0", - "axios": "^1.16.0", - "chalk": "^4.1.2", - "cross-env": "^10.1.0", - "debug": "^4.4.3", - "execa": "^5.1.1", - "giget": "^3.2.0", - "jiti": "^2.7.0", - "json5": "^2.2.3", - "ora": "^5.4.1", - "passwd-user": "^3.0.0", - "prompts": "^2.4.2", - "recast": "^0.23.11", - "rimraf": "^5.0.10", - "ts-node": "^10.9.2", - "typescript": "^6.0.3", - "unique-names-generator": "^4.7.1", - "uuid": "^11.1.1", - "vitest": "^3.2.4" - }, - "dependencies": { - "@types/node": { - "version": "22.19.17", - "resolved": "https://registry.npmjs.org/@types/node/-/node-22.19.17.tgz", - "integrity": "sha512-wGdMcf+vPYM6jikpS/qhg6WiqSV/OhG+jeeHT/KlVqxYfD40iYJf9/AE1uQxVWFvU7MipKRkRv8NSHiCGgPr8Q==", - "dev": true, - "requires": { - "undici-types": "~6.21.0" - } - }, - "@vitest/expect": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/expect/-/expect-3.2.4.tgz", - "integrity": "sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==", - "dev": true, - "requires": { - "@types/chai": "^5.2.2", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "tinyrainbow": "^2.0.0" - } - }, - "@vitest/mocker": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/mocker/-/mocker-3.2.4.tgz", - "integrity": "sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==", - "dev": true, - "requires": { - "@vitest/spy": "3.2.4", - "estree-walker": "^3.0.3", - "magic-string": "^0.30.17" - } - }, - "@vitest/pretty-format": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/pretty-format/-/pretty-format-3.2.4.tgz", - "integrity": "sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==", - "dev": true, - "requires": { - "tinyrainbow": "^2.0.0" - } - }, - "@vitest/runner": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/runner/-/runner-3.2.4.tgz", - "integrity": "sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==", - "dev": true, - "requires": { - "@vitest/utils": "3.2.4", - "pathe": "^2.0.3", - "strip-literal": "^3.0.0" - } - }, - "@vitest/snapshot": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/snapshot/-/snapshot-3.2.4.tgz", - "integrity": "sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==", - "dev": true, - "requires": { - "@vitest/pretty-format": "3.2.4", - "magic-string": "^0.30.17", - "pathe": "^2.0.3" - } - }, - "@vitest/spy": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/spy/-/spy-3.2.4.tgz", - "integrity": "sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==", - "dev": true, - "requires": { - "tinyspy": "^4.0.3" - } - }, - "@vitest/utils": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/@vitest/utils/-/utils-3.2.4.tgz", - "integrity": "sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==", - "dev": true, - "requires": { - "@vitest/pretty-format": "3.2.4", - "loupe": "^3.1.4", - "tinyrainbow": "^2.0.0" - } - }, - "chai": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/chai/-/chai-5.3.3.tgz", - "integrity": "sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==", - "dev": true, - "requires": { - "assertion-error": "^2.0.1", - "check-error": "^2.1.1", - "deep-eql": "^5.0.1", - "loupe": "^3.1.0", - "pathval": "^2.0.0" - } - }, - "chalk": { - "version": "4.1.2", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "cross-spawn": { - "version": "6.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.6.tgz", - "integrity": "sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==", - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "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==" - }, - "jiti": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.7.0.tgz", - "integrity": "sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==" - }, - "ora": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", - "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", - "requires": { - "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" - } - }, - "passwd-user": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/passwd-user/-/passwd-user-3.0.0.tgz", - "integrity": "sha512-Iu90rROks+uDK00ppSewoZyqeCwjGR6W8PcY0Phl8YFWju/lRmIogQb98+vSb5RUeYkONL3IC4ZLBFg4FiE0Hg==", - "requires": { - "execa": "^1.0.0" - }, - "dependencies": { - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==" - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "requires": { - "path-key": "^2.0.0" - } - } - } - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==" - }, - "picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true - }, - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==" - }, - "std-env": { - "version": "3.10.0", - "resolved": "https://registry.npmjs.org/std-env/-/std-env-3.10.0.tgz", - "integrity": "sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==", - "dev": true - }, - "tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==", - "dev": true - }, - "tinyrainbow": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/tinyrainbow/-/tinyrainbow-2.0.0.tgz", - "integrity": "sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==", - "dev": true - }, - "typescript": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-6.0.3.tgz", - "integrity": "sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==", - "dev": true - }, - "vitest": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vitest/-/vitest-3.2.4.tgz", - "integrity": "sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==", - "dev": true, - "requires": { - "@types/chai": "^5.2.2", - "@vitest/expect": "3.2.4", - "@vitest/mocker": "3.2.4", - "@vitest/pretty-format": "^3.2.4", - "@vitest/runner": "3.2.4", - "@vitest/snapshot": "3.2.4", - "@vitest/spy": "3.2.4", - "@vitest/utils": "3.2.4", - "chai": "^5.2.0", - "debug": "^4.4.1", - "expect-type": "^1.2.1", - "magic-string": "^0.30.17", - "pathe": "^2.0.3", - "picomatch": "^4.0.2", - "std-env": "^3.9.0", - "tinybench": "^2.9.0", - "tinyexec": "^0.3.2", - "tinyglobby": "^0.2.14", - "tinypool": "^1.1.1", - "tinyrainbow": "^2.0.0", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0", - "vite-node": "3.2.4", - "why-is-node-running": "^2.3.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "create-require": { - "version": "1.1.1", - "dev": true - }, - "cross-env": { - "version": "10.1.0", - "resolved": "https://registry.npmjs.org/cross-env/-/cross-env-10.1.0.tgz", - "integrity": "sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==", - "dev": true, - "requires": { - "@epic-web/invariant": "^1.0.0", - "cross-spawn": "^7.0.6" - } - }, - "cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "debounce-fn": { - "version": "4.0.0", - "requires": { - "mimic-fn": "^3.0.0" - } - }, - "debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "requires": { - "ms": "^2.1.3" - } - }, - "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, - "requires": { - "mimic-response": "^3.1.0" - }, - "dependencies": { - "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 - } - } - }, - "deep-eql": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/deep-eql/-/deep-eql-5.0.2.tgz", - "integrity": "sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==", - "dev": true - }, - "deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", - "dev": true - }, - "defaults": { - "version": "1.0.4", - "requires": { - "clone": "^1.0.2" - } - }, - "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 - }, - "define-lazy-prop": { - "version": "2.0.0" - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" - }, - "detect-indent": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/detect-indent/-/detect-indent-7.0.1.tgz", - "integrity": "sha512-Mc7QhQ8s+cLrnUfU/Ji94vG/r8M26m8f++vyres4ZoojaRDpZ1eSIh/EpzLNwlWuvzSZ3UbDFspjFvTDXe6e/g==", - "dev": true - }, - "detect-libc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.1.2.tgz", - "integrity": "sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==", - "dev": true, - "optional": true, - "peer": true - }, - "diff": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/diff/-/diff-4.0.4.tgz", - "integrity": "sha512-X07nttJQkwkfKfvTPG/KSnE2OMdcUCao6+eXF3wmnIQRn2aPAHH3VxDbDOdegkd6JbPsXqShpvEOHfAT+nCNwQ==", - "dev": true - }, - "dot-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/dot-case/-/dot-case-3.0.4.tgz", - "integrity": "sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "dot-prop": { - "version": "6.0.1", - "requires": { - "is-obj": "^2.0.0" - } - }, - "dotenv": { - "version": "16.6.1", - "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.6.1.tgz", - "integrity": "sha512-uBq4egWHTcTt33a72vpSG0z3HnPuIl6NqYcTrKEg2azoEyl2hpW0zqlxysq2pK9HlDIHyHyakeYaYnSAwd8bow==" - }, - "dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "requires": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - } - }, - "eastasianwidth": { - "version": "0.2.0" - }, - "ejs": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/ejs/-/ejs-3.1.10.tgz", - "integrity": "sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==", - "requires": { - "jake": "^10.8.5" - }, - "dependencies": { - "brace-expansion": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", - "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "chalk": { - "version": "4.1.2", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "filelist": { - "version": "1.0.4", - "requires": { - "minimatch": "^5.0.1" - }, - "dependencies": { - "minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "jake": { - "version": "10.8.5", - "requires": { - "async": "^3.2.3", - "chalk": "^4.0.2", - "filelist": "^1.0.1", - "minimatch": "^3.0.4" - } - } - } - }, - "emoji-regex": { - "version": "8.0.0" - }, - "end-of-stream": { - "version": "1.4.4", - "requires": { - "once": "^1.4.0" - } - }, - "env-paths": { - "version": "2.2.1" - }, - "environment": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/environment/-/environment-1.1.0.tgz", - "integrity": "sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==", - "dev": true - }, - "error-ex": { - "version": "1.3.2", - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==" - }, - "es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" - }, - "es-object-atoms": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", - "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", - "requires": { - "es-errors": "^1.3.0" - } - }, - "es-set-tostringtag": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", - "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", - "requires": { - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "has-tostringtag": "^1.0.2", - "hasown": "^2.0.2" - } - }, - "es-toolkit": { - "version": "1.46.1", - "resolved": "https://registry.npmjs.org/es-toolkit/-/es-toolkit-1.46.1.tgz", - "integrity": "sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ==", - "dev": true - }, - "esbuild": { - "version": "0.27.7", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.27.7.tgz", - "integrity": "sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==", - "dev": true, - "requires": { - "@esbuild/aix-ppc64": "0.27.7", - "@esbuild/android-arm": "0.27.7", - "@esbuild/android-arm64": "0.27.7", - "@esbuild/android-x64": "0.27.7", - "@esbuild/darwin-arm64": "0.27.7", - "@esbuild/darwin-x64": "0.27.7", - "@esbuild/freebsd-arm64": "0.27.7", - "@esbuild/freebsd-x64": "0.27.7", - "@esbuild/linux-arm": "0.27.7", - "@esbuild/linux-arm64": "0.27.7", - "@esbuild/linux-ia32": "0.27.7", - "@esbuild/linux-loong64": "0.27.7", - "@esbuild/linux-mips64el": "0.27.7", - "@esbuild/linux-ppc64": "0.27.7", - "@esbuild/linux-riscv64": "0.27.7", - "@esbuild/linux-s390x": "0.27.7", - "@esbuild/linux-x64": "0.27.7", - "@esbuild/netbsd-arm64": "0.27.7", - "@esbuild/netbsd-x64": "0.27.7", - "@esbuild/openbsd-arm64": "0.27.7", - "@esbuild/openbsd-x64": "0.27.7", - "@esbuild/openharmony-arm64": "0.27.7", - "@esbuild/sunos-x64": "0.27.7", - "@esbuild/win32-arm64": "0.27.7", - "@esbuild/win32-ia32": "0.27.7", - "@esbuild/win32-x64": "0.27.7" - } - }, - "escalade": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", - "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", - "dev": true - }, - "escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" - }, - "eslint": { - "version": "10.3.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.3.0.tgz", - "integrity": "sha512-XbEXaRva5cF0ZQB8w6MluHA0kZZfV2DuCMJ3ozyEOHLwDpZX2Lmm/7Pp0xdJmI0GL1W05VH5VwIFHEm1Vcw2gw==", - "dev": true, - "requires": { - "@eslint-community/eslint-utils": "^4.8.0", - "@eslint-community/regexpp": "^4.12.2", - "@eslint/config-array": "^0.23.5", - "@eslint/config-helpers": "^0.5.5", - "@eslint/core": "^1.2.1", - "@eslint/plugin-kit": "^0.7.1", - "@humanfs/node": "^0.16.6", - "@humanwhocodes/module-importer": "^1.0.1", - "@humanwhocodes/retry": "^0.4.2", - "@types/estree": "^1.0.6", - "ajv": "^6.14.0", - "cross-spawn": "^7.0.6", - "debug": "^4.3.2", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^9.1.2", - "eslint-visitor-keys": "^5.0.1", - "espree": "^11.2.0", - "esquery": "^1.7.0", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^8.0.0", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "minimatch": "^10.2.4", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3" - }, - "dependencies": { - "ajv": { - "version": "6.15.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.15.0.tgz", - "integrity": "sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true - }, - "brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, - "requires": { - "balanced-match": "^4.0.2" - } - }, - "eslint-visitor-keys": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-5.0.1.tgz", - "integrity": "sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==", - "dev": true - }, - "espree": { - "version": "11.2.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-11.2.0.tgz", - "integrity": "sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==", - "dev": true, - "requires": { - "acorn": "^8.16.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^5.0.1" - } - }, - "find-up": { - "version": "5.0.0", - "dev": true, - "requires": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - } - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "locate-path": { - "version": "6.0.0", - "dev": true, - "requires": { - "p-locate": "^5.0.0" - } - }, - "minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "requires": { - "brace-expansion": "^5.0.5" - } - }, - "p-limit": { - "version": "3.1.0", - "dev": true, - "requires": { - "yocto-queue": "^0.1.0" - } - }, - "p-locate": { - "version": "5.0.0", - "dev": true, - "requires": { - "p-limit": "^3.0.2" - } - } - } - }, - "eslint-scope": { - "version": "9.1.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-9.1.2.tgz", - "integrity": "sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==", - "dev": true, - "requires": { - "@types/esrecurse": "^4.3.1", - "@types/estree": "^1.0.8", - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" - } - }, - "eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", - "dev": true - }, - "espree": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/espree/-/espree-10.4.0.tgz", - "integrity": "sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==", - "dev": true, - "requires": { - "acorn": "^8.15.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^4.2.1" - }, - "dependencies": { - "eslint-visitor-keys": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-4.2.1.tgz", - "integrity": "sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==", - "dev": true - } - } - }, - "esprima": { - "version": "4.0.1" - }, - "esquery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.7.0.tgz", - "integrity": "sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==", - "dev": true, - "requires": { - "estraverse": "^5.1.0" - } - }, - "esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, - "requires": { - "estraverse": "^5.2.0" - } - }, - "estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true - }, - "estree-walker": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", - "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", - "dev": true, - "requires": { - "@types/estree": "^1.0.0" - } - }, - "esutils": { - "version": "2.0.3", - "dev": true - }, - "event-target-shim": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", - "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==" - }, - "eventemitter3": { - "version": "4.0.7" - }, - "events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==" - }, - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "requires": { - "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" - } - }, - "expect-type": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/expect-type/-/expect-type-1.3.0.tgz", - "integrity": "sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3" - }, - "fast-fifo": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", - "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "fast-unique-numbers": { - "version": "9.0.24", - "resolved": "https://registry.npmjs.org/fast-unique-numbers/-/fast-unique-numbers-9.0.24.tgz", - "integrity": "sha512-Dv0BYn4waOWse94j16rsZ5w/0zoaCa74O3q6IZjMqaXbtT92Q+Sb6pPk+phGzD8Xh+nueQmSRI3tSCaHKidzKw==", - "requires": { - "@babel/runtime": "^7.28.4", - "tslib": "^2.8.1" - } - }, - "fast-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", - "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==" - }, - "fast-xml-builder": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/fast-xml-builder/-/fast-xml-builder-1.1.9.tgz", - "integrity": "sha512-jcyKVSEX13iseJqg7n/KWw+xnu/7fdrZ333Fac54KjHDIELVCfDDJXYIm6DTJ0Su4gSzrhqiK0DzY/wZbF40mw==", - "dev": true, - "requires": { - "path-expression-matcher": "^1.1.3" - } - }, - "fast-xml-parser": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-5.7.2.tgz", - "integrity": "sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w==", - "dev": true, - "requires": { - "@nodable/entities": "^2.1.0", - "fast-xml-builder": "^1.1.5", - "path-expression-matcher": "^1.5.0", - "strnum": "^2.2.3" - } - }, - "fastest-levenshtein": { - "version": "1.0.16", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", - "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", - "dev": true - }, - "figures": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/figures/-/figures-6.1.0.tgz", - "integrity": "sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==", - "requires": { - "is-unicode-supported": "^2.0.0" - }, - "dependencies": { - "is-unicode-supported": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-2.1.0.tgz", - "integrity": "sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==" - } - } - }, - "file-entry-cache": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-8.0.0.tgz", - "integrity": "sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==", - "dev": true, - "requires": { - "flat-cache": "^4.0.0" - } - }, - "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, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-yarn-workspace-root": { - "version": "2.0.0", - "dev": true, - "requires": { - "micromatch": "^4.0.2" - } - }, - "flat-cache": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-4.0.1.tgz", - "integrity": "sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==", - "dev": true, - "requires": { - "flatted": "^3.2.9", - "keyv": "^4.5.4" - } - }, - "flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", - "dev": true - }, - "follow-redirects": { - "version": "1.16.0", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.16.0.tgz", - "integrity": "sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==" - }, - "foreground-child": { - "version": "3.1.1", - "requires": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "dependencies": { - "signal-exit": { - "version": "4.0.2" - } - } - }, - "form-data": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.5.tgz", - "integrity": "sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "es-set-tostringtag": "^2.1.0", - "hasown": "^2.0.2", - "mime-types": "^2.1.12" - } - }, - "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 - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" - }, - "get-caller-file": { - "version": "2.0.5", - "dev": true - }, - "get-east-asian-width": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-east-asian-width/-/get-east-asian-width-1.3.0.tgz", - "integrity": "sha512-vpeMIQKxczTD/0s2CdEWHcb0eeJe6TFjxb+J5xgX7hScxqrGuyjmv4c1D4A/gelKfyox0gJJwIHF+fLjeaM8kQ==", - "dev": true - }, - "get-intrinsic": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", - "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", - "requires": { - "call-bind-apply-helpers": "^1.0.2", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "function-bind": "^1.1.2", - "get-proto": "^1.0.1", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - } - }, - "get-package-type": { - "version": "0.1.0" - }, - "get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "requires": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - } - }, - "get-stdin": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", - "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", - "dev": true - }, - "get-stream": { - "version": "6.0.1" - }, - "giget": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/giget/-/giget-3.2.0.tgz", - "integrity": "sha512-GvHTWcykIR/fP8cj8dMpuMMkvaeJfPvYnhq0oW+chSeIr+ldX21ifU2Ms6KBoyKZQZmVaUAAhQ2EZ68KJF8a7A==" - }, - "git-hooks-list": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/git-hooks-list/-/git-hooks-list-3.2.0.tgz", - "integrity": "sha512-ZHG9a1gEhUMX1TvGrLdyWb9kDopCBbTnI8z4JgRMYxsijWipgjSEYoPWqBuIB0DnRnvqlQSEeVmzpeuPm7NdFQ==", - "dev": true - }, - "git-raw-commits": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/git-raw-commits/-/git-raw-commits-5.0.1.tgz", - "integrity": "sha512-Y+csSm2GD/PCSh6Isd/WiMjNAydu0VBiG9J7EdQsNA5P9uXvLayqjmTsNlK5Gs9IhblFZqOU0yid5Il5JPoLiQ==", - "dev": true, - "requires": { - "@conventional-changelog/git-client": "^2.6.0", - "meow": "^13.0.0" - } - }, - "git-repo-info": { - "version": "2.1.1" - }, - "github-slugger": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", - "dev": true - }, - "glob": { - "version": "10.5.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", - "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^3.1.2", - "minimatch": "^9.0.4", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^1.11.1" - }, - "dependencies": { - "brace-expansion": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", - "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "9.0.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.9.tgz", - "integrity": "sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==", - "requires": { - "brace-expansion": "^2.0.2" - } - } - } - }, - "glob-parent": { - "version": "6.0.2", - "dev": true, - "requires": { - "is-glob": "^4.0.3" - } - }, - "global-directory": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/global-directory/-/global-directory-5.0.0.tgz", - "integrity": "sha512-1pgFdhK3J2LeM+dVf2Pd424yHx2ou338lC0ErNP2hPx4j8eW1Sp0XqSjNxtk6Tc4Kr5wlWtSvz8cn2yb7/SG/w==", - "dev": true, - "requires": { - "ini": "6.0.0" - }, - "dependencies": { - "ini": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/ini/-/ini-6.0.0.tgz", - "integrity": "sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==", - "dev": true - } - } - }, - "globals": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.6.0.tgz", - "integrity": "sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==", - "dev": true - }, - "gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==" - }, - "got": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/got/-/got-13.0.0.tgz", - "integrity": "sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==", - "dev": true, - "requires": { - "@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" - } - }, - "graceful-fs": { - "version": "4.2.10" - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" - }, - "has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==" - }, - "has-tostringtag": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", - "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", - "requires": { - "has-symbols": "^1.0.3" - } - }, - "hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "requires": { - "function-bind": "^1.1.2" - } - }, - "header-case": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/header-case/-/header-case-2.0.4.tgz", - "integrity": "sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==", - "dev": true, - "requires": { - "capital-case": "^1.0.4", - "tslib": "^2.0.3" - } - }, - "help-me": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/help-me/-/help-me-5.0.0.tgz", - "integrity": "sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==" - }, - "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 - }, - "http-call": { - "version": "5.3.0", - "requires": { - "content-type": "^1.0.4", - "debug": "^4.1.1", - "is-retry-allowed": "^1.1.0", - "is-stream": "^2.0.0", - "parse-json": "^4.0.0", - "tunnel-agent": "^0.6.0" - }, - "dependencies": { - "parse-json": { - "version": "4.0.0", - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - } - } - }, - "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, - "requires": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - } - }, - "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==" - }, - "iconv-lite": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.1.tgz", - "integrity": "sha512-2Tth85cXwGFHfvRgZWszZSvdo+0Xsqmw8k8ZwxScfcBneNUraK+dxRxRm24nszx80Y0TVio8kKLt5sLE7ZCLlw==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - } - }, - "ieee754": { - "version": "1.2.1" - }, - "ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true - }, - "import-fresh": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.1.tgz", - "integrity": "sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==", - "dev": true, - "requires": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" - }, - "dependencies": { - "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 - } - } - }, - "import-meta-resolve": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/import-meta-resolve/-/import-meta-resolve-4.2.0.tgz", - "integrity": "sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==", - "dev": true - }, - "imurmurhash": { - "version": "0.1.4", - "dev": true - }, - "indent-string": { - "version": "4.0.0" - }, - "inherits": { - "version": "2.0.4" - }, - "ini": { - "version": "1.3.8" - }, - "ip-address": { - "version": "10.2.0", - "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-10.2.0.tgz", - "integrity": "sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==" - }, - "is-arrayish": { - "version": "0.2.1" - }, - "is-docker": { - "version": "2.2.1" - }, - "is-extglob": { - "version": "2.1.1", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0" - }, - "is-glob": { - "version": "4.0.3", - "dev": true, - "requires": { - "is-extglob": "^2.1.1" - } - }, - "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 - }, - "is-obj": { - "version": "2.0.0" - }, - "is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==" - }, - "is-retry-allowed": { - "version": "1.2.0" - }, - "is-stream": { - "version": "2.0.1" - }, - "is-unicode-supported": { - "version": "0.1.0" - }, - "is-wsl": { - "version": "2.2.0", - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, - "isexe": { - "version": "2.0.0" - }, - "jackspeak": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-3.4.3.tgz", - "integrity": "sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==", - "requires": { - "@isaacs/cliui": "^8.0.2", - "@pkgjs/parseargs": "^0.11.0" - } - }, - "jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true - }, - "js-sdsl": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/js-sdsl/-/js-sdsl-4.3.0.tgz", - "integrity": "sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==" - }, - "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 - }, - "js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", - "dev": true, - "requires": { - "argparse": "^2.0.1" - } - }, - "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 - }, - "json-parse-better-errors": { - "version": "1.0.2" - }, - "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 - }, - "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==" - }, - "json-schema-typed": { - "version": "7.0.3" - }, - "json-stable-stringify-without-jsonify": { - "version": "1.0.1", - "dev": true - }, - "json-stream-stringify": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/json-stream-stringify/-/json-stream-stringify-3.1.6.tgz", - "integrity": "sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==" - }, - "json5": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", - "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==" - }, - "jwt-decode": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jwt-decode/-/jwt-decode-4.0.0.tgz", - "integrity": "sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==" - }, - "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, - "requires": { - "json-buffer": "3.0.1" - } - }, - "kleur": { - "version": "3.0.3" - }, - "lazystream": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", - "integrity": "sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==", - "requires": { - "readable-stream": "^2.0.5" - }, - "dependencies": { - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", - "requires": { - "safe-buffer": "~5.1.0" - } - } - } - }, - "levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" - } - }, - "lightningcss": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.32.0.tgz", - "integrity": "sha512-NXYBzinNrblfraPGyrbPoD19C1h9lfI/1mzgWYvXUTe414Gz/X1FD2XBZSZM7rRTrMA8JL3OtAaGifrIKhQ5yQ==", - "dev": true, - "optional": true, - "peer": true, - "requires": { - "detect-libc": "^2.0.3", - "lightningcss-android-arm64": "1.32.0", - "lightningcss-darwin-arm64": "1.32.0", - "lightningcss-darwin-x64": "1.32.0", - "lightningcss-freebsd-x64": "1.32.0", - "lightningcss-linux-arm-gnueabihf": "1.32.0", - "lightningcss-linux-arm64-gnu": "1.32.0", - "lightningcss-linux-arm64-musl": "1.32.0", - "lightningcss-linux-x64-gnu": "1.32.0", - "lightningcss-linux-x64-musl": "1.32.0", - "lightningcss-win32-arm64-msvc": "1.32.0", - "lightningcss-win32-x64-msvc": "1.32.0" - } - }, - "lightningcss-android-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-android-arm64/-/lightningcss-android-arm64-1.32.0.tgz", - "integrity": "sha512-YK7/ClTt4kAK0vo6w3X+Pnm0D2cf2vPHbhOXdoNti1Ga0al1P4TBZhwjATvjNwLEBCnKvjJc2jQgHXH0NEwlAg==", - "dev": true, - "optional": true, - "peer": true - }, - "lightningcss-darwin-arm64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.32.0.tgz", - "integrity": "sha512-RzeG9Ju5bag2Bv1/lwlVJvBE3q6TtXskdZLLCyfg5pt+HLz9BqlICO7LZM7VHNTTn/5PRhHFBSjk5lc4cmscPQ==", - "dev": true, - "optional": true, - "peer": true - }, - "lightningcss-darwin-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.32.0.tgz", - "integrity": "sha512-U+QsBp2m/s2wqpUYT/6wnlagdZbtZdndSmut/NJqlCcMLTWp5muCrID+K5UJ6jqD2BFshejCYXniPDbNh73V8w==", - "dev": true, - "optional": true, - "peer": true - }, - "lightningcss-freebsd-x64": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.32.0.tgz", - "integrity": "sha512-JCTigedEksZk3tHTTthnMdVfGf61Fky8Ji2E4YjUTEQX14xiy/lTzXnu1vwiZe3bYe0q+SpsSH/CTeDXK6WHig==", - "dev": true, - "optional": true, - "peer": true - }, - "lightningcss-linux-arm-gnueabihf": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.32.0.tgz", - "integrity": "sha512-x6rnnpRa2GL0zQOkt6rts3YDPzduLpWvwAF6EMhXFVZXD4tPrBkEFqzGowzCsIWsPjqSK+tyNEODUBXeeVHSkw==", - "dev": true, - "optional": true, - "peer": true - }, - "lightningcss-linux-arm64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.32.0.tgz", - "integrity": "sha512-0nnMyoyOLRJXfbMOilaSRcLH3Jw5z9HDNGfT/gwCPgaDjnx0i8w7vBzFLFR1f6CMLKF8gVbebmkUN3fa/kQJpQ==", - "dev": true, - "optional": true, - "peer": true - }, - "lightningcss-linux-arm64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.32.0.tgz", - "integrity": "sha512-UpQkoenr4UJEzgVIYpI80lDFvRmPVg6oqboNHfoH4CQIfNA+HOrZ7Mo7KZP02dC6LjghPQJeBsvXhJod/wnIBg==", - "dev": true, - "optional": true, - "peer": true - }, - "lightningcss-linux-x64-gnu": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.32.0.tgz", - "integrity": "sha512-V7Qr52IhZmdKPVr+Vtw8o+WLsQJYCTd8loIfpDaMRWGUZfBOYEJeyJIkqGIDMZPwPx24pUMfwSxxI8phr/MbOA==", - "dev": true, - "optional": true, - "peer": true - }, - "lightningcss-linux-x64-musl": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.32.0.tgz", - "integrity": "sha512-bYcLp+Vb0awsiXg/80uCRezCYHNg1/l3mt0gzHnWV9XP1W5sKa5/TCdGWaR/zBM2PeF/HbsQv/j2URNOiVuxWg==", - "dev": true, - "optional": true, - "peer": true - }, - "lightningcss-win32-arm64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-arm64-msvc/-/lightningcss-win32-arm64-msvc-1.32.0.tgz", - "integrity": "sha512-8SbC8BR40pS6baCM8sbtYDSwEVQd4JlFTOlaD3gWGHfThTcABnNDBda6eTZeqbofalIJhFx0qKzgHJmcPTnGdw==", - "dev": true, - "optional": true, - "peer": true - }, - "lightningcss-win32-x64-msvc": { - "version": "1.32.0", - "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.32.0.tgz", - "integrity": "sha512-Amq9B/SoZYdDi1kFrojnoqPLxYhQ4Wo5XiL8EVJrVsB8ARoC1PWW6VGtT0WKCemjy8aC+louJnjS7U18x3b06Q==", - "dev": true, - "optional": true, - "peer": true - }, - "lilconfig": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-3.1.3.tgz", - "integrity": "sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==" - }, - "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 - }, - "lint-staged": { - "version": "15.5.2", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-15.5.2.tgz", - "integrity": "sha512-YUSOLq9VeRNAo/CTaVmhGDKG+LBtA8KF1X4K5+ykMSwWST1vDxJRB2kv2COgLb1fvpCo+A/y9A0G0znNVmdx4w==", - "dev": true, - "requires": { - "chalk": "^5.4.1", - "commander": "^13.1.0", - "debug": "^4.4.0", - "execa": "^8.0.1", - "lilconfig": "^3.1.3", - "listr2": "^8.2.5", - "micromatch": "^4.0.8", - "pidtree": "^0.6.0", - "string-argv": "^0.3.2", - "yaml": "^2.7.0" - }, - "dependencies": { - "commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", - "dev": true - }, - "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, - "requires": { - "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" - } - }, - "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 - }, - "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 - }, - "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 - }, - "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 - }, - "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, - "requires": { - "path-key": "^4.0.0" - } - }, - "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, - "requires": { - "mimic-fn": "^4.0.0" - } - }, - "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 - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - }, - "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 - } - } - }, - "listr2": { - "version": "8.2.5", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-8.2.5.tgz", - "integrity": "sha512-iyAZCeyD+c1gPyE9qpFu8af0Y+MRtmKOncdGoA2S5EY8iFq99dmmvkNnHiWo+pj0s7yH7l3KPIgee77tKpXPWQ==", - "dev": true, - "requires": { - "cli-truncate": "^4.0.0", - "colorette": "^2.0.20", - "eventemitter3": "^5.0.1", - "log-update": "^6.1.0", - "rfdc": "^1.4.1", - "wrap-ansi": "^9.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true - }, - "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 - }, - "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 - }, - "eventemitter3": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", - "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", - "dev": true - }, - "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, - "requires": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - } - }, - "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, - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", - "dev": true, - "requires": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - } - } - } - }, - "lodash": { - "version": "4.18.1", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.18.1.tgz", - "integrity": "sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==" - }, - "log-symbols": { - "version": "4.1.0", - "requires": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "dependencies": { - "chalk": { - "version": "4.1.2", - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - } - } - }, - "log-update": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-6.1.0.tgz", - "integrity": "sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==", - "dev": true, - "requires": { - "ansi-escapes": "^7.0.0", - "cli-cursor": "^5.0.0", - "slice-ansi": "^7.1.0", - "strip-ansi": "^7.1.0", - "wrap-ansi": "^9.0.0" - }, - "dependencies": { - "ansi-escapes": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-7.0.0.tgz", - "integrity": "sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==", - "dev": true, - "requires": { - "environment": "^1.0.0" - } - }, - "ansi-regex": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.1.0.tgz", - "integrity": "sha512-7HSX4QQb4CspciLpVFwyRe79O3xsIZDDLER21kERQ71oaPodF8jL725AgJMFAYbooIqolJoRLuM81SpeUkpkvA==", - "dev": true - }, - "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 - }, - "cli-cursor": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-5.0.0.tgz", - "integrity": "sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==", - "dev": true, - "requires": { - "restore-cursor": "^5.0.0" - } - }, - "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 - }, - "is-fullwidth-code-point": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-5.0.0.tgz", - "integrity": "sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==", - "dev": true, - "requires": { - "get-east-asian-width": "^1.0.0" - } - }, - "onetime": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-7.0.0.tgz", - "integrity": "sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==", - "dev": true, - "requires": { - "mimic-function": "^5.0.0" - } - }, - "restore-cursor": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-5.1.0.tgz", - "integrity": "sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==", - "dev": true, - "requires": { - "onetime": "^7.0.0", - "signal-exit": "^4.1.0" - } - }, - "signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "dev": true - }, - "slice-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-7.1.0.tgz", - "integrity": "sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==", - "dev": true, - "requires": { - "ansi-styles": "^6.2.1", - "is-fullwidth-code-point": "^5.0.0" - } - }, - "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, - "requires": { - "emoji-regex": "^10.3.0", - "get-east-asian-width": "^1.0.0", - "strip-ansi": "^7.1.0" - } - }, - "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, - "requires": { - "ansi-regex": "^6.0.1" - } - }, - "wrap-ansi": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-9.0.0.tgz", - "integrity": "sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==", - "dev": true, - "requires": { - "ansi-styles": "^6.2.1", - "string-width": "^7.0.0", - "strip-ansi": "^7.1.0" - } - } - } - }, - "loupe": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/loupe/-/loupe-3.2.1.tgz", - "integrity": "sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==", - "dev": true - }, - "lower-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", - "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", - "dev": true, - "requires": { - "tslib": "^2.0.3" - } - }, - "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 - }, - "luxon": { - "version": "3.7.2", - "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.7.2.tgz", - "integrity": "sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==" - }, - "magic-string": { - "version": "0.30.21", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz", - "integrity": "sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==", - "dev": true, - "requires": { - "@jridgewell/sourcemap-codec": "^1.5.5" - } - }, - "make-error": { - "version": "1.3.6", - "dev": true - }, - "math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==" - }, - "meow": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/meow/-/meow-13.2.0.tgz", - "integrity": "sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==", - "dev": true - }, - "merge-stream": { - "version": "2.0.0" - }, - "micromatch": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", - "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", - "dev": true, - "requires": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - } - }, - "mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" - }, - "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==", - "requires": { - "mime-db": "1.52.0" - } - }, - "mimic-fn": { - "version": "3.1.0" - }, - "mimic-function": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/mimic-function/-/mimic-function-5.0.1.tgz", - "integrity": "sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==", - "dev": true - }, - "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 - }, - "minimatch": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", - "integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==" - }, - "minipass": { - "version": "7.1.3", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", - "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==" - }, - "minizlib": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-3.1.0.tgz", - "integrity": "sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==", - "dev": true, - "requires": { - "minipass": "^7.1.2" - } - }, - "mqtt": { - "version": "5.15.1", - "resolved": "https://registry.npmjs.org/mqtt/-/mqtt-5.15.1.tgz", - "integrity": "sha512-V1WnkGuJh3ec9QXzy5Iylw8OOBK+Xu1WhxcQ9mMpLThG+/JZIMV1PgLNRgIiqXhZnvnVLsuyxHl5A/3bHHbcAA==", - "requires": { - "@types/readable-stream": "^4.0.21", - "@types/ws": "^8.18.1", - "commist": "^3.2.0", - "concat-stream": "^2.0.0", - "debug": "^4.4.1", - "help-me": "^5.0.0", - "lru-cache": "^10.4.3", - "minimist": "^1.2.8", - "mqtt-packet": "^9.0.2", - "number-allocator": "^1.0.14", - "readable-stream": "^4.7.0", - "rfdc": "^1.4.1", - "socks": "^2.8.6", - "split2": "^4.2.0", - "worker-timers": "^8.0.23", - "ws": "^8.18.3" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "commist": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/commist/-/commist-3.2.0.tgz", - "integrity": "sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw==" - }, - "lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" - }, - "readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - } - }, - "split2": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/split2/-/split2-4.2.0.tgz", - "integrity": "sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==" - } - } - }, - "mqtt-packet": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/mqtt-packet/-/mqtt-packet-9.0.2.tgz", - "integrity": "sha512-MvIY0B8/qjq7bKxdN1eD+nrljoeaai+qjLJgfRn3TiMuz0pamsIWY2bFODPZMSNmabsLANXsLl4EMoWvlaTZWA==", - "requires": { - "bl": "^6.0.8", - "debug": "^4.3.4", - "process-nextick-args": "^2.0.1" - }, - "dependencies": { - "bl": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/bl/-/bl-6.1.0.tgz", - "integrity": "sha512-ClDyJGQkc8ZtzdAAbAwBmhMSpwN/sC9HA8jxdYm6nVUbCfZbe2mgza4qh7AuEYyEPB/c4Kznf9s66bnsKMQDjw==", - "requires": { - "@types/readable-stream": "^4.0.0", - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^4.2.0" - } - }, - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - } - } - } - }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "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==", - "dev": true - }, - "nanoid": { - "version": "3.3.12", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.12.tgz", - "integrity": "sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==", - "dev": true - }, - "natural-compare": { - "version": "1.4.0", - "dev": true - }, - "nice-try": { - "version": "1.0.5" - }, - "no-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", - "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", - "dev": true, - "requires": { - "lower-case": "^2.0.2", - "tslib": "^2.0.3" - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" - }, - "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 - }, - "npm-run-path": { - "version": "4.0.1", - "requires": { - "path-key": "^3.0.0" - } - }, - "number-allocator": { - "version": "1.0.14", - "resolved": "https://registry.npmjs.org/number-allocator/-/number-allocator-1.0.14.tgz", - "integrity": "sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==", - "requires": { - "debug": "^4.3.1", - "js-sdsl": "4.3.0" - } - }, - "oclif": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/oclif/-/oclif-4.23.0.tgz", - "integrity": "sha512-0Rz8YsJx6NQORMgyDeDr6i0OlJa6h4oLXBht9iRZhn/YI/by/ONKgcJIPXyTgeLK21JmhbFqJn6Y1AME0EH1Dw==", - "dev": true, - "requires": { - "@aws-sdk/client-cloudfront": "3.1009.0", - "@aws-sdk/client-s3": "3.1014.0", - "@inquirer/confirm": "^3.1.22", - "@inquirer/input": "^2.2.4", - "@inquirer/select": "^2.5.0", - "@oclif/core": "4.9.0", - "@oclif/plugin-help": "^6.2.38", - "@oclif/plugin-not-found": "^3.2.76", - "@oclif/plugin-warn-if-update-available": "^3.1.57", - "ansis": "^3.16.0", - "async-retry": "^1.3.3", - "change-case": "^4", - "debug": "^4.4.0", - "ejs": "^3.1.10", - "find-yarn-workspace-root": "^2.0.0", - "fs-extra": "^8.1", - "github-slugger": "^2", - "got": "^13", - "lodash": "^4.18.1", - "normalize-package-data": "^6", - "semver": "^7.7.4", - "sort-package-json": "^2.15.1", - "tiny-jsonc": "^1.0.2", - "validate-npm-package-name": "^5.0.1" - }, - "dependencies": { - "@oclif/core": { - "version": "4.9.0", - "resolved": "https://registry.npmjs.org/@oclif/core/-/core-4.9.0.tgz", - "integrity": "sha512-k/ntRgDcUprTT+aaNoF+whk3cY3f9fRD2lkF6ul7JeCUg2MaMXVXZXfbRhJCfsiX51X8/5Pqo0LGdO9SLYXNHg==", - "dev": true, - "requires": { - "ansi-escapes": "^4.3.2", - "ansis": "^3.17.0", - "clean-stack": "^3.0.1", - "cli-spinners": "^2.9.2", - "debug": "^4.4.3", - "ejs": "^3.1.10", - "get-package-type": "^0.1.0", - "indent-string": "^4.0.0", - "is-wsl": "^2.2.0", - "lilconfig": "^3.1.3", - "minimatch": "^10.2.4", - "semver": "^7.7.3", - "string-width": "^4.2.3", - "supports-color": "^8", - "tinyglobby": "^0.2.14", - "widest-line": "^3.1.0", - "wordwrap": "^1.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "balanced-match": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", - "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", - "dev": true - }, - "brace-expansion": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.5.tgz", - "integrity": "sha512-VZznLgtwhn+Mact9tfiwx64fA9erHH/MCXEUfB/0bX/6Fz6ny5EGTXYltMocqg4xFAQZtnO3DHWWXi8RiuN7cQ==", - "dev": true, - "requires": { - "balanced-match": "^4.0.2" - } - }, - "fs-extra": { - "version": "8.1.0", - "dev": true, - "requires": { - "graceful-fs": "^4.2.0", - "jsonfile": "^4.0.0", - "universalify": "^0.1.0" - }, - "dependencies": { - "jsonfile": { - "version": "4.0.0", - "dev": true, - "requires": { - "graceful-fs": "^4.1.6" - } - }, - "universalify": { - "version": "0.1.2", - "dev": true - } - } - }, - "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, - "requires": { - "lru-cache": "^10.0.1" - } - }, - "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 - }, - "minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", - "dev": true, - "requires": { - "brace-expansion": "^5.0.5" - } - }, - "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, - "requires": { - "hosted-git-info": "^7.0.0", - "semver": "^7.3.5", - "validate-npm-package-license": "^3.0.4" - } - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "once": { - "version": "1.4.0", - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "requires": { - "mimic-fn": "^2.1.0" - }, - "dependencies": { - "mimic-fn": { - "version": "2.1.0" - } - } - }, - "open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "requires": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - } - }, - "optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", - "dev": true, - "requires": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" - } - }, - "p-cancelable": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-3.0.0.tgz", - "integrity": "sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==", - "dev": true - }, - "p-finally": { - "version": "1.0.0" - }, - "p-limit": { - "version": "2.3.0", - "requires": { - "p-try": "^2.0.0" - } - }, - "p-queue": { - "version": "6.6.2", - "requires": { - "eventemitter3": "^4.0.4", - "p-timeout": "^3.2.0" - } - }, - "p-timeout": { - "version": "3.2.0", - "requires": { - "p-finally": "^1.0.0" - } - }, - "p-try": { - "version": "2.2.0" - }, - "package-json-from-dist": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/package-json-from-dist/-/package-json-from-dist-1.0.1.tgz", - "integrity": "sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==" - }, - "param-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", - "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", - "dev": true, - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "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, - "requires": { - "callsites": "^3.0.0" - } - }, - "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, - "requires": { - "@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" - } - }, - "parse-ms": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-ms/-/parse-ms-4.0.0.tgz", - "integrity": "sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==" - }, - "pascal-case": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", - "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "path-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz", - "integrity": "sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==", - "dev": true, - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "path-exists": { - "version": "4.0.0", - "dev": true - }, - "path-expression-matcher": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/path-expression-matcher/-/path-expression-matcher-1.5.0.tgz", - "integrity": "sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==", - "dev": true - }, - "path-key": { - "version": "3.1.1" - }, - "path-scurry": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.11.1.tgz", - "integrity": "sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==", - "requires": { - "lru-cache": "^10.2.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "dependencies": { - "lru-cache": { - "version": "10.4.3", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", - "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" - } - } - }, - "pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==", - "dev": true - }, - "pathval": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pathval/-/pathval-2.0.1.tgz", - "integrity": "sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==", - "dev": true - }, - "picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "dev": true - }, - "picomatch": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", - "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", - "dev": true - }, - "pidtree": { - "version": "0.6.0", - "dev": true - }, - "pkg-up": { - "version": "3.1.0", - "requires": { - "find-up": "^3.0.0" - }, - "dependencies": { - "find-up": { - "version": "3.0.0", - "requires": { - "locate-path": "^3.0.0" - } - }, - "locate-path": { - "version": "3.0.0", - "requires": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - } - }, - "p-locate": { - "version": "3.0.0", - "requires": { - "p-limit": "^2.0.0" - } - }, - "path-exists": { - "version": "3.0.0" - } - } - }, - "playwright": { - "version": "1.59.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.59.1.tgz", - "integrity": "sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==", - "dev": true, - "requires": { - "fsevents": "2.3.2", - "playwright-core": "1.59.1" - } - }, - "playwright-core": { - "version": "1.59.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.1.tgz", - "integrity": "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==", - "dev": true - }, - "postcss": { - "version": "8.5.14", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.5.14.tgz", - "integrity": "sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==", - "dev": true, - "requires": { - "nanoid": "^3.3.11", - "picocolors": "^1.1.1", - "source-map-js": "^1.2.1" - } - }, - "prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", - "dev": true - }, - "pretty-ms": { - "version": "9.2.0", - "resolved": "https://registry.npmjs.org/pretty-ms/-/pretty-ms-9.2.0.tgz", - "integrity": "sha512-4yf0QO/sllf/1zbZWYnvWw3NxCQwLXKzIj0G849LSufP15BXKM0rbD2Z3wVnkMfjdn/CB0Dpp444gYAACdsplg==", - "requires": { - "parse-ms": "^4.0.0" - } - }, - "process": { - "version": "0.11.10", - "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", - "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==" - }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "prompts": { - "version": "2.4.2", - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "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==" - }, - "proxy-from-env": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-2.1.0.tgz", - "integrity": "sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==" - }, - "pump": { - "version": "3.0.0", - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true - }, - "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 - }, - "readable-stream": { - "version": "3.6.0", - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readdir-glob": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/readdir-glob/-/readdir-glob-1.1.3.tgz", - "integrity": "sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==", - "requires": { - "minimatch": "^5.1.0" - }, - "dependencies": { - "brace-expansion": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.0.tgz", - "integrity": "sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==", - "requires": { - "balanced-match": "^1.0.0" - } - }, - "minimatch": { - "version": "5.1.9", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.9.tgz", - "integrity": "sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==", - "requires": { - "brace-expansion": "^2.0.1" - } - } - } - }, - "recast": { - "version": "0.23.11", - "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.11.tgz", - "integrity": "sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==", - "requires": { - "ast-types": "^0.16.1", - "esprima": "~4.0.0", - "source-map": "~0.6.1", - "tiny-invariant": "^1.3.3", - "tslib": "^2.0.1" - } - }, - "registry-auth-token": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/registry-auth-token/-/registry-auth-token-5.1.1.tgz", - "integrity": "sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==", - "requires": { - "@pnpm/npm-conf": "^3.0.2" - } - }, - "require-directory": { - "version": "2.1.1", - "dev": true - }, - "require-from-string": { - "version": "2.0.2" - }, - "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 - }, - "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 - }, - "responselike": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-3.0.0.tgz", - "integrity": "sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==", - "dev": true, - "requires": { - "lowercase-keys": "^3.0.0" - } - }, - "restore-cursor": { - "version": "3.1.0", - "requires": { - "onetime": "^5.1.0", - "signal-exit": "^3.0.2" - } - }, - "retry": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz", - "integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==", - "dev": true - }, - "rfdc": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/rfdc/-/rfdc-1.4.1.tgz", - "integrity": "sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==" - }, - "rimraf": { - "version": "5.0.10", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-5.0.10.tgz", - "integrity": "sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==", - "dev": true, - "requires": { - "glob": "^10.3.7" - } - }, - "rollup": { - "version": "4.60.3", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.60.3.tgz", - "integrity": "sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==", - "dev": true, - "requires": { - "@rollup/rollup-android-arm-eabi": "4.60.3", - "@rollup/rollup-android-arm64": "4.60.3", - "@rollup/rollup-darwin-arm64": "4.60.3", - "@rollup/rollup-darwin-x64": "4.60.3", - "@rollup/rollup-freebsd-arm64": "4.60.3", - "@rollup/rollup-freebsd-x64": "4.60.3", - "@rollup/rollup-linux-arm-gnueabihf": "4.60.3", - "@rollup/rollup-linux-arm-musleabihf": "4.60.3", - "@rollup/rollup-linux-arm64-gnu": "4.60.3", - "@rollup/rollup-linux-arm64-musl": "4.60.3", - "@rollup/rollup-linux-loong64-gnu": "4.60.3", - "@rollup/rollup-linux-loong64-musl": "4.60.3", - "@rollup/rollup-linux-ppc64-gnu": "4.60.3", - "@rollup/rollup-linux-ppc64-musl": "4.60.3", - "@rollup/rollup-linux-riscv64-gnu": "4.60.3", - "@rollup/rollup-linux-riscv64-musl": "4.60.3", - "@rollup/rollup-linux-s390x-gnu": "4.60.3", - "@rollup/rollup-linux-x64-gnu": "4.60.3", - "@rollup/rollup-linux-x64-musl": "4.60.3", - "@rollup/rollup-openbsd-x64": "4.60.3", - "@rollup/rollup-openharmony-arm64": "4.60.3", - "@rollup/rollup-win32-arm64-msvc": "4.60.3", - "@rollup/rollup-win32-ia32-msvc": "4.60.3", - "@rollup/rollup-win32-x64-gnu": "4.60.3", - "@rollup/rollup-win32-x64-msvc": "4.60.3", - "@types/estree": "1.0.8", - "fsevents": "~2.3.2" - }, - "dependencies": { - "@types/estree": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.8.tgz", - "integrity": "sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==", - "dev": true - } - } - }, - "safe-buffer": { - "version": "5.2.1" - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "semver": { - "version": "7.7.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.4.tgz", - "integrity": "sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==" - }, - "sentence-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/sentence-case/-/sentence-case-3.0.4.tgz", - "integrity": "sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==", - "dev": true, - "requires": { - "no-case": "^3.0.4", - "tslib": "^2.0.3", - "upper-case-first": "^2.0.2" - } - }, - "shebang-command": { - "version": "2.0.0", - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0" - }, - "siginfo": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/siginfo/-/siginfo-2.0.0.tgz", - "integrity": "sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==", - "dev": true - }, - "signal-exit": { - "version": "3.0.7" - }, - "simple-git-hooks": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/simple-git-hooks/-/simple-git-hooks-2.13.1.tgz", - "integrity": "sha512-WszCLXwT4h2k1ufIXAgsbiTOazqqevFCIncOuUBZJ91DdvWcC5+OFkluWRQPrcuSYd8fjq+o2y1QfWqYMoAToQ==", - "dev": true - }, - "sisteransi": { - "version": "1.0.5" - }, - "slice-ansi": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-5.0.0.tgz", - "integrity": "sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==", - "dev": true, - "requires": { - "ansi-styles": "^6.0.0", - "is-fullwidth-code-point": "^4.0.0" - }, - "dependencies": { - "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 - }, - "is-fullwidth-code-point": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", - "integrity": "sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==", - "dev": true - } - } - }, - "smart-buffer": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", - "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" - }, - "snake-case": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/snake-case/-/snake-case-3.0.4.tgz", - "integrity": "sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==", - "dev": true, - "requires": { - "dot-case": "^3.0.4", - "tslib": "^2.0.3" - } - }, - "socks": { - "version": "2.8.7", - "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.7.tgz", - "integrity": "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==", - "requires": { - "ip-address": "^10.0.1", - "smart-buffer": "^4.2.0" - } - }, - "sort-object-keys": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/sort-object-keys/-/sort-object-keys-1.1.3.tgz", - "integrity": "sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==", - "dev": true - }, - "sort-package-json": { - "version": "2.15.1", - "resolved": "https://registry.npmjs.org/sort-package-json/-/sort-package-json-2.15.1.tgz", - "integrity": "sha512-9x9+o8krTT2saA9liI4BljNjwAbvUnWf11Wq+i/iZt8nl2UGYnf3TH5uBydE7VALmP7AGwlfszuEeL8BDyb0YA==", - "dev": true, - "requires": { - "detect-indent": "^7.0.1", - "detect-newline": "^4.0.0", - "get-stdin": "^9.0.0", - "git-hooks-list": "^3.0.0", - "is-plain-obj": "^4.1.0", - "semver": "^7.6.0", - "sort-object-keys": "^1.1.3", - "tinyglobby": "^0.2.9" - }, - "dependencies": { - "detect-newline": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-4.0.1.tgz", - "integrity": "sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==", - "dev": true - } - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "dev": true - }, - "spdx-correct": { - "version": "3.2.0", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.3.0", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.1", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.12", - "dev": true - }, - "stackback": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/stackback/-/stackback-0.0.2.tgz", - "integrity": "sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==", - "dev": true - }, - "streamx": { - "version": "2.22.0", - "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.22.0.tgz", - "integrity": "sha512-sLh1evHOzBy/iWRiR6d1zRcLao4gGZr3C1kzNz4fopCOKJb6xD9ub8Mpi9Mr1R6id5o43S+d93fI48UC5uM9aw==", - "requires": { - "bare-events": "^2.2.0", - "fast-fifo": "^1.3.2", - "text-decoder": "^1.1.0" - } - }, - "string_decoder": { - "version": "1.3.0", - "requires": { - "safe-buffer": "~5.2.0" - } - }, - "string-argv": { - "version": "0.3.2", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "string-width-cjs": { - "version": "npm:string-width@4.2.3", - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-ansi-cjs": { - "version": "npm:strip-ansi@6.0.1", - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==" - }, - "strip-final-newline": { - "version": "2.0.0" - }, - "strip-literal": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/strip-literal/-/strip-literal-3.1.0.tgz", - "integrity": "sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==", - "dev": true, - "requires": { - "js-tokens": "^9.0.1" - }, - "dependencies": { - "js-tokens": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-9.0.1.tgz", - "integrity": "sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==", - "dev": true - } - } - }, - "strnum": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/strnum/-/strnum-2.3.0.tgz", - "integrity": "sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==", - "dev": true - }, - "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==", - "requires": { - "has-flag": "^4.0.0" - } - }, - "tar": { - "version": "7.5.14", - "resolved": "https://registry.npmjs.org/tar/-/tar-7.5.14.tgz", - "integrity": "sha512-/7sHKgQO3JLP9ESlwTYUUftHUadOURUqq23xs1vjcnp8Vss6k0wCfzulyEtk5g91pjvnuriimGlyG7k6msrzRw==", - "dev": true, - "requires": { - "@isaacs/fs-minipass": "^4.0.0", - "chownr": "^3.0.0", - "minipass": "^7.1.2", - "minizlib": "^3.1.0", - "yallist": "^5.0.0" - } - }, - "tar-stream": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", - "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", - "requires": { - "b4a": "^1.6.4", - "fast-fifo": "^1.2.0", - "streamx": "^2.15.0" - } - }, - "text-decoder": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/text-decoder/-/text-decoder-1.2.3.tgz", - "integrity": "sha512-3/o9z3X0X0fTupwsYvR03pJ/DjWuqqrfwBgTQzdWDiQSm9KitAyz/9WqsT2JQW7KV2m+bC2ol/zqpW37NHxLaA==", - "requires": { - "b4a": "^1.6.4" - } - }, - "tiny-invariant": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.3.tgz", - "integrity": "sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==" - }, - "tiny-jsonc": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/tiny-jsonc/-/tiny-jsonc-1.0.2.tgz", - "integrity": "sha512-f5QDAfLq6zIVSyCZQZhhyl0QS6MvAyTxgz4X4x3+EoCktNWEYJ6PeoEA97fyb98njpBNNi88ybpD7m+BDFXaCw==", - "dev": true - }, - "tinybench": { - "version": "2.9.0", - "resolved": "https://registry.npmjs.org/tinybench/-/tinybench-2.9.0.tgz", - "integrity": "sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==", - "dev": true - }, - "tinyexec": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-1.1.2.tgz", - "integrity": "sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==", - "dev": true - }, - "tinyglobby": { - "version": "0.2.16", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.16.tgz", - "integrity": "sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==", - "requires": { - "fdir": "^6.5.0", - "picomatch": "^4.0.4" - }, - "dependencies": { - "fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "requires": {} - }, - "picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==" - } - } - }, - "tinypool": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/tinypool/-/tinypool-1.1.1.tgz", - "integrity": "sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==", - "dev": true - }, - "tinyspy": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/tinyspy/-/tinyspy-4.0.4.tgz", - "integrity": "sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==", - "dev": true - }, - "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, - "requires": { - "is-number": "^7.0.0" - } - }, - "ts-api-utils": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-2.5.0.tgz", - "integrity": "sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==", - "requires": {} - }, - "ts-node": { - "version": "10.9.2", - "resolved": "https://registry.npmjs.org/ts-node/-/ts-node-10.9.2.tgz", - "integrity": "sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==", - "dev": true, - "requires": { - "@cspotcode/source-map-support": "^0.8.0", - "@tsconfig/node10": "^1.0.7", - "@tsconfig/node12": "^1.0.7", - "@tsconfig/node14": "^1.0.0", - "@tsconfig/node16": "^1.0.2", - "acorn": "^8.4.1", - "acorn-walk": "^8.1.1", - "arg": "^4.1.0", - "create-require": "^1.1.0", - "diff": "^4.0.1", - "make-error": "^1.1.1", - "v8-compile-cache-lib": "^3.0.1", - "yn": "3.1.1" - } - }, - "tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - }, - "tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" - }, - "tunnel-agent": { - "version": "0.6.0", - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "type-check": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", - "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", - "dev": true, - "requires": { - "prelude-ls": "^1.2.1" - } - }, - "type-fest": { - "version": "0.21.3" - }, - "typescript": { - "version": "5.3.3", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.3.tgz", - "integrity": "sha512-pXWcraxM0uxAS+tN0AG/BF2TyqmHO014Z070UsJ+pFvYuRSq8KH8DmWpnbXe0pEPDHXZV3FcAbJkijJ5oNEnWw==", - "peer": true - }, - "typescript-eslint": { - "version": "8.59.2", - "resolved": "https://registry.npmjs.org/typescript-eslint/-/typescript-eslint-8.59.2.tgz", - "integrity": "sha512-pJw051uomb3ZeCzGTpRb8RbEqB5Y4WWet8gl/GcTlU35BSx0PVdZ86/bqkQCyKKuraVQEK7r6kBHQXF+fBhkoQ==", - "dev": true, - "requires": { - "@typescript-eslint/eslint-plugin": "8.59.2", - "@typescript-eslint/parser": "8.59.2", - "@typescript-eslint/typescript-estree": "8.59.2", - "@typescript-eslint/utils": "8.59.2" - } - }, - "undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true - }, - "unicorn-magic": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.3.0.tgz", - "integrity": "sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==" - }, - "unique-names-generator": { - "version": "4.7.1" - }, - "upper-case": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case/-/upper-case-2.0.2.tgz", - "integrity": "sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==", - "dev": true, - "requires": { - "tslib": "^2.0.3" - } - }, - "upper-case-first": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/upper-case-first/-/upper-case-first-2.0.2.tgz", - "integrity": "sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==", - "dev": true, - "requires": { - "tslib": "^2.0.3" - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "util-deprecate": { - "version": "1.0.2" - }, - "uuid": { - "version": "11.1.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.1.tgz", - "integrity": "sha512-vIYxrBCC/N/K+Js3qSN88go7kIfNPssr/hHCesKCQNAjmgvYS2oqr69kIufEG+O4+PfezOH4EbIeHCfFov8ZgQ==" - }, - "v8-compile-cache-lib": { - "version": "3.0.1", - "dev": true - }, - "validate-npm-package-license": { - "version": "3.0.4", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "validate-npm-package-name": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/validate-npm-package-name/-/validate-npm-package-name-5.0.1.tgz", - "integrity": "sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==", - "dev": true - }, - "vite": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/vite/-/vite-7.3.3.tgz", - "integrity": "sha512-/4XH147Ui7OGTjg3HbdWe5arnZQSbfuRzdr9Ec7TQi5I7R+ir0Rlc9GIvD4v0XZurELqA035KVXJXpR61xhiTA==", - "dev": true, - "requires": { - "esbuild": "^0.27.0", - "fdir": "^6.5.0", - "fsevents": "~2.3.3", - "picomatch": "^4.0.3", - "postcss": "^8.5.6", - "rollup": "^4.43.0", - "tinyglobby": "^0.2.15" - }, - "dependencies": { - "fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "requires": {} - }, - "fsevents": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", - "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", - "dev": true, - "optional": true - }, - "picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", - "dev": true - } - } - }, - "vite-node": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/vite-node/-/vite-node-3.2.4.tgz", - "integrity": "sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==", - "dev": true, - "requires": { - "cac": "^6.7.14", - "debug": "^4.4.1", - "es-module-lexer": "^1.7.0", - "pathe": "^2.0.3", - "vite": "^5.0.0 || ^6.0.0 || ^7.0.0-0" - }, - "dependencies": { - "es-module-lexer": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", - "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", - "dev": true - } - } - }, - "wcwidth": { - "version": "1.0.1", - "requires": { - "defaults": "^1.0.3" - } - }, - "which": { - "version": "2.0.2", - "requires": { - "isexe": "^2.0.0" - } - }, - "why-is-node-running": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/why-is-node-running/-/why-is-node-running-2.3.0.tgz", - "integrity": "sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==", - "dev": true, - "requires": { - "siginfo": "^2.0.0", - "stackback": "0.0.2" - } - }, - "widest-line": { - "version": "3.1.0", - "requires": { - "string-width": "^4.0.0" - } - }, - "wordwrap": { - "version": "1.0.0" - }, - "worker-factory": { - "version": "7.0.46", - "resolved": "https://registry.npmjs.org/worker-factory/-/worker-factory-7.0.46.tgz", - "integrity": "sha512-Sr1hq2FMgNa04UVhYQacsw+i58BtMimzDb4+CqYphZ97OfefRpURu0UZ+JxMr/H36VVJBfuVkxTK7MytsanC3w==", - "requires": { - "@babel/runtime": "^7.28.4", - "fast-unique-numbers": "^9.0.24", - "tslib": "^2.8.1" - } - }, - "worker-timers": { - "version": "8.0.26", - "resolved": "https://registry.npmjs.org/worker-timers/-/worker-timers-8.0.26.tgz", - "integrity": "sha512-Yfr8t1SfvA5Qwr5JlvTHVd0aI1r1kQ+dtJQ5aHjNleK/GRIOrwtoEUnGhwumLR9qH6YghFZsqD9w8IzsP7RHwg==", - "requires": { - "@babel/runtime": "^7.28.4", - "tslib": "^2.8.1", - "worker-timers-broker": "^8.0.12", - "worker-timers-worker": "^9.0.11" - } - }, - "worker-timers-broker": { - "version": "8.0.12", - "resolved": "https://registry.npmjs.org/worker-timers-broker/-/worker-timers-broker-8.0.12.tgz", - "integrity": "sha512-Udml0yZv59tj/5Y2eCW2bYmrBgFSYmg0MXSzlDUdmsjcmf272hJaY8R3TWteetfL6tmL2+yJwRmcJgDtwCcOZg==", - "requires": { - "@babel/runtime": "^7.28.4", - "broker-factory": "^3.1.10", - "fast-unique-numbers": "^9.0.24", - "tslib": "^2.8.1", - "worker-timers-worker": "^9.0.11" - } - }, - "worker-timers-worker": { - "version": "9.0.11", - "resolved": "https://registry.npmjs.org/worker-timers-worker/-/worker-timers-worker-9.0.11.tgz", - "integrity": "sha512-pArb5xtgHWImYpXhjg1OFv7JFG0ubmccb73TFoXHXjG830fFj+16N57q9YeBnZX52dn+itRrMoJZ9HaZBVzDaA==", - "requires": { - "@babel/runtime": "^7.28.4", - "tslib": "^2.8.1", - "worker-factory": "^7.0.46" - } - }, - "wrap-ansi": { - "version": "7.0.0", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrap-ansi-cjs": { - "version": "npm:wrap-ansi@7.0.0", - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - }, - "wrappy": { - "version": "1.0.2" - }, - "ws": { - "version": "8.18.3", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.3.tgz", - "integrity": "sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==", - "requires": {} - }, - "y18n": { - "version": "5.0.8", - "dev": true - }, - "yallist": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-5.0.0.tgz", - "integrity": "sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==", - "dev": true - }, - "yaml": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.8.4.tgz", - "integrity": "sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==", - "dev": true - }, - "yargs": { - "version": "17.7.1", - "dev": true, - "requires": { - "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" - } - }, - "yargs-parser": { - "version": "21.1.1", - "dev": true - }, - "yn": { - "version": "3.1.1", - "dev": true - }, - "yocto-queue": { - "version": "0.1.0", - "dev": true - }, - "yoctocolors": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.1.tgz", - "integrity": "sha512-GQHQqAopRhwU8Kt1DDM8NjibDXHC8eoh1erhGAJPEyveY9qqVeXvVikNKrDz69sHowPMorbPUrH/mx8c50eiBQ==" - }, - "yoctocolors-cjs": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/yoctocolors-cjs/-/yoctocolors-cjs-2.1.3.tgz", - "integrity": "sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==", - "dev": true - }, - "zip-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/zip-stream/-/zip-stream-6.0.1.tgz", - "integrity": "sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==", - "requires": { - "archiver-utils": "^5.0.0", - "compress-commons": "^6.0.2", - "readable-stream": "^4.0.0" - }, - "dependencies": { - "buffer": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", - "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", - "requires": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "readable-stream": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-4.7.0.tgz", - "integrity": "sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==", - "requires": { - "abort-controller": "^3.0.0", - "buffer": "^6.0.3", - "events": "^3.3.0", - "process": "^0.11.10", - "string_decoder": "^1.3.0" - } - } - } - } - } -} diff --git a/package.json b/package.json index e058df2ea..0491687c1 100644 --- a/package.json +++ b/package.json @@ -22,8 +22,8 @@ "@stylistic/eslint-plugin": "^5.10.0", "eslint": "^10.0.1", "globals": "^17.6.0", - "lint-staged": "^15.5.2", - "rimraf": "5.0.10", + "lint-staged": "^16.4.0", + "rimraf": "^6.1.3", "simple-git-hooks": "^2.13.1", "typescript-eslint": "^8.59.2" }, diff --git a/packages/cli/bin/run b/packages/cli/bin/run index 687e2de63..ca2ae151e 100755 --- a/packages/cli/bin/run +++ b/packages/cli/bin/run @@ -1,6 +1,6 @@ #!/usr/bin/env node -/* eslint-disable @typescript-eslint/no-var-requires */ -const { run, handle, flush } = require('@oclif/core') +import { execute, settings } from '@oclif/core' -run().catch(handle).finally(flush) +settings.enableAutoTranspile = false +await execute({ dir: import.meta.url }) diff --git a/packages/cli/e2e/__tests__/fixtures/check-parse-error/package.json b/packages/cli/e2e/__tests__/fixtures/check-parse-error/package.json new file mode 100644 index 000000000..2ef70d4b7 --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/check-parse-error/package.json @@ -0,0 +1,4 @@ +{ + "name": "check-parse-error-fixture", + "private": true +} diff --git a/packages/cli/e2e/config/default.js b/packages/cli/e2e/config/default.js index cb4cf812b..f00843b44 100644 --- a/packages/cli/e2e/config/default.js +++ b/packages/cli/e2e/config/default.js @@ -1,5 +1,3 @@ -// 'config' also supports TypeScript, but there are bugs. Hence, we just use JS. -// https://github.com/node-config/node-config/issues/530 const config = {} config.accountName = process.env.CHECKLY_ACCOUNT_NAME || 'Checkly CLI E2E' @@ -7,8 +5,7 @@ config.apiKey = process.env.CHECKLY_API_KEY config.accountId = process.env.CHECKLY_ACCOUNT_ID config.baseURL = process.env.CHECKLY_BASE_URL || 'https://api.checklyhq.com' -// Optional: empty account for edge-case testing (no checks, no groups, etc.) config.emptyApiKey = process.env.CHECKLY_EMPTY_API_KEY config.emptyAccountId = process.env.CHECKLY_EMPTY_ACCOUNT_ID -module.exports = config +export default config diff --git a/packages/cli/e2e/config/test.js b/packages/cli/e2e/config/test.js index 1b9fbc46c..a1ce4230a 100644 --- a/packages/cli/e2e/config/test.js +++ b/packages/cli/e2e/config/test.js @@ -1,4 +1,4 @@ // This file is a placeholder to satisfy config's "Strict Mode" // https://github.com/node-config/node-config/wiki/Strict-Mode# -> // <- node_env-value-of-node_env-did-not-match-any-deployment-config-file-names -module.exports = {} +export default {} diff --git a/packages/cli/package.json b/packages/cli/package.json index 176ba87be..96185f364 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -1,6 +1,7 @@ { "name": "checkly", "version": "0.0.1-dev", + "type": "module", "description": "Checkly CLI", "main": "dist/index.js", "types": "dist/index.d.ts", @@ -11,7 +12,7 @@ "./util": "./dist/util/index.js" }, "engines": { - "node": "^18.19.0 || >=20.5.0" + "node": "^20.19.0 || >=22.12.0" }, "scripts": { "clean:dist": "rimraf ./dist ./tsconfig.tsbuildinfo", @@ -104,30 +105,30 @@ "acorn-walk": "^8.3.5", "archiver": "7.0.1", "axios": "^1.16.0", - "chalk": "^4.1.2", + "chalk": "^5.6.2", "ci-info": "^4.4.0", - "conf": "^10.2.0", + "conf": "^15.1.0", "debug": "^4.4.3", - "dotenv": "^16.6.1", + "dotenv": "^17.4.2", "execa": "^9.6.1", "git-repo-info": "^2.1.1", - "glob": "^10.5.0", - "indent-string": "^4.0.0", + "glob": "^13.0.6", + "indent-string": "^5.0.0", "json-stream-stringify": "^3.1.6", "json5": "^2.2.3", "jwt-decode": "^4.0.0", - "log-symbols": "^4.1.0", + "log-symbols": "^7.0.1", "luxon": "^3.7.2", - "minimatch": "^9.0.9", + "minimatch": "^10.2.5", "mqtt": "^5.15.1", - "open": "^8.4.2", - "p-queue": "^6.6.2", + "open": "^11.0.0", + "p-queue": "^9.2.0", "prompts": "^2.4.2", "proxy-from-env": "^2.1.0", "recast": "^0.23.11", "semver": "^7.7.3", "tunnel": "^0.0.6", - "uuid": "^11.1.1" + "uuid": "^14.0.0" }, "devDependencies": { "@playwright/test": "^1.59.1", @@ -141,13 +142,13 @@ "@types/tunnel": "^0.0.7", "@types/uuid": "^10.0.0", "@types/ws": "^8.5.5", - "config": "^3.3.12", + "config": "^4.4.1", "cross-env": "^10.1.0", "jiti": "^2.7.0", - "nanoid": "^3.3.12", + "nanoid": "^5.1.11", "oclif": "^4.23.0", - "rimraf": "^5.0.10", - "tar": "^7.5.14", + "rimraf": "^6.1.3", + "tar": "^7.5.15", "ts-node": "^10.9.2", "typescript": "^6.0.3", "vitest": "^3.2.4" diff --git a/packages/cli/src/auth/index.ts b/packages/cli/src/auth/index.ts index 70ccba311..1e073afe3 100644 --- a/packages/cli/src/auth/index.ts +++ b/packages/cli/src/auth/index.ts @@ -3,10 +3,13 @@ import * as os from 'os' import * as http from 'http' import * as crypto from 'crypto' import { jwtDecode } from 'jwt-decode' -import { getDefaults as getApiDefaults } from '../rest/api' -import { assignProxy } from '../services/proxy' +import { getDefaults as getApiDefaults } from '../rest/api.js' +import { assignProxy } from '../services/proxy.js' import * as fs from 'fs' import * as path from 'path' +import { fileURLToPath } from 'node:url' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) export type AuthMode = 'signup' | 'login' diff --git a/packages/cli/src/commands/__tests__/account-members.spec.ts b/packages/cli/src/commands/__tests__/account-members.spec.ts index af490df6c..76c0de4ad 100644 --- a/packages/cli/src/commands/__tests__/account-members.spec.ts +++ b/packages/cli/src/commands/__tests__/account-members.spec.ts @@ -3,7 +3,7 @@ import { normalizeAccountMemberRole, normalizeAccountMemberStatus, normalizeAccountMemberType, -} from '../account/members' +} from '../account/members.js' describe('account members flag normalization', () => { it('normalizes type values case-insensitively', () => { diff --git a/packages/cli/src/commands/__tests__/auth-command-init.spec.ts b/packages/cli/src/commands/__tests__/auth-command-init.spec.ts index 3fdea1795..09f180d9b 100644 --- a/packages/cli/src/commands/__tests__/auth-command-init.spec.ts +++ b/packages/cli/src/commands/__tests__/auth-command-init.spec.ts @@ -4,9 +4,9 @@ vi.mock('../../rest/api', () => ({ validateAuthentication: vi.fn().mockResolvedValue({ name: 'Test Account' }), })) -import * as api from '../../rest/api' -import { BaseCommand } from '../baseCommand' -import { AuthCommand } from '../authCommand' +import * as api from '../../rest/api.js' +import { BaseCommand } from '../baseCommand.js' +import { AuthCommand } from '../authCommand.js' describe('AuthCommand.init', () => { it('awaits BaseCommand.init before validating authentication', async () => { diff --git a/packages/cli/src/commands/__tests__/command-metadata.spec.ts b/packages/cli/src/commands/__tests__/command-metadata.spec.ts index 0f941bbf0..a7ada40d9 100644 --- a/packages/cli/src/commands/__tests__/command-metadata.spec.ts +++ b/packages/cli/src/commands/__tests__/command-metadata.spec.ts @@ -1,41 +1,41 @@ import { describe, expect, it } from 'vitest' -import { BaseCommand } from '../baseCommand' +import { BaseCommand } from '../baseCommand.js' // Import all non-hidden command classes -import ChecksList from '../checks/list' -import ChecksGet from '../checks/get' -import ChecksStats from '../checks/stats' -import StatusPagesList from '../status-pages/list' -import StatusPagesGet from '../status-pages/get' -import IncidentsList from '../incidents/list' -import IncidentsCreate from '../incidents/create' -import IncidentsUpdate from '../incidents/update' -import IncidentsResolve from '../incidents/resolve' -import EnvLs from '../env/ls' -import EnvAdd from '../env/add' -import EnvRm from '../env/rm' -import EnvUpdate from '../env/update' -import EnvPull from '../env/pull' -import Deploy from '../deploy' -import Destroy from '../destroy' -import Test from '../test' -import Trigger from '../trigger' -import Validate from '../validate' -import Login from '../login' -import Logout from '../logout' -import Whoami from '../whoami' -import Switch from '../switch' -import Runtimes from '../runtimes' -import Rules from '../rules' -import ImportPlan from '../import/plan' -import ImportApply from '../import/apply' -import ImportCommit from '../import/commit' -import ImportCancel from '../import/cancel' -import PwTest from '../pw-test' -import SyncPlaywright from '../sync-playwright' -import SkillsInstall from '../skills/install' -import AccountPlan from '../account/plan' -import AccountMembers from '../account/members' +import ChecksList from '../checks/list.js' +import ChecksGet from '../checks/get.js' +import ChecksStats from '../checks/stats.js' +import StatusPagesList from '../status-pages/list.js' +import StatusPagesGet from '../status-pages/get.js' +import IncidentsList from '../incidents/list.js' +import IncidentsCreate from '../incidents/create.js' +import IncidentsUpdate from '../incidents/update.js' +import IncidentsResolve from '../incidents/resolve.js' +import EnvLs from '../env/ls.js' +import EnvAdd from '../env/add.js' +import EnvRm from '../env/rm.js' +import EnvUpdate from '../env/update.js' +import EnvPull from '../env/pull.js' +import Deploy from '../deploy.js' +import Destroy from '../destroy.js' +import Test from '../test.js' +import Trigger from '../trigger.js' +import Validate from '../validate.js' +import Login from '../login.js' +import Logout from '../logout.js' +import Whoami from '../whoami.js' +import Switch from '../switch.js' +import Runtimes from '../runtimes.js' +import Rules from '../rules.js' +import ImportPlan from '../import/plan.js' +import ImportApply from '../import/apply.js' +import ImportCommit from '../import/commit.js' +import ImportCancel from '../import/cancel.js' +import PwTest from '../pw-test.js' +import SyncPlaywright from '../sync-playwright.js' +import SkillsInstall from '../skills/install.js' +import AccountPlan from '../account/plan.js' +import AccountMembers from '../account/members.js' const commands: Array<[string, typeof BaseCommand]> = [ ['account members', AccountMembers], diff --git a/packages/cli/src/commands/__tests__/confirm-flow-deploy.spec.ts b/packages/cli/src/commands/__tests__/confirm-flow-deploy.spec.ts index a8d9b3e0b..9e85e5e1b 100644 --- a/packages/cli/src/commands/__tests__/confirm-flow-deploy.spec.ts +++ b/packages/cli/src/commands/__tests__/confirm-flow-deploy.spec.ts @@ -38,11 +38,11 @@ vi.mock('prompts', () => ({ default: vi.fn(() => Promise.resolve({ confirm: true })), })) -import { detectCliMode } from '../../helpers/cli-mode' -import * as api from '../../rest/api' -import { parseProject } from '../../services/project-parser' -import { AuthCommand } from '../authCommand' -import Deploy from '../deploy' +import { detectCliMode } from '../../helpers/cli-mode.js' +import * as api from '../../rest/api.js' +import { parseProject } from '../../services/project-parser.js' +import { AuthCommand } from '../authCommand.js' +import Deploy from '../deploy.js' function createConfirmContext () { const logged: string[] = [] diff --git a/packages/cli/src/commands/__tests__/confirm-flow-destroy.spec.ts b/packages/cli/src/commands/__tests__/confirm-flow-destroy.spec.ts index 657f92c7b..297b75927 100644 --- a/packages/cli/src/commands/__tests__/confirm-flow-destroy.spec.ts +++ b/packages/cli/src/commands/__tests__/confirm-flow-destroy.spec.ts @@ -26,11 +26,11 @@ vi.mock('prompts', () => ({ default: vi.fn(() => Promise.resolve({ confirm: true })), })) -import { detectCliMode } from '../../helpers/cli-mode' +import { detectCliMode } from '../../helpers/cli-mode.js' import prompts from 'prompts' -import * as api from '../../rest/api' -import { AuthCommand } from '../authCommand' -import Destroy from '../destroy' +import * as api from '../../rest/api.js' +import { AuthCommand } from '../authCommand.js' +import Destroy from '../destroy.js' function createCommandContext (parsed: unknown) { const logged: string[] = [] diff --git a/packages/cli/src/commands/__tests__/confirm-flow-env-rm.spec.ts b/packages/cli/src/commands/__tests__/confirm-flow-env-rm.spec.ts index 906de9cb1..fdb262112 100644 --- a/packages/cli/src/commands/__tests__/confirm-flow-env-rm.spec.ts +++ b/packages/cli/src/commands/__tests__/confirm-flow-env-rm.spec.ts @@ -13,10 +13,10 @@ vi.mock('prompts', () => ({ default: vi.fn(() => Promise.resolve({ confirm: true })), })) -import { detectCliMode } from '../../helpers/cli-mode' -import * as api from '../../rest/api' -import { AuthCommand } from '../authCommand' -import EnvRm from '../env/rm' +import { detectCliMode } from '../../helpers/cli-mode.js' +import * as api from '../../rest/api.js' +import { AuthCommand } from '../authCommand.js' +import EnvRm from '../env/rm.js' function createCommandContext (parsed: unknown) { const logged: string[] = [] diff --git a/packages/cli/src/commands/__tests__/confirm-or-abort.spec.ts b/packages/cli/src/commands/__tests__/confirm-or-abort.spec.ts index 4061dcf38..d1c2540ae 100644 --- a/packages/cli/src/commands/__tests__/confirm-or-abort.spec.ts +++ b/packages/cli/src/commands/__tests__/confirm-or-abort.spec.ts @@ -10,13 +10,13 @@ vi.mock('prompts', () => ({ default: vi.fn(() => Promise.resolve({ confirm: true })), })) -import { detectCliMode } from '../../helpers/cli-mode' +import { detectCliMode } from '../../helpers/cli-mode.js' import prompts from 'prompts' -import type { CommandPreview } from '../../helpers/command-preview' +import type { CommandPreview } from '../../helpers/command-preview.js' // Minimal AuthCommand-like context for testing confirmOrAbort // We import the actual method after mocks are set up -import { AuthCommand } from '../authCommand' +import { AuthCommand } from '../authCommand.js' const basePreview: CommandPreview = { command: 'incidents create', diff --git a/packages/cli/src/commands/__tests__/init.spec.ts b/packages/cli/src/commands/__tests__/init.spec.ts index 621f94dde..921f13c3b 100644 --- a/packages/cli/src/commands/__tests__/init.spec.ts +++ b/packages/cli/src/commands/__tests__/init.spec.ts @@ -1,6 +1,6 @@ import { join } from 'path' import { describe, it, expect, vi, beforeEach } from 'vitest' -import Init from '../init' +import Init from '../init.js' vi.mock('../skills/install', () => ({ PLATFORM_TARGETS: { @@ -50,24 +50,24 @@ import { writeFileSync } from 'fs' import { readSkillFile, writeSkillToTarget, -} from '../skills/install' -import { detectProjectContext } from '../../helpers/onboarding/detect-project' +} from '../skills/install.js' +import { detectProjectContext } from '../../helpers/onboarding/detect-project.js' import { runSkillInstallStep, refreshSkill, -} from '../../helpers/onboarding/skill-install' +} from '../../helpers/onboarding/skill-install.js' import { runDepsInstall, createConfig, copyChecks, -} from '../../helpers/onboarding/boilerplate' -import { loadPromptTemplate } from '../../helpers/onboarding/template-prompt' -import { displayStarterPrompt } from '../../helpers/onboarding/prompt-display' +} from '../../helpers/onboarding/boilerplate.js' +import { loadPromptTemplate } from '../../helpers/onboarding/template-prompt.js' +import { displayStarterPrompt } from '../../helpers/onboarding/prompt-display.js' import { greeting, existingProjectFooter, -} from '../../helpers/onboarding/messages' -import { detectCliMode } from '../../helpers/cli-mode' +} from '../../helpers/onboarding/messages.js' +import { detectCliMode } from '../../helpers/cli-mode.js' import prompts from 'prompts' const mockConfig = { diff --git a/packages/cli/src/commands/account/members.ts b/packages/cli/src/commands/account/members.ts index 530b6a7e2..d0a1bfd4f 100644 --- a/packages/cli/src/commands/account/members.ts +++ b/packages/cli/src/commands/account/members.ts @@ -1,19 +1,19 @@ import { Flags } from '@oclif/core' -import { AuthCommand } from '../authCommand' -import { outputFlag } from '../../helpers/flags' -import * as api from '../../rest/api' -import type { OutputFormat } from '../../formatters/render' +import { AuthCommand } from '../authCommand.js' +import { outputFlag } from '../../helpers/flags.js' +import * as api from '../../rest/api.js' +import type { OutputFormat } from '../../formatters/render.js' import type { AccountMemberRole, AccountMemberStatus, AccountMemberType, AccountMembersListParams, -} from '../../rest/account-members' +} from '../../rest/account-members.js' import { formatAccountMembers, formatCursorNavigationHints, formatCursorPaginationInfo, -} from '../../formatters/account-members' +} from '../../formatters/account-members.js' const accountMemberTypes = ['member', 'invite'] as const const accountMemberRoles = ['OWNER', 'ADMIN', 'READ_WRITE', 'READ_RUN', 'READ_ONLY'] as const diff --git a/packages/cli/src/commands/account/plan.ts b/packages/cli/src/commands/account/plan.ts index 7e70f711c..39114195a 100644 --- a/packages/cli/src/commands/account/plan.ts +++ b/packages/cli/src/commands/account/plan.ts @@ -1,16 +1,16 @@ import { Args, Flags } from '@oclif/core' -import { AuthCommand } from '../authCommand' -import { outputFlag } from '../../helpers/flags' -import * as api from '../../rest/api' -import type { OutputFormat } from '../../formatters/render' +import { AuthCommand } from '../authCommand.js' +import { outputFlag } from '../../helpers/flags.js' +import * as api from '../../rest/api.js' +import type { OutputFormat } from '../../formatters/render.js' import { formatPlanSummary, formatEntitlementDetail, formatFilteredEntitlements, getEntitlementUpgradeUrl, CONTACT_SALES_URL, -} from '../../formatters/account-plan' -import type { Entitlement } from '../../rest/entitlements' +} from '../../formatters/account-plan.js' +import type { Entitlement } from '../../rest/entitlements.js' function withUpgradeUrl (e: Entitlement, checkoutUrl: string) { if (e.enabled) return e diff --git a/packages/cli/src/commands/authCommand.ts b/packages/cli/src/commands/authCommand.ts index aadb5e238..6e58e1fc1 100644 --- a/packages/cli/src/commands/authCommand.ts +++ b/packages/cli/src/commands/authCommand.ts @@ -1,10 +1,10 @@ import prompts from 'prompts' -import { BaseCommand } from './baseCommand' -import * as api from '../rest/api' -import { Account } from '../rest/accounts' -import { detectCliMode } from '../helpers/cli-mode' -import type { CommandPreview } from '../helpers/command-preview' -import { formatPreviewForAgent, formatPreviewForTerminal } from '../helpers/command-preview' +import { BaseCommand } from './baseCommand.js' +import * as api from '../rest/api.js' +import { Account } from '../rest/accounts.js' +import { detectCliMode } from '../helpers/cli-mode.js' +import type { CommandPreview } from '../helpers/command-preview.js' +import { formatPreviewForAgent, formatPreviewForTerminal } from '../helpers/command-preview.js' export abstract class AuthCommand extends BaseCommand { static hidden = true diff --git a/packages/cli/src/commands/baseCommand.ts b/packages/cli/src/commands/baseCommand.ts index 28ee43d0a..37a1fc14f 100644 --- a/packages/cli/src/commands/baseCommand.ts +++ b/packages/cli/src/commands/baseCommand.ts @@ -1,10 +1,14 @@ import axios from 'axios' import prompts from 'prompts' import { Command } from '@oclif/core' -import { api } from '../rest/api' -import { CommandStyle } from '../helpers/command-style' -import { PackageJsonFile } from '../services/check-parser/package-files/package-json-file' -import { detectNearestPackageJson } from '../services/check-parser/package-files/package-manager' +import { fileURLToPath } from 'node:url' +import { dirname } from 'node:path' +import { api } from '../rest/api.js' +import { CommandStyle } from '../helpers/command-style.js' +import { PackageJsonFile } from '../services/check-parser/package-files/package-json-file.js' +import { detectNearestPackageJson } from '../services/check-parser/package-files/package-manager.js' + +const __dirname = dirname(fileURLToPath(import.meta.url)) export type BaseCommandClass = typeof Command & { coreCommand: boolean diff --git a/packages/cli/src/commands/checks/get.ts b/packages/cli/src/commands/checks/get.ts index 7483a8d2e..6180580df 100644 --- a/packages/cli/src/commands/checks/get.ts +++ b/packages/cli/src/commands/checks/get.ts @@ -1,19 +1,19 @@ import { Args, Flags } from '@oclif/core' import chalk from 'chalk' -import { AuthCommand } from '../authCommand' -import { outputFlag } from '../../helpers/flags' -import * as api from '../../rest/api' -import type { CheckWithStatus } from '../../formatters/checks' -import { type OutputFormat, stripAnsi, formatDate } from '../../formatters/render' +import { AuthCommand } from '../authCommand.js' +import { outputFlag } from '../../helpers/flags.js' +import * as api from '../../rest/api.js' +import type { CheckWithStatus } from '../../formatters/checks.js' +import { type OutputFormat, stripAnsi, formatDate } from '../../formatters/render.js' import { formatCheckDetail, formatResults, formatErrorGroups, -} from '../../formatters/checks' -import { formatResultDetail } from '../../formatters/check-result-detail' -import { formatRcaDetail, formatRcaHint, transformErrorGroupForJson } from '../../formatters/rca' -import { quickRangeValues, type QuickRange, type GroupBy } from '../../rest/analytics' -import { formatAnalyticsSection } from '../../formatters/analytics' +} from '../../formatters/checks.js' +import { formatResultDetail } from '../../formatters/check-result-detail.js' +import { formatRcaDetail, formatRcaHint, transformErrorGroupForJson } from '../../formatters/rca.js' +import { quickRangeValues, type QuickRange, type GroupBy } from '../../rest/analytics.js' +import { formatAnalyticsSection } from '../../formatters/analytics.js' export default class ChecksGet extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/checks/list.ts b/packages/cli/src/commands/checks/list.ts index a93ab762e..539b5349b 100644 --- a/packages/cli/src/commands/checks/list.ts +++ b/packages/cli/src/commands/checks/list.ts @@ -1,17 +1,17 @@ import { Flags } from '@oclif/core' import chalk from 'chalk' -import { AuthCommand } from '../authCommand' -import { outputFlag } from '../../helpers/flags' -import * as api from '../../rest/api' -import type { CheckWithStatus } from '../../formatters/checks' -import type { OutputFormat } from '../../formatters/render' -import { allCheckTypes } from '../../constants' +import { AuthCommand } from '../authCommand.js' +import { outputFlag } from '../../helpers/flags.js' +import * as api from '../../rest/api.js' +import type { CheckWithStatus } from '../../formatters/checks.js' +import type { OutputFormat } from '../../formatters/render.js' +import { allCheckTypes } from '../../constants.js' import { formatChecks, formatSummaryBar, formatPaginationInfo, formatNavigationHints, -} from '../../formatters/checks' +} from '../../formatters/checks.js' export default class ChecksList extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/checks/stats.ts b/packages/cli/src/commands/checks/stats.ts index 4d3713846..2d0c6e2a0 100644 --- a/packages/cli/src/commands/checks/stats.ts +++ b/packages/cli/src/commands/checks/stats.ts @@ -1,14 +1,14 @@ import { Args, Flags } from '@oclif/core' -import { AuthCommand } from '../authCommand' -import { outputFlag } from '../../helpers/flags' -import * as api from '../../rest/api' -import { batchQuickRangeValues, type BatchQuickRange } from '../../rest/batch-analytics' -import type { CheckWithStatus, PaginationInfo } from '../../formatters/checks' -import { formatSummaryBar, formatPaginationInfo } from '../../formatters/checks' -import type { OutputFormat } from '../../formatters/render' -import type { StatsRow } from '../../formatters/batch-stats' -import { formatBatchStats, formatBatchStatsNavigationHints } from '../../formatters/batch-stats' -import { allCheckTypes } from '../../constants' +import { AuthCommand } from '../authCommand.js' +import { outputFlag } from '../../helpers/flags.js' +import * as api from '../../rest/api.js' +import { batchQuickRangeValues, type BatchQuickRange } from '../../rest/batch-analytics.js' +import type { CheckWithStatus, PaginationInfo } from '../../formatters/checks.js' +import { formatSummaryBar, formatPaginationInfo } from '../../formatters/checks.js' +import type { OutputFormat } from '../../formatters/render.js' +import type { StatsRow } from '../../formatters/batch-stats.js' +import { formatBatchStats, formatBatchStatsNavigationHints } from '../../formatters/batch-stats.js' +import { allCheckTypes } from '../../constants.js' const MAX_BATCH_SIZE = 100 diff --git a/packages/cli/src/commands/debug/parse-file.ts b/packages/cli/src/commands/debug/parse-file.ts index 24db47cb0..fa6d273e6 100644 --- a/packages/cli/src/commands/debug/parse-file.ts +++ b/packages/cli/src/commands/debug/parse-file.ts @@ -2,9 +2,9 @@ import path from 'node:path' import { Command, Flags } from '@oclif/core' -import { Parser } from '../../services/check-parser/parser' -import { detectPackageManager } from '../../services/check-parser/package-files/package-manager' -import { DependencyParseError } from '../../services/check-parser/errors' +import { Parser } from '../../services/check-parser/parser.js' +import { detectPackageManager } from '../../services/check-parser/package-files/package-manager.js' +import { DependencyParseError } from '../../services/check-parser/errors.js' export default class ParseFileCommand extends Command { static hidden = true diff --git a/packages/cli/src/commands/debug/parse-playwright-config.ts b/packages/cli/src/commands/debug/parse-playwright-config.ts index f12a9197e..bac7edf22 100644 --- a/packages/cli/src/commands/debug/parse-playwright-config.ts +++ b/packages/cli/src/commands/debug/parse-playwright-config.ts @@ -2,9 +2,9 @@ import path from 'node:path' import { Command, Flags } from '@oclif/core' -import { PlaywrightConfig } from '../../services/playwright-config' -import { Session } from '../../constructs/project' -import { Parser } from '../../services/check-parser/parser' +import { PlaywrightConfig } from '../../services/playwright-config.js' +import { Session } from '../../constructs/project.js' +import { Parser } from '../../services/check-parser/parser.js' export default class ParsePlaywrightConfigCommand extends Command { static hidden = true diff --git a/packages/cli/src/commands/debug/parse-project.ts b/packages/cli/src/commands/debug/parse-project.ts index 3df470ee8..13f30a3fb 100644 --- a/packages/cli/src/commands/debug/parse-project.ts +++ b/packages/cli/src/commands/debug/parse-project.ts @@ -1,15 +1,15 @@ import { Command, Flags } from '@oclif/core' -import { parseProject } from '../../services/project-parser' -import { loadChecklyConfig } from '../../services/checkly-config-loader' +import { parseProject } from '../../services/project-parser.js' +import { loadChecklyConfig } from '../../services/checkly-config-loader.js' import { Diagnostics, Session, -} from '../../constructs' -import { splitConfigFilePath } from '../../services/util' -import commonMessages from '../../messages/common-messages' -import { loadSnapshot, Runtime } from '../../runtimes' -import { Bundler } from '../../services/check-parser/bundler' +} from '../../constructs/index.js' +import { splitConfigFilePath } from '../../services/util.js' +import commonMessages from '../../messages/common-messages.js' +import { loadSnapshot, Runtime } from '../../runtimes/index.js' +import { Bundler } from '../../services/check-parser/bundler.js' export type ParseProjectOutput = { diagnostics: { diff --git a/packages/cli/src/commands/deploy.ts b/packages/cli/src/commands/deploy.ts index aca18dd27..61f4f0c27 100644 --- a/packages/cli/src/commands/deploy.ts +++ b/packages/cli/src/commands/deploy.ts @@ -1,25 +1,25 @@ import { setTimeout } from 'node:timers/promises' import * as fs from 'fs/promises' -import * as api from '../rest/api' +import * as api from '../rest/api.js' import { Flags } from '@oclif/core' -import { AuthCommand } from './authCommand' -import { parseProject } from '../services/project-parser' -import { loadChecklyConfig } from '../services/checkly-config-loader' +import { AuthCommand } from './authCommand.js' +import { parseProject } from '../services/project-parser.js' +import { loadChecklyConfig } from '../services/checkly-config-loader.js' import { Check, AlertChannelSubscription, AlertChannel, CheckGroup, Dashboard, MaintenanceWindow, PrivateLocation, PrivateLocationCheckAssignment, PrivateLocationGroupAssignment, Project, ProjectData, Diagnostics, Session, -} from '../constructs' +} from '../constructs/index.js' import chalk from 'chalk' -import { splitConfigFilePath, getGitInformation } from '../services/util' -import commonMessages from '../messages/common-messages' -import { forceFlag } from '../helpers/flags' -import { ProjectDeployResponse } from '../rest/projects' -import { uploadSnapshots } from '../services/snapshot-service' -import { BrowserCheckBundle } from '../constructs/browser-check-bundle' -import { Runtime } from '../runtimes' -import { Bundler } from '../services/check-parser/bundler' +import { splitConfigFilePath, getGitInformation } from '../services/util.js' +import commonMessages from '../messages/common-messages.js' +import { forceFlag } from '../helpers/flags.js' +import { ProjectDeployResponse } from '../rest/projects.js' +import { uploadSnapshots } from '../services/snapshot-service.js' +import { BrowserCheckBundle } from '../constructs/browser-check-bundle.js' +import { Runtime } from '../runtimes/index.js' +import { Bundler } from '../services/check-parser/bundler.js' // eslint-disable-next-line no-restricted-syntax enum ResourceDeployStatus { diff --git a/packages/cli/src/commands/destroy.ts b/packages/cli/src/commands/destroy.ts index c4e9f368b..b81b36173 100644 --- a/packages/cli/src/commands/destroy.ts +++ b/packages/cli/src/commands/destroy.ts @@ -1,11 +1,11 @@ import prompts from 'prompts' import { Flags } from '@oclif/core' -import * as api from '../rest/api' -import { loadChecklyConfig } from '../services/checkly-config-loader' -import { AuthCommand } from './authCommand' -import { splitConfigFilePath } from '../services/util' -import commonMessages from '../messages/common-messages' -import { forceFlag } from '../helpers/flags' +import * as api from '../rest/api.js' +import { loadChecklyConfig } from '../services/checkly-config-loader.js' +import { AuthCommand } from './authCommand.js' +import { splitConfigFilePath } from '../services/util.js' +import commonMessages from '../messages/common-messages.js' +import { forceFlag } from '../helpers/flags.js' export default class Destroy extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/env/add.ts b/packages/cli/src/commands/env/add.ts index 4aa53bec0..541558764 100644 --- a/packages/cli/src/commands/env/add.ts +++ b/packages/cli/src/commands/env/add.ts @@ -1,7 +1,7 @@ import prompts from 'prompts' -import * as api from '../../rest/api' +import * as api from '../../rest/api.js' import { Flags, Args } from '@oclif/core' -import { AuthCommand } from '../authCommand' +import { AuthCommand } from '../authCommand.js' export default class EnvAdd extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/env/ls.ts b/packages/cli/src/commands/env/ls.ts index 4ab1b182c..69ebc41a1 100644 --- a/packages/cli/src/commands/env/ls.ts +++ b/packages/cli/src/commands/env/ls.ts @@ -1,6 +1,6 @@ -import * as api from '../../rest/api' -import { AuthCommand } from '../authCommand' -import { escapeValue } from '../../services/util' +import * as api from '../../rest/api.js' +import { AuthCommand } from '../authCommand.js' +import { escapeValue } from '../../services/util.js' export default class EnvLs extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/env/pull.ts b/packages/cli/src/commands/env/pull.ts index b44c6bbfb..84eab6055 100644 --- a/packages/cli/src/commands/env/pull.ts +++ b/packages/cli/src/commands/env/pull.ts @@ -1,9 +1,9 @@ import prompts from 'prompts' import * as path from 'path' -import * as api from '../../rest/api' +import * as api from '../../rest/api.js' import { Flags, Args } from '@oclif/core' -import { AuthCommand } from '../authCommand' -import { escapeValue } from '../../services/util' +import { AuthCommand } from '../authCommand.js' +import { escapeValue } from '../../services/util.js' import * as fs from 'fs/promises' const CONTENTS_PREFIX = '# Created by Checkly CLI\n' diff --git a/packages/cli/src/commands/env/rm.ts b/packages/cli/src/commands/env/rm.ts index f12ab5331..45c0a2ba7 100644 --- a/packages/cli/src/commands/env/rm.ts +++ b/packages/cli/src/commands/env/rm.ts @@ -1,7 +1,7 @@ -import * as api from '../../rest/api' +import * as api from '../../rest/api.js' import { Args } from '@oclif/core' -import { AuthCommand } from '../authCommand' -import { forceFlag } from '../../helpers/flags' +import { AuthCommand } from '../authCommand.js' +import { forceFlag } from '../../helpers/flags.js' export default class EnvRm extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/env/update.ts b/packages/cli/src/commands/env/update.ts index b4b513df8..d87932d19 100644 --- a/packages/cli/src/commands/env/update.ts +++ b/packages/cli/src/commands/env/update.ts @@ -1,7 +1,7 @@ import prompts from 'prompts' -import * as api from '../../rest/api' +import * as api from '../../rest/api.js' import { Flags, Args } from '@oclif/core' -import { AuthCommand } from '../authCommand' +import { AuthCommand } from '../authCommand.js' export default class EnvUpdate extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/help.ts b/packages/cli/src/commands/help.ts index beeb38c93..2052cae50 100644 --- a/packages/cli/src/commands/help.ts +++ b/packages/cli/src/commands/help.ts @@ -1,5 +1,5 @@ -import { BaseCommand } from './baseCommand' -import ChecklyHelpClass from '../help/help-extension' +import { BaseCommand } from './baseCommand.js' +import ChecklyHelpClass from '../help/help-extension.js' export default class Logout extends BaseCommand { static hidden = false diff --git a/packages/cli/src/commands/import/apply.ts b/packages/cli/src/commands/import/apply.ts index 9406474c9..cc4657cc5 100644 --- a/packages/cli/src/commands/import/apply.ts +++ b/packages/cli/src/commands/import/apply.ts @@ -3,14 +3,14 @@ import prompts from 'prompts' import logSymbols from 'log-symbols' import chalk from 'chalk' -import * as api from '../../rest/api' -import { AuthCommand } from '../authCommand' -import commonMessages from '../../messages/common-messages' -import { splitConfigFilePath } from '../../services/util' -import { loadChecklyConfig } from '../../services/checkly-config-loader' -import { ImportPlan } from '../../rest/projects' -import { BaseCommand } from '../baseCommand' -import { confirmCommit, performCommitAction } from './commit' +import * as api from '../../rest/api.js' +import { AuthCommand } from '../authCommand.js' +import commonMessages from '../../messages/common-messages.js' +import { splitConfigFilePath } from '../../services/util.js' +import { loadChecklyConfig } from '../../services/checkly-config-loader.js' +import { ImportPlan } from '../../rest/projects.js' +import { BaseCommand } from '../baseCommand.js' +import { confirmCommit, performCommitAction } from './commit.js' export default class ImportApplyCommand extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/import/cancel.ts b/packages/cli/src/commands/import/cancel.ts index 02fa7d176..2c3892dd8 100644 --- a/packages/cli/src/commands/import/cancel.ts +++ b/packages/cli/src/commands/import/cancel.ts @@ -1,12 +1,12 @@ import { Flags } from '@oclif/core' import prompts from 'prompts' -import * as api from '../../rest/api' -import { AuthCommand } from '../authCommand' -import commonMessages from '../../messages/common-messages' -import { splitConfigFilePath } from '../../services/util' -import { loadChecklyConfig } from '../../services/checkly-config-loader' -import { ImportPlan } from '../../rest/projects' +import * as api from '../../rest/api.js' +import { AuthCommand } from '../authCommand.js' +import commonMessages from '../../messages/common-messages.js' +import { splitConfigFilePath } from '../../services/util.js' +import { loadChecklyConfig } from '../../services/checkly-config-loader.js' +import { ImportPlan } from '../../rest/projects.js' export default class ImportCancelCommand extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/import/commit.ts b/packages/cli/src/commands/import/commit.ts index 234d8a22f..8e0dd0303 100644 --- a/packages/cli/src/commands/import/commit.ts +++ b/packages/cli/src/commands/import/commit.ts @@ -3,13 +3,13 @@ import prompts from 'prompts' import logSymbols from 'log-symbols' import chalk from 'chalk' -import * as api from '../../rest/api' -import { AuthCommand } from '../authCommand' -import commonMessages from '../../messages/common-messages' -import { splitConfigFilePath } from '../../services/util' -import { loadChecklyConfig } from '../../services/checkly-config-loader' -import { ImportPlan } from '../../rest/projects' -import { BaseCommand } from '../baseCommand' +import * as api from '../../rest/api.js' +import { AuthCommand } from '../authCommand.js' +import commonMessages from '../../messages/common-messages.js' +import { splitConfigFilePath } from '../../services/util.js' +import { loadChecklyConfig } from '../../services/checkly-config-loader.js' +import { ImportPlan } from '../../rest/projects.js' +import { BaseCommand } from '../baseCommand.js' export default class ImportCommitCommand extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/import/plan.ts b/packages/cli/src/commands/import/plan.ts index eeaf00b84..8b12c3d08 100644 --- a/packages/cli/src/commands/import/plan.ts +++ b/packages/cli/src/commands/import/plan.ts @@ -7,32 +7,33 @@ import prompts from 'prompts' import chalk from 'chalk' import logSymbols from 'log-symbols' import { validate as validateUuid } from 'uuid' - -import { LOGICAL_ID_PATTERN } from '../../constants' -import * as api from '../../rest/api' -import { AuthCommand } from '../authCommand' -import commonMessages from '../../messages/common-messages' -import { splitConfigFilePath } from '../../services/util' -import { ChecklyConfig, ConfigNotFoundError, loadChecklyConfig } from '../../services/checkly-config-loader' -import { ImportPlan, ProjectNotFoundError, ImportPlanFilter, ImportPlanOptions, ResourceSync, ImportPlanFriend, FriendResourceSync, NoImportableResourcesFoundError } from '../../rest/projects' -import { cased, Comment, docComment, Program } from '../../sourcegen' -import { ConstructCodegen, sortResources } from '../../constructs/construct-codegen' -import { Context } from '../../constructs/internal/codegen' +import { execa } from 'execa' + +import { LOGICAL_ID_PATTERN } from '../../constants.js' +import * as api from '../../rest/api.js' +import { AuthCommand } from '../authCommand.js' +import commonMessages from '../../messages/common-messages.js' +import { splitConfigFilePath } from '../../services/util.js' +import { ChecklyConfig, ConfigNotFoundError, loadChecklyConfig } from '../../services/checkly-config-loader.js' +import { ImportPlan, ProjectNotFoundError, ImportPlanFilter, ImportPlanOptions, ResourceSync, ImportPlanFriend, FriendResourceSync, NoImportableResourcesFoundError } from '../../rest/projects.js' +import { cased, Comment, docComment, Program } from '../../sourcegen/index.js' +import { ConstructCodegen, sortResources } from '../../constructs/construct-codegen.js' +import { Context } from '../../constructs/internal/codegen/index.js' import { isSnippet, isSafeSnippetFilename, -} from '../../constructs/internal/codegen/snippet' -import { StaticAuxiliaryFile } from '../../sourcegen/program' +} from '../../constructs/internal/codegen/snippet.js' +import { StaticAuxiliaryFile } from '../../sourcegen/program.js' import { ExitError } from '@oclif/core/errors' -import { confirmCommit, performCommitAction } from './commit' -import { confirmApply, performApplyAction } from './apply' -import { generateChecklyConfig } from '../../services/checkly-config-codegen' -import { PackageJsonFile } from '../../services/check-parser/package-files/package-json-file' -import { detectNearestPackageJson, detectPackageManager, knownPackageManagers, PackageManager } from '../../services/check-parser/package-files/package-manager' -import { parseProject } from '../../services/project-parser' -import { ConstructExport, Project, Session } from '../../constructs/project' -import { Diagnostics } from '../../constructs' -import { Runtime } from '../../runtimes' +import { confirmCommit, performCommitAction } from './commit.js' +import { confirmApply, performApplyAction } from './apply.js' +import { generateChecklyConfig } from '../../services/checkly-config-codegen.js' +import { PackageJsonFile } from '../../services/check-parser/package-files/package-json-file.js' +import { detectNearestPackageJson, detectPackageManager, knownPackageManagers, PackageManager } from '../../services/check-parser/package-files/package-manager.js' +import { parseProject } from '../../services/project-parser.js' +import { ConstructExport, Project, Session } from '../../constructs/project.js' +import { Diagnostics } from '../../constructs/index.js' +import { Runtime } from '../../runtimes/index.js' type FriendExports = { [type in FriendResourceSync['type']]: Map @@ -722,8 +723,6 @@ ${chalk.cyan('For safety, resources are not deletable until the plan has been co } async #interactiveNpmInstall (dirPath: string, forcePackageManager?: PackageManager): Promise { - const { execa } = await import('execa') - const packageManager = forcePackageManager ?? await (async () => { try { this.style.actionStart(`Detecting package manager`) diff --git a/packages/cli/src/commands/incidents/__tests__/confirm-flow.spec.ts b/packages/cli/src/commands/incidents/__tests__/confirm-flow.spec.ts index eb3514a0c..0dad4ee1c 100644 --- a/packages/cli/src/commands/incidents/__tests__/confirm-flow.spec.ts +++ b/packages/cli/src/commands/incidents/__tests__/confirm-flow.spec.ts @@ -1,5 +1,5 @@ import { beforeEach, describe, expect, it, vi } from 'vitest' -import type { StatusPage } from '../../../rest/status-pages' +import type { StatusPage } from '../../../rest/status-pages.js' vi.mock('../../../helpers/cli-mode', () => ({ detectCliMode: vi.fn(() => 'agent'), @@ -14,13 +14,13 @@ vi.mock('prompts', () => ({ default: vi.fn(() => Promise.resolve({ confirm: true })), })) -import { detectCliMode } from '../../../helpers/cli-mode' -import * as api from '../../../rest/api' -import { AuthCommand } from '../../authCommand' -import IncidentsCreate from '../create' -import IncidentsUpdate from '../update' -import IncidentsResolve from '../resolve' -import IncidentsList from '../list' +import { detectCliMode } from '../../../helpers/cli-mode.js' +import * as api from '../../../rest/api.js' +import { AuthCommand } from '../../authCommand.js' +import IncidentsCreate from '../create.js' +import IncidentsUpdate from '../update.js' +import IncidentsResolve from '../resolve.js' +import IncidentsList from '../list.js' const statusPageFixture: StatusPage = { id: 'sp-1', diff --git a/packages/cli/src/commands/incidents/__tests__/notify-subscribers.spec.ts b/packages/cli/src/commands/incidents/__tests__/notify-subscribers.spec.ts index 4ae5bb6b1..c00d3fe67 100644 --- a/packages/cli/src/commands/incidents/__tests__/notify-subscribers.spec.ts +++ b/packages/cli/src/commands/incidents/__tests__/notify-subscribers.spec.ts @@ -1,5 +1,5 @@ import { beforeEach, describe, expect, it, vi } from 'vitest' -import type { StatusPage } from '../../../rest/status-pages' +import type { StatusPage } from '../../../rest/status-pages.js' vi.mock('../../../helpers/cli-mode', () => ({ detectCliMode: vi.fn(() => 'interactive'), @@ -17,11 +17,11 @@ vi.mock('../../../rest/api', () => ({ }, })) -import * as api from '../../../rest/api' -import { AuthCommand } from '../../authCommand' -import IncidentsCreate from '../create' -import IncidentsUpdate from '../update' -import IncidentsResolve from '../resolve' +import * as api from '../../../rest/api.js' +import { AuthCommand } from '../../authCommand.js' +import IncidentsCreate from '../create.js' +import IncidentsUpdate from '../update.js' +import IncidentsResolve from '../resolve.js' const statusPageFixture: StatusPage = { id: 'sp-1', diff --git a/packages/cli/src/commands/incidents/create.ts b/packages/cli/src/commands/incidents/create.ts index f0c233231..88dcebf1a 100644 --- a/packages/cli/src/commands/incidents/create.ts +++ b/packages/cli/src/commands/incidents/create.ts @@ -1,10 +1,10 @@ import { Flags } from '@oclif/core' import chalk from 'chalk' -import { AuthCommand } from '../authCommand' -import { outputFlag, forceFlag, dryRunFlag } from '../../helpers/flags' -import * as api from '../../rest/api' -import type { OutputFormat } from '../../formatters/render' -import { formatIncidentDetail } from '../../formatters/incidents' +import { AuthCommand } from '../authCommand.js' +import { outputFlag, forceFlag, dryRunFlag } from '../../helpers/flags.js' +import * as api from '../../rest/api.js' +import type { OutputFormat } from '../../formatters/render.js' +import { formatIncidentDetail } from '../../formatters/incidents.js' import { DEFAULT_CREATE_INCIDENT_MESSAGE, flattenStatusPageServices, @@ -12,7 +12,7 @@ import { type IncidentSeverityOption, resolveIncidentServices, toIncidentSeverity, -} from '../../helpers/incidents' +} from '../../helpers/incidents.js' export default class IncidentsCreate extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/incidents/list.ts b/packages/cli/src/commands/incidents/list.ts index 157e524c8..2cd60e54c 100644 --- a/packages/cli/src/commands/incidents/list.ts +++ b/packages/cli/src/commands/incidents/list.ts @@ -1,16 +1,16 @@ import { Flags } from '@oclif/core' import chalk from 'chalk' -import { AuthCommand } from '../authCommand' -import { outputFlag } from '../../helpers/flags' -import * as api from '../../rest/api' -import type { OutputFormat } from '../../formatters/render' -import { formatIncidentsList } from '../../formatters/incidents' +import { AuthCommand } from '../authCommand.js' +import { outputFlag } from '../../helpers/flags.js' +import * as api from '../../rest/api.js' +import type { OutputFormat } from '../../formatters/render.js' +import { formatIncidentsList } from '../../formatters/incidents.js' import { filterIncidentsByStatus, flattenStatusPageServices, incidentListStatusOptions, type IncidentListStatusOption, -} from '../../helpers/incidents' +} from '../../helpers/incidents.js' export default class IncidentsList extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/incidents/resolve.ts b/packages/cli/src/commands/incidents/resolve.ts index fc782ca54..d76b8997c 100644 --- a/packages/cli/src/commands/incidents/resolve.ts +++ b/packages/cli/src/commands/incidents/resolve.ts @@ -1,11 +1,11 @@ import { Args, Flags } from '@oclif/core' import chalk from 'chalk' -import { AuthCommand } from '../authCommand' -import { outputFlag, forceFlag, dryRunFlag } from '../../helpers/flags' -import * as api from '../../rest/api' -import type { OutputFormat } from '../../formatters/render' -import { formatIncidentUpdateDetail } from '../../formatters/incidents' -import { DEFAULT_RESOLVE_INCIDENT_MESSAGE } from '../../helpers/incidents' +import { AuthCommand } from '../authCommand.js' +import { outputFlag, forceFlag, dryRunFlag } from '../../helpers/flags.js' +import * as api from '../../rest/api.js' +import type { OutputFormat } from '../../formatters/render.js' +import { formatIncidentUpdateDetail } from '../../formatters/incidents.js' +import { DEFAULT_RESOLVE_INCIDENT_MESSAGE } from '../../helpers/incidents.js' export default class IncidentsResolve extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/incidents/update.ts b/packages/cli/src/commands/incidents/update.ts index 00b693775..c798c7771 100644 --- a/packages/cli/src/commands/incidents/update.ts +++ b/packages/cli/src/commands/incidents/update.ts @@ -1,10 +1,10 @@ import { Args, Flags } from '@oclif/core' import chalk from 'chalk' -import { AuthCommand } from '../authCommand' -import { outputFlag, forceFlag, dryRunFlag } from '../../helpers/flags' -import * as api from '../../rest/api' -import type { OutputFormat } from '../../formatters/render' -import { formatIncidentUpdateDetail, formatIncidentSeverity } from '../../formatters/incidents' +import { AuthCommand } from '../authCommand.js' +import { outputFlag, forceFlag, dryRunFlag } from '../../helpers/flags.js' +import * as api from '../../rest/api.js' +import type { OutputFormat } from '../../formatters/render.js' +import { formatIncidentUpdateDetail, formatIncidentSeverity } from '../../formatters/incidents.js' import { incidentProgressStatusOptions, type IncidentProgressStatusOption, @@ -12,7 +12,7 @@ import { incidentSeverityOptions, type IncidentSeverityOption, toIncidentSeverity, -} from '../../helpers/incidents' +} from '../../helpers/incidents.js' export default class IncidentsUpdate extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/init.ts b/packages/cli/src/commands/init.ts index 20f1b9fa5..3a94b418e 100644 --- a/packages/cli/src/commands/init.ts +++ b/packages/cli/src/commands/init.ts @@ -2,13 +2,13 @@ import chalk from 'chalk' import { Flags } from '@oclif/core' import prompts from 'prompts' -import { BaseCommand } from './baseCommand' -import { detectCliMode, type CliMode } from '../helpers/cli-mode' +import { BaseCommand } from './baseCommand.js' +import { detectCliMode, type CliMode } from '../helpers/cli-mode.js' import { PLATFORM_TARGETS, readSkillFile, writeSkillToTarget, -} from './skills/install' +} from './skills/install.js' import { detectProjectContext, type ProjectContext, @@ -27,7 +27,7 @@ import { agentFooter, noSkillWarning, existingProjectFooter, -} from '../helpers/onboarding' +} from '../helpers/onboarding/index.js' const VALID_TARGETS = Object.keys(PLATFORM_TARGETS) diff --git a/packages/cli/src/commands/login.ts b/packages/cli/src/commands/login.ts index 870891834..e31a8dca7 100644 --- a/packages/cli/src/commands/login.ts +++ b/packages/cli/src/commands/login.ts @@ -1,11 +1,11 @@ import open from 'open' import chalk from 'chalk' -import { BaseCommand } from './baseCommand' +import { BaseCommand } from './baseCommand.js' import prompts from 'prompts' -import config from '../services/config' -import * as api from '../rest/api' -import type { Account } from '../rest/accounts' -import { AuthContext } from '../auth' +import config from '../services/config.js' +import * as api from '../rest/api.js' +import type { Account } from '../rest/accounts.js' +import { AuthContext } from '../auth/index.js' export const selectAccount = async ( accounts: Array, { onCancel }: { onCancel: () => void }): Promise => { diff --git a/packages/cli/src/commands/logout.ts b/packages/cli/src/commands/logout.ts index ddfc65f1f..2f5a8ce4b 100644 --- a/packages/cli/src/commands/logout.ts +++ b/packages/cli/src/commands/logout.ts @@ -1,8 +1,8 @@ import prompts from 'prompts' import { Flags } from '@oclif/core' -import config from '../services/config' -import { BaseCommand } from './baseCommand' -import commonMessages from '../messages/common-messages' +import config from '../services/config.js' +import { BaseCommand } from './baseCommand.js' +import commonMessages from '../messages/common-messages.js' export default class Logout extends BaseCommand { static hidden = false diff --git a/packages/cli/src/commands/pw-test.ts b/packages/cli/src/commands/pw-test.ts index 47d10763e..2d64921a1 100644 --- a/packages/cli/src/commands/pw-test.ts +++ b/packages/cli/src/commands/pw-test.ts @@ -1,4 +1,4 @@ -import { AuthCommand } from './authCommand' +import { AuthCommand } from './authCommand.js' import { findPlaywrightConfigPath, getCiInformation, @@ -6,39 +6,39 @@ import { getEnvs, getGitInformation, splitConfigFilePath, writeChecklyConfigFile, -} from '../services/util' -import { getChecklyConfigFile, loadChecklyConfig, PlaywrightSlimmedProp } from '../services/checkly-config-loader' -import { prepareReportersTypes, prepareRunLocation, splitChecklyAndPlaywrightFlags } from '../helpers/test-helper' -import * as api from '../rest/api' -import config from '../services/config' -import { parseProject } from '../services/project-parser' -import { Diagnostics, PlaywrightCheck, RuntimeCheck, Session } from '../constructs' +} from '../services/util.js' +import { getChecklyConfigFile, loadChecklyConfig, PlaywrightSlimmedProp } from '../services/checkly-config-loader.js' +import { prepareReportersTypes, prepareRunLocation, splitChecklyAndPlaywrightFlags } from '../helpers/test-helper.js' +import * as api from '../rest/api.js' +import config from '../services/config.js' +import { parseProject } from '../services/project-parser.js' +import { Diagnostics, PlaywrightCheck, RuntimeCheck, Session } from '../constructs/index.js' import { Flags } from '@oclif/core' -import { createReporters, ReporterType } from '../reporters/reporter' -import TestRunner from '../services/test-runner' +import { createReporters, ReporterType } from '../reporters/reporter.js' +import TestRunner from '../services/test-runner.js' import { DEFAULT_PLAYWRIGHT_CHECK_RUN_TIMEOUT_SECONDS, Events, SequenceId, -} from '../services/abstract-check-runner' -import { TestResultsShortLinks } from '../rest/test-sessions' -import commonMessages from '../messages/common-messages' -import type { Region } from '..' +} from '../services/abstract-check-runner.js' +import { TestResultsShortLinks } from '../rest/test-sessions.js' +import commonMessages from '../messages/common-messages.js' +import type { Region } from '../index.js' import path from 'node:path' import * as recast from 'recast' import { addItemToArray, addOrReplaceItem, findPropertyByName, reWriteChecklyConfigFile, -} from '../helpers/write-config-helpers' -import * as acornParser from '../helpers/recast-acorn-parser' -import * as JSON5 from 'json5' -import { detectPackageManager } from '../services/check-parser/package-files/package-manager' -import { DEFAULT_REGION } from '../helpers/constants' -import { cased } from '../sourcegen' -import { shellQuote } from '../services/shell' -import { Runtime } from '../runtimes' -import { Bundler } from '../services/check-parser/bundler' +} from '../helpers/write-config-helpers.js' +import * as acornParser from '../helpers/recast-acorn-parser.js' +import JSON5 from 'json5' +import { detectPackageManager } from '../services/check-parser/package-files/package-manager.js' +import { DEFAULT_REGION } from '../helpers/constants.js' +import { cased } from '../sourcegen/index.js' +import { shellQuote } from '../services/shell.js' +import { Runtime } from '../runtimes/index.js' +import { Bundler } from '../services/check-parser/bundler.js' export default class PwTestCommand extends AuthCommand { static coreCommand = true diff --git a/packages/cli/src/commands/rca/get.ts b/packages/cli/src/commands/rca/get.ts index 5288ffade..d20decef6 100644 --- a/packages/cli/src/commands/rca/get.ts +++ b/packages/cli/src/commands/rca/get.ts @@ -1,8 +1,8 @@ import { Args, Flags } from '@oclif/core' -import { AuthCommand } from '../authCommand' -import { outputFlag } from '../../helpers/flags' -import * as api from '../../rest/api' -import { formatRcaCompleted } from '../../formatters/rca' +import { AuthCommand } from '../authCommand.js' +import { outputFlag } from '../../helpers/flags.js' +import * as api from '../../rest/api.js' +import { formatRcaCompleted } from '../../formatters/rca.js' export default class RcaGet extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/rca/run.ts b/packages/cli/src/commands/rca/run.ts index f6fc48d5c..329e116ec 100644 --- a/packages/cli/src/commands/rca/run.ts +++ b/packages/cli/src/commands/rca/run.ts @@ -1,10 +1,10 @@ import { Flags } from '@oclif/core' import chalk from 'chalk' -import { AuthCommand } from '../authCommand' +import { AuthCommand } from '../authCommand.js' import { normalizeFlagAliases, outputFlag } from '../../helpers/flags.js' -import * as api from '../../rest/api' -import { NotFoundError, InadequateEntitlementsError } from '../../rest/errors' -import { formatRcaPending, formatRcaCompleted } from '../../formatters/rca' +import * as api from '../../rest/api.js' +import { NotFoundError, InadequateEntitlementsError } from '../../rest/errors.js' +import { formatRcaPending, formatRcaCompleted } from '../../formatters/rca.js' export default class RcaRun extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/rules.ts b/packages/cli/src/commands/rules.ts index 53993d0a3..3ed224ac0 100644 --- a/packages/cli/src/commands/rules.ts +++ b/packages/cli/src/commands/rules.ts @@ -1,8 +1,11 @@ -import { BaseCommand } from './baseCommand' +import { BaseCommand } from './baseCommand.js' import { readFile, writeFile, access, mkdir } from 'fs/promises' import path, { join } from 'path' import { constants } from 'fs' import prompts from 'prompts' +import { fileURLToPath } from 'node:url' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) const BASE_RULES_FILE_PATH = join(__dirname, '../ai-context/checkly.rules.md') diff --git a/packages/cli/src/commands/runtimes.ts b/packages/cli/src/commands/runtimes.ts index d4fc46bf3..6aae6ed41 100644 --- a/packages/cli/src/commands/runtimes.ts +++ b/packages/cli/src/commands/runtimes.ts @@ -1,5 +1,5 @@ -import * as api from '../rest/api' -import { BaseCommand } from './baseCommand' +import * as api from '../rest/api.js' +import { BaseCommand } from './baseCommand.js' export default class Runtimes extends BaseCommand { static hidden = false diff --git a/packages/cli/src/commands/skills/__tests__/install.spec.ts b/packages/cli/src/commands/skills/__tests__/install.spec.ts index 248ac1c7e..789a3f54c 100644 --- a/packages/cli/src/commands/skills/__tests__/install.spec.ts +++ b/packages/cli/src/commands/skills/__tests__/install.spec.ts @@ -18,8 +18,8 @@ vi.mock('../../../helpers/cli-mode', () => ({ import { access, mkdir, readFile, writeFile } from 'fs/promises' import prompts from 'prompts' -import { detectCliMode } from '../../../helpers/cli-mode' -import SkillsInstall, { PLATFORM_TARGETS, readSkillFile, SKILL_FILE_PATH, writeSkillToTarget } from '../install' +import { detectCliMode } from '../../../helpers/cli-mode.js' +import SkillsInstall, { PLATFORM_TARGETS, readSkillFile, SKILL_FILE_PATH, writeSkillToTarget } from '../install.js' const SKILL_CONTENT = '# Test Skill Content\nThis is a test skill.' diff --git a/packages/cli/src/commands/skills/index.ts b/packages/cli/src/commands/skills/index.ts index 3c4a782d9..9a39fb506 100644 --- a/packages/cli/src/commands/skills/index.ts +++ b/packages/cli/src/commands/skills/index.ts @@ -1,9 +1,12 @@ import { Args } from '@oclif/core' import { readFile, readdir } from 'fs/promises' -import { join } from 'path' +import { join, dirname } from 'path' +import { fileURLToPath } from 'node:url' -import { ACTIONS, SKILL } from '../../ai-context/context' -import { BaseCommand } from '../baseCommand' +import { ACTIONS, SKILL } from '../../ai-context/context.js' +import { BaseCommand } from '../baseCommand.js' + +const __dirname = dirname(fileURLToPath(import.meta.url)) const REFERENCES_DIR = join(__dirname, '../../ai-context/skills-command/references') diff --git a/packages/cli/src/commands/skills/install.ts b/packages/cli/src/commands/skills/install.ts index e4b7a1196..7ba4868fb 100644 --- a/packages/cli/src/commands/skills/install.ts +++ b/packages/cli/src/commands/skills/install.ts @@ -2,11 +2,14 @@ import { Flags } from '@oclif/core' import chalk from 'chalk' import { constants } from 'fs' import { access, mkdir, readFile, writeFile } from 'fs/promises' -import { join } from 'path' +import { join, dirname } from 'path' import prompts from 'prompts' +import { fileURLToPath } from 'node:url' -import { detectCliMode } from '../../helpers/cli-mode' -import { BaseCommand } from '../baseCommand' +import { detectCliMode } from '../../helpers/cli-mode.js' +import { BaseCommand } from '../baseCommand.js' + +const __dirname = dirname(fileURLToPath(import.meta.url)) export const SKILL_FILE_PATH = join(__dirname, '../../ai-context/public-skills/checkly/SKILL.md') const SKILL_FILENAME = 'SKILL.md' diff --git a/packages/cli/src/commands/status-pages/get.ts b/packages/cli/src/commands/status-pages/get.ts index 62be8e129..c6aa09209 100644 --- a/packages/cli/src/commands/status-pages/get.ts +++ b/packages/cli/src/commands/status-pages/get.ts @@ -1,10 +1,10 @@ import { Args } from '@oclif/core' import chalk from 'chalk' -import { AuthCommand } from '../authCommand' -import { outputFlag } from '../../helpers/flags' -import * as api from '../../rest/api' -import type { OutputFormat } from '../../formatters/render' -import { formatStatusPageDetail } from '../../formatters/status-pages' +import { AuthCommand } from '../authCommand.js' +import { outputFlag } from '../../helpers/flags.js' +import * as api from '../../rest/api.js' +import type { OutputFormat } from '../../formatters/render.js' +import { formatStatusPageDetail } from '../../formatters/status-pages.js' export default class StatusPagesGet extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/status-pages/list.ts b/packages/cli/src/commands/status-pages/list.ts index 5fdd5a934..c80996d6e 100644 --- a/packages/cli/src/commands/status-pages/list.ts +++ b/packages/cli/src/commands/status-pages/list.ts @@ -1,14 +1,14 @@ import { Flags } from '@oclif/core' -import { AuthCommand } from '../authCommand' -import { outputFlag } from '../../helpers/flags' -import * as api from '../../rest/api' -import type { OutputFormat } from '../../formatters/render' +import { AuthCommand } from '../authCommand.js' +import { outputFlag } from '../../helpers/flags.js' +import * as api from '../../rest/api.js' +import type { OutputFormat } from '../../formatters/render.js' import { formatStatusPagesExpanded, formatStatusPagesCompact, formatCursorPaginationInfo, formatCursorNavigationHints, -} from '../../formatters/status-pages' +} from '../../formatters/status-pages.js' export default class StatusPagesList extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/switch.ts b/packages/cli/src/commands/switch.ts index 0c8ce8ec6..bb00d10e3 100644 --- a/packages/cli/src/commands/switch.ts +++ b/packages/cli/src/commands/switch.ts @@ -1,9 +1,9 @@ import chalk from 'chalk' import { Flags } from '@oclif/core' -import config from '../services/config' -import * as api from '../rest/api' -import { AuthCommand } from './authCommand' -import { selectAccount } from './login' +import config from '../services/config.js' +import * as api from '../rest/api.js' +import { AuthCommand } from './authCommand.js' +import { selectAccount } from './login.js' export default class Switch extends AuthCommand { static hidden = false diff --git a/packages/cli/src/commands/sync-playwright.ts b/packages/cli/src/commands/sync-playwright.ts index 5266024bc..ffbaefdbb 100644 --- a/packages/cli/src/commands/sync-playwright.ts +++ b/packages/cli/src/commands/sync-playwright.ts @@ -1,12 +1,12 @@ -import { BaseCommand } from './baseCommand' +import { BaseCommand } from './baseCommand.js' import * as recast from 'recast' -import { getChecklyConfigFile } from '../services/checkly-config-loader' -import { loadPlaywrightConfig } from '../playwright/playwright-config-loader' +import { getChecklyConfigFile } from '../services/checkly-config-loader.js' +import { loadPlaywrightConfig } from '../playwright/playwright-config-loader.js' import path from 'path' import { ux } from '@oclif/core' -import PlaywrightConfigTemplate from '../playwright/playwright-config-template' -import { addOrReplaceItem, findPropertyByName, reWriteChecklyConfigFile } from '../helpers/write-config-helpers' -import * as acornParser from '../helpers/recast-acorn-parser' +import PlaywrightConfigTemplate from '../playwright/playwright-config-template.js' +import { addOrReplaceItem, findPropertyByName, reWriteChecklyConfigFile } from '../helpers/write-config-helpers.js' +import * as acornParser from '../helpers/recast-acorn-parser.js' export default class SyncPlaywright extends BaseCommand { static hidden = false diff --git a/packages/cli/src/commands/test.ts b/packages/cli/src/commands/test.ts index c4b71098a..bf6295b25 100644 --- a/packages/cli/src/commands/test.ts +++ b/packages/cli/src/commands/test.ts @@ -1,30 +1,30 @@ import { Flags, Args, ux } from '@oclif/core' import indentString from 'indent-string' -import * as api from '../rest/api' -import config from '../services/config' -import { parseProject } from '../services/project-parser' +import * as api from '../rest/api.js' +import config from '../services/config.js' +import { parseProject } from '../services/project-parser.js' import { Events, SequenceId, DEFAULT_CHECK_RUN_TIMEOUT_SECONDS, -} from '../services/abstract-check-runner' -import TestRunner from '../services/test-runner' -import { loadChecklyConfig } from '../services/checkly-config-loader' -import { filterByFileNamePattern, filterByCheckNamePattern, filterByTags } from '../services/test-filters' -import { AuthCommand } from './authCommand' -import { BrowserCheck, Check, Diagnostics, HeartbeatMonitor, MultiStepCheck, Project, RetryStrategyBuilder, RuntimeCheck, Session } from '../constructs' -import type { Region } from '..' -import { splitConfigFilePath, getGitInformation, getCiInformation, getEnvs } from '../services/util' -import { createReporters, ReporterType } from '../reporters/reporter' -import commonMessages from '../messages/common-messages' -import { TestResultsShortLinks } from '../rest/test-sessions' -import { printLn, formatCheckTitle, CheckStatus } from '../reporters/util' -import { uploadSnapshots } from '../services/snapshot-service' -import { isEntrypoint } from '../constructs/construct' -import { BrowserCheckBundle } from '../constructs/browser-check-bundle' -import { prepareReportersTypes, prepareRunLocation } from '../helpers/test-helper' -import { Runtime } from '../runtimes' -import { Bundler } from '../services/check-parser/bundler' +} from '../services/abstract-check-runner.js' +import TestRunner from '../services/test-runner.js' +import { loadChecklyConfig } from '../services/checkly-config-loader.js' +import { filterByFileNamePattern, filterByCheckNamePattern, filterByTags } from '../services/test-filters.js' +import { AuthCommand } from './authCommand.js' +import { BrowserCheck, Check, Diagnostics, HeartbeatMonitor, MultiStepCheck, Project, RetryStrategyBuilder, RuntimeCheck, Session } from '../constructs/index.js' +import type { Region } from '../index.js' +import { splitConfigFilePath, getGitInformation, getCiInformation, getEnvs } from '../services/util.js' +import { createReporters, ReporterType } from '../reporters/reporter.js' +import commonMessages from '../messages/common-messages.js' +import { TestResultsShortLinks } from '../rest/test-sessions.js' +import { printLn, formatCheckTitle, CheckStatus } from '../reporters/util.js' +import { uploadSnapshots } from '../services/snapshot-service.js' +import { isEntrypoint } from '../constructs/construct.js' +import { BrowserCheckBundle } from '../constructs/browser-check-bundle.js' +import { prepareReportersTypes, prepareRunLocation } from '../helpers/test-helper.js' +import { Runtime } from '../runtimes/index.js' +import { Bundler } from '../services/check-parser/bundler.js' const MAX_RETRIES = 3 diff --git a/packages/cli/src/commands/trigger.ts b/packages/cli/src/commands/trigger.ts index dd6d1f1e3..0f2d4d979 100644 --- a/packages/cli/src/commands/trigger.ts +++ b/packages/cli/src/commands/trigger.ts @@ -1,25 +1,25 @@ import { Flags } from '@oclif/core' import { isCI } from 'ci-info' -import * as api from '../rest/api' -import { AuthCommand } from './authCommand' -import { loadChecklyConfig } from '../services/checkly-config-loader' -import { splitConfigFilePath, getEnvs, getGitInformation, getCiInformation } from '../services/util' -import type { Region } from '..' -import TriggerRunner from '../services/trigger-runner' +import * as api from '../rest/api.js' +import { AuthCommand } from './authCommand.js' +import { loadChecklyConfig } from '../services/checkly-config-loader.js' +import { splitConfigFilePath, getEnvs, getGitInformation, getCiInformation } from '../services/util.js' +import type { Region } from '../index.js' +import TriggerRunner from '../services/trigger-runner.js' import { RunLocation, Events, PrivateRunLocation, SequenceId, DEFAULT_CHECK_RUN_TIMEOUT_SECONDS, -} from '../services/abstract-check-runner' -import config from '../services/config' -import { createReporters, ReporterType } from '../reporters/reporter' -import { printLn } from '../reporters/util' -import { NoMatchingChecksError, TestResultsShortLinks } from '../rest/test-sessions' -import { Session, RetryStrategyBuilder } from '../constructs' -import { DEFAULT_REGION } from '../helpers/constants' +} from '../services/abstract-check-runner.js' +import config from '../services/config.js' +import { createReporters, ReporterType } from '../reporters/reporter.js' +import { printLn } from '../reporters/util.js' +import { NoMatchingChecksError, TestResultsShortLinks } from '../rest/test-sessions.js' +import { Session, RetryStrategyBuilder } from '../constructs/index.js' +import { DEFAULT_REGION } from '../helpers/constants.js' const MAX_RETRIES = 3 diff --git a/packages/cli/src/commands/validate.ts b/packages/cli/src/commands/validate.ts index fdb481a28..b1a0aed72 100644 --- a/packages/cli/src/commands/validate.ts +++ b/packages/cli/src/commands/validate.ts @@ -1,12 +1,12 @@ -import * as api from '../rest/api' +import * as api from '../rest/api.js' import { Flags } from '@oclif/core' -import { AuthCommand } from './authCommand' -import { parseProject } from '../services/project-parser' -import { loadChecklyConfig } from '../services/checkly-config-loader' -import { Diagnostics } from '../constructs' -import { splitConfigFilePath } from '../services/util' -import commonMessages from '../messages/common-messages' -import { Runtime } from '../runtimes' +import { AuthCommand } from './authCommand.js' +import { parseProject } from '../services/project-parser.js' +import { loadChecklyConfig } from '../services/checkly-config-loader.js' +import { Diagnostics } from '../constructs/index.js' +import { splitConfigFilePath } from '../services/util.js' +import commonMessages from '../messages/common-messages.js' +import { Runtime } from '../runtimes/index.js' export default class Validate extends AuthCommand { static coreCommand = true diff --git a/packages/cli/src/commands/whoami.ts b/packages/cli/src/commands/whoami.ts index 432a13679..af3ece5b8 100644 --- a/packages/cli/src/commands/whoami.ts +++ b/packages/cli/src/commands/whoami.ts @@ -1,5 +1,5 @@ -import * as api from '../rest/api' -import { AuthCommand } from './authCommand' +import * as api from '../rest/api.js' +import { AuthCommand } from './authCommand.js' export default class Whoami extends AuthCommand { static hidden = false diff --git a/packages/cli/src/config.ts b/packages/cli/src/config.ts index 58d39b85e..4b8d19c68 100644 --- a/packages/cli/src/config.ts +++ b/packages/cli/src/config.ts @@ -1,10 +1,10 @@ -import type { ChecklyConfig } from './services/checkly-config-loader' +import type { ChecklyConfig } from './services/checkly-config-loader.js' /** * Supported regions */ -declare module './' { +declare module './index.js' { export interface Region { 'us-east-1': string 'us-east-2': string diff --git a/packages/cli/src/constructs/__tests__/agentic-check-codegen.spec.ts b/packages/cli/src/constructs/__tests__/agentic-check-codegen.spec.ts index 01d1ae626..8e6875b2d 100644 --- a/packages/cli/src/constructs/__tests__/agentic-check-codegen.spec.ts +++ b/packages/cli/src/constructs/__tests__/agentic-check-codegen.spec.ts @@ -4,9 +4,9 @@ import path from 'node:path' import { describe, it, expect, beforeEach, afterEach } from 'vitest' -import { AgenticCheckCodegen, AgenticCheckResource } from '../agentic-check-codegen' -import { Context } from '../internal/codegen/context' -import { Program } from '../../sourcegen' +import { AgenticCheckCodegen, AgenticCheckResource } from '../agentic-check-codegen.js' +import { Context } from '../internal/codegen/context.js' +import { Program } from '../../sourcegen/index.js' interface RenderEnv { rootDirectory: string diff --git a/packages/cli/src/constructs/__tests__/agentic-check.spec.ts b/packages/cli/src/constructs/__tests__/agentic-check.spec.ts index 1b377833d..44ac6b294 100644 --- a/packages/cli/src/constructs/__tests__/agentic-check.spec.ts +++ b/packages/cli/src/constructs/__tests__/agentic-check.spec.ts @@ -2,8 +2,8 @@ import path from 'node:path' import { describe, it, expect, afterAll, beforeAll } from 'vitest' -import { FixtureSandbox } from '../../testing/fixture-sandbox' -import { ParseProjectOutput } from '../../commands/debug/parse-project' +import { FixtureSandbox } from '../../testing/fixture-sandbox.js' +import { ParseProjectOutput } from '../../commands/debug/parse-project.js' async function parseProject (fixt: FixtureSandbox, ...args: string[]): Promise { const result = await fixt.run('npx', [ diff --git a/packages/cli/src/constructs/__tests__/alert-channel.spec.ts b/packages/cli/src/constructs/__tests__/alert-channel.spec.ts index 0456ad337..8cb22abd2 100644 --- a/packages/cli/src/constructs/__tests__/alert-channel.spec.ts +++ b/packages/cli/src/constructs/__tests__/alert-channel.spec.ts @@ -1,7 +1,7 @@ import { describe, it, expect } from 'vitest' -import { AlertChannel, AlertChannelProps, Diagnostics } from '../index' -import { Project, Session } from '../project' +import { AlertChannel, AlertChannelProps, Diagnostics } from '../index.js' +import { Project, Session } from '../project.js' class TestAlertChannel extends AlertChannel { constructor (logicalId: string, props: AlertChannelProps) { diff --git a/packages/cli/src/constructs/__tests__/api-check.spec.ts b/packages/cli/src/constructs/__tests__/api-check.spec.ts index 0caf1c41e..f1281c33a 100644 --- a/packages/cli/src/constructs/__tests__/api-check.spec.ts +++ b/packages/cli/src/constructs/__tests__/api-check.spec.ts @@ -3,8 +3,8 @@ import path from 'node:path' import { describe, it, expect, afterAll, beforeAll } from 'vitest' -import { FixtureSandbox } from '../../testing/fixture-sandbox' -import { ParseProjectOutput } from '../../commands/debug/parse-project' +import { FixtureSandbox } from '../../testing/fixture-sandbox.js' +import { ParseProjectOutput } from '../../commands/debug/parse-project.js' async function parseProject (fixt: FixtureSandbox, ...args: string[]): Promise { const result = await fixt.run('npx', [ diff --git a/packages/cli/src/constructs/__tests__/browser-check.spec.ts b/packages/cli/src/constructs/__tests__/browser-check.spec.ts index bc7013c69..79768c10f 100644 --- a/packages/cli/src/constructs/__tests__/browser-check.spec.ts +++ b/packages/cli/src/constructs/__tests__/browser-check.spec.ts @@ -3,8 +3,8 @@ import path from 'node:path' import { describe, it, expect, afterAll, beforeAll } from 'vitest' -import { FixtureSandbox } from '../../testing/fixture-sandbox' -import { ParseProjectOutput } from '../../commands/debug/parse-project' +import { FixtureSandbox } from '../../testing/fixture-sandbox.js' +import { ParseProjectOutput } from '../../commands/debug/parse-project.js' async function parseProject (fixt: FixtureSandbox, ...args: string[]): Promise { const result = await fixt.run('npx', [ diff --git a/packages/cli/src/constructs/__tests__/check-group.spec.ts b/packages/cli/src/constructs/__tests__/check-group.spec.ts index 9ebea2b7e..9d604ccd7 100644 --- a/packages/cli/src/constructs/__tests__/check-group.spec.ts +++ b/packages/cli/src/constructs/__tests__/check-group.spec.ts @@ -1,8 +1,8 @@ import { describe, it, expect } from 'vitest' -import { AlertEscalationBuilder, CheckGroup, CheckGroupV1, CheckGroupV2, Diagnostics } from '../index' -import { Project, Session } from '../project' -import { Bundler } from '../../services/check-parser/bundler' +import { AlertEscalationBuilder, CheckGroup, CheckGroupV1, CheckGroupV2, Diagnostics } from '../index.js' +import { Project, Session } from '../project.js' +import { Bundler } from '../../services/check-parser/bundler.js' describe('CheckGroup', () => { describe('v1', () => { diff --git a/packages/cli/src/constructs/__tests__/dashboard.spec.ts b/packages/cli/src/constructs/__tests__/dashboard.spec.ts index ac1cabbfb..296cb5c57 100644 --- a/packages/cli/src/constructs/__tests__/dashboard.spec.ts +++ b/packages/cli/src/constructs/__tests__/dashboard.spec.ts @@ -2,9 +2,9 @@ import path from 'node:path' import { describe, it, expect } from 'vitest' -import { Dashboard } from '../index' -import { Project, Session } from '../project' -import { Bundler } from '../../services/check-parser/bundler' +import { Dashboard } from '../index.js' +import { Project, Session } from '../project.js' +import { Bundler } from '../../services/check-parser/bundler.js' describe('Dashboard', () => { describe('customCSS', () => { diff --git a/packages/cli/src/constructs/__tests__/dns-monitor.spec.ts b/packages/cli/src/constructs/__tests__/dns-monitor.spec.ts index ec5c20538..40f76e426 100644 --- a/packages/cli/src/constructs/__tests__/dns-monitor.spec.ts +++ b/packages/cli/src/constructs/__tests__/dns-monitor.spec.ts @@ -1,8 +1,8 @@ import { describe, it, expect } from 'vitest' -import { DnsMonitor, CheckGroup, DnsRequest, Diagnostics } from '../index' -import { Project, Session } from '../project' -import { Bundler } from '../../services/check-parser/bundler' +import { DnsMonitor, CheckGroup, DnsRequest, Diagnostics } from '../index.js' +import { Project, Session } from '../project.js' +import { Bundler } from '../../services/check-parser/bundler.js' const request: DnsRequest = { recordType: 'A', diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/checkly.config.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/checkly.config.ts new file mode 100644 index 000000000..bae253372 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/checkly.config.ts @@ -0,0 +1,11 @@ +import { defineConfig } from 'checkly' + +const config = defineConfig({ + projectName: 'Playwright Check Fixture', + logicalId: 'playwright-check-fixture', + checks: { + checkMatch: '**/*.check.ts', + }, +}) + +export default config diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/package.json new file mode 100644 index 000000000..ad4d956cd --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/package.json @@ -0,0 +1,17 @@ +{ + "name": "test-shared-bundling", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "keywords": [], + "author": "", + "license": "ISC", + "packageManager": "pnpm@10.28.1", + "devDependencies": { + "@playwright/test": "^1.58.2", + "jiti": "^2.6.1" + } +} \ No newline at end of file diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/playwright.check.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/playwright.check.ts new file mode 100644 index 000000000..df4ea538e --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/playwright.check.ts @@ -0,0 +1,18 @@ +import { PlaywrightCheck } from 'checkly/constructs' + +new PlaywrightCheck('check-for-project-a-tests-2', { + name: 'Check', + playwrightConfigPath: './projects/a/playwright.config.ts', + pwProjects: ['tests-2'], +}) + +new PlaywrightCheck('check-for-project-a-tests-3', { + name: 'Check', + playwrightConfigPath: './projects/a/playwright.config.ts', + pwProjects: ['tests-3'], +}) + +// new PlaywrightCheck('check-for-project-b', { +// name: 'Check', +// playwrightConfigPath: './projects/b/playwright.config.ts', +// }) diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/pnpm-lock.yaml new file mode 100644 index 000000000..5741dc8f5 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/pnpm-lock.yaml @@ -0,0 +1,61 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.58.2 + version: 1.58.2 + jiti: + specifier: ^2.6.1 + version: 2.6.1 + +packages: + + '@playwright/test@1.58.2': + resolution: {integrity: sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + + playwright-core@1.58.2: + resolution: {integrity: sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.58.2: + resolution: {integrity: sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.58.2': + dependencies: + playwright: 1.58.2 + + fsevents@2.3.2: + optional: true + + jiti@2.6.1: {} + + playwright-core@1.58.2: {} + + playwright@1.58.2: + dependencies: + playwright-core: 1.58.2 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/playwright.config.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/playwright.config.ts new file mode 100644 index 000000000..9f4fb8e95 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/playwright.config.ts @@ -0,0 +1,81 @@ +import { defineConfig, devices } from '@playwright/test'; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// import dotenv from 'dotenv'; +// import path from 'path'; +// dotenv.config({ path: path.resolve(__dirname, '.env') }); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + testDir: './tests', + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: 'html', + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('')`. */ + // baseURL: 'http://localhost:3000', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'tests-2', + testDir: './tests-2', + use: { ...devices['Desktop Chrome'] }, + }, + + { + name: 'tests-3', + testDir: './tests-3', + use: { ...devices['Desktop Firefox'] }, + }, + + { + name: 'webkit', + use: { ...devices['Desktop Safari'] }, + }, + + /* Test against mobile viewports. */ + // { + // name: 'Mobile Chrome', + // use: { ...devices['Pixel 5'] }, + // }, + // { + // name: 'Mobile Safari', + // use: { ...devices['iPhone 12'] }, + // }, + + /* Test against branded browsers. */ + // { + // name: 'Microsoft Edge', + // use: { ...devices['Desktop Edge'], channel: 'msedge' }, + // }, + // { + // name: 'Google Chrome', + // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + // }, + ], + + /* Run your local dev server before starting the tests */ + // webServer: { + // command: 'npm run start', + // url: 'http://localhost:3000', + // reuseExistingServer: !process.env.CI, + // }, +}); diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests-2/example1.spec.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests-2/example1.spec.ts new file mode 100644 index 000000000..54a906a4e --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests-2/example1.spec.ts @@ -0,0 +1,18 @@ +import { test, expect } from '@playwright/test'; + +test('has title', async ({ page }) => { + await page.goto('https://playwright.dev/'); + + // Expect a title "to contain" a substring. + await expect(page).toHaveTitle(/Playwright/); +}); + +test('get started link', async ({ page }) => { + await page.goto('https://playwright.dev/'); + + // Click the get started link. + await page.getByRole('link', { name: 'Get started' }).click(); + + // Expects page to have a heading with the name of Installation. + await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible(); +}); diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests-2/example2.spec.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests-2/example2.spec.ts new file mode 100644 index 000000000..54a906a4e --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests-2/example2.spec.ts @@ -0,0 +1,18 @@ +import { test, expect } from '@playwright/test'; + +test('has title', async ({ page }) => { + await page.goto('https://playwright.dev/'); + + // Expect a title "to contain" a substring. + await expect(page).toHaveTitle(/Playwright/); +}); + +test('get started link', async ({ page }) => { + await page.goto('https://playwright.dev/'); + + // Click the get started link. + await page.getByRole('link', { name: 'Get started' }).click(); + + // Expects page to have a heading with the name of Installation. + await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible(); +}); diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests-3/example1.spec.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests-3/example1.spec.ts new file mode 100644 index 000000000..54a906a4e --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests-3/example1.spec.ts @@ -0,0 +1,18 @@ +import { test, expect } from '@playwright/test'; + +test('has title', async ({ page }) => { + await page.goto('https://playwright.dev/'); + + // Expect a title "to contain" a substring. + await expect(page).toHaveTitle(/Playwright/); +}); + +test('get started link', async ({ page }) => { + await page.goto('https://playwright.dev/'); + + // Click the get started link. + await page.getByRole('link', { name: 'Get started' }).click(); + + // Expects page to have a heading with the name of Installation. + await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible(); +}); diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests-3/example2.spec.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests-3/example2.spec.ts new file mode 100644 index 000000000..54a906a4e --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests-3/example2.spec.ts @@ -0,0 +1,18 @@ +import { test, expect } from '@playwright/test'; + +test('has title', async ({ page }) => { + await page.goto('https://playwright.dev/'); + + // Expect a title "to contain" a substring. + await expect(page).toHaveTitle(/Playwright/); +}); + +test('get started link', async ({ page }) => { + await page.goto('https://playwright.dev/'); + + // Click the get started link. + await page.getByRole('link', { name: 'Get started' }).click(); + + // Expects page to have a heading with the name of Installation. + await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible(); +}); diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests/example.spec.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests/example.spec.ts new file mode 100644 index 000000000..54a906a4e --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/a/tests/example.spec.ts @@ -0,0 +1,18 @@ +import { test, expect } from '@playwright/test'; + +test('has title', async ({ page }) => { + await page.goto('https://playwright.dev/'); + + // Expect a title "to contain" a substring. + await expect(page).toHaveTitle(/Playwright/); +}); + +test('get started link', async ({ page }) => { + await page.goto('https://playwright.dev/'); + + // Click the get started link. + await page.getByRole('link', { name: 'Get started' }).click(); + + // Expects page to have a heading with the name of Installation. + await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible(); +}); diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/b/playwright.config.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/b/playwright.config.ts new file mode 100644 index 000000000..6dfc0d9bc --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/b/playwright.config.ts @@ -0,0 +1,79 @@ +import { defineConfig, devices } from '@playwright/test'; + +/** + * Read environment variables from file. + * https://github.com/motdotla/dotenv + */ +// import dotenv from 'dotenv'; +// import path from 'path'; +// dotenv.config({ path: path.resolve(__dirname, '.env') }); + +/** + * See https://playwright.dev/docs/test-configuration. + */ +export default defineConfig({ + testDir: './tests', + /* Run tests in files in parallel */ + fullyParallel: true, + /* Fail the build on CI if you accidentally left test.only in the source code. */ + forbidOnly: !!process.env.CI, + /* Retry on CI only */ + retries: process.env.CI ? 2 : 0, + /* Opt out of parallel tests on CI. */ + workers: process.env.CI ? 1 : undefined, + /* Reporter to use. See https://playwright.dev/docs/test-reporters */ + reporter: 'html', + /* Shared settings for all the projects below. See https://playwright.dev/docs/api/class-testoptions. */ + use: { + /* Base URL to use in actions like `await page.goto('')`. */ + // baseURL: 'http://localhost:3000', + + /* Collect trace when retrying the failed test. See https://playwright.dev/docs/trace-viewer */ + trace: 'on-first-retry', + }, + + /* Configure projects for major browsers */ + projects: [ + { + name: 'chromium', + use: { ...devices['Desktop Chrome'] }, + }, + + { + name: 'firefox', + use: { ...devices['Desktop Firefox'] }, + }, + + { + name: 'webkit', + use: { ...devices['Desktop Safari'] }, + }, + + /* Test against mobile viewports. */ + // { + // name: 'Mobile Chrome', + // use: { ...devices['Pixel 5'] }, + // }, + // { + // name: 'Mobile Safari', + // use: { ...devices['iPhone 12'] }, + // }, + + /* Test against branded browsers. */ + // { + // name: 'Microsoft Edge', + // use: { ...devices['Desktop Edge'], channel: 'msedge' }, + // }, + // { + // name: 'Google Chrome', + // use: { ...devices['Desktop Chrome'], channel: 'chrome' }, + // }, + ], + + /* Run your local dev server before starting the tests */ + // webServer: { + // command: 'npm run start', + // url: 'http://localhost:3000', + // reuseExistingServer: !process.env.CI, + // }, +}); diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/b/tests/example.spec.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/b/tests/example.spec.ts new file mode 100644 index 000000000..54a906a4e --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/projects/b/tests/example.spec.ts @@ -0,0 +1,18 @@ +import { test, expect } from '@playwright/test'; + +test('has title', async ({ page }) => { + await page.goto('https://playwright.dev/'); + + // Expect a title "to contain" a substring. + await expect(page).toHaveTitle(/Playwright/); +}); + +test('get started link', async ({ page }) => { + await page.goto('https://playwright.dev/'); + + // Click the get started link. + await page.getByRole('link', { name: 'Get started' }).click(); + + // Expects page to have a heading with the name of Installation. + await expect(page.getByRole('heading', { name: 'Installation' })).toBeVisible(); +}); diff --git a/packages/cli/src/constructs/__tests__/frequency-codegen.spec.ts b/packages/cli/src/constructs/__tests__/frequency-codegen.spec.ts index 42e78302e..16f2cd4b7 100644 --- a/packages/cli/src/constructs/__tests__/frequency-codegen.spec.ts +++ b/packages/cli/src/constructs/__tests__/frequency-codegen.spec.ts @@ -1,8 +1,8 @@ import { describe, it, expect } from 'vitest' -import { Frequency } from '../frequency' -import { valueForFrequency } from '../frequency-codegen' -import { GeneratedFile, Output } from '../../sourcegen' +import { Frequency } from '../frequency.js' +import { valueForFrequency } from '../frequency-codegen.js' +import { GeneratedFile, Output } from '../../sourcegen/index.js' describe('Frequency Codegen', () => { it('should generate predefined constants', () => { diff --git a/packages/cli/src/constructs/__tests__/icmp-monitor.spec.ts b/packages/cli/src/constructs/__tests__/icmp-monitor.spec.ts index 91c080c99..3a688c32c 100644 --- a/packages/cli/src/constructs/__tests__/icmp-monitor.spec.ts +++ b/packages/cli/src/constructs/__tests__/icmp-monitor.spec.ts @@ -1,8 +1,8 @@ import { describe, it, expect } from 'vitest' -import { IcmpMonitor, CheckGroup, IcmpRequest, IcmpAssertionBuilder, Diagnostics } from '../index' -import { Project, Session } from '../project' -import { Bundler } from '../../services/check-parser/bundler' +import { IcmpMonitor, CheckGroup, IcmpRequest, IcmpAssertionBuilder, Diagnostics } from '../index.js' +import { Project, Session } from '../project.js' +import { Bundler } from '../../services/check-parser/bundler.js' const request: IcmpRequest = { hostname: 'acme.com', diff --git a/packages/cli/src/constructs/__tests__/multi-step-check.spec.ts b/packages/cli/src/constructs/__tests__/multi-step-check.spec.ts index 6f55b825b..65d08c53e 100644 --- a/packages/cli/src/constructs/__tests__/multi-step-check.spec.ts +++ b/packages/cli/src/constructs/__tests__/multi-step-check.spec.ts @@ -1,9 +1,9 @@ import { describe, it, expect, beforeEach, afterAll } from 'vitest' -import { Project, Session } from '../project' -import { MultiStepCheck } from '../multi-step-check' -import { Diagnostics } from '../diagnostics' -import { Bundler } from '../../services/check-parser/bundler' +import { Project, Session } from '../project.js' +import { MultiStepCheck } from '../multi-step-check.js' +import { Diagnostics } from '../diagnostics.js' +import { Bundler } from '../../services/check-parser/bundler.js' const runtimesWithMultiStepSupport = { 2023.09: { name: '2023.09', multiStepSupport: true, default: false, stage: 'CURRENT', description: 'Main updates are Playwright 1.28.0, Node.js 16.x and Typescript support. We are also dropping support for Puppeteer', dependencies: { '@playwright/test': '1.28.0', '@opentelemetry/api': '1.0.4', '@opentelemetry/sdk-trace-base': '1.0.1', '@faker-js/faker': '5.5.3', 'aws4': '1.11.0', 'axios': '0.27.2', 'btoa': '1.2.1', 'chai': '4.3.7', 'chai-string': '1.5.0', 'crypto-js': '4.1.1', 'expect': '29.3.1', 'form-data': '4.0.0', 'jsonwebtoken': '8.5.1', 'lodash': '4.17.21', 'mocha': '10.1.0', 'moment': '2.29.2', 'node': '16.x', 'otpauth': '9.0.2', 'playwright': '1.28.0', 'typescript': '4.8.4', 'uuid': '9.0.0' } }, diff --git a/packages/cli/src/constructs/__tests__/playwright-check.spec.ts b/packages/cli/src/constructs/__tests__/playwright-check.spec.ts index cfeee9058..ef96a40f6 100644 --- a/packages/cli/src/constructs/__tests__/playwright-check.spec.ts +++ b/packages/cli/src/constructs/__tests__/playwright-check.spec.ts @@ -3,8 +3,8 @@ import path from 'node:path' import { describe, it, expect, beforeAll, afterAll } from 'vitest' import { list } from 'tar' -import { FixtureSandbox } from '../../testing/fixture-sandbox' -import { ParseProjectOutput } from '../../commands/debug/parse-project' +import { FixtureSandbox } from '../../testing/fixture-sandbox.js' +import { ParseProjectOutput } from '../../commands/debug/parse-project.js' async function parseProject (fixt: FixtureSandbox, ...args: string[]): Promise { const result = await fixt.run('npx', [ diff --git a/packages/cli/src/constructs/__tests__/private-location.spec.ts b/packages/cli/src/constructs/__tests__/private-location.spec.ts index 08fb6ec3c..52b569bfb 100644 --- a/packages/cli/src/constructs/__tests__/private-location.spec.ts +++ b/packages/cli/src/constructs/__tests__/private-location.spec.ts @@ -1,7 +1,7 @@ import { describe, it, expect } from 'vitest' -import { PrivateLocation, Diagnostics } from '../index' -import { Project, Session } from '../project' +import { PrivateLocation, Diagnostics } from '../index.js' +import { Project, Session } from '../project.js' describe('PrivateLocation', () => { it('should throw if the same logicalId is used twice', () => { diff --git a/packages/cli/src/constructs/__tests__/project.spec.ts b/packages/cli/src/constructs/__tests__/project.spec.ts index e36f3bf68..c5110e4b8 100644 --- a/packages/cli/src/constructs/__tests__/project.spec.ts +++ b/packages/cli/src/constructs/__tests__/project.spec.ts @@ -1,8 +1,8 @@ import { describe, it, expect, beforeEach } from 'vitest' -import { Session } from '../project' -import { Construct } from '../construct' -import { Diagnostics } from '../diagnostics' +import { Session } from '../project.js' +import { Construct } from '../construct.js' +import { Diagnostics } from '../diagnostics.js' class TestConstruct extends Construct { constructor (logicalId: string) { diff --git a/packages/cli/src/constructs/__tests__/status-page-service.spec.ts b/packages/cli/src/constructs/__tests__/status-page-service.spec.ts index f913195f8..ad1bee165 100644 --- a/packages/cli/src/constructs/__tests__/status-page-service.spec.ts +++ b/packages/cli/src/constructs/__tests__/status-page-service.spec.ts @@ -1,7 +1,7 @@ import { describe, it, expect } from 'vitest' -import { StatusPageService, Diagnostics } from '../index' -import { Project, Session } from '../project' +import { StatusPageService, Diagnostics } from '../index.js' +import { Project, Session } from '../project.js' describe('StatusPageService', () => { it('should throw if the same logicalId is used twice', () => { diff --git a/packages/cli/src/constructs/__tests__/tcp-monitor.spec.ts b/packages/cli/src/constructs/__tests__/tcp-monitor.spec.ts index 818b970ec..47a5614d6 100644 --- a/packages/cli/src/constructs/__tests__/tcp-monitor.spec.ts +++ b/packages/cli/src/constructs/__tests__/tcp-monitor.spec.ts @@ -1,8 +1,8 @@ import { describe, it, expect } from 'vitest' -import { TcpMonitor, CheckGroup, TcpRequest } from '../index' -import { Project, Session } from '../project' -import { Bundler } from '../../services/check-parser/bundler' +import { TcpMonitor, CheckGroup, TcpRequest } from '../index.js' +import { Project, Session } from '../project.js' +import { Bundler } from '../../services/check-parser/bundler.js' const request: TcpRequest = { hostname: 'acme.com', diff --git a/packages/cli/src/constructs/agentic-check-codegen.ts b/packages/cli/src/constructs/agentic-check-codegen.ts index 02c7d6ef6..80a630aa4 100644 --- a/packages/cli/src/constructs/agentic-check-codegen.ts +++ b/packages/cli/src/constructs/agentic-check-codegen.ts @@ -1,6 +1,6 @@ -import { Codegen, Context } from './internal/codegen' -import { expr, ident, ObjectValueBuilder } from '../sourcegen' -import { buildCheckProps, CheckResource } from './check-codegen' +import { Codegen, Context } from './internal/codegen/index.js' +import { expr, ident, ObjectValueBuilder } from '../sourcegen/index.js' +import { buildCheckProps, CheckResource } from './check-codegen.js' /** * Shape of `agenticCheckData` as stored on the backend and returned to the diff --git a/packages/cli/src/constructs/agentic-check.ts b/packages/cli/src/constructs/agentic-check.ts index fdd942641..e2ce94030 100644 --- a/packages/cli/src/constructs/agentic-check.ts +++ b/packages/cli/src/constructs/agentic-check.ts @@ -1,9 +1,9 @@ -import { Check, CheckProps } from './check' -import { Frequency } from './frequency' -import { Session } from './project' -import { CheckTypes } from '../constants' -import { Diagnostics } from './diagnostics' -import { InvalidPropertyValueDiagnostic } from './construct-diagnostics' +import { Check, CheckProps } from './check.js' +import { Frequency } from './frequency.js' +import { Session } from './project.js' +import { CheckTypes } from '../constants.js' +import { Diagnostics } from './diagnostics.js' +import { InvalidPropertyValueDiagnostic } from './construct-diagnostics.js' /** * Frequencies for agentic checks are accepted locally and enforced by the diff --git a/packages/cli/src/constructs/alert-channel-codegen.ts b/packages/cli/src/constructs/alert-channel-codegen.ts index 9a0e38428..39e971427 100644 --- a/packages/cli/src/constructs/alert-channel-codegen.ts +++ b/packages/cli/src/constructs/alert-channel-codegen.ts @@ -1,13 +1,13 @@ -import { Codegen, Context } from './internal/codegen' -import { Program, GeneratedFile, ObjectValueBuilder, expr, ident, Value } from '../sourcegen' - -import { EmailAlertChannelCodegen } from './email-alert-channel-codegen' -import { OpsgenieAlertChannelCodegen } from './opsgenie-alert-channel-codegen' -import { PagerdutyAlertChannelCodegen } from './pagerduty-alert-channel-codegen' -import { PhoneCallAlertChannelCodegen } from './phone-call-alert-channel-codegen' -import { SlackAlertChannelCodegen } from './slack-alert-channel-codegen' -import { SmsAlertChannelCodegen } from './sms-alert-channel-codegen' -import { WebhookAlertChannelCodegen } from './webhook-alert-channel-codegen' +import { Codegen, Context } from './internal/codegen/index.js' +import { Program, GeneratedFile, ObjectValueBuilder, expr, ident, Value } from '../sourcegen/index.js' + +import { EmailAlertChannelCodegen } from './email-alert-channel-codegen.js' +import { OpsgenieAlertChannelCodegen } from './opsgenie-alert-channel-codegen.js' +import { PagerdutyAlertChannelCodegen } from './pagerduty-alert-channel-codegen.js' +import { PhoneCallAlertChannelCodegen } from './phone-call-alert-channel-codegen.js' +import { SlackAlertChannelCodegen } from './slack-alert-channel-codegen.js' +import { SmsAlertChannelCodegen } from './sms-alert-channel-codegen.js' +import { WebhookAlertChannelCodegen } from './webhook-alert-channel-codegen.js' export type AlertChannelType = 'CALL' diff --git a/packages/cli/src/constructs/alert-channel-subscription-codegen.ts b/packages/cli/src/constructs/alert-channel-subscription-codegen.ts index 16a76e2f2..2823a81e9 100644 --- a/packages/cli/src/constructs/alert-channel-subscription-codegen.ts +++ b/packages/cli/src/constructs/alert-channel-subscription-codegen.ts @@ -1,4 +1,4 @@ -import { Codegen, Context } from './internal/codegen' +import { Codegen, Context } from './internal/codegen/index.js' export interface AlertChannelSubscriptionResource { alertChannelId: number diff --git a/packages/cli/src/constructs/alert-channel-subscription.ts b/packages/cli/src/constructs/alert-channel-subscription.ts index c94338b30..ac9c6c185 100644 --- a/packages/cli/src/constructs/alert-channel-subscription.ts +++ b/packages/cli/src/constructs/alert-channel-subscription.ts @@ -1,6 +1,6 @@ -import { Ref } from './ref' -import { Construct } from './construct' -import { Session } from './project' +import { Ref } from './ref.js' +import { Construct } from './construct.js' +import { Session } from './project.js' export interface AlertChannelSubscriptionProps { alertChannelId: Ref diff --git a/packages/cli/src/constructs/alert-channel.ts b/packages/cli/src/constructs/alert-channel.ts index 99c61a38d..9fb40b65f 100644 --- a/packages/cli/src/constructs/alert-channel.ts +++ b/packages/cli/src/constructs/alert-channel.ts @@ -1,7 +1,7 @@ -import { Construct } from './construct' -import { Diagnostics } from './diagnostics' -import { validatePhysicalIdIsNumeric } from './internal/common-diagnostics' -import { Session } from './project' +import { Construct } from './construct.js' +import { Diagnostics } from './diagnostics.js' +import { validatePhysicalIdIsNumeric } from './internal/common-diagnostics.js' +import { Session } from './project.js' /** * Configuration properties for alert channels. diff --git a/packages/cli/src/constructs/alert-escalation-policy-codegen.ts b/packages/cli/src/constructs/alert-escalation-policy-codegen.ts index 92af59d56..dab957947 100644 --- a/packages/cli/src/constructs/alert-escalation-policy-codegen.ts +++ b/packages/cli/src/constructs/alert-escalation-policy-codegen.ts @@ -1,5 +1,5 @@ -import { expr, ident, Value, ArgumentsValueBuilder, GeneratedFile } from '../sourcegen' -import { AlertEscalation } from './alert-escalation-policy' +import { expr, ident, Value, ArgumentsValueBuilder, GeneratedFile } from '../sourcegen/index.js' +import { AlertEscalation } from './alert-escalation-policy.js' export type AlertEscalationResource = AlertEscalation diff --git a/packages/cli/src/constructs/api-assertion-codegen.ts b/packages/cli/src/constructs/api-assertion-codegen.ts index e6e61b8ec..d557a1ba0 100644 --- a/packages/cli/src/constructs/api-assertion-codegen.ts +++ b/packages/cli/src/constructs/api-assertion-codegen.ts @@ -1,6 +1,6 @@ -import { GeneratedFile, Value } from '../sourcegen' -import { Assertion } from './api-assertion' -import { valueForGeneralAssertion, valueForNumericAssertion } from './internal/assertion-codegen' +import { GeneratedFile, Value } from '../sourcegen/index.js' +import { Assertion } from './api-assertion.js' +import { valueForGeneralAssertion, valueForNumericAssertion } from './internal/assertion-codegen.js' export function valueForAssertion (genfile: GeneratedFile, assertion: Assertion): Value { genfile.namedImport('AssertionBuilder', 'checkly/constructs') diff --git a/packages/cli/src/constructs/api-assertion.ts b/packages/cli/src/constructs/api-assertion.ts index 528c4bf4e..fd7b3b74f 100644 --- a/packages/cli/src/constructs/api-assertion.ts +++ b/packages/cli/src/constructs/api-assertion.ts @@ -2,7 +2,7 @@ import { Assertion as CoreAssertion, NumericAssertionBuilder, GeneralAssertionBuilder, -} from './internal/assertion' +} from './internal/assertion.js' /** Sources that can be used for API check assertions */ type ApiAssertionSource = diff --git a/packages/cli/src/constructs/api-check-bundle.ts b/packages/cli/src/constructs/api-check-bundle.ts index 1198f355c..03240b63a 100644 --- a/packages/cli/src/constructs/api-check-bundle.ts +++ b/packages/cli/src/constructs/api-check-bundle.ts @@ -1,6 +1,6 @@ -import { ApiCheck } from './api-check' -import { Bundle } from './construct' -import { SharedFileRef } from './project' +import { ApiCheck } from './api-check.js' +import { Bundle } from './construct.js' +import { SharedFileRef } from './project.js' export interface ApiCheckBundleProps { localSetupScript?: string diff --git a/packages/cli/src/constructs/api-check-codegen.ts b/packages/cli/src/constructs/api-check-codegen.ts index 28a4248f2..e9648986c 100644 --- a/packages/cli/src/constructs/api-check-codegen.ts +++ b/packages/cli/src/constructs/api-check-codegen.ts @@ -1,8 +1,8 @@ -import { Codegen, Context, validateScript } from './internal/codegen' -import { expr, ident } from '../sourcegen' -import { buildRuntimeCheckProps, RuntimeCheckResource } from './check-codegen' -import { Request } from './api-request' -import { valueForRequest } from './api-request-codegen' +import { Codegen, Context, validateScript } from './internal/codegen/index.js' +import { expr, ident } from '../sourcegen/index.js' +import { buildRuntimeCheckProps, RuntimeCheckResource } from './check-codegen.js' +import { Request } from './api-request.js' +import { valueForRequest } from './api-request-codegen.js' export interface ApiCheckResource extends RuntimeCheckResource { checkType: 'API' diff --git a/packages/cli/src/constructs/api-check.ts b/packages/cli/src/constructs/api-check.ts index d893a316f..2ab109275 100644 --- a/packages/cli/src/constructs/api-check.ts +++ b/packages/cli/src/constructs/api-check.ts @@ -1,17 +1,17 @@ import fs from 'node:fs/promises' -import { RuntimeCheck, RuntimeCheckProps } from './check' -import { HttpHeader } from './http-header' -import { BasicAuth, Request } from './api-request' -import { Session, SharedFileRef } from './project' -import { QueryParam } from './query-param' -import { Content, Entrypoint, isContent, isEntrypoint } from './construct' -import { Diagnostics } from './diagnostics' -import { DeprecatedPropertyDiagnostic, InvalidPropertyValueDiagnostic } from './construct-diagnostics' -import { ApiCheckBundle, ApiCheckBundleProps } from './api-check-bundle' -import { Assertion } from './api-assertion' -import { validateResponseTimes } from './internal/common-diagnostics' -import { Bundler } from '../services/check-parser/bundler' +import { RuntimeCheck, RuntimeCheckProps } from './check.js' +import { HttpHeader } from './http-header.js' +import { BasicAuth, Request } from './api-request.js' +import { Session, SharedFileRef } from './project.js' +import { QueryParam } from './query-param.js' +import { Content, Entrypoint, isContent, isEntrypoint } from './construct.js' +import { Diagnostics } from './diagnostics.js' +import { DeprecatedPropertyDiagnostic, InvalidPropertyValueDiagnostic } from './construct-diagnostics.js' +import { ApiCheckBundle, ApiCheckBundleProps } from './api-check-bundle.js' +import { Assertion } from './api-assertion.js' +import { validateResponseTimes } from './internal/common-diagnostics.js' +import { Bundler } from '../services/check-parser/bundler.js' /** * Default configuration that can be applied to API checks. diff --git a/packages/cli/src/constructs/api-request-codegen.ts b/packages/cli/src/constructs/api-request-codegen.ts index 2150e186c..92c5b5e7a 100644 --- a/packages/cli/src/constructs/api-request-codegen.ts +++ b/packages/cli/src/constructs/api-request-codegen.ts @@ -1,8 +1,8 @@ -import { GeneratedFile, object, Program, Value } from '../sourcegen' -import { valueForAssertion } from './api-assertion-codegen' -import { Request } from './api-request' -import { Context } from './internal/codegen' -import { valueForKeyValuePair } from './key-value-pair-codegen' +import { GeneratedFile, object, Program, Value } from '../sourcegen/index.js' +import { valueForAssertion } from './api-assertion-codegen.js' +import { Request } from './api-request.js' +import { Context } from './internal/codegen/index.js' +import { valueForKeyValuePair } from './key-value-pair-codegen.js' export function valueForRequest ( program: Program, diff --git a/packages/cli/src/constructs/api-request.ts b/packages/cli/src/constructs/api-request.ts index 022bcc41f..74af76214 100644 --- a/packages/cli/src/constructs/api-request.ts +++ b/packages/cli/src/constructs/api-request.ts @@ -1,8 +1,8 @@ -import { Assertion } from './api-assertion' -import { HttpHeader } from './http-header' -import { HttpRequestMethod } from './http-request' -import { IPFamily } from './ip' -import { QueryParam } from './query-param' +import { Assertion } from './api-assertion.js' +import { HttpHeader } from './http-header.js' +import { HttpRequestMethod } from './http-request.js' +import { IPFamily } from './ip.js' +import { QueryParam } from './query-param.js' /** HTTP request body types supported by API checks */ export type BodyType = 'JSON' | 'FORM' | 'RAW' | 'GRAPHQL' | 'NONE' diff --git a/packages/cli/src/constructs/browser-check-bundle.ts b/packages/cli/src/constructs/browser-check-bundle.ts index 004f83f3f..0697bf00e 100644 --- a/packages/cli/src/constructs/browser-check-bundle.ts +++ b/packages/cli/src/constructs/browser-check-bundle.ts @@ -1,7 +1,7 @@ -import { Snapshot } from '../services/snapshot-service' -import { BrowserCheck } from './browser-check' -import { Bundle } from './construct' -import { SharedFileRef } from './project' +import { Snapshot } from '../services/snapshot-service.js' +import { BrowserCheck } from './browser-check.js' +import { Bundle } from './construct.js' +import { SharedFileRef } from './project.js' export interface BrowserCheckBundleProps { script: string diff --git a/packages/cli/src/constructs/browser-check-codegen.ts b/packages/cli/src/constructs/browser-check-codegen.ts index 442a1cc35..9d973fd9a 100644 --- a/packages/cli/src/constructs/browser-check-codegen.ts +++ b/packages/cli/src/constructs/browser-check-codegen.ts @@ -1,7 +1,7 @@ -import { Codegen, Context, validateScript } from './internal/codegen' -import { expr, ident } from '../sourcegen' -import { buildRuntimeCheckProps, RuntimeCheckResource } from './check-codegen' -import { PlaywrightConfigResource, valueForPlaywrightConfig } from './playwright-config-codegen' +import { Codegen, Context, validateScript } from './internal/codegen/index.js' +import { expr, ident } from '../sourcegen/index.js' +import { buildRuntimeCheckProps, RuntimeCheckResource } from './check-codegen.js' +import { PlaywrightConfigResource, valueForPlaywrightConfig } from './playwright-config-codegen.js' export interface BrowserCheckResource extends RuntimeCheckResource { checkType: 'BROWSER' diff --git a/packages/cli/src/constructs/browser-check.ts b/packages/cli/src/constructs/browser-check.ts index 7875fb66d..c981b7585 100644 --- a/packages/cli/src/constructs/browser-check.ts +++ b/packages/cli/src/constructs/browser-check.ts @@ -1,16 +1,16 @@ import fs from 'node:fs/promises' -import { CheckProps, RuntimeCheck, RuntimeCheckProps } from './check' -import { Session, SharedFileRef } from './project' -import { Content, Entrypoint, isContent, isEntrypoint } from './construct' -import { detectSnapshots } from '../services/snapshot-service' -import { PlaywrightConfig } from './playwright-config' -import { Diagnostics } from './diagnostics' -import { InvalidPropertyValueDiagnostic } from './construct-diagnostics' -import { BrowserCheckBundle } from './browser-check-bundle' -import { ConfigDefaultsGetter, makeConfigDefaultsGetter } from './check-config' -import { CheckConfigDefaults } from '../services/checkly-config-loader' -import { Bundler } from '../services/check-parser/bundler' +import { CheckProps, RuntimeCheck, RuntimeCheckProps } from './check.js' +import { Session, SharedFileRef } from './project.js' +import { Content, Entrypoint, isContent, isEntrypoint } from './construct.js' +import { detectSnapshots } from '../services/snapshot-service.js' +import { PlaywrightConfig } from './playwright-config.js' +import { Diagnostics } from './diagnostics.js' +import { InvalidPropertyValueDiagnostic } from './construct-diagnostics.js' +import { BrowserCheckBundle } from './browser-check-bundle.js' +import { ConfigDefaultsGetter, makeConfigDefaultsGetter } from './check-config.js' +import { CheckConfigDefaults } from '../services/checkly-config-loader.js' +import { Bundler } from '../services/check-parser/bundler.js' export interface BrowserCheckProps extends RuntimeCheckProps { /** diff --git a/packages/cli/src/constructs/check-codegen.ts b/packages/cli/src/constructs/check-codegen.ts index e913f94b7..a31c66960 100644 --- a/packages/cli/src/constructs/check-codegen.ts +++ b/packages/cli/src/constructs/check-codegen.ts @@ -1,22 +1,22 @@ -import { Codegen, Context } from './internal/codegen' -import { Program, ObjectValueBuilder, GeneratedFile } from '../sourcegen' -import { AgenticCheckCodegen, AgenticCheckResource } from './agentic-check-codegen' -import { AlertEscalationResource, valueForAlertEscalation } from './alert-escalation-policy-codegen' -import { ApiCheckCodegen, ApiCheckResource } from './api-check-codegen' -import { BrowserCheckCodegen, BrowserCheckResource } from './browser-check-codegen' -import { CheckGroupCodegen, valueForCheckGroupFromId } from './check-group-codegen' -import { EnvironmentVariable } from './environment-variable' -import { FrequencyResource, valueForFrequency } from './frequency-codegen' -import { HeartbeatMonitorCodegen, HeartbeatMonitorResource } from './heartbeat-monitor-codegen' -import { valueForKeyValuePair } from './key-value-pair-codegen' -import { MultiStepCheckCodegen, MultiStepCheckResource } from './multi-step-check-codegen' -import { RetryStrategyResource, valueForRetryStrategy } from './retry-strategy-codegen' -import { TcpMonitorCodegen, TcpMonitorResource } from './tcp-monitor-codegen' -import { UrlMonitorCodegen, UrlMonitorResource } from './url-monitor-codegen' -import { valueForPrivateLocationFromId } from './private-location-codegen' -import { valueForAlertChannelFromId } from './alert-channel-codegen' -import { DnsMonitorCodegen, DnsMonitorResource } from './dns-monitor-codegen' -import { IcmpMonitorCodegen, IcmpMonitorResource } from './icmp-monitor-codegen' +import { Codegen, Context } from './internal/codegen/index.js' +import { Program, ObjectValueBuilder, GeneratedFile } from '../sourcegen/index.js' +import { AgenticCheckCodegen, AgenticCheckResource } from './agentic-check-codegen.js' +import { AlertEscalationResource, valueForAlertEscalation } from './alert-escalation-policy-codegen.js' +import { ApiCheckCodegen, ApiCheckResource } from './api-check-codegen.js' +import { BrowserCheckCodegen, BrowserCheckResource } from './browser-check-codegen.js' +import { CheckGroupCodegen, valueForCheckGroupFromId } from './check-group-codegen.js' +import { EnvironmentVariable } from './environment-variable.js' +import { FrequencyResource, valueForFrequency } from './frequency-codegen.js' +import { HeartbeatMonitorCodegen, HeartbeatMonitorResource } from './heartbeat-monitor-codegen.js' +import { valueForKeyValuePair } from './key-value-pair-codegen.js' +import { MultiStepCheckCodegen, MultiStepCheckResource } from './multi-step-check-codegen.js' +import { RetryStrategyResource, valueForRetryStrategy } from './retry-strategy-codegen.js' +import { TcpMonitorCodegen, TcpMonitorResource } from './tcp-monitor-codegen.js' +import { UrlMonitorCodegen, UrlMonitorResource } from './url-monitor-codegen.js' +import { valueForPrivateLocationFromId } from './private-location-codegen.js' +import { valueForAlertChannelFromId } from './alert-channel-codegen.js' +import { DnsMonitorCodegen, DnsMonitorResource } from './dns-monitor-codegen.js' +import { IcmpMonitorCodegen, IcmpMonitorResource } from './icmp-monitor-codegen.js' export interface CheckResource { id: string diff --git a/packages/cli/src/constructs/check-group-codegen.ts b/packages/cli/src/constructs/check-group-codegen.ts index 81f5857f2..e0ac9e9a4 100644 --- a/packages/cli/src/constructs/check-group-codegen.ts +++ b/packages/cli/src/constructs/check-group-codegen.ts @@ -1,14 +1,14 @@ -import { Codegen, Context, ImportSafetyViolation } from './internal/codegen' -import { decl, expr, GeneratedFile, ident, object, ObjectValueBuilder, Program, Value } from '../sourcegen' -import { AlertEscalationResource, valueForAlertEscalation } from './alert-escalation-policy-codegen' -import { ApiCheckDefaultConfig } from './api-check' -import { valueForAssertion } from './api-assertion-codegen' -import { EnvironmentVariable } from './environment-variable' -import { FrequencyResource, valueForFrequency } from './frequency-codegen' -import { valueForKeyValuePair } from './key-value-pair-codegen' -import { RetryStrategyResource, valueForRetryStrategy } from './retry-strategy-codegen' -import { valueForPrivateLocationFromId } from './private-location-codegen' -import { valueForAlertChannelFromId } from './alert-channel-codegen' +import { Codegen, Context, ImportSafetyViolation } from './internal/codegen/index.js' +import { decl, expr, GeneratedFile, ident, object, ObjectValueBuilder, Program, Value } from '../sourcegen/index.js' +import { AlertEscalationResource, valueForAlertEscalation } from './alert-escalation-policy-codegen.js' +import { ApiCheckDefaultConfig } from './api-check.js' +import { valueForAssertion } from './api-assertion-codegen.js' +import { EnvironmentVariable } from './environment-variable.js' +import { FrequencyResource, valueForFrequency } from './frequency-codegen.js' +import { valueForKeyValuePair } from './key-value-pair-codegen.js' +import { RetryStrategyResource, valueForRetryStrategy } from './retry-strategy-codegen.js' +import { valueForPrivateLocationFromId } from './private-location-codegen.js' +import { valueForAlertChannelFromId } from './alert-channel-codegen.js' export interface BrowserCheckConfigResource { testMatch: string | string[] diff --git a/packages/cli/src/constructs/check-group-ref.ts b/packages/cli/src/constructs/check-group-ref.ts index 094c7ea3c..95ae358fd 100644 --- a/packages/cli/src/constructs/check-group-ref.ts +++ b/packages/cli/src/constructs/check-group-ref.ts @@ -1,9 +1,9 @@ -import { CheckConfigDefaults } from '../services/checkly-config-loader' -import { CheckGroupV1 } from './check-group-v1' -import { Construct } from './construct' -import { Diagnostics } from './diagnostics' -import { validatePhysicalIdIsNumeric } from './internal/common-diagnostics' -import { Session } from './project' +import { CheckConfigDefaults } from '../services/checkly-config-loader.js' +import { CheckGroupV1 } from './check-group-v1.js' +import { Construct } from './construct.js' +import { Diagnostics } from './diagnostics.js' +import { validatePhysicalIdIsNumeric } from './internal/common-diagnostics.js' +import { Session } from './project.js' /** * Creates a reference to an existing Check Group (both v1 and v2). diff --git a/packages/cli/src/constructs/check-group-v1.ts b/packages/cli/src/constructs/check-group-v1.ts index 63e06d3d1..a96fbe3e7 100644 --- a/packages/cli/src/constructs/check-group-v1.ts +++ b/packages/cli/src/constructs/check-group-v1.ts @@ -2,32 +2,32 @@ import path from 'node:path' import { glob } from 'glob' -import { AlertChannel, AlertChannelRef } from './alert-channel' -import { EnvironmentVariable } from './environment-variable' -import { PrivateLocation, PrivateLocationRef } from './private-location' -import { ApiCheckDefaultConfig } from './api-check' -import type { Region } from '..' -import { type Frequency } from './frequency' +import { AlertChannel, AlertChannelRef } from './alert-channel.js' +import { EnvironmentVariable } from './environment-variable.js' +import { PrivateLocation, PrivateLocationRef } from './private-location.js' +import { ApiCheckDefaultConfig } from './api-check.js' +import type { Region } from '../index.js' +import { type Frequency } from './frequency.js' import { // eslint-disable-next-line @typescript-eslint/no-unused-vars type RetryStrategyBuilder, // Used for @links in comments. -} from './retry-strategy' -import { AlertEscalation } from './alert-escalation-policy' -import { Diagnostics } from './diagnostics' -import { DeprecatedConstructDiagnostic, DeprecatedPropertyDiagnostic, InvalidPropertyValueDiagnostic } from './construct-diagnostics' -import { CheckTypes } from '../constants' -import { CheckConfigDefaults } from '../services/checkly-config-loader' -import { AlertChannelSubscription } from './alert-channel-subscription' -import { BrowserCheck } from './browser-check' -import { CheckGroupRef } from './check-group-ref' -import { Construct } from './construct' -import { MultiStepCheck } from './multi-step-check' -import { PrivateLocationGroupAssignment } from './private-location-group-assignment' -import { Ref } from './ref' -import { Session } from './project' -import { validateDeprecatedDoubleCheck } from './internal/common-diagnostics' -import { CheckRetryStrategy } from './check' -import { MonitorRetryStrategy } from './monitor' +} from './retry-strategy.js' +import { AlertEscalation } from './alert-escalation-policy.js' +import { Diagnostics } from './diagnostics.js' +import { DeprecatedConstructDiagnostic, DeprecatedPropertyDiagnostic, InvalidPropertyValueDiagnostic } from './construct-diagnostics.js' +import { CheckTypes } from '../constants.js' +import { CheckConfigDefaults } from '../services/checkly-config-loader.js' +import { AlertChannelSubscription } from './alert-channel-subscription.js' +import { BrowserCheck } from './browser-check.js' +import { CheckGroupRef } from './check-group-ref.js' +import { Construct } from './construct.js' +import { MultiStepCheck } from './multi-step-check.js' +import { PrivateLocationGroupAssignment } from './private-location-group-assignment.js' +import { Ref } from './ref.js' +import { Session } from './project.js' +import { validateDeprecatedDoubleCheck } from './internal/common-diagnostics.js' +import { CheckRetryStrategy } from './check.js' +import { MonitorRetryStrategy } from './monitor.js' const defaultApiCheckDefaults: ApiCheckDefaultConfig = { headers: [], diff --git a/packages/cli/src/constructs/check-group-v2.ts b/packages/cli/src/constructs/check-group-v2.ts index fb02e12ee..4e686c341 100644 --- a/packages/cli/src/constructs/check-group-v2.ts +++ b/packages/cli/src/constructs/check-group-v2.ts @@ -1,17 +1,17 @@ -import { PrivateLocation, PrivateLocationRef } from './private-location' -import type { Region } from '..' +import { PrivateLocation, PrivateLocationRef } from './private-location.js' +import type { Region } from '../index.js' import { // eslint-disable-next-line @typescript-eslint/no-unused-vars type RetryStrategyBuilder, // Used for @links in comments. -} from './retry-strategy' +} from './retry-strategy.js' import { AlertEscalation, // eslint-disable-next-line @typescript-eslint/no-unused-vars type AlertEscalationBuilder, // Used for @links in comments. -} from './alert-escalation-policy' -import { Diagnostics } from './diagnostics' -import { CheckGroupV1, CheckGroupV1Props, GroupRetryStrategy } from './check-group-v1' -import { validateRemovedDoubleCheck } from './internal/common-diagnostics' +} from './alert-escalation-policy.js' +import { Diagnostics } from './diagnostics.js' +import { CheckGroupV1, CheckGroupV1Props, GroupRetryStrategy } from './check-group-v1.js' +import { validateRemovedDoubleCheck } from './internal/common-diagnostics.js' export interface CheckGroupV2Props extends Omit { /** diff --git a/packages/cli/src/constructs/check-group.ts b/packages/cli/src/constructs/check-group.ts index 14dd86a2e..58799ca47 100644 --- a/packages/cli/src/constructs/check-group.ts +++ b/packages/cli/src/constructs/check-group.ts @@ -1,8 +1,8 @@ -export * from './check-group-v1' -export * from './check-group-v2' -export * from './check-group-ref' +export * from './check-group-v1.js' +export * from './check-group-v2.js' +export * from './check-group-ref.js' export { CheckGroupV1 as CheckGroup, CheckGroupV1Props as CheckGroupProps, -} from './check-group-v1' +} from './check-group-v1.js' diff --git a/packages/cli/src/constructs/check.ts b/packages/cli/src/constructs/check.ts index 1909bd047..59cc5d206 100644 --- a/packages/cli/src/constructs/check.ts +++ b/packages/cli/src/constructs/check.ts @@ -1,14 +1,14 @@ -import { Ref } from './ref' -import { Frequency } from './frequency' -import { Construct } from './construct' -import { AlertChannel, AlertChannelRef } from './alert-channel' -import { EnvironmentVariable } from './environment-variable' -import { AlertChannelSubscription } from './alert-channel-subscription' -import { Session } from './project' -import type { Region } from '..' -import type { CheckGroupV1, CheckGroupV2, CheckGroupRef } from './check-group' -import { PrivateLocation, PrivateLocationRef } from './private-location' -import { PrivateLocationCheckAssignment } from './private-location-check-assignment' +import { Ref } from './ref.js' +import { Frequency } from './frequency.js' +import { Construct } from './construct.js' +import { AlertChannel, AlertChannelRef } from './alert-channel.js' +import { EnvironmentVariable } from './environment-variable.js' +import { AlertChannelSubscription } from './alert-channel-subscription.js' +import { Session } from './project.js' +import type { Region } from '../index.js' +import type { CheckGroupV1, CheckGroupV2, CheckGroupRef } from './check-group.js' +import { PrivateLocation, PrivateLocationRef } from './private-location.js' +import { PrivateLocationCheckAssignment } from './private-location-check-assignment.js' import { ExponentialRetryStrategy, FixedRetryStrategy, @@ -16,14 +16,14 @@ import { NoRetriesRetryStrategy, RetryStrategy, SingleRetryRetryStrategy, -} from './retry-strategy' -import { AlertEscalation } from './alert-escalation-policy' -import { IncidentTrigger } from './incident' -import { ConfigDefaultsGetter, makeConfigDefaultsGetter } from './check-config' -import { Diagnostics } from './diagnostics' -import { validateDeprecatedDoubleCheck } from './internal/common-diagnostics' -import { InvalidPropertyValueDiagnostic } from './construct-diagnostics' -import { CheckConfigDefaults } from '../services/checkly-config-loader' +} from './retry-strategy.js' +import { AlertEscalation } from './alert-escalation-policy.js' +import { IncidentTrigger } from './incident.js' +import { ConfigDefaultsGetter, makeConfigDefaultsGetter } from './check-config.js' +import { Diagnostics } from './diagnostics.js' +import { validateDeprecatedDoubleCheck } from './internal/common-diagnostics.js' +import { InvalidPropertyValueDiagnostic } from './construct-diagnostics.js' +import { CheckConfigDefaults } from '../services/checkly-config-loader.js' /** * Retry strategies supported by checks. diff --git a/packages/cli/src/constructs/construct-codegen.ts b/packages/cli/src/constructs/construct-codegen.ts index d003f6494..c7117333c 100644 --- a/packages/cli/src/constructs/construct-codegen.ts +++ b/packages/cli/src/constructs/construct-codegen.ts @@ -1,17 +1,17 @@ -import { Codegen, Context } from './internal/codegen' -import { Program } from '../sourcegen' +import { Codegen, Context } from './internal/codegen/index.js' +import { Program } from '../sourcegen/index.js' -import { AlertChannelCodegen } from './alert-channel-codegen' -import { AlertChannelSubscriptionCodegen } from './alert-channel-subscription-codegen' -import { CheckCodegen } from './check-codegen' -import { CheckGroupCodegen } from './check-group-codegen' -import { DashboardCodegen } from './dashboard-codegen' -import { MaintenanceWindowCodegen } from './maintenance-window-codegen' -import { PrivateLocationCodegen } from './private-location-codegen' -import { PrivateLocationCheckAssignmentCodegen } from './private-location-check-assignment-codegen' -import { PrivateLocationGroupAssignmentCodegen } from './private-location-group-assignment-codegen' -import { StatusPageServiceCodegen } from './status-page-service-codegen' -import { StatusPageCodegen } from './status-page-codegen' +import { AlertChannelCodegen } from './alert-channel-codegen.js' +import { AlertChannelSubscriptionCodegen } from './alert-channel-subscription-codegen.js' +import { CheckCodegen } from './check-codegen.js' +import { CheckGroupCodegen } from './check-group-codegen.js' +import { DashboardCodegen } from './dashboard-codegen.js' +import { MaintenanceWindowCodegen } from './maintenance-window-codegen.js' +import { PrivateLocationCodegen } from './private-location-codegen.js' +import { PrivateLocationCheckAssignmentCodegen } from './private-location-check-assignment-codegen.js' +import { PrivateLocationGroupAssignmentCodegen } from './private-location-group-assignment-codegen.js' +import { StatusPageServiceCodegen } from './status-page-service-codegen.js' +import { StatusPageCodegen } from './status-page-codegen.js' export type ResourceType = 'alert-channel-subscription' diff --git a/packages/cli/src/constructs/construct-diagnostics.ts b/packages/cli/src/constructs/construct-diagnostics.ts index 335cbdd49..136da3d25 100644 --- a/packages/cli/src/constructs/construct-diagnostics.ts +++ b/packages/cli/src/constructs/construct-diagnostics.ts @@ -1,5 +1,5 @@ -import { Construct } from './construct' -import { Diagnostic, Diagnostics, ErrorDiagnostic, WarningDiagnostic } from './diagnostics' +import { Construct } from './construct.js' +import { Diagnostic, Diagnostics, ErrorDiagnostic, WarningDiagnostic } from './diagnostics.js' export class InvalidPropertyValueDiagnostic extends ErrorDiagnostic { property: string diff --git a/packages/cli/src/constructs/construct.ts b/packages/cli/src/constructs/construct.ts index 9def3aa8b..109b0ba59 100644 --- a/packages/cli/src/constructs/construct.ts +++ b/packages/cli/src/constructs/construct.ts @@ -1,11 +1,11 @@ import path from 'node:path' -import { LOGICAL_ID_PATTERN } from '../constants' -import { InvalidPropertyValueDiagnostic } from './construct-diagnostics' -import { Diagnostics } from './diagnostics' -import { Session } from './project' -import { Ref } from './ref' -import { Bundler } from '../services/check-parser/bundler' +import { LOGICAL_ID_PATTERN } from '../constants.js' +import { InvalidPropertyValueDiagnostic } from './construct-diagnostics.js' +import { Diagnostics } from './diagnostics.js' +import { Session } from './project.js' +import { Ref } from './ref.js' +import { Bundler } from '../services/check-parser/bundler.js' /** * Base interface for construct-like objects in the Checkly CLI system. diff --git a/packages/cli/src/constructs/dashboard-bundle.ts b/packages/cli/src/constructs/dashboard-bundle.ts index 7cb1bed67..9c3c5da38 100644 --- a/packages/cli/src/constructs/dashboard-bundle.ts +++ b/packages/cli/src/constructs/dashboard-bundle.ts @@ -1,5 +1,5 @@ -import { Bundle } from './construct' -import { Dashboard } from './dashboard' +import { Bundle } from './construct.js' +import { Dashboard } from './dashboard.js' export interface DashboardBundleProps { customCSS?: string diff --git a/packages/cli/src/constructs/dashboard-codegen.ts b/packages/cli/src/constructs/dashboard-codegen.ts index 1302a1677..5b65bf408 100644 --- a/packages/cli/src/constructs/dashboard-codegen.ts +++ b/packages/cli/src/constructs/dashboard-codegen.ts @@ -1,5 +1,5 @@ -import { Codegen, Context } from './internal/codegen' -import { expr, ident } from '../sourcegen' +import { Codegen, Context } from './internal/codegen/index.js' +import { expr, ident } from '../sourcegen/index.js' export interface DashboardResource { tags?: string[] diff --git a/packages/cli/src/constructs/dashboard.ts b/packages/cli/src/constructs/dashboard.ts index 44842bf21..4568a0477 100644 --- a/packages/cli/src/constructs/dashboard.ts +++ b/packages/cli/src/constructs/dashboard.ts @@ -1,11 +1,11 @@ import fs from 'node:fs/promises' -import { Construct, Content, Entrypoint, isContent, isEntrypoint } from './construct' -import { Session } from './project' -import { Diagnostics } from './diagnostics' -import { InvalidPropertyValueDiagnostic } from './construct-diagnostics' -import { DashboardBundle } from './dashboard-bundle' -import { Bundler } from '../services/check-parser/bundler' +import { Construct, Content, Entrypoint, isContent, isEntrypoint } from './construct.js' +import { Session } from './project.js' +import { Diagnostics } from './diagnostics.js' +import { InvalidPropertyValueDiagnostic } from './construct-diagnostics.js' +import { DashboardBundle } from './dashboard-bundle.js' +import { Bundler } from '../services/check-parser/bundler.js' /** * Configuration properties for dashboards. diff --git a/packages/cli/src/constructs/dns-assertion-codegen.ts b/packages/cli/src/constructs/dns-assertion-codegen.ts index 07c5baaf7..e0f052e9d 100644 --- a/packages/cli/src/constructs/dns-assertion-codegen.ts +++ b/packages/cli/src/constructs/dns-assertion-codegen.ts @@ -1,6 +1,6 @@ -import { GeneratedFile, Value } from '../sourcegen' -import { valueForGeneralAssertion, valueForNumericAssertion } from './internal/assertion-codegen' -import { DnsAssertion } from './dns-assertion' +import { GeneratedFile, Value } from '../sourcegen/index.js' +import { valueForGeneralAssertion, valueForNumericAssertion } from './internal/assertion-codegen.js' +import { DnsAssertion } from './dns-assertion.js' export function valueForDnsAssertion (genfile: GeneratedFile, assertion: DnsAssertion): Value { genfile.namedImport('DnsAssertionBuilder', 'checkly/constructs') diff --git a/packages/cli/src/constructs/dns-assertion.ts b/packages/cli/src/constructs/dns-assertion.ts index ef2d37f63..fff902303 100644 --- a/packages/cli/src/constructs/dns-assertion.ts +++ b/packages/cli/src/constructs/dns-assertion.ts @@ -1,4 +1,4 @@ -import { Assertion as CoreAssertion, NumericAssertionBuilder, GeneralAssertionBuilder } from './internal/assertion' +import { Assertion as CoreAssertion, NumericAssertionBuilder, GeneralAssertionBuilder } from './internal/assertion.js' type DnsAssertionSource = | 'RESPONSE_CODE' diff --git a/packages/cli/src/constructs/dns-monitor-codegen.ts b/packages/cli/src/constructs/dns-monitor-codegen.ts index e6931c82c..753c858a3 100644 --- a/packages/cli/src/constructs/dns-monitor-codegen.ts +++ b/packages/cli/src/constructs/dns-monitor-codegen.ts @@ -1,8 +1,8 @@ -import { Codegen, Context } from './internal/codegen' -import { expr, ident } from '../sourcegen' -import { buildMonitorProps, MonitorResource } from './monitor-codegen' -import { DnsRequest } from './dns-request' -import { valueForDnsRequest } from './dns-request-codegen' +import { Codegen, Context } from './internal/codegen/index.js' +import { expr, ident } from '../sourcegen/index.js' +import { buildMonitorProps, MonitorResource } from './monitor-codegen.js' +import { DnsRequest } from './dns-request.js' +import { valueForDnsRequest } from './dns-request-codegen.js' export interface DnsMonitorResource extends MonitorResource { checkType: 'DNS' diff --git a/packages/cli/src/constructs/dns-monitor.ts b/packages/cli/src/constructs/dns-monitor.ts index dc7e4ab2f..1d9b4dc90 100644 --- a/packages/cli/src/constructs/dns-monitor.ts +++ b/packages/cli/src/constructs/dns-monitor.ts @@ -1,9 +1,9 @@ -import { Monitor, MonitorProps } from './monitor' -import { Session } from './project' -import { Diagnostics } from './diagnostics' -import { validateResponseTimes } from './internal/common-diagnostics' -import { DnsRequest } from './dns-request' -import { RequiredPropertyDiagnostic } from './construct-diagnostics' +import { Monitor, MonitorProps } from './monitor.js' +import { Session } from './project.js' +import { Diagnostics } from './diagnostics.js' +import { validateResponseTimes } from './internal/common-diagnostics.js' +import { DnsRequest } from './dns-request.js' +import { RequiredPropertyDiagnostic } from './construct-diagnostics.js' export interface DnsMonitorProps extends MonitorProps { /** diff --git a/packages/cli/src/constructs/dns-request-codegen.ts b/packages/cli/src/constructs/dns-request-codegen.ts index c293355e2..44aa0e0c3 100644 --- a/packages/cli/src/constructs/dns-request-codegen.ts +++ b/packages/cli/src/constructs/dns-request-codegen.ts @@ -1,7 +1,7 @@ -import { GeneratedFile, object, Program, Value } from '../sourcegen' -import { valueForDnsAssertion } from './dns-assertion-codegen' -import { DnsRequest } from './dns-request' -import { Context } from './internal/codegen' +import { GeneratedFile, object, Program, Value } from '../sourcegen/index.js' +import { valueForDnsAssertion } from './dns-assertion-codegen.js' +import { DnsRequest } from './dns-request.js' +import { Context } from './internal/codegen/index.js' export function valueForDnsRequest ( program: Program, diff --git a/packages/cli/src/constructs/dns-request.ts b/packages/cli/src/constructs/dns-request.ts index 3a933f5da..061f7a2b4 100644 --- a/packages/cli/src/constructs/dns-request.ts +++ b/packages/cli/src/constructs/dns-request.ts @@ -1,4 +1,4 @@ -import { DnsAssertion } from './dns-assertion' +import { DnsAssertion } from './dns-assertion.js' export type DnsRecordType = | 'A' diff --git a/packages/cli/src/constructs/email-alert-channel-codegen.ts b/packages/cli/src/constructs/email-alert-channel-codegen.ts index c344a145a..548cb54d4 100644 --- a/packages/cli/src/constructs/email-alert-channel-codegen.ts +++ b/packages/cli/src/constructs/email-alert-channel-codegen.ts @@ -1,6 +1,6 @@ -import { Codegen, Context } from './internal/codegen' -import { decl, expr, ident } from '../sourcegen' -import { buildAlertChannelProps, AlertChannelResource } from './alert-channel-codegen' +import { Codegen, Context } from './internal/codegen/index.js' +import { decl, expr, ident } from '../sourcegen/index.js' +import { buildAlertChannelProps, AlertChannelResource } from './alert-channel-codegen.js' export interface EmailAlertChannelResource extends AlertChannelResource { type: 'EMAIL' diff --git a/packages/cli/src/constructs/email-alert-channel.ts b/packages/cli/src/constructs/email-alert-channel.ts index 39ca6b0c3..522798984 100644 --- a/packages/cli/src/constructs/email-alert-channel.ts +++ b/packages/cli/src/constructs/email-alert-channel.ts @@ -1,5 +1,5 @@ -import { AlertChannel, AlertChannelProps } from './alert-channel' -import { Session } from './project' +import { AlertChannel, AlertChannelProps } from './alert-channel.js' +import { Session } from './project.js' export interface EmailAlertChannelProps extends AlertChannelProps { /** diff --git a/packages/cli/src/constructs/environment-variable.ts b/packages/cli/src/constructs/environment-variable.ts index ffb170722..d05153e93 100644 --- a/packages/cli/src/constructs/environment-variable.ts +++ b/packages/cli/src/constructs/environment-variable.ts @@ -1,4 +1,4 @@ -import KeyValuePair from './key-value-pair' +import KeyValuePair from './key-value-pair.js' /** * Represents an environment variable for checks. diff --git a/packages/cli/src/constructs/frequency-codegen.ts b/packages/cli/src/constructs/frequency-codegen.ts index 963612c8c..a0b42536c 100644 --- a/packages/cli/src/constructs/frequency-codegen.ts +++ b/packages/cli/src/constructs/frequency-codegen.ts @@ -1,5 +1,5 @@ -import { expr, GeneratedFile, ident, Value } from '../sourcegen' -import { Frequency } from './frequency' +import { expr, GeneratedFile, ident, Value } from '../sourcegen/index.js' +import { Frequency } from './frequency.js' interface FrequencyLike { frequency: number diff --git a/packages/cli/src/constructs/heartbeat-monitor-codegen.ts b/packages/cli/src/constructs/heartbeat-monitor-codegen.ts index fb534d950..1ec6ee29a 100644 --- a/packages/cli/src/constructs/heartbeat-monitor-codegen.ts +++ b/packages/cli/src/constructs/heartbeat-monitor-codegen.ts @@ -1,7 +1,7 @@ -import { Codegen, Context } from './internal/codegen' -import { expr, ident } from '../sourcegen' -import { buildMonitorProps, MonitorResource } from './monitor-codegen' -import { Heartbeat } from './heartbeat-monitor' +import { Codegen, Context } from './internal/codegen/index.js' +import { expr, ident } from '../sourcegen/index.js' +import { buildMonitorProps, MonitorResource } from './monitor-codegen.js' +import { Heartbeat } from './heartbeat-monitor.js' export interface HeartbeatMonitorResource extends MonitorResource { checkType: 'HEARTBEAT' diff --git a/packages/cli/src/constructs/heartbeat-monitor.ts b/packages/cli/src/constructs/heartbeat-monitor.ts index 08b8c0f9a..8477c7f5d 100644 --- a/packages/cli/src/constructs/heartbeat-monitor.ts +++ b/packages/cli/src/constructs/heartbeat-monitor.ts @@ -1,7 +1,7 @@ -import { Monitor, MonitorProps } from './monitor' -import { Session } from './project' +import { Monitor, MonitorProps } from './monitor.js' +import { Session } from './project.js' import { DateTime } from 'luxon' -import { CheckTypes } from '../constants' +import { CheckTypes } from '../constants.js' type TimeUnits = 'seconds' | 'minutes' | 'hours' | 'days' diff --git a/packages/cli/src/constructs/http-header.ts b/packages/cli/src/constructs/http-header.ts index 41b81ed36..e15b5a6eb 100644 --- a/packages/cli/src/constructs/http-header.ts +++ b/packages/cli/src/constructs/http-header.ts @@ -1,4 +1,4 @@ -import KeyValuePair from './key-value-pair' +import KeyValuePair from './key-value-pair.js' /** * Represents an HTTP header for API checks. diff --git a/packages/cli/src/constructs/icmp-assertion-codegen.ts b/packages/cli/src/constructs/icmp-assertion-codegen.ts index 3e9e4495b..9605c7b7a 100644 --- a/packages/cli/src/constructs/icmp-assertion-codegen.ts +++ b/packages/cli/src/constructs/icmp-assertion-codegen.ts @@ -1,6 +1,6 @@ -import { GeneratedFile, Value } from '../sourcegen' -import { valueForGeneralAssertion, valueForNumericAssertion } from './internal/assertion-codegen' -import { IcmpAssertion } from './icmp-assertion' +import { GeneratedFile, Value } from '../sourcegen/index.js' +import { valueForGeneralAssertion, valueForNumericAssertion } from './internal/assertion-codegen.js' +import { IcmpAssertion } from './icmp-assertion.js' export function valueForIcmpAssertion (genfile: GeneratedFile, assertion: IcmpAssertion): Value { genfile.namedImport('IcmpAssertionBuilder', 'checkly/constructs') diff --git a/packages/cli/src/constructs/icmp-assertion.ts b/packages/cli/src/constructs/icmp-assertion.ts index d5a417673..31dc0fd08 100644 --- a/packages/cli/src/constructs/icmp-assertion.ts +++ b/packages/cli/src/constructs/icmp-assertion.ts @@ -1,4 +1,4 @@ -import { Assertion as CoreAssertion, NumericAssertionBuilder, GeneralAssertionBuilder } from './internal/assertion' +import { Assertion as CoreAssertion, NumericAssertionBuilder, GeneralAssertionBuilder } from './internal/assertion.js' type IcmpAssertionSource = | 'LATENCY' diff --git a/packages/cli/src/constructs/icmp-monitor-codegen.ts b/packages/cli/src/constructs/icmp-monitor-codegen.ts index 85e4f4f35..e44c6e3df 100644 --- a/packages/cli/src/constructs/icmp-monitor-codegen.ts +++ b/packages/cli/src/constructs/icmp-monitor-codegen.ts @@ -1,8 +1,8 @@ -import { Codegen, Context } from './internal/codegen' -import { expr, ident } from '../sourcegen' -import { buildMonitorProps, MonitorResource } from './monitor-codegen' -import { IcmpRequest } from './icmp-request' -import { valueForIcmpRequest } from './icmp-request-codegen' +import { Codegen, Context } from './internal/codegen/index.js' +import { expr, ident } from '../sourcegen/index.js' +import { buildMonitorProps, MonitorResource } from './monitor-codegen.js' +import { IcmpRequest } from './icmp-request.js' +import { valueForIcmpRequest } from './icmp-request-codegen.js' export interface IcmpMonitorResource extends MonitorResource { checkType: 'ICMP' diff --git a/packages/cli/src/constructs/icmp-monitor.ts b/packages/cli/src/constructs/icmp-monitor.ts index 34850c104..e04a13ad9 100644 --- a/packages/cli/src/constructs/icmp-monitor.ts +++ b/packages/cli/src/constructs/icmp-monitor.ts @@ -1,7 +1,7 @@ -import { Monitor, MonitorProps } from './monitor' -import { Session } from './project' -import { Diagnostics } from './diagnostics' -import { IcmpRequest } from './icmp-request' +import { Monitor, MonitorProps } from './monitor.js' +import { Session } from './project.js' +import { Diagnostics } from './diagnostics.js' +import { IcmpRequest } from './icmp-request.js' export interface IcmpMonitorProps extends MonitorProps { /** diff --git a/packages/cli/src/constructs/icmp-request-codegen.ts b/packages/cli/src/constructs/icmp-request-codegen.ts index bb616b437..daeb713ff 100644 --- a/packages/cli/src/constructs/icmp-request-codegen.ts +++ b/packages/cli/src/constructs/icmp-request-codegen.ts @@ -1,7 +1,7 @@ -import { GeneratedFile, object, Program, Value } from '../sourcegen' -import { valueForIcmpAssertion } from './icmp-assertion-codegen' -import { IcmpRequest } from './icmp-request' -import { Context } from './internal/codegen' +import { GeneratedFile, object, Program, Value } from '../sourcegen/index.js' +import { valueForIcmpAssertion } from './icmp-assertion-codegen.js' +import { IcmpRequest } from './icmp-request.js' +import { Context } from './internal/codegen/index.js' export function valueForIcmpRequest ( program: Program, diff --git a/packages/cli/src/constructs/icmp-request.ts b/packages/cli/src/constructs/icmp-request.ts index 21fad4647..c7e83f106 100644 --- a/packages/cli/src/constructs/icmp-request.ts +++ b/packages/cli/src/constructs/icmp-request.ts @@ -1,5 +1,5 @@ -import { IcmpAssertion } from './icmp-assertion' -import { IPFamily } from './ip' +import { IcmpAssertion } from './icmp-assertion.js' +import { IPFamily } from './ip.js' /** * Configuration for ICMP ping requests. diff --git a/packages/cli/src/constructs/incident.ts b/packages/cli/src/constructs/incident.ts index a386cbed9..b3903f405 100644 --- a/packages/cli/src/constructs/incident.ts +++ b/packages/cli/src/constructs/incident.ts @@ -1,4 +1,4 @@ -import { StatusPageService } from './status-page-service' +import { StatusPageService } from './status-page-service.js' type IncidentSeverity = 'MINOR' | 'MEDIUM' | 'MAJOR' | 'CRITICAL' diff --git a/packages/cli/src/constructs/incidentio-alert-channel-codegen.ts b/packages/cli/src/constructs/incidentio-alert-channel-codegen.ts index cdda1e443..d8e52dcae 100644 --- a/packages/cli/src/constructs/incidentio-alert-channel-codegen.ts +++ b/packages/cli/src/constructs/incidentio-alert-channel-codegen.ts @@ -1,9 +1,9 @@ -import { Codegen, Context, ImportSafetyViolation } from './internal/codegen' -import { decl, expr, ident } from '../sourcegen' -import { buildAlertChannelProps } from './alert-channel-codegen' -import { HttpHeader } from './http-header' -import { WebhookAlertChannelResource, WebhookAlertChannelResourceConfig } from './webhook-alert-channel-codegen' -import { IncidentioAlertChannel } from './incidentio-alert-channel' +import { Codegen, Context, ImportSafetyViolation } from './internal/codegen/index.js' +import { decl, expr, ident } from '../sourcegen/index.js' +import { buildAlertChannelProps } from './alert-channel-codegen.js' +import { HttpHeader } from './http-header.js' +import { WebhookAlertChannelResource, WebhookAlertChannelResourceConfig } from './webhook-alert-channel-codegen.js' +import { IncidentioAlertChannel } from './incidentio-alert-channel.js' export interface IncidentioAlertChannelResource extends WebhookAlertChannelResource { config: WebhookAlertChannelResourceConfig & { diff --git a/packages/cli/src/constructs/incidentio-alert-channel.ts b/packages/cli/src/constructs/incidentio-alert-channel.ts index d83d39ebc..1d397c84d 100644 --- a/packages/cli/src/constructs/incidentio-alert-channel.ts +++ b/packages/cli/src/constructs/incidentio-alert-channel.ts @@ -1,5 +1,5 @@ -import { WebhookAlertChannel } from './webhook-alert-channel' -import { AlertChannelProps } from './alert-channel' +import { WebhookAlertChannel } from './webhook-alert-channel.js' +import { AlertChannelProps } from './alert-channel.js' export interface IncidentioAlertChannelProps extends AlertChannelProps { /** diff --git a/packages/cli/src/constructs/index.ts b/packages/cli/src/constructs/index.ts index e2bee57f9..0e3974c7c 100644 --- a/packages/cli/src/constructs/index.ts +++ b/packages/cli/src/constructs/index.ts @@ -1,51 +1,51 @@ -export * from './project' -export * from './sms-alert-channel' -export * from './email-alert-channel' -export * from './slack-alert-channel' -export * from './opsgenie-alert-channel' -export * from './pagerduty-alert-channel' -export * from './webhook-alert-channel' -export * from './api-check' -export * from './api-assertion' -export * from './api-request' -export * from './browser-check' -export * from './heartbeat-monitor' -export * from './check-group' -export * from './alert-channel-subscription' -export * from './environment-variable' -export * from './http-header' -export * from './http-request' -export * from './query-param' -export * from './frequency' -export * from './maintenance-window' -export * from './alert-channel' -export * from './private-location' -export * from './private-location-check-assignment' -export * from './private-location-group-assignment' -export * from './check' -export * from './dashboard' -export * from './phone-call-alert-channel' -export * from './retry-strategy' -export * from './multi-step-check' -export * from './alert-escalation-policy' -export * from './tcp-monitor' -export * from './incidentio-alert-channel' -export * from './msteams-alert-channel' -export * from './telegram-alert-channel' -export * from './status-page' -export * from './status-page-service' -export * from './incident' -export * from './playwright-check' -export * from './diagnostics' -export * from './monitor' -export * from './url-monitor' -export * from './url-assertion' -export * from './url-request' -export * from './ip' -export * from './dns-monitor' -export * from './dns-assertion' -export * from './dns-request' -export * from './icmp-monitor' -export * from './icmp-assertion' -export * from './icmp-request' -export * from './agentic-check' +export * from './project.js' +export * from './sms-alert-channel.js' +export * from './email-alert-channel.js' +export * from './slack-alert-channel.js' +export * from './opsgenie-alert-channel.js' +export * from './pagerduty-alert-channel.js' +export * from './webhook-alert-channel.js' +export * from './api-check.js' +export * from './api-assertion.js' +export * from './api-request.js' +export * from './browser-check.js' +export * from './heartbeat-monitor.js' +export * from './check-group.js' +export * from './alert-channel-subscription.js' +export * from './environment-variable.js' +export * from './http-header.js' +export * from './http-request.js' +export * from './query-param.js' +export * from './frequency.js' +export * from './maintenance-window.js' +export * from './alert-channel.js' +export * from './private-location.js' +export * from './private-location-check-assignment.js' +export * from './private-location-group-assignment.js' +export * from './check.js' +export * from './dashboard.js' +export * from './phone-call-alert-channel.js' +export * from './retry-strategy.js' +export * from './multi-step-check.js' +export * from './alert-escalation-policy.js' +export * from './tcp-monitor.js' +export * from './incidentio-alert-channel.js' +export * from './msteams-alert-channel.js' +export * from './telegram-alert-channel.js' +export * from './status-page.js' +export * from './status-page-service.js' +export * from './incident.js' +export * from './playwright-check.js' +export * from './diagnostics.js' +export * from './monitor.js' +export * from './url-monitor.js' +export * from './url-assertion.js' +export * from './url-request.js' +export * from './ip.js' +export * from './dns-monitor.js' +export * from './dns-assertion.js' +export * from './dns-request.js' +export * from './icmp-monitor.js' +export * from './icmp-assertion.js' +export * from './icmp-request.js' +export * from './agentic-check.js' diff --git a/packages/cli/src/constructs/internal/assertion-codegen.ts b/packages/cli/src/constructs/internal/assertion-codegen.ts index 0d6170334..cfd152ccf 100644 --- a/packages/cli/src/constructs/internal/assertion-codegen.ts +++ b/packages/cli/src/constructs/internal/assertion-codegen.ts @@ -1,5 +1,5 @@ -import { expr, ident, Value } from '../../sourcegen' -import { Assertion } from './assertion' +import { expr, ident, Value } from '../../sourcegen/index.js' +import { Assertion } from './assertion.js' export interface ValueForNumericAssertionOptions { hasProperty?: boolean diff --git a/packages/cli/src/constructs/internal/codegen/codegen.ts b/packages/cli/src/constructs/internal/codegen/codegen.ts index ad6fa327d..5ef2ed05c 100644 --- a/packages/cli/src/constructs/internal/codegen/codegen.ts +++ b/packages/cli/src/constructs/internal/codegen/codegen.ts @@ -1,5 +1,5 @@ -import { Program } from '../../../sourcegen' -import { Context } from './context' +import { Program } from '../../../sourcegen/index.js' +import { Context } from './context.js' export abstract class Codegen { program: Program diff --git a/packages/cli/src/constructs/internal/codegen/context.ts b/packages/cli/src/constructs/internal/codegen/context.ts index d76b3dd17..87f3d0967 100644 --- a/packages/cli/src/constructs/internal/codegen/context.ts +++ b/packages/cli/src/constructs/internal/codegen/context.ts @@ -1,9 +1,9 @@ import path, { dirname } from 'node:path' -import { CaseFormat, GeneratedFile, IdentifierValue, cased } from '../../../sourcegen' -import { ProgramFile } from '../../../sourcegen/program' -import { parseSnippetDependencies } from './snippet' -import { ConstructExport } from '../../project' +import { CaseFormat, GeneratedFile, IdentifierValue, cased } from '../../../sourcegen/index.js' +import { ProgramFile } from '../../../sourcegen/program.js' +import { parseSnippetDependencies } from './snippet.js' +import { ConstructExport } from '../../project.js' export class MissingContextVariableMappingError extends Error {} diff --git a/packages/cli/src/constructs/internal/codegen/index.ts b/packages/cli/src/constructs/internal/codegen/index.ts index 32fa46342..4200d6499 100644 --- a/packages/cli/src/constructs/internal/codegen/index.ts +++ b/packages/cli/src/constructs/internal/codegen/index.ts @@ -1,4 +1,4 @@ -export { Codegen } from './codegen' -export { Context, MissingContextVariableMappingError } from './context' -export { ImportSafetyViolation } from './safety' -export { validateScript } from './snippet' +export { Codegen } from './codegen.js' +export { Context, MissingContextVariableMappingError } from './context.js' +export { ImportSafetyViolation } from './safety.js' +export { validateScript } from './snippet.js' diff --git a/packages/cli/src/constructs/internal/codegen/snippet.ts b/packages/cli/src/constructs/internal/codegen/snippet.ts index a875a9840..a5f0d5a7e 100644 --- a/packages/cli/src/constructs/internal/codegen/snippet.ts +++ b/packages/cli/src/constructs/internal/codegen/snippet.ts @@ -1,4 +1,4 @@ -import { Parser } from '../../../services/check-parser/parser' +import { Parser } from '../../../services/check-parser/parser.js' export class UnsupportedScriptError extends Error {} diff --git a/packages/cli/src/constructs/internal/common-diagnostics.ts b/packages/cli/src/constructs/internal/common-diagnostics.ts index 8bc0723ab..b2f9bc99f 100644 --- a/packages/cli/src/constructs/internal/common-diagnostics.ts +++ b/packages/cli/src/constructs/internal/common-diagnostics.ts @@ -5,9 +5,9 @@ import { InvalidPropertyValueDiagnostic, RemovedPropertyDiagnostic, UnsupportedPropertyDiagnostic, -} from '../construct-diagnostics' -import { Diagnostics, Diagnostic } from '../diagnostics' -import { RetryStrategy } from '../retry-strategy' +} from '../construct-diagnostics.js' +import { Diagnostics, Diagnostic } from '../diagnostics.js' +import { RetryStrategy } from '../retry-strategy.js' type RetryStrategyProps = { doubleCheck?: boolean diff --git a/packages/cli/src/constructs/internal/sanitize.ts b/packages/cli/src/constructs/internal/sanitize.ts new file mode 100644 index 000000000..642a6a785 --- /dev/null +++ b/packages/cli/src/constructs/internal/sanitize.ts @@ -0,0 +1,36 @@ +/** + * Sanitizes a value that may be a number or a numeric string. + * + * If `value` is a `number`, it is returned as-is. + * + * If `value` is a numeric `string`, it is converted into a number before + * being returned. + * + * Is `value` is of any other type, or a non-numeric string, it is returned + * as-is so that it can be validated separately. + * + * @param value The number or numeric string. + * @returns + */ +export function sanitizeNumericString (value: number | string): number | string { + switch (typeof value) { + case 'string': { + if (value === '') { + return value + } + const n = Number(value) + if (isInteger(n)) { + return n + } + return value + } + case 'number': + return value + default: + return value + } +} + +function isInteger (n: number): boolean { + return Number.isFinite(n) && Math.floor(n) === n +} diff --git a/packages/cli/src/constructs/key-value-pair-codegen.ts b/packages/cli/src/constructs/key-value-pair-codegen.ts index 67b1fe5de..590af81bc 100644 --- a/packages/cli/src/constructs/key-value-pair-codegen.ts +++ b/packages/cli/src/constructs/key-value-pair-codegen.ts @@ -1,6 +1,6 @@ -import { decl, expr, GeneratedFile, ident, object, Program, Value } from '../sourcegen' -import { Context } from './internal/codegen' -import KeyValuePair from './key-value-pair' +import { decl, expr, GeneratedFile, ident, object, Program, Value } from '../sourcegen/index.js' +import { Context } from './internal/codegen/index.js' +import KeyValuePair from './key-value-pair.js' export function valueForKeyValuePair ( program: Program, diff --git a/packages/cli/src/constructs/maintenance-window-codegen.ts b/packages/cli/src/constructs/maintenance-window-codegen.ts index 848ae8212..a79d38ff1 100644 --- a/packages/cli/src/constructs/maintenance-window-codegen.ts +++ b/packages/cli/src/constructs/maintenance-window-codegen.ts @@ -1,5 +1,5 @@ -import { Codegen, Context } from './internal/codegen' -import { expr, ident } from '../sourcegen' +import { Codegen, Context } from './internal/codegen/index.js' +import { expr, ident } from '../sourcegen/index.js' export interface MaintenanceWindowResource { name: string diff --git a/packages/cli/src/constructs/maintenance-window.ts b/packages/cli/src/constructs/maintenance-window.ts index 03abf37e0..941328d98 100644 --- a/packages/cli/src/constructs/maintenance-window.ts +++ b/packages/cli/src/constructs/maintenance-window.ts @@ -1,5 +1,5 @@ -import { Construct } from './construct' -import { Session } from './project' +import { Construct } from './construct.js' +import { Session } from './project.js' export type MaintenanceWindowRepeatUnit = 'DAY' | 'WEEK' | 'MONTH' diff --git a/packages/cli/src/constructs/monitor-codegen.ts b/packages/cli/src/constructs/monitor-codegen.ts index 81b32ab6e..8aa5b2dcc 100644 --- a/packages/cli/src/constructs/monitor-codegen.ts +++ b/packages/cli/src/constructs/monitor-codegen.ts @@ -1,4 +1,4 @@ export { buildCheckProps as buildMonitorProps, CheckResource as MonitorResource, -} from './check-codegen' +} from './check-codegen.js' diff --git a/packages/cli/src/constructs/monitor.ts b/packages/cli/src/constructs/monitor.ts index 83f809cf3..ea10d9ec1 100644 --- a/packages/cli/src/constructs/monitor.ts +++ b/packages/cli/src/constructs/monitor.ts @@ -1,22 +1,22 @@ -import { Region } from '..' -import { AlertChannel, AlertChannelRef } from './alert-channel' -import { AlertEscalation } from './alert-escalation-policy' -import { CheckGroupRef } from './check-group-ref' -import { CheckGroupV1 } from './check-group-v1' -import { CheckGroupV2 } from './check-group-v2' -import { Frequency } from './frequency' -import { IncidentTrigger } from './incident' -import { PrivateLocation, PrivateLocationRef } from './private-location' +import { Region } from '../index.js' +import { AlertChannel, AlertChannelRef } from './alert-channel.js' +import { AlertEscalation } from './alert-escalation-policy.js' +import { CheckGroupRef } from './check-group-ref.js' +import { CheckGroupV1 } from './check-group-v1.js' +import { CheckGroupV2 } from './check-group-v2.js' +import { Frequency } from './frequency.js' +import { IncidentTrigger } from './incident.js' +import { PrivateLocation, PrivateLocationRef } from './private-location.js' import { ExponentialRetryStrategy, FixedRetryStrategy, LinearRetryStrategy, NoRetriesRetryStrategy, SingleRetryRetryStrategy, -} from './retry-strategy' -import { Check, CheckProps } from './check' -import { Diagnostics } from './diagnostics' -import { validateUnsupportedDoubleCheck } from './internal/common-diagnostics' +} from './retry-strategy.js' +import { Check, CheckProps } from './check.js' +import { Diagnostics } from './diagnostics.js' +import { validateUnsupportedDoubleCheck } from './internal/common-diagnostics.js' /** * Retry strategies supported by monitors. diff --git a/packages/cli/src/constructs/msteams-alert-channel-codegen.ts b/packages/cli/src/constructs/msteams-alert-channel-codegen.ts index f60cbfe32..642565300 100644 --- a/packages/cli/src/constructs/msteams-alert-channel-codegen.ts +++ b/packages/cli/src/constructs/msteams-alert-channel-codegen.ts @@ -1,8 +1,8 @@ -import { Codegen, Context, ImportSafetyViolation } from './internal/codegen' -import { decl, expr, ident } from '../sourcegen' -import { buildAlertChannelProps } from './alert-channel-codegen' -import { WebhookAlertChannelResource, WebhookAlertChannelResourceConfig } from './webhook-alert-channel-codegen' -import { MSTeamsAlertChannel } from './msteams-alert-channel' +import { Codegen, Context, ImportSafetyViolation } from './internal/codegen/index.js' +import { decl, expr, ident } from '../sourcegen/index.js' +import { buildAlertChannelProps } from './alert-channel-codegen.js' +import { WebhookAlertChannelResource, WebhookAlertChannelResourceConfig } from './webhook-alert-channel-codegen.js' +import { MSTeamsAlertChannel } from './msteams-alert-channel.js' export interface MSTeamsAlertChannelResource extends WebhookAlertChannelResource { config: WebhookAlertChannelResourceConfig & { diff --git a/packages/cli/src/constructs/msteams-alert-channel.ts b/packages/cli/src/constructs/msteams-alert-channel.ts index b70b0ca9a..b3c5d124d 100644 --- a/packages/cli/src/constructs/msteams-alert-channel.ts +++ b/packages/cli/src/constructs/msteams-alert-channel.ts @@ -1,5 +1,5 @@ -import { WebhookAlertChannel } from './webhook-alert-channel' -import { AlertChannelProps } from './alert-channel' +import { WebhookAlertChannel } from './webhook-alert-channel.js' +import { AlertChannelProps } from './alert-channel.js' export interface MSTeamsAlertChannelProps extends AlertChannelProps { /** diff --git a/packages/cli/src/constructs/multi-step-check-bundle.ts b/packages/cli/src/constructs/multi-step-check-bundle.ts index 2ce5722c7..93b51642c 100644 --- a/packages/cli/src/constructs/multi-step-check-bundle.ts +++ b/packages/cli/src/constructs/multi-step-check-bundle.ts @@ -1,6 +1,6 @@ -import { Bundle } from './construct' -import { MultiStepCheck } from './multi-step-check' -import { SharedFileRef } from './project' +import { Bundle } from './construct.js' +import { MultiStepCheck } from './multi-step-check.js' +import { SharedFileRef } from './project.js' export interface MultiStepCheckBundleProps { script: string diff --git a/packages/cli/src/constructs/multi-step-check-codegen.ts b/packages/cli/src/constructs/multi-step-check-codegen.ts index 533d65e6d..1f9ba4e24 100644 --- a/packages/cli/src/constructs/multi-step-check-codegen.ts +++ b/packages/cli/src/constructs/multi-step-check-codegen.ts @@ -1,7 +1,7 @@ -import { expr, ident } from '../sourcegen' -import { PlaywrightConfigResource, valueForPlaywrightConfig } from './playwright-config-codegen' -import { buildRuntimeCheckProps, RuntimeCheckResource } from './check-codegen' -import { Codegen, Context } from './internal/codegen' +import { expr, ident } from '../sourcegen/index.js' +import { PlaywrightConfigResource, valueForPlaywrightConfig } from './playwright-config-codegen.js' +import { buildRuntimeCheckProps, RuntimeCheckResource } from './check-codegen.js' +import { Codegen, Context } from './internal/codegen/index.js' export interface MultiStepCheckResource extends RuntimeCheckResource { checkType: 'MULTI_STEP' diff --git a/packages/cli/src/constructs/multi-step-check.ts b/packages/cli/src/constructs/multi-step-check.ts index 7a8eba08e..3760a6fed 100644 --- a/packages/cli/src/constructs/multi-step-check.ts +++ b/packages/cli/src/constructs/multi-step-check.ts @@ -1,16 +1,16 @@ import fs from 'node:fs/promises' -import { CheckProps, RuntimeCheck, RuntimeCheckProps } from './check' -import { Session, SharedFileRef } from './project' -import { Content, Entrypoint, isContent, isEntrypoint } from './construct' -import { CheckTypes } from '../constants' -import { PlaywrightConfig } from './playwright-config' -import { Diagnostics } from './diagnostics' -import { InvalidPropertyValueDiagnostic, UnsupportedRuntimeFeatureDiagnostic } from './construct-diagnostics' -import { MultiStepCheckBundle } from './multi-step-check-bundle' -import { ConfigDefaultsGetter, makeConfigDefaultsGetter } from './check-config' -import { CheckConfigDefaults } from '../services/checkly-config-loader' -import { Bundler } from '../services/check-parser/bundler' +import { CheckProps, RuntimeCheck, RuntimeCheckProps } from './check.js' +import { Session, SharedFileRef } from './project.js' +import { Content, Entrypoint, isContent, isEntrypoint } from './construct.js' +import { CheckTypes } from '../constants.js' +import { PlaywrightConfig } from './playwright-config.js' +import { Diagnostics } from './diagnostics.js' +import { InvalidPropertyValueDiagnostic, UnsupportedRuntimeFeatureDiagnostic } from './construct-diagnostics.js' +import { MultiStepCheckBundle } from './multi-step-check-bundle.js' +import { ConfigDefaultsGetter, makeConfigDefaultsGetter } from './check-config.js' +import { CheckConfigDefaults } from '../services/checkly-config-loader.js' +import { Bundler } from '../services/check-parser/bundler.js' export interface MultiStepCheckProps extends RuntimeCheckProps { /** diff --git a/packages/cli/src/constructs/opsgenie-alert-channel-codegen.ts b/packages/cli/src/constructs/opsgenie-alert-channel-codegen.ts index 2863eadee..be901c490 100644 --- a/packages/cli/src/constructs/opsgenie-alert-channel-codegen.ts +++ b/packages/cli/src/constructs/opsgenie-alert-channel-codegen.ts @@ -1,6 +1,6 @@ -import { Codegen, Context } from './internal/codegen' -import { decl, expr, ident } from '../sourcegen' -import { buildAlertChannelProps, AlertChannelResource } from './alert-channel-codegen' +import { Codegen, Context } from './internal/codegen/index.js' +import { decl, expr, ident } from '../sourcegen/index.js' +import { buildAlertChannelProps, AlertChannelResource } from './alert-channel-codegen.js' export interface OpsgenieAlertChannelResource extends AlertChannelResource { type: 'OPSGENIE' diff --git a/packages/cli/src/constructs/opsgenie-alert-channel.ts b/packages/cli/src/constructs/opsgenie-alert-channel.ts index 08e59f15d..acd4ca47c 100644 --- a/packages/cli/src/constructs/opsgenie-alert-channel.ts +++ b/packages/cli/src/constructs/opsgenie-alert-channel.ts @@ -1,5 +1,5 @@ -import { AlertChannel, AlertChannelProps } from './alert-channel' -import { Session } from './project' +import { AlertChannel, AlertChannelProps } from './alert-channel.js' +import { Session } from './project.js' export type OpsgeniePriority = 'P1' | 'P2' | 'P3' | 'P4' | 'P5' diff --git a/packages/cli/src/constructs/pagerduty-alert-channel-codegen.ts b/packages/cli/src/constructs/pagerduty-alert-channel-codegen.ts index ccf4d1212..434bc630d 100644 --- a/packages/cli/src/constructs/pagerduty-alert-channel-codegen.ts +++ b/packages/cli/src/constructs/pagerduty-alert-channel-codegen.ts @@ -1,6 +1,6 @@ -import { Codegen, Context } from './internal/codegen' -import { decl, expr, ident } from '../sourcegen' -import { buildAlertChannelProps, AlertChannelResource } from './alert-channel-codegen' +import { Codegen, Context } from './internal/codegen/index.js' +import { decl, expr, ident } from '../sourcegen/index.js' +import { buildAlertChannelProps, AlertChannelResource } from './alert-channel-codegen.js' export interface PagerdutyAlertChannelResource extends AlertChannelResource { type: 'PAGERDUTY' diff --git a/packages/cli/src/constructs/pagerduty-alert-channel.ts b/packages/cli/src/constructs/pagerduty-alert-channel.ts index df0ed6f18..18edb7803 100644 --- a/packages/cli/src/constructs/pagerduty-alert-channel.ts +++ b/packages/cli/src/constructs/pagerduty-alert-channel.ts @@ -1,5 +1,5 @@ -import { AlertChannel, AlertChannelProps } from './alert-channel' -import { Session } from './project' +import { AlertChannel, AlertChannelProps } from './alert-channel.js' +import { Session } from './project.js' export interface PagerdutyAlertChannelProps extends AlertChannelProps { /** diff --git a/packages/cli/src/constructs/phone-call-alert-channel-codegen.ts b/packages/cli/src/constructs/phone-call-alert-channel-codegen.ts index 6caabaeb6..c46995ed7 100644 --- a/packages/cli/src/constructs/phone-call-alert-channel-codegen.ts +++ b/packages/cli/src/constructs/phone-call-alert-channel-codegen.ts @@ -1,6 +1,6 @@ -import { Codegen, Context } from './internal/codegen' -import { decl, expr, ident } from '../sourcegen' -import { buildAlertChannelProps, AlertChannelResource } from './alert-channel-codegen' +import { Codegen, Context } from './internal/codegen/index.js' +import { decl, expr, ident } from '../sourcegen/index.js' +import { buildAlertChannelProps, AlertChannelResource } from './alert-channel-codegen.js' export interface PhoneCallAlertChannelResource extends AlertChannelResource { type: 'CALL' diff --git a/packages/cli/src/constructs/phone-call-alert-channel.ts b/packages/cli/src/constructs/phone-call-alert-channel.ts index 1b005a05d..4cc7a4f28 100644 --- a/packages/cli/src/constructs/phone-call-alert-channel.ts +++ b/packages/cli/src/constructs/phone-call-alert-channel.ts @@ -1,5 +1,5 @@ -import { AlertChannel, AlertChannelProps } from './alert-channel' -import { Session } from './project' +import { AlertChannel, AlertChannelProps } from './alert-channel.js' +import { Session } from './project.js' export interface PhoneCallAlertChannelProps extends AlertChannelProps { /** diff --git a/packages/cli/src/constructs/playwright-check-bundle.ts b/packages/cli/src/constructs/playwright-check-bundle.ts index 122d4c195..521f887f6 100644 --- a/packages/cli/src/constructs/playwright-check-bundle.ts +++ b/packages/cli/src/constructs/playwright-check-bundle.ts @@ -1,7 +1,7 @@ -import { Bundle } from './construct' -import { BundlePathMarker } from '../services/check-parser/bundler' -import { PlaywrightCheck } from './playwright-check' -import { Ref } from './ref' +import { Bundle } from './construct.js' +import { BundlePathMarker } from '../services/check-parser/bundler.js' +import { PlaywrightCheck } from './playwright-check.js' +import { Ref } from './ref.js' export interface PlaywrightCheckBundleProps { groupId?: Ref diff --git a/packages/cli/src/constructs/playwright-check.ts b/packages/cli/src/constructs/playwright-check.ts index d7c1eb019..a14be280f 100644 --- a/packages/cli/src/constructs/playwright-check.ts +++ b/packages/cli/src/constructs/playwright-check.ts @@ -2,23 +2,23 @@ import fs from 'node:fs/promises' import { bundlePlayWrightProject, -} from '../services/util' -import { shellQuote } from '../services/shell' -import { RuntimeCheck, RuntimeCheckProps } from './check' +} from '../services/util.js' +import { shellQuote } from '../services/shell.js' +import { RuntimeCheck, RuntimeCheckProps } from './check.js' import { ConflictingPropertyDiagnostic, DeprecatedPropertyDiagnostic, InvalidPropertyValueDiagnostic, UnsatisfiedLocalPrerequisitesDiagnostic, UnsupportedPropertyDiagnostic, -} from './construct-diagnostics' -import { Diagnostics, WarningDiagnostic } from './diagnostics' -import { PlaywrightCheckBundle } from './playwright-check-bundle' -import { Session } from './project' -import { Ref } from './ref' -import { ConfigDefaultsGetter, makeConfigDefaultsGetter } from './check-config' -import { CheckConfigDefaults } from '../services/checkly-config-loader' -import { Bundler } from '../services/check-parser/bundler' +} from './construct-diagnostics.js' +import { Diagnostics, WarningDiagnostic } from './diagnostics.js' +import { PlaywrightCheckBundle } from './playwright-check-bundle.js' +import { Session } from './project.js' +import { Ref } from './ref.js' +import { ConfigDefaultsGetter, makeConfigDefaultsGetter } from './check-config.js' +import { CheckConfigDefaults } from '../services/checkly-config-loader.js' +import { Bundler } from '../services/check-parser/bundler.js' export interface PlaywrightCheckProps extends Omit { /** diff --git a/packages/cli/src/constructs/playwright-config-codegen.ts b/packages/cli/src/constructs/playwright-config-codegen.ts index 78b24acc5..960db05d5 100644 --- a/packages/cli/src/constructs/playwright-config-codegen.ts +++ b/packages/cli/src/constructs/playwright-config-codegen.ts @@ -1,5 +1,5 @@ -import { unknown, Value } from '../sourcegen' -import { PlaywrightConfig } from './playwright-config' +import { unknown, Value } from '../sourcegen/index.js' +import { PlaywrightConfig } from './playwright-config.js' export type PlaywrightConfigResource = PlaywrightConfig diff --git a/packages/cli/src/constructs/private-location-check-assignment-codegen.ts b/packages/cli/src/constructs/private-location-check-assignment-codegen.ts index b423373f8..fc8956ec5 100644 --- a/packages/cli/src/constructs/private-location-check-assignment-codegen.ts +++ b/packages/cli/src/constructs/private-location-check-assignment-codegen.ts @@ -1,4 +1,4 @@ -import { Codegen, Context } from './internal/codegen' +import { Codegen, Context } from './internal/codegen/index.js' export interface PrivateLocationCheckAssignmentResource { privateLocationId: string diff --git a/packages/cli/src/constructs/private-location-check-assignment.ts b/packages/cli/src/constructs/private-location-check-assignment.ts index c97907226..7349af7ee 100644 --- a/packages/cli/src/constructs/private-location-check-assignment.ts +++ b/packages/cli/src/constructs/private-location-check-assignment.ts @@ -1,6 +1,6 @@ -import { Ref } from './ref' -import { Construct } from './construct' -import { Session } from './project' +import { Ref } from './ref.js' +import { Construct } from './construct.js' +import { Session } from './project.js' export interface PrivateLocationCheckAssignmentProps { privateLocationId: Ref diff --git a/packages/cli/src/constructs/private-location-codegen.ts b/packages/cli/src/constructs/private-location-codegen.ts index bb8a4ca60..6a69a2f7a 100644 --- a/packages/cli/src/constructs/private-location-codegen.ts +++ b/packages/cli/src/constructs/private-location-codegen.ts @@ -1,5 +1,5 @@ -import { Codegen, Context } from './internal/codegen' -import { decl, expr, GeneratedFile, ident, Value } from '../sourcegen' +import { Codegen, Context } from './internal/codegen/index.js' +import { decl, expr, GeneratedFile, ident, Value } from '../sourcegen/index.js' export interface PrivateLocationResource { id: string diff --git a/packages/cli/src/constructs/private-location-group-assignment-codegen.ts b/packages/cli/src/constructs/private-location-group-assignment-codegen.ts index 70409f5c1..f53228d60 100644 --- a/packages/cli/src/constructs/private-location-group-assignment-codegen.ts +++ b/packages/cli/src/constructs/private-location-group-assignment-codegen.ts @@ -1,4 +1,4 @@ -import { Codegen, Context } from './internal/codegen' +import { Codegen, Context } from './internal/codegen/index.js' export interface PrivateLocationGroupAssignmentResource { privateLocationId: string diff --git a/packages/cli/src/constructs/private-location-group-assignment.ts b/packages/cli/src/constructs/private-location-group-assignment.ts index 6b3be1e0a..8acba8223 100644 --- a/packages/cli/src/constructs/private-location-group-assignment.ts +++ b/packages/cli/src/constructs/private-location-group-assignment.ts @@ -1,6 +1,6 @@ -import { Ref } from './ref' -import { Construct } from './construct' -import { Session } from './project' +import { Ref } from './ref.js' +import { Construct } from './construct.js' +import { Session } from './project.js' export interface PrivateLocationGroupAssignmentProps { privateLocationId: Ref diff --git a/packages/cli/src/constructs/private-location.ts b/packages/cli/src/constructs/private-location.ts index 3a0ef23d1..ec4b66c0b 100644 --- a/packages/cli/src/constructs/private-location.ts +++ b/packages/cli/src/constructs/private-location.ts @@ -1,8 +1,8 @@ -import { Construct } from './construct' -import { InvalidPropertyValueDiagnostic } from './construct-diagnostics' -import { Diagnostics } from './diagnostics' -import { validatePhysicalIdIsUuid } from './internal/common-diagnostics' -import { Session } from './project' +import { Construct } from './construct.js' +import { InvalidPropertyValueDiagnostic } from './construct-diagnostics.js' +import { Diagnostics } from './diagnostics.js' +import { validatePhysicalIdIsUuid } from './internal/common-diagnostics.js' +import { Session } from './project.js' export type PrivateLocationIcon = 'alert' | 'arrow-down' | 'arrow-left' | 'arrow-right' | 'arrow-small-down' | 'arrow-small-left' | 'arrow-small-right' | 'arrow-small-up' | 'arrow-up' | 'beaker' | 'bell' | 'bold' diff --git a/packages/cli/src/constructs/project-bundle.ts b/packages/cli/src/constructs/project-bundle.ts index 5273f508e..e585d57f3 100644 --- a/packages/cli/src/constructs/project-bundle.ts +++ b/packages/cli/src/constructs/project-bundle.ts @@ -1,5 +1,5 @@ -import { Bundle, Construct } from './construct' -import { Project, Resources } from './project' +import { Bundle, Construct } from './construct.js' +import { Project, Resources } from './project.js' export type ResourceDataBundle = { construct: T diff --git a/packages/cli/src/constructs/project.ts b/packages/cli/src/constructs/project.ts index b12284717..53049a8ba 100644 --- a/packages/cli/src/constructs/project.ts +++ b/packages/cli/src/constructs/project.ts @@ -1,17 +1,17 @@ import path from 'node:path' -import * as api from '../rest/api' -import { CheckConfigDefaults } from '../services/checkly-config-loader' -import { Parser } from '../services/check-parser/parser' -import { Construct } from './construct' -import { ValidationError } from './validator-error' +import * as api from '../rest/api.js' +import { CheckConfigDefaults } from '../services/checkly-config-loader.js' +import { Parser } from '../services/check-parser/parser.js' +import { Construct } from './construct.js' +import { ValidationError } from './validator-error.js' import { Check, AlertChannelSubscription, AlertChannel, CheckGroup, MaintenanceWindow, Dashboard, PrivateLocation, HeartbeatMonitor, PrivateLocationCheckAssignment, PrivateLocationGroupAssignment, StatusPage, StatusPageService, -} from './' -import { PrivateLocationApi } from '../rest/private-locations' +} from './/index.js' +import { PrivateLocationApi } from '../rest/private-locations.js' import { FileLoader, JitiFileLoader, @@ -19,16 +19,16 @@ import { NativeFileLoader, TSNodeFileLoader, UnsupportedFileLoaderError, -} from '../loader' -import { Diagnostics } from './diagnostics' -import { ConstructDiagnostics, InvalidPropertyValueDiagnostic } from './construct-diagnostics' -import { ProjectBundle, ProjectDataBundle } from './project-bundle' -import { pathToPosix } from '../services/util' -import { Workspace } from '../services/check-parser/package-files/workspace' -import { detectPackageManager, npmPackageManager, PackageManager } from '../services/check-parser/package-files/package-manager' -import { Err, Result } from '../services/check-parser/package-files/result' -import { Runtime } from '../runtimes' -import { Bundler } from '../services/check-parser/bundler' +} from '../loader/index.js' +import { Diagnostics } from './diagnostics.js' +import { ConstructDiagnostics, InvalidPropertyValueDiagnostic } from './construct-diagnostics.js' +import { ProjectBundle, ProjectDataBundle } from './project-bundle.js' +import { pathToPosix } from '../services/util.js' +import { Workspace } from '../services/check-parser/package-files/workspace.js' +import { detectPackageManager, npmPackageManager, PackageManager } from '../services/check-parser/package-files/package-manager.js' +import { Err, Result } from '../services/check-parser/package-files/result.js' +import { Runtime } from '../runtimes/index.js' +import { Bundler } from '../services/check-parser/bundler.js' export interface ProjectProps { /** diff --git a/packages/cli/src/constructs/query-param.ts b/packages/cli/src/constructs/query-param.ts index e1c0b51fc..bc6d9bccd 100644 --- a/packages/cli/src/constructs/query-param.ts +++ b/packages/cli/src/constructs/query-param.ts @@ -1,4 +1,4 @@ -import KeyValuePair from './key-value-pair' +import KeyValuePair from './key-value-pair.js' /** * Represents a query parameter for API checks. diff --git a/packages/cli/src/constructs/ref-codegen.ts b/packages/cli/src/constructs/ref-codegen.ts index 980e2427d..eedce3a25 100644 --- a/packages/cli/src/constructs/ref-codegen.ts +++ b/packages/cli/src/constructs/ref-codegen.ts @@ -1,5 +1,5 @@ -import { expr, GeneratedFile, ident, Value } from '../sourcegen' -import { Ref } from './ref' +import { expr, GeneratedFile, ident, Value } from '../sourcegen/index.js' +import { Ref } from './ref.js' export function valueForRef (genfile: GeneratedFile, ref: Ref): Value { genfile.namedImport('Ref', 'checkly/constructs') diff --git a/packages/cli/src/constructs/retry-strategy-codegen.ts b/packages/cli/src/constructs/retry-strategy-codegen.ts index 967e69285..de5ea89eb 100644 --- a/packages/cli/src/constructs/retry-strategy-codegen.ts +++ b/packages/cli/src/constructs/retry-strategy-codegen.ts @@ -1,5 +1,5 @@ -import { Value, expr, ident, ObjectValueBuilder, GeneratedFile } from '../sourcegen' -import { RetryStrategy, RetryStrategyOptions, RetryStrategyType } from './retry-strategy' +import { Value, expr, ident, ObjectValueBuilder, GeneratedFile } from '../sourcegen/index.js' +import { RetryStrategy, RetryStrategyOptions, RetryStrategyType } from './retry-strategy.js' export type RetryStrategyResource = RetryStrategy diff --git a/packages/cli/src/constructs/slack-alert-channel-codegen.ts b/packages/cli/src/constructs/slack-alert-channel-codegen.ts index f9771406b..0d8b9bd8c 100644 --- a/packages/cli/src/constructs/slack-alert-channel-codegen.ts +++ b/packages/cli/src/constructs/slack-alert-channel-codegen.ts @@ -1,6 +1,6 @@ -import { Codegen, Context } from './internal/codegen' -import { decl, expr, ident } from '../sourcegen' -import { buildAlertChannelProps, AlertChannelResource } from './alert-channel-codegen' +import { Codegen, Context } from './internal/codegen/index.js' +import { decl, expr, ident } from '../sourcegen/index.js' +import { buildAlertChannelProps, AlertChannelResource } from './alert-channel-codegen.js' export interface SlackAlertChannelResource extends AlertChannelResource { type: 'SLACK' diff --git a/packages/cli/src/constructs/slack-alert-channel.ts b/packages/cli/src/constructs/slack-alert-channel.ts index 32a26cee0..172255693 100644 --- a/packages/cli/src/constructs/slack-alert-channel.ts +++ b/packages/cli/src/constructs/slack-alert-channel.ts @@ -1,5 +1,5 @@ -import { AlertChannel, AlertChannelProps } from './alert-channel' -import { Session } from './project' +import { AlertChannel, AlertChannelProps } from './alert-channel.js' +import { Session } from './project.js' export interface SlackAlertChannelProps extends AlertChannelProps { url: URL | string diff --git a/packages/cli/src/constructs/sms-alert-channel-codegen.ts b/packages/cli/src/constructs/sms-alert-channel-codegen.ts index 53c62f2a7..340ab41b1 100644 --- a/packages/cli/src/constructs/sms-alert-channel-codegen.ts +++ b/packages/cli/src/constructs/sms-alert-channel-codegen.ts @@ -1,6 +1,6 @@ -import { Codegen, Context } from './internal/codegen' -import { decl, expr, ident } from '../sourcegen' -import { buildAlertChannelProps, AlertChannelResource } from './alert-channel-codegen' +import { Codegen, Context } from './internal/codegen/index.js' +import { decl, expr, ident } from '../sourcegen/index.js' +import { buildAlertChannelProps, AlertChannelResource } from './alert-channel-codegen.js' export interface SmsAlertChannelResource extends AlertChannelResource { type: 'SMS' diff --git a/packages/cli/src/constructs/sms-alert-channel.ts b/packages/cli/src/constructs/sms-alert-channel.ts index 5ed8fbaa4..91e492c0f 100644 --- a/packages/cli/src/constructs/sms-alert-channel.ts +++ b/packages/cli/src/constructs/sms-alert-channel.ts @@ -1,5 +1,5 @@ -import { AlertChannel, AlertChannelProps } from './alert-channel' -import { Session } from './project' +import { AlertChannel, AlertChannelProps } from './alert-channel.js' +import { Session } from './project.js' export interface SmsAlertChannelProps extends AlertChannelProps { /** diff --git a/packages/cli/src/constructs/status-page-codegen.ts b/packages/cli/src/constructs/status-page-codegen.ts index f8dba3308..aafeae441 100644 --- a/packages/cli/src/constructs/status-page-codegen.ts +++ b/packages/cli/src/constructs/status-page-codegen.ts @@ -1,7 +1,7 @@ -import { Codegen, Context } from './internal/codegen' -import { expr, ident } from '../sourcegen' -import { StatusPageServiceResource, valueForStatusPageServiceFromId } from './status-page-service-codegen' -import { StatusPageTheme } from './status-page' +import { Codegen, Context } from './internal/codegen/index.js' +import { expr, ident } from '../sourcegen/index.js' +import { StatusPageServiceResource, valueForStatusPageServiceFromId } from './status-page-service-codegen.js' +import { StatusPageTheme } from './status-page.js' export interface StatusPageCardResource { id: string diff --git a/packages/cli/src/constructs/status-page-service-codegen.ts b/packages/cli/src/constructs/status-page-service-codegen.ts index 71268000b..3098d8ca4 100644 --- a/packages/cli/src/constructs/status-page-service-codegen.ts +++ b/packages/cli/src/constructs/status-page-service-codegen.ts @@ -1,5 +1,5 @@ -import { Codegen, Context } from './internal/codegen' -import { decl, expr, GeneratedFile, ident, Value } from '../sourcegen' +import { Codegen, Context } from './internal/codegen/index.js' +import { decl, expr, GeneratedFile, ident, Value } from '../sourcegen/index.js' export interface StatusPageServiceResource { id: string diff --git a/packages/cli/src/constructs/status-page-service.ts b/packages/cli/src/constructs/status-page-service.ts index fc550fd8d..3701d4815 100644 --- a/packages/cli/src/constructs/status-page-service.ts +++ b/packages/cli/src/constructs/status-page-service.ts @@ -1,7 +1,7 @@ -import { Construct } from './construct' -import { Diagnostics } from './diagnostics' -import { validatePhysicalIdIsUuid } from './internal/common-diagnostics' -import { Session } from './project' +import { Construct } from './construct.js' +import { Diagnostics } from './diagnostics.js' +import { validatePhysicalIdIsUuid } from './internal/common-diagnostics.js' +import { Session } from './project.js' export interface StatusPageServiceProps { /** diff --git a/packages/cli/src/constructs/status-page.ts b/packages/cli/src/constructs/status-page.ts index a91352bda..ee883abb4 100644 --- a/packages/cli/src/constructs/status-page.ts +++ b/packages/cli/src/constructs/status-page.ts @@ -1,7 +1,7 @@ -import { Construct } from './construct' -import { Session } from './project' -import { StatusPageService } from './status-page-service' -import { Ref } from './ref' +import { Construct } from './construct.js' +import { Session } from './project.js' +import { StatusPageService } from './status-page-service.js' +import { Ref } from './ref.js' export interface StatusPageCardProps { /** diff --git a/packages/cli/src/constructs/tcp-monitor-codegen.ts b/packages/cli/src/constructs/tcp-monitor-codegen.ts index 2b02331d3..79f31a341 100644 --- a/packages/cli/src/constructs/tcp-monitor-codegen.ts +++ b/packages/cli/src/constructs/tcp-monitor-codegen.ts @@ -1,8 +1,8 @@ -import { expr, GeneratedFile, ident, Value } from '../sourcegen' -import { valueForGeneralAssertion, valueForNumericAssertion } from './internal/assertion-codegen' -import { Codegen, Context } from './internal/codegen' -import { buildMonitorProps, MonitorResource } from './monitor-codegen' -import { TcpAssertion, TcpRequest } from './tcp-monitor' +import { expr, GeneratedFile, ident, Value } from '../sourcegen/index.js' +import { valueForGeneralAssertion, valueForNumericAssertion } from './internal/assertion-codegen.js' +import { Codegen, Context } from './internal/codegen/index.js' +import { buildMonitorProps, MonitorResource } from './monitor-codegen.js' +import { TcpAssertion, TcpRequest } from './tcp-monitor.js' export interface TcpMonitorResource extends MonitorResource { checkType: 'TCP' diff --git a/packages/cli/src/constructs/tcp-monitor.ts b/packages/cli/src/constructs/tcp-monitor.ts index 29e59113d..bc02cf38b 100644 --- a/packages/cli/src/constructs/tcp-monitor.ts +++ b/packages/cli/src/constructs/tcp-monitor.ts @@ -1,9 +1,9 @@ -import { Monitor, MonitorProps } from './monitor' -import { IPFamily } from './ip' -import { Session } from './project' -import { Assertion as CoreAssertion, NumericAssertionBuilder, GeneralAssertionBuilder } from './internal/assertion' -import { Diagnostics } from './diagnostics' -import { validateResponseTimes } from './internal/common-diagnostics' +import { Monitor, MonitorProps } from './monitor.js' +import { IPFamily } from './ip.js' +import { Session } from './project.js' +import { Assertion as CoreAssertion, NumericAssertionBuilder, GeneralAssertionBuilder } from './internal/assertion.js' +import { Diagnostics } from './diagnostics.js' +import { validateResponseTimes } from './internal/common-diagnostics.js' type TcpAssertionSource = 'RESPONSE_DATA' | 'RESPONSE_TIME' diff --git a/packages/cli/src/constructs/telegram-alert-channel-codegen.ts b/packages/cli/src/constructs/telegram-alert-channel-codegen.ts index 7adb9fcea..d499625d8 100644 --- a/packages/cli/src/constructs/telegram-alert-channel-codegen.ts +++ b/packages/cli/src/constructs/telegram-alert-channel-codegen.ts @@ -1,10 +1,10 @@ import qs from 'node:querystring' -import { Codegen, Context, ImportSafetyViolation } from './internal/codegen' -import { decl, expr, ident } from '../sourcegen' -import { buildAlertChannelProps } from './alert-channel-codegen' -import { WebhookAlertChannelResource, WebhookAlertChannelResourceConfig } from './webhook-alert-channel-codegen' -import { TelegramAlertChannel } from './telegram-alert-channel' +import { Codegen, Context, ImportSafetyViolation } from './internal/codegen/index.js' +import { decl, expr, ident } from '../sourcegen/index.js' +import { buildAlertChannelProps } from './alert-channel-codegen.js' +import { WebhookAlertChannelResource, WebhookAlertChannelResourceConfig } from './webhook-alert-channel-codegen.js' +import { TelegramAlertChannel } from './telegram-alert-channel.js' export interface TelegramAlertChannelResource extends WebhookAlertChannelResource { config: WebhookAlertChannelResourceConfig & { diff --git a/packages/cli/src/constructs/telegram-alert-channel.ts b/packages/cli/src/constructs/telegram-alert-channel.ts index 7a40ed1e9..2ff0f96b5 100644 --- a/packages/cli/src/constructs/telegram-alert-channel.ts +++ b/packages/cli/src/constructs/telegram-alert-channel.ts @@ -1,5 +1,5 @@ -import { WebhookAlertChannel } from './webhook-alert-channel' -import { AlertChannelProps } from './alert-channel' +import { WebhookAlertChannel } from './webhook-alert-channel.js' +import { AlertChannelProps } from './alert-channel.js' export interface TelegramAlertChannelProps extends AlertChannelProps { /** diff --git a/packages/cli/src/constructs/url-assertion-codegen.ts b/packages/cli/src/constructs/url-assertion-codegen.ts index 67f7d1649..59afd459f 100644 --- a/packages/cli/src/constructs/url-assertion-codegen.ts +++ b/packages/cli/src/constructs/url-assertion-codegen.ts @@ -1,6 +1,6 @@ -import { GeneratedFile, Value } from '../sourcegen' -import { UrlAssertion } from './url-assertion' -import { valueForNumericAssertion } from './internal/assertion-codegen' +import { GeneratedFile, Value } from '../sourcegen/index.js' +import { UrlAssertion } from './url-assertion.js' +import { valueForNumericAssertion } from './internal/assertion-codegen.js' export function valueForUrlAssertion (genfile: GeneratedFile, assertion: UrlAssertion): Value { genfile.namedImport('UrlAssertionBuilder', 'checkly/constructs') diff --git a/packages/cli/src/constructs/url-assertion.ts b/packages/cli/src/constructs/url-assertion.ts index 4bcaed614..d148fb530 100644 --- a/packages/cli/src/constructs/url-assertion.ts +++ b/packages/cli/src/constructs/url-assertion.ts @@ -1,7 +1,7 @@ import { Assertion as CoreAssertion, NumericAssertionBuilder, -} from './internal/assertion' +} from './internal/assertion.js' /** * Sources that can be used for URL monitor assertions. diff --git a/packages/cli/src/constructs/url-monitor-codegen.ts b/packages/cli/src/constructs/url-monitor-codegen.ts index cd155ac62..2853e9af8 100644 --- a/packages/cli/src/constructs/url-monitor-codegen.ts +++ b/packages/cli/src/constructs/url-monitor-codegen.ts @@ -1,8 +1,8 @@ -import { Codegen, Context } from './internal/codegen' -import { expr, ident } from '../sourcegen' -import { buildMonitorProps, MonitorResource } from './monitor-codegen' -import { UrlRequest } from './url-request' -import { valueForUrlRequest } from './url-request-codegen' +import { Codegen, Context } from './internal/codegen/index.js' +import { expr, ident } from '../sourcegen/index.js' +import { buildMonitorProps, MonitorResource } from './monitor-codegen.js' +import { UrlRequest } from './url-request.js' +import { valueForUrlRequest } from './url-request-codegen.js' export interface UrlMonitorResource extends MonitorResource { checkType: 'URL' diff --git a/packages/cli/src/constructs/url-monitor.ts b/packages/cli/src/constructs/url-monitor.ts index cd1108ecf..46785fdf5 100644 --- a/packages/cli/src/constructs/url-monitor.ts +++ b/packages/cli/src/constructs/url-monitor.ts @@ -1,8 +1,8 @@ -import { Diagnostics } from './diagnostics' -import { validateResponseTimes } from './internal/common-diagnostics' -import { Monitor, MonitorProps } from './monitor' -import { Session } from './project' -import { UrlRequest } from './url-request' +import { Diagnostics } from './diagnostics.js' +import { validateResponseTimes } from './internal/common-diagnostics.js' +import { Monitor, MonitorProps } from './monitor.js' +import { Session } from './project.js' +import { UrlRequest } from './url-request.js' /** * Configuration properties for UrlMonitor. diff --git a/packages/cli/src/constructs/url-request-codegen.ts b/packages/cli/src/constructs/url-request-codegen.ts index 6f24f9166..3c798db62 100644 --- a/packages/cli/src/constructs/url-request-codegen.ts +++ b/packages/cli/src/constructs/url-request-codegen.ts @@ -1,7 +1,7 @@ -import { GeneratedFile, object, Program, Value } from '../sourcegen' -import { valueForUrlAssertion } from './url-assertion-codegen' -import { UrlRequest } from './url-request' -import { Context } from './internal/codegen' +import { GeneratedFile, object, Program, Value } from '../sourcegen/index.js' +import { valueForUrlAssertion } from './url-assertion-codegen.js' +import { UrlRequest } from './url-request.js' +import { Context } from './internal/codegen/index.js' export function valueForUrlRequest ( program: Program, diff --git a/packages/cli/src/constructs/url-request.ts b/packages/cli/src/constructs/url-request.ts index 909bc28ce..5a78a5989 100644 --- a/packages/cli/src/constructs/url-request.ts +++ b/packages/cli/src/constructs/url-request.ts @@ -1,5 +1,5 @@ -import { IPFamily } from './ip' -import { UrlAssertion } from './url-assertion' +import { IPFamily } from './ip.js' +import { UrlAssertion } from './url-assertion.js' /** * Configuration for a URL monitor HTTP request. diff --git a/packages/cli/src/constructs/webhook-alert-channel-codegen.ts b/packages/cli/src/constructs/webhook-alert-channel-codegen.ts index 33655da55..66e6a573f 100644 --- a/packages/cli/src/constructs/webhook-alert-channel-codegen.ts +++ b/packages/cli/src/constructs/webhook-alert-channel-codegen.ts @@ -1,13 +1,13 @@ -import { decl, expr, GeneratedFile, ident, ObjectValueBuilder, Program } from '../sourcegen' -import { buildAlertChannelProps, AlertChannelResource } from './alert-channel-codegen' -import { HttpHeader } from './http-header' -import { valueForKeyValuePair } from './key-value-pair-codegen' -import { QueryParam } from './query-param' - -import { IncidentioAlertChannelCodegen } from './incidentio-alert-channel-codegen' -import { MSTeamsAlertChannelCodegen } from './msteams-alert-channel-codegen' -import { TelegramAlertChannelCodegen } from './telegram-alert-channel-codegen' -import { Codegen, Context, ImportSafetyViolation } from './internal/codegen' +import { decl, expr, GeneratedFile, ident, ObjectValueBuilder, Program } from '../sourcegen/index.js' +import { buildAlertChannelProps, AlertChannelResource } from './alert-channel-codegen.js' +import { HttpHeader } from './http-header.js' +import { valueForKeyValuePair } from './key-value-pair-codegen.js' +import { QueryParam } from './query-param.js' + +import { IncidentioAlertChannelCodegen } from './incidentio-alert-channel-codegen.js' +import { MSTeamsAlertChannelCodegen } from './msteams-alert-channel-codegen.js' +import { TelegramAlertChannelCodegen } from './telegram-alert-channel-codegen.js' +import { Codegen, Context, ImportSafetyViolation } from './internal/codegen/index.js' export type WebhookType = 'WEBHOOK_INCIDENTIO' diff --git a/packages/cli/src/constructs/webhook-alert-channel.ts b/packages/cli/src/constructs/webhook-alert-channel.ts index a6255bd6c..deee222de 100644 --- a/packages/cli/src/constructs/webhook-alert-channel.ts +++ b/packages/cli/src/constructs/webhook-alert-channel.ts @@ -1,8 +1,8 @@ -import { AlertChannel, AlertChannelProps } from './alert-channel' -import { HttpHeader } from './http-header' -import { HttpRequestMethod } from './http-request' -import { QueryParam } from './query-param' -import { Session } from './project' +import { AlertChannel, AlertChannelProps } from './alert-channel.js' +import { HttpHeader } from './http-header.js' +import { HttpRequestMethod } from './http-request.js' +import { QueryParam } from './query-param.js' +import { Session } from './project.js' export interface WebhookAlertChannelProps extends AlertChannelProps { /** diff --git a/packages/cli/src/formatters/__tests__/__fixtures__/account-plan-fixtures.ts b/packages/cli/src/formatters/__tests__/__fixtures__/account-plan-fixtures.ts index f7007ab8a..08498f4b2 100644 --- a/packages/cli/src/formatters/__tests__/__fixtures__/account-plan-fixtures.ts +++ b/packages/cli/src/formatters/__tests__/__fixtures__/account-plan-fixtures.ts @@ -1,4 +1,4 @@ -import type { Entitlement, AccountPlan } from '../../../rest/entitlements' +import type { Entitlement, AccountPlan } from '../../../rest/entitlements.js' // --- Entitlements --- diff --git a/packages/cli/src/formatters/__tests__/__fixtures__/incident-fixtures.ts b/packages/cli/src/formatters/__tests__/__fixtures__/incident-fixtures.ts index 4212e35c7..388cde400 100644 --- a/packages/cli/src/formatters/__tests__/__fixtures__/incident-fixtures.ts +++ b/packages/cli/src/formatters/__tests__/__fixtures__/incident-fixtures.ts @@ -1,4 +1,4 @@ -import type { IncidentUpdate, StatusPageIncident } from '../../../rest/incidents' +import type { IncidentUpdate, StatusPageIncident } from '../../../rest/incidents.js' export const investigatingIncident: StatusPageIncident = { id: '11111111-1111-1111-1111-111111111111', diff --git a/packages/cli/src/formatters/__tests__/__fixtures__/status-page-fixtures.ts b/packages/cli/src/formatters/__tests__/__fixtures__/status-page-fixtures.ts index bd5f17272..4930e175f 100644 --- a/packages/cli/src/formatters/__tests__/__fixtures__/status-page-fixtures.ts +++ b/packages/cli/src/formatters/__tests__/__fixtures__/status-page-fixtures.ts @@ -1,4 +1,4 @@ -import type { StatusPage } from '../../../rest/status-pages' +import type { StatusPage } from '../../../rest/status-pages.js' export const simpleStatusPage: StatusPage = { id: 'a1b2c3d4-e5f6-7890-abcd-ef1234567890', diff --git a/packages/cli/src/formatters/__tests__/account-members.spec.ts b/packages/cli/src/formatters/__tests__/account-members.spec.ts index 323a003c2..47f3fed7a 100644 --- a/packages/cli/src/formatters/__tests__/account-members.spec.ts +++ b/packages/cli/src/formatters/__tests__/account-members.spec.ts @@ -1,11 +1,11 @@ import { describe, it, expect } from 'vitest' -import { stripAnsi } from '../render' +import { stripAnsi } from '../render.js' import { formatAccountMembers, formatCursorNavigationHints, formatCursorPaginationInfo, -} from '../account-members' -import type { AccountMember } from '../../rest/account-members' +} from '../account-members.js' +import type { AccountMember } from '../../rest/account-members.js' const activeMember: AccountMember = { type: 'member', diff --git a/packages/cli/src/formatters/__tests__/account-plan.spec.ts b/packages/cli/src/formatters/__tests__/account-plan.spec.ts index 737d96b2f..50aa5d499 100644 --- a/packages/cli/src/formatters/__tests__/account-plan.spec.ts +++ b/packages/cli/src/formatters/__tests__/account-plan.spec.ts @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest' -import { stripAnsi } from '../render' +import { stripAnsi } from '../render.js' import { formatUpgradePath, formatLocations, @@ -7,7 +7,7 @@ import { formatPlanSummary, formatEntitlementDetail, formatFilteredEntitlements, -} from '../account-plan' +} from '../account-plan.js' import { enabledFlag, disabledFlagPlanOnly, @@ -16,7 +16,7 @@ import { disabledFlagNoUpgradeData, hobbyPlan, planWithoutLocations, -} from './__fixtures__/account-plan-fixtures' +} from './__fixtures__/account-plan-fixtures.js' describe('formatUpgradePath', () => { it('returns null for enabled entitlements', () => { diff --git a/packages/cli/src/formatters/__tests__/analytics.spec.ts b/packages/cli/src/formatters/__tests__/analytics.spec.ts index e9ddf8c75..ef69e5986 100644 --- a/packages/cli/src/formatters/__tests__/analytics.spec.ts +++ b/packages/cli/src/formatters/__tests__/analytics.spec.ts @@ -1,13 +1,13 @@ import { describe, it, expect } from 'vitest' -import type { AnalyticsResponse, AnalyticsSeriesEntry } from '../../rest/analytics' +import type { AnalyticsResponse, AnalyticsSeriesEntry } from '../../rest/analytics.js' import { extractMetrics, findUnit, formatMetricValue, formatMetricLabel, formatAnalyticsSection, -} from '../analytics' -import { stripAnsi } from '../render' +} from '../analytics.js' +import { stripAnsi } from '../render.js' const mockSeriesEntry: AnalyticsSeriesEntry = { data: { diff --git a/packages/cli/src/formatters/__tests__/check-result-detail.spec.ts b/packages/cli/src/formatters/__tests__/check-result-detail.spec.ts index 04c1e02d2..9fbe82237 100644 --- a/packages/cli/src/formatters/__tests__/check-result-detail.spec.ts +++ b/packages/cli/src/formatters/__tests__/check-result-detail.spec.ts @@ -1,6 +1,6 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest' -import { stripAnsi } from '../render' -import { formatResultDetail } from '../check-result-detail' +import { stripAnsi } from '../render.js' +import { formatResultDetail } from '../check-result-detail.js' import { apiCheckResult, apiCheckResultWithError, @@ -11,7 +11,7 @@ import { agenticCheckResult, agenticCheckResultWithFailures, agenticCheckResultMinimal, -} from './__fixtures__/fixtures' +} from './__fixtures__/fixtures.js' // Pin time for formatDate used in result detail beforeEach(() => { diff --git a/packages/cli/src/formatters/__tests__/checks.spec.ts b/packages/cli/src/formatters/__tests__/checks.spec.ts index 79d2d7233..01b6b3f33 100644 --- a/packages/cli/src/formatters/__tests__/checks.spec.ts +++ b/packages/cli/src/formatters/__tests__/checks.spec.ts @@ -1,5 +1,5 @@ import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest' -import { stripAnsi } from '../render' +import { stripAnsi } from '../render.js' import { formatSummaryBar, formatTypeBreakdown, @@ -9,7 +9,7 @@ import { formatCheckDetail, formatResults, formatErrorGroups, -} from '../checks' +} from '../checks.js' import { passingCheck, failingCheck, @@ -33,7 +33,7 @@ import { archivedErrorGroup, errorGroupWithRca, errorGroupWithoutRca, -} from './__fixtures__/fixtures' +} from './__fixtures__/fixtures.js' // Pin time for timeAgo used in results/error groups beforeEach(() => { diff --git a/packages/cli/src/formatters/__tests__/incidents.spec.ts b/packages/cli/src/formatters/__tests__/incidents.spec.ts index 77c227e82..7a6097f8c 100644 --- a/packages/cli/src/formatters/__tests__/incidents.spec.ts +++ b/packages/cli/src/formatters/__tests__/incidents.spec.ts @@ -1,15 +1,15 @@ import { describe, expect, it } from 'vitest' -import { stripAnsi } from '../render' +import { stripAnsi } from '../render.js' import { formatIncidentDetail, formatIncidentUpdateDetail, formatIncidentsList, -} from '../incidents' +} from '../incidents.js' import { investigatingIncident, monitoringUpdate, resolvedIncident, -} from './__fixtures__/incident-fixtures' +} from './__fixtures__/incident-fixtures.js' describe('formatIncidentsList', () => { describe('terminal', () => { diff --git a/packages/cli/src/formatters/__tests__/rca.spec.ts b/packages/cli/src/formatters/__tests__/rca.spec.ts index 7fd9b2ff8..fb65601ae 100644 --- a/packages/cli/src/formatters/__tests__/rca.spec.ts +++ b/packages/cli/src/formatters/__tests__/rca.spec.ts @@ -1,13 +1,13 @@ import { describe, it, expect } from 'vitest' -import { stripAnsi } from '../render' -import { formatRcaDetail, formatRcaPending, formatRcaCompleted, transformErrorGroupForJson } from '../rca' +import { stripAnsi } from '../render.js' +import { formatRcaDetail, formatRcaPending, formatRcaCompleted, transformErrorGroupForJson } from '../rca.js' import { sampleRca, sampleRcaMinimal, errorGroupWithRca, errorGroupWithMultipleRcas, errorGroupWithoutRca, -} from './__fixtures__/fixtures' +} from './__fixtures__/fixtures.js' describe('formatRcaDetail', () => { describe('terminal', () => { diff --git a/packages/cli/src/formatters/__tests__/render.spec.ts b/packages/cli/src/formatters/__tests__/render.spec.ts index 0bd8aceb5..73a1ca319 100644 --- a/packages/cli/src/formatters/__tests__/render.spec.ts +++ b/packages/cli/src/formatters/__tests__/render.spec.ts @@ -17,7 +17,7 @@ import { renderTable, type DetailField, type ColumnDef, -} from '../render' +} from '../render.js' describe('stripAnsi', () => { it('removes ANSI escape codes', () => { diff --git a/packages/cli/src/formatters/__tests__/status-pages.spec.ts b/packages/cli/src/formatters/__tests__/status-pages.spec.ts index 3d0aa02e6..f8175c373 100644 --- a/packages/cli/src/formatters/__tests__/status-pages.spec.ts +++ b/packages/cli/src/formatters/__tests__/status-pages.spec.ts @@ -1,17 +1,17 @@ import { describe, it, expect } from 'vitest' -import { stripAnsi } from '../render' +import { stripAnsi } from '../render.js' import { formatStatusPagesExpanded, formatStatusPagesCompact, formatCursorPaginationInfo, formatCursorNavigationHints, formatStatusPageDetail, -} from '../status-pages' +} from '../status-pages.js' import { simpleStatusPage, privateStatusPage, noCardsStatusPage, -} from './__fixtures__/status-page-fixtures' +} from './__fixtures__/status-page-fixtures.js' describe('formatStatusPagesExpanded', () => { describe('terminal', () => { diff --git a/packages/cli/src/formatters/account-members.ts b/packages/cli/src/formatters/account-members.ts index f3019a163..ecba2030c 100644 --- a/packages/cli/src/formatters/account-members.ts +++ b/packages/cli/src/formatters/account-members.ts @@ -1,12 +1,12 @@ import chalk from 'chalk' -import type { AccountMember } from '../rest/account-members' +import type { AccountMember } from '../rest/account-members.js' import { type ColumnDef, type OutputFormat, formatDate, renderTable, truncateToWidth, -} from './render' +} from './render.js' export interface AccountMembersTableOptions { showId?: boolean diff --git a/packages/cli/src/formatters/account-plan.ts b/packages/cli/src/formatters/account-plan.ts index bd8b5b776..02d117707 100644 --- a/packages/cli/src/formatters/account-plan.ts +++ b/packages/cli/src/formatters/account-plan.ts @@ -1,12 +1,12 @@ import chalk from 'chalk' -import type { Entitlement, AccountPlan, AccountLocations } from '../rest/entitlements' +import type { Entitlement, AccountPlan, AccountLocations } from '../rest/entitlements.js' import { type OutputFormat, type ColumnDef, type DetailField, renderTable, renderDetailFields, -} from './render' +} from './render.js' // --- Shared helpers --- diff --git a/packages/cli/src/formatters/analytics.ts b/packages/cli/src/formatters/analytics.ts index 999d7b6ad..1bd8e6a72 100644 --- a/packages/cli/src/formatters/analytics.ts +++ b/packages/cli/src/formatters/analytics.ts @@ -1,7 +1,7 @@ import chalk from 'chalk' -import { formatMs } from './render' -import type { OutputFormat } from './render' -import type { AnalyticsResponse, AnalyticsSeriesEntry, QuickRange } from '../rest/analytics' +import { formatMs } from './render.js' +import type { OutputFormat } from './render.js' +import type { AnalyticsResponse, AnalyticsSeriesEntry, QuickRange } from '../rest/analytics.js' export const rangeLabels: Record = { last24Hours: 'last 24 hours', diff --git a/packages/cli/src/formatters/batch-stats.ts b/packages/cli/src/formatters/batch-stats.ts index 15d4637a5..9175e6a14 100644 --- a/packages/cli/src/formatters/batch-stats.ts +++ b/packages/cli/src/formatters/batch-stats.ts @@ -1,10 +1,10 @@ import chalk from 'chalk' -import type { BatchAnalyticsResult } from '../rest/batch-analytics' -import { type CheckWithStatus, type PaginationInfo, resolveStatus } from './checks' -import type { OutputFormat, ColumnDef } from './render' -import { renderTable, truncateToWidth, visWidth } from './render' -import { findUnit, rangeLabels } from './analytics' -import type { QuickRange } from '../rest/analytics' +import type { BatchAnalyticsResult } from '../rest/batch-analytics.js' +import { type CheckWithStatus, type PaginationInfo, resolveStatus } from './checks.js' +import type { OutputFormat, ColumnDef } from './render.js' +import { renderTable, truncateToWidth, visWidth } from './render.js' +import { findUnit, rangeLabels } from './analytics.js' +import type { QuickRange } from '../rest/analytics.js' export type StatsRow = CheckWithStatus & { analytics?: BatchAnalyticsResult } diff --git a/packages/cli/src/formatters/check-result-detail.ts b/packages/cli/src/formatters/check-result-detail.ts index 707669e4c..b75523066 100644 --- a/packages/cli/src/formatters/check-result-detail.ts +++ b/packages/cli/src/formatters/check-result-detail.ts @@ -9,7 +9,7 @@ import type { AgenticAssertion, AgenticSuggestion, AgenticStep, -} from '../rest/check-results' +} from '../rest/check-results.js' import { type OutputFormat, type DetailField, @@ -18,7 +18,7 @@ import { resolveResultStatus, heading, renderDetailFields, -} from './render' +} from './render.js' // --- Helpers --- diff --git a/packages/cli/src/formatters/checks.ts b/packages/cli/src/formatters/checks.ts index 61865a588..4adf096be 100644 --- a/packages/cli/src/formatters/checks.ts +++ b/packages/cli/src/formatters/checks.ts @@ -1,9 +1,9 @@ import chalk from 'chalk' import logSymbols from 'log-symbols' -import type { Check } from '../rest/checks' -import type { CheckStatus } from '../rest/check-statuses' -import type { CheckResult } from '../rest/check-results' -import type { ErrorGroup } from '../rest/error-groups' +import type { Check } from '../rest/checks.js' +import type { CheckStatus } from '../rest/check-statuses.js' +import type { CheckResult } from '../rest/check-results.js' +import type { ErrorGroup } from '../rest/error-groups.js' import { type OutputFormat, type DetailField, @@ -19,9 +19,9 @@ import { resolveResultStatus, renderDetailFields, renderTable, -} from './render' +} from './render.js' -export { formatFrequency, formatCheckType } from './render' +export { formatFrequency, formatCheckType } from './render.js' export type CheckWithStatus = Check & { status?: CheckStatus } diff --git a/packages/cli/src/formatters/incidents.ts b/packages/cli/src/formatters/incidents.ts index 2e3e44afa..4831a55d4 100644 --- a/packages/cli/src/formatters/incidents.ts +++ b/packages/cli/src/formatters/incidents.ts @@ -1,5 +1,5 @@ import chalk from 'chalk' -import type { IncidentUpdate, StatusPageIncident } from '../rest/incidents' +import type { IncidentUpdate, StatusPageIncident } from '../rest/incidents.js' import { type OutputFormat, type ColumnDef, @@ -9,7 +9,7 @@ import { renderDetailFields, formatDate, timeAgo, -} from './render' +} from './render.js' function normalizeLabel (value: string): string { return value.toLowerCase() diff --git a/packages/cli/src/formatters/rca.ts b/packages/cli/src/formatters/rca.ts index da7512bc6..8705abc1c 100644 --- a/packages/cli/src/formatters/rca.ts +++ b/packages/cli/src/formatters/rca.ts @@ -1,6 +1,6 @@ import chalk from 'chalk' -import type { RootCauseAnalysis, ErrorGroup } from '../rest/error-groups' -import { type OutputFormat, heading } from './render' +import type { RootCauseAnalysis, ErrorGroup } from '../rest/error-groups.js' +import { type OutputFormat, heading } from './render.js' function label (text: string, width = 16): string { return chalk.dim(text.padEnd(width)) diff --git a/packages/cli/src/formatters/status-pages.ts b/packages/cli/src/formatters/status-pages.ts index bdada53de..92c63bbc5 100644 --- a/packages/cli/src/formatters/status-pages.ts +++ b/packages/cli/src/formatters/status-pages.ts @@ -1,5 +1,5 @@ import chalk from 'chalk' -import type { StatusPage } from '../rest/status-pages' +import type { StatusPage } from '../rest/status-pages.js' import { type OutputFormat, type ColumnDef, @@ -7,7 +7,7 @@ import { truncateToWidth, renderTable, renderDetailFields, -} from './render' +} from './render.js' // --- Expanded row type: one row per service, all fields repeated --- diff --git a/packages/cli/src/help/help-extension.ts b/packages/cli/src/help/help-extension.ts index 797cb51c7..84644a349 100644 --- a/packages/cli/src/help/help-extension.ts +++ b/packages/cli/src/help/help-extension.ts @@ -2,8 +2,8 @@ import { existsSync } from 'fs' import { join } from 'path' import { Command, Help } from '@oclif/core' import { Topic } from '@oclif/core/interfaces' -import examples from './examples' -import { skills, skillsDescription } from './skills' +import examples from './examples.js' +import { skills, skillsDescription } from './skills.js' export default class ChecklyHelpClass extends Help { protected formatAllCommands (commands: Array, diff --git a/packages/cli/src/helpers/__tests__/cli-mode.spec.ts b/packages/cli/src/helpers/__tests__/cli-mode.spec.ts index 74108ec67..69fc0fc3a 100644 --- a/packages/cli/src/helpers/__tests__/cli-mode.spec.ts +++ b/packages/cli/src/helpers/__tests__/cli-mode.spec.ts @@ -1,5 +1,5 @@ import { beforeEach, describe, expect, it } from 'vitest' -import { detectOperator, detectCliMode } from '../cli-mode' +import { detectOperator, detectCliMode } from '../cli-mode.js' const operatorEnvVars = [ 'CLAUDECODE', 'CURSOR_TRACE_ID', 'CURSOR_AGENT', 'TERM_PROGRAM', 'GITHUB_COPILOT', diff --git a/packages/cli/src/helpers/__tests__/command-preview.spec.ts b/packages/cli/src/helpers/__tests__/command-preview.spec.ts index 1042525c0..93ea1b707 100644 --- a/packages/cli/src/helpers/__tests__/command-preview.spec.ts +++ b/packages/cli/src/helpers/__tests__/command-preview.spec.ts @@ -3,8 +3,8 @@ import { formatPreviewForAgent, formatPreviewForTerminal, buildConfirmCommand, -} from '../command-preview' -import type { CommandPreview } from '../command-preview' +} from '../command-preview.js' +import type { CommandPreview } from '../command-preview.js' const samplePreview: CommandPreview = { command: 'incidents create', diff --git a/packages/cli/src/helpers/__tests__/recast-acorn-parser.spec.ts b/packages/cli/src/helpers/__tests__/recast-acorn-parser.spec.ts index d8691afe3..6a864fae9 100644 --- a/packages/cli/src/helpers/__tests__/recast-acorn-parser.spec.ts +++ b/packages/cli/src/helpers/__tests__/recast-acorn-parser.spec.ts @@ -1,7 +1,7 @@ import { describe, it, expect } from 'vitest' import * as recast from 'recast' -import * as acornParser from '../recast-acorn-parser' -import { findPropertyByName } from '../write-config-helpers' +import * as acornParser from '../recast-acorn-parser.js' +import { findPropertyByName } from '../write-config-helpers.js' const normalizeLineEndings = (str: string) => str.replace(/\r\n/g, '\n') diff --git a/packages/cli/src/helpers/__tests__/test-helper.spec.ts b/packages/cli/src/helpers/__tests__/test-helper.spec.ts index 4460b3d78..c288016d5 100644 --- a/packages/cli/src/helpers/__tests__/test-helper.spec.ts +++ b/packages/cli/src/helpers/__tests__/test-helper.spec.ts @@ -1,5 +1,5 @@ import { describe, it, expect, vi } from 'vitest' -import { prepareReportersTypes } from '../test-helper' +import { prepareReportersTypes } from '../test-helper.js' vi.mock('ci-info', () => ({ isCI: false })) diff --git a/packages/cli/src/helpers/command-style.ts b/packages/cli/src/helpers/command-style.ts index 92516d1b1..615e491c6 100644 --- a/packages/cli/src/helpers/command-style.ts +++ b/packages/cli/src/helpers/command-style.ts @@ -1,8 +1,8 @@ import chalk from 'chalk' import { ux } from '@oclif/core' -import { BaseCommand } from '../commands/baseCommand' -import { wrap } from './wrap' +import { BaseCommand } from '../commands/baseCommand.js' +import { wrap } from './wrap.js' import logSymbols from 'log-symbols' const textWrapOptions = { diff --git a/packages/cli/src/helpers/incidents.ts b/packages/cli/src/helpers/incidents.ts index 2fe0658f4..9e0cc6a0f 100644 --- a/packages/cli/src/helpers/incidents.ts +++ b/packages/cli/src/helpers/incidents.ts @@ -1,5 +1,5 @@ -import type { IncidentService, IncidentSeverity, IncidentUpdateStatus, StatusPageIncident } from '../rest/incidents' -import type { StatusPage, StatusPageService } from '../rest/status-pages' +import type { IncidentService, IncidentSeverity, IncidentUpdateStatus, StatusPageIncident } from '../rest/incidents.js' +import type { StatusPage, StatusPageService } from '../rest/status-pages.js' export const incidentSeverityOptions = ['minor', 'medium', 'major', 'critical'] as const export type IncidentSeverityOption = (typeof incidentSeverityOptions)[number] diff --git a/packages/cli/src/helpers/onboarding/__tests__/boilerplate.spec.ts b/packages/cli/src/helpers/onboarding/__tests__/boilerplate.spec.ts index b12e1cd43..c50392e93 100644 --- a/packages/cli/src/helpers/onboarding/__tests__/boilerplate.spec.ts +++ b/packages/cli/src/helpers/onboarding/__tests__/boilerplate.spec.ts @@ -31,12 +31,12 @@ import { existsSync, readFileSync, writeFileSync, cpSync } from 'fs' import { execSync } from 'child_process' import prompts from 'prompts' import { join } from 'path' -import { detectPackageManager } from '../../../services/check-parser/package-files/package-manager' +import { detectPackageManager } from '../../../services/check-parser/package-files/package-manager.js' import { createConfig, copyChecks, runDepsInstall, -} from '../boilerplate' +} from '../boilerplate.js' const mockExistsSync = vi.mocked(existsSync) const mockReadFileSync = vi.mocked(readFileSync) diff --git a/packages/cli/src/helpers/onboarding/__tests__/clipboard.spec.ts b/packages/cli/src/helpers/onboarding/__tests__/clipboard.spec.ts index 0d9a4570b..0ad8a6da1 100644 --- a/packages/cli/src/helpers/onboarding/__tests__/clipboard.spec.ts +++ b/packages/cli/src/helpers/onboarding/__tests__/clipboard.spec.ts @@ -5,7 +5,7 @@ vi.mock('child_process', () => ({ })) import { execSync } from 'child_process' -import { copyToClipboard } from '../clipboard' +import { copyToClipboard } from '../clipboard.js' const mockExecSync = vi.mocked(execSync) diff --git a/packages/cli/src/helpers/onboarding/__tests__/detect-project.spec.ts b/packages/cli/src/helpers/onboarding/__tests__/detect-project.spec.ts index d699c2921..530fa879f 100644 --- a/packages/cli/src/helpers/onboarding/__tests__/detect-project.spec.ts +++ b/packages/cli/src/helpers/onboarding/__tests__/detect-project.spec.ts @@ -17,8 +17,8 @@ vi.mock('../../../services/checkly-config-loader', () => ({ import { existsSync } from 'fs' import { join } from 'path' -import { findPlaywrightConfigPath } from '../../../services/util' -import { detectProjectContext } from '../detect-project' +import { findPlaywrightConfigPath } from '../../../services/util.js' +import { detectProjectContext } from '../detect-project.js' const mockExistsSync = vi.mocked(existsSync) const mockFindPlaywrightConfigPath = vi.mocked(findPlaywrightConfigPath) diff --git a/packages/cli/src/helpers/onboarding/__tests__/messages.spec.ts b/packages/cli/src/helpers/onboarding/__tests__/messages.spec.ts index 7f57d8fc6..e7482c005 100644 --- a/packages/cli/src/helpers/onboarding/__tests__/messages.spec.ts +++ b/packages/cli/src/helpers/onboarding/__tests__/messages.spec.ts @@ -1,5 +1,5 @@ import { describe, expect, it } from 'vitest' -import { noSkillWarning } from '../messages' +import { noSkillWarning } from '../messages.js' describe('noSkillWarning', () => { it('wraps the warning sentence later and keeps the spacer line', () => { diff --git a/packages/cli/src/helpers/onboarding/__tests__/prompt-display.spec.ts b/packages/cli/src/helpers/onboarding/__tests__/prompt-display.spec.ts index f418cf3d6..35ff07a23 100644 --- a/packages/cli/src/helpers/onboarding/__tests__/prompt-display.spec.ts +++ b/packages/cli/src/helpers/onboarding/__tests__/prompt-display.spec.ts @@ -10,9 +10,9 @@ vi.mock('../prompts-helpers', () => ({ makeOnCancel: vi.fn(() => vi.fn()), })) -import { copyToClipboard } from '../clipboard' +import { copyToClipboard } from '../clipboard.js' import prompts from 'prompts' -import { displayStarterPrompt } from '../prompt-display' +import { displayStarterPrompt } from '../prompt-display.js' const mockCopyToClipboard = vi.mocked(copyToClipboard) const mockPrompts = vi.mocked(prompts) diff --git a/packages/cli/src/helpers/onboarding/__tests__/skill-install.spec.ts b/packages/cli/src/helpers/onboarding/__tests__/skill-install.spec.ts index 9061017b3..1f47bb7f5 100644 --- a/packages/cli/src/helpers/onboarding/__tests__/skill-install.spec.ts +++ b/packages/cli/src/helpers/onboarding/__tests__/skill-install.spec.ts @@ -25,9 +25,9 @@ vi.mock('prompts', () => ({ })) import prompts from 'prompts' -import { readSkillFile, writeSkillToTarget, promptForPlatformTarget } from '../../../commands/skills/install' -import { detectCliMode, detectOperator } from '../../cli-mode' -import { runSkillInstallStep } from '../skill-install' +import { readSkillFile, writeSkillToTarget, promptForPlatformTarget } from '../../../commands/skills/install.js' +import { detectCliMode, detectOperator } from '../../cli-mode.js' +import { runSkillInstallStep } from '../skill-install.js' const mockDetectCliMode = vi.mocked(detectCliMode) const mockDetectOperator = vi.mocked(detectOperator) diff --git a/packages/cli/src/helpers/onboarding/__tests__/template-prompt.spec.ts b/packages/cli/src/helpers/onboarding/__tests__/template-prompt.spec.ts index e11f662f6..89e36e1a2 100644 --- a/packages/cli/src/helpers/onboarding/__tests__/template-prompt.spec.ts +++ b/packages/cli/src/helpers/onboarding/__tests__/template-prompt.spec.ts @@ -5,7 +5,7 @@ vi.mock('fs/promises', () => ({ })) import { readFile } from 'fs/promises' -import { loadPromptTemplate } from '../template-prompt' +import { loadPromptTemplate } from '../template-prompt.js' const mockReadFile = vi.mocked(readFile) diff --git a/packages/cli/src/helpers/onboarding/boilerplate.ts b/packages/cli/src/helpers/onboarding/boilerplate.ts index 6e13619d0..3fc6b3e8c 100644 --- a/packages/cli/src/helpers/onboarding/boilerplate.ts +++ b/packages/cli/src/helpers/onboarding/boilerplate.ts @@ -1,11 +1,14 @@ import { existsSync, readFileSync, writeFileSync, cpSync } from 'fs' import { execSync } from 'child_process' -import { join } from 'path' +import { join, dirname } from 'path' import chalk from 'chalk' import prompts from 'prompts' +import { fileURLToPath } from 'node:url' -import { detectPackageManager } from '../../services/check-parser/package-files/package-manager' -import { makeOnCancel, successMessage } from './prompts-helpers' +import { detectPackageManager } from '../../services/check-parser/package-files/package-manager.js' +import { makeOnCancel, successMessage } from './prompts-helpers.js' + +const __dirname = dirname(fileURLToPath(import.meta.url)) // Path resolves at runtime from dist/helpers/onboarding/ to dist/ai-context/onboarding-boilerplate/ const CONFIG_TEMPLATE_PATH = join(__dirname, '../../ai-context/onboarding-boilerplate/checkly-config-template.ts') diff --git a/packages/cli/src/helpers/onboarding/detect-project.ts b/packages/cli/src/helpers/onboarding/detect-project.ts index d57c3d5c4..3cf5da59a 100644 --- a/packages/cli/src/helpers/onboarding/detect-project.ts +++ b/packages/cli/src/helpers/onboarding/detect-project.ts @@ -1,9 +1,9 @@ import { existsSync } from 'fs' import { join } from 'path' -import { PLATFORM_TARGETS } from '../../commands/skills/install' -import { findPlaywrightConfigPath } from '../../services/util' -import { defaultFilenames as CHECKLY_CONFIG_NAMES } from '../../services/checkly-config-loader' +import { PLATFORM_TARGETS } from '../../commands/skills/install.js' +import { findPlaywrightConfigPath } from '../../services/util.js' +import { defaultFilenames as CHECKLY_CONFIG_NAMES } from '../../services/checkly-config-loader.js' export interface ProjectContext { isExistingProject: boolean diff --git a/packages/cli/src/helpers/onboarding/index.ts b/packages/cli/src/helpers/onboarding/index.ts index d160a14d7..d0375ca5e 100644 --- a/packages/cli/src/helpers/onboarding/index.ts +++ b/packages/cli/src/helpers/onboarding/index.ts @@ -1,7 +1,7 @@ -export { detectProjectContext, type ProjectContext } from './detect-project' -export { loadPromptTemplate, type PromptVariables } from './template-prompt' -export { displayStarterPrompt } from './prompt-display' -export { runSkillInstallStep, refreshSkill, type SkillInstallResult } from './skill-install' +export { detectProjectContext, type ProjectContext } from './detect-project.js' +export { loadPromptTemplate, type PromptVariables } from './template-prompt.js' +export { displayStarterPrompt } from './prompt-display.js' +export { runSkillInstallStep, refreshSkill, type SkillInstallResult } from './skill-install.js' export { runDepsInstall, createConfig, @@ -9,6 +9,6 @@ export { type ConfigCreationResult, type DepsInstallOptions, type DepsInstallResult, -} from './boilerplate' -export { makeOnCancel, successMessage } from './prompts-helpers' -export { greeting, footer, agentFooter, noSkillWarning, existingProjectFooter } from './messages' +} from './boilerplate.js' +export { makeOnCancel, successMessage } from './prompts-helpers.js' +export { greeting, footer, agentFooter, noSkillWarning, existingProjectFooter } from './messages.js' diff --git a/packages/cli/src/helpers/onboarding/messages.ts b/packages/cli/src/helpers/onboarding/messages.ts index b4298af7d..8028f35c0 100644 --- a/packages/cli/src/helpers/onboarding/messages.ts +++ b/packages/cli/src/helpers/onboarding/messages.ts @@ -1,5 +1,5 @@ import chalk from 'chalk' -import { wrap } from '../wrap' +import { wrap } from '../wrap.js' // All output lines stay within 80 visible characters for split-view // terminal compatibility. diff --git a/packages/cli/src/helpers/onboarding/prompt-display.ts b/packages/cli/src/helpers/onboarding/prompt-display.ts index 1be101369..5b0a846a2 100644 --- a/packages/cli/src/helpers/onboarding/prompt-display.ts +++ b/packages/cli/src/helpers/onboarding/prompt-display.ts @@ -1,7 +1,7 @@ import chalk from 'chalk' import prompts from 'prompts' -import { copyToClipboard } from './clipboard' -import { makeOnCancel } from './prompts-helpers' +import { copyToClipboard } from './clipboard.js' +import { makeOnCancel } from './prompts-helpers.js' const PROMPT_INDENT = ' ' const MAX_VISIBLE_WIDTH = 80 diff --git a/packages/cli/src/helpers/onboarding/skill-install.ts b/packages/cli/src/helpers/onboarding/skill-install.ts index 3ba45c147..6444df1d5 100644 --- a/packages/cli/src/helpers/onboarding/skill-install.ts +++ b/packages/cli/src/helpers/onboarding/skill-install.ts @@ -2,9 +2,9 @@ import { dirname, relative } from 'path' import chalk from 'chalk' import prompts from 'prompts' -import { PLATFORM_TARGETS, readSkillFile, writeSkillToTarget, formatPlatformName, promptForPlatformTarget } from '../../commands/skills/install' -import { detectCliMode, detectOperator, OPERATOR_TO_PLATFORM } from '../cli-mode' -import { makeOnCancel } from './prompts-helpers' +import { PLATFORM_TARGETS, readSkillFile, writeSkillToTarget, formatPlatformName, promptForPlatformTarget } from '../../commands/skills/install.js' +import { detectCliMode, detectOperator, OPERATOR_TO_PLATFORM } from '../cli-mode.js' +import { makeOnCancel } from './prompts-helpers.js' export interface SkillInstallResult { installed: boolean diff --git a/packages/cli/src/helpers/onboarding/template-prompt.ts b/packages/cli/src/helpers/onboarding/template-prompt.ts index a8b7aabfa..2e16e59e8 100644 --- a/packages/cli/src/helpers/onboarding/template-prompt.ts +++ b/packages/cli/src/helpers/onboarding/template-prompt.ts @@ -1,5 +1,8 @@ import { readFile } from 'fs/promises' -import { join } from 'path' +import { join, dirname } from 'path' +import { fileURLToPath } from 'node:url' + +const __dirname = dirname(fileURLToPath(import.meta.url)) const PROMPTS_DIR = join(__dirname, '../../ai-context/onboarding-prompts') diff --git a/packages/cli/src/helpers/test-helper.ts b/packages/cli/src/helpers/test-helper.ts index 687007b15..4fb0a3028 100644 --- a/packages/cli/src/helpers/test-helper.ts +++ b/packages/cli/src/helpers/test-helper.ts @@ -1,9 +1,9 @@ -import { PrivateRunLocation, RunLocation } from '../services/abstract-check-runner' -import { Session } from '../constructs' -import type { Region } from '..' -import { ReporterType } from '../reporters/reporter' +import { PrivateRunLocation, RunLocation } from '../services/abstract-check-runner.js' +import { Session } from '../constructs/index.js' +import type { Region } from '../index.js' +import { ReporterType } from '../reporters/reporter.js' import { isCI } from 'ci-info' -import { DEFAULT_REGION } from './constants' +import { DEFAULT_REGION } from './constants.js' export async function prepareRunLocation ( configOptions: { runLocation?: keyof Region, privateRunLocation?: string } = {}, diff --git a/packages/cli/src/index.ts b/packages/cli/src/index.ts index 80c1bf7fe..47491b51a 100644 --- a/packages/cli/src/index.ts +++ b/packages/cli/src/index.ts @@ -1,3 +1,3 @@ -export * as constructs from './constructs' -export { defineConfig } from './config' -export type { ChecklyConfig } from './services/checkly-config-loader' +export * as constructs from './constructs/index.js' +export { defineConfig } from './config.js' +export type { ChecklyConfig } from './services/checkly-config-loader.js' diff --git a/packages/cli/src/loader/index.ts b/packages/cli/src/loader/index.ts index c3b09e59d..e869969ab 100644 --- a/packages/cli/src/loader/index.ts +++ b/packages/cli/src/loader/index.ts @@ -1,11 +1,11 @@ -export { JitiFileLoader, JitiFileLoaderOptions } from './jiti' +export { JitiFileLoader, JitiFileLoaderOptions } from './jiti.js' export { FileLoader, FileLoaderOptions, UnsupportedFileLoaderError, -} from './loader' -export { FileMatch, FileMatchFunction } from './match' -export { MixedFileLoader } from './mixed' +} from './loader.js' +export { FileMatch, FileMatchFunction } from './match.js' +export { MixedFileLoader } from './mixed.js' export { NativeFileLoader, NativeFileLoaderOptions, @@ -13,5 +13,5 @@ export { DenoDetector, detectNativeTypeScriptSupport, hasNativeTypeScriptSupport, -} from './native' -export { TSNodeFileLoader, TSNodeFileLoaderOptions } from './ts-node' +} from './native.js' +export { TSNodeFileLoader, TSNodeFileLoaderOptions } from './ts-node.js' diff --git a/packages/cli/src/loader/jiti.ts b/packages/cli/src/loader/jiti.ts index 218c216c0..0b34a28ce 100644 --- a/packages/cli/src/loader/jiti.ts +++ b/packages/cli/src/loader/jiti.ts @@ -1,8 +1,11 @@ import Debug from 'debug' +import { fileURLToPath } from 'node:url' -import { FileLoader, FileLoaderOptions, UnsupportedFileLoaderError } from './loader' -import { FileMatch } from './match' -import { preferenceDelta } from './config' +import { FileLoader, FileLoaderOptions, UnsupportedFileLoaderError } from './loader.js' +import { FileMatch } from './match.js' +import { preferenceDelta } from './config.js' + +const __filename = fileURLToPath(import.meta.url) const debug = Debug('checkly:cli:loader:jiti') diff --git a/packages/cli/src/loader/loader.ts b/packages/cli/src/loader/loader.ts index 13b2d7ffd..75d4d11e6 100644 --- a/packages/cli/src/loader/loader.ts +++ b/packages/cli/src/loader/loader.ts @@ -1,4 +1,4 @@ -import { FileMatch } from './match' +import { FileMatch } from './match.js' export interface FileLoaderOptions { /** diff --git a/packages/cli/src/loader/mixed.ts b/packages/cli/src/loader/mixed.ts index b0702ab22..57b93cdf2 100644 --- a/packages/cli/src/loader/mixed.ts +++ b/packages/cli/src/loader/mixed.ts @@ -1,7 +1,7 @@ import { FileLoader, UnsupportedFileLoaderError, -} from './loader' +} from './loader.js' export class MixedFileLoader extends FileLoader { loaders: Set diff --git a/packages/cli/src/loader/native.ts b/packages/cli/src/loader/native.ts index 7525ea88d..b567a8873 100644 --- a/packages/cli/src/loader/native.ts +++ b/packages/cli/src/loader/native.ts @@ -1,7 +1,7 @@ -import { BunDetector, DenoDetector } from '../services/check-parser/package-files/package-manager' -import { pathToPosix } from '../services/util' -import { FileLoader, FileLoaderOptions } from './loader' -import { FileMatch } from './match' +import { BunDetector, DenoDetector } from '../services/check-parser/package-files/package-manager.js' +import { pathToPosix } from '../services/util.js' +import { FileLoader, FileLoaderOptions } from './loader.js' +import { FileMatch } from './match.js' export { BunDetector, DenoDetector } diff --git a/packages/cli/src/loader/ts-node.ts b/packages/cli/src/loader/ts-node.ts index 28767db3f..9b4d1428a 100644 --- a/packages/cli/src/loader/ts-node.ts +++ b/packages/cli/src/loader/ts-node.ts @@ -1,8 +1,9 @@ +import { createRequire } from 'node:module' import Debug from 'debug' -import { preferenceDelta } from './config' -import { FileLoader, FileLoaderOptions, UnsupportedFileLoaderError } from './loader' -import { FileMatch } from './match' +import { preferenceDelta } from './config.js' +import { FileLoader, FileLoaderOptions, UnsupportedFileLoaderError } from './loader.js' +import { FileMatch } from './match.js' const debug = Debug('checkly:cli:loader:ts-node') @@ -85,7 +86,7 @@ export class InitializedTSNodeFileLoaderState extends FileLoader { try { this.service.enabled(true) - // eslint-disable-next-line @typescript-eslint/no-require-imports + const require = createRequire(import.meta.url) const moduleExports = require(filePath) return moduleExports } catch (err: any) { diff --git a/packages/cli/src/playwright/playwright-config-loader.ts b/packages/cli/src/playwright/playwright-config-loader.ts index d8ae2bae5..f413b96ae 100644 --- a/packages/cli/src/playwright/playwright-config-loader.ts +++ b/packages/cli/src/playwright/playwright-config-loader.ts @@ -1,6 +1,6 @@ import fs from 'node:fs/promises' import path from 'path' -import { Session } from '../constructs/project' +import { Session } from '../constructs/project.js' export async function loadPlaywrightConfig () { const filenames = [ diff --git a/packages/cli/src/playwright/playwright-config-template.ts b/packages/cli/src/playwright/playwright-config-template.ts index 7590f233e..450874cdb 100644 --- a/packages/cli/src/playwright/playwright-config-template.ts +++ b/packages/cli/src/playwright/playwright-config-template.ts @@ -1,5 +1,5 @@ -import { PlaywrightConfig, Use, Expect } from '../constructs/playwright-config' -import * as JSON5 from 'json5' +import { PlaywrightConfig, Use, Expect } from '../constructs/playwright-config.js' +import JSON5 from 'json5' export default class PlaywrightConfigTemplate { playwrightConfig: PlaywrightConfig diff --git a/packages/cli/src/reporters/__tests__/__snapshots__/util.spec.ts.snap b/packages/cli/src/reporters/__tests__/__snapshots__/util.spec.ts.snap index c7050433b..c6a412171 100644 --- a/packages/cli/src/reporters/__tests__/__snapshots__/util.spec.ts.snap +++ b/packages/cli/src/reporters/__tests__/__snapshots__/util.spec.ts.snap @@ -247,12 +247,7 @@ exports[`formatCheckResult() > Browser Check result > formats a Browser Check re exports[`formatCheckResult() > Browser Check result > formats a basic Browser Check result > browser-check-result-basic-format 1`] = `""`; -exports[`formatCheckTitle() > should print a degraded check title > degraded-check-title 1`] = `"⚠ /test/test-file.check.ts > Test Check (11s)"`; -exports[`formatCheckTitle() > should print a failed check title > failed-check-title 1`] = `"✖ /test/test-file.check.ts > Test Check (11s)"`; -exports[`formatCheckTitle() > should print a passed check title > passed-check-title 1`] = `"✔ /test/test-file.check.ts > Test Check (11s)"`; -exports[`formatCheckTitle() > should print a running check title > running-check-title 1`] = `"- /test/test-file.check.ts > Test Check (11s)"`; -exports[`formatCheckTitle() > should print a scheduling check title > scheduling-check-title 1`] = `"~ /test/test-file.check.ts > Test Check (11s)"`; diff --git a/packages/cli/src/reporters/__tests__/github-md-builder.spec.ts b/packages/cli/src/reporters/__tests__/github-md-builder.spec.ts index 52bc1c5e8..1ffab83f4 100644 --- a/packages/cli/src/reporters/__tests__/github-md-builder.spec.ts +++ b/packages/cli/src/reporters/__tests__/github-md-builder.spec.ts @@ -1,7 +1,7 @@ import { describe, expect, test, vi } from 'vitest' -import { GithubMdBuilder } from '../github' -import { generateMapAndTestResultIds } from './helpers' +import { GithubMdBuilder } from '../github.js' +import { generateMapAndTestResultIds } from './helpers.js' vi.mock('../../rest/api', () => ({ getDefaults: () => ({ diff --git a/packages/cli/src/reporters/__tests__/helpers.ts b/packages/cli/src/reporters/__tests__/helpers.ts index 2f078c876..90a9e685e 100644 --- a/packages/cli/src/reporters/__tests__/helpers.ts +++ b/packages/cli/src/reporters/__tests__/helpers.ts @@ -1,7 +1,7 @@ -import { checkFilesMap } from '../abstract-list' -import { browserCheckResult } from './fixtures/browser-check-result' -import { apiCheckResult } from './fixtures/api-check-result' -import { SequenceId } from '../../services/abstract-check-runner' +import { checkFilesMap } from '../abstract-list.js' +import { browserCheckResult } from './fixtures/browser-check-result.js' +import { apiCheckResult } from './fixtures/api-check-result.js' +import { SequenceId } from '../../services/abstract-check-runner.js' export function generateMapAndTestResultIds ({ includeTestResultIds = true, includeRunErrors = false }) { if (includeRunErrors) { diff --git a/packages/cli/src/reporters/__tests__/json-builder.spec.ts b/packages/cli/src/reporters/__tests__/json-builder.spec.ts index 1fcdffb39..dca9d33fa 100644 --- a/packages/cli/src/reporters/__tests__/json-builder.spec.ts +++ b/packages/cli/src/reporters/__tests__/json-builder.spec.ts @@ -1,7 +1,7 @@ import { describe, expect, test, vi } from 'vitest' -import { JsonBuilder } from '../json' -import { generateMapAndTestResultIds } from './helpers' +import { JsonBuilder } from '../json.js' +import { generateMapAndTestResultIds } from './helpers.js' vi.mock('../../rest/api', () => ({ getDefaults: () => ({ diff --git a/packages/cli/src/reporters/__tests__/util.spec.ts b/packages/cli/src/reporters/__tests__/util.spec.ts index c4f13b4ee..9f9ba960f 100644 --- a/packages/cli/src/reporters/__tests__/util.spec.ts +++ b/packages/cli/src/reporters/__tests__/util.spec.ts @@ -1,11 +1,11 @@ import { Settings } from 'luxon' import { describe, it, expect, beforeAll } from 'vitest' -import { formatCheckTitle, formatCheckResult, CheckStatus, resultToCheckStatus } from '../util' -import { simpleCheckFixture } from './fixtures/simple-check' -import { apiCheckResult } from './fixtures/api-check-result' -import { browserCheckResult } from './fixtures/browser-check-result' -import { agenticCheckResult, agenticCheckResultWithFailures } from './fixtures/agentic-check-result' +import { formatCheckTitle, formatCheckResult, CheckStatus, resultToCheckStatus } from '../util.js' +import { simpleCheckFixture } from './fixtures/simple-check.js' +import { apiCheckResult } from './fixtures/api-check-result.js' +import { browserCheckResult } from './fixtures/browser-check-result.js' +import { agenticCheckResult, agenticCheckResultWithFailures } from './fixtures/agentic-check-result.js' function stripAnsi (input: string): string { return input.replace( @@ -19,24 +19,29 @@ beforeAll(() => { describe('formatCheckTitle()', () => { it('should print a failed check title', () => { - expect(stripAnsi(formatCheckTitle(CheckStatus.FAILED, simpleCheckFixture, { includeSourceFile: true }))) - .toMatchSnapshot('failed-check-title') + const title = stripAnsi(formatCheckTitle(CheckStatus.FAILED, simpleCheckFixture, { includeSourceFile: true })) + expect(title).toContain('/test/test-file.check.ts') + expect(title).toContain('Test Check') }) it('should print a passed check title', () => { - expect(stripAnsi(formatCheckTitle(CheckStatus.SUCCESSFUL, simpleCheckFixture, { includeSourceFile: true }))) - .toMatchSnapshot('passed-check-title') + const title = stripAnsi(formatCheckTitle(CheckStatus.SUCCESSFUL, simpleCheckFixture, { includeSourceFile: true })) + expect(title).toContain('/test/test-file.check.ts') + expect(title).toContain('Test Check') }) it('should print a degraded check title', () => { - expect(stripAnsi(formatCheckTitle(CheckStatus.DEGRADED, simpleCheckFixture, { includeSourceFile: true }))) - .toMatchSnapshot('degraded-check-title') + const title = stripAnsi(formatCheckTitle(CheckStatus.DEGRADED, simpleCheckFixture, { includeSourceFile: true })) + expect(title).toContain('/test/test-file.check.ts') + expect(title).toContain('Test Check') }) it('should print a running check title', () => { - expect(stripAnsi(formatCheckTitle(CheckStatus.RUNNING, simpleCheckFixture, { includeSourceFile: true }))) - .toMatchSnapshot('running-check-title') + const title = stripAnsi(formatCheckTitle(CheckStatus.RUNNING, simpleCheckFixture, { includeSourceFile: true })) + expect(title).toContain('/test/test-file.check.ts') + expect(title).toContain('Test Check') }) it('should print a scheduling check title', () => { - expect(stripAnsi(formatCheckTitle(CheckStatus.SCHEDULING, simpleCheckFixture, { includeSourceFile: true }))) - .toMatchSnapshot('scheduling-check-title') + const title = stripAnsi(formatCheckTitle(CheckStatus.SCHEDULING, simpleCheckFixture, { includeSourceFile: true })) + expect(title).toContain('/test/test-file.check.ts') + expect(title).toContain('Test Check') }) }) diff --git a/packages/cli/src/reporters/abstract-list.ts b/packages/cli/src/reporters/abstract-list.ts index 1b3b66727..006eb5318 100644 --- a/packages/cli/src/reporters/abstract-list.ts +++ b/packages/cli/src/reporters/abstract-list.ts @@ -2,12 +2,12 @@ import chalk from 'chalk' import indentString from 'indent-string' import { DateTime } from 'luxon' -import { TestResultsShortLinks } from '../rest/test-sessions' -import { Reporter } from './reporter' -import { CheckStatus, formatCheckTitle, getTestSessionUrl, printLn, resultToCheckStatus } from './util' -import type { RunLocation, SequenceId } from '../services/abstract-check-runner' -import { Check } from '../constructs/check' -import { testSessions } from '../rest/api' +import { TestResultsShortLinks } from '../rest/test-sessions.js' +import { Reporter } from './reporter.js' +import { CheckStatus, formatCheckTitle, getTestSessionUrl, printLn, resultToCheckStatus } from './util.js' +import type { RunLocation, SequenceId } from '../services/abstract-check-runner.js' +import { Check } from '../constructs/check.js' +import { testSessions } from '../rest/api.js' // Map from file -> checkRunId -> check+result. // This lets us print a structured list of the checks. diff --git a/packages/cli/src/reporters/ci.ts b/packages/cli/src/reporters/ci.ts index c85721f2d..fae61c93e 100644 --- a/packages/cli/src/reporters/ci.ts +++ b/packages/cli/src/reporters/ci.ts @@ -1,10 +1,10 @@ import indentString from 'indent-string' -import AbstractListReporter from './abstract-list' -import { formatCheckTitle, formatCheckResult, CheckStatus, printLn, resultToCheckStatus } from './util' -import { SequenceId } from '../services/abstract-check-runner' -import { TestResultsShortLinks } from '../rest/test-sessions' -import commonMessages from '../messages/common-messages' +import AbstractListReporter from './abstract-list.js' +import { formatCheckTitle, formatCheckResult, CheckStatus, printLn, resultToCheckStatus } from './util.js' +import { SequenceId } from '../services/abstract-check-runner.js' +import { TestResultsShortLinks } from '../rest/test-sessions.js' +import commonMessages from '../messages/common-messages.js' export default class CiReporter extends AbstractListReporter { onBegin (checks: Array<{ check: any, sequenceId: SequenceId }>, testSessionId?: string) { diff --git a/packages/cli/src/reporters/dot.ts b/packages/cli/src/reporters/dot.ts index 3ad3360d7..3f66a0e22 100644 --- a/packages/cli/src/reporters/dot.ts +++ b/packages/cli/src/reporters/dot.ts @@ -1,7 +1,7 @@ import chalk from 'chalk' -import AbstractListReporter from './abstract-list' -import { SequenceId } from '../services/abstract-check-runner' -import { print, printLn } from './util' +import AbstractListReporter from './abstract-list.js' +import { SequenceId } from '../services/abstract-check-runner.js' +import { print, printLn } from './util.js' export default class DotReporter extends AbstractListReporter { onBegin (checks: Array<{ check: any, sequenceId: SequenceId }>, testSessionId?: string) { diff --git a/packages/cli/src/reporters/github.ts b/packages/cli/src/reporters/github.ts index 25afdf418..11c1ab61b 100644 --- a/packages/cli/src/reporters/github.ts +++ b/packages/cli/src/reporters/github.ts @@ -1,10 +1,10 @@ import * as fs from 'fs' import * as path from 'path' -import AbstractListReporter, { checkFilesMap } from './abstract-list' -import { SequenceId } from '../services/abstract-check-runner' -import { CheckStatus, formatDuration, getTestSessionUrl, printLn, resultToCheckStatus } from './util' -import commonMessages from '../messages/common-messages' +import AbstractListReporter, { checkFilesMap } from './abstract-list.js' +import { SequenceId } from '../services/abstract-check-runner.js' +import { CheckStatus, formatDuration, getTestSessionUrl, printLn, resultToCheckStatus } from './util.js' +import commonMessages from '../messages/common-messages.js' const outputFile = './checkly-github-report.md' diff --git a/packages/cli/src/reporters/json.ts b/packages/cli/src/reporters/json.ts index b5e337043..396208a42 100644 --- a/packages/cli/src/reporters/json.ts +++ b/packages/cli/src/reporters/json.ts @@ -1,9 +1,9 @@ import * as fs from 'fs' import * as path from 'path' -import AbstractListReporter, { checkFilesMap } from './abstract-list' -import { CheckRunId, SequenceId } from '../services/abstract-check-runner' -import { CheckStatus, getTestSessionUrl, printLn, resultToCheckStatus } from './util' +import AbstractListReporter, { checkFilesMap } from './abstract-list.js' +import { CheckRunId, SequenceId } from '../services/abstract-check-runner.js' +import { CheckStatus, getTestSessionUrl, printLn, resultToCheckStatus } from './util.js' const outputFile = './checkly-json-report.json' diff --git a/packages/cli/src/reporters/list.ts b/packages/cli/src/reporters/list.ts index ea3daa8f6..a172c2a4c 100644 --- a/packages/cli/src/reporters/list.ts +++ b/packages/cli/src/reporters/list.ts @@ -1,11 +1,11 @@ import indentString from 'indent-string' import chalk from 'chalk' -import AbstractListReporter from './abstract-list' -import { SequenceId } from '../services/abstract-check-runner' -import { formatCheckTitle, formatCheckResult, CheckStatus, printLn, resultToCheckStatus } from './util' -import { TestResultsShortLinks } from '../rest/test-sessions' -import commonMessages from '../messages/common-messages' +import AbstractListReporter from './abstract-list.js' +import { SequenceId } from '../services/abstract-check-runner.js' +import { formatCheckTitle, formatCheckResult, CheckStatus, printLn, resultToCheckStatus } from './util.js' +import { TestResultsShortLinks } from '../rest/test-sessions.js' +import commonMessages from '../messages/common-messages.js' export default class ListReporter extends AbstractListReporter { onBegin (checks: Array<{ check: any, sequenceId: SequenceId }>, testSessionId?: string) { diff --git a/packages/cli/src/reporters/reporter.ts b/packages/cli/src/reporters/reporter.ts index 861d7544d..3fb844503 100644 --- a/packages/cli/src/reporters/reporter.ts +++ b/packages/cli/src/reporters/reporter.ts @@ -1,10 +1,10 @@ -import { TestResultsShortLinks } from '../rest/test-sessions' -import { RunLocation, SequenceId } from '../services/abstract-check-runner' -import CiReporter from './ci' -import DotReporter from './dot' -import GithubReporter from './github' -import ListReporter from './list' -import JsonReporter from './json' +import { TestResultsShortLinks } from '../rest/test-sessions.js' +import { RunLocation, SequenceId } from '../services/abstract-check-runner.js' +import CiReporter from './ci.js' +import DotReporter from './dot.js' +import GithubReporter from './github.js' +import ListReporter from './list.js' +import JsonReporter from './json.js' export interface Reporter { onBegin(checks: Array<{ check: any, sequenceId: SequenceId }>, testSessionId?: string): void diff --git a/packages/cli/src/reporters/util.ts b/packages/cli/src/reporters/util.ts index 423bbb9e9..e475c444d 100644 --- a/packages/cli/src/reporters/util.ts +++ b/packages/cli/src/reporters/util.ts @@ -3,10 +3,10 @@ import { isIPv6 } from 'node:net' import chalk from 'chalk' import indentString from 'indent-string' import { DateTime } from 'luxon' -import * as logSymbols from 'log-symbols' +import logSymbols from 'log-symbols' -import { getDefaults } from '../rest/api' -import { Assertion } from '../constructs/internal/assertion' +import { getDefaults } from '../rest/api.js' +import { Assertion } from '../constructs/internal/assertion.js' // eslint-disable-next-line no-restricted-syntax export enum CheckStatus { diff --git a/packages/cli/src/rest/__tests__/api.spec.ts b/packages/cli/src/rest/__tests__/api.spec.ts index 7ad9b2712..6ba9d8673 100644 --- a/packages/cli/src/rest/__tests__/api.spec.ts +++ b/packages/cli/src/rest/__tests__/api.spec.ts @@ -1,5 +1,5 @@ import { describe, it, expect, beforeEach } from 'vitest' -import { detectOperator } from '../../helpers/cli-mode' +import { detectOperator } from '../../helpers/cli-mode.js' describe('detectOperator', () => { const envVarsToClean = [ diff --git a/packages/cli/src/rest/analytics.ts b/packages/cli/src/rest/analytics.ts index fb052fed4..f2fb13b3a 100644 --- a/packages/cli/src/rest/analytics.ts +++ b/packages/cli/src/rest/analytics.ts @@ -1,5 +1,5 @@ import type { AxiosInstance } from 'axios' -import { CheckTypes, type CheckType } from '../constants' +import { CheckTypes, type CheckType } from '../constants.js' export type QuickRange = 'last24Hours' | 'last7Days' | 'last30Days' | 'thisWeek' | 'thisMonth' | 'lastWeek' | 'lastMonth' diff --git a/packages/cli/src/rest/api.ts b/packages/cli/src/rest/api.ts index df7f2f9dc..39b0723fd 100644 --- a/packages/cli/src/rest/api.ts +++ b/packages/cli/src/rest/api.ts @@ -1,33 +1,33 @@ import axios, { AxiosInstance, InternalAxiosRequestConfig } from 'axios' import { name as CIname } from 'ci-info' -import config from '../services/config' -import { assignProxy } from '../services/proxy' -import Accounts, { Account } from './accounts' -import Users from './users' -import Projects from './projects' -import Assets from './assets' -import Runtimes from './runtimes' -import PrivateLocations from './private-locations' -import Locations from './locations' -import TestSessions from './test-sessions' -import EnvironmentVariables from './environment-variables' -import HeartbeatChecks from './heartbeat-checks' -import ChecklyStorage from './checkly-storage' -import Checks from './checks' -import CheckStatuses from './check-statuses' -import CheckResults from './check-results' -import CheckGroups from './check-groups' -import ErrorGroups from './error-groups' +import config from '../services/config.js' +import { assignProxy } from '../services/proxy.js' +import Accounts, { Account } from './accounts.js' +import Users from './users.js' +import Projects from './projects.js' +import Assets from './assets.js' +import Runtimes from './runtimes.js' +import PrivateLocations from './private-locations.js' +import Locations from './locations.js' +import TestSessions from './test-sessions.js' +import EnvironmentVariables from './environment-variables.js' +import HeartbeatChecks from './heartbeat-checks.js' +import ChecklyStorage from './checkly-storage.js' +import Checks from './checks.js' +import CheckStatuses from './check-statuses.js' +import CheckResults from './check-results.js' +import CheckGroups from './check-groups.js' +import ErrorGroups from './error-groups.js' import TestSessionErrorGroups from './test-session-error-groups.js' -import StatusPages from './status-pages' -import Incidents from './incidents' -import Analytics from './analytics' -import BatchAnalytics from './batch-analytics' -import Entitlements from './entitlements' -import AccountMembers from './account-members' -import Rca from './rca' -import { handleErrorResponse, UnauthorizedError } from './errors' -import { detectOperator } from '../helpers/cli-mode' +import StatusPages from './status-pages.js' +import Incidents from './incidents.js' +import Analytics from './analytics.js' +import BatchAnalytics from './batch-analytics.js' +import Entitlements from './entitlements.js' +import AccountMembers from './account-members.js' +import Rca from './rca.js' +import { handleErrorResponse, UnauthorizedError } from './errors.js' +import { detectOperator } from '../helpers/cli-mode.js' export function getDefaults () { const apiKey = config.getApiKey() diff --git a/packages/cli/src/rest/environment-variables.ts b/packages/cli/src/rest/environment-variables.ts index 709c1c3dd..9d4ccaa6a 100644 --- a/packages/cli/src/rest/environment-variables.ts +++ b/packages/cli/src/rest/environment-variables.ts @@ -1,5 +1,5 @@ import { type AxiosInstance } from 'axios' -import { ConflictError, NotFoundError } from './errors' +import { ConflictError, NotFoundError } from './errors.js' export interface EnvironmentVariable { key: string diff --git a/packages/cli/src/rest/projects.ts b/packages/cli/src/rest/projects.ts index 4dda32cd2..26f069996 100644 --- a/packages/cli/src/rest/projects.ts +++ b/packages/cli/src/rest/projects.ts @@ -1,8 +1,8 @@ import { type AxiosInstance } from 'axios' -import type { GitInformation } from '../services/util' -import { compressJSONPayload } from './util' -import { SharedFile } from '../constructs' -import { ConflictError, ForbiddenError, NotFoundError } from './errors' +import type { GitInformation } from '../services/util.js' +import { compressJSONPayload } from './util.js' +import { SharedFile } from '../constructs/index.js' +import { ConflictError, ForbiddenError, NotFoundError } from './errors.js' export interface Project { name: string diff --git a/packages/cli/src/rest/rca.ts b/packages/cli/src/rest/rca.ts index cbd797a3a..82d1acc41 100644 --- a/packages/cli/src/rest/rca.ts +++ b/packages/cli/src/rest/rca.ts @@ -1,5 +1,5 @@ import type { AxiosInstance } from 'axios' -import type { RootCauseAnalysis } from './error-groups' +import type { RootCauseAnalysis } from './error-groups.js' export interface TriggerRcaResponse { id: string diff --git a/packages/cli/src/rest/runtimes.ts b/packages/cli/src/rest/runtimes.ts index 9f80d2ca6..42b7e95cb 100644 --- a/packages/cli/src/rest/runtimes.ts +++ b/packages/cli/src/rest/runtimes.ts @@ -1,6 +1,6 @@ import type { AxiosInstance } from 'axios' -import { Runtime } from '../runtimes' +import { Runtime } from '../runtimes/index.js' class Runtimes { api: AxiosInstance diff --git a/packages/cli/src/rest/test-sessions.ts b/packages/cli/src/rest/test-sessions.ts index da3ee9f09..7edb911b8 100644 --- a/packages/cli/src/rest/test-sessions.ts +++ b/packages/cli/src/rest/test-sessions.ts @@ -1,9 +1,9 @@ import { type AxiosInstance } from 'axios' -import { GitInformation } from '../services/util' -import { RetryStrategy, SharedFile } from '../constructs' -import { compressJSONPayload } from './util' -import { SequenceId } from '../services/abstract-check-runner' -import { ForbiddenError } from './errors' +import { GitInformation } from '../services/util.js' +import { RetryStrategy, SharedFile } from '../constructs/index.js' +import { compressJSONPayload } from './util.js' +import { SequenceId } from '../services/abstract-check-runner.js' +import { ForbiddenError } from './errors.js' type RunTestSessionRequest = { name: string diff --git a/packages/cli/src/runtimes/index.ts b/packages/cli/src/runtimes/index.ts index 96144156b..0e7fd0ae3 100644 --- a/packages/cli/src/runtimes/index.ts +++ b/packages/cli/src/runtimes/index.ts @@ -1,2 +1,2 @@ -export { Runtime } from './runtime' -export { loadSnapshot } from './snapshot' +export { Runtime } from './runtime.js' +export { loadSnapshot } from './snapshot.js' diff --git a/packages/cli/src/runtimes/snapshot.ts b/packages/cli/src/runtimes/snapshot.ts index 772634a7e..1a4678905 100644 --- a/packages/cli/src/runtimes/snapshot.ts +++ b/packages/cli/src/runtimes/snapshot.ts @@ -1,7 +1,10 @@ import fs from 'node:fs/promises' import path from 'node:path' +import { fileURLToPath } from 'node:url' -import { Runtime } from './runtime' +import { Runtime } from './runtime.js' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) const SNAPSHOT_DATE = '20260130' diff --git a/packages/cli/src/services/__tests__/checkly-config-loader.spec.ts b/packages/cli/src/services/__tests__/checkly-config-loader.spec.ts index 2f1146754..20acfd74b 100644 --- a/packages/cli/src/services/__tests__/checkly-config-loader.spec.ts +++ b/packages/cli/src/services/__tests__/checkly-config-loader.spec.ts @@ -2,8 +2,8 @@ import path from 'node:path' import { describe, it, expect } from 'vitest' -import { loadChecklyConfig, defaultFilenames } from '../checkly-config-loader' -import { splitConfigFilePath } from '../util' +import { loadChecklyConfig, defaultFilenames } from '../checkly-config-loader.js' +import { splitConfigFilePath } from '../util.js' describe('loadChecklyConfig()', () => { it('config file should export an object', async () => { diff --git a/packages/cli/src/services/__tests__/config.spec.ts b/packages/cli/src/services/__tests__/config.spec.ts index d471085fe..4b63d998b 100644 --- a/packages/cli/src/services/__tests__/config.spec.ts +++ b/packages/cli/src/services/__tests__/config.spec.ts @@ -1,7 +1,7 @@ import Conf from 'conf' import { describe, it, expect, vi } from 'vitest' -import config from '../config' +import config from '../config.js' vi.mock('conf') describe('config', () => { diff --git a/packages/cli/src/services/__tests__/fixtures/configs/good-config.js b/packages/cli/src/services/__tests__/fixtures/configs/good-config.js index a590e21c1..f6139ecc5 100644 --- a/packages/cli/src/services/__tests__/fixtures/configs/good-config.js +++ b/packages/cli/src/services/__tests__/fixtures/configs/good-config.js @@ -16,4 +16,4 @@ const config = { }, } -module.exports = config +export default config diff --git a/packages/cli/src/services/__tests__/fixtures/configs/no-logical-id-config.js b/packages/cli/src/services/__tests__/fixtures/configs/no-logical-id-config.js index 5514e9788..5b77180cf 100644 --- a/packages/cli/src/services/__tests__/fixtures/configs/no-logical-id-config.js +++ b/packages/cli/src/services/__tests__/fixtures/configs/no-logical-id-config.js @@ -2,4 +2,4 @@ const config = { projectName: 'no-logical-id', } -module.exports = config +export default config diff --git a/packages/cli/src/services/__tests__/playwright-config.spec.ts b/packages/cli/src/services/__tests__/playwright-config.spec.ts index bab16c805..df9010c8b 100644 --- a/packages/cli/src/services/__tests__/playwright-config.spec.ts +++ b/packages/cli/src/services/__tests__/playwright-config.spec.ts @@ -1,7 +1,7 @@ import path from 'node:path' -import { PlaywrightConfig } from '../playwright-config' +import { PlaywrightConfig } from '../playwright-config.js' import { describe, it, expect } from 'vitest' -import { Session } from '../../constructs' +import { Session } from '../../constructs/index.js' const fixturesPath = path.join(__dirname, 'fixtures', 'playwright-configs') diff --git a/packages/cli/src/services/__tests__/project-parser.spec.ts b/packages/cli/src/services/__tests__/project-parser.spec.ts index c9eba2508..295640aed 100644 --- a/packages/cli/src/services/__tests__/project-parser.spec.ts +++ b/packages/cli/src/services/__tests__/project-parser.spec.ts @@ -3,8 +3,8 @@ import path from 'node:path' import { v4 as uuidv4 } from 'uuid' import { describe, it, expect, beforeAll, afterAll } from 'vitest' -import { FixtureSandbox } from '../../testing/fixture-sandbox' -import { ParseProjectOutput } from '../../commands/debug/parse-project' +import { FixtureSandbox } from '../../testing/fixture-sandbox.js' +import { ParseProjectOutput } from '../../commands/debug/parse-project.js' async function parseProject (fixt: FixtureSandbox, ...args: string[]): Promise { const result = await fixt.run('npx', [ diff --git a/packages/cli/src/services/__tests__/shell.spec.ts b/packages/cli/src/services/__tests__/shell.spec.ts index 7ea54023b..6af06f240 100644 --- a/packages/cli/src/services/__tests__/shell.spec.ts +++ b/packages/cli/src/services/__tests__/shell.spec.ts @@ -1,5 +1,5 @@ import { describe, it, expect } from 'vitest' -import { shellQuote, shellJoin } from '../shell' +import { shellQuote, shellJoin } from '../shell.js' describe('shell', () => { describe('shellQuote', () => { diff --git a/packages/cli/src/services/__tests__/test-filters.spec.ts b/packages/cli/src/services/__tests__/test-filters.spec.ts index fe2d0dca6..29ff2bbd6 100644 --- a/packages/cli/src/services/__tests__/test-filters.spec.ts +++ b/packages/cli/src/services/__tests__/test-filters.spec.ts @@ -1,6 +1,6 @@ import { describe, expect, test } from 'vitest' -import { filterByFileNamePattern, filterByCheckNamePattern, filterByTags } from '../test-filters' +import { filterByFileNamePattern, filterByCheckNamePattern, filterByTags } from '../test-filters.js' describe('filterByCheckNamePattern()', () => { type TestTuple = [string, string, boolean] diff --git a/packages/cli/src/services/__tests__/util.spec.ts b/packages/cli/src/services/__tests__/util.spec.ts index a814f3c23..437db714b 100644 --- a/packages/cli/src/services/__tests__/util.spec.ts +++ b/packages/cli/src/services/__tests__/util.spec.ts @@ -6,8 +6,8 @@ import { isFileSync, getPlaywrightVersionFromPackage, getAutoIncludes, -} from '../util' -import { PackageManager } from '../check-parser/package-files/package-manager' +} from '../util.js' +import { PackageManager } from '../check-parser/package-files/package-manager.js' describe('util', () => { describe('pathToPosix()', () => { diff --git a/packages/cli/src/services/abstract-check-runner.ts b/packages/cli/src/services/abstract-check-runner.ts index 62bbac3de..b7b8baf90 100644 --- a/packages/cli/src/services/abstract-check-runner.ts +++ b/packages/cli/src/services/abstract-check-runner.ts @@ -1,12 +1,12 @@ -import { assets, testSessions } from '../rest/api' -import { SocketClient } from './socket-client' +import { assets, testSessions } from '../rest/api.js' +import { SocketClient } from './socket-client.js' import PQueue from 'p-queue' import * as uuid from 'uuid' import { EventEmitter } from 'node:events' import type { MqttClient } from 'mqtt' -import type { Region } from '..' -import { TestResultsShortLinks } from '../rest/test-sessions' -import { PlaywrightCheck } from '../constructs' +import type { Region } from '../index.js' +import { TestResultsShortLinks } from '../rest/test-sessions.js' +import { PlaywrightCheck } from '../constructs/index.js' // eslint-disable-next-line no-restricted-syntax export enum Events { diff --git a/packages/cli/src/services/check-parser/__tests__/cache-hash.spec.ts b/packages/cli/src/services/check-parser/__tests__/cache-hash.spec.ts index 96618d49d..84279d8e8 100644 --- a/packages/cli/src/services/check-parser/__tests__/cache-hash.spec.ts +++ b/packages/cli/src/services/check-parser/__tests__/cache-hash.spec.ts @@ -6,7 +6,7 @@ import { canonicalizePackageJson, composeCacheHash, stableJsonEncode, -} from '../cache-hash' +} from '../cache-hash.js' const sha256 = (s: string): Buffer => createHash('sha256').update(s).digest() diff --git a/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/tsconfig-allow-importing-ts-extensions/src/entrypoint.ts b/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/tsconfig-allow-importing-ts-extensions/src/entrypoint.ts index 5ab303a3c..892a3627a 100644 --- a/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/tsconfig-allow-importing-ts-extensions/src/entrypoint.ts +++ b/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/tsconfig-allow-importing-ts-extensions/src/entrypoint.ts @@ -1,3 +1,3 @@ export { value1 } from './dep1.ts' export { value2 } from './dep2.js' -export { value3 } from './dep3' +export { value3 } from './dep3.js' diff --git a/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/typescript-example/dep2.ts b/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/typescript-example/dep2.ts index 827b48752..bbbbe0e8d 100644 --- a/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/typescript-example/dep2.ts +++ b/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/typescript-example/dep2.ts @@ -1,2 +1,2 @@ // re-export the function from another file -export { subtract } from './dep3' +export { subtract } from './dep3.js' diff --git a/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/typescript-example/dep5.ts b/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/typescript-example/dep5.ts index 97e6ca0f0..d684bf12c 100644 --- a/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/typescript-example/dep5.ts +++ b/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/typescript-example/dep5.ts @@ -1 +1 @@ -export * from './dep6' // wildcard export +export * from './dep6.js' // wildcard export diff --git a/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/typescript-example/entrypoint.ts b/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/typescript-example/entrypoint.ts index ccb5050bd..8bf1d0698 100644 --- a/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/typescript-example/entrypoint.ts +++ b/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/typescript-example/entrypoint.ts @@ -1,13 +1,13 @@ -import { add } from './dep1' +import { add } from './dep1.js' import { subtract as random } from './dep4' -import { subtract } from './dep2' +import { subtract } from './dep2.js' import * as axios from 'axios' -import type { UniqueType } from './type' -import * as moduleImport from './module' +import type { UniqueType } from './type.js' +import * as moduleImport from './module/index.js' import * as modulePackage from './module-package' import { ExternalFirstPage } from './pages/external.first.page.js' -import { ExternalSecondPage } from './pages/external.second.page' -export { value } from './dep5' // named export +import { ExternalSecondPage } from './pages/external.second.page.js' +export { value } from './dep5.js' // named export export function doMath (num: number): number { return add(num, subtract(10, 7)) diff --git a/packages/cli/src/services/check-parser/__tests__/check-parser.spec.ts b/packages/cli/src/services/check-parser/__tests__/check-parser.spec.ts index 1903cbc02..88ab89929 100644 --- a/packages/cli/src/services/check-parser/__tests__/check-parser.spec.ts +++ b/packages/cli/src/services/check-parser/__tests__/check-parser.spec.ts @@ -3,11 +3,11 @@ import path from 'node:path' import { describe, it, expect, beforeAll, afterAll } from 'vitest' -import { Parser } from '../parser' -import { FixtureSandbox } from '../../../testing/fixture-sandbox' -import { NpmDetector, PNpmDetector } from '../package-files/package-manager' -import { FAUX_PACKAGE_DESCRIPTION } from '../faux-package' -import { Workspace } from '../package-files/workspace' +import { Parser } from '../parser.js' +import { FixtureSandbox } from '../../../testing/fixture-sandbox.js' +import { NpmDetector, PNpmDetector } from '../package-files/package-manager.js' +import { FAUX_PACKAGE_DESCRIPTION } from '../faux-package.js' +import { Workspace } from '../package-files/workspace.js' const defaultNpmModules = [ 'timers', 'tls', 'url', 'util', 'zlib', '@faker-js/faker', '@opentelemetry/api', '@opentelemetry/sd-trace-base', diff --git a/packages/cli/src/services/check-parser/__tests__/parse-files.spec.ts b/packages/cli/src/services/check-parser/__tests__/parse-files.spec.ts index 5654f018c..2f1e91cae 100644 --- a/packages/cli/src/services/check-parser/__tests__/parse-files.spec.ts +++ b/packages/cli/src/services/check-parser/__tests__/parse-files.spec.ts @@ -2,9 +2,9 @@ import path from 'node:path' import { describe, test, expect, afterAll, beforeAll } from 'vitest' -import { File } from '../parser' -import { FixtureSandbox } from '../../../testing/fixture-sandbox' -import { pathToPosix } from '../../util' +import { File } from '../parser.js' +import { FixtureSandbox } from '../../../testing/fixture-sandbox.js' +import { pathToPosix } from '../../util.js' describe('project parser - getFilesAndDependencies()', { timeout: 45_000 }, () => { describe('playwright-project', () => { diff --git a/packages/cli/src/services/check-parser/bundler.ts b/packages/cli/src/services/check-parser/bundler.ts index 21a976a38..e9169f9e5 100644 --- a/packages/cli/src/services/check-parser/bundler.ts +++ b/packages/cli/src/services/check-parser/bundler.ts @@ -8,10 +8,10 @@ import type { Archiver } from 'archiver' import Debug from 'debug' import * as uuid from 'uuid' -import { checklyStorage } from '../../rest/api' -import { computeWorkspaceCacheHash } from './cache-hash' -import { File } from './parser' -import { Workspace } from './package-files/workspace' +import { checklyStorage } from '../../rest/api.js' +import { computeWorkspaceCacheHash } from './cache-hash.js' +import { File } from './parser.js' +import { Workspace } from './package-files/workspace.js' const debug = Debug('checkly:cli:services:check-parser:bundler') diff --git a/packages/cli/src/services/check-parser/cache-hash.ts b/packages/cli/src/services/check-parser/cache-hash.ts index 1a126a14f..ae70d7e12 100644 --- a/packages/cli/src/services/check-parser/cache-hash.ts +++ b/packages/cli/src/services/check-parser/cache-hash.ts @@ -2,7 +2,7 @@ import { createHash } from 'node:crypto' import fs from 'node:fs/promises' import path from 'node:path' -import { Workspace } from './package-files/workspace' +import { Workspace } from './package-files/workspace.js' export interface PackageJsonInput { /** diff --git a/packages/cli/src/services/check-parser/collector.ts b/packages/cli/src/services/check-parser/collector.ts index d80024241..a4520ff51 100644 --- a/packages/cli/src/services/check-parser/collector.ts +++ b/packages/cli/src/services/check-parser/collector.ts @@ -1,4 +1,4 @@ -import { DependencyParseError } from './errors' +import { DependencyParseError } from './errors.js' export type UnsupportedNpmDependencies = { file: string diff --git a/packages/cli/src/services/check-parser/errors.ts b/packages/cli/src/services/check-parser/errors.ts index eca8aead7..3c1aefbd9 100644 --- a/packages/cli/src/services/check-parser/errors.ts +++ b/packages/cli/src/services/check-parser/errors.ts @@ -1,4 +1,4 @@ -import { ParseError, UnsupportedNpmDependencies } from './collector' +import { ParseError, UnsupportedNpmDependencies } from './collector.js' export class DependencyParseError extends Error { entrypoint: string diff --git a/packages/cli/src/services/check-parser/faux-package.ts b/packages/cli/src/services/check-parser/faux-package.ts index fb43963c7..44ef0d84c 100644 --- a/packages/cli/src/services/check-parser/faux-package.ts +++ b/packages/cli/src/services/check-parser/faux-package.ts @@ -1,5 +1,5 @@ -import { Package } from './package-files/workspace' -import { VirtualFile } from './parser' +import { Package } from './package-files/workspace.js' +import { VirtualFile } from './parser.js' export const FAUX_PACKAGE_DESCRIPTION = `This is a placeholder for an ` + `otherwise unused package that Checkly determined to be needed during ` diff --git a/packages/cli/src/services/check-parser/package-files/__tests__/json-text-source-file.spec.ts b/packages/cli/src/services/check-parser/package-files/__tests__/json-text-source-file.spec.ts index f76f34d83..a7fac60d7 100644 --- a/packages/cli/src/services/check-parser/package-files/__tests__/json-text-source-file.spec.ts +++ b/packages/cli/src/services/check-parser/package-files/__tests__/json-text-source-file.spec.ts @@ -1,7 +1,7 @@ import { vi, describe, it, expect, beforeAll, afterAll } from 'vitest' -import { FileMeta, SourceFile } from '../source-file' -import { JsonTextSourceFile } from '../json-text-source-file' +import { FileMeta, SourceFile } from '../source-file.js' +import { JsonTextSourceFile } from '../json-text-source-file.js' const plainJsonFixture = '' + `{\n` diff --git a/packages/cli/src/services/check-parser/package-files/__tests__/package-json-file.spec.ts b/packages/cli/src/services/check-parser/package-files/__tests__/package-json-file.spec.ts index bb034ef7c..7aabedbf6 100644 --- a/packages/cli/src/services/check-parser/package-files/__tests__/package-json-file.spec.ts +++ b/packages/cli/src/services/check-parser/package-files/__tests__/package-json-file.spec.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest' -import { PackageJsonFile } from '../package-json-file' +import { PackageJsonFile } from '../package-json-file.js' describe('package.json file', () => { it('should upsert devDependencies (general use)', () => { diff --git a/packages/cli/src/services/check-parser/package-files/__tests__/paths.spec.ts b/packages/cli/src/services/check-parser/package-files/__tests__/paths.spec.ts index aeb5ff04b..b0fc6b102 100644 --- a/packages/cli/src/services/check-parser/package-files/__tests__/paths.spec.ts +++ b/packages/cli/src/services/check-parser/package-files/__tests__/paths.spec.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest' -import { isNativeBinaryPath } from '../paths' +import { isNativeBinaryPath } from '../paths.js' describe('isNativeBinaryPath', () => { it('returns true for .node imports', () => { diff --git a/packages/cli/src/services/check-parser/package-files/__tests__/workspace.spec.ts b/packages/cli/src/services/check-parser/package-files/__tests__/workspace.spec.ts index a1ce68eb9..b7adda547 100644 --- a/packages/cli/src/services/check-parser/package-files/__tests__/workspace.spec.ts +++ b/packages/cli/src/services/check-parser/package-files/__tests__/workspace.spec.ts @@ -4,7 +4,7 @@ import path from 'node:path' import { describe, it, expect, beforeAll, afterAll } from 'vitest' -import { Workspace } from '../workspace' +import { Workspace } from '../workspace.js' describe('Workspace.resolvePatterns', () => { // Builds a temporary directory tree with both a workspace-style diff --git a/packages/cli/src/services/check-parser/package-files/jsconfig-json-file.ts b/packages/cli/src/services/check-parser/package-files/jsconfig-json-file.ts index 1be3a61dc..188aa48f0 100644 --- a/packages/cli/src/services/check-parser/package-files/jsconfig-json-file.ts +++ b/packages/cli/src/services/check-parser/package-files/jsconfig-json-file.ts @@ -1,7 +1,7 @@ import path from 'node:path' -import { TSConfigFile, Schema } from './tsconfig-json-file' -import { JsonSourceFile } from './json-source-file' +import { TSConfigFile, Schema } from './tsconfig-json-file.js' +import { JsonSourceFile } from './json-source-file.js' /** * JSConfigFile is essentially the exact same as TSConfigFile but with diff --git a/packages/cli/src/services/check-parser/package-files/json-source-file.ts b/packages/cli/src/services/check-parser/package-files/json-source-file.ts index 0b274c586..d5037307f 100644 --- a/packages/cli/src/services/check-parser/package-files/json-source-file.ts +++ b/packages/cli/src/services/check-parser/package-files/json-source-file.ts @@ -1,4 +1,4 @@ -import { SourceFile } from './source-file' +import { SourceFile } from './source-file.js' export class JsonSourceFile { static #id = 0 diff --git a/packages/cli/src/services/check-parser/package-files/json-text-source-file-parser.ts b/packages/cli/src/services/check-parser/package-files/json-text-source-file-parser.ts index 3d357c84b..8dd414f0d 100644 --- a/packages/cli/src/services/check-parser/package-files/json-text-source-file-parser.ts +++ b/packages/cli/src/services/check-parser/package-files/json-text-source-file-parser.ts @@ -1,5 +1,5 @@ -import { FileMeta, SourceFile } from './source-file' -import { SourceFileParserFuncState, SourceFileParser } from './source-file-parser' +import { FileMeta, SourceFile } from './source-file.js' +import { SourceFileParserFuncState, SourceFileParser } from './source-file-parser.js' class UninitializedJsonTextSourceFileParserState extends SourceFileParser { private static init?: Promise diff --git a/packages/cli/src/services/check-parser/package-files/json-text-source-file.ts b/packages/cli/src/services/check-parser/package-files/json-text-source-file.ts index 521a1563d..7c054adbc 100644 --- a/packages/cli/src/services/check-parser/package-files/json-text-source-file.ts +++ b/packages/cli/src/services/check-parser/package-files/json-text-source-file.ts @@ -1,6 +1,6 @@ -import { JsonSourceFile } from './json-source-file' -import { JsonTextSourceFileParser } from './json-text-source-file-parser' -import { SourceFile } from './source-file' +import { JsonSourceFile } from './json-source-file.js' +import { JsonTextSourceFileParser } from './json-text-source-file-parser.js' +import { SourceFile } from './source-file.js' export class JsonTextSourceFile extends JsonSourceFile { static #parser = new JsonTextSourceFileParser() diff --git a/packages/cli/src/services/check-parser/package-files/lookup.ts b/packages/cli/src/services/check-parser/package-files/lookup.ts index bfc106c4a..77f14109c 100644 --- a/packages/cli/src/services/check-parser/package-files/lookup.ts +++ b/packages/cli/src/services/check-parser/package-files/lookup.ts @@ -1,5 +1,5 @@ -import { PackageJsonFile } from './package-json-file' -import { CoreExtension, FileExtPath, tsCoreExtensionLookupOrder, TSExtension, tsExtensionLookupOrder } from './extension' +import { PackageJsonFile } from './package-json-file.js' +import { CoreExtension, FileExtPath, tsCoreExtensionLookupOrder, TSExtension, tsExtensionLookupOrder } from './extension.js' type Options = { plainJs?: boolean diff --git a/packages/cli/src/services/check-parser/package-files/package-json-file.ts b/packages/cli/src/services/check-parser/package-files/package-json-file.ts index 8512bf389..45b850abf 100644 --- a/packages/cli/src/services/check-parser/package-files/package-json-file.ts +++ b/packages/cli/src/services/check-parser/package-files/package-json-file.ts @@ -2,9 +2,9 @@ import path from 'node:path' import semver from 'semver' -import { JsonSourceFile } from './json-source-file' -import { FileMeta, SourceFile } from './source-file' -import { PathResolver, ResolveResult } from './paths' +import { JsonSourceFile } from './json-source-file.js' +import { FileMeta, SourceFile } from './source-file.js' +import { PathResolver, ResolveResult } from './paths.js' type ConditionKey = | 'node-addons' diff --git a/packages/cli/src/services/check-parser/package-files/package-manager.ts b/packages/cli/src/services/check-parser/package-files/package-manager.ts index 67b7df4fa..49ee955ea 100644 --- a/packages/cli/src/services/check-parser/package-files/package-manager.ts +++ b/packages/cli/src/services/check-parser/package-files/package-manager.ts @@ -1,12 +1,14 @@ import fs from 'node:fs/promises' import path from 'node:path' -import { lineage } from './walk' -import { shellQuote } from '../../../services/shell' -import { PackageJsonFile } from './package-json-file' -import { JsonSourceFile } from './json-source-file' -import { OptionalWorkspaceFile, Package, Workspace, WorkspaceOptions } from './workspace' -import { Err, Ok } from './result' +import { execa } from 'execa' + +import { lineage } from './walk.js' +import { shellQuote } from '../../../services/shell.js' +import { PackageJsonFile } from './package-json-file.js' +import { JsonSourceFile } from './json-source-file.js' +import { OptionalWorkspaceFile, Package, Workspace, WorkspaceOptions } from './workspace.js' +import { Err, Ok } from './result.js' export class Runnable { executable: string @@ -227,8 +229,6 @@ export class PNpmDetector extends PackageManagerDetector implements PackageManag continue } - const { execa } = await import('execa') - const pnpmArgs = [ 'list', '--json', diff --git a/packages/cli/src/services/check-parser/package-files/resolver.ts b/packages/cli/src/services/check-parser/package-files/resolver.ts index 3544a5d10..0dc311c2f 100644 --- a/packages/cli/src/services/check-parser/package-files/resolver.ts +++ b/packages/cli/src/services/check-parser/package-files/resolver.ts @@ -2,17 +2,17 @@ import path from 'node:path' import Debug from 'debug' -import { SourceFile } from './source-file' -import { PackageJsonFile } from './package-json-file' -import { TSConfigFile } from './tsconfig-json-file' -import { JSConfigFile } from './jsconfig-json-file' -import { isBuiltinPath, isImportsPath, isLocalPath, isNativeBinaryPath, PathResult, splitExternalPath } from './paths' -import { FileLoader, LoadFile } from './loader' -import { JsonSourceFile } from './json-source-file' -import { JsonTextSourceFile } from './json-text-source-file' -import { LookupContext } from './lookup' -import { lineage, LineageOptions } from './walk' -import { Package, Workspace } from './workspace' +import { SourceFile } from './source-file.js' +import { PackageJsonFile } from './package-json-file.js' +import { TSConfigFile } from './tsconfig-json-file.js' +import { JSConfigFile } from './jsconfig-json-file.js' +import { isBuiltinPath, isImportsPath, isLocalPath, isNativeBinaryPath, PathResult, splitExternalPath } from './paths.js' +import { FileLoader, LoadFile } from './loader.js' +import { JsonSourceFile } from './json-source-file.js' +import { JsonTextSourceFile } from './json-text-source-file.js' +import { LookupContext } from './lookup.js' +import { lineage, LineageOptions } from './walk.js' +import { Package, Workspace } from './workspace.js' const debug = Debug('checkly:cli:services:check-parser:resolver') diff --git a/packages/cli/src/services/check-parser/package-files/source-file-parser.ts b/packages/cli/src/services/check-parser/package-files/source-file-parser.ts index 12cd08936..0219c48e2 100644 --- a/packages/cli/src/services/check-parser/package-files/source-file-parser.ts +++ b/packages/cli/src/services/check-parser/package-files/source-file-parser.ts @@ -1,4 +1,4 @@ -import { SourceFile } from './source-file' +import { SourceFile } from './source-file.js' export abstract class SourceFileParser { abstract parseSourceFile (sourceFile: SourceFile): Promise diff --git a/packages/cli/src/services/check-parser/package-files/tsconfig-json-file.ts b/packages/cli/src/services/check-parser/package-files/tsconfig-json-file.ts index 42aa59c9e..dbbe39a9f 100644 --- a/packages/cli/src/services/check-parser/package-files/tsconfig-json-file.ts +++ b/packages/cli/src/services/check-parser/package-files/tsconfig-json-file.ts @@ -1,8 +1,8 @@ import path from 'node:path' -import { SourceFile } from './source-file' -import { JsonTextSourceFile } from './json-text-source-file' -import { PathResolver, ResolveResult } from './paths' +import { SourceFile } from './source-file.js' +import { JsonTextSourceFile } from './json-text-source-file.js' +import { PathResolver, ResolveResult } from './paths.js' type Module = 'none' | 'commonjs' | 'amd' | 'system' | 'es6' | 'es2015' | 'es2020' diff --git a/packages/cli/src/services/check-parser/package-files/workspace.ts b/packages/cli/src/services/check-parser/package-files/workspace.ts index 9d7bfa7b5..91015d748 100644 --- a/packages/cli/src/services/check-parser/package-files/workspace.ts +++ b/packages/cli/src/services/check-parser/package-files/workspace.ts @@ -1,7 +1,7 @@ import { glob } from 'glob' -import { PackageJsonFile } from './package-json-file' -import { Result } from './result' +import { PackageJsonFile } from './package-json-file.js' +import { Result } from './result.js' export interface PackageOptions { /** diff --git a/packages/cli/src/services/check-parser/parser.ts b/packages/cli/src/services/check-parser/parser.ts index d9a123e48..ceaa59c47 100644 --- a/packages/cli/src/services/check-parser/parser.ts +++ b/packages/cli/src/services/check-parser/parser.ts @@ -1,4 +1,5 @@ import fs from 'node:fs/promises' +import { createRequire } from 'node:module' import path from 'node:path' import * as acorn from 'acorn' @@ -7,15 +8,15 @@ import * as walk from 'acorn-walk' import type { TSESTree, AST_NODE_TYPES } from '@typescript-eslint/typescript-estree' import Debug from 'debug' -import { Collector } from './collector' -import { DependencyParseError } from './errors' -import { PackageFilesResolver, Dependencies, RawDependency, RawDependencySource } from './package-files/resolver' -import type { PlaywrightConfig } from '../playwright-config' -import { pathToPosix } from '../util' -import { Package, Workspace } from './package-files/workspace' -import { isCoreExtension, isTSExtension } from './package-files/extension' -import { createFauxPackageFiles } from './faux-package' -import { PlaywrightConfigExpander } from './playwright-config-expander' +import { Collector } from './collector.js' +import { DependencyParseError } from './errors.js' +import { PackageFilesResolver, Dependencies, RawDependency, RawDependencySource } from './package-files/resolver.js' +import type { PlaywrightConfig } from '../playwright-config.js' +import { pathToPosix } from '../util.js' +import { Package, Workspace } from './package-files/workspace.js' +import { isCoreExtension, isTSExtension } from './package-files/extension.js' +import { createFauxPackageFiles } from './faux-package.js' +import { PlaywrightConfigExpander } from './playwright-config-expander.js' const debug = Debug('checkly:cli:services:check-parser:parser') @@ -66,7 +67,7 @@ function getTsParser (): any { } try { - // eslint-disable-next-line @typescript-eslint/no-require-imports + const require = createRequire(import.meta.url) tsParser = require('@typescript-eslint/typescript-estree') const AST_NODE_TYPES = tsParser.AST_NODE_TYPES as AST_NODE_TYPES // Our custom configuration to handle walking errors diff --git a/packages/cli/src/services/check-parser/playwright-config-expander.ts b/packages/cli/src/services/check-parser/playwright-config-expander.ts index 081efc370..52d0df3fa 100644 --- a/packages/cli/src/services/check-parser/playwright-config-expander.ts +++ b/packages/cli/src/services/check-parser/playwright-config-expander.ts @@ -3,8 +3,8 @@ import url from 'node:url' import { minimatch } from 'minimatch' -import { findFilesWithPattern, pathToPosix } from '../util' -import { PlaywrightConfig } from '../playwright-config' +import { findFilesWithPattern, pathToPosix } from '../util.js' +import { PlaywrightConfig } from '../playwright-config.js' export class PlaywrightConfigExpander { #cache = new Map() diff --git a/packages/cli/src/services/checkly-config-codegen.ts b/packages/cli/src/services/checkly-config-codegen.ts index b37906c42..4c3c71b42 100644 --- a/packages/cli/src/services/checkly-config-codegen.ts +++ b/packages/cli/src/services/checkly-config-codegen.ts @@ -1,13 +1,13 @@ -import { valueForAlertChannelFromId } from '../constructs/alert-channel-codegen' -import { valueForAlertEscalation } from '../constructs/alert-escalation-policy-codegen' -import { valueForFrequency } from '../constructs/frequency-codegen' -import { Context } from '../constructs/internal/codegen' -import { valueForKeyValuePair } from '../constructs/key-value-pair-codegen' -import { valueForPlaywrightConfig } from '../constructs/playwright-config-codegen' -import { valueForPrivateLocationFromId } from '../constructs/private-location-codegen' -import { valueForRetryStrategy } from '../constructs/retry-strategy-codegen' -import { array, decl, docComment, expr, GeneratedFile, ident, ObjectValueBuilder, Program, StringValue } from '../sourcegen' -import { ChecklyConfig, CheckConfigDefaults } from './checkly-config-loader' +import { valueForAlertChannelFromId } from '../constructs/alert-channel-codegen.js' +import { valueForAlertEscalation } from '../constructs/alert-escalation-policy-codegen.js' +import { valueForFrequency } from '../constructs/frequency-codegen.js' +import { Context } from '../constructs/internal/codegen/index.js' +import { valueForKeyValuePair } from '../constructs/key-value-pair-codegen.js' +import { valueForPlaywrightConfig } from '../constructs/playwright-config-codegen.js' +import { valueForPrivateLocationFromId } from '../constructs/private-location-codegen.js' +import { valueForRetryStrategy } from '../constructs/retry-strategy-codegen.js' +import { array, decl, docComment, expr, GeneratedFile, ident, ObjectValueBuilder, Program, StringValue } from '../sourcegen/index.js' +import { ChecklyConfig, CheckConfigDefaults } from './checkly-config-loader.js' function buildCheckConfigDefaults ( program: Program, diff --git a/packages/cli/src/services/checkly-config-loader.ts b/packages/cli/src/services/checkly-config-loader.ts index 7b0100b23..38a1ac912 100644 --- a/packages/cli/src/services/checkly-config-loader.ts +++ b/packages/cli/src/services/checkly-config-loader.ts @@ -1,14 +1,14 @@ import * as path from 'path' import fs from 'node:fs/promises' -import { findPlaywrightConfigPath, getDefaultChecklyConfig, writeChecklyConfigFile } from './util' -import { CheckProps, RuntimeCheckProps } from '../constructs/check' -import { PlaywrightCheckProps } from '../constructs/playwright-check' -import { Session } from '../constructs' -import { Construct } from '../constructs/construct' -import type { Region } from '..' -import { ReporterType } from '../reporters/reporter' -import { PlaywrightConfig } from '../constructs/playwright-config' -import { FileLoader } from '../loader' +import { findPlaywrightConfigPath, getDefaultChecklyConfig, writeChecklyConfigFile } from './util.js' +import { CheckProps, RuntimeCheckProps } from '../constructs/check.js' +import { PlaywrightCheckProps } from '../constructs/playwright-check.js' +import { Session } from '../constructs/index.js' +import { Construct } from '../constructs/construct.js' +import type { Region } from '../index.js' +import { ReporterType } from '../reporters/reporter.js' +import { PlaywrightConfig } from '../constructs/playwright-config.js' +import { FileLoader } from '../loader/index.js' export type CheckConfigDefaults = Pick { try { + const require = createRequire(import.meta.url) const playwrightPath = require.resolve('@playwright/test/package.json', { paths: [cwd] }) - // eslint-disable-next-line @typescript-eslint/no-require-imports const playwrightPkg = require(playwrightPath) const version = normalizeVersion(playwrightPkg.version) diff --git a/packages/cli/src/sourcegen/__tests__/case.spec.ts b/packages/cli/src/sourcegen/__tests__/case.spec.ts index 3f2274f5b..438ef2bf7 100644 --- a/packages/cli/src/sourcegen/__tests__/case.spec.ts +++ b/packages/cli/src/sourcegen/__tests__/case.spec.ts @@ -1,6 +1,6 @@ import { describe, it, expect } from 'vitest' -import { cased } from '../case' +import { cased } from '../case.js' describe('cased', () => { it('kebab-case: should produce a properly cased ASCII string', () => { diff --git a/packages/cli/src/sourcegen/args.ts b/packages/cli/src/sourcegen/args.ts index 12f48ca41..ec6b3289b 100644 --- a/packages/cli/src/sourcegen/args.ts +++ b/packages/cli/src/sourcegen/args.ts @@ -1,5 +1,5 @@ -import { Output } from './output' -import { Value } from './value' +import { Output } from './output.js' +import { Value } from './value.js' export class ArgumentsValue extends Value { value: Value[] diff --git a/packages/cli/src/sourcegen/argsbuilder.ts b/packages/cli/src/sourcegen/argsbuilder.ts index 6db5cb28d..e0dd319ec 100644 --- a/packages/cli/src/sourcegen/argsbuilder.ts +++ b/packages/cli/src/sourcegen/argsbuilder.ts @@ -1,14 +1,14 @@ -import { ArgumentsValue } from './args' -import { ArrayValueBuilder, array } from './arraybuilder' -import { BooleanValue } from './boolean' -import { ExpressionValueBuilder, expr } from './exprbuilder' -import { IdentifierValue } from './identifier' -import { NullValue } from './null' -import { NumberValue } from './number' -import { ObjectValueBuilder, object } from './objectbuilder' -import { StringValue } from './string' -import { UndefinedValue } from './undefined' -import { Value } from './value' +import { ArgumentsValue } from './args.js' +import { ArrayValueBuilder, array } from './arraybuilder.js' +import { BooleanValue } from './boolean.js' +import { ExpressionValueBuilder, expr } from './exprbuilder.js' +import { IdentifierValue } from './identifier.js' +import { NullValue } from './null.js' +import { NumberValue } from './number.js' +import { ObjectValueBuilder, object } from './objectbuilder.js' +import { StringValue } from './string.js' +import { UndefinedValue } from './undefined.js' +import { Value } from './value.js' export function args (build: (builder: ArgumentsValueBuilder) => void): ArgumentsValue { const builder = new ArgumentsValueBuilder() diff --git a/packages/cli/src/sourcegen/array.ts b/packages/cli/src/sourcegen/array.ts index d10d778e7..5481fe78c 100644 --- a/packages/cli/src/sourcegen/array.ts +++ b/packages/cli/src/sourcegen/array.ts @@ -1,5 +1,5 @@ -import { Output } from './output' -import { Value } from './value' +import { Output } from './output.js' +import { Value } from './value.js' export class ArrayValue extends Value { value: Value[] diff --git a/packages/cli/src/sourcegen/arraybuilder.ts b/packages/cli/src/sourcegen/arraybuilder.ts index b8e004841..c8f6cb899 100644 --- a/packages/cli/src/sourcegen/arraybuilder.ts +++ b/packages/cli/src/sourcegen/arraybuilder.ts @@ -1,13 +1,13 @@ -import { object, ObjectValueBuilder } from './objectbuilder' -import { ArrayValue } from './array' -import { BooleanValue } from './boolean' -import { NullValue } from './null' -import { NumberValue } from './number' -import { StringValue } from './string' -import { Value } from './value' -import { expr, ExpressionValueBuilder } from './exprbuilder' -import { UndefinedValue } from './undefined' -import { IdentifierValue } from './identifier' +import { object, ObjectValueBuilder } from './objectbuilder.js' +import { ArrayValue } from './array.js' +import { BooleanValue } from './boolean.js' +import { NullValue } from './null.js' +import { NumberValue } from './number.js' +import { StringValue } from './string.js' +import { Value } from './value.js' +import { expr, ExpressionValueBuilder } from './exprbuilder.js' +import { UndefinedValue } from './undefined.js' +import { IdentifierValue } from './identifier.js' export function array (build: (builder: ArrayValueBuilder) => void): ArrayValue { const builder = new ArrayValueBuilder() diff --git a/packages/cli/src/sourcegen/boolean.ts b/packages/cli/src/sourcegen/boolean.ts index c58707605..db23062f7 100644 --- a/packages/cli/src/sourcegen/boolean.ts +++ b/packages/cli/src/sourcegen/boolean.ts @@ -1,5 +1,5 @@ -import { Output } from './output' -import { Value } from './value' +import { Output } from './output.js' +import { Value } from './value.js' export class BooleanValue extends Value { value: boolean diff --git a/packages/cli/src/sourcegen/comment.ts b/packages/cli/src/sourcegen/comment.ts index e0ef58f76..2613a17c1 100644 --- a/packages/cli/src/sourcegen/comment.ts +++ b/packages/cli/src/sourcegen/comment.ts @@ -1,5 +1,5 @@ -import { Output } from './output' -import { Value } from './value' +import { Output } from './output.js' +import { Value } from './value.js' export interface CommentValueOptions { leading?: boolean diff --git a/packages/cli/src/sourcegen/decl.ts b/packages/cli/src/sourcegen/decl.ts index d9d23636d..2666e3623 100644 --- a/packages/cli/src/sourcegen/decl.ts +++ b/packages/cli/src/sourcegen/decl.ts @@ -1,7 +1,7 @@ -import { Comment } from './comment' -import { IdentifierValue } from './identifier' -import { Output } from './output' -import { Value } from './value' +import { Comment } from './comment.js' +import { IdentifierValue } from './identifier.js' +import { Output } from './output.js' +import { Value } from './value.js' export abstract class Declaration { abstract render (output: Output): void diff --git a/packages/cli/src/sourcegen/declbuilder.ts b/packages/cli/src/sourcegen/declbuilder.ts index 5c495b513..6aed0622b 100644 --- a/packages/cli/src/sourcegen/declbuilder.ts +++ b/packages/cli/src/sourcegen/declbuilder.ts @@ -1,7 +1,7 @@ -import { Comment } from './comment' -import { Declaration, IdentifierDeclaration, VariableDeclarationOptions, VariableDeclaration, ExportDeclaration, LeadingCommentDeclaration, TrailingCommentDeclaration, ExportDeclarationOptions } from './decl' -import { IdentifierValue } from './identifier' -import { Value } from './value' +import { Comment } from './comment.js' +import { Declaration, IdentifierDeclaration, VariableDeclarationOptions, VariableDeclaration, ExportDeclaration, LeadingCommentDeclaration, TrailingCommentDeclaration, ExportDeclarationOptions } from './decl.js' +import { IdentifierValue } from './identifier.js' +import { Value } from './value.js' export function decl (identifier: IdentifierValue, build: (builder: DeclarationBuilder) => void): Declaration { const builder = new DeclarationBuilder(identifier) diff --git a/packages/cli/src/sourcegen/expr.ts b/packages/cli/src/sourcegen/expr.ts index db4fee381..cc0c67210 100644 --- a/packages/cli/src/sourcegen/expr.ts +++ b/packages/cli/src/sourcegen/expr.ts @@ -1,6 +1,6 @@ -import { ArgumentsValue } from './args' -import { Output } from './output' -import { Value } from './value' +import { ArgumentsValue } from './args.js' +import { Output } from './output.js' +import { Value } from './value.js' export abstract class ExpressionValue extends Value { } diff --git a/packages/cli/src/sourcegen/exprbuilder.ts b/packages/cli/src/sourcegen/exprbuilder.ts index a95cd758c..03bee5962 100644 --- a/packages/cli/src/sourcegen/exprbuilder.ts +++ b/packages/cli/src/sourcegen/exprbuilder.ts @@ -1,6 +1,6 @@ -import { ArgumentsValueBuilder } from './argsbuilder' -import { CallExpressionValue, ExpressionValue, MemberExpressionValue, NewExpressionValue } from './expr' -import { Value } from './value' +import { ArgumentsValueBuilder } from './argsbuilder.js' +import { CallExpressionValue, ExpressionValue, MemberExpressionValue, NewExpressionValue } from './expr.js' +import { Value } from './value.js' export function expr (context: Value, build: (builder: ExpressionValueBuilder) => void): ExpressionValue { const builder = new ExpressionValueBuilder(context) diff --git a/packages/cli/src/sourcegen/identifier.ts b/packages/cli/src/sourcegen/identifier.ts index 42184ee73..1b62e8a54 100644 --- a/packages/cli/src/sourcegen/identifier.ts +++ b/packages/cli/src/sourcegen/identifier.ts @@ -1,6 +1,6 @@ -import { Output } from './output' -import { Value } from './value' -import { cased, CaseFormat } from './case' +import { Output } from './output.js' +import { Value } from './value.js' +import { cased, CaseFormat } from './case.js' export class IdentifierValue extends Value { value: string diff --git a/packages/cli/src/sourcegen/index.ts b/packages/cli/src/sourcegen/index.ts index 3ce3778bb..af34f0efd 100644 --- a/packages/cli/src/sourcegen/index.ts +++ b/packages/cli/src/sourcegen/index.ts @@ -1,8 +1,8 @@ -export { ArgumentsValue } from './args' -export { args, ArgumentsValueBuilder } from './argsbuilder' -export { ArrayValue } from './array' -export { array, ArrayValueBuilder } from './arraybuilder' -export { BooleanValue } from './boolean' +export { ArgumentsValue } from './args.js' +export { args, ArgumentsValueBuilder } from './argsbuilder.js' +export { ArrayValue } from './array.js' +export { array, ArrayValueBuilder } from './arraybuilder.js' +export { BooleanValue } from './boolean.js' export { cased, CaseFormat, @@ -13,7 +13,7 @@ export { screamingSnakeCase, kebabCase, screamingKebabCase, -} from './case' +} from './case.js' export { blockComment, BlockComment, @@ -23,15 +23,15 @@ export { DocComment, lineComment, LineComment, -} from './comment' +} from './comment.js' export { VariableDeclaration, ExportDeclaration, -} from './decl' +} from './decl.js' export { decl, DeclarationBuilder, -} from './declbuilder' +} from './declbuilder.js' export { ExpressionValue, NewExpressionValue, @@ -39,16 +39,16 @@ export { MemberExpressionValue, BinaryExpressionValue, UnaryExpressionValue, -} from './expr' -export { expr, ExpressionValueBuilder } from './exprbuilder' -export { ident, IdentifierValue } from './identifier' -export { NullValue } from './null' -export { NumberValue } from './number' -export { ObjectValue } from './object' -export { object, ObjectValueBuilder } from './objectbuilder' -export { Output } from './output' -export { Program, GeneratedFile, StaticAuxiliaryFile as AuxiliaryFile } from './program' -export { StringValue } from './string' -export { UndefinedValue } from './undefined' -export { unknown } from './unknown' -export { Value } from './value' +} from './expr.js' +export { expr, ExpressionValueBuilder } from './exprbuilder.js' +export { ident, IdentifierValue } from './identifier.js' +export { NullValue } from './null.js' +export { NumberValue } from './number.js' +export { ObjectValue } from './object.js' +export { object, ObjectValueBuilder } from './objectbuilder.js' +export { Output } from './output.js' +export { Program, GeneratedFile, StaticAuxiliaryFile as AuxiliaryFile } from './program.js' +export { StringValue } from './string.js' +export { UndefinedValue } from './undefined.js' +export { unknown } from './unknown.js' +export { Value } from './value.js' diff --git a/packages/cli/src/sourcegen/null.ts b/packages/cli/src/sourcegen/null.ts index 886abedfb..cd2670d62 100644 --- a/packages/cli/src/sourcegen/null.ts +++ b/packages/cli/src/sourcegen/null.ts @@ -1,5 +1,5 @@ -import { Output } from './output' -import { Value } from './value' +import { Output } from './output.js' +import { Value } from './value.js' export class NullValue extends Value { render (output: Output): void { diff --git a/packages/cli/src/sourcegen/number.ts b/packages/cli/src/sourcegen/number.ts index 15ea8b5ce..3fee61216 100644 --- a/packages/cli/src/sourcegen/number.ts +++ b/packages/cli/src/sourcegen/number.ts @@ -1,5 +1,5 @@ -import { Output } from './output' -import { Value } from './value' +import { Output } from './output.js' +import { Value } from './value.js' export class NumberValue extends Value { value: number diff --git a/packages/cli/src/sourcegen/object.ts b/packages/cli/src/sourcegen/object.ts index 67a19712b..b79a8ca21 100644 --- a/packages/cli/src/sourcegen/object.ts +++ b/packages/cli/src/sourcegen/object.ts @@ -1,6 +1,6 @@ -import { Comment } from './comment' -import { Output } from './output' -import { Value } from './value' +import { Comment } from './comment.js' +import { Output } from './output.js' +import { Value } from './value.js' export interface ObjectPropertyOptions { order?: number diff --git a/packages/cli/src/sourcegen/objectbuilder.ts b/packages/cli/src/sourcegen/objectbuilder.ts index de58de974..36c48f05d 100644 --- a/packages/cli/src/sourcegen/objectbuilder.ts +++ b/packages/cli/src/sourcegen/objectbuilder.ts @@ -1,13 +1,13 @@ -import { array, ArrayValueBuilder } from './arraybuilder' -import { BooleanValue } from './boolean' -import { expr, ExpressionValueBuilder } from './exprbuilder' -import { IdentifierValue } from './identifier' -import { NullValue } from './null' -import { NumberValue } from './number' -import { ObjectProperty, ObjectPropertyOptions, ObjectValue, ObjectValueOptions } from './object' -import { StringValue } from './string' -import { UndefinedValue } from './undefined' -import { Value } from './value' +import { array, ArrayValueBuilder } from './arraybuilder.js' +import { BooleanValue } from './boolean.js' +import { expr, ExpressionValueBuilder } from './exprbuilder.js' +import { IdentifierValue } from './identifier.js' +import { NullValue } from './null.js' +import { NumberValue } from './number.js' +import { ObjectProperty, ObjectPropertyOptions, ObjectValue, ObjectValueOptions } from './object.js' +import { StringValue } from './string.js' +import { UndefinedValue } from './undefined.js' +import { Value } from './value.js' export interface ObjectValueBuilderOptions extends ObjectValueOptions { implicitOrder?: boolean diff --git a/packages/cli/src/sourcegen/program.ts b/packages/cli/src/sourcegen/program.ts index 29a036932..9ed420de2 100644 --- a/packages/cli/src/sourcegen/program.ts +++ b/packages/cli/src/sourcegen/program.ts @@ -1,10 +1,10 @@ import { mkdir, writeFile } from 'node:fs/promises' import path, { extname } from 'node:path' -import { Comment } from './comment' -import { Output } from './output' -import { Value } from './value' -import { Declaration } from './decl' +import { Comment } from './comment.js' +import { Output } from './output.js' +import { Value } from './value.js' +import { Declaration } from './decl.js' type Content = Comment | Declaration | Value diff --git a/packages/cli/src/sourcegen/string.ts b/packages/cli/src/sourcegen/string.ts index 33aa21b00..d994542d7 100644 --- a/packages/cli/src/sourcegen/string.ts +++ b/packages/cli/src/sourcegen/string.ts @@ -1,7 +1,7 @@ import { inspect } from 'node:util' -import { Output } from './output' -import { Value } from './value' +import { Output } from './output.js' +import { Value } from './value.js' export class StringValue extends Value { value: string diff --git a/packages/cli/src/sourcegen/undefined.ts b/packages/cli/src/sourcegen/undefined.ts index 04118546c..f32cd436e 100644 --- a/packages/cli/src/sourcegen/undefined.ts +++ b/packages/cli/src/sourcegen/undefined.ts @@ -1,5 +1,5 @@ -import { Output } from './output' -import { Value } from './value' +import { Output } from './output.js' +import { Value } from './value.js' export class UndefinedValue extends Value { render (output: Output): void { diff --git a/packages/cli/src/sourcegen/unknown.ts b/packages/cli/src/sourcegen/unknown.ts index 10b515861..54fcdf0e9 100644 --- a/packages/cli/src/sourcegen/unknown.ts +++ b/packages/cli/src/sourcegen/unknown.ts @@ -1,11 +1,11 @@ -import { array } from './arraybuilder' -import { BooleanValue } from './boolean' -import { NullValue } from './null' -import { NumberValue } from './number' -import { object } from './objectbuilder' -import { StringValue } from './string' -import { UndefinedValue } from './undefined' -import { Value } from './value' +import { array } from './arraybuilder.js' +import { BooleanValue } from './boolean.js' +import { NullValue } from './null.js' +import { NumberValue } from './number.js' +import { object } from './objectbuilder.js' +import { StringValue } from './string.js' +import { UndefinedValue } from './undefined.js' +import { Value } from './value.js' export function unknown (value: any): Value { if (value === null) { diff --git a/packages/cli/src/sourcegen/value.ts b/packages/cli/src/sourcegen/value.ts index 57105a69a..fbf934072 100644 --- a/packages/cli/src/sourcegen/value.ts +++ b/packages/cli/src/sourcegen/value.ts @@ -1,4 +1,4 @@ -import { Output } from './output' +import { Output } from './output.js' export abstract class Value { abstract render (output: Output): void diff --git a/packages/cli/src/testing/fixture-sandbox.ts b/packages/cli/src/testing/fixture-sandbox.ts index 6c4a0d812..a9b4f3b3c 100644 --- a/packages/cli/src/testing/fixture-sandbox.ts +++ b/packages/cli/src/testing/fixture-sandbox.ts @@ -1,12 +1,16 @@ import path from 'node:path' import fs from 'node:fs/promises' import { tmpdir } from 'node:os' +import { fileURLToPath } from 'node:url' import Debug from 'debug' +import { execa } from 'execa' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) const debug = Debug('checkly:cli:testing:fixture-sandbox') -import { detectNearestLockfile, detectNearestPackageJson, detectPackageManager, PackageManager } from '../services/check-parser/package-files/package-manager' +import { detectNearestLockfile, detectNearestPackageJson, detectPackageManager, PackageManager } from '../services/check-parser/package-files/package-manager.js' export interface CreateFixtureSandboxOptions { /** @@ -70,8 +74,6 @@ export class FixtureSandbox { } static async create (options: CreateFixtureSandboxOptions): Promise { - const { execa } = await import('execa') - const { source, root: maybeRoot, diff --git a/packages/cli/tsconfig.json b/packages/cli/tsconfig.json index ab488376a..60452cd64 100644 --- a/packages/cli/tsconfig.json +++ b/packages/cli/tsconfig.json @@ -3,8 +3,7 @@ "incremental": true, "declaration": true, "importHelpers": false, - "module": "node16", - "esModuleInterop": true, + "module": "nodenext", "outDir": "dist", "rootDir": "src", "strict": true, diff --git a/packages/create-cli/bin/run b/packages/create-cli/bin/run index 5405a3ade..31ec8ad76 100755 --- a/packages/create-cli/bin/run +++ b/packages/create-cli/bin/run @@ -1,16 +1,15 @@ #!/usr/bin/env node -/* eslint-disable @typescript-eslint/no-var-requires */ -/* eslint-disable no-console */ const currentVersion = process.versions.node const requiredVersion = parseInt(currentVersion.split('.')[0], 10) -const minimumVersion = 18 +const minimumVersion = 20 if (requiredVersion < minimumVersion) { console.error(`You are running Node.js v${currentVersion}. The Checkly CLI requires Node.js v${minimumVersion} or higher.`) process.exit(1) } -const { run, handle, flush } = require('@oclif/core') +import { execute, settings } from '@oclif/core' -run().catch(handle).finally(flush) +settings.enableAutoTranspile = false +await execute({ dir: import.meta.url }) diff --git a/packages/create-cli/e2e/__tests__/bootstrap.spec.ts b/packages/create-cli/e2e/__tests__/bootstrap.spec.ts index 5b0f47c91..fbcaee20f 100644 --- a/packages/create-cli/e2e/__tests__/bootstrap.spec.ts +++ b/packages/create-cli/e2e/__tests__/bootstrap.spec.ts @@ -10,7 +10,7 @@ import { describe, it, expect, afterAll, beforeAll, beforeEach } from 'vitest' import { runChecklyCreateCli } from '../run-create-cli' import { getUserGreeting } from '../../src/utils/messages' import { PROJECT_TEMPLATES } from '../../src/utils/prompts' -import { ExecaReturnValue } from 'execa' +import type { Result as ExecaResult } from 'execa' const E2E_PROJECT_PREFIX = 'e2e-test-project-' @@ -27,7 +27,7 @@ function expectVersionAndName ({ latestVersion, greeting, }: { - commandOutput: ExecaReturnValue + commandOutput: ExecaResult version?: string latestVersion: string greeting: string @@ -43,7 +43,7 @@ function expectCompleteCreation ({ commandOutput, projectFolder, }: { - commandOutput: ExecaReturnValue + commandOutput: ExecaResult projectFolder: string }) { expect(commandOutput.stdout).toContain(`All done. Time to get testing & monitoring with Checkly diff --git a/packages/create-cli/e2e/run-create-cli.ts b/packages/create-cli/e2e/run-create-cli.ts index d3879d8a9..c8f0c6667 100644 --- a/packages/create-cli/e2e/run-create-cli.ts +++ b/packages/create-cli/e2e/run-create-cli.ts @@ -1,8 +1,10 @@ import path from 'node:path' +import { fileURLToPath } from 'node:url' -import execa from 'execa' +import { execa } from 'execa' -const CHECKLY_PATH = path.resolve(path.dirname(__filename), '..', 'bin', 'run') +const __dirname = path.dirname(fileURLToPath(import.meta.url)) +const CHECKLY_PATH = path.resolve(__dirname, '..', 'bin', 'run') export async function runChecklyCreateCli (options: { directory?: string @@ -31,7 +33,7 @@ export async function runChecklyCreateCli (options: { ...env, }, cwd: directory ?? process.cwd(), - encoding: 'utf-8', + encoding: 'utf8', timeout, reject: false, shell: process.platform === 'win32', diff --git a/packages/create-cli/package.json b/packages/create-cli/package.json index 357753a81..685736224 100644 --- a/packages/create-cli/package.json +++ b/packages/create-cli/package.json @@ -1,12 +1,13 @@ { "name": "create-checkly", "version": "0.0.1-dev", + "type": "module", "description": "Checkly Create CLI", "main": "dist/index.js", "types": "dist/index.d.ts", "private": false, "engines": { - "node": "^18.19.0 || >=20.5.0" + "node": "^20.19.0 || >=22.12.0" }, "scripts": { "clean": "rimraf ./dist ./tsconfig.tsbuildinfo", @@ -57,14 +58,14 @@ "@oclif/plugin-help": "^6.2.46", "@oclif/plugin-warn-if-update-available": "^3.1.62", "axios": "^1.16.0", - "chalk": "^4.1.2", + "chalk": "^5.6.2", "debug": "^4.4.3", - "execa": "^5.1.1", + "execa": "^9.6.1", "giget": "^3.2.0", "jiti": "^2.7.0", "json5": "^2.2.3", - "ora": "^5.4.1", - "passwd-user": "^3.0.0", + "ora": "^9.4.0", + "passwd-user": "^4.0.0", "prompts": "^2.4.2", "recast": "^0.23.11", "unique-names-generator": "^4.7.1" @@ -75,10 +76,10 @@ "@types/prompts": "^2.4.9", "@types/uuid": "^10.0.0", "cross-env": "^10.1.0", - "rimraf": "^5.0.10", + "rimraf": "^6.1.3", "ts-node": "^10.9.2", "typescript": "^6.0.3", - "uuid": "^11.1.1", + "uuid": "^14.0.0", "vitest": "^3.2.4" }, "peerDependencies": { diff --git a/packages/create-cli/src/actions/creates.ts b/packages/create-cli/src/actions/creates.ts index 1c4402f47..ca09a196a 100644 --- a/packages/create-cli/src/actions/creates.ts +++ b/packages/create-cli/src/actions/creates.ts @@ -1,7 +1,7 @@ import * as fs from 'fs' import * as path from 'path' -import { isValidUrl } from '../utils/directory' -import { askCreateInitialBrowserCheck, askUserWebsite } from '../utils/prompts' +import { isValidUrl } from '../utils/directory.js' +import { askCreateInitialBrowserCheck, askUserWebsite } from '../utils/prompts.js' // Default Playwright-based Browser Check const defaultBrowserCheck = `import { test, expect } from '@playwright/test' diff --git a/packages/create-cli/src/actions/dependencies.ts b/packages/create-cli/src/actions/dependencies.ts index 9de6ced02..a19802e74 100644 --- a/packages/create-cli/src/actions/dependencies.ts +++ b/packages/create-cli/src/actions/dependencies.ts @@ -1,11 +1,11 @@ import fs from 'node:fs' import path from 'node:path' -import execa from 'execa' -import { spinner } from '../utils/terminal' -import { hint } from '../utils/messages' -import { PackageJson } from '../utils/directory' -import { askInstallDependencies } from '../utils/prompts' -import { getPackageManager } from '../utils/which-pm' +import { execa } from 'execa' +import { spinner } from '../utils/terminal.js' +import { hint } from '../utils/messages.js' +import { PackageJson } from '../utils/directory.js' +import { askInstallDependencies } from '../utils/prompts.js' +import { getPackageManager } from '../utils/which-pm.js' export function addDevDependecies (projectDirectory: string, packageJson: PackageJson) { if (!Reflect.has(packageJson, 'devDependencies')) { diff --git a/packages/create-cli/src/actions/git.ts b/packages/create-cli/src/actions/git.ts index 950d337fd..2f61d72d3 100644 --- a/packages/create-cli/src/actions/git.ts +++ b/packages/create-cli/src/actions/git.ts @@ -1,8 +1,8 @@ import fs from 'node:fs' import path from 'node:path' -import { hasGitDir, hasGitIgnore } from '../utils/directory' -import execa from 'execa' -import { askInitializeGit } from '../utils/prompts' +import { hasGitDir, hasGitIgnore } from '../utils/directory.js' +import { execa } from 'execa' +import { askInitializeGit } from '../utils/prompts.js' export async function initGit (targetDir: string): Promise { if (hasGitDir(targetDir)) { diff --git a/packages/create-cli/src/actions/playwright.ts b/packages/create-cli/src/actions/playwright.ts index ecefc539d..f2dd2dd25 100644 --- a/packages/create-cli/src/actions/playwright.ts +++ b/packages/create-cli/src/actions/playwright.ts @@ -1,11 +1,11 @@ import chalk from 'chalk' -import { spinner } from '../utils/terminal' -import { loadPlaywrightConfig } from '../utils/directory' +import { spinner } from '../utils/terminal.js' +import { loadPlaywrightConfig } from '../utils/directory.js' import * as recast from 'recast' import * as path from 'path' import * as fs from 'fs' -import * as ora from 'ora' -import PlaywrightConfigTemplate from '../utils/playwright-config-template' +import type { Ora } from 'ora' +import PlaywrightConfigTemplate from '../utils/playwright-config-template.js' export async function copyPlaywrightConfig (dirPath: string, playwrightConfigFileName: string) { const copySpinner = spinner('Copying your playwright config') try { @@ -36,7 +36,7 @@ export async function copyPlaywrightConfig (dirPath: string, playwrightConfigFil copySpinner.succeed() } -function handleError (copySpinner: ora.Ora, message: string | unknown) { +function handleError (copySpinner: Ora, message: string | unknown) { copySpinner.text = chalk.red('Something went wrong when copying your playwrightConfig file') copySpinner.fail() // eslint-disable-next-line diff --git a/packages/create-cli/src/actions/template.ts b/packages/create-cli/src/actions/template.ts index 13760f816..6bb33705f 100644 --- a/packages/create-cli/src/actions/template.ts +++ b/packages/create-cli/src/actions/template.ts @@ -3,7 +3,7 @@ import path from 'node:path' import chalk from 'chalk' import { downloadTemplate } from 'giget' -import { spinner } from '../utils/terminal' +import { spinner } from '../utils/terminal.js' export interface CopyTemplateProps { template: string diff --git a/packages/create-cli/src/commands/bootstrap.ts b/packages/create-cli/src/commands/bootstrap.ts index 7dc7a20cc..52c19e528 100644 --- a/packages/create-cli/src/commands/bootstrap.ts +++ b/packages/create-cli/src/commands/bootstrap.ts @@ -3,16 +3,16 @@ import axios from 'axios' import chalk from 'chalk' import prompts from 'prompts' import { Command, Flags } from '@oclif/core' -import { getUserGreeting, header, footer, hint } from '../utils/messages' -import { collectConfigPaths, getPlaywrightConfig, hasPackageJsonFile, PLAYWRIGHT_CONFIG_FILES } from '../utils/directory' +import { getUserGreeting, header, footer, hint } from '../utils/messages.js' +import { collectConfigPaths, getPlaywrightConfig, hasPackageJsonFile, PLAYWRIGHT_CONFIG_FILES } from '../utils/directory.js' import { copyPlaywrightConfig, createProject, getProjectDirectory, installDependenciesAndInitGit, installWithinProject, -} from '../utils/installation' -import { askPlaywrightConfigPath } from '../utils/prompts' +} from '../utils/installation.js' +import { askPlaywrightConfigPath } from '../utils/prompts.js' /** * This code is heavily inspired by the amazing create-astro package over at diff --git a/packages/create-cli/src/loader/index.ts b/packages/create-cli/src/loader/index.ts index 8f83399d6..4800ed160 100644 --- a/packages/create-cli/src/loader/index.ts +++ b/packages/create-cli/src/loader/index.ts @@ -1,13 +1,13 @@ -export { JitiFileLoader, JitiFileLoaderOptions } from './jiti' +export { JitiFileLoader, JitiFileLoaderOptions } from './jiti.js' export { FileLoader, FileLoaderOptions, UnsupportedFileLoaderError, -} from './loader' -export { FileMatch, FileMatchFunction } from './match' -export { MixedFileLoader } from './mixed' +} from './loader.js' +export { FileMatch, FileMatchFunction } from './match.js' +export { MixedFileLoader } from './mixed.js' export { NativeFileLoader, NativeFileLoaderOptions, -} from './native' -export { TSNodeFileLoader, TSNodeFileLoaderOptions } from './ts-node' +} from './native.js' +export { TSNodeFileLoader, TSNodeFileLoaderOptions } from './ts-node.js' diff --git a/packages/create-cli/src/loader/jiti.ts b/packages/create-cli/src/loader/jiti.ts index f7aabcd14..105b2a215 100644 --- a/packages/create-cli/src/loader/jiti.ts +++ b/packages/create-cli/src/loader/jiti.ts @@ -1,5 +1,9 @@ -import { FileLoader, FileLoaderOptions, UnsupportedFileLoaderError } from './loader' -import { FileMatch } from './match' +import { fileURLToPath } from 'node:url' + +import { FileLoader, FileLoaderOptions, UnsupportedFileLoaderError } from './loader.js' +import { FileMatch } from './match.js' + +const __filename = fileURLToPath(import.meta.url) interface JitiExports { createJiti (id: string, userOptions?: any): Jiti diff --git a/packages/create-cli/src/loader/loader.ts b/packages/create-cli/src/loader/loader.ts index e2b90f33c..227e3d3f6 100644 --- a/packages/create-cli/src/loader/loader.ts +++ b/packages/create-cli/src/loader/loader.ts @@ -1,4 +1,4 @@ -import { FileMatch } from './match' +import { FileMatch } from './match.js' export interface FileLoaderOptions { match?: FileMatch diff --git a/packages/create-cli/src/loader/mixed.ts b/packages/create-cli/src/loader/mixed.ts index 92b42f81b..59cf4c5b9 100644 --- a/packages/create-cli/src/loader/mixed.ts +++ b/packages/create-cli/src/loader/mixed.ts @@ -1,7 +1,7 @@ import { FileLoader, UnsupportedFileLoaderError, -} from './loader' +} from './loader.js' export class MixedFileLoader extends FileLoader { loaders: Set diff --git a/packages/create-cli/src/loader/native.ts b/packages/create-cli/src/loader/native.ts index f2019e381..9cd71b35a 100644 --- a/packages/create-cli/src/loader/native.ts +++ b/packages/create-cli/src/loader/native.ts @@ -1,5 +1,5 @@ -import { FileLoader, FileLoaderOptions } from './loader' -import { FileMatch } from './match' +import { FileLoader, FileLoaderOptions } from './loader.js' +import { FileMatch } from './match.js' export type NativeFileLoaderOptions = FileLoaderOptions diff --git a/packages/create-cli/src/loader/ts-node.ts b/packages/create-cli/src/loader/ts-node.ts index 77256df81..c8fe17ce7 100644 --- a/packages/create-cli/src/loader/ts-node.ts +++ b/packages/create-cli/src/loader/ts-node.ts @@ -1,5 +1,7 @@ -import { FileLoader, FileLoaderOptions, UnsupportedFileLoaderError } from './loader' -import { FileMatch } from './match' +import { createRequire } from 'node:module' + +import { FileLoader, FileLoaderOptions, UnsupportedFileLoaderError } from './loader.js' +import { FileMatch } from './match.js' interface TSNodeExports { register (opts?: any): TSNodeService @@ -76,7 +78,7 @@ export class InitializedTSNodeFileLoaderState extends FileLoader { try { this.service.enabled(true) - // eslint-disable-next-line @typescript-eslint/no-require-imports + const require = createRequire(import.meta.url) const moduleExports = require(filePath) return moduleExports } catch (err: any) { diff --git a/packages/create-cli/src/utils/__tests__/directory.spec.ts b/packages/create-cli/src/utils/__tests__/directory.spec.ts index 5bb1ea668..ff950b43d 100644 --- a/packages/create-cli/src/utils/__tests__/directory.spec.ts +++ b/packages/create-cli/src/utils/__tests__/directory.spec.ts @@ -2,7 +2,7 @@ import path from 'node:path' import { describe, expect, test } from 'vitest' -import { collectConfigPaths, hasPackageJsonFile, isValidProjectDirectory, readPackageJson } from '../directory' +import { collectConfigPaths, hasPackageJsonFile, isValidProjectDirectory, readPackageJson } from '../directory.js' describe('isValidProjectDirectory()', () => { type TestTuple = [string, boolean] diff --git a/packages/create-cli/src/utils/__tests__/prompts.spec.ts b/packages/create-cli/src/utils/__tests__/prompts.spec.ts index 2f806aeef..b12cd1026 100644 --- a/packages/create-cli/src/utils/__tests__/prompts.spec.ts +++ b/packages/create-cli/src/utils/__tests__/prompts.spec.ts @@ -13,8 +13,8 @@ import { askInstallDependencies, askInitializeGit, askPlaywrightConfigPath, -} from '../prompts' -import * as directoryUtils from '../../utils/directory' +} from '../prompts.js' +import * as directoryUtils from '../../utils/directory.js' const generateProjectName = vi.spyOn(directoryUtils, 'generateProjectName').mockReturnValue('generated-project-name') diff --git a/packages/create-cli/src/utils/directory.ts b/packages/create-cli/src/utils/directory.ts index 1180973f8..410eda6e9 100644 --- a/packages/create-cli/src/utils/directory.ts +++ b/packages/create-cli/src/utils/directory.ts @@ -1,7 +1,7 @@ import * as fs from 'fs' import * as path from 'path' import { uniqueNamesGenerator, colors, animals } from 'unique-names-generator' -import { loadFile } from './fileloader' +import { loadFile } from './fileloader.js' export const PLAYWRIGHT_CONFIG_FILES = ['playwright.config.ts', 'playwright.config.js'] diff --git a/packages/create-cli/src/utils/fileloader.ts b/packages/create-cli/src/utils/fileloader.ts index 4cbb1246f..94334d387 100644 --- a/packages/create-cli/src/utils/fileloader.ts +++ b/packages/create-cli/src/utils/fileloader.ts @@ -1,4 +1,4 @@ -import { MixedFileLoader, NativeFileLoader, JitiFileLoader, TSNodeFileLoader } from '../loader' +import { MixedFileLoader, NativeFileLoader, JitiFileLoader, TSNodeFileLoader } from '../loader/index.js' const loader = new MixedFileLoader( new NativeFileLoader(), diff --git a/packages/create-cli/src/utils/fullname.ts b/packages/create-cli/src/utils/fullname.ts index 633cab89c..1f4a248bb 100644 --- a/packages/create-cli/src/utils/fullname.ts +++ b/packages/create-cli/src/utils/fullname.ts @@ -1,5 +1,5 @@ -import execa from 'execa' -import passwdUser from 'passwd-user' +import { execa } from 'execa' +import { passwdUser } from 'passwd-user' const environmentVariables = [ 'GIT_AUTHOR_NAME', diff --git a/packages/create-cli/src/utils/installation.ts b/packages/create-cli/src/utils/installation.ts index 09202c037..f86d9ac4b 100644 --- a/packages/create-cli/src/utils/installation.ts +++ b/packages/create-cli/src/utils/installation.ts @@ -1,11 +1,11 @@ import Debug from 'debug' -import { copyTemporaryFiles, generateProjectName, usePackageName, readPackageJson, hasPackageJsonFile, checkFilesToKeep } from './directory' -import { askCopyPlaywrightProject, askInitializeProject, askProjectDirectory, askTemplate } from './prompts' -import { addDevDependecies, installDependencies } from '../actions/dependencies' -import { copyTemplate } from '../actions/template' -import { createCustomBrowserCheck } from '../actions/creates' -import { initGit } from '../actions/git' -import * as playwright from '../actions/playwright' +import { copyTemporaryFiles, generateProjectName, usePackageName, readPackageJson, hasPackageJsonFile, checkFilesToKeep } from './directory.js' +import { askCopyPlaywrightProject, askInitializeProject, askProjectDirectory, askTemplate } from './prompts.js' +import { addDevDependecies, installDependencies } from '../actions/dependencies.js' +import { copyTemplate } from '../actions/template.js' +import { createCustomBrowserCheck } from '../actions/creates.js' +import { initGit } from '../actions/git.js' +import * as playwright from '../actions/playwright.js' const debug = Debug('checkly:create-cli') const templateBaseRepo = 'checkly/checkly-cli/examples' diff --git a/packages/create-cli/src/utils/messages.ts b/packages/create-cli/src/utils/messages.ts index f3b77f7b8..6826725cc 100644 --- a/packages/create-cli/src/utils/messages.ts +++ b/packages/create-cli/src/utils/messages.ts @@ -1,6 +1,6 @@ /* eslint no-console: 'off' */ import chalk from 'chalk' -import { getFullName } from './fullname' +import { getFullName } from './fullname.js' function sleep (ms: number): Promise { return new Promise(resolve => setTimeout(resolve, ms)) diff --git a/packages/create-cli/src/utils/playwright-config-template.ts b/packages/create-cli/src/utils/playwright-config-template.ts index ab2e089ee..d18fcd4a6 100644 --- a/packages/create-cli/src/utils/playwright-config-template.ts +++ b/packages/create-cli/src/utils/playwright-config-template.ts @@ -1,4 +1,4 @@ -import * as JSON5 from 'json5' +import JSON5 from 'json5' export default class PlaywrightConfigTemplate { playwrightConfig: Record diff --git a/packages/create-cli/src/utils/prompts.ts b/packages/create-cli/src/utils/prompts.ts index 1095859c4..c2b34b299 100644 --- a/packages/create-cli/src/utils/prompts.ts +++ b/packages/create-cli/src/utils/prompts.ts @@ -2,7 +2,7 @@ import * as fs from 'fs' import * as path from 'path' import chalk from 'chalk' import prompts from 'prompts' -import { generateProjectName, isValidProjectDirectory } from '../utils/directory' +import { generateProjectName, isValidProjectDirectory } from '../utils/directory.js' export const PROJECT_TEMPLATES = [ { value: 'advanced-project', title: 'An advanced TypeScript project with multiple examples and best practices (recommended)' }, diff --git a/packages/create-cli/tsconfig.json b/packages/create-cli/tsconfig.json index f6ce38863..b915ccd27 100644 --- a/packages/create-cli/tsconfig.json +++ b/packages/create-cli/tsconfig.json @@ -3,9 +3,7 @@ "incremental": true, "declaration": true, "importHelpers": true, - "ignoreDeprecations": "6.0", - "module": "commonjs", - "esModuleInterop": true, + "module": "nodenext", "outDir": "dist", "rootDir": "src", "strict": true, From a82393a893bcbaba61a57094a0e1a7f2a868bbe7 Mon Sep 17 00:00:00 2001 From: Simo Kinnunen Date: Wed, 13 May 2026 20:28:26 +0900 Subject: [PATCH 03/13] feat!: drop ts-node in favor of jiti as sole TypeScript loader (#1297) --- examples/advanced-project-js/package.json | 1 - examples/advanced-project/package.json | 1 - examples/boilerplate-project-js/package.json | 1 - examples/boilerplate-project/package.json | 1 - .../deploy-agentic-project/package.json | 4 +- .../fixtures/deploy-esm-project/package.json | 3 +- .../fixtures/deploy-project/package.json | 3 +- .../fixtures/empty-project/package.json | 3 +- .../fixtures/esm-module/package.json | 3 +- .../fixtures/retry-project/package.json | 3 +- .../package.json | 3 +- .../fixtures/snapshot-project/package.json | 3 +- .../test-duplicated-groups/package.json | 3 +- .../fixtures/test-only-project/package.json | 3 +- .../fixtures/test-parse-error/package.json | 3 +- .../fixtures/test-project/package.json | 3 +- .../fixtures/test-pwt-native/package.json | 3 +- .../packages/a/package.json | 3 +- packages/cli/package.json | 15 +-- packages/cli/src/commands/import/plan.ts | 1 - .../test-cases/test-bundling/package.json | 3 +- .../package.json | 3 +- .../test-doubleCheck-not-allowed/package.json | 3 +- .../package-lock.json | 35 ++--- .../package.json | 3 +- .../package-lock.json | 35 ++--- .../package.json | 3 +- .../test-group-mapping/package.json | 3 +- .../test-groupId-mapping/package.json | 3 +- .../test-groupName-mapping/package.json | 3 +- .../test-groupName-not-found/package.json | 3 +- .../package.json | 3 +- .../package.json | 3 +- .../package.json | 3 +- .../package.json | 3 +- .../test-headless-true-allowed/package.json | 3 +- .../test-headless-unset-allowed/package.json | 3 +- .../test-installCommand-allowed/package.json | 3 +- .../package.json | 3 +- .../package.json | 3 +- .../package.json | 3 +- .../test-shared-bundling/package.json | 5 +- .../test-testCommand-allowed/package.json | 3 +- .../package.json | 3 +- .../test-cases/test-webServer/package.json | 3 +- packages/cli/src/constructs/project.ts | 22 +-- .../onboarding/__tests__/boilerplate.spec.ts | 3 +- .../cli/src/helpers/onboarding/boilerplate.ts | 5 +- packages/cli/src/loader/index.ts | 1 - packages/cli/src/loader/jiti.ts | 1 + packages/cli/src/loader/ts-node.ts | 126 ------------------ .../typescript-project/package-lock.json | 14 +- .../typescript-project/package.json | 6 +- .../cli/src/services/__tests__/util.spec.ts | 4 +- .../playwright-project-snapshots/package.json | 3 +- .../playwright-project/package.json | 3 +- packages/cli/src/services/util.ts | 4 +- .../fixtures/initiated-project/package.json | 5 +- .../fixtures/playwright-project/package.json | 5 +- packages/create-cli/package.json | 9 -- packages/create-cli/src/loader/index.ts | 1 - packages/create-cli/src/loader/jiti.ts | 4 +- packages/create-cli/src/loader/ts-node.ts | 113 ---------------- .../fixtures/checkly-project/package.json | 3 +- packages/create-cli/src/utils/fileloader.ts | 3 +- 65 files changed, 86 insertions(+), 453 deletions(-) delete mode 100644 packages/cli/src/loader/ts-node.ts delete mode 100644 packages/create-cli/src/loader/ts-node.ts diff --git a/examples/advanced-project-js/package.json b/examples/advanced-project-js/package.json index 6522287e4..9f3f294fe 100644 --- a/examples/advanced-project-js/package.json +++ b/examples/advanced-project-js/package.json @@ -12,7 +12,6 @@ "devDependencies": { "@playwright/test": "^1", "checkly": "latest", - "jiti": "^2", "dotenv": "^16.0.0" } } diff --git a/examples/advanced-project/package.json b/examples/advanced-project/package.json index 6522287e4..9f3f294fe 100644 --- a/examples/advanced-project/package.json +++ b/examples/advanced-project/package.json @@ -12,7 +12,6 @@ "devDependencies": { "@playwright/test": "^1", "checkly": "latest", - "jiti": "^2", "dotenv": "^16.0.0" } } diff --git a/examples/boilerplate-project-js/package.json b/examples/boilerplate-project-js/package.json index a8f6eb3e8..e0508e4c6 100644 --- a/examples/boilerplate-project-js/package.json +++ b/examples/boilerplate-project-js/package.json @@ -12,7 +12,6 @@ "devDependencies": { "@playwright/test": "^1", "checkly": "latest", - "jiti": "^2", "dotenv": "^16.0.0" } } diff --git a/examples/boilerplate-project/package.json b/examples/boilerplate-project/package.json index 0b228c91d..157a93aff 100644 --- a/examples/boilerplate-project/package.json +++ b/examples/boilerplate-project/package.json @@ -12,7 +12,6 @@ "devDependencies": { "@playwright/test": "^1", "checkly": "latest", - "jiti": "^2", "dotenv": "^16.0.0" } } diff --git a/packages/cli/e2e/__tests__/fixtures/deploy-agentic-project/package.json b/packages/cli/e2e/__tests__/fixtures/deploy-agentic-project/package.json index 424ed115c..a29fc5b64 100644 --- a/packages/cli/e2e/__tests__/fixtures/deploy-agentic-project/package.json +++ b/packages/cli/e2e/__tests__/fixtures/deploy-agentic-project/package.json @@ -1,7 +1,5 @@ { "name": "project", "version": "1.0.0", - "dependencies": { - "jiti": "^2.6.1" - } + "dependencies": {} } diff --git a/packages/cli/e2e/__tests__/fixtures/deploy-esm-project/package.json b/packages/cli/e2e/__tests__/fixtures/deploy-esm-project/package.json index 4d6e99586..207a02070 100644 --- a/packages/cli/e2e/__tests__/fixtures/deploy-esm-project/package.json +++ b/packages/cli/e2e/__tests__/fixtures/deploy-esm-project/package.json @@ -2,7 +2,6 @@ "name": "project", "version": "1.0.0", "dependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/e2e/__tests__/fixtures/deploy-project/package.json b/packages/cli/e2e/__tests__/fixtures/deploy-project/package.json index 4d6e99586..207a02070 100644 --- a/packages/cli/e2e/__tests__/fixtures/deploy-project/package.json +++ b/packages/cli/e2e/__tests__/fixtures/deploy-project/package.json @@ -2,7 +2,6 @@ "name": "project", "version": "1.0.0", "dependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/e2e/__tests__/fixtures/empty-project/package.json b/packages/cli/e2e/__tests__/fixtures/empty-project/package.json index 4d6e99586..207a02070 100644 --- a/packages/cli/e2e/__tests__/fixtures/empty-project/package.json +++ b/packages/cli/e2e/__tests__/fixtures/empty-project/package.json @@ -2,7 +2,6 @@ "name": "project", "version": "1.0.0", "dependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/e2e/__tests__/fixtures/esm-module/package.json b/packages/cli/e2e/__tests__/fixtures/esm-module/package.json index 4d6e99586..207a02070 100644 --- a/packages/cli/e2e/__tests__/fixtures/esm-module/package.json +++ b/packages/cli/e2e/__tests__/fixtures/esm-module/package.json @@ -2,7 +2,6 @@ "name": "project", "version": "1.0.0", "dependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/e2e/__tests__/fixtures/retry-project/package.json b/packages/cli/e2e/__tests__/fixtures/retry-project/package.json index 4d6e99586..207a02070 100644 --- a/packages/cli/e2e/__tests__/fixtures/retry-project/package.json +++ b/packages/cli/e2e/__tests__/fixtures/retry-project/package.json @@ -2,7 +2,6 @@ "name": "project", "version": "1.0.0", "dependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/e2e/__tests__/fixtures/snapshot-project-missing-snapshots/package.json b/packages/cli/e2e/__tests__/fixtures/snapshot-project-missing-snapshots/package.json index 42375f136..041f0bcd2 100644 --- a/packages/cli/e2e/__tests__/fixtures/snapshot-project-missing-snapshots/package.json +++ b/packages/cli/e2e/__tests__/fixtures/snapshot-project-missing-snapshots/package.json @@ -9,7 +9,6 @@ "license": "ISC", "description": "", "dependencies": { - "@playwright/test": "^1.51.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.51.1" } } diff --git a/packages/cli/e2e/__tests__/fixtures/snapshot-project/package.json b/packages/cli/e2e/__tests__/fixtures/snapshot-project/package.json index 58e446843..02ce677a1 100644 --- a/packages/cli/e2e/__tests__/fixtures/snapshot-project/package.json +++ b/packages/cli/e2e/__tests__/fixtures/snapshot-project/package.json @@ -9,7 +9,6 @@ "license": "ISC", "description": "", "dependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/e2e/__tests__/fixtures/test-duplicated-groups/package.json b/packages/cli/e2e/__tests__/fixtures/test-duplicated-groups/package.json index 30ce59b6f..b12adbc29 100644 --- a/packages/cli/e2e/__tests__/fixtures/test-duplicated-groups/package.json +++ b/packages/cli/e2e/__tests__/fixtures/test-duplicated-groups/package.json @@ -2,7 +2,6 @@ "name": "playwright-bundle-test", "version": "1.0.0", "dependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/e2e/__tests__/fixtures/test-only-project/package.json b/packages/cli/e2e/__tests__/fixtures/test-only-project/package.json index 4d6e99586..207a02070 100644 --- a/packages/cli/e2e/__tests__/fixtures/test-only-project/package.json +++ b/packages/cli/e2e/__tests__/fixtures/test-only-project/package.json @@ -2,7 +2,6 @@ "name": "project", "version": "1.0.0", "dependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/e2e/__tests__/fixtures/test-parse-error/package.json b/packages/cli/e2e/__tests__/fixtures/test-parse-error/package.json index 30ce59b6f..b12adbc29 100644 --- a/packages/cli/e2e/__tests__/fixtures/test-parse-error/package.json +++ b/packages/cli/e2e/__tests__/fixtures/test-parse-error/package.json @@ -2,7 +2,6 @@ "name": "playwright-bundle-test", "version": "1.0.0", "dependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/e2e/__tests__/fixtures/test-project/package.json b/packages/cli/e2e/__tests__/fixtures/test-project/package.json index 30ce59b6f..b12adbc29 100644 --- a/packages/cli/e2e/__tests__/fixtures/test-project/package.json +++ b/packages/cli/e2e/__tests__/fixtures/test-project/package.json @@ -2,7 +2,6 @@ "name": "playwright-bundle-test", "version": "1.0.0", "dependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/e2e/__tests__/fixtures/test-pwt-native/package.json b/packages/cli/e2e/__tests__/fixtures/test-pwt-native/package.json index 1772945f3..78a102b14 100644 --- a/packages/cli/e2e/__tests__/fixtures/test-pwt-native/package.json +++ b/packages/cli/e2e/__tests__/fixtures/test-pwt-native/package.json @@ -2,7 +2,6 @@ "name": "test-pwt-native", "version": "0.0.1", "devDependencies": { - "@playwright/test": "1.53.1", - "jiti": "^2.6.1" + "@playwright/test": "1.53.1" } } diff --git a/packages/cli/e2e/__tests__/fixtures/workspace-basic-pnpm/packages/a/package.json b/packages/cli/e2e/__tests__/fixtures/workspace-basic-pnpm/packages/a/package.json index ce16e5d58..e5736a9c0 100644 --- a/packages/cli/e2e/__tests__/fixtures/workspace-basic-pnpm/packages/a/package.json +++ b/packages/cli/e2e/__tests__/fixtures/workspace-basic-pnpm/packages/a/package.json @@ -14,7 +14,6 @@ "devDependencies": { "@playwright/test": "^1.57.0", "@types/node": "^25.0.3", - "checkly": "^6.9.8", - "jiti": "^2.6.1" + "checkly": "^6.9.8" } } diff --git a/packages/cli/package.json b/packages/cli/package.json index 96185f364..5ba086001 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -114,6 +114,7 @@ "git-repo-info": "^2.1.1", "glob": "^13.0.6", "indent-string": "^5.0.0", + "jiti": "^2.7.0", "json-stream-stringify": "^3.1.6", "json5": "^2.2.3", "jwt-decode": "^4.0.0", @@ -144,25 +145,11 @@ "@types/ws": "^8.5.5", "config": "^4.4.1", "cross-env": "^10.1.0", - "jiti": "^2.7.0", "nanoid": "^5.1.11", "oclif": "^4.23.0", "rimraf": "^6.1.3", "tar": "^7.5.15", - "ts-node": "^10.9.2", "typescript": "^6.0.3", "vitest": "^3.2.4" - }, - "peerDependencies": { - "jiti": ">=2", - "ts-node": ">=10" - }, - "peerDependenciesMeta": { - "jiti": { - "optional": true - }, - "ts-node": { - "optional": true - } } } diff --git a/packages/cli/src/commands/import/plan.ts b/packages/cli/src/commands/import/plan.ts index 8b12c3d08..b0b1d6b1e 100644 --- a/packages/cli/src/commands/import/plan.ts +++ b/packages/cli/src/commands/import/plan.ts @@ -658,7 +658,6 @@ ${chalk.cyan('For safety, resources are not deletable until the plan has been co const updated = packageJson.upsertDevDependencies({ checkly: `^${ownPackageJson?.version ?? '6'}`, - jiti: '^2', }) if (updated) { diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling/package.json index 30ce59b6f..b12adbc29 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling/package.json @@ -2,7 +2,6 @@ "name": "playwright-bundle-test", "version": "1.0.0", "dependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-doubleCheck-default-ignored/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-doubleCheck-default-ignored/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-doubleCheck-default-ignored/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-doubleCheck-default-ignored/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-doubleCheck-not-allowed/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-doubleCheck-not-allowed/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-doubleCheck-not-allowed/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-doubleCheck-not-allowed/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-with-projects/package-lock.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-with-projects/package-lock.json index dd3ef2fea..4cf74f96c 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-with-projects/package-lock.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-with-projects/package-lock.json @@ -6,18 +6,17 @@ "": { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } }, "node_modules/@playwright/test": { - "version": "1.58.2", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.58.2.tgz", - "integrity": "sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==", + "version": "1.59.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.59.1.tgz", + "integrity": "sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.58.2" + "playwright": "1.59.1" }, "bin": { "playwright": "cli.js" @@ -41,24 +40,14 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, "node_modules/playwright": { - "version": "1.58.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.2.tgz", - "integrity": "sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==", + "version": "1.59.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.59.1.tgz", + "integrity": "sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.58.2" + "playwright-core": "1.59.1" }, "bin": { "playwright": "cli.js" @@ -71,9 +60,9 @@ } }, "node_modules/playwright-core": { - "version": "1.58.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz", - "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==", + "version": "1.59.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.1.tgz", + "integrity": "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==", "dev": true, "license": "Apache-2.0", "bin": { diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-with-projects/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-with-projects/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-with-projects/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-with-projects/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-without-projects/package-lock.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-without-projects/package-lock.json index dd3ef2fea..4cf74f96c 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-without-projects/package-lock.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-without-projects/package-lock.json @@ -6,18 +6,17 @@ "": { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } }, "node_modules/@playwright/test": { - "version": "1.58.2", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.58.2.tgz", - "integrity": "sha512-akea+6bHYBBfA9uQqSYmlJXn61cTa+jbO87xVLCWbTqbWadRVmhxlXATaOjOgcBaWU4ePo0wB41KMFv3o35IXA==", + "version": "1.59.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.59.1.tgz", + "integrity": "sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.58.2" + "playwright": "1.59.1" }, "bin": { "playwright": "cli.js" @@ -41,24 +40,14 @@ "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } - }, "node_modules/playwright": { - "version": "1.58.2", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.58.2.tgz", - "integrity": "sha512-vA30H8Nvkq/cPBnNw4Q8TWz1EJyqgpuinBcHET0YVJVFldr8JDNiU9LaWAE1KqSkRYazuaBhTpB5ZzShOezQ6A==", + "version": "1.59.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.59.1.tgz", + "integrity": "sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.58.2" + "playwright-core": "1.59.1" }, "bin": { "playwright": "cli.js" @@ -71,9 +60,9 @@ } }, "node_modules/playwright-core": { - "version": "1.58.2", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.58.2.tgz", - "integrity": "sha512-yZkEtftgwS8CsfYo7nm0KE8jsvm6i/PTgVtB8DL726wNf6H2IMsDuxCpJj59KDaxCtSnrWan2AeDqM7JBaultg==", + "version": "1.59.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.1.tgz", + "integrity": "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==", "dev": true, "license": "Apache-2.0", "bin": { diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-without-projects/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-without-projects/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-without-projects/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-without-projects/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-group-mapping/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-group-mapping/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-group-mapping/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-group-mapping/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupId-mapping/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupId-mapping/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupId-mapping/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupId-mapping/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-mapping/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-mapping/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-mapping/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-mapping/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-not-found/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-not-found/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-not-found/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-not-found/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-with-group-conflict/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-with-group-conflict/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-with-group-conflict/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-with-group-conflict/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-with-groupId-conflict/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-with-groupId-conflict/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-with-groupId-conflict/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-with-groupId-conflict/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-false-in-project-not-allowed/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-false-in-project-not-allowed/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-false-in-project-not-allowed/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-false-in-project-not-allowed/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-false-not-allowed/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-false-not-allowed/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-false-not-allowed/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-false-not-allowed/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-true-allowed/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-true-allowed/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-true-allowed/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-true-allowed/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-unset-allowed/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-unset-allowed/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-unset-allowed/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-unset-allowed/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-installCommand-allowed/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-installCommand-allowed/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-installCommand-allowed/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-installCommand-allowed/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-installCommand-unnecessary-playwright-install-warn/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-installCommand-unnecessary-playwright-install-warn/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-installCommand-unnecessary-playwright-install-warn/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-installCommand-unnecessary-playwright-install-warn/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-retryStrategy-default-ignored/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-retryStrategy-default-ignored/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-retryStrategy-default-ignored/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-retryStrategy-default-ignored/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-retryStrategy-not-allowed/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-retryStrategy-not-allowed/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-retryStrategy-not-allowed/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-retryStrategy-not-allowed/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/package.json index ad4d956cd..7fae25c42 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-shared-bundling/package.json @@ -11,7 +11,6 @@ "license": "ISC", "packageManager": "pnpm@10.28.1", "devDependencies": { - "@playwright/test": "^1.58.2", - "jiti": "^2.6.1" + "@playwright/test": "^1.58.2" } -} \ No newline at end of file +} diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-testCommand-allowed/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-testCommand-allowed/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-testCommand-allowed/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-testCommand-allowed/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-testCommand-unnecessary-playwright-install-warn/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-testCommand-unnecessary-playwright-install-warn/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-testCommand-unnecessary-playwright-install-warn/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-testCommand-unnecessary-playwright-install-warn/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-webServer/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-webServer/package.json index 6e1cc95f5..e462295c4 100644 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-webServer/package.json +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-webServer/package.json @@ -1,7 +1,6 @@ { "name": "playwright-check-fixture", "devDependencies": { - "@playwright/test": "^1.55.1", - "jiti": "^2.6.1" + "@playwright/test": "^1.55.1" } } diff --git a/packages/cli/src/constructs/project.ts b/packages/cli/src/constructs/project.ts index 53049a8ba..6d7ed3356 100644 --- a/packages/cli/src/constructs/project.ts +++ b/packages/cli/src/constructs/project.ts @@ -17,7 +17,6 @@ import { JitiFileLoader, MixedFileLoader, NativeFileLoader, - TSNodeFileLoader, UnsupportedFileLoaderError, } from '../loader/index.js' import { Diagnostics } from './diagnostics.js' @@ -25,7 +24,7 @@ import { ConstructDiagnostics, InvalidPropertyValueDiagnostic } from './construc import { ProjectBundle, ProjectDataBundle } from './project-bundle.js' import { pathToPosix } from '../services/util.js' import { Workspace } from '../services/check-parser/package-files/workspace.js' -import { detectPackageManager, npmPackageManager, PackageManager } from '../services/check-parser/package-files/package-manager.js' +import { npmPackageManager, PackageManager } from '../services/check-parser/package-files/package-manager.js' import { Err, Result } from '../services/check-parser/package-files/result.js' import { Runtime } from '../runtimes/index.js' import { Bundler } from '../services/check-parser/bundler.js' @@ -229,7 +228,6 @@ export class Session { static loader: FileLoader = new MixedFileLoader( new NativeFileLoader(), new JitiFileLoader(), - new TSNodeFileLoader(), ) static project?: Project @@ -312,24 +310,8 @@ export class Session { return defaultExport } catch (err: any) { if (err instanceof UnsupportedFileLoaderError && /\.[cm]?ts$/.test(filePath)) { - // At this point the Session package manager may not have been set up yet. - // Detect if needed. - const packageManager = Session.basePath - ? Session.packageManager - : await detectPackageManager(path.dirname(filePath)) - - const add = (packages: string[]) => { - return packageManager.addCommand({ packages, saveDev: true }).unsafeDisplayCommand - } - throw new Error( - `Unable to load the TypeScript file '${filePath}'.\n\n` - + 'An additional package is required to load TypeScript files.\n\n' - + `The recommended TypeScript loader is jiti:\n\n` - + ` ${add(['jiti'])}\n\n` - + 'Alternatively, ts-node is also supported:\n\n' - + ` ${add(['ts-node'])}\n\n` - + `Please try again after installing one of the supported packages.`, + `Unable to load the TypeScript file '${filePath}'.`, { cause: err }, ) } diff --git a/packages/cli/src/helpers/onboarding/__tests__/boilerplate.spec.ts b/packages/cli/src/helpers/onboarding/__tests__/boilerplate.spec.ts index c50392e93..320d4f390 100644 --- a/packages/cli/src/helpers/onboarding/__tests__/boilerplate.spec.ts +++ b/packages/cli/src/helpers/onboarding/__tests__/boilerplate.spec.ts @@ -249,7 +249,7 @@ describe('boilerplate', () => { expect(logs.some(l => l.includes('bun'))).toBe(true) }) - it('adds checkly and jiti as devDependencies before installing', async () => { + it('adds checkly as a devDependency before installing', async () => { mockPrompts.mockResolvedValue({ install: true }) await runDepsInstall(projectDir, log) @@ -260,7 +260,6 @@ describe('boilerplate', () => { expect(pkgWrite).toBeDefined() const written = JSON.parse(pkgWrite![1] as string) expect(written.devDependencies.checkly).toBe('latest') - expect(written.devDependencies.jiti).toBe('latest') }) }) }) diff --git a/packages/cli/src/helpers/onboarding/boilerplate.ts b/packages/cli/src/helpers/onboarding/boilerplate.ts index 3fc6b3e8c..640229aa3 100644 --- a/packages/cli/src/helpers/onboarding/boilerplate.ts +++ b/packages/cli/src/helpers/onboarding/boilerplate.ts @@ -66,7 +66,6 @@ function addDepsToPackageJson (projectDir: string, pkg: Record, log try { pkg.devDependencies = pkg.devDependencies ?? {} pkg.devDependencies.checkly = 'latest' - pkg.devDependencies.jiti = 'latest' writeFileSync(pkgPath, JSON.stringify(pkg, null, 2) + '\n') return true } catch { @@ -170,7 +169,7 @@ export async function runDepsInstall ( } } - // Always add checkly and jiti to package.json — even if user declines running install + // Always add checkly to package.json — even if user declines running install if (!addDepsToPackageJson(projectDir, pkg, log)) { return { ok: false, @@ -178,7 +177,7 @@ export async function runDepsInstall ( installed: false, } } - log(successMessage('Added checkly and jiti to package.json')) + log(successMessage('Added checkly to package.json')) if (options.skipPrompts) { return installDependencies(projectDir, pm.installCmd, log) diff --git a/packages/cli/src/loader/index.ts b/packages/cli/src/loader/index.ts index e869969ab..97b3542c4 100644 --- a/packages/cli/src/loader/index.ts +++ b/packages/cli/src/loader/index.ts @@ -14,4 +14,3 @@ export { detectNativeTypeScriptSupport, hasNativeTypeScriptSupport, } from './native.js' -export { TSNodeFileLoader, TSNodeFileLoaderOptions } from './ts-node.js' diff --git a/packages/cli/src/loader/jiti.ts b/packages/cli/src/loader/jiti.ts index 0b34a28ce..21ab319d7 100644 --- a/packages/cli/src/loader/jiti.ts +++ b/packages/cli/src/loader/jiti.ts @@ -30,6 +30,7 @@ export class UninitializedJitiFileLoaderState extends FileLoader { const jitiExports: JitiExports = await import('jiti') const jiti = jitiExports.createJiti(__filename, { tsx: true, + tsconfigPaths: true, }) debug(`Successfully initialized loader`) JitiFileLoader.state = new InitializedJitiFileLoaderState(jiti) diff --git a/packages/cli/src/loader/ts-node.ts b/packages/cli/src/loader/ts-node.ts deleted file mode 100644 index 9b4d1428a..000000000 --- a/packages/cli/src/loader/ts-node.ts +++ /dev/null @@ -1,126 +0,0 @@ -import { createRequire } from 'node:module' -import Debug from 'debug' - -import { preferenceDelta } from './config.js' -import { FileLoader, FileLoaderOptions, UnsupportedFileLoaderError } from './loader.js' -import { FileMatch } from './match.js' - -const debug = Debug('checkly:cli:loader:ts-node') - -interface TSNodeExports { - register (opts?: any): TSNodeService -} - -interface TSNodeService { - enabled (enabled?: boolean): boolean -} - -export class UninitializedTSNodeFileLoaderState extends FileLoader { - private static init?: Promise - - async loadFile (filePath: string): Promise { - UninitializedTSNodeFileLoaderState.init ??= (async () => { - debug('Initializing loader') - try { - const tsNodeExports: TSNodeExports = await import('ts-node') - const compilerOptions: Record = { - module: 'CommonJS', - } - try { - const ts = await import('typescript') - // TS 6 deprecated moduleResolution "node10" (the implicit default for module "CommonJS"), - // which causes ts-node to error. Suppress until we drop ts-node in favor of jiti. - if (parseInt(ts.version) >= 6) { - compilerOptions.ignoreDeprecations = '6.0' - } - } catch { - // typescript not installed — skip version check - } - const service = tsNodeExports.register({ - moduleTypes: { - '**/*': 'cjs', - }, - compilerOptions, - }) - debug(`Successfully initialized loader`) - TSNodeFileLoader.state = new InitializedTSNodeFileLoaderState(service) - } catch (err) { - debug(`Failed to initialize loader: ${err}`) - TSNodeFileLoader.state = new FailedTSNodeFileLoaderState(err as Error) - } - })() - - await UninitializedTSNodeFileLoaderState.init - - return await TSNodeFileLoader.state.loadFile(filePath) - } -} - -export class FailedTSNodeFileLoaderState extends FileLoader { - error: Error - - constructor (error: Error) { - super() - this.error = error - } - - // eslint-disable-next-line @typescript-eslint/no-unused-vars, require-await - async loadFile (filePath: string): Promise { - throw new UnsupportedFileLoaderError('TSNodeFileLoader is not supported', { - cause: this.error, - }) - } -} - -export class InitializedTSNodeFileLoaderState extends FileLoader { - service: TSNodeService - - constructor (service: TSNodeService) { - super() - this.service = service - } - - // eslint-disable-next-line require-await - async loadFile (filePath: string): Promise { - debug(`Loading file ${filePath}`) - try { - this.service.enabled(true) - - const require = createRequire(import.meta.url) - const moduleExports = require(filePath) - return moduleExports - } catch (err: any) { - debug(`Failed to load file ${filePath}: ${err}`) - - if (err.message?.includes('Unable to compile TypeScript')) { - throw new Error(`Unable to load file '${filePath}' with 'ts-node' (hint: consider installing 'jiti' for improved TypeScript support)\n${err.stack}`, { - cause: err, - }) - } - - throw err - } finally { - this.service.enabled(false) - } - } -} - -export type TSNodeFileLoaderOptions = FileLoaderOptions - -export class TSNodeFileLoader extends FileLoader { - static DEFAULT_PRIORITY = 500 + preferenceDelta('ts-node') - - static state: FileLoader = new UninitializedTSNodeFileLoaderState() - - constructor (options?: TSNodeFileLoaderOptions) { - super({ - match: FileMatch.standardFiles().complement(), - priority: TSNodeFileLoader.DEFAULT_PRIORITY, - ...options, - }) - } - - async loadFile (filePath: string): Promise { - return await TSNodeFileLoader.state.loadFile(filePath) - } -} diff --git a/packages/cli/src/services/__tests__/project-parser-fixtures/typescript-project/package-lock.json b/packages/cli/src/services/__tests__/project-parser-fixtures/typescript-project/package-lock.json index 0c09eaa03..1928e5e52 100644 --- a/packages/cli/src/services/__tests__/project-parser-fixtures/typescript-project/package-lock.json +++ b/packages/cli/src/services/__tests__/project-parser-fixtures/typescript-project/package-lock.json @@ -8,19 +8,7 @@ "name": "typescript-project", "version": "1.0.0", "license": "ISC", - "devDependencies": { - "jiti": "^2.6.1" - } - }, - "node_modules/jiti": { - "version": "2.6.1", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.6.1.tgz", - "integrity": "sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==", - "dev": true, - "license": "MIT", - "bin": { - "jiti": "lib/jiti-cli.mjs" - } + "devDependencies": {} } } } diff --git a/packages/cli/src/services/__tests__/project-parser-fixtures/typescript-project/package.json b/packages/cli/src/services/__tests__/project-parser-fixtures/typescript-project/package.json index c0b10a075..f82e82c08 100644 --- a/packages/cli/src/services/__tests__/project-parser-fixtures/typescript-project/package.json +++ b/packages/cli/src/services/__tests__/project-parser-fixtures/typescript-project/package.json @@ -10,7 +10,5 @@ "keywords": [], "author": "", "license": "ISC", - "devDependencies": { - "jiti": "^2.6.1" - } -} \ No newline at end of file + "devDependencies": {} +} diff --git a/packages/cli/src/services/__tests__/util.spec.ts b/packages/cli/src/services/__tests__/util.spec.ts index 437db714b..5068efc35 100644 --- a/packages/cli/src/services/__tests__/util.spec.ts +++ b/packages/cli/src/services/__tests__/util.spec.ts @@ -81,10 +81,8 @@ describe('util', () => { describe('getPlaywrightVersionFromPackage()', () => { it('should throw error when playwright package is not found', async () => { - // Use a directory that doesn't have playwright installed const nonExistentDir = '/tmp/non-existent-dir' - await expect(getPlaywrightVersionFromPackage(nonExistentDir)) - .rejects.toThrow('Could not find @playwright/test package. Make sure it is installed.') + await expect(getPlaywrightVersionFromPackage(nonExistentDir)).rejects.toThrow() }) it('should get version from installed playwright package', async () => { diff --git a/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/playwright-project-snapshots/package.json b/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/playwright-project-snapshots/package.json index 430943643..5a4b9ec8c 100644 --- a/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/playwright-project-snapshots/package.json +++ b/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/playwright-project-snapshots/package.json @@ -2,7 +2,6 @@ "name": "playwright-project-snapshots", "version": "1.0.0", "devDependencies": { - "@playwright/test": "^1.57.0", - "jiti": "^2.6.1" + "@playwright/test": "^1.57.0" } } diff --git a/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/playwright-project/package.json b/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/playwright-project/package.json index c263ade6b..7399f2fe5 100644 --- a/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/playwright-project/package.json +++ b/packages/cli/src/services/check-parser/__tests__/check-parser-fixtures/playwright-project/package.json @@ -2,7 +2,6 @@ "name": "playwright-project", "version": "1.0.0", "devDependencies": { - "@playwright/test": "^1.57.0", - "jiti": "^2.6.1" + "@playwright/test": "^1.57.0" } } diff --git a/packages/cli/src/services/util.ts b/packages/cli/src/services/util.ts index a9eb4689e..916ee403d 100644 --- a/packages/cli/src/services/util.ts +++ b/packages/cli/src/services/util.ts @@ -243,8 +243,8 @@ export async function bundlePlayWrightProject ( export async function getPlaywrightVersionFromPackage (cwd: string): Promise { try { - const require = createRequire(import.meta.url) - const playwrightPath = require.resolve('@playwright/test/package.json', { paths: [cwd] }) + const require = createRequire(path.join(cwd, 'noop.js')) + const playwrightPath = require.resolve('@playwright/test/package.json') const playwrightPkg = require(playwrightPath) const version = normalizeVersion(playwrightPkg.version) diff --git a/packages/create-cli/e2e/__tests__/fixtures/initiated-project/package.json b/packages/create-cli/e2e/__tests__/fixtures/initiated-project/package.json index 6813df327..4465cbb7e 100644 --- a/packages/create-cli/e2e/__tests__/fixtures/initiated-project/package.json +++ b/packages/create-cli/e2e/__tests__/fixtures/initiated-project/package.json @@ -9,7 +9,6 @@ "author": "", "license": "ISC", "devDependencies": { - "checkly": "latest", - "jiti": "^2" + "checkly": "latest" } -} \ No newline at end of file +} diff --git a/packages/create-cli/e2e/__tests__/fixtures/playwright-project/package.json b/packages/create-cli/e2e/__tests__/fixtures/playwright-project/package.json index 6813df327..4465cbb7e 100644 --- a/packages/create-cli/e2e/__tests__/fixtures/playwright-project/package.json +++ b/packages/create-cli/e2e/__tests__/fixtures/playwright-project/package.json @@ -9,7 +9,6 @@ "author": "", "license": "ISC", "devDependencies": { - "checkly": "latest", - "jiti": "^2" + "checkly": "latest" } -} \ No newline at end of file +} diff --git a/packages/create-cli/package.json b/packages/create-cli/package.json index 685736224..d63caf1f0 100644 --- a/packages/create-cli/package.json +++ b/packages/create-cli/package.json @@ -77,17 +77,8 @@ "@types/uuid": "^10.0.0", "cross-env": "^10.1.0", "rimraf": "^6.1.3", - "ts-node": "^10.9.2", "typescript": "^6.0.3", "uuid": "^14.0.0", "vitest": "^3.2.4" - }, - "peerDependencies": { - "ts-node": ">=10" - }, - "peerDependenciesMeta": { - "ts-node": { - "optional": true - } } } diff --git a/packages/create-cli/src/loader/index.ts b/packages/create-cli/src/loader/index.ts index 4800ed160..7ec057106 100644 --- a/packages/create-cli/src/loader/index.ts +++ b/packages/create-cli/src/loader/index.ts @@ -10,4 +10,3 @@ export { NativeFileLoader, NativeFileLoaderOptions, } from './native.js' -export { TSNodeFileLoader, TSNodeFileLoaderOptions } from './ts-node.js' diff --git a/packages/create-cli/src/loader/jiti.ts b/packages/create-cli/src/loader/jiti.ts index 105b2a215..ae5a71120 100644 --- a/packages/create-cli/src/loader/jiti.ts +++ b/packages/create-cli/src/loader/jiti.ts @@ -23,7 +23,9 @@ export class UninitializedJitiFileLoaderState extends FileLoader { UninitializedJitiFileLoaderState.init ??= (async () => { try { const jitiExports: JitiExports = await import('jiti') - const jiti = jitiExports.createJiti(__filename) + const jiti = jitiExports.createJiti(__filename, { + tsconfigPaths: true, + }) JitiFileLoader.state = new InitializedJitiFileLoaderState(jiti) } catch (err) { JitiFileLoader.state = new FailedJitiFileLoaderState(err as Error) diff --git a/packages/create-cli/src/loader/ts-node.ts b/packages/create-cli/src/loader/ts-node.ts deleted file mode 100644 index c8fe17ce7..000000000 --- a/packages/create-cli/src/loader/ts-node.ts +++ /dev/null @@ -1,113 +0,0 @@ -import { createRequire } from 'node:module' - -import { FileLoader, FileLoaderOptions, UnsupportedFileLoaderError } from './loader.js' -import { FileMatch } from './match.js' - -interface TSNodeExports { - register (opts?: any): TSNodeService -} - -interface TSNodeService { - enabled (enabled?: boolean): boolean -} - -export class UninitializedTSNodeFileLoaderState extends FileLoader { - private static init?: Promise - - async loadFile (filePath: string): Promise { - UninitializedTSNodeFileLoaderState.init ??= (async () => { - try { - const tsNodeExports: TSNodeExports = await import('ts-node') - const compilerOptions: Record = { - module: 'CommonJS', - } - try { - const ts = await import('typescript') - // TS 6 deprecated moduleResolution "node10" (the implicit default for module "CommonJS"), - // which causes ts-node to error. Suppress until we drop ts-node in favor of jiti. - if (parseInt(ts.version) >= 6) { - compilerOptions.ignoreDeprecations = '6.0' - } - } catch { - // typescript not installed — skip version check - } - const service = tsNodeExports.register({ - moduleTypes: { - '**/*': 'cjs', - }, - compilerOptions, - }) - TSNodeFileLoader.state = new InitializedTSNodeFileLoaderState(service) - } catch (err) { - TSNodeFileLoader.state = new FailedTSNodeFileLoaderState(err as Error) - } - })() - - await UninitializedTSNodeFileLoaderState.init - - return await TSNodeFileLoader.state.loadFile(filePath) - } -} - -export class FailedTSNodeFileLoaderState extends FileLoader { - error: Error - - constructor (error: Error) { - super() - this.error = error - } - - // eslint-disable-next-line @typescript-eslint/no-unused-vars, require-await - async loadFile (filePath: string): Promise { - throw new UnsupportedFileLoaderError('TSNodeFileLoader is not supported', { - cause: this.error, - }) - } -} - -export class InitializedTSNodeFileLoaderState extends FileLoader { - service: TSNodeService - - constructor (service: TSNodeService) { - super() - this.service = service - } - - // eslint-disable-next-line require-await - async loadFile (filePath: string): Promise { - try { - this.service.enabled(true) - - const require = createRequire(import.meta.url) - const moduleExports = require(filePath) - return moduleExports - } catch (err: any) { - if (err.message?.includes('Unable to compile TypeScript')) { - throw new Error(`Unable to load file '${filePath}' with 'ts-node' (hint: consider installing 'jiti' for improved TypeScript support)\n${err.stack}`, { - cause: err, - }) - } - - throw err - } finally { - this.service.enabled(false) - } - } -} - -export type TSNodeFileLoaderOptions = FileLoaderOptions - -export class TSNodeFileLoader extends FileLoader { - static state: FileLoader = new UninitializedTSNodeFileLoaderState() - - constructor (options?: TSNodeFileLoaderOptions) { - super({ - match: FileMatch.standardFiles().complement(), - ...options, - }) - } - - async loadFile (filePath: string): Promise { - return await TSNodeFileLoader.state.loadFile(filePath) - } -} diff --git a/packages/create-cli/src/utils/__tests__/fixtures/checkly-project/package.json b/packages/create-cli/src/utils/__tests__/fixtures/checkly-project/package.json index 24e21a514..55ad804ed 100644 --- a/packages/create-cli/src/utils/__tests__/fixtures/checkly-project/package.json +++ b/packages/create-cli/src/utils/__tests__/fixtures/checkly-project/package.json @@ -10,7 +10,6 @@ "author": "", "license": "ISC", "devDependencies": { - "checkly": "latest", - "jiti": "^2" + "checkly": "latest" } } diff --git a/packages/create-cli/src/utils/fileloader.ts b/packages/create-cli/src/utils/fileloader.ts index 94334d387..6d1e69c69 100644 --- a/packages/create-cli/src/utils/fileloader.ts +++ b/packages/create-cli/src/utils/fileloader.ts @@ -1,9 +1,8 @@ -import { MixedFileLoader, NativeFileLoader, JitiFileLoader, TSNodeFileLoader } from '../loader/index.js' +import { MixedFileLoader, NativeFileLoader, JitiFileLoader } from '../loader/index.js' const loader = new MixedFileLoader( new NativeFileLoader(), new JitiFileLoader(), - new TSNodeFileLoader(), ) export async function loadFile (filePath: string): Promise { From 47ebf4f26f3ce4030f3279773a332e170ad57feb Mon Sep 17 00:00:00 2001 From: Simo Kinnunen Date: Wed, 20 May 2026 16:23:49 +0900 Subject: [PATCH 04/13] feat!: switch monorepo from npm to pnpm (#1298) * feat!: switch from npm to pnpm BREAKING CHANGE: The project now uses pnpm as its package manager. - Replace package-lock.json with pnpm-lock.yaml (imported via pnpm import) - Add pnpm-workspace.yaml for workspace configuration - Update all CI workflows to use pnpm - Update all npm scripts to use pnpm equivalents - Update simple-git-hooks to use pnpm exec - Add pnpm.onlyBuiltDependencies for esbuild and simple-git-hooks - Replace fixture npm lockfiles with pnpm lockfiles - Update test expectations for pnpm-lock.yaml in bundled file lists Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): use pnpm instead of npx in test fixtures Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): add string-width and ast-types as explicit dependencies These were phantom dependencies (transitive via recast and other packages) that worked with npm's flat node_modules but fail under pnpm's strict dependency resolution. Co-Authored-By: Claude Opus 4.6 (1M context) * fix: serialize pnpm lifecycle scripts to prevent race conditions Set child-concurrency=1 in .npmrc so pnpm runs workspace prepare scripts sequentially. Remove the redundant `pnpm -r run prepare` from the root prepare script (pnpm already runs each package's prepare hook) and move prepare:ai-context to postprepare so it runs after all packages are built. Co-Authored-By: Claude Opus 4.6 (1M context) * refactor(cli): convert check-parse-error e2e test to use FixtureSandbox Co-Authored-By: Claude Opus 4.6 (1M context) * test(create-cli): log stderr when bootstrap e2e stdout is empty Co-Authored-By: Claude Opus 4.6 (1M context) * fix(create-cli): force npm in e2e tests to avoid pnpm workspace detection Co-Authored-By: Claude Opus 4.6 (1M context) * fix(create-cli): fix playwright config e2e test prompt injection The test injected initializeGit=true but didn't account for when .git already existed (skipping the prompt). Change to not init git since it's not what the test is verifying, and add the missing askCopyPlaywrightProject prompt. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(create-cli): stop injecting jiti into scaffolded project dependencies jiti is now bundled internally by the CLI and no longer needed as a user-facing dependency. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): update pw-test e2e assertions for pnpm testCommand Fixtures now detect pnpm as the package manager, so the generated testCommand is 'pnpm playwright test' instead of 'npx playwright test'. Co-Authored-By: Claude Opus 4.6 (1M context) * refactor: decouple skills/ sync from prepare lifecycle Move the root-level skills/ copy from a postprepare lifecycle hook to an explicit sync:skills script. This eliminates the cross-package dependency between root and packages/cli during pnpm install, removing the need for child-concurrency=1 in .npmrc. The AI context is still built as part of packages/cli's prepare script (needed for the published tarball), but the root no longer races to copy from its output. Co-Authored-By: Claude Opus 4.6 (1M context) * perf(cli): optimize test fixtures with FixtureTemplate Introduce FixtureTemplate to pre-install dependencies once and share them across fixtures via symlinks, reducing pnpm install calls from 53 to 1. - Add FixtureTemplate class that caches pre-installed node_modules - Add vitest globalSetup to build the playwright template once - Migrate playwright-check, parse-files tests to use template - Set installPackages: false for fixtures with no deps (agentic-check, api-check, browser-check, project-parser) - Symlink workspace checkly package into all fixture node_modules - Remove injectPackedSelf (dead code) and pnpm pack from test scripts - Remove accidentally committed node_modules from test-bundling and test-shared-bundling fixtures Co-Authored-By: Claude Opus 4.6 (1M context) * perf(cli): use FixtureTemplate in e2e tests Share a single playwright install across all e2e fixture sandboxes via symlinked node_modules. Fixtures with no dependencies use installPackages: false instead. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): use pnpm in e2e tests and add lockfiles to fixtures Replace npx with pnpm in e2e test runners for consistency with the pnpm-based fixtures. Add pnpm-lock.yaml to all e2e fixtures so detectPackageManager reliably identifies pnpm. Co-Authored-By: Claude Opus 4.6 (1M context) * refactor(cli): add FixtureTemplate.use() and simplify template usage Add FixtureTemplate.use() which looks up a cached template by name, falling back to an env var set by globalSetup for cross-process communication. Test files now pass template: 'playwright' as a string instead of managing FixtureTemplate.create() calls directly. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): use dedicated template for pinned playwright version in pw-test The test-pwt-native fixture pins @playwright/test to 1.53.1. The shared playwright template installs ^1.59.1 which resolves to a newer version, causing a version mismatch error at runtime. Co-Authored-By: Claude Opus 4.6 (1M context) * perf(cli): create fixture templates serially for better cache reuse Sequential pnpm installs let the second template reuse packages cached by the first (e.g. playwright-core), avoiding redundant downloads on CI. Co-Authored-By: Claude Opus 4.6 (1M context) * refactor(cli): prepare FixtureSandbox for runChecklyCli migration - Make source param optional (empty sandbox when omitted) - Add 'bare' template (checkly only, no other deps) - Fix Windows .bin by writing a .cmd shim instead of a symlink - Replace runChecklyCli with checklyEnv + runCheckly helpers Co-Authored-By: Claude Opus 4.6 (1M context) * refactor(cli): migrate all e2e tests from runChecklyCli to FixtureSandbox Replace the raw child_process.spawn-based runChecklyCli with FixtureSandbox + runCheckly helper across all 21 e2e test files. Tests now use pnpm checkly via the .bin symlink instead of spawning bin/run directly, which fixes Windows module resolution issues with pnpm's node_modules layout. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): write package.json in sourceless fixture sandboxes pnpm requires a package.json in the working directory. When no source is provided, write a minimal one so pnpm checkly can run. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): fix e2e test migration issues - destroy: wrong project name exits 0, not failure - login: remove trailing newline assertion (oclif line-wrapping) - switch: remove trailing newline assertion - env.rm: add explicit timeout for interactive prompt test - Add missing package.json to fixtures that lacked one - Write package.json in sourceless sandboxes for pnpm compat Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): unset CI env var in e2e test helper Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): force interactive CLI mode in e2e tests Use CHECKLY_CLI_MODE=interactive instead of unsetting CI, since the CLI also checks GITHUB_ACTIONS and other CI-specific env vars. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): add .js extension to oclif helpClass path On Windows, oclif's module-loader uses require() to load the custom help class. Without the .js extension, require() fails to resolve the module in an ESM package because Node.js doesn't auto-append extensions for require() in "type": "module" packages. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): run CLI via node instead of pnpm in e2e tests On Windows, pnpm's import() of oclif command modules fails with MODULE_NOT_FOUND even when the files exist. Bypass pnpm's execution layer by invoking node with the bin/run path directly, matching the behavior of the old runChecklyCli helper. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): use real CLI path instead of junction path in e2e tests On Windows, Node.js import() fails when resolving through NTFS junctions. Use CLI_PACKAGE_ROOT directly to avoid junction traversal. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): use stripped env in e2e tests to match old runChecklyCli Use extendEnv: false so the CLI subprocess gets only explicitly passed env vars, matching the old child_process.spawn behavior. This prevents CI runner env vars from interfering with the CLI. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): pass API keys via checklyEnv in direct fixt.run callers Tests using fixt.run directly need checklyEnv() to provide API keys and other required env vars when extendEnv is false. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): use dir symlinks instead of junctions on Windows NTFS junctions cause Node.js ESM import() to fail when resolving modules through the junction. Regular dir symlinks work correctly on GitHub Actions runners which have the required permissions. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): add missing deps to e2e fixture templates Add uuid to the playwright template (used by deploy-project fixture). Switch sync-playwright tests from bare to playwright template (fixture loads playwright.config.ts which imports @playwright/test). Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): use shell on Windows in FixtureSandbox.run Matches the old runChecklyCli behavior which used shell: true on Windows for cmd.exe to handle process execution. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): switch e2e tests back to pnpm checkly Unit tests use pnpm checkly and pass on Windows. The node bin/run approach fails because oclif's CJS module-loader can't import() ESM command files using Windows absolute paths. With dir symlinks (not junctions) now in place, pnpm checkly should work correctly. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): remove extendEnv: false from e2e tests Node.js on Windows needs system env vars (SYSTEMROOT, etc.) for module resolution. Stripping the env caused import() to fail for some files. Use the default extendEnv: true and rely on CHECKLY_CLI_MODE: 'interactive' to handle CI detection. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): install packed CLI tarball into templates instead of symlinking Windows CI runners have broken pnpm junctions that cause import() to fail. Install the packed CLI tarball into each FixtureTemplate via pnpm install, giving real file copies instead of junctions. - Add pnpm pack back to test scripts - FixtureTemplate.create installs checkly tarball as devDependency - Remove symlinkChecklyPackage and Windows .cmd shim - Replace installPackages: false with template: 'bare' Co-Authored-By: Claude Opus 4.6 (1M context) * refactor(cli): remove installPackages option, default template to bare Every sandbox now uses a template (defaults to 'bare'). Remove installPackages option and clean up redundant template: 'bare' from all test files. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(ci): split e2e tests into separate jobs per package Prevents pnpm pack in CLI tests from deleting dist/ while create-CLI tests run in parallel. Co-Authored-By: Claude Opus 4.6 (1M context) * ci: cancel in-progress workflow runs on new push Co-Authored-By: Claude Opus 4.6 (1M context) * ci: use 'e2e - - ' job name format Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): use extendEnv: false in e2e test helpers Prevent CI env vars from leaking into CLI subprocesses. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(create-cli): add mock @playwright/test to playwright-project fixture The fixture's playwright.config.ts imports from @playwright/test. With extendEnv: false the subprocess can't resolve it from the workspace. Add a minimal mock that implements defineConfig and devices. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): remove shell: true from FixtureSandbox.run shell: true on Windows causes cmd.exe to mangle arguments with spaces. Not needed since pnpm is invoked directly via execa. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): wait for port 4242 release between login e2e tests The login command binds port 4242 for the OAuth callback. When tests time out and kill the process, the port may not be immediately available for the next test. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): force-kill login process after 1s grace period Reduce forceKillAfterDelay from default 5s to 1s so the port is released faster. Increase test timeouts to accommodate the afterEach port wait. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): kill orphaned login process on Windows via taskkill On Windows, execa kills pnpm but the grandchild node process holding port 4242 survives. Use netstat + taskkill /T to find and kill it. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): kill entire process tree in login e2e tests Use detached process group + taskkill /T (Windows) or negative PID SIGKILL (Unix) to kill pnpm and all its grandchild processes that hold port 4242. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): use detached only on Unix in login tests detached: true on Windows breaks stdio for grandchild processes due to DETACHED_PROCESS nullifying standard handles. Use detached only on Unix (for process group kill) and taskkill /T on Windows. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): handle subprocess rejection in login tests Attach rejection handler immediately to prevent unhandled rejection when taskkill kills the process tree externally. Co-Authored-By: Claude Opus 4.6 (1M context) --------- Co-authored-by: Claude Opus 4.6 (1M context) --- .github/workflows/check-ai-context.yml | 13 +- .github/workflows/release-canary.yml | 14 +- .github/workflows/release-create-package.yml | 8 +- .github/workflows/release.yml | 44 +- .github/workflows/test.yml | 71 +- package.json | 28 +- .../cli/e2e/__tests__/account-plan.spec.ts | 198 +- .../e2e/__tests__/check-parse-error.spec.ts | 48 +- .../__tests__/checks-empty-account.spec.ts | 88 +- packages/cli/e2e/__tests__/checks-get.spec.ts | 66 +- .../cli/e2e/__tests__/checks-list.spec.ts | 61 +- .../cli/e2e/__tests__/checks-stats.spec.ts | 81 +- packages/cli/e2e/__tests__/deploy.spec.ts | 12 +- packages/cli/e2e/__tests__/destroy.spec.ts | 93 +- .../cli/e2e/__tests__/env/env.add.spec.ts | 81 +- packages/cli/e2e/__tests__/env/env.ls.spec.ts | 38 +- .../cli/e2e/__tests__/env/env.pull.spec.ts | 92 +- packages/cli/e2e/__tests__/env/env.rm.spec.ts | 82 +- .../cli/e2e/__tests__/env/env.upate.spec.ts | 42 +- .../package.json | 1 + .../fixtures/check-parse-error/pnpm-lock.yaml | 9 + .../deploy-agentic-project/pnpm-lock.yaml | 9 + .../deploy-esm-project/pnpm-lock.yaml | 52 + .../fixtures/deploy-project/pnpm-lock.yaml | 52 + .../fixtures/empty-project/pnpm-lock.yaml | 52 + .../fixtures/esm-module/pnpm-lock.yaml | 52 + .../fixtures/retry-project/pnpm-lock.yaml | 52 + .../pnpm-lock.yaml | 52 + .../fixtures/snapshot-project/pnpm-lock.yaml | 52 + .../test-duplicated-groups/pnpm-lock.yaml | 52 + .../fixtures/test-only-project/pnpm-lock.yaml | 52 + .../fixtures/test-parse-error/pnpm-lock.yaml | 52 + .../test-playwright-project/package.json | 1 + .../fixtures/test-project/pnpm-lock.yaml | 52 + .../fixtures/test-pwt-native/pnpm-lock.yaml | 52 + .../fixtures/trigger-project/package.json | 1 + packages/cli/e2e/__tests__/help.spec.ts | 31 +- packages/cli/e2e/__tests__/incidents.spec.ts | 105 +- packages/cli/e2e/__tests__/login.spec.ts | 117 +- packages/cli/e2e/__tests__/logout.spec.ts | 19 +- packages/cli/e2e/__tests__/pw-test.spec.ts | 12 +- packages/cli/e2e/__tests__/skills.spec.ts | 96 +- packages/cli/e2e/__tests__/switch.spec.ts | 23 +- .../cli/e2e/__tests__/sync-playwright.spec.ts | 90 +- packages/cli/e2e/__tests__/test.spec.ts | 13 +- packages/cli/e2e/__tests__/trigger.spec.ts | 126 +- packages/cli/e2e/__tests__/validate.spec.ts | 31 +- packages/cli/e2e/__tests__/whoami.spec.ts | 21 +- packages/cli/e2e/run-checkly.ts | 108 +- packages/cli/package.json | 16 +- .../__tests__/agentic-check.spec.ts | 2 +- .../constructs/__tests__/api-check.spec.ts | 2 +- .../__tests__/browser-check.spec.ts | 2 +- .../test-cases/test-bundling/pnpm-lock.yaml | 52 + .../pnpm-lock.yaml | 52 + .../pnpm-lock.yaml | 52 + .../package-lock.json | 76 - .../pnpm-lock.yaml | 52 + .../package-lock.json | 76 - .../pnpm-lock.yaml | 52 + .../test-group-mapping/pnpm-lock.yaml | 52 + .../test-groupId-mapping/pnpm-lock.yaml | 52 + .../test-groupName-mapping/pnpm-lock.yaml | 52 + .../test-groupName-not-found/pnpm-lock.yaml | 52 + .../pnpm-lock.yaml | 52 + .../pnpm-lock.yaml | 52 + .../pnpm-lock.yaml | 52 + .../pnpm-lock.yaml | 52 + .../test-headless-true-allowed/pnpm-lock.yaml | 52 + .../pnpm-lock.yaml | 52 + .../pnpm-lock.yaml | 52 + .../pnpm-lock.yaml | 52 + .../pnpm-lock.yaml | 52 + .../pnpm-lock.yaml | 52 + .../test-testCommand-allowed/pnpm-lock.yaml | 52 + .../pnpm-lock.yaml | 52 + .../test-cases/test-webServer/pnpm-lock.yaml | 52 + .../__tests__/playwright-check.spec.ts | 40 +- .../__tests__/__snapshots__/util.spec.ts.snap | 5 - .../empty-env-project/pnpm-lock.yaml | 9 + .../empty-script-project/pnpm-lock.yaml | 9 + .../pnpm-lock.yaml | 9 + .../pnpm-lock.yaml | 9 + .../simple-project-with-pl/pnpm-lock.yaml | 9 + .../simple-project/pnpm-lock.yaml | 9 + .../typescript-project/package-lock.json | 14 - .../typescript-project/pnpm-lock.yaml | 9 + .../services/__tests__/project-parser.spec.ts | 2 +- .../__tests__/check-parser.spec.ts | 1 - .../__tests__/parse-files.spec.ts | 6 +- packages/cli/src/testing/fixture-sandbox.ts | 225 +- packages/cli/src/testing/global-setup.ts | 15 + packages/cli/vitest.config.e2e.mts | 1 + packages/cli/vitest.config.mts | 1 + .../e2e/__tests__/bootstrap.spec.ts | 9 +- .../node_modules/@playwright/test/index.js | 15 + .../@playwright/test/package.json | 8 + .../fixtures/playwright-project/package.json | 3 +- packages/create-cli/e2e/run-create-cli.ts | 4 + packages/create-cli/package.json | 2 +- .../create-cli/src/actions/dependencies.ts | 1 - pnpm-lock.yaml | 6930 +++++++++++++++++ pnpm-workspace.yaml | 2 + 103 files changed, 9998 insertions(+), 1264 deletions(-) create mode 100644 packages/cli/e2e/__tests__/fixtures/allowed-config-file-constructs/package.json create mode 100644 packages/cli/e2e/__tests__/fixtures/check-parse-error/pnpm-lock.yaml create mode 100644 packages/cli/e2e/__tests__/fixtures/deploy-agentic-project/pnpm-lock.yaml create mode 100644 packages/cli/e2e/__tests__/fixtures/deploy-esm-project/pnpm-lock.yaml create mode 100644 packages/cli/e2e/__tests__/fixtures/deploy-project/pnpm-lock.yaml create mode 100644 packages/cli/e2e/__tests__/fixtures/empty-project/pnpm-lock.yaml create mode 100644 packages/cli/e2e/__tests__/fixtures/esm-module/pnpm-lock.yaml create mode 100644 packages/cli/e2e/__tests__/fixtures/retry-project/pnpm-lock.yaml create mode 100644 packages/cli/e2e/__tests__/fixtures/snapshot-project-missing-snapshots/pnpm-lock.yaml create mode 100644 packages/cli/e2e/__tests__/fixtures/snapshot-project/pnpm-lock.yaml create mode 100644 packages/cli/e2e/__tests__/fixtures/test-duplicated-groups/pnpm-lock.yaml create mode 100644 packages/cli/e2e/__tests__/fixtures/test-only-project/pnpm-lock.yaml create mode 100644 packages/cli/e2e/__tests__/fixtures/test-parse-error/pnpm-lock.yaml create mode 100644 packages/cli/e2e/__tests__/fixtures/test-playwright-project/package.json create mode 100644 packages/cli/e2e/__tests__/fixtures/test-project/pnpm-lock.yaml create mode 100644 packages/cli/e2e/__tests__/fixtures/test-pwt-native/pnpm-lock.yaml create mode 100644 packages/cli/e2e/__tests__/fixtures/trigger-project/package.json create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-doubleCheck-default-ignored/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-doubleCheck-not-allowed/pnpm-lock.yaml delete mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-with-projects/package-lock.json create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-with-projects/pnpm-lock.yaml delete mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-without-projects/package-lock.json create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-without-projects/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-group-mapping/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupId-mapping/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-mapping/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-not-found/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-with-group-conflict/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-with-groupId-conflict/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-false-in-project-not-allowed/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-false-not-allowed/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-true-allowed/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-unset-allowed/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-installCommand-allowed/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-installCommand-unnecessary-playwright-install-warn/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-retryStrategy-default-ignored/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-retryStrategy-not-allowed/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-testCommand-allowed/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-testCommand-unnecessary-playwright-install-warn/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-webServer/pnpm-lock.yaml create mode 100644 packages/cli/src/services/__tests__/project-parser-fixtures/empty-env-project/pnpm-lock.yaml create mode 100644 packages/cli/src/services/__tests__/project-parser-fixtures/empty-script-project/pnpm-lock.yaml create mode 100644 packages/cli/src/services/__tests__/project-parser-fixtures/multiple-glob-patterns-project/pnpm-lock.yaml create mode 100644 packages/cli/src/services/__tests__/project-parser-fixtures/multistep-browser-glob-patterns/pnpm-lock.yaml create mode 100644 packages/cli/src/services/__tests__/project-parser-fixtures/simple-project-with-pl/pnpm-lock.yaml create mode 100644 packages/cli/src/services/__tests__/project-parser-fixtures/simple-project/pnpm-lock.yaml delete mode 100644 packages/cli/src/services/__tests__/project-parser-fixtures/typescript-project/package-lock.json create mode 100644 packages/cli/src/services/__tests__/project-parser-fixtures/typescript-project/pnpm-lock.yaml create mode 100644 packages/cli/src/testing/global-setup.ts create mode 100644 packages/create-cli/e2e/__tests__/fixtures/playwright-project/node_modules/@playwright/test/index.js create mode 100644 packages/create-cli/e2e/__tests__/fixtures/playwright-project/node_modules/@playwright/test/package.json create mode 100644 pnpm-lock.yaml create mode 100644 pnpm-workspace.yaml diff --git a/.github/workflows/check-ai-context.yml b/.github/workflows/check-ai-context.yml index da3ee8e36..569f00821 100644 --- a/.github/workflows/check-ai-context.yml +++ b/.github/workflows/check-ai-context.yml @@ -15,14 +15,15 @@ jobs: pull-requests: write steps: - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v5 + with: + version: 10 - uses: actions/setup-node@v4 with: node-version: '20.x' - cache: "npm" - cache-dependency-path: package-lock.json - - run: npm config set fund false && npm set audit false - - run: npm ci - - run: npm run prepare + cache: "pnpm" + - run: pnpm install --frozen-lockfile + - run: pnpm run sync:skills - name: Check for uncommitted changes in skills/ run: git diff --exit-code skills/ - name: Comment on PR if skills/ is out of date @@ -37,5 +38,5 @@ jobs: Please run the following locally and commit the changes: \`\`\` - npm run prepare + pnpm run sync:skills \`\`\`" diff --git a/.github/workflows/release-canary.yml b/.github/workflows/release-canary.yml index cbd29b67a..17c8ab75a 100644 --- a/.github/workflows/release-canary.yml +++ b/.github/workflows/release-canary.yml @@ -13,15 +13,15 @@ jobs: - uses: actions/checkout@v3 with: ref: ${{ github.event.pull_request.head.sha }} + - uses: pnpm/action-setup@v5 + with: + version: 10 # Setup .npmrc file to publish to npm - uses: actions/setup-node@v4 with: node-version: '20.x' registry-url: 'https://registry.npmjs.org' - - name: Upgrade npm for trusted publishing support - run: | - npm install -g npm@latest - echo "npm version: $(npm --version)" + cache: "pnpm" # Extract the dynamic value from the canary label if present - name: Extract CANARY_TAG id: extract-canary @@ -36,11 +36,11 @@ jobs: # Ensure that the README is published with the package - run: rm -f packages/cli/README.md && cp README.md packages/cli - run: echo "PR_VERSION=0.0.0-pr.${{github.event.pull_request.number}}.$(git rev-parse --short HEAD)" >> $GITHUB_ENV - - run: npm ci - - run: npm version ${{ env.PR_VERSION }} --workspace packages/cli + - run: pnpm install --frozen-lockfile + - run: pnpm --filter checkly version ${{ env.PR_VERSION }} --no-git-tag-version # Publish to npm with the additional tag if CANARY_TAG is set - run: | - npm publish --workspace packages/cli --tag experimental + pnpm --filter checkly publish --tag experimental --no-git-checks if [[ -n "$CANARY_TAG" ]]; then echo "Publishing with additional tag: $CANARY_TAG" npm dist-tag add checkly@$PR_VERSION $CANARY_TAG diff --git a/.github/workflows/release-create-package.yml b/.github/workflows/release-create-package.yml index 06ccc9b62..93fb75db5 100644 --- a/.github/workflows/release-create-package.yml +++ b/.github/workflows/release-create-package.yml @@ -7,13 +7,17 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v5 + with: + version: 10 # Setup .npmrc file to publish to npm - uses: actions/setup-node@v4 with: node-version: '20.x' registry-url: 'https://registry.npmjs.org' - - run: npm ci - - run: npm publish --workspace packages/create-cli + cache: "pnpm" + - run: pnpm install --frozen-lockfile + - run: pnpm --filter create-checkly publish --no-git-checks env: NODE_AUTH_TOKEN: ${{ secrets.NPM_TOKEN }} # Slack failure alert diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index aabb20041..6dbc3e5b6 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -34,32 +34,28 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v5 + with: + version: 10 # Setup .npmrc file to publish to npm - uses: actions/setup-node@v4 with: node-version: '20.x' registry-url: 'https://registry.npmjs.org' - - name: Upgrade npm for trusted publishing support - run: | - npm install -g npm@latest - echo "npm version: $(npm --version)" + cache: "pnpm" # Ensure that the README is published with the package - run: rm -f packages/cli/README.md && cp README.md packages/cli - - run: npm ci + - run: pnpm install --frozen-lockfile - name: Add SHORT_SHA env property with commit short sha run: echo "SHORT_SHA=$(git rev-parse --short HEAD)" >> $GITHUB_ENV - name: Set version and publish prerelease for 'cli' package run: | - npm --no-git-tag-version version ${{ github.event.release.tag_name }}-prerelease-${{ env.SHORT_SHA }} --workspace packages/cli - npm publish --provenance --workspace packages/cli --tag prerelease + pnpm --filter checkly version ${{ github.event.release.tag_name }}-prerelease-${{ env.SHORT_SHA }} --no-git-tag-version + pnpm --filter checkly publish --provenance --tag prerelease --no-git-checks - name: Set version and publish prerelease for 'create-cli' package run: | - npm --no-git-tag-version version ${{ github.event.release.tag_name }}-prerelease-${{ env.SHORT_SHA }} --workspace packages/create-cli - npm publish --provenance --workspace packages/create-cli --tag prerelease - - name: Output prerelease packages versions - run: | - npm pkg get version --workspace packages/cli - npm pkg get version --workspace packages/create-cli + pnpm --filter create-checkly version ${{ github.event.release.tag_name }}-prerelease-${{ env.SHORT_SHA }} --no-git-tag-version + pnpm --filter create-checkly publish --provenance --tag prerelease --no-git-checks - name: Save LLM rules as an artifact uses: actions/upload-artifact@v4 with: @@ -103,29 +99,25 @@ jobs: - uses: actions/checkout@v3 with: ref: main + - uses: pnpm/action-setup@v5 + with: + version: 10 - uses: actions/setup-node@v4 with: node-version: '20.x' registry-url: 'https://registry.npmjs.org' - - name: Upgrade npm for trusted publishing support - run: | - npm install -g npm@latest - echo "npm version: $(npm --version)" + cache: "pnpm" # Ensure that the README is published with the package - run: rm -f packages/cli/README.md && cp README.md packages/cli - - run: npm ci + - run: pnpm install --frozen-lockfile - name: Set version and publish 'cli' package run: | - npm --no-git-tag-version version ${{ github.event.release.tag_name }} --workspace packages/cli - npm publish --provenance --workspace packages/cli + pnpm --filter checkly version ${{ github.event.release.tag_name }} --no-git-tag-version + pnpm --filter checkly publish --provenance --no-git-checks - name: Set version and publish 'create-cli' package run: | - npm --no-git-tag-version version ${{ github.event.release.tag_name }} --workspace packages/create-cli - npm publish --provenance --workspace packages/create-cli - - name: Output final packages versions - run: | - npm pkg get version --workspace packages/cli - npm pkg get version --workspace packages/create-cli + pnpm --filter create-checkly version ${{ github.event.release.tag_name }} --no-git-tag-version + pnpm --filter create-checkly publish --provenance --no-git-checks - name: Save LLM rules as an artifact uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 54d69aca1..840a8ad94 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -6,21 +6,26 @@ on: - main - next/* +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + jobs: lint: runs-on: ubuntu-latest steps: - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v5 + with: + version: 10 - uses: actions/setup-node@v4 with: node-version: '20.x' - cache: "npm" - cache-dependency-path: package-lock.json - - run: npm config set fund false && npm set audit false - - run: npm ci + cache: "pnpm" + - run: pnpm install --frozen-lockfile # Test that the packaging works as well - - run: npm pack --workspaces - - run: npm run lint + - run: pnpm -r pack + - run: pnpm run lint test: strategy: fail-fast: false @@ -30,18 +35,16 @@ jobs: runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - - uses: actions/setup-node@v4 - with: - node-version: '20.x' - cache: "npm" - cache-dependency-path: package-lock.json - uses: pnpm/action-setup@v5 with: version: 10 - - run: npm config set fund false && npm set audit false - - run: npm ci - - run: npm run prepack - - run: npm run test + - uses: actions/setup-node@v4 + with: + node-version: '20.x' + cache: "pnpm" + - run: pnpm install --frozen-lockfile + - run: pnpm run prepack + - run: pnpm run test - name: Save LLM rules as an artifact uses: actions/upload-artifact@v4 with: @@ -49,30 +52,46 @@ jobs: if-no-files-found: error path: packages/cli/dist/ai-context/* retention-days: 1 - test-e2e: + test-e2e-checkly: strategy: fail-fast: false matrix: os: [ubuntu-latest, windows-latest-x64] - name: test-e2e - ${{ matrix.os }} + name: e2e - checkly - ${{ matrix.os }} runs-on: ${{ matrix.os }} steps: - uses: actions/checkout@v3 - - uses: actions/setup-node@v4 - with: - node-version: '20.x' - cache: "npm" - cache-dependency-path: package-lock.json - uses: pnpm/action-setup@v5 with: version: 10 - - run: npm config set fund false && npm set audit false - - run: npm ci - - run: npm run prepack - - run: npm run test:e2e + - uses: actions/setup-node@v4 + with: + node-version: '20.x' + cache: "pnpm" + - run: pnpm install --frozen-lockfile + - run: pnpm run prepack + - run: pnpm --filter checkly run test:e2e env: CHECKLY_ACCOUNT_NAME: ${{ secrets.E2E_CHECKLY_ACCOUNT_NAME }} CHECKLY_ACCOUNT_ID: ${{ secrets.E2E_CHECKLY_ACCOUNT_ID }} CHECKLY_API_KEY: ${{ secrets.E2E_CHECKLY_API_KEY }} CHECKLY_EMPTY_ACCOUNT_ID: ${{ secrets.E2E_EMPTY_CHECKLY_ACCOUNT_ID }} CHECKLY_EMPTY_API_KEY: ${{ secrets.E2E_EMPTY_CHECKLY_API_KEY }} + test-e2e-create-checkly: + strategy: + fail-fast: false + matrix: + os: [ubuntu-latest, windows-latest-x64] + name: e2e - create-checkly - ${{ matrix.os }} + runs-on: ${{ matrix.os }} + steps: + - uses: actions/checkout@v3 + - uses: pnpm/action-setup@v5 + with: + version: 10 + - uses: actions/setup-node@v4 + with: + node-version: '20.x' + cache: "pnpm" + - run: pnpm install --frozen-lockfile + - run: pnpm --filter create-checkly run test:e2e diff --git a/package.json b/package.json index 0491687c1..278a39e77 100644 --- a/package.json +++ b/package.json @@ -5,16 +5,12 @@ "scripts": { "lint": "eslint .", "lint:fix": "eslint . --fix", - "prepack": "npm run prepack --workspaces", - "prepare": "npx simple-git-hooks && npm run prepare --workspaces && npm run prepare:ai-context", - "clean:ai-context": "rimraf skills", - "prepare:ai-context": "npm run clean:ai-context && cp -r packages/cli/dist/ai-context/public-skills/. skills", - "test": "npm run test --workspaces", - "test:e2e": "npm run test:e2e --workspaces" + "prepack": "pnpm -r run prepack", + "prepare": "pnpm exec simple-git-hooks", + "sync:skills": "rimraf skills && cp -r packages/cli/dist/ai-context/public-skills/. skills", + "test": "pnpm -r run test", + "test:e2e": "pnpm -r run test:e2e" }, - "workspaces": [ - "packages/*" - ], "devDependencies": { "@commitlint/cli": "^20.5.3", "@commitlint/config-conventional": "^20.5.3", @@ -28,10 +24,16 @@ "typescript-eslint": "^8.59.2" }, "simple-git-hooks": { - "commit-msg": "npx commitlint --edit", - "pre-commit": "npx lint-staged" + "commit-msg": "pnpm exec commitlint --edit", + "pre-commit": "pnpm exec lint-staged" }, "lint-staged": { - "*.{ts,js,mjs}": "npm run lint" + "*.{ts,js,mjs}": "pnpm run lint" + }, + "pnpm": { + "onlyBuiltDependencies": [ + "esbuild", + "simple-git-hooks" + ] } -} \ No newline at end of file +} diff --git a/packages/cli/e2e/__tests__/account-plan.spec.ts b/packages/cli/e2e/__tests__/account-plan.spec.ts index 7bc4abd9e..8f41d0d0f 100644 --- a/packages/cli/e2e/__tests__/account-plan.spec.ts +++ b/packages/cli/e2e/__tests__/account-plan.spec.ts @@ -1,29 +1,30 @@ -import config from 'config' -import { describe, it, expect } from 'vitest' +import { ExecaError } from 'execa' +import { describe, it, expect, beforeAll, afterAll } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { runCheckly } from '../run-checkly' describe('checkly account plan', () => { + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({}) + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() + }) + it('should show plan summary with default output', async () => { - const result = await runChecklyCli({ - args: ['account', 'plan'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('Plan:') - expect(result.stdout).toContain('Metered entitlements') - expect(result.stdout).toContain('additional features enabled') + const { stdout } = await runCheckly(fixt, ['account', 'plan']) + expect(stdout).toContain('Plan:') + expect(stdout).toContain('Metered entitlements') + expect(stdout).toContain('additional features enabled') }) it('should output valid JSON with --output json', async () => { - const result = await runChecklyCli({ - args: ['account', 'plan', '--output', 'json'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - const parsed = JSON.parse(result.stdout) + const { stdout } = await runCheckly(fixt, ['account', 'plan', '--output', 'json']) + const parsed = JSON.parse(stdout) expect(parsed).toHaveProperty('plan') expect(parsed).toHaveProperty('planDisplayName') expect(parsed).toHaveProperty('addons') @@ -36,119 +37,82 @@ describe('checkly account plan', () => { }) it('should output markdown with --output md', async () => { - const result = await runChecklyCli({ - args: ['account', 'plan', '--output', 'md'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('# Plan:') - expect(result.stdout).toContain('| Name | Limit |') + const { stdout } = await runCheckly(fixt, ['account', 'plan', '--output', 'md']) + expect(stdout).toContain('# Plan:') + expect(stdout).toContain('| Name | Limit |') }) it('should show detail view for a specific entitlement key', async () => { - const result = await runChecklyCli({ - args: ['account', 'plan', 'BROWSER_CHECKS'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('BROWSER_CHECKS') - expect(result.stdout).toContain('Browser checks') + const { stdout } = await runCheckly(fixt, ['account', 'plan', 'BROWSER_CHECKS']) + expect(stdout).toContain('BROWSER_CHECKS') + expect(stdout).toContain('Browser checks') }) it('should output single entitlement as JSON', async () => { - const result = await runChecklyCli({ - args: ['account', 'plan', 'BROWSER_CHECKS', '--output', 'json'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - const parsed = JSON.parse(result.stdout) + const { stdout } = await runCheckly(fixt, ['account', 'plan', 'BROWSER_CHECKS', '--output', 'json']) + const parsed = JSON.parse(stdout) expect(parsed.key).toBe('BROWSER_CHECKS') expect(parsed.type).toBe('metered') }) it('should filter by --type metered', async () => { - const result = await runChecklyCli({ - args: ['account', 'plan', '--type', 'metered'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('LIMIT') - expect(result.stdout).toContain('entitlement') + const { stdout } = await runCheckly(fixt, ['account', 'plan', '--type', 'metered']) + expect(stdout).toContain('LIMIT') + expect(stdout).toContain('entitlement') }) it('should filter by --type flag', async () => { - const result = await runChecklyCli({ - args: ['account', 'plan', '--type', 'flag'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('ENABLED') - expect(result.stdout).toContain('entitlement') + const { stdout } = await runCheckly(fixt, ['account', 'plan', '--type', 'flag']) + expect(stdout).toContain('ENABLED') + expect(stdout).toContain('entitlement') }) it('should filter by --search', async () => { - const result = await runChecklyCli({ - args: ['account', 'plan', '--search', 'browser'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('Browser') - expect(result.stdout).toContain('entitlement') + const { stdout } = await runCheckly(fixt, ['account', 'plan', '--search', 'browser']) + expect(stdout).toContain('Browser') + expect(stdout).toContain('entitlement') }) it('should fail for unknown entitlement key', async () => { - const result = await runChecklyCli({ - args: ['account', 'plan', 'NONEXISTENT_KEY'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(2) - expect(result.stderr).toContain('not found') + try { + await runCheckly(fixt, ['account', 'plan', 'NONEXISTENT_KEY']) + expect.unreachable('Expected command to fail') + } catch (err) { + if (err instanceof ExecaError) { + expect(err.exitCode).toBe(2) + expect(err.stderr).toContain('not found') + } else { + throw err + } + } }) it('should fail when combining key with --type', async () => { - const result = await runChecklyCli({ - args: ['account', 'plan', 'BROWSER_CHECKS', '--type', 'metered'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).not.toBe(0) + try { + await runCheckly(fixt, ['account', 'plan', 'BROWSER_CHECKS', '--type', 'metered']) + expect.unreachable('Expected command to fail') + } catch (err) { + if (err instanceof ExecaError) { + expect(err.exitCode).not.toBe(0) + } else { + throw err + } + } }) it('should show REQUIRED UPGRADE column in summary view', async () => { - const result = await runChecklyCli({ - args: ['account', 'plan'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('REQUIRED UPGRADE') + const { stdout } = await runCheckly(fixt, ['account', 'plan']) + expect(stdout).toContain('REQUIRED UPGRADE') }) it('should show billing checkout link', async () => { - const result = await runChecklyCli({ - args: ['account', 'plan'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('billing/checkout') + const { stdout } = await runCheckly(fixt, ['account', 'plan']) + expect(stdout).toContain('billing/checkout') }) it('should include checkoutUrl and contactSalesUrl in JSON output', async () => { - const result = await runChecklyCli({ - args: ['account', 'plan', '--output', 'json'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - const parsed = JSON.parse(result.stdout) + const { stdout } = await runCheckly(fixt, ['account', 'plan', '--output', 'json']) + const parsed = JSON.parse(stdout) expect(parsed).toHaveProperty('checkoutUrl') expect(parsed.checkoutUrl).toContain('billing/checkout') expect(parsed).toHaveProperty('contactSalesUrl') @@ -156,31 +120,25 @@ describe('checkly account plan', () => { }) it('should filter with --disabled flag', async () => { - const result = await runChecklyCli({ - args: ['account', 'plan', '--disabled'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('entitlement') + const { stdout } = await runCheckly(fixt, ['account', 'plan', '--disabled']) + expect(stdout).toContain('entitlement') }) it('should combine --disabled with --type', async () => { - const result = await runChecklyCli({ - args: ['account', 'plan', '--disabled', '--type', 'flag'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('REQUIRED UPGRADE') + const { stdout } = await runCheckly(fixt, ['account', 'plan', '--disabled', '--type', 'flag']) + expect(stdout).toContain('REQUIRED UPGRADE') }) it('should fail when combining key with --disabled', async () => { - const result = await runChecklyCli({ - args: ['account', 'plan', 'BROWSER_CHECKS', '--disabled'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).not.toBe(0) + try { + await runCheckly(fixt, ['account', 'plan', 'BROWSER_CHECKS', '--disabled']) + expect.unreachable('Expected command to fail') + } catch (err) { + if (err instanceof ExecaError) { + expect(err.exitCode).not.toBe(0) + } else { + throw err + } + } }) }) diff --git a/packages/cli/e2e/__tests__/check-parse-error.spec.ts b/packages/cli/e2e/__tests__/check-parse-error.spec.ts index 835fb21ef..413eed0fd 100644 --- a/packages/cli/e2e/__tests__/check-parse-error.spec.ts +++ b/packages/cli/e2e/__tests__/check-parse-error.spec.ts @@ -1,20 +1,48 @@ import path from 'node:path' import config from 'config' -import { describe, it, expect } from 'vitest' +import { ExecaError } from 'execa' +import { describe, it, expect, beforeAll, afterAll } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' describe('check parse error', () => { - it('"checkly test" should return a clear error when there are check dependency errors', async () => { - const { stderr } = await runChecklyCli({ - args: ['test'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, 'fixtures/check-parse-error'), + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({ + source: path.join(__dirname, 'fixtures', 'check-parse-error'), }) - const toAbsolutePath = (filename: string) => path.join(__dirname, 'fixtures', 'check-parse-error', filename) + }, 180_000) - expect(stderr.replace(/(\r\n|\n|\r|\s+)/gm, '')).toContain(toAbsolutePath('entrypoint.js')) + afterAll(async () => { + await fixt?.destroy() + }) + + it('"checkly test" should return a clear error when there are check dependency errors', async () => { + try { + await fixt.run('pnpm', [ + 'checkly', + 'test', + ], { + env: { + CHECKLY_CLI_MODE: 'interactive', + CHECKLY_API_KEY: config.get('apiKey') as string, + CHECKLY_ACCOUNT_ID: config.get('accountId') as string, + CHECKLY_ENV: process.env.CHECKLY_ENV, + CHECKLY_CLI_VERSION: '4.8.0', + }, + timeout: 30_000, + }) + expect.unreachable('Expected checkly test to fail with a parse error') + } catch (err) { + if (err instanceof ExecaError) { + expect((err.stderr as unknown as string).replace(/(\r\n|\n|\r|\s+)/gm, '')).toContain( + path.join(fixt.root, 'entrypoint.js'), + ) + } else { + throw err + } + } }) }) diff --git a/packages/cli/e2e/__tests__/checks-empty-account.spec.ts b/packages/cli/e2e/__tests__/checks-empty-account.spec.ts index 39473267d..384d9cc38 100644 --- a/packages/cli/e2e/__tests__/checks-empty-account.spec.ts +++ b/packages/cli/e2e/__tests__/checks-empty-account.spec.ts @@ -1,84 +1,70 @@ import config from 'config' -import { describe, it, expect } from 'vitest' +import { ExecaError } from 'execa' +import { describe, it, expect, beforeAll, afterAll } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { runCheckly } from '../run-checkly' const apiKey: string | undefined = config.has('emptyApiKey') ? config.get('emptyApiKey') : undefined const accountId: string | undefined = config.has('emptyAccountId') ? config.get('emptyAccountId') : undefined describe.skipIf(!apiKey || !accountId)('checks commands on empty account', () => { + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({}) + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() + }) + it('should show "No checks found." for checks list', async () => { - const result = await runChecklyCli({ - args: ['checks', 'list'], - apiKey, - accountId, - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('No checks found.') + const { stdout } = await runCheckly(fixt, ['checks', 'list'], { apiKey, accountId }) + expect(stdout).toContain('No checks found.') }) it('should return empty JSON array for checks list --output json', async () => { - const result = await runChecklyCli({ - args: ['checks', 'list', '--output', 'json'], - apiKey, - accountId, - }) - expect(result.status).toBe(0) - const parsed = JSON.parse(result.stdout) + const { stdout } = await runCheckly(fixt, ['checks', 'list', '--output', 'json'], { apiKey, accountId }) + const parsed = JSON.parse(stdout) expect(parsed.data).toEqual([]) expect(parsed.pagination.total).toBe(0) }) it('should show "No checks found." for checks list --output md', async () => { - const result = await runChecklyCli({ - args: ['checks', 'list', '--output', 'md'], - apiKey, - accountId, - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('No checks found.') + const { stdout } = await runCheckly(fixt, ['checks', 'list', '--output', 'md'], { apiKey, accountId }) + expect(stdout).toContain('No checks found.') }) it('should handle --search filter gracefully on empty account', async () => { - const result = await runChecklyCli({ - args: ['checks', 'list', '--search', 'anything'], - apiKey, - accountId, - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('No checks matching') + const { stdout } = await runCheckly(fixt, ['checks', 'list', '--search', 'anything'], { apiKey, accountId }) + expect(stdout).toContain('No checks matching') }) it('should show "No checks found." for checks stats', async () => { - const result = await runChecklyCli({ - args: ['checks', 'stats'], - apiKey, - accountId, - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('No checks found.') + const { stdout } = await runCheckly(fixt, ['checks', 'stats'], { apiKey, accountId }) + expect(stdout).toContain('No checks found.') }) it('should return empty JSON for checks stats --output json', async () => { - const result = await runChecklyCli({ - args: ['checks', 'stats', '--output', 'json'], - apiKey, - accountId, - }) - expect(result.status).toBe(0) - const parsed = JSON.parse(result.stdout) + const { stdout } = await runCheckly(fixt, ['checks', 'stats', '--output', 'json'], { apiKey, accountId }) + const parsed = JSON.parse(stdout) expect(parsed.data).toEqual([]) expect(parsed.pagination.total).toBe(0) expect(parsed.range).toBe('last24Hours') }) it('should fail gracefully for checks get on empty account', async () => { - const result = await runChecklyCli({ - args: ['checks', 'get', '00000000-0000-0000-0000-000000000000'], - apiKey, - accountId, - }) - expect(result.status).toBe(1) - expect(result.stdout).toContain('Failed to get check details') + try { + await runCheckly(fixt, ['checks', 'get', '00000000-0000-0000-0000-000000000000'], { apiKey, accountId }) + expect.unreachable('Expected command to fail for checks get on empty account') + } catch (err) { + if (err instanceof ExecaError) { + expect(err.exitCode).toBe(1) + expect(err.stdout).toContain('Failed to get check details') + } else { + throw err + } + } }) }) diff --git a/packages/cli/e2e/__tests__/checks-get.spec.ts b/packages/cli/e2e/__tests__/checks-get.spec.ts index ee6aa9f83..a0ff84d54 100644 --- a/packages/cli/e2e/__tests__/checks-get.spec.ts +++ b/packages/cli/e2e/__tests__/checks-get.spec.ts @@ -1,60 +1,52 @@ -import config from 'config' -import { describe, it, expect, beforeAll } from 'vitest' +import { ExecaError } from 'execa' +import { describe, it, expect, beforeAll, afterAll } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { runCheckly } from '../run-checkly' describe('checkly checks get', () => { + let fixt: FixtureSandbox let checkId: string beforeAll(async () => { - const result = await runChecklyCli({ - args: ['checks', 'list', '--output', 'json', '--limit', '1'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - const parsed = JSON.parse(result.stdout) + fixt = await FixtureSandbox.create({}) + + const { stdout } = await runCheckly(fixt, ['checks', 'list', '--output', 'json', '--limit', '1']) + const parsed = JSON.parse(stdout) expect(parsed.data.length).toBeGreaterThan(0) checkId = parsed.data[0].id + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() }) it('should get check detail with default output', async () => { - const result = await runChecklyCli({ - args: ['checks', 'get', checkId], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - expect(result.stdout).toBeTruthy() + const { stdout } = await runCheckly(fixt, ['checks', 'get', checkId]) + expect(stdout).toBeTruthy() }) it('should output valid JSON with --output json', async () => { - const result = await runChecklyCli({ - args: ['checks', 'get', checkId, '--output', 'json'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - const parsed = JSON.parse(result.stdout) + const { stdout } = await runCheckly(fixt, ['checks', 'get', checkId, '--output', 'json']) + const parsed = JSON.parse(stdout) expect(parsed.check.id).toBe(checkId) }) it('should output markdown with --output md', async () => { - const result = await runChecklyCli({ - args: ['checks', 'get', checkId, '--output', 'md'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('| Field | Value |') + const { stdout } = await runCheckly(fixt, ['checks', 'get', checkId, '--output', 'md']) + expect(stdout).toContain('| Field | Value |') }) it('should fail for nonexistent check ID', async () => { - const result = await runChecklyCli({ - args: ['checks', 'get', 'nonexistent-check-id-00000'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).not.toBe(0) + try { + await runCheckly(fixt, ['checks', 'get', 'nonexistent-check-id-00000']) + expect.unreachable('Expected command to fail for nonexistent check ID') + } catch (err) { + if (err instanceof ExecaError) { + expect(err.exitCode).not.toBe(0) + } else { + throw err + } + } }) }) diff --git a/packages/cli/e2e/__tests__/checks-list.spec.ts b/packages/cli/e2e/__tests__/checks-list.spec.ts index 2f991524c..2023e9049 100644 --- a/packages/cli/e2e/__tests__/checks-list.spec.ts +++ b/packages/cli/e2e/__tests__/checks-list.spec.ts @@ -1,58 +1,43 @@ -import config from 'config' -import { describe, it, expect } from 'vitest' +import { describe, it, expect, beforeAll, afterAll } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { runCheckly } from '../run-checkly' describe('checkly checks list', () => { + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({}) + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() + }) + it('should list checks with default output', async () => { - const result = await runChecklyCli({ - args: ['checks', 'list'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - expect(result.stdout).toBeTruthy() + const { stdout } = await runCheckly(fixt, ['checks', 'list']) + expect(stdout).toBeTruthy() }) it('should output valid JSON with --output json', async () => { - const result = await runChecklyCli({ - args: ['checks', 'list', '--output', 'json'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - const parsed = JSON.parse(result.stdout) + const { stdout } = await runCheckly(fixt, ['checks', 'list', '--output', 'json']) + const parsed = JSON.parse(stdout) expect(parsed).toHaveProperty('data') expect(Array.isArray(parsed.data)).toBe(true) }) it('should output markdown with --output md', async () => { - const result = await runChecklyCli({ - args: ['checks', 'list', '--output', 'md'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('| Name | Description | Type | Status |') + const { stdout } = await runCheckly(fixt, ['checks', 'list', '--output', 'md']) + expect(stdout).toContain('| Name | Description | Type | Status |') }) it('should respect --limit flag', async () => { - const allResult = await runChecklyCli({ - args: ['checks', 'list', '--output', 'json'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(allResult.status).toBe(0) - const allParsed = JSON.parse(allResult.stdout) + const { stdout: allStdout } = await runCheckly(fixt, ['checks', 'list', '--output', 'json']) + const allParsed = JSON.parse(allStdout) expect(allParsed.data.length).toBeGreaterThan(1) - const limitedResult = await runChecklyCli({ - args: ['checks', 'list', '--output', 'json', '--limit', '1'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(limitedResult.status).toBe(0) - const limitedParsed = JSON.parse(limitedResult.stdout) + const { stdout: limitedStdout } = await runCheckly(fixt, ['checks', 'list', '--output', 'json', '--limit', '1']) + const limitedParsed = JSON.parse(limitedStdout) expect(limitedParsed.data).toHaveLength(1) }) }) diff --git a/packages/cli/e2e/__tests__/checks-stats.spec.ts b/packages/cli/e2e/__tests__/checks-stats.spec.ts index 7d29387db..352fc997f 100644 --- a/packages/cli/e2e/__tests__/checks-stats.spec.ts +++ b/packages/cli/e2e/__tests__/checks-stats.spec.ts @@ -1,28 +1,28 @@ -import config from 'config' -import { describe, it, expect } from 'vitest' +import { describe, it, expect, beforeAll, afterAll } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { runCheckly } from '../run-checkly' describe('checkly checks stats', () => { + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({}) + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() + }) + it('should show stats with default output', async () => { - const result = await runChecklyCli({ - args: ['checks', 'stats'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - expect(result.stdout).toBeTruthy() - expect(result.stdout).toContain('STATS') + const { stdout } = await runCheckly(fixt, ['checks', 'stats']) + expect(stdout).toBeTruthy() + expect(stdout).toContain('STATS') }) it('should output valid JSON with --output json', async () => { - const result = await runChecklyCli({ - args: ['checks', 'stats', '--output', 'json'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - const parsed = JSON.parse(result.stdout) + const { stdout } = await runCheckly(fixt, ['checks', 'stats', '--output', 'json']) + const parsed = JSON.parse(stdout) expect(parsed).toHaveProperty('data') expect(Array.isArray(parsed.data)).toBe(true) expect(parsed).toHaveProperty('range') @@ -33,56 +33,31 @@ describe('checkly checks stats', () => { }) it('should output markdown with --output md', async () => { - const result = await runChecklyCli({ - args: ['checks', 'stats', '--output', 'md'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('| Name | Type | Status |') + const { stdout } = await runCheckly(fixt, ['checks', 'stats', '--output', 'md']) + expect(stdout).toContain('| Name | Type | Status |') }) it('should respect --limit flag', async () => { - const result = await runChecklyCli({ - args: ['checks', 'stats', '--output', 'json', '--limit', '1'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - const parsed = JSON.parse(result.stdout) + const { stdout } = await runCheckly(fixt, ['checks', 'stats', '--output', 'json', '--limit', '1']) + const parsed = JSON.parse(stdout) expect(parsed.data).toHaveLength(1) expect(parsed.pagination.limit).toBe(1) }) it('should respect --range flag', async () => { - const result = await runChecklyCli({ - args: ['checks', 'stats', '--output', 'json', '--range', 'last7Days'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - const parsed = JSON.parse(result.stdout) + const { stdout } = await runCheckly(fixt, ['checks', 'stats', '--output', 'json', '--range', 'last7Days']) + const parsed = JSON.parse(stdout) expect(parsed.range).toBe('last7Days') }) it('should return no results for impossible search filter', async () => { - const result = await runChecklyCli({ - args: ['checks', 'stats', '--search', 'zzz-nonexistent-check-name-zzz'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('No checks found.') + const { stdout } = await runCheckly(fixt, ['checks', 'stats', '--search', 'zzz-nonexistent-check-name-zzz']) + expect(stdout).toContain('No checks found.') }) it('should return empty JSON for impossible search filter with --output json', async () => { - const result = await runChecklyCli({ - args: ['checks', 'stats', '--search', 'zzz-nonexistent-check-name-zzz', '--output', 'json'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - expect(result.status).toBe(0) - const parsed = JSON.parse(result.stdout) + const { stdout } = await runCheckly(fixt, ['checks', 'stats', '--search', 'zzz-nonexistent-check-name-zzz', '--output', 'json']) + const parsed = JSON.parse(stdout) expect(parsed.data).toEqual([]) expect(parsed.pagination.total).toBe(0) }) diff --git a/packages/cli/e2e/__tests__/deploy.spec.ts b/packages/cli/e2e/__tests__/deploy.spec.ts index 2fada99d7..20bb74503 100644 --- a/packages/cli/e2e/__tests__/deploy.spec.ts +++ b/packages/cli/e2e/__tests__/deploy.spec.ts @@ -9,6 +9,7 @@ import { describe, it, expect, beforeAll, beforeEach, afterAll, afterEach } from import Projects from '../../src/rest/projects' import { FixtureSandbox, RunOptions } from '../../src/testing/fixture-sandbox' +import { checklyEnv } from '../run-checkly' import { ExecaError } from 'execa' async function cleanupProjects (projectLogicalId?: string) { @@ -76,13 +77,17 @@ async function getAllResources (type: 'checks' | 'check-groups' | 'private-locat } async function runDeploy (fixt: FixtureSandbox, args: string[], options?: RunOptions) { - const result = await fixt.run('npx', [ + const result = await fixt.run('pnpm', [ 'checkly', 'deploy', ...args, ], { timeout: 120_000, ...options, + env: { + ...checklyEnv(), + ...options?.env, + }, }) if (result.exitCode !== 0) { @@ -117,6 +122,7 @@ describe('deploy', { timeout: 45_000 }, () => { beforeAll(async () => { fixt = await FixtureSandbox.create({ source: path.join(__dirname, 'fixtures', 'deploy-project'), + template: 'playwright', }) }, 180_000) @@ -241,6 +247,7 @@ describe('deploy', { timeout: 45_000 }, () => { beforeAll(async () => { fixt = await FixtureSandbox.create({ source: path.join(__dirname, 'fixtures', 'deploy-esm-project'), + template: 'playwright', }) }, 180_000) @@ -330,6 +337,7 @@ describe('deploy', { timeout: 45_000 }, () => { beforeAll(async () => { fixt = await FixtureSandbox.create({ source: path.join(__dirname, 'fixtures', 'test-only-project'), + template: 'playwright', }) }, 180_000) @@ -419,6 +427,7 @@ Update and Unchanged: beforeAll(async () => { fixt = await FixtureSandbox.create({ source: path.join(__dirname, 'fixtures', 'empty-project'), + template: 'playwright', }) }, 180_000) @@ -452,6 +461,7 @@ Update and Unchanged: beforeAll(async () => { fixt = await FixtureSandbox.create({ source: path.join(__dirname, 'fixtures', 'snapshot-project'), + template: 'playwright', }) }, 180_000) diff --git a/packages/cli/e2e/__tests__/destroy.spec.ts b/packages/cli/e2e/__tests__/destroy.spec.ts index 1ed02fd8e..9a3418da0 100644 --- a/packages/cli/e2e/__tests__/destroy.spec.ts +++ b/packages/cli/e2e/__tests__/destroy.spec.ts @@ -1,87 +1,90 @@ import path from 'node:path' -import config from 'config' +import { ExecaError } from 'execa' import { v4 as uuidv4 } from 'uuid' -import { describe, it, expect, beforeEach } from 'vitest' +import { describe, it, expect, beforeEach, beforeAll, afterAll } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { runCheckly } from '../run-checkly' describe('destroy', () => { + let fixt: FixtureSandbox let projectLogicalId: string + + beforeAll(async () => { + fixt = await FixtureSandbox.create({ + source: path.join(__dirname, 'fixtures', 'deploy-project'), + }) + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() + }) + // Cleanup projects that may have not been deleted in previous runs beforeEach(() => { projectLogicalId = `e2e-test-deploy-project-${uuidv4()}` }) it('Should be destroyed successfully', async () => { - const { status, stdout } = await runChecklyCli({ - args: ['destroy', '--force'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, 'fixtures', 'deploy-project'), + const { stdout } = await runCheckly(fixt, ['destroy', '--force'], { env: { PROJECT_LOGICAL_ID: projectLogicalId }, }) - expect(status).toBe(0) expect(stdout).toContain('All resources associated with project "Deploy Project" have been successfully deleted.') }) it('Should ask to confirm before destroy', async () => { - const result = await runChecklyCli({ - args: ['destroy'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, 'fixtures', 'deploy-project'), - env: { PROJECT_LOGICAL_ID: projectLogicalId }, - timeout: 10000, - }) - expect(result.stdout).toContain('Type the project name "Deploy Project" to confirm:') + try { + await runCheckly(fixt, ['destroy'], { + env: { PROJECT_LOGICAL_ID: projectLogicalId }, + timeout: 10000, + }) + expect.unreachable('Expected command to fail') + } catch (err) { + if (err instanceof ExecaError) { + expect(err.stdout).toContain('Type the project name "Deploy Project" to confirm:') + } else { + throw err + } + } }) it('Shouldn fail confirming to destroy', async () => { const wrongProjectName = 'Wrong Project Name' - const result = await runChecklyCli({ - args: ['destroy'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, 'fixtures', 'deploy-project'), + const { stdout } = await runCheckly(fixt, ['destroy'], { env: { PROJECT_LOGICAL_ID: projectLogicalId }, promptsInjection: [wrongProjectName], }) - expect(result.stdout).toContain(`The entered project name "${wrongProjectName}" doesn't match the expected project name`) + expect(stdout).toContain(`The entered project name "${wrongProjectName}" doesn't match the expected project name`) }) it('Should destroy after success confirmation', async () => { - const result = await runChecklyCli({ - args: ['destroy'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, 'fixtures', 'deploy-project'), + const { stdout } = await runCheckly(fixt, ['destroy'], { env: { PROJECT_LOGICAL_ID: projectLogicalId }, promptsInjection: ['Deploy Project'], }) - expect(result.stdout).toContain('All resources associated with project "Deploy Project" have been successfully deleted.') + expect(stdout).toContain('All resources associated with project "Deploy Project" have been successfully deleted.') }) it('Should be destroyed using different config file', async () => { - const result = await runChecklyCli({ - args: ['destroy', '--force', '--config', 'checkly.staging.config.ts'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, 'fixtures', 'deploy-project'), + const { stdout } = await runCheckly(fixt, ['destroy', '--force', '--config', 'checkly.staging.config.ts'], { env: { PROJECT_LOGICAL_ID: projectLogicalId }, }) - expect(result.status).toBe(0) - expect(result.stdout).toContain('All resources associated with project "Deploy Staging Project" have been successfully deleted.') + expect(stdout).toContain('All resources associated with project "Deploy Staging Project" have been successfully deleted.') }) it('Should fail with config file not found', async () => { - const result = await runChecklyCli({ - args: ['destroy', '--force', '--config', 'checkly.notfound.config.ts'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, 'fixtures', 'deploy-project'), - env: { PROJECT_LOGICAL_ID: projectLogicalId }, - }) - expect(result.status).toBe(1) + try { + await runCheckly(fixt, ['destroy', '--force', '--config', 'checkly.notfound.config.ts'], { + env: { PROJECT_LOGICAL_ID: projectLogicalId }, + }) + expect.unreachable('Expected command to fail') + } catch (err) { + if (err instanceof ExecaError) { + expect(err.exitCode).toBe(1) + } else { + throw err + } + } }) }) diff --git a/packages/cli/e2e/__tests__/env/env.add.spec.ts b/packages/cli/e2e/__tests__/env/env.add.spec.ts index 5208e5982..c7b262ec7 100644 --- a/packages/cli/e2e/__tests__/env/env.add.spec.ts +++ b/packages/cli/e2e/__tests__/env/env.add.spec.ts @@ -1,71 +1,64 @@ import path from 'node:path' -import config from 'config' import { nanoid } from 'nanoid' -import { describe, afterEach, it, expect } from 'vitest' +import { ExecaError } from 'execa' +import { describe, beforeAll, afterAll, afterEach, it, expect } from 'vitest' -import { runChecklyCli } from '../../run-checkly' +import { FixtureSandbox } from '../../../src/testing/fixture-sandbox' +import { runCheckly } from '../../run-checkly' const executionId = nanoid(5) -function cleanupEnvVars () { - return Promise.all([ - runChecklyCli({ - args: ['env', 'rm', `testenvvars-${executionId}`, '--force'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, '../fixtures/check-parse-error'), - }), - runChecklyCli({ - args: ['env', 'rm', `testenvvarslocked-${executionId}`, '--force'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, '../fixtures/check-parse-error'), - }), +let fixt: FixtureSandbox + +async function cleanupEnvVars () { + await Promise.all([ + runCheckly(fixt, ['env', 'rm', `testenvvars-${executionId}`, '--force']).catch(() => {}), + runCheckly(fixt, ['env', 'rm', `testenvvarslocked-${executionId}`, '--force']).catch(() => {}), ]) } describe('checkly env add', () => { + beforeAll(async () => { + fixt = await FixtureSandbox.create({ + source: path.join(__dirname, '..', 'fixtures', 'check-parse-error'), + }) + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() + }) + // after testing remove the environment variable vi checkly env rm test afterEach(async () => { await cleanupEnvVars() }) it('should add a new env variable called testenvvars', async () => { - const result = await runChecklyCli({ - args: ['env', 'add', `testenvvars-${executionId}`, 'testvalue'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, '../fixtures/check-parse-error'), - }) - expect(result.stdout).toContain(`Environment variable "testenvvars-${executionId}" added.`) + const { stdout } = await runCheckly(fixt, ['env', 'add', `testenvvars-${executionId}`, 'testvalue']) + expect(stdout).toContain(`Environment variable "testenvvars-${executionId}" added.`) }) it('should add a new locked env variable called testenvvars', async () => { - const result = await runChecklyCli({ - args: ['env', 'add', `testenvvarslocked-${executionId}`, 'testvalue', '--locked'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, '../fixtures/check-parse-error'), - }) - expect(result.stdout).toContain(`Environment variable "testenvvarslocked-${executionId}" added.`) + const { stdout } = await runCheckly(fixt, ['env', 'add', `testenvvarslocked-${executionId}`, 'testvalue', '--locked']) + expect(stdout).toContain(`Environment variable "testenvvarslocked-${executionId}" added.`) }) it('should add fail because env variable called testenvvars exists', async () => { - await runChecklyCli({ - args: ['env', 'add', `testenvvarslocked-${executionId}`, 'testvalue', '--locked'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, '../fixtures/check-parse-error'), - timeout: 10000, - }) - const result = await runChecklyCli({ - args: ['env', 'add', `testenvvarslocked-${executionId}`, 'testvalue', '--locked'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, '../fixtures/check-parse-error'), + await runCheckly(fixt, ['env', 'add', `testenvvarslocked-${executionId}`, 'testvalue', '--locked'], { timeout: 10000, }) - expect(result.stdout).toContain(`Environment variable "testenvvarslocked-${executionId}" already exists.`) + try { + await runCheckly(fixt, ['env', 'add', `testenvvarslocked-${executionId}`, 'testvalue', '--locked'], { + timeout: 10000, + }) + expect.unreachable('Expected env add to fail because variable already exists') + } catch (err) { + if (err instanceof ExecaError) { + expect(err.stdout).toContain(`Environment variable "testenvvarslocked-${executionId}" already exists.`) + } else { + throw err + } + } }) }) diff --git a/packages/cli/e2e/__tests__/env/env.ls.spec.ts b/packages/cli/e2e/__tests__/env/env.ls.spec.ts index 668705543..5f00ec032 100644 --- a/packages/cli/e2e/__tests__/env/env.ls.spec.ts +++ b/packages/cli/e2e/__tests__/env/env.ls.spec.ts @@ -1,42 +1,34 @@ import path from 'node:path' -import config from 'config' import { nanoid } from 'nanoid' import { describe, beforeAll, afterAll, it, expect } from 'vitest' -import { runChecklyCli } from '../../run-checkly' +import { FixtureSandbox } from '../../../src/testing/fixture-sandbox' +import { runCheckly } from '../../run-checkly' describe('checkly env ls', () => { const executionId = nanoid(5) + let fixt: FixtureSandbox - // before testing add a new environment variable vi checkly env add test true beforeAll(async () => { - await runChecklyCli({ - args: ['env', 'add', `testenvvarsls-${executionId}`, 'testvalue'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, '../fixtures/check-parse-error'), + fixt = await FixtureSandbox.create({ + source: path.join(__dirname, '..', 'fixtures', 'check-parse-error'), }) - }) + await runCheckly(fixt, ['env', 'add', `testenvvarsls-${executionId}`, 'testvalue']) + }, 180_000) - // after testing remove the environment variable vi checkly env rm test afterAll(async () => { - await runChecklyCli({ - args: ['env', 'rm', `testenvvarsls-${executionId}`, '--force'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, '../fixtures/check-parse-error'), - }) + try { + await runCheckly(fixt, ['env', 'rm', `testenvvarsls-${executionId}`, '--force']) + } catch { + // ignore cleanup errors + } + await fixt?.destroy() }) it('should list all environment variables', async () => { - const result = await runChecklyCli({ - args: ['env', 'ls'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, '../fixtures/check-parse-error'), - }) + const { stdout } = await runCheckly(fixt, ['env', 'ls']) // expect that 'testenvvars' is in the output - expect(result.stdout).toContain(`testenvvarsls-${executionId}`) + expect(stdout).toContain(`testenvvarsls-${executionId}`) }) }) diff --git a/packages/cli/e2e/__tests__/env/env.pull.spec.ts b/packages/cli/e2e/__tests__/env/env.pull.spec.ts index 04129eaf6..2d6effd98 100644 --- a/packages/cli/e2e/__tests__/env/env.pull.spec.ts +++ b/packages/cli/e2e/__tests__/env/env.pull.spec.ts @@ -1,85 +1,85 @@ import fs from 'node:fs' import path from 'node:path' -import config from 'config' import { nanoid } from 'nanoid' +import { ExecaError } from 'execa' import { describe, beforeAll, afterAll, it, expect } from 'vitest' -import { runChecklyCli } from '../../run-checkly' +import { FixtureSandbox } from '../../../src/testing/fixture-sandbox' +import { runCheckly } from '../../run-checkly' describe('checkly env pull', () => { const executionId = nanoid(5) - const directory = path.join(__dirname, '../fixtures/check-parse-error') + let fixt: FixtureSandbox + // before testing add a new environment variable call envPullTest with value testvalue // additionally delete .envPullTest file if it exists beforeAll(async () => { - await runChecklyCli({ - args: ['env', 'add', `envPullTest-${executionId}`, 'testvalue'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory, + fixt = await FixtureSandbox.create({ + source: path.join(__dirname, '..', 'fixtures', 'check-parse-error'), }) + await runCheckly(fixt, ['env', 'add', `envPullTest-${executionId}`, 'testvalue']) - // goto checkly path and delete .envPullTest file if it exists - if (fs.existsSync(path.join(directory, '.envPullTest'))) { - fs.unlinkSync(path.join(directory, '.envPullTest')) + // delete .envPullTest file if it exists + const envPullTestPath = path.join(fixt.root, '.envPullTest') + if (fs.existsSync(envPullTestPath)) { + fs.unlinkSync(envPullTestPath) } - }) + }, 180_000) // after testing remove the environment variable envPullTest from checkly // additionally delete .envPullTest file if it exists afterAll(async () => { - await runChecklyCli({ - args: ['env', 'rm', `envPullTest-${executionId}`, '--force'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory, - }) + try { + await runCheckly(fixt, ['env', 'rm', `envPullTest-${executionId}`, '--force']) + } catch { + // ignore cleanup errors + } - if (fs.existsSync(path.join(directory, '.envPullTest'))) { - fs.unlinkSync(path.join(directory, '.envPullTest')) + if (fixt) { + const envPullTestPath = path.join(fixt.root, '.envPullTest') + if (fs.existsSync(envPullTestPath)) { + fs.unlinkSync(envPullTestPath) + } } + + await fixt?.destroy() }) + // test that env pull .envPullTest creates a .envPullTest file with the correct content it('should create a .envPullTest file with the correct content', async () => { - const result = await runChecklyCli({ - args: ['env', 'pull', '.envPullTest'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory, - }) - const filename = path.join(directory, '.envPullTest') + const { stdout } = await runCheckly(fixt, ['env', 'pull', '.envPullTest']) + const filename = path.join(fixt.root, '.envPullTest') // expect that 'testenvvars' is in the output expect(fs.existsSync(filename)).toBe(true) expect(fs.readFileSync(filename, 'utf8')).toContain(`envPullTest-${executionId}=testvalue`) // result.stdout contains Success! ${filename} file - expect(result.stdout).toContain('Success! Environment variables written to .envPullTest.') + expect(stdout).toContain('Success! Environment variables written to .envPullTest.') }) it('should ask for permission to overwrite a .envPullTest file', async () => { // create .envPullTest file in directory - fs.writeFileSync(path.join(directory, '.envPullTest'), 'test=test') - const result = await runChecklyCli({ - args: ['env', 'pull', '.envPullTest'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory, - timeout: 5000, - }) - // result.stdout contains 'Found existing file.' - expect(result.stdout).toContain('Found existing file .envPullTest.') + fs.writeFileSync(path.join(fixt.root, '.envPullTest'), 'test=test') + try { + await runCheckly(fixt, ['env', 'pull', '.envPullTest'], { + timeout: 5000, + }) + expect.unreachable('Expected process to be killed by timeout') + } catch (err) { + if (err instanceof ExecaError) { + // result.stdout contains 'Found existing file.' + expect(err.stdout).toContain('Found existing file .envPullTest.') + } else { + throw err + } + } }) it('should overwrite a .envPullTest file w/o asking for permission', async () => { // create .envPullTest file in directory - fs.writeFileSync(path.join(directory, '.envPullTest'), 'test=test') - const result = await runChecklyCli({ - args: ['env', 'pull', '.envPullTest', '--force'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory, - }) + fs.writeFileSync(path.join(fixt.root, '.envPullTest'), 'test=test') + const { stdout } = await runCheckly(fixt, ['env', 'pull', '.envPullTest', '--force']) // result.stdout contains Success! ${filename} file - expect(result.stdout).toContain('Success! Environment variables written to .envPullTest.') + expect(stdout).toContain('Success! Environment variables written to .envPullTest.') }) }) diff --git a/packages/cli/e2e/__tests__/env/env.rm.spec.ts b/packages/cli/e2e/__tests__/env/env.rm.spec.ts index af8f8b141..85994baac 100644 --- a/packages/cli/e2e/__tests__/env/env.rm.spec.ts +++ b/packages/cli/e2e/__tests__/env/env.rm.spec.ts @@ -1,68 +1,72 @@ import path from 'node:path' -import config from 'config' import { nanoid } from 'nanoid' -import { describe, beforeEach, afterEach, it, expect } from 'vitest' +import { ExecaError } from 'execa' +import { describe, beforeAll, afterAll, beforeEach, afterEach, it, expect } from 'vitest' -import { runChecklyCli } from '../../run-checkly' +import { FixtureSandbox } from '../../../src/testing/fixture-sandbox' +import { runCheckly } from '../../run-checkly' const executionId = nanoid(5) +let fixt: FixtureSandbox + async function cleanupEnvVars () { - await runChecklyCli({ - args: ['env', 'rm', `testenvvarsrm-${executionId}`, '--force'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, '../fixtures/check-parse-error'), - }) + await runCheckly(fixt, ['env', 'rm', `testenvvarsrm-${executionId}`, '--force']).catch(() => {}) } describe('checkly env rm', () => { - beforeEach(async () => { - await runChecklyCli({ - args: ['env', 'add', `testenvvarsrm-${executionId}`, 'testvalue'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, '../fixtures/check-parse-error'), + beforeAll(async () => { + fixt = await FixtureSandbox.create({ + source: path.join(__dirname, '..', 'fixtures', 'check-parse-error'), }) + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() }) + + beforeEach(async () => { + await runCheckly(fixt, ['env', 'add', `testenvvarsrm-${executionId}`, 'testvalue']) + }) + // after testing remove the environment variable vi checkly env rm test afterEach(async () => { await cleanupEnvVars() }) it('should remove the testenvvarsrm env variable', async () => { - const result = await runChecklyCli({ - args: ['env', 'rm', `testenvvarsrm-${executionId}`, '--force'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, '../fixtures/check-parse-error'), - }) + const { stdout } = await runCheckly(fixt, ['env', 'rm', `testenvvarsrm-${executionId}`, '--force']) // expect that 'testenvvars' is in the output - expect(result.stdout).toContain(`Environment variable "testenvvarsrm-${executionId}" deleted.`) + expect(stdout).toContain(`Environment variable "testenvvarsrm-${executionId}" deleted.`) }) it('should ask for permision to remove the testenvvarsrm env variable', async () => { - const result = await runChecklyCli({ - args: ['env', 'rm', `testenvvarsrm-${executionId}`], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, '../fixtures/check-parse-error'), - timeout: 5000, - }) - expect(result.stdout).toContain(`Delete environment variable "testenvvarsrm-${executionId}"`) - expect(result.stdout).toContain('Proceed?') + try { + await runCheckly(fixt, ['env', 'rm', `testenvvarsrm-${executionId}`], { timeout: 5000 }) + expect.unreachable('Expected process to be killed by timeout') + } catch (err) { + if (err instanceof ExecaError) { + expect(err.stdout).toContain(`Delete environment variable "testenvvarsrm-${executionId}"`) + expect(err.stdout).toContain('Proceed?') + } else { + throw err + } + } }) it('should throw an error because testenvvarsrm env variable does not exist', async () => { await cleanupEnvVars() - const result = await runChecklyCli({ - args: ['env', 'rm', `testenvvarsrm-${executionId}`, '--force'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, '../fixtures/check-parse-error'), - }) - // expect that 'testenvvars' does not exist - expect(result.stdout).toContain(`Environment variable "testenvvarsrm-${executionId}" does not exist.`) + try { + await runCheckly(fixt, ['env', 'rm', `testenvvarsrm-${executionId}`, '--force']) + expect.unreachable('Expected env rm to fail because variable does not exist') + } catch (err) { + if (err instanceof ExecaError) { + // expect that 'testenvvars' does not exist + expect(err.stdout).toContain(`Environment variable "testenvvarsrm-${executionId}" does not exist.`) + } else { + throw err + } + } }) }) diff --git a/packages/cli/e2e/__tests__/env/env.upate.spec.ts b/packages/cli/e2e/__tests__/env/env.upate.spec.ts index fef74ad85..d5915c510 100644 --- a/packages/cli/e2e/__tests__/env/env.upate.spec.ts +++ b/packages/cli/e2e/__tests__/env/env.upate.spec.ts @@ -1,41 +1,39 @@ import path from 'node:path' -import config from 'config' import { nanoid } from 'nanoid' -import { describe, beforeEach, afterEach, it, expect } from 'vitest' +import { describe, beforeAll, afterAll, beforeEach, afterEach, it, expect } from 'vitest' -import { runChecklyCli } from '../../run-checkly' +import { FixtureSandbox } from '../../../src/testing/fixture-sandbox' +import { runCheckly } from '../../run-checkly' const executionId = nanoid(5) +let fixt: FixtureSandbox + describe('checkly env update', () => { + beforeAll(async () => { + fixt = await FixtureSandbox.create({ + source: path.join(__dirname, '..', 'fixtures', 'check-parse-error'), + }) + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() + }) + beforeEach(async () => { // create a env variable to update testenvvarsUpdate - await runChecklyCli({ - args: ['env', 'add', `testenvvarsUpdate-${executionId}`, 'testvalue'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, '../fixtures/check-parse-error'), - }) + await runCheckly(fixt, ['env', 'add', `testenvvarsUpdate-${executionId}`, 'testvalue']) }) + // after testing remove the environment variable vi checkly env rm test afterEach(async () => { - await runChecklyCli({ - args: ['env', 'rm', `testenvvarsUpdate-${executionId}`, '--force'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, '../fixtures/check-parse-error'), - }) + await runCheckly(fixt, ['env', 'rm', `testenvvarsUpdate-${executionId}`, '--force']).catch(() => {}) }) it('should update a env variable called testenvvarsUpdate', async () => { - const result = await runChecklyCli({ - args: ['env', 'update', `testenvvarsUpdate-${executionId}`, 'testvalue'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, '../fixtures/check-parse-error'), - }) + const { stdout } = await runCheckly(fixt, ['env', 'update', `testenvvarsUpdate-${executionId}`, 'testvalue']) // expect that 'testenvvarsUpdate' is in the output - expect(result.stdout).toContain(`Environment variable "testenvvarsUpdate-${executionId}" updated.`) + expect(stdout).toContain(`Environment variable "testenvvarsUpdate-${executionId}" updated.`) }) }) diff --git a/packages/cli/e2e/__tests__/fixtures/allowed-config-file-constructs/package.json b/packages/cli/e2e/__tests__/fixtures/allowed-config-file-constructs/package.json new file mode 100644 index 000000000..1cee70389 --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/allowed-config-file-constructs/package.json @@ -0,0 +1 @@ +{"private": true} diff --git a/packages/cli/e2e/__tests__/fixtures/check-parse-error/pnpm-lock.yaml b/packages/cli/e2e/__tests__/fixtures/check-parse-error/pnpm-lock.yaml new file mode 100644 index 000000000..9b60ae178 --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/check-parse-error/pnpm-lock.yaml @@ -0,0 +1,9 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: {} diff --git a/packages/cli/e2e/__tests__/fixtures/deploy-agentic-project/pnpm-lock.yaml b/packages/cli/e2e/__tests__/fixtures/deploy-agentic-project/pnpm-lock.yaml new file mode 100644 index 000000000..9b60ae178 --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/deploy-agentic-project/pnpm-lock.yaml @@ -0,0 +1,9 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: {} diff --git a/packages/cli/e2e/__tests__/fixtures/deploy-esm-project/pnpm-lock.yaml b/packages/cli/e2e/__tests__/fixtures/deploy-esm-project/pnpm-lock.yaml new file mode 100644 index 000000000..82c3664aa --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/deploy-esm-project/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.60.0 + +packages: + + '@playwright/test@1.60.0': + resolution: {integrity: sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.60.0: + resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.60.0: + resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.60.0': + dependencies: + playwright: 1.60.0 + + fsevents@2.3.2: + optional: true + + playwright-core@1.60.0: {} + + playwright@1.60.0: + dependencies: + playwright-core: 1.60.0 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/e2e/__tests__/fixtures/deploy-project/pnpm-lock.yaml b/packages/cli/e2e/__tests__/fixtures/deploy-project/pnpm-lock.yaml new file mode 100644 index 000000000..82c3664aa --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/deploy-project/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.60.0 + +packages: + + '@playwright/test@1.60.0': + resolution: {integrity: sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.60.0: + resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.60.0: + resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.60.0': + dependencies: + playwright: 1.60.0 + + fsevents@2.3.2: + optional: true + + playwright-core@1.60.0: {} + + playwright@1.60.0: + dependencies: + playwright-core: 1.60.0 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/e2e/__tests__/fixtures/empty-project/pnpm-lock.yaml b/packages/cli/e2e/__tests__/fixtures/empty-project/pnpm-lock.yaml new file mode 100644 index 000000000..82c3664aa --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/empty-project/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.60.0 + +packages: + + '@playwright/test@1.60.0': + resolution: {integrity: sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.60.0: + resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.60.0: + resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.60.0': + dependencies: + playwright: 1.60.0 + + fsevents@2.3.2: + optional: true + + playwright-core@1.60.0: {} + + playwright@1.60.0: + dependencies: + playwright-core: 1.60.0 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/e2e/__tests__/fixtures/esm-module/pnpm-lock.yaml b/packages/cli/e2e/__tests__/fixtures/esm-module/pnpm-lock.yaml new file mode 100644 index 000000000..82c3664aa --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/esm-module/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.60.0 + +packages: + + '@playwright/test@1.60.0': + resolution: {integrity: sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.60.0: + resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.60.0: + resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.60.0': + dependencies: + playwright: 1.60.0 + + fsevents@2.3.2: + optional: true + + playwright-core@1.60.0: {} + + playwright@1.60.0: + dependencies: + playwright-core: 1.60.0 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/e2e/__tests__/fixtures/retry-project/pnpm-lock.yaml b/packages/cli/e2e/__tests__/fixtures/retry-project/pnpm-lock.yaml new file mode 100644 index 000000000..82c3664aa --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/retry-project/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.60.0 + +packages: + + '@playwright/test@1.60.0': + resolution: {integrity: sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.60.0: + resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.60.0: + resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.60.0': + dependencies: + playwright: 1.60.0 + + fsevents@2.3.2: + optional: true + + playwright-core@1.60.0: {} + + playwright@1.60.0: + dependencies: + playwright-core: 1.60.0 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/e2e/__tests__/fixtures/snapshot-project-missing-snapshots/pnpm-lock.yaml b/packages/cli/e2e/__tests__/fixtures/snapshot-project-missing-snapshots/pnpm-lock.yaml new file mode 100644 index 000000000..7fb808985 --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/snapshot-project-missing-snapshots/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@playwright/test': + specifier: ^1.51.1 + version: 1.60.0 + +packages: + + '@playwright/test@1.60.0': + resolution: {integrity: sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.60.0: + resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.60.0: + resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.60.0': + dependencies: + playwright: 1.60.0 + + fsevents@2.3.2: + optional: true + + playwright-core@1.60.0: {} + + playwright@1.60.0: + dependencies: + playwright-core: 1.60.0 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/e2e/__tests__/fixtures/snapshot-project/pnpm-lock.yaml b/packages/cli/e2e/__tests__/fixtures/snapshot-project/pnpm-lock.yaml new file mode 100644 index 000000000..82c3664aa --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/snapshot-project/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.60.0 + +packages: + + '@playwright/test@1.60.0': + resolution: {integrity: sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.60.0: + resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.60.0: + resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.60.0': + dependencies: + playwright: 1.60.0 + + fsevents@2.3.2: + optional: true + + playwright-core@1.60.0: {} + + playwright@1.60.0: + dependencies: + playwright-core: 1.60.0 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/e2e/__tests__/fixtures/test-duplicated-groups/pnpm-lock.yaml b/packages/cli/e2e/__tests__/fixtures/test-duplicated-groups/pnpm-lock.yaml new file mode 100644 index 000000000..82c3664aa --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/test-duplicated-groups/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.60.0 + +packages: + + '@playwright/test@1.60.0': + resolution: {integrity: sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.60.0: + resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.60.0: + resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.60.0': + dependencies: + playwright: 1.60.0 + + fsevents@2.3.2: + optional: true + + playwright-core@1.60.0: {} + + playwright@1.60.0: + dependencies: + playwright-core: 1.60.0 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/e2e/__tests__/fixtures/test-only-project/pnpm-lock.yaml b/packages/cli/e2e/__tests__/fixtures/test-only-project/pnpm-lock.yaml new file mode 100644 index 000000000..82c3664aa --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/test-only-project/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.60.0 + +packages: + + '@playwright/test@1.60.0': + resolution: {integrity: sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.60.0: + resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.60.0: + resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.60.0': + dependencies: + playwright: 1.60.0 + + fsevents@2.3.2: + optional: true + + playwright-core@1.60.0: {} + + playwright@1.60.0: + dependencies: + playwright-core: 1.60.0 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/e2e/__tests__/fixtures/test-parse-error/pnpm-lock.yaml b/packages/cli/e2e/__tests__/fixtures/test-parse-error/pnpm-lock.yaml new file mode 100644 index 000000000..82c3664aa --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/test-parse-error/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.60.0 + +packages: + + '@playwright/test@1.60.0': + resolution: {integrity: sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.60.0: + resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.60.0: + resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.60.0': + dependencies: + playwright: 1.60.0 + + fsevents@2.3.2: + optional: true + + playwright-core@1.60.0: {} + + playwright@1.60.0: + dependencies: + playwright-core: 1.60.0 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/e2e/__tests__/fixtures/test-playwright-project/package.json b/packages/cli/e2e/__tests__/fixtures/test-playwright-project/package.json new file mode 100644 index 000000000..1cee70389 --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/test-playwright-project/package.json @@ -0,0 +1 @@ +{"private": true} diff --git a/packages/cli/e2e/__tests__/fixtures/test-project/pnpm-lock.yaml b/packages/cli/e2e/__tests__/fixtures/test-project/pnpm-lock.yaml new file mode 100644 index 000000000..82c3664aa --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/test-project/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.60.0 + +packages: + + '@playwright/test@1.60.0': + resolution: {integrity: sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.60.0: + resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.60.0: + resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.60.0': + dependencies: + playwright: 1.60.0 + + fsevents@2.3.2: + optional: true + + playwright-core@1.60.0: {} + + playwright@1.60.0: + dependencies: + playwright-core: 1.60.0 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/e2e/__tests__/fixtures/test-pwt-native/pnpm-lock.yaml b/packages/cli/e2e/__tests__/fixtures/test-pwt-native/pnpm-lock.yaml new file mode 100644 index 000000000..a75c20a21 --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/test-pwt-native/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: 1.53.1 + version: 1.53.1 + +packages: + + '@playwright/test@1.53.1': + resolution: {integrity: sha512-Z4c23LHV0muZ8hfv4jw6HngPJkbbtZxTkxPNIg7cJcTc9C28N/p2q7g3JZS2SiKBBHJ3uM1dgDye66bB7LEk5w==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.53.1: + resolution: {integrity: sha512-Z46Oq7tLAyT0lGoFx4DOuB1IA9D1TPj0QkYxpPVUnGDqHHvDpCftu1J2hM2PiWsNMoZh8+LQaarAWcDfPBc6zg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.53.1: + resolution: {integrity: sha512-LJ13YLr/ocweuwxyGf1XNFWIU4M2zUSo149Qbp+A4cpwDjsxRPj7k6H25LBrEHiEwxvRbD8HdwvQmRMSvquhYw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.53.1': + dependencies: + playwright: 1.53.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.53.1: {} + + playwright@1.53.1: + dependencies: + playwright-core: 1.53.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/e2e/__tests__/fixtures/trigger-project/package.json b/packages/cli/e2e/__tests__/fixtures/trigger-project/package.json new file mode 100644 index 000000000..1cee70389 --- /dev/null +++ b/packages/cli/e2e/__tests__/fixtures/trigger-project/package.json @@ -0,0 +1 @@ +{"private": true} diff --git a/packages/cli/e2e/__tests__/help.spec.ts b/packages/cli/e2e/__tests__/help.spec.ts index c045e51f0..76f7d8839 100644 --- a/packages/cli/e2e/__tests__/help.spec.ts +++ b/packages/cli/e2e/__tests__/help.spec.ts @@ -1,19 +1,26 @@ -import { describe, it, expect } from 'vitest' +import { describe, it, expect, beforeAll, afterAll } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { runCheckly } from '../run-checkly' describe('help', () => { + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({}) + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() + }) + it('should print custom help with examples', async () => { - const { stdout } = await runChecklyCli({ - args: ['--help'], - }) + const { stdout } = await runCheckly(fixt, ['--help']) expect(stdout).toContain('EXAMPLES') }) it('should print topic help', async () => { - const { stdout } = await runChecklyCli({ - args: ['env', '--help'], - }) + const { stdout } = await runCheckly(fixt, ['env', '--help']) // use a 80 char line output expect(stdout).toContain(`COMMANDS env add Add environment variable via "checkly env add ". @@ -26,9 +33,7 @@ describe('help', () => { }) it('should print import topic help', async () => { - const { stdout } = await runChecklyCli({ - args: ['import', '--help'], - }) + const { stdout } = await runCheckly(fixt, ['import', '--help']) // use a 80 char line output expect(stdout).toContain(`COMMANDS import apply Attach imported resources into your project in a pending state. @@ -39,9 +44,7 @@ describe('help', () => { }) it('should print core and additional commands and topic', async () => { - const { stdout } = await runChecklyCli({ - args: ['--help'], - }) + const { stdout } = await runCheckly(fixt, ['--help']) expect(stdout).toContain(`CORE COMMANDS deploy Deploy your project to your Checkly account. init Initialize Checkly in your project diff --git a/packages/cli/e2e/__tests__/incidents.spec.ts b/packages/cli/e2e/__tests__/incidents.spec.ts index 28c914c25..94c8aa9e0 100644 --- a/packages/cli/e2e/__tests__/incidents.spec.ts +++ b/packages/cli/e2e/__tests__/incidents.spec.ts @@ -2,7 +2,8 @@ import config from 'config' import axios, { type AxiosInstance } from 'axios' import { describe, it, expect, beforeAll, afterAll } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { runCheckly } from '../run-checkly' const apiKey: string = config.get('apiKey') const accountId: string = config.get('accountId') @@ -19,38 +20,42 @@ function createApiClient (): AxiosInstance { } describe('checkly incidents list', () => { + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({}) + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() + }) + it('should list incidents as JSON with correct structure', async () => { - const result = await runChecklyCli({ - args: ['incidents', 'list', '--status', 'all', '--output', 'json'], + const { stdout } = await runCheckly(fixt, ['incidents', 'list', '--status', 'all', '--output', 'json'], { apiKey, accountId, }) - expect(result.status, `stdout: ${result.stdout}\nstderr: ${result.stderr}`).toBe(0) - const parsed = JSON.parse(result.stdout) + const parsed = JSON.parse(stdout) expect(parsed).toHaveProperty('data') expect(Array.isArray(parsed.data)).toBe(true) expect(parsed).toHaveProperty('count') }) it('should respect --limit flag', async () => { - const result = await runChecklyCli({ - args: ['incidents', 'list', '--status', 'all', '--limit', '2', '--output', 'json'], + const { stdout } = await runCheckly(fixt, ['incidents', 'list', '--status', 'all', '--limit', '2', '--output', 'json'], { apiKey, accountId, }) - expect(result.status, `stdout: ${result.stdout}\nstderr: ${result.stderr}`).toBe(0) - const parsed = JSON.parse(result.stdout) + const parsed = JSON.parse(stdout) expect(parsed.data.length).toBeLessThanOrEqual(2) }) it('should filter by status', async () => { - const result = await runChecklyCli({ - args: ['incidents', 'list', '--status', 'resolved', '--output', 'json'], + const { stdout } = await runCheckly(fixt, ['incidents', 'list', '--status', 'resolved', '--output', 'json'], { apiKey, accountId, }) - expect(result.status, `stdout: ${result.stdout}\nstderr: ${result.stderr}`).toBe(0) - const parsed = JSON.parse(result.stdout) + const parsed = JSON.parse(stdout) for (const incident of parsed.data) { expect(incident.lastUpdateStatus).toBe('RESOLVED') } @@ -58,12 +63,15 @@ describe('checkly incidents list', () => { }) describe('incidents lifecycle (create → update → resolve → delete)', () => { + let fixt: FixtureSandbox const api = createApiClient() let statusPageId: string let serviceId: string let incidentId: string beforeAll(async () => { + fixt = await FixtureSandbox.create({}) + const serviceRes = await api.post('/v1/status-pages/services', { name: 'E2E Test Service' }) serviceId = serviceRes.data.id @@ -73,7 +81,7 @@ describe('incidents lifecycle (create → update → resolve → delete)', () => cards: [{ name: 'Default', services: [{ id: serviceId }] }], }) statusPageId = statusPageRes.data.id - }, 30_000) + }, 180_000) afterAll(async () => { const cleanups: Promise[] = [] @@ -93,25 +101,24 @@ describe('incidents lifecycle (create → update → resolve → delete)', () => ) } await Promise.all(cleanups) + await fixt?.destroy() }) it('should create an incident', async () => { - const result = await runChecklyCli({ - args: [ - 'incidents', 'create', - '--status-page-id', statusPageId, - '--title', 'e2e-test-incident', - '--severity', 'minor', - '--message', 'e2e-test-created', - '--no-notify-subscribers', - '--output', 'json', - '--force', - ], + const { stdout } = await runCheckly(fixt, [ + 'incidents', 'create', + '--status-page-id', statusPageId, + '--title', 'e2e-test-incident', + '--severity', 'minor', + '--message', 'e2e-test-created', + '--no-notify-subscribers', + '--output', 'json', + '--force', + ], { apiKey, accountId, }) - expect(result.status, `stdout: ${result.stdout}\nstderr: ${result.stderr}`).toBe(0) - const incident = JSON.parse(result.stdout) + const incident = JSON.parse(stdout) expect(incident).toHaveProperty('id') expect(incident.name).toBe('e2e-test-incident') expect(incident.severity).toBe('MINOR') @@ -119,49 +126,43 @@ describe('incidents lifecycle (create → update → resolve → delete)', () => }) it('should post a progress update', async () => { - const result = await runChecklyCli({ - args: [ - 'incidents', 'update', incidentId, - '--message', 'e2e-root-cause-identified', - '--status', 'identified', - '--no-notify-subscribers', - '--output', 'json', - '--force', - ], + const { stdout } = await runCheckly(fixt, [ + 'incidents', 'update', incidentId, + '--message', 'e2e-root-cause-identified', + '--status', 'identified', + '--no-notify-subscribers', + '--output', 'json', + '--force', + ], { apiKey, accountId, }) - expect(result.status, `stdout: ${result.stdout}\nstderr: ${result.stderr}`).toBe(0) - const update = JSON.parse(result.stdout) + const update = JSON.parse(stdout) expect(update).toHaveProperty('status', 'IDENTIFIED') expect(update).toHaveProperty('description', 'e2e-root-cause-identified') }) it('should resolve the incident', async () => { - const result = await runChecklyCli({ - args: [ - 'incidents', 'resolve', incidentId, - '--message', 'e2e-test-resolved', - '--no-notify-subscribers', - '--output', 'json', - '--force', - ], + const { stdout } = await runCheckly(fixt, [ + 'incidents', 'resolve', incidentId, + '--message', 'e2e-test-resolved', + '--no-notify-subscribers', + '--output', 'json', + '--force', + ], { apiKey, accountId, }) - expect(result.status, `stdout: ${result.stdout}\nstderr: ${result.stderr}`).toBe(0) - const update = JSON.parse(result.stdout) + const update = JSON.parse(stdout) expect(update).toHaveProperty('status', 'RESOLVED') }) it('should show the incident as resolved in list', async () => { - const result = await runChecklyCli({ - args: ['incidents', 'list', '--status', 'resolved', '--output', 'json'], + const { stdout } = await runCheckly(fixt, ['incidents', 'list', '--status', 'resolved', '--output', 'json'], { apiKey, accountId, }) - expect(result.status, `stdout: ${result.stdout}\nstderr: ${result.stderr}`).toBe(0) - const parsed = JSON.parse(result.stdout) + const parsed = JSON.parse(stdout) const found = parsed.data.find((i: any) => i.id === incidentId) expect(found).toBeDefined() expect(found.lastUpdateStatus).toBe('RESOLVED') diff --git a/packages/cli/e2e/__tests__/login.spec.ts b/packages/cli/e2e/__tests__/login.spec.ts index f0af3f38b..ecb84e947 100644 --- a/packages/cli/e2e/__tests__/login.spec.ts +++ b/packages/cli/e2e/__tests__/login.spec.ts @@ -1,62 +1,115 @@ -import config from 'config' -import { describe, it, expect, beforeEach } from 'vitest' +import { execa } from 'execa' +import { describe, it, expect, beforeAll, beforeEach, afterAll } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { checklyEnv, runCheckly } from '../run-checkly' + +// Run a CLI command that is expected to hang (e.g. waiting for OAuth callback), +// kill the process tree after a delay, and return stdout/stderr collected so far. +async function runAndKill ( + fixt: FixtureSandbox, + args: string[], + options: { delay: number, env?: Record, promptsInjection?: (string | boolean)[] }, +): Promise<{ stdout: string, stderr: string }> { + const { delay, env, promptsInjection } = options + const subprocess = execa('pnpm', ['checkly', ...args], { + cwd: fixt.root, + extendEnv: false, + detached: process.platform !== 'win32', + env: { + ...checklyEnv({ promptsInjection }), + ...env, + }, + }) + + let stdout = '' + let stderr = '' + subprocess.stdout?.on('data', (data: Buffer) => { + stdout += data.toString() + }) + subprocess.stderr?.on('data', (data: Buffer) => { + stderr += data.toString() + }) + + // Attach rejection handler immediately to prevent unhandled rejection + const done = subprocess.catch(() => {}) + + await new Promise(resolve => setTimeout(resolve, delay)) + + // Kill the entire process tree. On Windows, taskkill /T kills pnpm and + // its grandchild node process. detached: true breaks stdio on Windows so + // we only use it on Unix where negative PID kills the process group. + if (process.platform === 'win32') { + await execa('taskkill', ['/F', '/T', '/PID', String(subprocess.pid)], { reject: false }) + } else { + try { + process.kill(-subprocess.pid!, 'SIGKILL') + } catch { /* already dead */ } + } + + await done + return { stdout, stderr } +} describe('login', () => { + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({}) + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() + }) + beforeEach(async () => { - await runChecklyCli({ - args: ['logout'], - promptsInjection: [true], - timeout: 5000, - }) + try { + await runCheckly(fixt, ['logout'], { + promptsInjection: [true], + timeout: 5000, + }) + } catch { + // logout may fail if not logged in, that's fine + } }) it('should show warning with environment variables are configured', async () => { - const { status, stderr } = await runChecklyCli({ - args: ['login'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), + const { stderr } = await runCheckly(fixt, ['login'], { timeout: 5000, }) expect(stderr).toContain('Warning: `CHECKLY_API_KEY` or `CHECKLY_ACCOUNT_ID` environment variables') - expect(stderr).toContain('are configured. You must delete them to use `npx checkly login`.\n') - expect(status).toBe(0) + expect(stderr).toContain('are configured. You must delete them to use `npx checkly login`.') }, 10000) it('should show URL to login', async () => { - const { status, stdout, stderr } = await runChecklyCli({ - args: ['login'], + const { stdout, stderr } = await runAndKill(fixt, ['login'], { + delay: 5000, promptsInjection: ['login', false], - timeout: 5000, + env: { + CHECKLY_API_KEY: undefined, + CHECKLY_ACCOUNT_ID: undefined, + }, }) expect(stdout).toContain('Please open the following URL in your browser:') expect(stdout).toContain('https://auth.checklyhq.com/authorize?') - // URL should allow to login expect(stdout).toContain('mode=&allowLogin=true&allowSignUp=false') - expect(stderr).toBe('') - - // the command should timeout and status shouldn't be 0 - expect(status).not.toBe(0) - }) + }, 15000) it('should show URL to signup', async () => { - const { status, stdout, stderr } = await runChecklyCli({ - args: ['login'], + const { stdout, stderr } = await runAndKill(fixt, ['login'], { + delay: 5000, promptsInjection: ['signup', false], - timeout: 5000, + env: { + CHECKLY_API_KEY: undefined, + CHECKLY_ACCOUNT_ID: undefined, + }, }) expect(stdout).toContain('Please open the following URL in your browser:') expect(stdout).toContain('https://auth.checklyhq.com/authorize?') - // URL should allow to signup expect(stdout).toContain('mode=signUp&allowLogin=false&allowSignUp=true') - expect(stderr).toBe('') - - // the command should timeout and status shouldn't be 0 - expect(status).not.toBe(0) - }) + }, 15000) }) diff --git a/packages/cli/e2e/__tests__/logout.spec.ts b/packages/cli/e2e/__tests__/logout.spec.ts index 0f25f20a1..65c4f8bd5 100644 --- a/packages/cli/e2e/__tests__/logout.spec.ts +++ b/packages/cli/e2e/__tests__/logout.spec.ts @@ -1,17 +1,26 @@ -import { describe, it, expect } from 'vitest' +import { describe, it, expect, beforeAll, afterAll } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { runCheckly } from '../run-checkly' describe('logout', () => { + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({}) + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() + }) + it('should logout', async () => { - const { status, stdout, stderr } = await runChecklyCli({ - args: ['logout'], + const { stdout, stderr } = await runCheckly(fixt, ['logout'], { promptsInjection: [true], timeout: 5000, }) expect(stdout).toContain('See you soon! 👋') expect(stderr).toBe('') - expect(status).toBe(0) }) }) diff --git a/packages/cli/e2e/__tests__/pw-test.spec.ts b/packages/cli/e2e/__tests__/pw-test.spec.ts index 6e2fb66ff..c12f1074e 100644 --- a/packages/cli/e2e/__tests__/pw-test.spec.ts +++ b/packages/cli/e2e/__tests__/pw-test.spec.ts @@ -4,14 +4,16 @@ import { describe, it, expect, beforeAll, afterAll, beforeEach, afterEach } from import { loadChecklyConfig } from '../../src/services/checkly-config-loader' import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { checklyEnv } from '../run-checkly' async function runTest (fixt: FixtureSandbox, args: string[]) { - const result = await fixt.run('npx', [ + const result = await fixt.run('pnpm', [ 'checkly', 'pw-test', ...args, ], { timeout: 180_000, + env: checklyEnv(), }) if (result.exitCode !== 0) { @@ -32,6 +34,7 @@ describe('pw-test', { timeout: 45000 }, () => { beforeAll(async () => { fixt = await FixtureSandbox.create({ source: path.join(__dirname, 'fixtures', 'test-pwt-native'), + template: 'playwright-1.53', }) }, 180_000) @@ -53,6 +56,7 @@ describe('pw-test', { timeout: 45000 }, () => { beforeEach(async () => { fixt = await FixtureSandbox.create({ source: path.join(__dirname, 'fixtures', 'test-pwt-native'), + template: 'playwright', }) }, 180_000) @@ -77,7 +81,7 @@ describe('pw-test', { timeout: 45000 }, () => { playwrightChecks: expect.arrayContaining([ expect.objectContaining({ name: 'Playwright Test: --grep @TAG-B', - testCommand: 'npx playwright test --grep @TAG-B', + testCommand: 'pnpm playwright test --grep @TAG-B', frequency: 10, }), ]), @@ -104,7 +108,7 @@ describe('pw-test', { timeout: 45000 }, () => { playwrightChecks: expect.arrayContaining([ expect.objectContaining({ name: 'Playwright Test: --grep @TAG-B', - testCommand: 'npx playwright test --grep @TAG-B', + testCommand: 'pnpm playwright test --grep @TAG-B', frequency: 5, }), ]), @@ -131,7 +135,7 @@ describe('pw-test', { timeout: 45000 }, () => { playwrightChecks: expect.arrayContaining([ expect.objectContaining({ name: 'Playwright Test: --grep @TAG-A', - testCommand: 'npx playwright test --grep @TAG-A', + testCommand: 'pnpm playwright test --grep @TAG-A', installCommand: 'pnpm install', }), ]), diff --git a/packages/cli/e2e/__tests__/skills.spec.ts b/packages/cli/e2e/__tests__/skills.spec.ts index 1a37282f1..26d225d09 100644 --- a/packages/cli/e2e/__tests__/skills.spec.ts +++ b/packages/cli/e2e/__tests__/skills.spec.ts @@ -1,78 +1,88 @@ -import { describe, it, expect } from 'vitest' +import { ExecaError } from 'execa' +import { describe, it, expect, beforeAll, afterAll } from 'vitest' import { ACTIONS, REFERENCES, SKILL } from '../../src/ai-context/context' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { runCheckly } from '../run-checkly' const actionIds = ACTIONS.map(a => a.id) const referenceShortIds = REFERENCES.map(r => r.id.replace('configure-', '')) describe('checkly skills', () => { + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({}) + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() + }) + it('should list actions and references when called without args', async () => { - const result = await runChecklyCli({ - args: ['skills'], - }) - expect(result.status).toBe(0) - expect(result.stdout).toContain(SKILL.description) + const { stdout } = await runCheckly(fixt, ['skills']) + expect(stdout).toContain(SKILL.description) for (const action of ACTIONS) { - expect(result.stdout).toContain(action.id) - expect(result.stdout).toContain(action.description) + expect(stdout).toContain(action.id) + expect(stdout).toContain(action.description) } for (const ref of REFERENCES) { - expect(result.stdout).toContain(ref.description) + expect(stdout).toContain(ref.description) } }) it('should show example commands', async () => { - const result = await runChecklyCli({ - args: ['skills'], - }) + const { stdout } = await runCheckly(fixt, ['skills']) for (const id of actionIds) { - expect(result.stdout).toContain(`$ checkly skills ${id}`) + expect(stdout).toContain(`$ checkly skills ${id}`) } - expect(result.stdout).toContain(`$ checkly skills configure ${referenceShortIds[0]}`) + expect(stdout).toContain(`$ checkly skills configure ${referenceShortIds[0]}`) }) it('should show the initialize action content', async () => { - const result = await runChecklyCli({ - args: ['skills', 'initialize'], - }) - expect(result.status).toBe(0) - expect(result.stdout).toBeTruthy() + const { stdout } = await runCheckly(fixt, ['skills', 'initialize']) + expect(stdout).toBeTruthy() }) it('should show the configure action content', async () => { - const result = await runChecklyCli({ - args: ['skills', 'configure'], - }) - expect(result.status).toBe(0) - expect(result.stdout).toBeTruthy() + const { stdout } = await runCheckly(fixt, ['skills', 'configure']) + expect(stdout).toBeTruthy() }) it('should show a specific reference', async () => { - const result = await runChecklyCli({ - args: ['skills', 'configure', referenceShortIds[0]], - }) - expect(result.status).toBe(0) - expect(result.stdout).toBeTruthy() + const { stdout } = await runCheckly(fixt, ['skills', 'configure', referenceShortIds[0]]) + expect(stdout).toBeTruthy() }) it('should fail for an invalid action', async () => { - const result = await runChecklyCli({ - args: ['skills', 'nonexistent'], - }) - expect(result.status).not.toBe(0) - expect(result.stderr).toContain('not found') - for (const id of actionIds) { - expect(result.stderr).toContain(id) + try { + await runCheckly(fixt, ['skills', 'nonexistent']) + expect.unreachable('Expected command to fail') + } catch (err) { + if (err instanceof ExecaError) { + expect(err.exitCode).not.toBe(0) + expect(err.stderr).toContain('not found') + for (const id of actionIds) { + expect(err.stderr).toContain(id) + } + } else { + throw err + } } }) it('should fail for an invalid reference', async () => { - const result = await runChecklyCli({ - args: ['skills', 'configure', 'nonexistent-ref'], - }) - expect(result.status).not.toBe(0) - expect(result.stderr).toContain('not found') - expect(result.stderr).toContain(referenceShortIds[0]) + try { + await runCheckly(fixt, ['skills', 'configure', 'nonexistent-ref']) + expect.unreachable('Expected command to fail') + } catch (err) { + if (err instanceof ExecaError) { + expect(err.exitCode).not.toBe(0) + expect(err.stderr).toContain('not found') + expect(err.stderr).toContain(referenceShortIds[0]) + } else { + throw err + } + } }) }) diff --git a/packages/cli/e2e/__tests__/switch.spec.ts b/packages/cli/e2e/__tests__/switch.spec.ts index 188216df4..b84934590 100644 --- a/packages/cli/e2e/__tests__/switch.spec.ts +++ b/packages/cli/e2e/__tests__/switch.spec.ts @@ -1,15 +1,23 @@ import config from 'config' -import { describe, it, expect } from 'vitest' +import { describe, it, expect, beforeAll, afterAll } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { runCheckly } from '../run-checkly' describe('switch', () => { + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({}) + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() + }) + it('should switch between user accounts', async () => { const accountName = config.get('accountName') as string - const { status, stdout, stderr } = await runChecklyCli({ - args: ['switch'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), + const { stdout, stderr } = await runCheckly(fixt, ['switch'], { promptsInjection: [{ id: config.get('accountId') as string, name: accountName, @@ -18,8 +26,7 @@ describe('switch', () => { timeout: 5000, }) - expect(stdout).toContain(`Account switched to ${accountName}\n`) + expect(stdout).toContain(`Account switched to ${accountName}`) expect(stderr).toBe('') - expect(status).toBe(0) }) }) diff --git a/packages/cli/e2e/__tests__/sync-playwright.spec.ts b/packages/cli/e2e/__tests__/sync-playwright.spec.ts index a0b31983f..e8b25b318 100644 --- a/packages/cli/e2e/__tests__/sync-playwright.spec.ts +++ b/packages/cli/e2e/__tests__/sync-playwright.spec.ts @@ -1,44 +1,76 @@ import path from 'node:path' import fs from 'node:fs' -import { describe, it, expect, afterEach } from 'vitest' +import { ExecaError } from 'execa' +import { describe, it, expect, afterEach, beforeAll, afterAll } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { runCheckly } from '../run-checkly' import { loadChecklyConfig } from '../../src/services/checkly-config-loader' describe('sync-playwright', () => { - // Since we are modifying the file let's keep it clean after each test - afterEach(() => { - const configPath = path.join(__dirname, 'fixtures', 'test-playwright-project') - fs.copyFileSync(path.join(configPath, 'checkly.config.original.ts'), path.join(configPath, 'checkly.config.ts')) - }) + describe('with playwright project', () => { + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({ + source: path.join(__dirname, 'fixtures', 'test-playwright-project'), + template: 'playwright', + }) + }, 180_000) - it('should copy playwright config into checkly config', async () => { - const { status, stdout } = await runChecklyCli({ - args: ['sync-playwright'], - directory: path.join(__dirname, 'fixtures', 'test-playwright-project'), + afterAll(async () => { + await fixt?.destroy() }) - expect(status).toBe(0) - expect(stdout).toContain('Successfully updated Checkly config file') - const checklyConfig = await loadChecklyConfig(path.join(__dirname, 'fixtures', 'test-playwright-project')) - expect(checklyConfig.config?.checks?.playwrightConfig).toBeDefined() - expect(checklyConfig.config?.checks?.playwrightConfig?.timeout).toEqual(1234) - expect(checklyConfig.config?.checks?.playwrightConfig?.use).toBeDefined() - expect(checklyConfig.config?.checks?.playwrightConfig?.use?.baseURL).toEqual('http://127.0.0.1:3000') - expect(checklyConfig.config?.checks?.playwrightConfig?.use?.proxy).toEqual({ - server: 'https://hello.com', - username: 'username', - password: 'password', + + // Since we are modifying the file let's keep it clean after each test + afterEach(() => { + fs.copyFileSync(fixt.abspath('checkly.config.original.ts'), fixt.abspath('checkly.config.ts')) + }) + + it('should copy playwright config into checkly config', async () => { + const { stdout } = await runCheckly(fixt, ['sync-playwright']) + expect(stdout).toContain('Successfully updated Checkly config file') + const checklyConfig = await loadChecklyConfig(fixt.root) + expect(checklyConfig.config?.checks?.playwrightConfig).toBeDefined() + expect(checklyConfig.config?.checks?.playwrightConfig?.timeout).toEqual(1234) + expect(checklyConfig.config?.checks?.playwrightConfig?.use).toBeDefined() + expect(checklyConfig.config?.checks?.playwrightConfig?.use?.baseURL).toEqual('http://127.0.0.1:3000') + expect(checklyConfig.config?.checks?.playwrightConfig?.use?.proxy).toEqual({ + server: 'https://hello.com', + username: 'username', + password: 'password', + }) + expect(checklyConfig.config?.checks?.playwrightConfig?.expect).toBeDefined() }) - expect(checklyConfig.config?.checks?.playwrightConfig?.expect).toBeDefined() }) - it('should fail if no playwright config file exists', async () => { - const { status, stdout } = await runChecklyCli({ - args: ['sync-playwright'], - directory: path.join(__dirname, 'fixtures', 'test-project'), + describe('without playwright project', () => { + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({ + source: path.join(__dirname, 'fixtures', 'test-project'), + template: 'playwright', + }) + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() + }) + + it('should fail if no playwright config file exists', async () => { + try { + await runCheckly(fixt, ['sync-playwright']) + expect.unreachable('Expected command to fail') + } catch (err) { + if (err instanceof ExecaError) { + expect(err.exitCode).toBe(1) + expect(err.stdout).toContain('Could not find any playwright.config file.') + } else { + throw err + } + } }) - expect(status).toBe(1) - expect(stdout).toContain('Could not find any playwright.config file.') }) }) diff --git a/packages/cli/e2e/__tests__/test.spec.ts b/packages/cli/e2e/__tests__/test.spec.ts index 4a35fba04..b4c0f5db7 100644 --- a/packages/cli/e2e/__tests__/test.spec.ts +++ b/packages/cli/e2e/__tests__/test.spec.ts @@ -5,10 +5,11 @@ import * as uuid from 'uuid' import { describe, it, expect, afterAll, beforeAll } from 'vitest' import { FixtureSandbox, RunOptions } from '../../src/testing/fixture-sandbox' +import { checklyEnv } from '../run-checkly' import { ExecaError } from 'execa' async function runTest (fixt: FixtureSandbox, args: string[], options?: RunOptions) { - const result = await fixt.run('npx', [ + const result = await fixt.run('pnpm', [ 'checkly', 'test', ...args, @@ -16,7 +17,7 @@ async function runTest (fixt: FixtureSandbox, args: string[], options?: RunOptio timeout: 120_000, ...options, env: { - CHECKLY_CLI_VERSION: '4.8.0', + ...checklyEnv(), ...options?.env, }, }) @@ -40,6 +41,7 @@ describe('test', { timeout: 45000 }, () => { beforeAll(async () => { fixt = await FixtureSandbox.create({ source: path.join(__dirname, 'fixtures', 'test-project'), + template: 'playwright', }) }, 180_000) @@ -126,6 +128,7 @@ describe('test', { timeout: 45000 }, () => { beforeAll(async () => { fixt = await FixtureSandbox.create({ source: path.join(__dirname, 'fixtures', 'test-parse-error'), + template: 'playwright', }) }, 180_000) @@ -155,6 +158,7 @@ describe('test', { timeout: 45000 }, () => { beforeAll(async () => { fixt = await FixtureSandbox.create({ source: path.join(__dirname, 'fixtures', 'test-duplicated-groups'), + template: 'playwright', }) }, 180_000) @@ -184,6 +188,7 @@ describe('test', { timeout: 45000 }, () => { beforeAll(async () => { fixt = await FixtureSandbox.create({ source: path.join(__dirname, 'fixtures', 'test-only-project'), + template: 'playwright', }) }, 180_000) @@ -210,6 +215,7 @@ describe('test', { timeout: 45000 }, () => { beforeAll(async () => { fixt = await FixtureSandbox.create({ source: path.join(__dirname, 'fixtures', 'esm-module'), + template: 'playwright', }) }, 180_000) @@ -231,6 +237,7 @@ describe('test', { timeout: 45000 }, () => { beforeAll(async () => { fixt = await FixtureSandbox.create({ source: path.join(__dirname, 'fixtures', 'snapshot-project'), + template: 'playwright', }) }, 180_000) @@ -255,6 +262,7 @@ describe('test', { timeout: 45000 }, () => { beforeAll(async () => { fixt = await FixtureSandbox.create({ source: path.join(__dirname, 'fixtures', 'snapshot-project-missing-snapshots'), + template: 'playwright', }) }, 180_000) @@ -281,6 +289,7 @@ describe('test', { timeout: 45000 }, () => { beforeAll(async () => { fixt = await FixtureSandbox.create({ source: path.join(__dirname, 'fixtures', 'retry-project'), + template: 'playwright', }) }, 180_000) diff --git a/packages/cli/e2e/__tests__/trigger.spec.ts b/packages/cli/e2e/__tests__/trigger.spec.ts index 125d0fa2a..787b9b4a3 100644 --- a/packages/cli/e2e/__tests__/trigger.spec.ts +++ b/packages/cli/e2e/__tests__/trigger.spec.ts @@ -1,102 +1,100 @@ import path from 'node:path' import * as uuid from 'uuid' -import config from 'config' +import { ExecaError } from 'execa' import { describe, expect, beforeAll, afterAll, test } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { runCheckly } from '../run-checkly' describe('trigger', () => { + let fixt: FixtureSandbox const executionId = uuid.v4() beforeAll(async () => { - await runChecklyCli({ - args: ['deploy', '--force'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, 'fixtures', 'trigger-project'), + fixt = await FixtureSandbox.create({ + source: path.join(__dirname, 'fixtures', 'trigger-project'), + }) + await runCheckly(fixt, ['deploy', '--force'], { env: { EXECUTION_ID: executionId }, }) - }) + }, 180_000) afterAll(async () => { - await runChecklyCli({ - args: ['destroy', '--force'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, 'fixtures', 'trigger-project'), - env: { EXECUTION_ID: executionId }, - }) + try { + await runCheckly(fixt, ['destroy', '--force'], { + env: { EXECUTION_ID: executionId }, + }) + } catch { + // cleanup best-effort + } + await fixt?.destroy() }) test('Should run checks successfully', async () => { const secretEnv = uuid.v4() - const result = await runChecklyCli({ - args: [ - 'trigger', - '-e', - `SECRET_ENV=${secretEnv}`, - '--verbose', - '--tags', - `production,backend,${executionId}`, - '--tags', - `production,frontend,${executionId}`, - ], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) + const { stdout } = await runCheckly(fixt, [ + 'trigger', + '-e', + `SECRET_ENV=${secretEnv}`, + '--verbose', + '--tags', + `production,backend,${executionId}`, + '--tags', + `production,frontend,${executionId}`, + ]) - expect(result.stdout).toContain(secretEnv) - expect(result.stdout).toContain('Prod Backend Check') - expect(result.stdout).toContain('Prod Frontend Check') - expect(result.stdout).not.toContain('Staging Backend Check') - expect(result.status).toBe(0) + expect(stdout).toContain(secretEnv) + expect(stdout).toContain('Prod Backend Check') + expect(stdout).toContain('Prod Frontend Check') + expect(stdout).not.toContain('Staging Backend Check') }, 45_000) test('Should return code 1 when no checks match', async () => { - const result = await runChecklyCli({ - args: [ + try { + await runCheckly(fixt, [ 'trigger', '--tags', 'no-checks-match-this-tag', - ], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - - expect(result.stdout).toContain('No matching checks were found.') - expect(result.status).toBe(1) + ]) + expect.unreachable('Expected command to fail') + } catch (err) { + if (err instanceof ExecaError) { + expect(err.stdout).toContain('No matching checks were found.') + expect(err.exitCode).toBe(1) + } else { + throw err + } + } }) test('Should return code 1 when no checks match and the fail-on-no-matching flag is set', async () => { - const result = await runChecklyCli({ - args: [ + try { + await runCheckly(fixt, [ 'trigger', '--tags', 'no-checks-match-this-tag', '--fail-on-no-matching', - ], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) - - expect(result.stdout).toContain('No matching checks were found.') - expect(result.status).toBe(1) + ]) + expect.unreachable('Expected command to fail') + } catch (err) { + if (err instanceof ExecaError) { + expect(err.stdout).toContain('No matching checks were found.') + expect(err.exitCode).toBe(1) + } else { + throw err + } + } }) test('Should return code 0 when no checks match and the no-fail-on-no-matching flag is set', async () => { - const result = await runChecklyCli({ - args: [ - 'trigger', - '--tags', - 'no-checks-match-this-tag', - '--no-fail-on-no-matching', - ], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) + const { stdout } = await runCheckly(fixt, [ + 'trigger', + '--tags', + 'no-checks-match-this-tag', + '--no-fail-on-no-matching', + ]) - expect(result.stdout).toContain('No matching checks were found.') - expect(result.status).toBe(0) + expect(stdout).toContain('No matching checks were found.') }) }) diff --git a/packages/cli/e2e/__tests__/validate.spec.ts b/packages/cli/e2e/__tests__/validate.spec.ts index ceecf7e0e..63e01d75a 100644 --- a/packages/cli/e2e/__tests__/validate.spec.ts +++ b/packages/cli/e2e/__tests__/validate.spec.ts @@ -1,25 +1,26 @@ -/* eslint-disable no-console */ import path from 'node:path' -import config from 'config' -import { describe, it, expect } from 'vitest' +import { describe, it, beforeAll, afterAll } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { runCheckly } from '../run-checkly' describe('validate', () => { describe('config', () => { - it('should let allowed constructs to be used in config file', async () => { - const result = await runChecklyCli({ - args: ['validate'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - directory: path.join(__dirname, 'fixtures', 'allowed-config-file-constructs'), + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({ + source: path.join(__dirname, 'fixtures', 'allowed-config-file-constructs'), }) - if (result.status != 0) { - console.error('stderr=', result.stderr) - console.error('stdout=', result.stdout) - } - expect(result.status).toBe(0) + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() + }) + + it('should let allowed constructs to be used in config file', async () => { + await runCheckly(fixt, ['validate']) }) }) }) diff --git a/packages/cli/e2e/__tests__/whoami.spec.ts b/packages/cli/e2e/__tests__/whoami.spec.ts index 9ba2da4c4..9bf8ec270 100644 --- a/packages/cli/e2e/__tests__/whoami.spec.ts +++ b/packages/cli/e2e/__tests__/whoami.spec.ts @@ -1,15 +1,22 @@ import config from 'config' -import { describe, it, expect } from 'vitest' +import { describe, it, expect, beforeAll, afterAll } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { runCheckly } from '../run-checkly' describe('whomai', () => { + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({}) + }, 180_000) + + afterAll(async () => { + await fixt?.destroy() + }) + it('should give correct user', async () => { - const { stdout } = await runChecklyCli({ - args: ['whoami'], - apiKey: config.get('apiKey'), - accountId: config.get('accountId'), - }) + const { stdout } = await runCheckly(fixt, ['whoami']) expect(stdout).toContain(config.get('accountName')) expect(stdout).toContain('Plan:') }) diff --git a/packages/cli/e2e/run-checkly.ts b/packages/cli/e2e/run-checkly.ts index c5686f42b..fe5ce2966 100644 --- a/packages/cli/e2e/run-checkly.ts +++ b/packages/cli/e2e/run-checkly.ts @@ -1,77 +1,57 @@ -import * as path from 'path' -import * as childProcess from 'node:child_process' -import type { Account } from '../src/rest/accounts' +import config from 'config' -const CHECKLY_PATH = path.resolve(path.dirname(__filename), '..', 'bin', 'run') +import type { FixtureSandbox, RunOptions } from '../src/testing/fixture-sandbox.js' +import type { Account } from '../src/rest/accounts.js' -export function runChecklyCli (options: { - directory?: string - args?: string[] +export function checklyEnv (overrides?: { apiKey?: string accountId?: string - env?: object cliVersion?: string promptsInjection?: (string | boolean | Account)[] - timeout?: number -}) { + env?: Record +}): Record { const { - directory, - args = [], - apiKey, - accountId, - env = {}, - cliVersion, + apiKey = config.get('apiKey'), + accountId = config.get('accountId'), + cliVersion = '4.8.0', promptsInjection = [], - timeout = 30000, - } = options - return new Promise<{ status: number | null, stdout: string, stderr: string }>(resolve => { - let stdout = '' - let stderr = '' - const child = childProcess.spawn(CHECKLY_PATH, args, { - env: { - PATH: process.env.PATH, - CHECKLY_API_KEY: apiKey, - CHECKLY_ACCOUNT_ID: accountId, - CHECKLY_ENV: process.env.CHECKLY_ENV, - // We need the CLI to report 4.8.0 or greater in order for the backend to use the new MQTT topic format. - // Once 4.8.0 has been released, we can remove the 4.8.0 fallback here. - CHECKLY_CLI_VERSION: cliVersion ?? '4.8.0', - CHECKLY_E2E_PROMPTS_INJECTIONS: promptsInjection?.length ? JSON.stringify(promptsInjection) : undefined, - CHECKLY_E2E_DISABLE_FANCY_OUTPUT: '1', - ...env, - }, - cwd: directory ?? process.cwd(), - shell: process.platform === 'win32', - }) - const processTimeout = setTimeout(() => { - // workaround to kill child process on win32 - if (process.platform === 'win32' && child.pid) { - childProcess.spawnSync('taskkill', ['/pid', child.pid.toString(), '/f', '/t']) - } - child.kill() - }, timeout) + env = {}, + } = overrides ?? {} - child.stdout.setEncoding('utf8') - child.stderr.setEncoding('utf8') + return { + // Force interactive mode so CI env vars (GITHUB_ACTIONS, CI, etc.) + // don't make the CLI switch to JSON confirmation output. + PATH: process.env.PATH, + CHECKLY_CLI_MODE: 'interactive', + CHECKLY_API_KEY: apiKey, + CHECKLY_ACCOUNT_ID: accountId, + CHECKLY_ENV: process.env.CHECKLY_ENV, + CHECKLY_CLI_VERSION: cliVersion, + CHECKLY_E2E_PROMPTS_INJECTIONS: promptsInjection?.length ? JSON.stringify(promptsInjection) : undefined, + CHECKLY_E2E_DISABLE_FANCY_OUTPUT: '1', + ...env, + } +} - child.stdout.on('data', data => { - stdout += data - }) - child.stderr.on('data', data => { - stderr += data - }) +export function runCheckly ( + fixt: FixtureSandbox, + args: string[], + options?: RunOptions & { + apiKey?: string + accountId?: string + cliVersion?: string + promptsInjection?: (string | boolean | Account)[] + }, +) { + const { apiKey, accountId, cliVersion, promptsInjection, ...runOptions } = options ?? {} - child.on('close', code => { - clearTimeout(processTimeout) - resolve({ status: code, stdout, stderr }) - }) - child.on('exit', code => { - clearTimeout(processTimeout) - resolve({ status: code, stdout, stderr }) - }) - child.on('error', () => { - clearTimeout(processTimeout) - resolve({ status: null, stdout, stderr }) - }) + return fixt.run('pnpm', ['checkly', ...args], { + timeout: 30_000, + extendEnv: false, + ...runOptions, + env: { + ...checklyEnv({ apiKey, accountId, cliVersion, promptsInjection }), + ...runOptions.env, + }, }) } diff --git a/packages/cli/package.json b/packages/cli/package.json index 5ba086001..3c9ce1708 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -17,14 +17,14 @@ "scripts": { "clean:dist": "rimraf ./dist ./tsconfig.tsbuildinfo", "clean:gen": "rimraf ./gen", - "clean": "npm run clean:dist && npm run clean:gen", - "prepack": "npx oclif manifest", + "clean": "pnpm run clean:dist && pnpm run clean:gen", + "prepack": "pnpm exec oclif manifest", "prepare:ai-context": "cross-env CHECKLY_SKIP_AUTH=1 CHECKLY_CLI_VERSION=99.0.0 ./bin/run import plan --root gen --debug-import-plan-input-file ./src/ai-context/context.fixtures.json && jiti ./scripts/prepare-ai-context.ts", "prepare:dist": "tsc --build", - "prepare": "npm run clean && npm run prepare:dist && npm run prepare:ai-context", - "test": "npm pack && vitest --run", - "test:e2e": "npm pack && cross-env NODE_CONFIG_DIR=./e2e/config vitest --run -c ./vitest.config.e2e.mts", - "test:e2e:local": "cross-env CHECKLY_BASE_URL=http://localhost:3000 CHECKLY_ENV=local npm run test:e2e", + "prepare": "pnpm run clean && pnpm run prepare:dist && pnpm run prepare:ai-context", + "test": "pnpm pack && vitest --run", + "test:e2e": "pnpm pack && cross-env NODE_CONFIG_DIR=./e2e/config vitest --run -c ./vitest.config.e2e.mts", + "test:e2e:local": "cross-env CHECKLY_BASE_URL=http://localhost:3000 CHECKLY_ENV=local pnpm run test:e2e", "watch": "tsc --watch" }, "repository": { @@ -90,7 +90,7 @@ "description": "List and manage status pages in your Checkly account." } }, - "helpClass": "./dist/help/help-extension" + "helpClass": "./dist/help/help-extension.js" }, "bin": { "checkly": "./bin/run" @@ -104,6 +104,7 @@ "acorn": "^8.16.0", "acorn-walk": "^8.3.5", "archiver": "7.0.1", + "ast-types": "^0.16.1", "axios": "^1.16.0", "chalk": "^5.6.2", "ci-info": "^4.4.0", @@ -128,6 +129,7 @@ "proxy-from-env": "^2.1.0", "recast": "^0.23.11", "semver": "^7.7.3", + "string-width": "^7.2.0", "tunnel": "^0.0.6", "uuid": "^14.0.0" }, diff --git a/packages/cli/src/constructs/__tests__/agentic-check.spec.ts b/packages/cli/src/constructs/__tests__/agentic-check.spec.ts index 44ac6b294..dbb2a9b6a 100644 --- a/packages/cli/src/constructs/__tests__/agentic-check.spec.ts +++ b/packages/cli/src/constructs/__tests__/agentic-check.spec.ts @@ -6,7 +6,7 @@ import { FixtureSandbox } from '../../testing/fixture-sandbox.js' import { ParseProjectOutput } from '../../commands/debug/parse-project.js' async function parseProject (fixt: FixtureSandbox, ...args: string[]): Promise { - const result = await fixt.run('npx', [ + const result = await fixt.run('pnpm', [ 'checkly', 'debug', 'parse-project', diff --git a/packages/cli/src/constructs/__tests__/api-check.spec.ts b/packages/cli/src/constructs/__tests__/api-check.spec.ts index f1281c33a..145eab535 100644 --- a/packages/cli/src/constructs/__tests__/api-check.spec.ts +++ b/packages/cli/src/constructs/__tests__/api-check.spec.ts @@ -7,7 +7,7 @@ import { FixtureSandbox } from '../../testing/fixture-sandbox.js' import { ParseProjectOutput } from '../../commands/debug/parse-project.js' async function parseProject (fixt: FixtureSandbox, ...args: string[]): Promise { - const result = await fixt.run('npx', [ + const result = await fixt.run('pnpm', [ 'checkly', 'debug', 'parse-project', diff --git a/packages/cli/src/constructs/__tests__/browser-check.spec.ts b/packages/cli/src/constructs/__tests__/browser-check.spec.ts index 79768c10f..a2b1870c9 100644 --- a/packages/cli/src/constructs/__tests__/browser-check.spec.ts +++ b/packages/cli/src/constructs/__tests__/browser-check.spec.ts @@ -7,7 +7,7 @@ import { FixtureSandbox } from '../../testing/fixture-sandbox.js' import { ParseProjectOutput } from '../../commands/debug/parse-project.js' async function parseProject (fixt: FixtureSandbox, ...args: string[]): Promise { - const result = await fixt.run('npx', [ + const result = await fixt.run('pnpm', [ 'checkly', 'debug', 'parse-project', diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling/pnpm-lock.yaml new file mode 100644 index 000000000..9c3c4c244 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-doubleCheck-default-ignored/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-doubleCheck-default-ignored/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-doubleCheck-default-ignored/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-doubleCheck-not-allowed/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-doubleCheck-not-allowed/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-doubleCheck-not-allowed/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-with-projects/package-lock.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-with-projects/package-lock.json deleted file mode 100644 index 4cf74f96c..000000000 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-with-projects/package-lock.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "name": "playwright-check-fixture", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "playwright-check-fixture", - "devDependencies": { - "@playwright/test": "^1.55.1" - } - }, - "node_modules/@playwright/test": { - "version": "1.59.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.59.1.tgz", - "integrity": "sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright": "1.59.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/playwright": { - "version": "1.59.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.59.1.tgz", - "integrity": "sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright-core": "1.59.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.59.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.1.tgz", - "integrity": "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=18" - } - } - } -} diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-with-projects/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-with-projects/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-with-projects/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-without-projects/package-lock.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-without-projects/package-lock.json deleted file mode 100644 index 4cf74f96c..000000000 --- a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-without-projects/package-lock.json +++ /dev/null @@ -1,76 +0,0 @@ -{ - "name": "playwright-check-fixture", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "playwright-check-fixture", - "devDependencies": { - "@playwright/test": "^1.55.1" - } - }, - "node_modules/@playwright/test": { - "version": "1.59.1", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.59.1.tgz", - "integrity": "sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright": "1.59.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - } - }, - "node_modules/fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/playwright": { - "version": "1.59.1", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.59.1.tgz", - "integrity": "sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==", - "dev": true, - "license": "Apache-2.0", - "dependencies": { - "playwright-core": "1.59.1" - }, - "bin": { - "playwright": "cli.js" - }, - "engines": { - "node": ">=18" - }, - "optionalDependencies": { - "fsevents": "2.3.2" - } - }, - "node_modules/playwright-core": { - "version": "1.59.1", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.59.1.tgz", - "integrity": "sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==", - "dev": true, - "license": "Apache-2.0", - "bin": { - "playwright-core": "cli.js" - }, - "engines": { - "node": ">=18" - } - } - } -} diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-without-projects/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-without-projects/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-global-files-bundling-without-projects/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-group-mapping/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-group-mapping/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-group-mapping/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupId-mapping/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupId-mapping/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupId-mapping/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-mapping/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-mapping/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-mapping/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-not-found/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-not-found/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-not-found/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-with-group-conflict/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-with-group-conflict/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-with-group-conflict/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-with-groupId-conflict/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-with-groupId-conflict/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-groupName-with-groupId-conflict/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-false-in-project-not-allowed/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-false-in-project-not-allowed/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-false-in-project-not-allowed/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-false-not-allowed/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-false-not-allowed/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-false-not-allowed/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-true-allowed/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-true-allowed/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-true-allowed/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-unset-allowed/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-unset-allowed/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-headless-unset-allowed/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-installCommand-allowed/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-installCommand-allowed/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-installCommand-allowed/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-installCommand-unnecessary-playwright-install-warn/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-installCommand-unnecessary-playwright-install-warn/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-installCommand-unnecessary-playwright-install-warn/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-retryStrategy-default-ignored/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-retryStrategy-default-ignored/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-retryStrategy-default-ignored/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-retryStrategy-not-allowed/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-retryStrategy-not-allowed/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-retryStrategy-not-allowed/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-testCommand-allowed/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-testCommand-allowed/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-testCommand-allowed/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-testCommand-unnecessary-playwright-install-warn/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-testCommand-unnecessary-playwright-install-warn/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-testCommand-unnecessary-playwright-install-warn/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-webServer/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-webServer/pnpm-lock.yaml new file mode 100644 index 000000000..b96b50134 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-webServer/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/playwright-check.spec.ts b/packages/cli/src/constructs/__tests__/playwright-check.spec.ts index ef96a40f6..adc112f3f 100644 --- a/packages/cli/src/constructs/__tests__/playwright-check.spec.ts +++ b/packages/cli/src/constructs/__tests__/playwright-check.spec.ts @@ -7,7 +7,7 @@ import { FixtureSandbox } from '../../testing/fixture-sandbox.js' import { ParseProjectOutput } from '../../commands/debug/parse-project.js' async function parseProject (fixt: FixtureSandbox, ...args: string[]): Promise { - const result = await fixt.run('npx', [ + const result = await fixt.run('pnpm', [ 'checkly', 'debug', 'parse-project', @@ -42,6 +42,7 @@ const DEFAULT_TEST_TIMEOUT = 180_000 describe('PlaywrightCheck', () => { it('should synthesize groupName', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-groupName-mapping'), }) @@ -82,6 +83,7 @@ describe('PlaywrightCheck', () => { it('should synthesize group', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-group-mapping'), }) @@ -119,6 +121,7 @@ describe('PlaywrightCheck', () => { it('should synthesize groupId', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-groupId-mapping'), }) @@ -157,6 +160,7 @@ describe('PlaywrightCheck', () => { describe('validation', () => { it('should warn that groupName is deprecated', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-groupName-mapping'), }) @@ -181,6 +185,7 @@ describe('PlaywrightCheck', () => { it('should error if groupName is not found', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-groupName-not-found'), }) @@ -205,6 +210,7 @@ describe('PlaywrightCheck', () => { it('should error if both group and groupName are set', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-groupName-with-group-conflict'), }) @@ -229,6 +235,7 @@ describe('PlaywrightCheck', () => { it('should error if both groupId and groupName are set', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-groupName-with-groupId-conflict'), }) @@ -253,6 +260,7 @@ describe('PlaywrightCheck', () => { it('should error if retryStrategy is set', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-retryStrategy-not-allowed'), }) @@ -277,6 +285,7 @@ describe('PlaywrightCheck', () => { it('should error if doubleCheck is set', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-doubleCheck-not-allowed'), }) @@ -303,6 +312,7 @@ describe('PlaywrightCheck', () => { let fixt: FixtureSandbox beforeAll(async () => { fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-global-files-bundling-with-projects'), }) }, DEFAULT_TEST_TIMEOUT) @@ -341,9 +351,9 @@ describe('PlaywrightCheck', () => { expect(files.sort()).toEqual([ 'lib/setup-util.ts', 'lib/teardown-util.ts', - 'package-lock.json', 'package.json', 'playwright.config.ts', + 'pnpm-lock.yaml', 'setup.ts', 'teardown.ts', 'tsconfig.playwright.json', @@ -355,6 +365,7 @@ describe('PlaywrightCheck', () => { let fixt: FixtureSandbox beforeAll(async () => { fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-global-files-bundling-without-projects'), }) }, DEFAULT_TEST_TIMEOUT) @@ -393,9 +404,9 @@ describe('PlaywrightCheck', () => { expect(files.sort()).toEqual([ 'lib/setup-util.ts', 'lib/teardown-util.ts', - 'package-lock.json', 'package.json', 'playwright.config.ts', + 'pnpm-lock.yaml', 'setup.ts', 'teardown.ts', 'tsconfig.playwright.json', @@ -406,6 +417,7 @@ describe('PlaywrightCheck', () => { describe('headless', () => { it('should error if headless: false is set globally', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-headless-false-not-allowed'), }) @@ -430,6 +442,7 @@ describe('PlaywrightCheck', () => { it('should error if headless: false is set in a project', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-headless-false-in-project-not-allowed'), }) @@ -457,6 +470,7 @@ describe('PlaywrightCheck', () => { it('should not error if headless: true is set', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-headless-true-allowed'), }) @@ -481,6 +495,7 @@ describe('PlaywrightCheck', () => { it('should not error if headless is not set', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-headless-unset-allowed'), }) @@ -507,6 +522,7 @@ describe('PlaywrightCheck', () => { describe('webServer', () => { it('should warn if webServer is configured in playwright config when running pw-test', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-webServer'), }) @@ -535,6 +551,7 @@ describe('PlaywrightCheck', () => { it('should not warn about webServer when not running pw-test command', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-webServer'), }) @@ -561,6 +578,7 @@ describe('PlaywrightCheck', () => { it('should not warn about webServer when --include flag is provided', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-webServer'), }) @@ -591,6 +609,7 @@ describe('PlaywrightCheck', () => { describe('installCommand', () => { it('should warn when installCommand contains playwright install', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-installCommand-unnecessary-playwright-install-warn'), }) @@ -616,6 +635,7 @@ describe('PlaywrightCheck', () => { it('should not warn when installCommand does not contain playwright install', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-installCommand-allowed'), }) @@ -643,6 +663,7 @@ describe('PlaywrightCheck', () => { describe('testCommand', () => { it('should warn when testCommand contains playwright install', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-testCommand-unnecessary-playwright-install-warn'), }) @@ -668,6 +689,7 @@ describe('PlaywrightCheck', () => { it('should not warn when testCommand does not playwright install', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-testCommand-allowed'), }) @@ -696,6 +718,7 @@ describe('PlaywrightCheck', () => { describe('defaults', () => { it('should ignore retryStrategy from session check defaults', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-retryStrategy-default-ignored'), }) @@ -726,6 +749,7 @@ describe('PlaywrightCheck', () => { it('should ignore doubleCheck from session check defaults', async () => { const fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-doubleCheck-default-ignored'), }) @@ -800,9 +824,9 @@ describe('PlaywrightCheck', () => { const files = await listTarFiles(codeBundlePath) expect(files.sort()).toEqual([ - 'package-lock.json', 'package.json', 'playwright.config.ts', + 'pnpm-lock.yaml', 'tests/example.spec.ts', ]) }, DEFAULT_TEST_TIMEOUT) @@ -840,9 +864,9 @@ describe('PlaywrightCheck', () => { expect(files.sort()).toEqual([ 'fixtures/mock-data.json', - 'package-lock.json', 'package.json', 'playwright.config.ts', + 'pnpm-lock.yaml', 'tests/example.spec.ts', ]) }, DEFAULT_TEST_TIMEOUT) @@ -880,9 +904,9 @@ describe('PlaywrightCheck', () => { expect(files.sort()).toEqual(expect.arrayContaining([ 'node_modules/checkly/package.json', - 'package-lock.json', 'package.json', 'playwright.config.ts', + 'pnpm-lock.yaml', 'tests/example.spec.ts', ])) }, DEFAULT_TEST_TIMEOUT) @@ -919,9 +943,9 @@ describe('PlaywrightCheck', () => { const files = await listTarFiles(codeBundlePath) expect(files.sort()).toEqual([ - 'package-lock.json', 'package.json', 'playwright.config.ts', + 'pnpm-lock.yaml', 'tests/example.spec.ts', ]) }, DEFAULT_TEST_TIMEOUT) @@ -958,9 +982,9 @@ describe('PlaywrightCheck', () => { const files = await listTarFiles(codeBundlePath) expect(files.sort()).toEqual([ - 'package-lock.json', 'package.json', 'playwright.config.ts', + 'pnpm-lock.yaml', 'tests/example.spec.ts', ]) }, DEFAULT_TEST_TIMEOUT) diff --git a/packages/cli/src/reporters/__tests__/__snapshots__/util.spec.ts.snap b/packages/cli/src/reporters/__tests__/__snapshots__/util.spec.ts.snap index c6a412171..ac84bcfaf 100644 --- a/packages/cli/src/reporters/__tests__/__snapshots__/util.spec.ts.snap +++ b/packages/cli/src/reporters/__tests__/__snapshots__/util.spec.ts.snap @@ -246,8 +246,3 @@ exports[`formatCheckResult() > Browser Check result > formats a Browser Check re `; exports[`formatCheckResult() > Browser Check result > formats a basic Browser Check result > browser-check-result-basic-format 1`] = `""`; - - - - - diff --git a/packages/cli/src/services/__tests__/project-parser-fixtures/empty-env-project/pnpm-lock.yaml b/packages/cli/src/services/__tests__/project-parser-fixtures/empty-env-project/pnpm-lock.yaml new file mode 100644 index 000000000..9b60ae178 --- /dev/null +++ b/packages/cli/src/services/__tests__/project-parser-fixtures/empty-env-project/pnpm-lock.yaml @@ -0,0 +1,9 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: {} diff --git a/packages/cli/src/services/__tests__/project-parser-fixtures/empty-script-project/pnpm-lock.yaml b/packages/cli/src/services/__tests__/project-parser-fixtures/empty-script-project/pnpm-lock.yaml new file mode 100644 index 000000000..9b60ae178 --- /dev/null +++ b/packages/cli/src/services/__tests__/project-parser-fixtures/empty-script-project/pnpm-lock.yaml @@ -0,0 +1,9 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: {} diff --git a/packages/cli/src/services/__tests__/project-parser-fixtures/multiple-glob-patterns-project/pnpm-lock.yaml b/packages/cli/src/services/__tests__/project-parser-fixtures/multiple-glob-patterns-project/pnpm-lock.yaml new file mode 100644 index 000000000..9b60ae178 --- /dev/null +++ b/packages/cli/src/services/__tests__/project-parser-fixtures/multiple-glob-patterns-project/pnpm-lock.yaml @@ -0,0 +1,9 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: {} diff --git a/packages/cli/src/services/__tests__/project-parser-fixtures/multistep-browser-glob-patterns/pnpm-lock.yaml b/packages/cli/src/services/__tests__/project-parser-fixtures/multistep-browser-glob-patterns/pnpm-lock.yaml new file mode 100644 index 000000000..9b60ae178 --- /dev/null +++ b/packages/cli/src/services/__tests__/project-parser-fixtures/multistep-browser-glob-patterns/pnpm-lock.yaml @@ -0,0 +1,9 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: {} diff --git a/packages/cli/src/services/__tests__/project-parser-fixtures/simple-project-with-pl/pnpm-lock.yaml b/packages/cli/src/services/__tests__/project-parser-fixtures/simple-project-with-pl/pnpm-lock.yaml new file mode 100644 index 000000000..9b60ae178 --- /dev/null +++ b/packages/cli/src/services/__tests__/project-parser-fixtures/simple-project-with-pl/pnpm-lock.yaml @@ -0,0 +1,9 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: {} diff --git a/packages/cli/src/services/__tests__/project-parser-fixtures/simple-project/pnpm-lock.yaml b/packages/cli/src/services/__tests__/project-parser-fixtures/simple-project/pnpm-lock.yaml new file mode 100644 index 000000000..9b60ae178 --- /dev/null +++ b/packages/cli/src/services/__tests__/project-parser-fixtures/simple-project/pnpm-lock.yaml @@ -0,0 +1,9 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: {} diff --git a/packages/cli/src/services/__tests__/project-parser-fixtures/typescript-project/package-lock.json b/packages/cli/src/services/__tests__/project-parser-fixtures/typescript-project/package-lock.json deleted file mode 100644 index 1928e5e52..000000000 --- a/packages/cli/src/services/__tests__/project-parser-fixtures/typescript-project/package-lock.json +++ /dev/null @@ -1,14 +0,0 @@ -{ - "name": "typescript-project", - "version": "1.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "typescript-project", - "version": "1.0.0", - "license": "ISC", - "devDependencies": {} - } - } -} diff --git a/packages/cli/src/services/__tests__/project-parser-fixtures/typescript-project/pnpm-lock.yaml b/packages/cli/src/services/__tests__/project-parser-fixtures/typescript-project/pnpm-lock.yaml new file mode 100644 index 000000000..9b60ae178 --- /dev/null +++ b/packages/cli/src/services/__tests__/project-parser-fixtures/typescript-project/pnpm-lock.yaml @@ -0,0 +1,9 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: {} diff --git a/packages/cli/src/services/__tests__/project-parser.spec.ts b/packages/cli/src/services/__tests__/project-parser.spec.ts index 295640aed..bea551585 100644 --- a/packages/cli/src/services/__tests__/project-parser.spec.ts +++ b/packages/cli/src/services/__tests__/project-parser.spec.ts @@ -7,7 +7,7 @@ import { FixtureSandbox } from '../../testing/fixture-sandbox.js' import { ParseProjectOutput } from '../../commands/debug/parse-project.js' async function parseProject (fixt: FixtureSandbox, ...args: string[]): Promise { - const result = await fixt.run('npx', [ + const result = await fixt.run('pnpm', [ 'checkly', 'debug', 'parse-project', diff --git a/packages/cli/src/services/check-parser/__tests__/check-parser.spec.ts b/packages/cli/src/services/check-parser/__tests__/check-parser.spec.ts index 88ab89929..164470c1d 100644 --- a/packages/cli/src/services/check-parser/__tests__/check-parser.spec.ts +++ b/packages/cli/src/services/check-parser/__tests__/check-parser.spec.ts @@ -23,7 +23,6 @@ describe('dependency-parser - parser()', () => { // therefore do not import anything. fixt = await FixtureSandbox.create({ source: path.join(__dirname, 'check-parser-fixtures'), - installPackages: false, }) }, 180_000) diff --git a/packages/cli/src/services/check-parser/__tests__/parse-files.spec.ts b/packages/cli/src/services/check-parser/__tests__/parse-files.spec.ts index 2f1e91cae..f9218afb1 100644 --- a/packages/cli/src/services/check-parser/__tests__/parse-files.spec.ts +++ b/packages/cli/src/services/check-parser/__tests__/parse-files.spec.ts @@ -12,6 +12,7 @@ describe('project parser - getFilesAndDependencies()', { timeout: 45_000 }, () = beforeAll(async () => { fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'check-parser-fixtures', 'playwright-project'), }) }, 180_000) @@ -21,7 +22,7 @@ describe('project parser - getFilesAndDependencies()', { timeout: 45_000 }, () = }) test('should handle spec file', async () => { - const result = await fixt.run('npx', [ + const result = await fixt.run('pnpm', [ 'checkly', 'debug', 'parse-playwright-config', @@ -58,6 +59,7 @@ describe('project parser - getFilesAndDependencies()', { timeout: 45_000 }, () = beforeAll(async () => { fixt = await FixtureSandbox.create({ + template: 'playwright', source: path.join(__dirname, 'check-parser-fixtures', 'playwright-project-snapshots'), }) }, 180_000) @@ -67,7 +69,7 @@ describe('project parser - getFilesAndDependencies()', { timeout: 45_000 }, () = }) test('should handle a spec file with snapshots', async () => { - const result = await fixt.run('npx', [ + const result = await fixt.run('pnpm', [ 'checkly', 'debug', 'parse-playwright-config', diff --git a/packages/cli/src/testing/fixture-sandbox.ts b/packages/cli/src/testing/fixture-sandbox.ts index a9b4f3b3c..262c29fe3 100644 --- a/packages/cli/src/testing/fixture-sandbox.ts +++ b/packages/cli/src/testing/fixture-sandbox.ts @@ -1,54 +1,99 @@ import path from 'node:path' import fs from 'node:fs/promises' import { tmpdir } from 'node:os' -import { fileURLToPath } from 'node:url' import Debug from 'debug' import { execa } from 'execa' +import { fileURLToPath } from 'node:url' + +import { detectPackageManager, PackageManager } from '../services/check-parser/package-files/package-manager.js' + const __dirname = path.dirname(fileURLToPath(import.meta.url)) +const CLI_PACKAGE_ROOT = path.resolve(__dirname, '..', '..') const debug = Debug('checkly:cli:testing:fixture-sandbox') -import { detectNearestLockfile, detectNearestPackageJson, detectPackageManager, PackageManager } from '../services/check-parser/package-files/package-manager.js' +function templateEnvKey (key: string): string { + return `CHECKLY_FIXTURE_TEMPLATE_${key.toUpperCase()}` +} + +export class FixtureTemplate { + static #cache = new Map() + + readonly root: string + + private constructor (root: string) { + this.root = root + } + + static async create (key: string, pkg: { + dependencies?: Record + devDependencies?: Record + }): Promise { + const cached = FixtureTemplate.#cache.get(key) + if (cached) { + return cached + } + + const root = await fs.realpath(await fs.mkdtemp(path.join(tmpdir(), `fixture-template-${key}-`))) + + debug(`Creating fixture template '${key}' at ${root}`) + + const tgzPath = path.join(CLI_PACKAGE_ROOT, 'checkly-0.0.1-dev.tgz') + await fs.access(tgzPath) + + await fs.writeFile(path.join(root, 'package.json'), JSON.stringify({ + name: `fixture-template-${key}`, + private: true, + dependencies: pkg.dependencies, + devDependencies: { + ...pkg.devDependencies, + checkly: `file:${tgzPath}`, + }, + }, null, 2) + '\n') + + await execa('pnpm', ['install', '--ignore-workspace'], { cwd: root }) + + debug(`Fixture template '${key}' ready`) + + process.env[templateEnvKey(key)] = root + + const template = new FixtureTemplate(root) + FixtureTemplate.#cache.set(key, template) + return template + } + + static use (key: string): FixtureTemplate { + const cached = FixtureTemplate.#cache.get(key) + if (cached) { + return cached + } + + const root = process.env[templateEnvKey(key)] + if (!root) { + throw new Error(`FixtureTemplate '${key}' not found. Create it in globalSetup first.`) + } + + const template = new FixtureTemplate(root) + FixtureTemplate.#cache.set(key, template) + return template + } + + static async destroyAll (): Promise { + for (const [key, template] of FixtureTemplate.#cache) { + debug(`Destroying fixture template '${key}'`) + await fs.rm(template.root, { recursive: true, force: true }) + } + FixtureTemplate.#cache.clear() + } +} export interface CreateFixtureSandboxOptions { - /** - * The fixture source directory. - */ - source: string - - /** - * The full, absolute path to the sandbox directory. The path will be - * created if it does not exist. - * - * When the sandbox is destroyed, the path is deleted. - * - * If not provided, a temporary directory is created automatically. - */ + source?: string root?: string - - /** - * The package manager used to manage the fixture. - * - * If not provided, the package manager is detected automatically. - */ packageManager?: PackageManager - - /** - * Whether to install packages using the package manager. - * - * @default true - */ - installPackages?: boolean - - /** - * If true, installs the packed containing package into the sandbox. Done - * only if packages are also installed. - * - * @default true - */ - injectPackedSelf?: boolean + template?: string } interface FixtureSandboxOptions { @@ -78,125 +123,73 @@ export class FixtureSandbox { source, root: maybeRoot, packageManager: maybePackageManager, - installPackages = true, - injectPackedSelf = true, + template = 'bare', } = options const root = maybeRoot ? await fs.mkdir(maybeRoot, { recursive: true }).then(() => maybeRoot) - // tmpdir() on macOS usually returns a path starting with /var which is - // a symlink. Resolve the path so that we don't run into path mismatch - // issues. : await fs.realpath(await fs.mkdtemp(path.join(tmpdir(), 'fixture-sandbox-'))) debug(`Using root ${root}`) - debug(`Copying sources from ${source}`) - - await fs.cp(source, root, { - recursive: true, - }) + if (source) { + debug(`Copying sources from ${source}`) + await fs.cp(source, root, { recursive: true }) + } else { + await fs.writeFile(path.join(root, 'package.json'), '{"private":true}\n') + } const packageManager = maybePackageManager ?? await detectPackageManager(root) debug(`Detected package manager ${packageManager.name}`) - if (installPackages) { - const { executable, args, unsafeDisplayCommand } = packageManager.installCommand() + if (template) { + const resolvedTemplate = FixtureTemplate.use(template) + debug(`Using fixture template '${template}' from ${resolvedTemplate.root}`) - debug(`Installing packages via ${unsafeDisplayCommand}`) - - await execa(executable, args, { - cwd: root, - }) - } - - if (installPackages && injectPackedSelf) { - debug('Injecting containing package') - - const { lockfile } = await detectNearestLockfile(root, { - detectors: [packageManager.detector()], - root, - }) - - // Take a backup of the original package.json so that we can restore - // it later. - await fs.cp( - path.join(root, 'package.json'), - path.join(root, 'package.json.backup'), + await fs.symlink( + path.join(resolvedTemplate.root, 'node_modules'), + path.join(root, 'node_modules'), + 'dir', ) - // Same for the lockfile. - await fs.cp(lockfile, `${lockfile}.backup`) - - const packageJson = await detectNearestPackageJson(__dirname) - - const sourcePath = path.join( - packageJson.basePath, - `${packageJson.name}-${packageJson.version}.tgz`, - ) - - // Make sure the archive exists. - await fs.access(sourcePath, fs.constants.R_OK) - - const { executable, args } = packageManager.installCommand() - - await execa(executable, [...args, '--save-dev', `file:${sourcePath}`], { - cwd: root, - }) - - // Restore original package.json. - await fs.rename( - path.join(root, 'package.json.backup'), - path.join(root, 'package.json'), - ) - - // Restore original lockfile. - await fs.rename(`${lockfile}.backup`, lockfile) + // Copy lockfile from template if the fixture doesn't have one + const hasLockfile = await fs.access(path.join(root, 'pnpm-lock.yaml')).then(() => true, () => false) + if (!hasLockfile) { + await fs.copyFile( + path.join(resolvedTemplate.root, 'pnpm-lock.yaml'), + path.join(root, 'pnpm-lock.yaml'), + ) + } } - return new FixtureSandbox({ - root, - packageManager, - }) + return new FixtureSandbox({ root, packageManager }) } async destroy (): Promise { debug(`Destroying root ${this.#root}`) - await fs.rm(this.#root, { - recursive: true, - force: true, - }) + await fs.rm(this.#root, { recursive: true, force: true }) } async run (executable: string, args: string[], options?: RunOptions) { - return await run(executable, args, { + const result = await execa(executable, args, { cwd: this.#root, ...options, }) + return result } abspath (...to: string[]): string { - // Split segments by / so that we can define paths in posix style and - // still expect the results to work on Windows. return path.join(this.#root, ...to.flatMap(segment => segment.split('/'))) } } -async function run (executable: string, args: string[], options?: RunOptions) { - const { execa } = await import('execa') - - const result = await execa(executable, args, { - ...options, - }) - - return result -} - export interface RunOptions { env?: Record + extendEnv?: boolean + forceKillAfterDelay?: number | false timeout?: number cwd?: string } diff --git a/packages/cli/src/testing/global-setup.ts b/packages/cli/src/testing/global-setup.ts new file mode 100644 index 000000000..de8b7fcf2 --- /dev/null +++ b/packages/cli/src/testing/global-setup.ts @@ -0,0 +1,15 @@ +import { FixtureTemplate } from './fixture-sandbox.js' + +export async function setup () { + await FixtureTemplate.create('bare', {}) + await FixtureTemplate.create('playwright', { + devDependencies: { '@playwright/test': '^1.59.1', 'uuid': '^14.0.0' }, + }) + await FixtureTemplate.create('playwright-1.53', { + devDependencies: { '@playwright/test': '1.53.1' }, + }) +} + +export async function teardown () { + await FixtureTemplate.destroyAll() +} diff --git a/packages/cli/vitest.config.e2e.mts b/packages/cli/vitest.config.e2e.mts index e32b264ed..a0d5770da 100644 --- a/packages/cli/vitest.config.e2e.mts +++ b/packages/cli/vitest.config.e2e.mts @@ -2,6 +2,7 @@ import { defineConfig } from 'vitest/config' export default defineConfig({ test: { + globalSetup: ['./src/testing/global-setup.ts'], environment: 'node', include: [ './e2e/__tests__/**/*.spec.ts', diff --git a/packages/cli/vitest.config.mts b/packages/cli/vitest.config.mts index 53492716a..1ed4d988e 100644 --- a/packages/cli/vitest.config.mts +++ b/packages/cli/vitest.config.mts @@ -2,6 +2,7 @@ import { defineConfig } from 'vitest/config' export default defineConfig({ test: { + globalSetup: ['./src/testing/global-setup.ts'], environment: 'node', include: [ './src/**/*.spec.ts', diff --git a/packages/create-cli/e2e/__tests__/bootstrap.spec.ts b/packages/create-cli/e2e/__tests__/bootstrap.spec.ts index fbcaee20f..f1a541a96 100644 --- a/packages/create-cli/e2e/__tests__/bootstrap.spec.ts +++ b/packages/create-cli/e2e/__tests__/bootstrap.spec.ts @@ -32,6 +32,10 @@ function expectVersionAndName ({ latestVersion: string greeting: string }) { + if (!commandOutput.stdout) { + // eslint-disable-next-line no-console + console.error('DEBUG empty stdout — exitCode:', commandOutput.exitCode, 'stderr:', commandOutput.stderr) + } if (!version) { expect(commandOutput.stdout).toContain(`Notice: replacing version '0.0.1-dev' with latest '${latestVersion}'.`) } @@ -294,7 +298,7 @@ describe('bootstrap', () => { const playwrightConfigPath = path.join(directory, 'playwright.config.ts') const commandOutput = await runChecklyCreateCli({ directory, - promptsInjection: [true, false, false, true, playwrightConfigPath], + promptsInjection: [true, false, false, false, playwrightConfigPath, true], }) expectVersionAndName({ commandOutput, latestVersion, greeting }) @@ -319,9 +323,6 @@ describe('bootstrap', () => { await expect(exists(path.join(directory, 'package.json'))).resolves.toBe(true) await expect(exists(path.join(directory, 'checkly.config.ts'))).resolves.toBe(true) await expect(exists(path.join(directory, '__checks__', 'api.check.ts'))).resolves.toBe(true) - - // node_modules nor .git shouldn't exist - await expect(exists(path.join(directory, 'node_modules'))).resolves.toBe(false) }, 15000) it('Should run in non-interactive mode when TTY is disabled', async () => { diff --git a/packages/create-cli/e2e/__tests__/fixtures/playwright-project/node_modules/@playwright/test/index.js b/packages/create-cli/e2e/__tests__/fixtures/playwright-project/node_modules/@playwright/test/index.js new file mode 100644 index 000000000..9d0114f4c --- /dev/null +++ b/packages/create-cli/e2e/__tests__/fixtures/playwright-project/node_modules/@playwright/test/index.js @@ -0,0 +1,15 @@ +// Minimal mock of @playwright/test for e2e testing. +// Only implements defineConfig and devices used by the fixture's playwright.config.ts. + +export const defineConfig = (config) => config + +export const devices = { + 'Desktop Chrome': { + userAgent: 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36', + viewport: { width: 1280, height: 720 }, + deviceScaleFactor: 1, + isMobile: false, + hasTouch: false, + defaultBrowserType: 'chromium', + }, +} diff --git a/packages/create-cli/e2e/__tests__/fixtures/playwright-project/node_modules/@playwright/test/package.json b/packages/create-cli/e2e/__tests__/fixtures/playwright-project/node_modules/@playwright/test/package.json new file mode 100644 index 000000000..521742360 --- /dev/null +++ b/packages/create-cli/e2e/__tests__/fixtures/playwright-project/node_modules/@playwright/test/package.json @@ -0,0 +1,8 @@ +{ + "name": "@playwright/test", + "version": "1.59.1", + "type": "module", + "exports": { + ".": "./index.js" + } +} diff --git a/packages/create-cli/e2e/__tests__/fixtures/playwright-project/package.json b/packages/create-cli/e2e/__tests__/fixtures/playwright-project/package.json index 4465cbb7e..27b6e5ed1 100644 --- a/packages/create-cli/e2e/__tests__/fixtures/playwright-project/package.json +++ b/packages/create-cli/e2e/__tests__/fixtures/playwright-project/package.json @@ -9,6 +9,7 @@ "author": "", "license": "ISC", "devDependencies": { + "@playwright/test": "^1.59.1", "checkly": "latest" } -} +} \ No newline at end of file diff --git a/packages/create-cli/e2e/run-create-cli.ts b/packages/create-cli/e2e/run-create-cli.ts index c8f0c6667..99bbb9937 100644 --- a/packages/create-cli/e2e/run-create-cli.ts +++ b/packages/create-cli/e2e/run-create-cli.ts @@ -26,6 +26,9 @@ export async function runChecklyCreateCli (options: { const result = await execa(CHECKLY_PATH, args, { env: { PATH: process.env.PATH, + // Force npm as the package manager. Without this, pnpm is detected via + // PATH and treats the scaffolded project as part of the monorepo workspace. + npm_config_user_agent: 'npm/10.0.0 node/v20.0.0', CHECKLY_CLI_VERSION: version, CHECKLY_E2E_PROMPTS_INJECTIONS: promptsInjection?.length ? JSON.stringify(promptsInjection) : undefined, CHECKLY_E2E_LOCAL_TEMPLATE_ROOT: path.join(__dirname, '../../../examples'), @@ -36,6 +39,7 @@ export async function runChecklyCreateCli (options: { encoding: 'utf8', timeout, reject: false, + extendEnv: false, shell: process.platform === 'win32', }) diff --git a/packages/create-cli/package.json b/packages/create-cli/package.json index d63caf1f0..42953ebe9 100644 --- a/packages/create-cli/package.json +++ b/packages/create-cli/package.json @@ -12,7 +12,7 @@ "scripts": { "clean": "rimraf ./dist ./tsconfig.tsbuildinfo", "prepack": "echo \"Warning: no oclif manifest configured\"", - "prepare": "npm run clean && tsc --build", + "prepare": "pnpm run clean && tsc --build", "test": "vitest", "test:e2e": "vitest -c ./vitest.config.e2e.mts", "start": "node ./index.mjs", diff --git a/packages/create-cli/src/actions/dependencies.ts b/packages/create-cli/src/actions/dependencies.ts index a19802e74..a3f093140 100644 --- a/packages/create-cli/src/actions/dependencies.ts +++ b/packages/create-cli/src/actions/dependencies.ts @@ -14,7 +14,6 @@ export function addDevDependecies (projectDirectory: string, packageJson: Packag Object.assign(packageJson.devDependencies, { checkly: 'latest', - jiti: '^2', }) fs.writeFileSync(path.join(projectDirectory, 'package.json'), JSON.stringify(packageJson, null, 2)) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml new file mode 100644 index 000000000..23c299f8d --- /dev/null +++ b/pnpm-lock.yaml @@ -0,0 +1,6930 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + devDependencies: + '@commitlint/cli': + specifier: ^20.5.3 + version: 20.5.3(@types/node@25.6.0)(conventional-commits-parser@6.4.0)(typescript@6.0.3) + '@commitlint/config-conventional': + specifier: ^20.5.3 + version: 20.5.3 + '@eslint/js': + specifier: ^10.0.1 + version: 10.0.1(eslint@10.3.0(jiti@2.7.0)) + '@stylistic/eslint-plugin': + specifier: ^5.10.0 + version: 5.10.0(eslint@10.3.0(jiti@2.7.0)) + eslint: + specifier: ^10.0.1 + version: 10.3.0(jiti@2.7.0) + globals: + specifier: ^17.6.0 + version: 17.6.0 + lint-staged: + specifier: ^16.4.0 + version: 16.4.0 + rimraf: + specifier: ^6.1.3 + version: 6.1.3 + simple-git-hooks: + specifier: ^2.13.1 + version: 2.13.1 + typescript-eslint: + specifier: ^8.59.2 + version: 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + + packages/cli: + dependencies: + '@oclif/core': + specifier: ^4.11.1 + version: 4.11.1 + '@oclif/plugin-help': + specifier: ^6.2.46 + version: 6.2.46 + '@oclif/plugin-not-found': + specifier: ^3.2.82 + version: 3.2.82(@types/node@22.19.18) + '@oclif/plugin-warn-if-update-available': + specifier: ^3.1.62 + version: 3.1.62 + '@typescript-eslint/typescript-estree': + specifier: ^8.59.2 + version: 8.59.2(typescript@6.0.3) + acorn: + specifier: ^8.16.0 + version: 8.16.0 + acorn-walk: + specifier: ^8.3.5 + version: 8.3.5 + archiver: + specifier: 7.0.1 + version: 7.0.1 + ast-types: + specifier: ^0.16.1 + version: 0.16.1 + axios: + specifier: ^1.16.0 + version: 1.16.0(debug@4.4.3) + chalk: + specifier: ^5.6.2 + version: 5.6.2 + ci-info: + specifier: ^4.4.0 + version: 4.4.0 + conf: + specifier: ^15.1.0 + version: 15.1.0 + debug: + specifier: ^4.4.3 + version: 4.4.3(supports-color@8.1.1) + dotenv: + specifier: ^17.4.2 + version: 17.4.2 + execa: + specifier: ^9.6.1 + version: 9.6.1 + git-repo-info: + specifier: ^2.1.1 + version: 2.1.1 + glob: + specifier: ^13.0.6 + version: 13.0.6 + indent-string: + specifier: ^5.0.0 + version: 5.0.0 + jiti: + specifier: ^2.7.0 + version: 2.7.0 + json-stream-stringify: + specifier: ^3.1.6 + version: 3.1.6 + json5: + specifier: ^2.2.3 + version: 2.2.3 + jwt-decode: + specifier: ^4.0.0 + version: 4.0.0 + log-symbols: + specifier: ^7.0.1 + version: 7.0.1 + luxon: + specifier: ^3.7.2 + version: 3.7.2 + minimatch: + specifier: ^10.2.5 + version: 10.2.5 + mqtt: + specifier: ^5.15.1 + version: 5.15.1 + open: + specifier: ^11.0.0 + version: 11.0.0 + p-queue: + specifier: ^9.2.0 + version: 9.2.0 + prompts: + specifier: ^2.4.2 + version: 2.4.2 + proxy-from-env: + specifier: ^2.1.0 + version: 2.1.0 + recast: + specifier: ^0.23.11 + version: 0.23.11 + semver: + specifier: ^7.7.3 + version: 7.7.4 + string-width: + specifier: ^7.2.0 + version: 7.2.0 + tunnel: + specifier: ^0.0.6 + version: 0.0.6 + uuid: + specifier: ^14.0.0 + version: 14.0.0 + devDependencies: + '@playwright/test': + specifier: ^1.59.1 + version: 1.59.1 + '@types/archiver': + specifier: ^7.0.0 + version: 7.0.0 + '@types/config': + specifier: ^3.3.5 + version: 3.3.5 + '@types/debug': + specifier: ^4.1.13 + version: 4.1.13 + '@types/luxon': + specifier: ^3.7.1 + version: 3.7.1 + '@types/node': + specifier: ^22.19.17 + version: 22.19.18 + '@types/prompts': + specifier: ^2.4.9 + version: 2.4.9 + '@types/semver': + specifier: ^7.7.1 + version: 7.7.1 + '@types/tunnel': + specifier: ^0.0.7 + version: 0.0.7 + '@types/uuid': + specifier: ^10.0.0 + version: 10.0.0 + '@types/ws': + specifier: ^8.5.5 + version: 8.18.1 + config: + specifier: ^4.4.1 + version: 4.4.1 + cross-env: + specifier: ^10.1.0 + version: 10.1.0 + nanoid: + specifier: ^5.1.11 + version: 5.1.11 + oclif: + specifier: ^4.23.0 + version: 4.23.0(@types/node@22.19.18) + rimraf: + specifier: ^6.1.3 + version: 6.1.3 + tar: + specifier: ^7.5.15 + version: 7.5.15 + typescript: + specifier: ^6.0.3 + version: 6.0.3 + vitest: + specifier: ^3.2.4 + version: 3.2.4(@types/debug@4.1.13)(@types/node@22.19.18)(jiti@2.7.0)(yaml@2.8.4) + + packages/create-cli: + dependencies: + '@oclif/core': + specifier: ^4.11.1 + version: 4.11.1 + '@oclif/plugin-help': + specifier: ^6.2.46 + version: 6.2.46 + '@oclif/plugin-warn-if-update-available': + specifier: ^3.1.62 + version: 3.1.62 + axios: + specifier: ^1.16.0 + version: 1.16.0(debug@4.4.3) + chalk: + specifier: ^5.6.2 + version: 5.6.2 + debug: + specifier: ^4.4.3 + version: 4.4.3(supports-color@8.1.1) + execa: + specifier: ^9.6.1 + version: 9.6.1 + giget: + specifier: ^3.2.0 + version: 3.2.0 + jiti: + specifier: ^2.7.0 + version: 2.7.0 + json5: + specifier: ^2.2.3 + version: 2.2.3 + ora: + specifier: ^9.4.0 + version: 9.4.0 + passwd-user: + specifier: ^4.0.0 + version: 4.0.0 + prompts: + specifier: ^2.4.2 + version: 2.4.2 + recast: + specifier: ^0.23.11 + version: 0.23.11 + unique-names-generator: + specifier: ^4.7.1 + version: 4.7.1 + devDependencies: + '@types/debug': + specifier: ^4.1.13 + version: 4.1.13 + '@types/node': + specifier: ^22.19.17 + version: 22.19.18 + '@types/prompts': + specifier: ^2.4.9 + version: 2.4.9 + '@types/uuid': + specifier: ^10.0.0 + version: 10.0.0 + cross-env: + specifier: ^10.1.0 + version: 10.1.0 + rimraf: + specifier: ^6.1.3 + version: 6.1.3 + typescript: + specifier: ^6.0.3 + version: 6.0.3 + uuid: + specifier: ^14.0.0 + version: 14.0.0 + vitest: + specifier: ^3.2.4 + version: 3.2.4(@types/debug@4.1.13)(@types/node@22.19.18)(jiti@2.7.0)(yaml@2.8.4) + +packages: + + '@aashutoshrathi/word-wrap@1.2.6': + resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} + engines: {node: '>=0.10.0'} + + '@aws-crypto/crc32@5.2.0': + resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + + '@aws-crypto/sha256-browser@5.2.0': + resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} + + '@aws-crypto/sha256-js@5.2.0': + resolution: {integrity: sha512-FFQQyu7edu4ufvIZ+OadFpHHOt+eSTBaYaki44c+akjg7qZg9oOQeLlk77F6tSYqjDAFClrHJk9tMf0HdVyOvA==} + engines: {node: '>=16.0.0'} + + '@aws-crypto/supports-web-crypto@5.2.0': + resolution: {integrity: sha512-iAvUotm021kM33eCdNfwIN//F77/IADDSs58i+MDaOqFrVjZo9bAal0NK7HurRuWLLpF1iLX7gbWrjHjeo+YFg==} + + '@aws-crypto/util@5.2.0': + resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + + '@aws-sdk/client-cloudfront@3.1009.0': + resolution: {integrity: sha512-KRac+gkuj3u49IyWkrudHRlP/q/faTto+1xRS7Aj6cDGewMIzgdQArrdZEJoVntbaVZHLM5s/NVmWORzBWNcSw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/client-s3@3.1014.0': + resolution: {integrity: sha512-0XLrOT4Cm3NEhhiME7l/8LbTXS4KdsbR4dSrY207KNKTcHLLTZ9EXt4ZpgnTfLvWQF3pGP2us4Zi1fYLo0N+Ow==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/core@3.974.8': + resolution: {integrity: sha512-njR2qoG6ZuB0kvAS2FyICsFZJ6gmCcf2X/7JcD14sUvGDm26wiZ5BrA6LOiUxKFEF+IVe7kdroxyE00YlkiYsw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/crc64-nvme@3.972.7': + resolution: {integrity: sha512-QUagVVBbC8gODCF6e1aV0mE2TXWB9Opz4k8EJFdNrujUVQm5R4AjJa1mpOqzwOuROBzqJU9zawzig7M96L8Ejg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-env@3.972.34': + resolution: {integrity: sha512-XT0jtf8Fw9JE6ppsQeoNnZRiG+jqRixMT1v1ZR17G60UvVdsQmTG8nbEyHuEPfMxDXEhfdARaM/XiEhca4lGHQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-http@3.972.36': + resolution: {integrity: sha512-DPoGWfy7J7RKxvbf5kOKIGQkD2ek3dbKgzKIGrnLuvZBz5myU+Im/H6pmc14QcnFbqHMqxvtWSgRDSJW3qXLQg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-ini@3.972.38': + resolution: {integrity: sha512-oDzUBu2MGJFgoar05sPMCwSrhw44ASyccrHzj66vO69OZqi7I6hZZxXfuPLC8OCzW7C+sU+bI73XHij41yekgQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-login@3.972.38': + resolution: {integrity: sha512-g1NosS8qe4OF++G2UFCM5ovSkgipC7YYor5KCWatG0UoMSO5YFj9C8muePlyVmOBV/WTI16Jo3/s1NUo/o1Bww==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-node@3.972.39': + resolution: {integrity: sha512-HEswDQyxUtadoZ/bJsPPENHg7R0Lzym5LuMksJeHvqhCOpP+rtkDLKI4/ZChH4w3cf5kG8n6bZuI8PzajoiqMg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-process@3.972.34': + resolution: {integrity: sha512-T3IFs4EVmVi1dVN5RciFnklCANSzvrQd/VuHY9ThHSQmYkTogjcGkoJEr+oNUPQZnso52183088NqysMPji1/Q==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-sso@3.972.38': + resolution: {integrity: sha512-5ZxG+t0+3Q3QPh8KEjX6syskhgNf7I0MN7oGioTf6Lm1NTjfP7sIcYGNsthXC2qR8vcD3edNZwCr2ovfSSWuRA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/credential-provider-web-identity@3.972.38': + resolution: {integrity: sha512-lYHFF30DGI20jZcYX8cm6Ns0V7f1dDN6g/MBDLTyD/5iw+bXs3yBr2iAiHDkx4RFU5JgsnZvCHYKiRVPRdmOgw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-bucket-endpoint@3.972.10': + resolution: {integrity: sha512-Vbc2frZH7wXlMNd+ZZSXUEs/l1Sv8Jj4zUnIfwrYF5lwaLdXHZ9xx4U3rjUcaye3HRhFVc+E5DbBxpRAbB16BA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-expect-continue@3.972.10': + resolution: {integrity: sha512-2Yn0f1Qiq/DjxYR3wfI3LokXnjOhFM7Ssn4LTdFDIxRMCE6I32MAsVnhPX1cUZsuVA9tiZtwwhlSLAtFGxAZlQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-flexible-checksums@3.974.16': + resolution: {integrity: sha512-6ru8doI0/XzszqLIPXf0E/V7HhAw1Pu94010XCKYtBUfD0LxF0BuOzrUf8OQGR6j2o6wgKTHUniOmndQycHwCA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-host-header@3.972.10': + resolution: {integrity: sha512-IJSsIMeVQ8MMCPbuh1AbltkFhLBLXn7aejzfX5YKT/VLDHn++Dcz8886tXckE+wQssyPUhaXrJhdakO2VilRhg==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-location-constraint@3.972.10': + resolution: {integrity: sha512-rI3NZvJcEvjoD0+0PI0iUAwlPw2IlSlhyvgBK/3WkKJQE/YiKFedd9dMN2lVacdNxPNhxL/jzQaKQdrGtQagjQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-logger@3.972.10': + resolution: {integrity: sha512-OOuGvvz1Dm20SjZo5oEBePFqxt5nf8AwkNDSyUHvD9/bfNASmstcYxFAHUowy4n6Io7mWUZ04JURZwSBvyQanQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-recursion-detection@3.972.11': + resolution: {integrity: sha512-+zz6f79Kj9V5qFK2P+D8Ehjnw4AhphAlCAsPjUqEcInA9umtSSKMrHbSagEeOIsDNuvVrH98bjRHcyQukTrhaQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-sdk-s3@3.972.37': + resolution: {integrity: sha512-Km7M+i8DrLArVzrid1gfxeGhYHBd3uxvE77g0s5a52zPSVosxzQBnJ0gwWb6NIp/DOk8gsBMhi7V+cpJG0ndTA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-ssec@3.972.10': + resolution: {integrity: sha512-Gli9A0u8EVVb+5bFDGS/QbSVg28w/wpEidg1ggVcSj65BDTdGR6punsOcVjqdiu1i42WHWo51MCvARPIIz9juw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/middleware-user-agent@3.972.38': + resolution: {integrity: sha512-iz+B29TXcAZsJpwB+AwG/TTGA5l/VnmMZ2UxtiySOZjI6gCdmviXPwdgzcmuazMy16rXoPY4mYCGe7zdNKfx5A==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/nested-clients@3.997.6': + resolution: {integrity: sha512-WBDnqatJl+kGObpfmfSxqnXeYTu3Me8wx8WCtvoxX3pfWrrTv8I4WTMSSs7PZqcRcVh8WeUKMgGFjMG+52SR1w==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/region-config-resolver@3.972.13': + resolution: {integrity: sha512-CvJ2ZIjK/jVD/lbOpowBVElJyC1YxLTIJ13yM0AEo0t2v7swOzGjSA6lJGH+DwZXQhcjUjoYwc8bVYCX5MDr1A==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/signature-v4-multi-region@3.996.25': + resolution: {integrity: sha512-+CMIt3e1VzlklAECmG+DtP1sV8iKq25FuA0OKpnJ4KA0kxUtd7CgClY7/RU6VzJBQwbN4EJ9Ue6plvqx1qGadw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/token-providers@3.1041.0': + resolution: {integrity: sha512-Th7kPI6YPtvJUcdznooXJMy+9rQWjmEF81LxaJssngBzuysK4a/x+l8kjm1zb7nYsUPbndnBdUnwng/3PLvtGw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/types@3.973.8': + resolution: {integrity: sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-arn-parser@3.972.3': + resolution: {integrity: sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-endpoints@3.996.8': + resolution: {integrity: sha512-oOZHcRDihk5iEe5V25NVWg45b3qEA8OpHWVdU/XQh8Zj4heVPAJqWvMphQnU7LkufmUo10EpvFPZuQMiFLJK3g==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-locate-window@3.965.5': + resolution: {integrity: sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/util-user-agent-browser@3.972.10': + resolution: {integrity: sha512-FAzqXvfEssGdSIz8ejatan0bOdx1qefBWKF/gWmVBXIP1HkS7v/wjjaqrAGGKvyihrXTXW00/2/1nTJtxpXz7g==} + + '@aws-sdk/util-user-agent-node@3.973.24': + resolution: {integrity: sha512-ZWwlkjcIp7cEL8ZfTpTAPNkwx25p7xol0xlKoWVVf22+nsjwmLcHYtTPjIV1cSpmB/b6DaK4cb1fSkvCXHgRdw==} + engines: {node: '>=20.0.0'} + peerDependencies: + aws-crt: '>=1.0.0' + peerDependenciesMeta: + aws-crt: + optional: true + + '@aws-sdk/xml-builder@3.972.22': + resolution: {integrity: sha512-PMYKKtJd70IsSG0yHrdAbxBr+ZWBKLvzFZfD3/urxgf6hXVMzuU5M+3MJ5G67RpOmLBu1fAUN65SbWuKUCOlAA==} + engines: {node: '>=20.0.0'} + + '@aws/lambda-invoke-store@0.2.4': + resolution: {integrity: sha512-iY8yvjE0y651BixKNPgmv1WrQc+GZ142sb0z4gYnChDDY2YqI4P/jsSopBWrKfAt7LOJAkOXt7rC/hms+WclQQ==} + engines: {node: '>=18.0.0'} + + '@babel/code-frame@7.29.0': + resolution: {integrity: sha512-9NhCeYjq9+3uxgdtp20LSiJXJvN0FeCtNGpJxuMFZ1Kv3cWUNb6DOhJwUvcVCzKGR66cw4njwM6hrJLqgOwbcw==} + engines: {node: '>=6.9.0'} + + '@babel/helper-validator-identifier@7.28.5': + resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==} + engines: {node: '>=6.9.0'} + + '@babel/runtime@7.29.2': + resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==} + engines: {node: '>=6.9.0'} + + '@commitlint/cli@20.5.3': + resolution: {integrity: sha512-OJdL0EXWD5y9LPa0nr/geOwzaS8BsdaybKkcloB0JgsguGxNv2R+hC2FTPqrAcprg35zF33KOQerY0x8W1aesA==} + engines: {node: '>=v18'} + hasBin: true + + '@commitlint/config-conventional@20.5.3': + resolution: {integrity: sha512-j34Qqeaa152chJgz2ysyk0BCpHenJn1lV0Rx0VXf8k3ccQcED+48EZrzMvo9jLmJUyBrrBwvu89I+2er4gW7QQ==} + engines: {node: '>=v18'} + + '@commitlint/config-validator@20.5.0': + resolution: {integrity: sha512-T/Uh6iJUzyx7j35GmHWdIiGRQB+ouZDk0pwAaYq4SXgB54KZhFdJ0vYmxiW6AMYICTIWuyMxDBl1jK74oFp/Gw==} + engines: {node: '>=v18'} + + '@commitlint/ensure@20.5.3': + resolution: {integrity: sha512-4i4AgNvH62owG9MwSiWKrle7HGNpBHHdLnWFIp5fTsHUYe5kRuh15t08L/0pdbbrRk8JKXQxxN4hZQcn+szkrw==} + engines: {node: '>=v18'} + + '@commitlint/execute-rule@20.0.0': + resolution: {integrity: sha512-xyCoOShoPuPL44gVa+5EdZsBVao/pNzpQhkzq3RdtlFdKZtjWcLlUFQHSWBuhk5utKYykeJPSz2i8ABHQA+ZZw==} + engines: {node: '>=v18'} + + '@commitlint/format@20.5.0': + resolution: {integrity: sha512-TI9EwFU/qZWSK7a5qyXMpKPPv3qta7FO4tKW+Wt2al7sgMbLWTsAcDpX1cU8k16TRdsiiet9aOw0zpvRXNJu7Q==} + engines: {node: '>=v18'} + + '@commitlint/is-ignored@20.5.0': + resolution: {integrity: sha512-JWLarAsurHJhPozbuAH6GbP4p/hdOCoqS9zJMfqwswne+/GPs5V0+rrsfOkP68Y8PSLphwtFXV0EzJ+GTXTTGg==} + engines: {node: '>=v18'} + + '@commitlint/lint@20.5.3': + resolution: {integrity: sha512-M7JbWBNr2gXKaPc4i/KipsuW1gkDHpj35KPjWtKy3Z+2AQw5wu1gBi1LIO0uoaij67CqY4K8PxPZSGens4evCw==} + engines: {node: '>=v18'} + + '@commitlint/load@20.5.3': + resolution: {integrity: sha512-1FDZWuKyu98Myb8i7Tp31jPU2rZpOwAdYRyJcy2KoGg7Xk2A+bgHN8smhMaaNSNkmE8fwt53BokywZq8Gv/5XQ==} + engines: {node: '>=v18'} + + '@commitlint/message@20.4.3': + resolution: {integrity: sha512-6akwCYrzcrFcTYz9GyUaWlhisY4lmQ3KvrnabmhoeAV8nRH4dXJAh4+EUQ3uArtxxKQkvxJS78hNX2EU3USgxQ==} + engines: {node: '>=v18'} + + '@commitlint/parse@20.5.0': + resolution: {integrity: sha512-SeKWHBMk7YOTnnEWUhx+d1a9vHsjjuo6Uo1xRfPNfeY4bdYFasCH1dDpAv13Lyn+dDPOels+jP6D2GRZqzc5fA==} + engines: {node: '>=v18'} + + '@commitlint/read@20.5.0': + resolution: {integrity: sha512-JDEIJ2+GnWpK8QqwfmW7O42h0aycJEWNqcdkJnyzLD11nf9dW2dWLTVEa8Wtlo4IZFGLPATjR5neA5QlOvIH1w==} + engines: {node: '>=v18'} + + '@commitlint/resolve-extends@20.5.3': + resolution: {integrity: sha512-+ogW9v/u9JqpvAgTrLra/YTFo0KkjU6iNblF89pPsj4NebNc+DAWctsludwezI8YnsjBmfHpApSwcXprN/f/ew==} + engines: {node: '>=v18'} + + '@commitlint/rules@20.5.3': + resolution: {integrity: sha512-MPlMnb9D3wbszYMp+1hPtuhtPJndRo6I6yfkZVA4+jR8w7Kqp0u2u/Y+gzbaItx5Lltq5rw7FSZQWJMoXUC4NQ==} + engines: {node: '>=v18'} + + '@commitlint/to-lines@20.0.0': + resolution: {integrity: sha512-2l9gmwiCRqZNWgV+pX1X7z4yP0b3ex/86UmUFgoRt672Ez6cAM2lOQeHFRUTuE6sPpi8XBCGnd8Kh3bMoyHwJw==} + engines: {node: '>=v18'} + + '@commitlint/top-level@20.4.3': + resolution: {integrity: sha512-qD9xfP6dFg5jQ3NMrOhG0/w5y3bBUsVGyJvXxdWEwBm8hyx4WOk3kKXw28T5czBYvyeCVJgJJ6aoJZUWDpaacQ==} + engines: {node: '>=v18'} + + '@commitlint/types@20.5.0': + resolution: {integrity: sha512-ZJoS8oSq2CAZEpc/YI9SulLrdiIyXeHb/OGqGrkUP6Q7YV+0ouNAa7GjqRdXeQPncHQIDz/jbCTlHScvYvO/gA==} + engines: {node: '>=v18'} + + '@conventional-changelog/git-client@2.7.0': + resolution: {integrity: sha512-j7A8/LBEQ+3rugMzPXoKYzyUPpw/0CBQCyvtTR7Lmu4olG4yRC/Tfkq79Mr3yuPs0SUitlO2HwGP3gitMJnRFw==} + engines: {node: '>=18'} + peerDependencies: + conventional-commits-filter: ^5.0.0 + conventional-commits-parser: ^6.4.0 + peerDependenciesMeta: + conventional-commits-filter: + optional: true + conventional-commits-parser: + optional: true + + '@epic-web/invariant@1.0.0': + resolution: {integrity: sha512-lrTPqgvfFQtR/eY/qkIzp98OGdNJu0m5ji3q/nJI8v3SXkRKEnWiOxMmbvcSoAIzv/cGiuvRy57k4suKQSAdwA==} + + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + + '@eslint-community/eslint-utils@4.9.1': + resolution: {integrity: sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: {integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==} + engines: {node: ^12.0.0 || ^14.0.0 || >=16.0.0} + + '@eslint/config-array@0.23.5': + resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/config-helpers@0.5.5': + resolution: {integrity: sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/core@1.2.1': + resolution: {integrity: sha512-MwcE1P+AZ4C6DWlpin/OmOA54mmIZ/+xZuJiQd4SyB29oAJjN30UW9wkKNptW2ctp4cEsvhlLY/CsQ1uoHDloQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/js@10.0.1': + resolution: {integrity: sha512-zeR9k5pd4gxjZ0abRoIaxdc7I3nDktoXZk2qOv9gCNWx3mVwEn32VRhyLaRsDiJjTs0xq/T8mfPtyuXu7GWBcA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + peerDependencies: + eslint: ^10.0.0 + peerDependenciesMeta: + eslint: + optional: true + + '@eslint/object-schema@3.0.5': + resolution: {integrity: sha512-vqTaUEgxzm+YDSdElad6PiRoX4t8VGDjCtt05zn4nU810UIx/uNEV7/lZJ6KwFThKZOzOxzXy48da+No7HZaMw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@eslint/plugin-kit@0.7.1': + resolution: {integrity: sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + '@humanfs/core@0.19.1': + resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.6': + resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + engines: {node: '>=18.18.0'} + + '@humanwhocodes/module-importer@1.0.1': + resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} + engines: {node: '>=12.22'} + + '@humanwhocodes/retry@0.3.1': + resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} + engines: {node: '>=18.18'} + + '@humanwhocodes/retry@0.4.2': + resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + engines: {node: '>=18.18'} + + '@inquirer/ansi@1.0.2': + resolution: {integrity: sha512-S8qNSZiYzFd0wAcyG5AXCvUHC5Sr7xpZ9wZ2py9XR88jUz8wooStVx5M6dRzczbBWjic9NP7+rY0Xi7qqK/aMQ==} + engines: {node: '>=18'} + + '@inquirer/checkbox@4.3.2': + resolution: {integrity: sha512-VXukHf0RR1doGe6Sm4F0Em7SWYLTHSsbGfJdS9Ja2bX5/D5uwVOEjr07cncLROdBvmnvCATYEWlHqYmXv2IlQA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/confirm@3.2.0': + resolution: {integrity: sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==} + engines: {node: '>=18'} + + '@inquirer/confirm@5.1.21': + resolution: {integrity: sha512-KR8edRkIsUayMXV+o3Gv+q4jlhENF9nMYUZs9PA2HzrXeHI8M5uDag70U7RJn9yyiMZSbtF5/UexBtAVtZGSbQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@10.3.2': + resolution: {integrity: sha512-43RTuEbfP8MbKzedNqBrlhhNKVwoK//vUFNW3Q3vZ88BLcrs4kYpGg+B2mm5p2K/HfygoCxuKwJJiv8PbGmE0A==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/core@9.2.1': + resolution: {integrity: sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==} + engines: {node: '>=18'} + + '@inquirer/editor@4.2.23': + resolution: {integrity: sha512-aLSROkEwirotxZ1pBaP8tugXRFCxW94gwrQLxXfrZsKkfjOYC1aRvAZuhpJOb5cu4IBTJdsCigUlf2iCOu4ZDQ==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/expand@4.0.23': + resolution: {integrity: sha512-nRzdOyFYnpeYTTR2qFwEVmIWypzdAx/sIkCMeTNTcflFOovfqUk+HcFhQQVBftAh9gmGrpFj6QcGEqrDMDOiew==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/external-editor@1.0.3': + resolution: {integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/figures@1.0.15': + resolution: {integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==} + engines: {node: '>=18'} + + '@inquirer/input@2.3.0': + resolution: {integrity: sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==} + engines: {node: '>=18'} + + '@inquirer/input@4.3.1': + resolution: {integrity: sha512-kN0pAM4yPrLjJ1XJBjDxyfDduXOuQHrBB8aLDMueuwUGn+vNpF7Gq7TvyVxx8u4SHlFFj4trmj+a2cbpG4Jn1g==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/number@3.0.23': + resolution: {integrity: sha512-5Smv0OK7K0KUzUfYUXDXQc9jrf8OHo4ktlEayFlelCjwMXz0299Y8OrI+lj7i4gCBY15UObk76q0QtxjzFcFcg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/password@4.0.23': + resolution: {integrity: sha512-zREJHjhT5vJBMZX/IUbyI9zVtVfOLiTO66MrF/3GFZYZ7T4YILW5MSkEYHceSii/KtRk+4i3RE7E1CUXA2jHcA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/prompts@7.10.1': + resolution: {integrity: sha512-Dx/y9bCQcXLI5ooQ5KyvA4FTgeo2jYj/7plWfV5Ak5wDPKQZgudKez2ixyfz7tKXzcJciTxqLeK7R9HItwiByg==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/rawlist@4.1.11': + resolution: {integrity: sha512-+LLQB8XGr3I5LZN/GuAHo+GpDJegQwuPARLChlMICNdwW7OwV2izlCSCxN6cqpL0sMXmbKbFcItJgdQq5EBXTw==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/search@3.2.2': + resolution: {integrity: sha512-p2bvRfENXCZdWF/U2BXvnSI9h+tuA8iNqtUKb9UWbmLYCRQxd8WkvwWvYn+3NgYaNwdUkHytJMGG4MMLucI1kA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/select@2.5.0': + resolution: {integrity: sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==} + engines: {node: '>=18'} + + '@inquirer/select@4.4.2': + resolution: {integrity: sha512-l4xMuJo55MAe+N7Qr4rX90vypFwCajSakx59qe/tMaC1aEHWLyw68wF4o0A4SLAY4E0nd+Vt+EyskeDIqu1M6w==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/type@1.5.5': + resolution: {integrity: sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==} + engines: {node: '>=18'} + + '@inquirer/type@2.0.0': + resolution: {integrity: sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==} + engines: {node: '>=18'} + + '@inquirer/type@3.0.10': + resolution: {integrity: sha512-BvziSRxfz5Ov8ch0z/n3oijRSEcEsHnhggm4xFZe93DHcUCTlutlq9Ox4SVENAfcRD22UQq7T/atg9Wr3k09eA==} + engines: {node: '>=18'} + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@isaacs/cliui@8.0.2': + resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} + engines: {node: '>=12'} + + '@isaacs/fs-minipass@4.0.1': + resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} + engines: {node: '>=18.0.0'} + + '@jridgewell/sourcemap-codec@1.5.5': + resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==} + + '@nodable/entities@2.1.0': + resolution: {integrity: sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==} + + '@oclif/core@4.11.1': + resolution: {integrity: sha512-+N5yqeoOKPnT0p+ZJiNutMILsZukZrEpsVup24XERla594EkGSWS9tiCqRfvzr1xfvf/AhM9pb0yPaf8L3Y9Uw==} + engines: {node: '>=18.0.0'} + + '@oclif/core@4.9.0': + resolution: {integrity: sha512-k/ntRgDcUprTT+aaNoF+whk3cY3f9fRD2lkF6ul7JeCUg2MaMXVXZXfbRhJCfsiX51X8/5Pqo0LGdO9SLYXNHg==} + engines: {node: '>=18.0.0'} + + '@oclif/plugin-help@6.2.46': + resolution: {integrity: sha512-KmuMFt/fURCVxor0rrRjEqs2nLN0Y3ixcixo/M5VjKcN920gbuw5T+AF23FBeyUDuW/Dg79YPcTWy/Rtz0Dg/A==} + engines: {node: '>=18.0.0'} + + '@oclif/plugin-not-found@3.2.82': + resolution: {integrity: sha512-6heNFE2gadcDYijWy4XJc6ZLzPd1qKe0i8sb8uyrR3mX0o5IFA+5KSAx/BFBkGS8j/tKOsCYvvmMKVdReeb1Gg==} + engines: {node: '>=18.0.0'} + + '@oclif/plugin-warn-if-update-available@3.1.62': + resolution: {integrity: sha512-g1tOOf9tJ3RE4dqhUynw3TH8Gea78IkzG9hq2lcUJ5wIdOSzcp8+3SWVzzpKfHgwBGgFupmj8peCjypybJVIrg==} + engines: {node: '>=18.0.0'} + + '@pkgjs/parseargs@0.11.0': + resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} + engines: {node: '>=14'} + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + '@pnpm/config.env-replace@1.1.0': + resolution: {integrity: sha512-htyl8TWnKL7K/ESFa1oW2UB5lVDxuF5DpM7tBi6Hu2LNL3mWkIzNLG6N4zoCUP1lCKNxWy/3iu8mS8MvToGd6w==} + engines: {node: '>=12.22.0'} + + '@pnpm/network.ca-file@1.0.2': + resolution: {integrity: sha512-YcPQ8a0jwYU9bTdJDpXjMi7Brhkr1mXsXrUJvjqM2mQDgkRiz8jFaQGOdaLxgjtUfQgZhKy/O3cG/YwmgKaxLA==} + engines: {node: '>=12.22.0'} + + '@pnpm/npm-conf@3.0.2': + resolution: {integrity: sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==} + engines: {node: '>=12'} + + '@rollup/rollup-android-arm-eabi@4.60.3': + resolution: {integrity: sha512-x35CNW/ANXG3hE/EZpRU8MXX1JDN86hBb2wMGAtltkz7pc6cxgjpy1OMMfDosOQ+2hWqIkag/fGok1Yady9nGw==} + cpu: [arm] + os: [android] + + '@rollup/rollup-android-arm64@4.60.3': + resolution: {integrity: sha512-xw3xtkDApIOGayehp2+Rz4zimfkaX65r4t47iy+ymQB2G4iJCBBfj0ogVg5jpvjpn8UWn/+q9tprxleYeNp3Hw==} + cpu: [arm64] + os: [android] + + '@rollup/rollup-darwin-arm64@4.60.3': + resolution: {integrity: sha512-vo6Y5Qfpx7/5EaamIwi0WqW2+zfiusVihKatLvtN1VFVy3D13uERk/6gZLU1UiHRL6fDXqj/ELIeVRGnvcTE1g==} + cpu: [arm64] + os: [darwin] + + '@rollup/rollup-darwin-x64@4.60.3': + resolution: {integrity: sha512-D+0QGcZhBzTN82weOnsSlY7V7+RMmPuF1CkbxyMAGE8+ZHeUjyb76ZiWmBlCu//AQQONvxcqRbwZTajZKqjuOw==} + cpu: [x64] + os: [darwin] + + '@rollup/rollup-freebsd-arm64@4.60.3': + resolution: {integrity: sha512-6HnvHCT7fDyj6R0Ph7A6x8dQS/S38MClRWeDLqc0MdfWkxjiu1HSDYrdPhqSILzjTIC/pnXbbJbo+ft+gy/9hQ==} + cpu: [arm64] + os: [freebsd] + + '@rollup/rollup-freebsd-x64@4.60.3': + resolution: {integrity: sha512-KHLgC3WKlUYW3ShFKnnosZDOJ0xjg9zp7au3sIm2bs/tGBeC2ipmvRh/N7JKi0t9Ue20C0dpEshi8WUubg+cnA==} + cpu: [x64] + os: [freebsd] + + '@rollup/rollup-linux-arm-gnueabihf@4.60.3': + resolution: {integrity: sha512-DV6fJoxEYWJOvaZIsok7KrYl0tPvga5OZ2yvKHNNYyk/2roMLqQAbGhr78EQ5YhHpnhLKJD3S1WFusAkmUuV5g==} + cpu: [arm] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm-musleabihf@4.60.3': + resolution: {integrity: sha512-mQKoJAzvuOs6F+TZybQO4GOTSMUu7v0WdxEk24krQ/uUxXoPTtHjuaUuPmFhtBcM4K0ons8nrE3JyhTuCFtT/w==} + cpu: [arm] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-arm64-gnu@4.60.3': + resolution: {integrity: sha512-Whjj2qoiJ6+OOJMGptTYazaJvjOJm+iKHpXQM1P3LzGjt7Ff++Tp7nH4N8J/BUA7R9IHfDyx4DJIflifwnbmIA==} + cpu: [arm64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-arm64-musl@4.60.3': + resolution: {integrity: sha512-4YTNHKqGng5+yiZt3mg77nmyuCfmNfX4fPmyUapBcIk+BdwSwmCWGXOUxhXbBEkFHtoN5boLj/5NON+u5QC9tg==} + cpu: [arm64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-loong64-gnu@4.60.3': + resolution: {integrity: sha512-SU3kNlhkpI4UqlUc2VXPGK9o886ZsSeGfMAX2ba2b8DKmMXq4AL7KUrkSWVbb7koVqx41Yczx6dx5PNargIrEA==} + cpu: [loong64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-loong64-musl@4.60.3': + resolution: {integrity: sha512-6lDLl5h4TXpB1mTf2rQWnAk/LcXrx9vBfu/DT5TIPhvMhRWaZ5MxkIc8u4lJAmBo6klTe1ywXIUHFjylW505sg==} + cpu: [loong64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-ppc64-gnu@4.60.3': + resolution: {integrity: sha512-BMo8bOw8evlup/8G+cj5xWtPyp93xPdyoSN16Zy90Q2QZ0ZYRhCt6ZJSwbrRzG9HApFabjwj2p25TUPDWrhzqQ==} + cpu: [ppc64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-ppc64-musl@4.60.3': + resolution: {integrity: sha512-E0L8X1dZN1/Rph+5VPF6Xj2G7JJvMACVXtamTJIDrVI44Y3K+G8gQaMEAavbqCGTa16InptiVrX6eM6pmJ+7qA==} + cpu: [ppc64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-riscv64-gnu@4.60.3': + resolution: {integrity: sha512-oZJ/WHaVfHUiRAtmTAeo3DcevNsVvH8mbvodjZy7D5QKvCefO371SiKRpxoDcCxB3PTRTLayWBkvmDQKTcX/sw==} + cpu: [riscv64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-riscv64-musl@4.60.3': + resolution: {integrity: sha512-Dhbyh7j9FybM3YaTgaHmVALwA8AkUwTPccyCQ79TG9AJUsMQqgN1DDEZNr4+QUfwiWvLDumW5vdwzoeUF+TNxQ==} + cpu: [riscv64] + os: [linux] + libc: [musl] + + '@rollup/rollup-linux-s390x-gnu@4.60.3': + resolution: {integrity: sha512-cJd1X5XhHHlltkaypz1UcWLA8AcoIi1aWhsvaWDskD1oz2eKCypnqvTQ8ykMNI0RSmm7NkTdSqSSD7zM0xa6Ig==} + cpu: [s390x] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-gnu@4.60.3': + resolution: {integrity: sha512-DAZDBHQfG2oQuhY7mc6I3/qB4LU2fQCjRvxbDwd/Jdvb9fypP4IJ4qmtu6lNjes6B531AI8cg1aKC2di97bUxA==} + cpu: [x64] + os: [linux] + libc: [glibc] + + '@rollup/rollup-linux-x64-musl@4.60.3': + resolution: {integrity: sha512-cRxsE8c13mZOh3vP+wLDxpQBRrOHDIGOWyDL93Sy0Ga8y515fBcC2pjUfFwUe5T7tqvTvWbCpg1URM/AXdWIXA==} + cpu: [x64] + os: [linux] + libc: [musl] + + '@rollup/rollup-openbsd-x64@4.60.3': + resolution: {integrity: sha512-QaWcIgRxqEdQdhJqW4DJctsH6HCmo5vHxY0krHSX4jMtOqfzC+dqDGuHM87bu4H8JBeibWx7jFz+h6/4C8wA5Q==} + cpu: [x64] + os: [openbsd] + + '@rollup/rollup-openharmony-arm64@4.60.3': + resolution: {integrity: sha512-AaXwSvUi3QIPtroAUw1t5yHGIyqKEXwH54WUocFolZhpGDruJcs8c+xPNDRn4XiQsS7MEwnYsHW2l0MBLDMkWg==} + cpu: [arm64] + os: [openharmony] + + '@rollup/rollup-win32-arm64-msvc@4.60.3': + resolution: {integrity: sha512-65LAKM/bAWDqKNEelHlcHvm2V+Vfb8C6INFxQXRHCvaVN1rJfwr4NvdP4FyzUaLqWfaCGaadf6UbTm8xJeYfEg==} + cpu: [arm64] + os: [win32] + + '@rollup/rollup-win32-ia32-msvc@4.60.3': + resolution: {integrity: sha512-EEM2gyhBF5MFnI6vMKdX1LAosE627RGBzIoGMdLloPZkXrUN0Ckqgr2Qi8+J3zip/8NVVro3/FjB+tjhZUgUHA==} + cpu: [ia32] + os: [win32] + + '@rollup/rollup-win32-x64-gnu@4.60.3': + resolution: {integrity: sha512-E5Eb5H/DpxaoXH++Qkv28RcUJboMopmdDUALBczvHMf7hNIxaDZqwY5lK12UK1BHacSmvupoEWGu+n993Z0y1A==} + cpu: [x64] + os: [win32] + + '@rollup/rollup-win32-x64-msvc@4.60.3': + resolution: {integrity: sha512-hPt/bgL5cE+Qp+/TPHBqptcAgPzgj46mPcg/16zNUmbQk0j+mOEQV/+Lqu8QRtDV3Ek95Q6FeFITpuhl6OTsAA==} + cpu: [x64] + os: [win32] + + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} + + '@simple-libs/child-process-utils@1.0.2': + resolution: {integrity: sha512-/4R8QKnd/8agJynkNdJmNw2MBxuFTRcNFnE5Sg/G+jkSsV8/UBgULMzhizWWW42p8L5H7flImV2ATi79Ove2Tw==} + engines: {node: '>=18'} + + '@simple-libs/stream-utils@1.2.0': + resolution: {integrity: sha512-KxXvfapcixpz6rVEB6HPjOUZT22yN6v0vI0urQSk1L8MlEWPDFCZkhw2xmkyoTGYeFw7tWTZd7e3lVzRZRN/EA==} + engines: {node: '>=18'} + + '@sindresorhus/is@5.6.0': + resolution: {integrity: sha512-TV7t8GKYaJWsn00tFDqBw8+Uqmr8A0fRU1tvTQhyZzGv0sJCGRQL3JGMI3ucuKo3XIZdUP+Lx7/gh2t3lewy7g==} + engines: {node: '>=14.16'} + + '@sindresorhus/merge-streams@4.0.0': + resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} + engines: {node: '>=18'} + + '@smithy/config-resolver@4.5.0': + resolution: {integrity: sha512-m5PNfr7xKdIegNG8DlLz+Gf/DlAhHWFGmFbe0DZo9pnvBwuZ3P/9OMtQU0UyWMYy8zjl+HDFVS7rdD9p2xEFjQ==} + engines: {node: '>=18.0.0'} + + '@smithy/core@3.24.0': + resolution: {integrity: sha512-rZ5YfycIXX6puoGjthnDiMpUgtKNOq3c7CndQYkCNYQTv26AiCrZQOJPy7ANSfZ6Okk3UvCRnmO1OYWlLnYZgg==} + engines: {node: '>=18.0.0'} + + '@smithy/credential-provider-imds@4.3.0': + resolution: {integrity: sha512-5gi+28FH+RurB2+tcRH1CK7KiLJ0dVnabjWLY3DgeFLiU45dbyrsq7NOYvMUcHgu9LVZH5F7G+Qk1GdXF0y6jg==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-browser@4.3.0': + resolution: {integrity: sha512-JlY17/ZwBJ2O7FK/bKt8PZR+HBkyFwvgssgT6LiB0xYtz5/E5XG/HeKr5q2NMaVm8u8xjFfGk/6DVlbBe1qNkA==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-config-resolver@4.4.0': + resolution: {integrity: sha512-1Pg7aqxIdMilTbGJKCHTx0toIkKSrHdO6VHCh9oCncWJG+1wkJa90O/xb9mmRPuoOFCg2DLZAqnRyuBiUQnNIA==} + engines: {node: '>=18.0.0'} + + '@smithy/eventstream-serde-node@4.3.0': + resolution: {integrity: sha512-Xte1Td6CQpc/D0WnPZ2k98CvF7y1GopylMoGY/r26a9wbRHV5xusRbT6O9vouSeZlvtxoVb4ON/1fLRofO7m4Q==} + engines: {node: '>=18.0.0'} + + '@smithy/fetch-http-handler@5.4.0': + resolution: {integrity: sha512-yxurumLvHfgYgM0FVtjOVIyBSJXfno4xKKOgD43wOk9Qh+2lTKfP9Qhu4JHU7IUwrqVPa888byUzomHMgvKVMg==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-blob-browser@4.3.0': + resolution: {integrity: sha512-xOQ7w5hSzTe8IAwQ6BAbX+1d9s9SRwWUbU8cYYh5DHgkYOi131Q5+B9Blelg9u0zoPfM4VYOuuBRAmregPkzpQ==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-node@4.3.0': + resolution: {integrity: sha512-4a+KoVqr1SZtw7cZvY24XU1S5OL+c23MdDQ3jFmMCQ5s9diBFdMG/UIgp5dNqlwvDrWA0U5KO+z3Gzq1ize+LA==} + engines: {node: '>=18.0.0'} + + '@smithy/hash-stream-node@4.3.0': + resolution: {integrity: sha512-DPDT0UyOREMPwipO7BzSJfD8z2YYp/x1FMpHqEppBF+gmGr7FoqUUFlXfK+YPOfHhlr8HDJRQpmShNb9C9po5Q==} + engines: {node: '>=18.0.0'} + + '@smithy/invalid-dependency@4.3.0': + resolution: {integrity: sha512-TaoGtqi2ZNdGzxUgYcLczjW8rb/h5DQ8vlCMYDSdZ4LRzGQrrEYgUjlZVM9dAagTsLK5gZx1f7+44sFTjz5vuQ==} + engines: {node: '>=18.0.0'} + + '@smithy/is-array-buffer@2.2.0': + resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} + engines: {node: '>=14.0.0'} + + '@smithy/is-array-buffer@4.3.0': + resolution: {integrity: sha512-V9ZCT5mHNteWOKtu3LkGHTheEyBWzTU3XydeSOHrqG6znEoCARjxFZ0XP9JJyKV9jxEMx7hNbzGlQaXtKkmvSQ==} + engines: {node: '>=18.0.0'} + + '@smithy/md5-js@4.3.0': + resolution: {integrity: sha512-bODwWrXILREpCL7XZq1/QxiMqFxdWadw3noiKGjNKsPl1/nvWtLVFInNjK6pmHjM4BUOgfgZkrl9+V56ez2FNA==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-content-length@4.3.0': + resolution: {integrity: sha512-IbSiS/3nOxsimCthzElEoBrjQo+Na4bsQ63qyC8qSI8lkMjOv9+VlosDQd8gfNolAD9XmC5tLqYTI0bJGJsscg==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-endpoint@4.5.0': + resolution: {integrity: sha512-ux8LgN/m/X7ET2ISRc8G4aKFI1QhINZtkKpoayNPTrhwpsCVxb47mlpYFuWceTlesc0Wmb0S9y6DP195ReQoXA==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-retry@4.6.0': + resolution: {integrity: sha512-8CtxY9aHT4f3UvZUbU2O0bccRckqTDfTKk3t1DawUZa5DWRZdV2AMABLsdMTdj7KE1uumhzEaT0X7/jTcOtoBw==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-serde@4.3.0': + resolution: {integrity: sha512-c+V02hZlIStscI4ie2VllJjM4DLxdI2SymIBvXmqCqicrNb0NAbgDXDTBiwcMiruaBOqEFYxpKXbz6JjsNEN3Q==} + engines: {node: '>=18.0.0'} + + '@smithy/middleware-stack@4.3.0': + resolution: {integrity: sha512-KtYcs+sJn7AiT0YdM53/6MT0dKsaW2MSAr9MpprRVSfwN9qyKQf2dBIuCXt18/nEZaWerol/bGaQ63G949aovw==} + engines: {node: '>=18.0.0'} + + '@smithy/node-config-provider@4.4.0': + resolution: {integrity: sha512-5RutFJsYoqK4tWYZOjGQrPLowGf2Ku8rbNuVeGkNJ5axIDO4LV/fydBojPtwcDz2zf87YNCOXfNyuEyAwYgI7A==} + engines: {node: '>=18.0.0'} + + '@smithy/node-http-handler@4.7.0': + resolution: {integrity: sha512-PxF57Jr3dPm+RgZWekOL+o96FPdaT62xZUyDfi47uMRFi5rHpwO/ewFbrztrASQ/7H8moNi1sspIHihHpfoKsQ==} + engines: {node: '>=18.0.0'} + + '@smithy/property-provider@4.3.0': + resolution: {integrity: sha512-/YBWtO2SdvPSAUk/Ke1Xpdg1E1lfaNGblla7mnIVGtaGkSQ5bK7KBZqpuj5IokHlU9UcLDvt2QwTLV7oRzBUTA==} + engines: {node: '>=18.0.0'} + + '@smithy/protocol-http@5.4.0': + resolution: {integrity: sha512-WG0LgSZg+WbvWYD04uwIYVyMEpyd0cPx1lkqx61JxunxiFti+wGoFiDKr6wswun1r25Z2f8yUoMQWyxjMnnXtw==} + engines: {node: '>=18.0.0'} + + '@smithy/shared-ini-file-loader@4.5.0': + resolution: {integrity: sha512-xATpw6gcurFztdsUrMNaKb2ugqk3545Whhqg7ZD4sxTg+zI27THjg3IY+InXsVWturOWdCdV+UHQx11g9Sp5Kw==} + engines: {node: '>=18.0.0'} + + '@smithy/signature-v4@5.4.0': + resolution: {integrity: sha512-nkdB9T8JS6iD5PukE5TB8KqcvMEPVPHVUY7J0odYJgyIM40Du2msUhBdoPNRqRArDDcGQqVQcbzu0CZA7b+Nkw==} + engines: {node: '>=18.0.0'} + + '@smithy/smithy-client@4.13.0': + resolution: {integrity: sha512-lysfoRCr7PdD9CsPp9VQuJYRGI5mWYb8FRkbdBSQttxpQmW7tZsFgmpBNKVcgvBsAgBCkYX/UQs0NmznuBcZQQ==} + engines: {node: '>=18.0.0'} + + '@smithy/types@4.14.1': + resolution: {integrity: sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==} + engines: {node: '>=18.0.0'} + + '@smithy/url-parser@4.3.0': + resolution: {integrity: sha512-I5tCWs/ndLrJrbvlnsN1cOt8PVAbQEqg0nNeQqebD5ynQcbhgch9uA7KmpX9vfq/vEudq0iVYAOxt+4aBkUlWA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-base64@4.4.0': + resolution: {integrity: sha512-puJITyefgQ9a5F+wKylCLkf0VCwesWbaN4O3YCEalRin4N0CTPQu/XA3kz/QsMOTgd3knhd0BQwGCBm/tv0Y1A==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-browser@4.3.0': + resolution: {integrity: sha512-83U8xa8EmdExGzFuqBzgXvtmbLQIYcCuCNm5no4rlPqpGdOPGUufzMvLdlw+sPTb01qHIsDDNwOecm4s8ROOPw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-body-length-node@4.3.0': + resolution: {integrity: sha512-Ok2v9zPFfd6uOJMTIIJ8HFdCpARD77q4OHYhwhG9y5X1Y9oeQ0CHUQVJD6LhT6l8FUkFYisqcUaZSg7SArFUTA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-buffer-from@2.2.0': + resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} + engines: {node: '>=14.0.0'} + + '@smithy/util-config-provider@4.3.0': + resolution: {integrity: sha512-kAC6/UB9qW9r2xQAOko2iDxAXmRD2VGMZjnXSEacAhQySdJs58CwvoOE0tHWdtc/lWF4g78X6Z9ucLanJnuVUw==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-browser@4.4.0': + resolution: {integrity: sha512-jKezW5Taa+N2gbkB02UVijH1rFlEJC+cskZzwasFqFJMBBi/bcVgHqcYOX0WOnUk6MDZfHf0gEsr5Br4XMHiAg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-defaults-mode-node@4.3.0': + resolution: {integrity: sha512-xYRuNHHIztu5AzruMJ8kTyA1JsBL/yZKvX5z/A7OHUxsf+rkEESZFZWJDcAj5dDWSu6brWFe5KH6qJNTVztX/w==} + engines: {node: '>=18.0.0'} + + '@smithy/util-endpoints@3.5.0': + resolution: {integrity: sha512-pcvTCp9Wch/9UnWWfRGoG5GJogDXFPjevE+CqALxtPFGA4GqFQRD6eUtgJhHN+NPtohcozI12u1skF2/iubGrQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-middleware@4.3.0': + resolution: {integrity: sha512-X/DNQxgUCbjjs3HosLmt5Yi1NocxjRFiiOgHml4tVV3w4mIbqZxPR8kq7apGPEMnhIpyxeTgFyypMrfxfn2DlQ==} + engines: {node: '>=18.0.0'} + + '@smithy/util-retry@4.4.0': + resolution: {integrity: sha512-pV/Kq4jUuP9raOqwSPeBiut2IWmwbc9vM+nE3ly4YUkzPHbBZvfhikwMOyudER+KHPjakuc8r4TecEPMsI7nVg==} + engines: {node: '>=18.0.0'} + + '@smithy/util-stream@4.6.0': + resolution: {integrity: sha512-BlWg46UASokl3O5YqWmbLpINE5stmAxynXlyOe1nE4dx+tvwgqtT4ug/rPcRg0xVcBnj68XlcOqbXeaGGcH0DA==} + engines: {node: '>=18.0.0'} + + '@smithy/util-utf8@2.3.0': + resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} + engines: {node: '>=14.0.0'} + + '@smithy/util-utf8@4.3.0': + resolution: {integrity: sha512-5hrmCc+dTgZkiFhX72Q16LemYPkvZ1M4pFMOhk0X9tQnLY7dn7zC1+C+aAJn0dw6CXldbqY/KMbMYCwm8yw14g==} + engines: {node: '>=18.0.0'} + + '@smithy/util-waiter@4.4.0': + resolution: {integrity: sha512-7kAlrB3n7/BHyw+uLq83d5jdadPUcDkdMOUSGxvpXjrJ++G0hTedTnoNChjybIxhZ/Gk7sCrfIOLkMAB0LhRBA==} + engines: {node: '>=18.0.0'} + + '@stylistic/eslint-plugin@5.10.0': + resolution: {integrity: sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^9.0.0 || ^10.0.0 + + '@szmarczak/http-timer@5.0.1': + resolution: {integrity: sha512-+PmQX0PiAYPMeVYe237LJAYvOMYW1j2rH5YROyS3b4CTVJum34HfRvKvAzozHAQG0TnHNdUfY9nCeUyRAs//cw==} + engines: {node: '>=14.16'} + + '@types/archiver@7.0.0': + resolution: {integrity: sha512-/3vwGwx9n+mCQdYZ2IKGGHEFL30I96UgBlk8EtRDDFQ9uxM1l4O5Ci6r00EMAkiDaTqD9DQ6nVrWRICnBPtzzg==} + + '@types/chai@5.2.3': + resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} + + '@types/config@3.3.5': + resolution: {integrity: sha512-itq2HtXQBrNUKwMNZnb9mBRE3T99VYCdl1gjST9rq+9kFaB1iMMGuDeZnP88qid73DnpAMKH9ZolqDpS1Lz7+w==} + + '@types/debug@4.1.13': + resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} + + '@types/deep-eql@4.0.2': + resolution: {integrity: sha512-c9h9dVVMigMPc4bwTvC5dxqtqJZwQPePsWjPlpSOnojbor6pGqdk541lfA7AqFQr5pB1BRdq0juY9db81BwyFw==} + + '@types/esrecurse@4.3.1': + resolution: {integrity: sha512-xJBAbDifo5hpffDBuHl0Y8ywswbiAp/Wi7Y/GtAgSlZyIABppyurxVueOPE8LUQOxdlgi6Zqce7uoEpqNTeiUw==} + + '@types/estree@1.0.8': + resolution: {integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==} + + '@types/estree@1.0.9': + resolution: {integrity: sha512-GhdPgy1el4/ImP05X05Uw4cw2/M93BCUmnEvWZNStlCzEKME4Fkk+YpoA5OiHNQmoS7Cafb8Xa3Pya8m1Qrzeg==} + + '@types/http-cache-semantics@4.2.0': + resolution: {integrity: sha512-L3LgimLHXtGkWikKnsPg0/VFx9OGZaC+eN1u4r+OB1XRqH3meBIAVC2zr1WdMH+RHmnRkqliQAOHNJ/E0j/e0Q==} + + '@types/json-schema@7.0.15': + resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==} + + '@types/luxon@3.7.1': + resolution: {integrity: sha512-H3iskjFIAn5SlJU7OuxUmTEpebK6TKB8rxZShDslBMZJ5u9S//KM1sbdAisiSrqwLQncVjnpi2OK2J51h+4lsg==} + + '@types/ms@2.1.0': + resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==} + + '@types/mute-stream@0.0.4': + resolution: {integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==} + + '@types/node@22.19.18': + resolution: {integrity: sha512-9v00a+dn2yWVsYDEunWC4g/TcRKVq3r8N5FuZp7u0SGrPvdN9c2yXI9bBuf5Fl0hNCb+QTIePTn5pJs2pwBOQQ==} + + '@types/node@25.6.0': + resolution: {integrity: sha512-+qIYRKdNYJwY3vRCZMdJbPLJAtGjQBudzZzdzwQYkEPQd+PJGixUL5QfvCLDaULoLv+RhT3LDkwEfKaAkgSmNQ==} + + '@types/prompts@2.4.9': + resolution: {integrity: sha512-qTxFi6Buiu8+50/+3DGIWLHM6QuWsEKugJnnP6iv2Mc4ncxE4A/OJkjuVOA+5X0X1S/nq5VJRa8Lu+nwcvbrKA==} + + '@types/readable-stream@4.0.23': + resolution: {integrity: sha512-wwXrtQvbMHxCbBgjHaMGEmImFTQxxpfMOR/ZoQnXxB1woqkUbdLGFDgauo00Py9IudiaqSeiBiulSV9i6XIPig==} + + '@types/readdir-glob@1.1.5': + resolution: {integrity: sha512-raiuEPUYqXu+nvtY2Pe8s8FEmZ3x5yAH4VkLdihcPdalvsHltomrRC9BzuStrJ9yk06470hS0Crw0f1pXqD+Hg==} + + '@types/semver@7.7.1': + resolution: {integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==} + + '@types/tunnel@0.0.7': + resolution: {integrity: sha512-VYKjZSmb2PvUwXoux4Gy4LAk7kzOB1ktkjyL4lxvpkqL2adgR+Qrh/yFyWluvJgIXWFicqs7XuzPI2NbTO/r3Q==} + + '@types/uuid@10.0.0': + resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} + + '@types/wrap-ansi@3.0.0': + resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} + + '@types/ws@8.18.1': + resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} + + '@typescript-eslint/eslint-plugin@8.59.2': + resolution: {integrity: sha512-j/bwmkBvHUtPNxzuWe5z6BEk3q54YRyGlBXkSsmfoih7zNrBvl5A9A98anlp/7JbyZcWIJ8KXo/3Tq/DjFLtuQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + '@typescript-eslint/parser': ^8.59.2 + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/parser@8.59.2': + resolution: {integrity: sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/project-service@8.59.2': + resolution: {integrity: sha512-+2hqvEkeyf/0FBor67duF0Ll7Ot8jyKzDQOSrxazF/danillRq2DwR9dLptsXpoZQqxE1UisSmoZewrlPas9Vw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/scope-manager@8.59.2': + resolution: {integrity: sha512-JzfyEpEtOU89CcFSwyNS3mu4MLvLSXqnmX05+aKBDM+TdR5jzcGOEBwxwGNxrEQ7p/z6kK2WyioCGBf2zZBnvg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/tsconfig-utils@8.59.2': + resolution: {integrity: sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/type-utils@8.59.2': + resolution: {integrity: sha512-nhqaj1nmTdVVl/BP5omXNRGO38jn5iosis2vbdmupF2txCf8ylWT8lx+JlvMYYVqzGVKtjojUFoQ3JRWK+mfzQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/types@8.59.2': + resolution: {integrity: sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.59.2': + resolution: {integrity: sha512-o0XPGNwcWw+FIwStOWn+BwBuEmL6QXP0rsvAFg7ET1dey1Nr6Wb1ac8p5HEsK0ygO/6mUxlk+YWQD9xcb/nnXg==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/utils@8.59.2': + resolution: {integrity: sha512-Juw3EinkXqjaffxz6roowvV7GZT/kET5vSKKZT6upl5TXdWkLkYmNPXwDDL2Vkt2DPn0nODIS4egC/0AGxKo/Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + '@typescript-eslint/visitor-keys@8.59.2': + resolution: {integrity: sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@vitest/expect@3.2.4': + resolution: {integrity: sha512-Io0yyORnB6sikFlt8QW5K7slY4OjqNX9jmJQ02QDda8lyM6B5oNgVWoSoKPac8/kgnCUzuHQKrSLtu/uOqqrig==} + + '@vitest/mocker@3.2.4': + resolution: {integrity: sha512-46ryTE9RZO/rfDd7pEqFl7etuyzekzEhUbTW3BvmeO/BcCMEgq59BKhek3dXDWgAj4oMK6OZi+vRr1wPW6qjEQ==} + peerDependencies: + msw: ^2.4.9 + vite: ^5.0.0 || ^6.0.0 || ^7.0.0-0 + peerDependenciesMeta: + msw: + optional: true + vite: + optional: true + + '@vitest/pretty-format@3.2.4': + resolution: {integrity: sha512-IVNZik8IVRJRTr9fxlitMKeJeXFFFN0JaB9PHPGQ8NKQbGpfjlTx9zO4RefN8gp7eqjNy8nyK3NZmBzOPeIxtA==} + + '@vitest/runner@3.2.4': + resolution: {integrity: sha512-oukfKT9Mk41LreEW09vt45f8wx7DordoWUZMYdY/cyAk7w5TWkTRCNZYF7sX7n2wB7jyGAl74OxgwhPgKaqDMQ==} + + '@vitest/snapshot@3.2.4': + resolution: {integrity: sha512-dEYtS7qQP2CjU27QBC5oUOxLE/v5eLkGqPE0ZKEIDGMs4vKWe7IjgLOeauHsR0D5YuuycGRO5oSRXnwnmA78fQ==} + + '@vitest/spy@3.2.4': + resolution: {integrity: sha512-vAfasCOe6AIK70iP5UD11Ac4siNUNJ9i/9PZ3NKx07sG6sUxeag1LWdNrMWeKKYBLlzuK+Gn65Yd5nyL6ds+nw==} + + '@vitest/utils@3.2.4': + resolution: {integrity: sha512-fB2V0JFrQSMsCo9HiSq3Ezpdv4iYaXRG1Sx8edX3MwxfyNn83mKiGzOcH+Fkxt4MHxr3y42fQi1oeAInqgX2QA==} + + abort-controller@3.0.0: + resolution: {integrity: sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==} + engines: {node: '>=6.5'} + + acorn-jsx@5.3.2: + resolution: {integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==} + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 + + acorn-walk@8.3.5: + resolution: {integrity: sha512-HEHNfbars9v4pgpW6SO1KSPkfoS0xVOM/9UzkJltjlsHZmJasxg8aXkuZa7SMf8vKGIBhpUsPluQSqhJFCqebw==} + engines: {node: '>=0.4.0'} + + acorn@8.16.0: + resolution: {integrity: sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==} + engines: {node: '>=0.4.0'} + hasBin: true + + ajv-formats@3.0.1: + resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true + + ajv@6.15.0: + resolution: {integrity: sha512-fgFx7Hfoq60ytK2c7DhnF8jIvzYgOMxfugjLOSMHjLIPgenqa7S7oaagATUq99mV6IYvN2tRmC0wnTYX6iPbMw==} + + ajv@8.20.0: + resolution: {integrity: sha512-Thbli+OlOj+iMPYFBVBfJ3OmCAnaSyNn4M1vz9T6Gka5Jt9ba/HIR56joy65tY6kx/FCF5VXNB819Y7/GUrBGA==} + + ansi-escapes@4.3.2: + resolution: {integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==} + engines: {node: '>=8'} + + ansi-escapes@7.3.0: + resolution: {integrity: sha512-BvU8nYgGQBxcmMuEeUEmNTvrMVjJNSH7RgW24vXexN4Ven6qCvy4TntnvlnwnMLTVlcRQQdbRY8NKnaIoeWDNg==} + engines: {node: '>=18'} + + ansi-regex@5.0.1: + resolution: {integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==} + engines: {node: '>=8'} + + ansi-regex@6.2.2: + resolution: {integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==} + engines: {node: '>=12'} + + ansi-styles@4.3.0: + resolution: {integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==} + engines: {node: '>=8'} + + ansi-styles@6.2.3: + resolution: {integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==} + engines: {node: '>=12'} + + ansis@3.17.0: + resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} + engines: {node: '>=14'} + + archiver-utils@5.0.2: + resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} + engines: {node: '>= 14'} + + archiver@7.0.1: + resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} + engines: {node: '>= 14'} + + argparse@2.0.1: + resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} + + array-ify@1.0.0: + resolution: {integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==} + + assertion-error@2.0.1: + resolution: {integrity: sha512-Izi8RQcffqCeNVgFigKli1ssklIbpHnCYc6AknXGYoB6grJqyeby7jv12JUQgmTAnIDnbck1uxksT4dzN3PWBA==} + engines: {node: '>=12'} + + ast-types@0.16.1: + resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} + engines: {node: '>=4'} + + async-retry@1.3.3: + resolution: {integrity: sha512-wfr/jstw9xNi/0teMHrRW7dsz3Lt5ARhYNZ2ewpadnhaIp5mbALhOAP+EAdsC7t4Z6wqsDVv9+W6gm1Dk9mEyw==} + + async@3.2.6: + resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==} + + asynckit@0.4.0: + resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + + atomically@2.1.1: + resolution: {integrity: sha512-P4w9o2dqARji6P7MHprklbfiArZAWvo07yW7qs3pdljb3BWr12FIB7W+p0zJiuiVsUpRO0iZn1kFFcpPegg0tQ==} + + axios@1.16.0: + resolution: {integrity: sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==} + + b4a@1.8.1: + resolution: {integrity: sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==} + peerDependencies: + react-native-b4a: '*' + peerDependenciesMeta: + react-native-b4a: + optional: true + + balanced-match@1.0.2: + resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} + + balanced-match@4.0.4: + resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} + engines: {node: 18 || 20 || >=22} + + bare-events@2.8.2: + resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} + peerDependencies: + bare-abort-controller: '*' + peerDependenciesMeta: + bare-abort-controller: + optional: true + + bare-fs@4.7.1: + resolution: {integrity: sha512-WDRsyVN52eAx/lBamKD6uyw8H4228h/x0sGGGegOamM2cd7Pag88GfMQalobXI+HaEUxpCkbKQUDOQqt9wawRw==} + engines: {bare: '>=1.16.0'} + peerDependencies: + bare-buffer: '*' + peerDependenciesMeta: + bare-buffer: + optional: true + + bare-os@3.9.1: + resolution: {integrity: sha512-6M5XjcnsygQNPMCMPXSK379xrJFiZ/AEMNBmFEmQW8d/789VQATvriyi5r0HYTL9TkQ26rn3kgdTG3aisbrXkQ==} + engines: {bare: '>=1.14.0'} + + bare-path@3.0.0: + resolution: {integrity: sha512-tyfW2cQcB5NN8Saijrhqn0Zh7AnFNsnczRcuWODH0eYAXBsJ5gVxAUuNr7tsHSC6IZ77cA0SitzT+s47kot8Mw==} + + bare-stream@2.13.1: + resolution: {integrity: sha512-Vp0cnjYyrEC4whYTymQ+YZi6pBpfiICZO3cfRG8sy67ZNWe951urv1x4eW1BKNngw3U+3fPYb5JQvHbCtxH7Ow==} + peerDependencies: + bare-abort-controller: '*' + bare-buffer: '*' + bare-events: '*' + peerDependenciesMeta: + bare-abort-controller: + optional: true + bare-buffer: + optional: true + bare-events: + optional: true + + bare-url@2.4.3: + resolution: {integrity: sha512-Kccpc7ACfXaxfeInfqKcZtW4pT5YBn1mesc4sCsun6sRwtbJ4h+sNOaksUpYEJUKfN65YWC6Bw2OJEFiKxq8nQ==} + + base64-js@1.5.1: + resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} + + bl@6.1.6: + resolution: {integrity: sha512-jLsPgN/YSvPUg9UX0Kd73CXpm2Psg9FxMeCSXnk3WBO3CMT10JMwijubhGfHCnFu6TPn1ei3b975dxv7K2pWVg==} + + bowser@2.14.1: + resolution: {integrity: sha512-tzPjzCxygAKWFOJP011oxFHs57HzIhOEracIgAePE4pqB3LikALKnSzUyU4MGs9/iCEUuHlAJTjTc5M+u7YEGg==} + + brace-expansion@2.1.0: + resolution: {integrity: sha512-TN1kCZAgdgweJhWWpgKYrQaMNHcDULHkWwQIspdtjV4Y5aurRdZpjAqn6yX3FPqTA9ngHCc4hJxMAMgGfve85w==} + + brace-expansion@5.0.6: + resolution: {integrity: sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==} + engines: {node: 18 || 20 || >=22} + + braces@3.0.3: + resolution: {integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==} + engines: {node: '>=8'} + + broker-factory@3.1.14: + resolution: {integrity: sha512-L45k5HMbPIrMid0nTOZ/UPXG/c0aRuQKVrSDFIb1zOkvfiyHgYmIjc3cSiN1KwQIvRDOtKE0tfb3I9EZ3CmpQQ==} + + buffer-crc32@1.0.0: + resolution: {integrity: sha512-Db1SbgBS/fg/392AblrMJk97KggmvYhr4pB5ZIMTWtaivCPMWLkmb7m21cJvpvgK+J3nsU2CmmixNBZx4vFj/w==} + engines: {node: '>=8.0.0'} + + buffer-from@1.1.2: + resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==} + + buffer@6.0.3: + resolution: {integrity: sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==} + + bundle-name@4.1.0: + resolution: {integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==} + engines: {node: '>=18'} + + cac@6.7.14: + resolution: {integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==} + engines: {node: '>=8'} + + cacheable-lookup@7.0.0: + resolution: {integrity: sha512-+qJyx4xiKra8mZrcwhjMRMUhD5NR1R8esPkzIYxX96JiecFoxAXFuz/GpR3+ev4PE1WamHip78wV0vcmPQtp8w==} + engines: {node: '>=14.16'} + + cacheable-request@10.2.14: + resolution: {integrity: sha512-zkDT5WAF4hSSoUgyfg5tFIxz8XQK+25W/TLVojJTMKBaxevLBBtLxgqguAuVQB8PVW79FVjHcU+GJ9tVbDZ9mQ==} + engines: {node: '>=14.16'} + + call-bind-apply-helpers@1.0.2: + resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==} + engines: {node: '>= 0.4'} + + callsites@3.1.0: + resolution: {integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==} + engines: {node: '>=6'} + + camel-case@4.1.2: + resolution: {integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==} + + capital-case@1.0.4: + resolution: {integrity: sha512-ds37W8CytHgwnhGGTi88pcPyR15qoNkOpYwmMMfnWqqWgESapLqvDx6huFjQ5vqWSn2Z06173XNA7LtMOeUh1A==} + + chai@5.3.3: + resolution: {integrity: sha512-4zNhdJD/iOjSH0A05ea+Ke6MU5mmpQcbQsSOkgdaUMJ9zTlDTD/GYlwohmIE2u0gaxHYiVHEn1Fw9mZ/ktJWgw==} + engines: {node: '>=18'} + + chalk@5.6.2: + resolution: {integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==} + engines: {node: ^12.17.0 || ^14.13 || >=16.0.0} + + change-case@4.1.2: + resolution: {integrity: sha512-bSxY2ws9OtviILG1EiY5K7NNxkqg/JnRnFxLtKQ96JaviiIxi7djMrSd0ECT9AC+lttClmYwKw53BWpOMblo7A==} + + chardet@2.1.1: + resolution: {integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==} + + check-error@2.1.3: + resolution: {integrity: sha512-PAJdDJusoxnwm1VwW07VWwUN1sl7smmC3OKggvndJFadxxDRyFJBX/ggnu/KE4kQAB7a3Dp8f/YXC1FlUprWmA==} + engines: {node: '>= 16'} + + chownr@3.0.0: + resolution: {integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==} + engines: {node: '>=18'} + + ci-info@4.4.0: + resolution: {integrity: sha512-77PSwercCZU2Fc4sX94eF8k8Pxte6JAwL4/ICZLFjJLqegs7kCuAsqqj/70NQF6TvDpgFjkubQB2FW2ZZddvQg==} + engines: {node: '>=8'} + + clean-stack@3.0.1: + resolution: {integrity: sha512-lR9wNiMRcVQjSB3a7xXGLuz4cr4wJuuXlaAEbRutGowQTmlp7R72/DOgN21e8jdwblMWl9UOJMJXarX94pzKdg==} + engines: {node: '>=10'} + + cli-cursor@5.0.0: + resolution: {integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==} + engines: {node: '>=18'} + + cli-spinners@2.9.2: + resolution: {integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==} + engines: {node: '>=6'} + + cli-spinners@3.4.0: + resolution: {integrity: sha512-bXfOC4QcT1tKXGorxL3wbJm6XJPDqEnij2gQ2m7ESQuE+/z9YFIWnl/5RpTiKWbMq3EVKR4fRLJGn6DVfu0mpw==} + engines: {node: '>=18.20'} + + cli-truncate@5.2.0: + resolution: {integrity: sha512-xRwvIOMGrfOAnM1JYtqQImuaNtDEv9v6oIYAs4LIHwTiKee8uwvIi363igssOC0O5U04i4AlENs79LQLu9tEMw==} + engines: {node: '>=20'} + + cli-width@4.1.0: + resolution: {integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==} + engines: {node: '>= 12'} + + cliui@8.0.1: + resolution: {integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==} + engines: {node: '>=12'} + + color-convert@2.0.1: + resolution: {integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==} + engines: {node: '>=7.0.0'} + + color-name@1.1.4: + resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} + + colorette@2.0.20: + resolution: {integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==} + + combined-stream@1.0.8: + resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==} + engines: {node: '>= 0.8'} + + commander@14.0.3: + resolution: {integrity: sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==} + engines: {node: '>=20'} + + commist@3.2.0: + resolution: {integrity: sha512-4PIMoPniho+LqXmpS5d3NuGYncG6XWlkBSVGiWycL22dd42OYdUGil2CWuzklaJoNxyxUSpO4MKIBU94viWNAw==} + + compare-func@2.0.0: + resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} + + compress-commons@6.0.2: + resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} + engines: {node: '>= 14'} + + concat-stream@2.0.0: + resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} + engines: {'0': node >= 6.0} + + conf@15.1.0: + resolution: {integrity: sha512-Uy5YN9KEu0WWDaZAVJ5FAmZoaJt9rdK6kH+utItPyGsCqCgaTKkrmZx3zoE0/3q6S3bcp3Ihkk+ZqPxWxFK5og==} + engines: {node: '>=20'} + + config-chain@1.1.13: + resolution: {integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==} + + config@4.4.1: + resolution: {integrity: sha512-XfN4Q4+wBKkGtgMyQ+5ayjepdb0MrdiGKfBr0G1PTLx9rnqsX+Xiw03LEUtSALZU0UVfcFp6+xYV0NL8HLF94g==} + engines: {node: '>= 20.0.0'} + + constant-case@3.0.4: + resolution: {integrity: sha512-I2hSBi7Vvs7BEuJDr5dDHfzb/Ruj3FyvFyh7KLilAjNQw3Be+xgqUBA2W6scVEcL0hL1dwPRtIqEPVUCKkSsyQ==} + + content-type@1.0.5: + resolution: {integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==} + engines: {node: '>= 0.6'} + + conventional-changelog-angular@8.3.1: + resolution: {integrity: sha512-6gfI3otXK5Ph5DfCOI1dblr+kN3FAm5a97hYoQkqNZxOaYa5WKfXH+AnpsmS+iUH2mgVC2Cg2Qw9m5OKcmNrIg==} + engines: {node: '>=18'} + + conventional-changelog-conventionalcommits@9.3.1: + resolution: {integrity: sha512-dTYtpIacRpcZgrvBYvBfArMmK2xvIpv2TaxM0/ZI5CBtNUzvF2x0t15HsbRABWprS6UPmvj+PzHVjSx4qAVKyw==} + engines: {node: '>=18'} + + conventional-commits-parser@6.4.0: + resolution: {integrity: sha512-tvRg7FIBNlyPzjdG8wWRlPHQJJHI7DylhtRGeU9Lq+JuoPh5BKpPRX83ZdLrvXuOSu5Eo/e7SzOQhU4Hd2Miuw==} + engines: {node: '>=18'} + hasBin: true + + core-util-is@1.0.3: + resolution: {integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==} + + cosmiconfig-typescript-loader@6.3.0: + resolution: {integrity: sha512-Akr82WH1Wfqatyiqpj8HDkO2o2KmJRu1FhKfSNJP3K4IdXwHfEyL7MOb62i1AGQVLtIQM+iCE9CGOtrfhR+mmA==} + engines: {node: '>=v18'} + peerDependencies: + '@types/node': '*' + cosmiconfig: '>=9' + typescript: '>=5' + + cosmiconfig@9.0.1: + resolution: {integrity: sha512-hr4ihw+DBqcvrsEDioRO31Z17x71pUYoNe/4h6Z0wB72p7MU7/9gH8Q3s12NFhHPfYBBOV3qyfUxmr/Yn3shnQ==} + engines: {node: '>=14'} + peerDependencies: + typescript: '>=4.9.5' + peerDependenciesMeta: + typescript: + optional: true + + crc-32@1.2.2: + resolution: {integrity: sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==} + engines: {node: '>=0.8'} + hasBin: true + + crc32-stream@6.0.0: + resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} + engines: {node: '>= 14'} + + cross-env@10.1.0: + resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==} + engines: {node: '>=20'} + hasBin: true + + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} + engines: {node: '>= 8'} + + debounce-fn@6.0.0: + resolution: {integrity: sha512-rBMW+F2TXryBwB54Q0d8drNEI+TfoS9JpNTAoVpukbWEhjXQq4rySFYLaqXMFXwdv61Zb2OHtj5bviSoimqxRQ==} + engines: {node: '>=18'} + + debug@4.4.3: + resolution: {integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==} + engines: {node: '>=6.0'} + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true + + decompress-response@6.0.0: + resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==} + engines: {node: '>=10'} + + deep-eql@5.0.2: + resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==} + engines: {node: '>=6'} + + deep-is@0.1.4: + resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==} + + default-browser-id@5.0.1: + resolution: {integrity: sha512-x1VCxdX4t+8wVfd1so/9w+vQ4vx7lKd2Qp5tDRutErwmR85OgmfX7RlLRMWafRMY7hbEiXIbudNrjOAPa/hL8Q==} + engines: {node: '>=18'} + + default-browser@5.5.0: + resolution: {integrity: sha512-H9LMLr5zwIbSxrmvikGuI/5KGhZ8E2zH3stkMgM5LpOWDutGM2JZaj460Udnf1a+946zc7YBgrqEWwbk7zHvGw==} + engines: {node: '>=18'} + + defer-to-connect@2.0.1: + resolution: {integrity: sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==} + engines: {node: '>=10'} + + define-lazy-prop@3.0.0: + resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} + engines: {node: '>=12'} + + delayed-stream@1.0.0: + resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} + engines: {node: '>=0.4.0'} + + detect-indent@7.0.2: + resolution: {integrity: sha512-y+8xyqdGLL+6sh0tVeHcfP/QDd8gUgbasolJJpY7NgeQGSZ739bDtSiaiDgtoicy+mtYB81dKLxO9xRhCyIB3A==} + engines: {node: '>=12.20'} + + detect-newline@4.0.1: + resolution: {integrity: sha512-qE3Veg1YXzGHQhlA6jzebZN2qVf6NX+A7m7qlhCGG30dJixrAQhYOsJjsnBjJkCSmuOPpCk30145fr8FV0bzog==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + dot-case@3.0.4: + resolution: {integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==} + + dot-prop@10.1.0: + resolution: {integrity: sha512-MVUtAugQMOff5RnBy2d9N31iG0lNwg1qAoAOn7pOK5wf94WIaE3My2p3uwTQuvS2AcqchkcR3bHByjaM0mmi7Q==} + engines: {node: '>=20'} + + dot-prop@5.3.0: + resolution: {integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==} + engines: {node: '>=8'} + + dotenv@17.4.2: + resolution: {integrity: sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==} + engines: {node: '>=12'} + + dunder-proto@1.0.1: + resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} + engines: {node: '>= 0.4'} + + eastasianwidth@0.2.0: + resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} + + ejs@3.1.10: + resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} + engines: {node: '>=0.10.0'} + hasBin: true + + emoji-regex@10.6.0: + resolution: {integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==} + + emoji-regex@8.0.0: + resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} + + emoji-regex@9.2.2: + resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} + + env-paths@2.2.1: + resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} + engines: {node: '>=6'} + + env-paths@3.0.0: + resolution: {integrity: sha512-dtJUTepzMW3Lm/NPxRf3wP4642UWhjL2sQxc+ym2YMj1m/H2zDNQOlezafzkHwn6sMstjHTwG6iQQsctDW/b1A==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + environment@1.1.0: + resolution: {integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==} + engines: {node: '>=18'} + + error-ex@1.3.2: + resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} + + es-define-property@1.0.1: + resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==} + engines: {node: '>= 0.4'} + + es-errors@1.3.0: + resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==} + engines: {node: '>= 0.4'} + + es-module-lexer@1.7.0: + resolution: {integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==} + + es-object-atoms@1.1.1: + resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==} + engines: {node: '>= 0.4'} + + es-set-tostringtag@2.1.0: + resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==} + engines: {node: '>= 0.4'} + + es-toolkit@1.46.1: + resolution: {integrity: sha512-5eNtXOs3tbfxXOj04tjjseeWkRWaoCjdEI+96DgwzZoe6c9juL49pXlzAFTI72aWC9Y8p7168g6XIKjh7k6pyQ==} + + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} + hasBin: true + + escalade@3.2.0: + resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} + engines: {node: '>=6'} + + escape-string-regexp@4.0.0: + resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==} + engines: {node: '>=10'} + + eslint-scope@9.1.2: + resolution: {integrity: sha512-xS90H51cKw0jltxmvmHy2Iai1LIqrfbw57b79w/J7MfvDfkIkFZ+kj6zC3BjtUwh150HsSSdxXZcsuv72miDFQ==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint-visitor-keys@3.4.3: + resolution: {integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + eslint-visitor-keys@4.2.1: + resolution: {integrity: sha512-Uhdk5sfqcee/9H/rCOJikYz67o0a2Tw2hGRPOG2Y1R2dg7brRe1uG0yaNQDHu+TO/uQPF/5eCapvYSmHUjt7JQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + eslint-visitor-keys@5.0.1: + resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + eslint@10.3.0: + resolution: {integrity: sha512-XbEXaRva5cF0ZQB8w6MluHA0kZZfV2DuCMJ3ozyEOHLwDpZX2Lmm/7Pp0xdJmI0GL1W05VH5VwIFHEm1Vcw2gw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + hasBin: true + peerDependencies: + jiti: '*' + peerDependenciesMeta: + jiti: + optional: true + + espree@10.4.0: + resolution: {integrity: sha512-j6PAQ2uUr79PZhBjP5C5fhl8e39FmRnOjsD5lGnWrFU8i2G776tBK7+nP8KuQUTTyAZUwfQqXAgrVH5MbH9CYQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + espree@11.2.0: + resolution: {integrity: sha512-7p3DrVEIopW1B1avAGLuCSh1jubc01H2JHc8B4qqGblmg5gI9yumBgACjWo4JlIc04ufug4xJ3SQI8HkS/Rgzw==} + engines: {node: ^20.19.0 || ^22.13.0 || >=24} + + esprima@4.0.1: + resolution: {integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==} + engines: {node: '>=4'} + hasBin: true + + esquery@1.7.0: + resolution: {integrity: sha512-Ap6G0WQwcU/LHsvLwON1fAQX9Zp0A2Y6Y/cJBl9r/JbW90Zyg4/zbG6zzKa2OTALELarYHmKu0GhpM5EO+7T0g==} + engines: {node: '>=0.10'} + + esrecurse@4.3.0: + resolution: {integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==} + engines: {node: '>=4.0'} + + estraverse@5.3.0: + resolution: {integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==} + engines: {node: '>=4.0'} + + estree-walker@3.0.3: + resolution: {integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==} + + esutils@2.0.3: + resolution: {integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==} + engines: {node: '>=0.10.0'} + + event-target-shim@5.0.1: + resolution: {integrity: sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==} + engines: {node: '>=6'} + + eventemitter3@5.0.4: + resolution: {integrity: sha512-mlsTRyGaPBjPedk6Bvw+aqbsXDtoAyAzm5MO7JgU+yVRyMQ5O8bD4Kcci7BS85f93veegeCPkL8R4GLClnjLFw==} + + events-universal@1.0.1: + resolution: {integrity: sha512-LUd5euvbMLpwOF8m6ivPCbhQeSiYVNb8Vs0fQ8QjXo0JTkEHpz8pxdQf0gStltaPpw0Cca8b39KxvK9cfKRiAw==} + + events@3.3.0: + resolution: {integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==} + engines: {node: '>=0.8.x'} + + execa@5.1.1: + resolution: {integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==} + engines: {node: '>=10'} + + execa@9.6.1: + resolution: {integrity: sha512-9Be3ZoN4LmYR90tUoVu2te2BsbzHfhJyfEiAVfz7N5/zv+jduIfLrV2xdQXOHbaD6KgpGdO9PRPM1Y4Q9QkPkA==} + engines: {node: ^18.19.0 || >=20.5.0} + + expect-type@1.3.0: + resolution: {integrity: sha512-knvyeauYhqjOYvQ66MznSMs83wmHrCycNEN6Ao+2AeYEfxUIkuiVxdEa1qlGEPK+We3n0THiDciYSsCcgW/DoA==} + engines: {node: '>=12.0.0'} + + fast-deep-equal@3.1.3: + resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} + + fast-fifo@1.3.2: + resolution: {integrity: sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==} + + fast-json-stable-stringify@2.1.0: + resolution: {integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==} + + fast-levenshtein@2.0.6: + resolution: {integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==} + + fast-levenshtein@3.0.0: + resolution: {integrity: sha512-hKKNajm46uNmTlhHSyZkmToAc56uZJwYq7yrciZjqOxnlfQwERDQJmHPUp7m1m9wx8vgOe8IaCKZ5Kv2k1DdCQ==} + + fast-unique-numbers@9.0.27: + resolution: {integrity: sha512-nDA9ADeINN8SA2u2wCtU+siWFTTDqQR37XvgPIDDmboWQeExz7X0mImxuaN+kJddliIqy2FpVRmnvRZ+j8i1/A==} + engines: {node: '>=18.2.0'} + + fast-uri@3.1.2: + resolution: {integrity: sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==} + + fast-xml-builder@1.2.0: + resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==} + + fast-xml-parser@5.7.2: + resolution: {integrity: sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w==} + hasBin: true + + fastest-levenshtein@1.0.16: + resolution: {integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==} + engines: {node: '>= 4.9.1'} + + fdir@6.5.0: + resolution: {integrity: sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==} + engines: {node: '>=12.0.0'} + peerDependencies: + picomatch: ^3 || ^4 + peerDependenciesMeta: + picomatch: + optional: true + + figures@6.1.0: + resolution: {integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==} + engines: {node: '>=18'} + + file-entry-cache@8.0.0: + resolution: {integrity: sha512-XXTUwCvisa5oacNGRP9SfNtYBNAMi+RPwBFmblZEF7N7swHYQS6/Zfk7SRwx4D5j3CH211YNRco1DEMNVfZCnQ==} + engines: {node: '>=16.0.0'} + + filelist@1.0.6: + resolution: {integrity: sha512-5giy2PkLYY1cP39p17Ech+2xlpTRL9HLspOfEgm0L6CwBXBTgsK5ou0JtzYuepxkaQ/tvhCFIJ5uXo0OrM2DxA==} + + fill-range@7.1.1: + resolution: {integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==} + engines: {node: '>=8'} + + find-up@5.0.0: + resolution: {integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==} + engines: {node: '>=10'} + + find-yarn-workspace-root@2.0.0: + resolution: {integrity: sha512-1IMnbjt4KzsQfnhnzNd8wUEgXZ44IzZaZmnLYx7D5FZlaHt2gW20Cri8Q+E/t5tIj4+epTBub+2Zxu/vNILzqQ==} + + flat-cache@4.0.1: + resolution: {integrity: sha512-f7ccFPK3SXFHpx15UIGyRJ/FJQctuKZ0zVuN3frBo4HnK3cay9VEW0R6yPYFHC0AgqhukPzKjq22t5DmAyqGyw==} + engines: {node: '>=16'} + + flatted@3.4.2: + resolution: {integrity: sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==} + + follow-redirects@1.16.0: + resolution: {integrity: sha512-y5rN/uOsadFT/JfYwhxRS5R7Qce+g3zG97+JrtFZlC9klX/W5hD7iiLzScI4nZqUS7DNUdhPgw4xI8W2LuXlUw==} + engines: {node: '>=4.0'} + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true + + foreground-child@3.3.1: + resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} + engines: {node: '>=14'} + + form-data-encoder@2.1.4: + resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} + engines: {node: '>= 14.17'} + + form-data@4.0.5: + resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==} + engines: {node: '>= 6'} + + fs-extra@8.1.0: + resolution: {integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==} + engines: {node: '>=6 <7 || >=8'} + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + function-bind@1.1.2: + resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==} + + get-caller-file@2.0.5: + resolution: {integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==} + engines: {node: 6.* || 8.* || >= 10.*} + + get-east-asian-width@1.6.0: + resolution: {integrity: sha512-QRbvDIbx6YklUe6RxeTeleMR0yv3cYH6PsPZHcnVn7xv7zO1BHN8r0XETu8n6Ye3Q+ahtSarc3WgtNWmehIBfA==} + engines: {node: '>=18'} + + get-intrinsic@1.3.0: + resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==} + engines: {node: '>= 0.4'} + + get-package-type@0.1.0: + resolution: {integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==} + engines: {node: '>=8.0.0'} + + get-proto@1.0.1: + resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==} + engines: {node: '>= 0.4'} + + get-stdin@9.0.0: + resolution: {integrity: sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==} + engines: {node: '>=12'} + + get-stream@6.0.1: + resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} + engines: {node: '>=10'} + + get-stream@9.0.1: + resolution: {integrity: sha512-kVCxPF3vQM/N0B1PmoqVUqgHP+EeVjmZSQn+1oCRPxd2P21P2F19lIgbR3HBosbB1PUhOAoctJnfEn2GbN2eZA==} + engines: {node: '>=18'} + + giget@3.2.0: + resolution: {integrity: sha512-GvHTWcykIR/fP8cj8dMpuMMkvaeJfPvYnhq0oW+chSeIr+ldX21ifU2Ms6KBoyKZQZmVaUAAhQ2EZ68KJF8a7A==} + hasBin: true + + git-hooks-list@3.2.0: + resolution: {integrity: sha512-ZHG9a1gEhUMX1TvGrLdyWb9kDopCBbTnI8z4JgRMYxsijWipgjSEYoPWqBuIB0DnRnvqlQSEeVmzpeuPm7NdFQ==} + + git-raw-commits@5.0.1: + resolution: {integrity: sha512-Y+csSm2GD/PCSh6Isd/WiMjNAydu0VBiG9J7EdQsNA5P9uXvLayqjmTsNlK5Gs9IhblFZqOU0yid5Il5JPoLiQ==} + engines: {node: '>=18'} + hasBin: true + + git-repo-info@2.1.1: + resolution: {integrity: sha512-8aCohiDo4jwjOwma4FmYFd3i97urZulL8XL24nIPxuE+GZnfsAyy/g2Shqx6OjUiFKUXZM+Yy+KHnOmmA3FVcg==} + engines: {node: '>= 4.0'} + + github-slugger@2.0.0: + resolution: {integrity: sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==} + + glob-parent@6.0.2: + resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} + engines: {node: '>=10.13.0'} + + glob@10.5.0: + resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} + deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me + hasBin: true + + glob@13.0.6: + resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} + engines: {node: 18 || 20 || >=22} + + global-directory@5.0.0: + resolution: {integrity: sha512-1pgFdhK3J2LeM+dVf2Pd424yHx2ou338lC0ErNP2hPx4j8eW1Sp0XqSjNxtk6Tc4Kr5wlWtSvz8cn2yb7/SG/w==} + engines: {node: '>=20'} + + globals@17.6.0: + resolution: {integrity: sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==} + engines: {node: '>=18'} + + gopd@1.2.0: + resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} + engines: {node: '>= 0.4'} + + got@13.0.0: + resolution: {integrity: sha512-XfBk1CxOOScDcMr9O1yKkNaQyy865NbYs+F7dr4H0LZMVgCj2Le59k6PqbNHoL5ToeaEQUYh6c6yMfVcc6SJxA==} + engines: {node: '>=16'} + + graceful-fs@4.2.10: + resolution: {integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==} + + graceful-fs@4.2.11: + resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==} + + has-flag@4.0.0: + resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} + engines: {node: '>=8'} + + has-symbols@1.1.0: + resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==} + engines: {node: '>= 0.4'} + + has-tostringtag@1.0.2: + resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==} + engines: {node: '>= 0.4'} + + hasown@2.0.3: + resolution: {integrity: sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==} + engines: {node: '>= 0.4'} + + header-case@2.0.4: + resolution: {integrity: sha512-H/vuk5TEEVZwrR0lp2zed9OCo1uAILMlx0JEMgC26rzyJJ3N1v6XkwHHXJQdR2doSjcGPM6OKPYoJgf0plJ11Q==} + + help-me@5.0.0: + resolution: {integrity: sha512-7xgomUX6ADmcYzFik0HzAxh/73YlKR9bmFzf51CZwR+b6YtzU2m0u49hQCqV6SvlqIqsaxovfwdvbnsw3b/zpg==} + + hosted-git-info@7.0.2: + resolution: {integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==} + engines: {node: ^16.14.0 || >=18.0.0} + + http-cache-semantics@4.2.0: + resolution: {integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==} + + http-call@5.3.0: + resolution: {integrity: sha512-ahwimsC23ICE4kPl9xTBjKB4inbRaeLyZeRunC/1Jy/Z6X8tv22MEAjK+KBOMSVLaqXPTTmd8638waVIKLGx2w==} + engines: {node: '>=8.0.0'} + + http2-wrapper@2.2.1: + resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} + engines: {node: '>=10.19.0'} + + human-signals@2.1.0: + resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} + engines: {node: '>=10.17.0'} + + human-signals@8.0.1: + resolution: {integrity: sha512-eKCa6bwnJhvxj14kZk5NCPc6Hb6BdsU9DZcOnmQKSnO1VKrfV0zCvtttPZUsBvjmNDn8rpcJfpwSYnHBjc95MQ==} + engines: {node: '>=18.18.0'} + + iconv-lite@0.7.2: + resolution: {integrity: sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==} + engines: {node: '>=0.10.0'} + + ieee754@1.2.1: + resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==} + + ignore@5.3.2: + resolution: {integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==} + engines: {node: '>= 4'} + + ignore@7.0.5: + resolution: {integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==} + engines: {node: '>= 4'} + + import-fresh@3.3.1: + resolution: {integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==} + engines: {node: '>=6'} + + import-meta-resolve@4.2.0: + resolution: {integrity: sha512-Iqv2fzaTQN28s/FwZAoFq0ZSs/7hMAHJVX+w8PZl3cY19Pxk6jFFalxQoIfW2826i/fDLXv8IiEZRIT0lDuWcg==} + + imurmurhash@0.1.4: + resolution: {integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==} + engines: {node: '>=0.8.19'} + + indent-string@4.0.0: + resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} + engines: {node: '>=8'} + + indent-string@5.0.0: + resolution: {integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==} + engines: {node: '>=12'} + + inherits@2.0.4: + resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==} + + ini@1.3.8: + resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==} + + ini@6.0.0: + resolution: {integrity: sha512-IBTdIkzZNOpqm7q3dRqJvMaldXjDHWkEDfrwGEQTs5eaQMWV+djAhR+wahyNNMAa+qpbDUhBMVt4ZKNwpPm7xQ==} + engines: {node: ^20.17.0 || >=22.9.0} + + ip-address@10.2.0: + resolution: {integrity: sha512-/+S6j4E9AHvW9SWMSEY9Xfy66O5PWvVEJ08O0y5JGyEKQpojb0K0GKpz/v5HJ/G0vi3D2sjGK78119oXZeE0qA==} + engines: {node: '>= 12'} + + is-arrayish@0.2.1: + resolution: {integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==} + + is-docker@2.2.1: + resolution: {integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==} + engines: {node: '>=8'} + hasBin: true + + is-docker@3.0.0: + resolution: {integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + hasBin: true + + is-extglob@2.1.1: + resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==} + engines: {node: '>=0.10.0'} + + is-fullwidth-code-point@3.0.0: + resolution: {integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==} + engines: {node: '>=8'} + + is-fullwidth-code-point@5.1.0: + resolution: {integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==} + engines: {node: '>=18'} + + is-glob@4.0.3: + resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==} + engines: {node: '>=0.10.0'} + + is-in-ssh@1.0.0: + resolution: {integrity: sha512-jYa6Q9rH90kR1vKB6NM7qqd1mge3Fx4Dhw5TVlK1MUBqhEOuCagrEHMevNuCcbECmXZ0ThXkRm+Ymr51HwEPAw==} + engines: {node: '>=20'} + + is-inside-container@1.0.0: + resolution: {integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==} + engines: {node: '>=14.16'} + hasBin: true + + is-interactive@2.0.0: + resolution: {integrity: sha512-qP1vozQRI+BMOPcjFzrjXuQvdak2pHNUMZoeG2eRbiSqyvbEf/wQtEOTOX1guk6E3t36RkaqiSt8A/6YElNxLQ==} + engines: {node: '>=12'} + + is-number@7.0.0: + resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==} + engines: {node: '>=0.12.0'} + + is-obj@2.0.0: + resolution: {integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==} + engines: {node: '>=8'} + + is-plain-obj@4.1.0: + resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==} + engines: {node: '>=12'} + + is-retry-allowed@1.2.0: + resolution: {integrity: sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==} + engines: {node: '>=0.10.0'} + + is-stream@2.0.1: + resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} + engines: {node: '>=8'} + + is-stream@4.0.1: + resolution: {integrity: sha512-Dnz92NInDqYckGEUJv689RbRiTSEHCQ7wOVeALbkOz999YpqT46yMRIGtSNl2iCL1waAZSx40+h59NV/EwzV/A==} + engines: {node: '>=18'} + + is-unicode-supported@2.1.0: + resolution: {integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==} + engines: {node: '>=18'} + + is-wsl@2.2.0: + resolution: {integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==} + engines: {node: '>=8'} + + is-wsl@3.1.1: + resolution: {integrity: sha512-e6rvdUCiQCAuumZslxRJWR/Doq4VpPR82kqclvcS0efgt430SlGIk05vdCN58+VrzgtIcfNODjozVielycD4Sw==} + engines: {node: '>=16'} + + isarray@1.0.0: + resolution: {integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==} + + isexe@2.0.0: + resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} + + jackspeak@3.4.3: + resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + + jake@10.9.4: + resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} + engines: {node: '>=10'} + hasBin: true + + jiti@2.6.1: + resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==} + hasBin: true + + jiti@2.7.0: + resolution: {integrity: sha512-AC/7JofJvZGrrneWNaEnJeOLUx+JlGt7tNa0wZiRPT4MY1wmfKjt2+6O2p2uz2+skll8OZZmJMNqeke7kKbNgQ==} + hasBin: true + + js-sdsl@4.3.0: + resolution: {integrity: sha512-mifzlm2+5nZ+lEcLJMoBK0/IH/bDg8XnJfd/Wq6IP+xoCjLZsTOnV2QpxlVbX9bMnkl5PdEjNtBJ9Cj1NjifhQ==} + + js-tokens@4.0.0: + resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==} + + js-tokens@9.0.1: + resolution: {integrity: sha512-mxa9E9ITFOt0ban3j6L5MpjwegGz6lBQmM1IJkWeBZGcMxto50+eWdjC/52xDbS2vy0k7vIMK0Fe2wfL9OQSpQ==} + + js-yaml@4.1.1: + resolution: {integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==} + hasBin: true + + json-buffer@3.0.1: + resolution: {integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==} + + json-parse-better-errors@1.0.2: + resolution: {integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==} + + json-parse-even-better-errors@2.3.1: + resolution: {integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==} + + json-schema-traverse@0.4.1: + resolution: {integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==} + + json-schema-traverse@1.0.0: + resolution: {integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==} + + json-schema-typed@8.0.2: + resolution: {integrity: sha512-fQhoXdcvc3V28x7C7BMs4P5+kNlgUURe2jmUT1T//oBRMDrqy1QPelJimwZGo7Hg9VPV3EQV5Bnq4hbFy2vetA==} + + json-stable-stringify-without-jsonify@1.0.1: + resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==} + + json-stream-stringify@3.1.6: + resolution: {integrity: sha512-x7fpwxOkbhFCaJDJ8vb1fBY3DdSa4AlITaz+HHILQJzdPMnHEFjxPwVUi1ALIbcIxDE0PNe/0i7frnY8QnBQog==} + engines: {node: '>=7.10.1'} + + json5@2.2.3: + resolution: {integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==} + engines: {node: '>=6'} + hasBin: true + + jsonfile@4.0.0: + resolution: {integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==} + + jwt-decode@4.0.0: + resolution: {integrity: sha512-+KJGIyHgkGuIq3IEBNftfhW/LfWhXUIY6OmyVWjliu5KH1y0fw7VQ8YndE2O4qZdMSd9SqbnC8GOcZEy0Om7sA==} + engines: {node: '>=18'} + + keyv@4.5.4: + resolution: {integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==} + + kleur@3.0.3: + resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==} + engines: {node: '>=6'} + + lazystream@1.0.1: + resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} + engines: {node: '>= 0.6.3'} + + levn@0.4.1: + resolution: {integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==} + engines: {node: '>= 0.8.0'} + + lilconfig@3.1.3: + resolution: {integrity: sha512-/vlFKAoH5Cgt3Ie+JLhRbwOsCQePABiU3tJ1egGvyQ+33R/vcwM2Zl2QR/LzjsBeItPt3oSVXapn+m4nQDvpzw==} + engines: {node: '>=14'} + + lines-and-columns@1.2.4: + resolution: {integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==} + + lint-staged@16.4.0: + resolution: {integrity: sha512-lBWt8hujh/Cjysw5GYVmZpFHXDCgZzhrOm8vbcUdobADZNOK/bRshr2kM3DfgrrtR1DQhfupW9gnIXOfiFi+bw==} + engines: {node: '>=20.17'} + hasBin: true + + listr2@9.0.5: + resolution: {integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==} + engines: {node: '>=20.0.0'} + + locate-path@6.0.0: + resolution: {integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==} + engines: {node: '>=10'} + + lodash@4.18.1: + resolution: {integrity: sha512-dMInicTPVE8d1e5otfwmmjlxkZoUpiVLwyeTdUsi/Caj/gfzzblBcCE5sRHV/AsjuCmxWrte2TNGSYuCeCq+0Q==} + + log-symbols@7.0.1: + resolution: {integrity: sha512-ja1E3yCr9i/0hmBVaM0bfwDjnGy8I/s6PP4DFp+yP+a+mrHO4Rm7DtmnqROTUkHIkqffC84YY7AeqX6oFk0WFg==} + engines: {node: '>=18'} + + log-update@6.1.0: + resolution: {integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==} + engines: {node: '>=18'} + + loupe@3.2.1: + resolution: {integrity: sha512-CdzqowRJCeLU72bHvWqwRBBlLcMEtIvGrlvef74kMnV2AolS9Y8xUv1I0U/MNAWMhBlKIoyuEgoJ0t/bbwHbLQ==} + + lower-case@2.0.2: + resolution: {integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==} + + lowercase-keys@3.0.0: + resolution: {integrity: sha512-ozCC6gdQ+glXOQsveKD0YsDy8DSQFjDTz4zyzEHNV5+JP5D62LmfDZ6o1cycFx9ouG940M5dE8C8CTewdj2YWQ==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + lru-cache@10.4.3: + resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + + lru-cache@11.3.6: + resolution: {integrity: sha512-Gf/KoL3C/MlI7Bt0PGI9I+TeTC/I6r/csU58N4BSNc4lppLBeKsOdFYkK+dX0ABDUMJNfCHTyPpzwwO21Awd3A==} + engines: {node: 20 || >=22} + + luxon@3.7.2: + resolution: {integrity: sha512-vtEhXh/gNjI9Yg1u4jX/0YVPMvxzHuGgCm6tC5kZyb08yjGWGnqAjGJvcXbqQR2P3MyMEFnRbpcdFS6PBcLqew==} + engines: {node: '>=12'} + + magic-string@0.30.21: + resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==} + + math-intrinsics@1.1.0: + resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==} + engines: {node: '>= 0.4'} + + meow@13.2.0: + resolution: {integrity: sha512-pxQJQzB6djGPXh08dacEloMFopsOqGVRKFPYvPOt9XDZ1HasbgDZA74CJGreSU4G3Ak7EFJGoiH2auq+yXISgA==} + engines: {node: '>=18'} + + merge-stream@2.0.0: + resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==} + + micromatch@4.0.8: + resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==} + engines: {node: '>=8.6'} + + mime-db@1.52.0: + resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} + engines: {node: '>= 0.6'} + + mime-types@2.1.35: + resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} + engines: {node: '>= 0.6'} + + mimic-fn@2.1.0: + resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} + engines: {node: '>=6'} + + mimic-function@5.0.1: + resolution: {integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==} + engines: {node: '>=18'} + + mimic-response@3.1.0: + resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==} + engines: {node: '>=10'} + + mimic-response@4.0.0: + resolution: {integrity: sha512-e5ISH9xMYU0DzrT+jl8q2ze9D6eWBto+I8CNpe+VI+K2J/F/k3PdkdTdz4wvGVH4NTpo+NRYTVIuMQEMMcsLqg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + minimatch@10.2.5: + resolution: {integrity: sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==} + engines: {node: 18 || 20 || >=22} + + minimatch@5.1.9: + resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} + engines: {node: '>=10'} + + minimatch@9.0.9: + resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} + engines: {node: '>=16 || 14 >=14.17'} + + minimist@1.2.8: + resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} + + minipass@7.1.3: + resolution: {integrity: sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==} + engines: {node: '>=16 || 14 >=14.17'} + + minizlib@3.1.0: + resolution: {integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==} + engines: {node: '>= 18'} + + mqtt-packet@9.0.2: + resolution: {integrity: sha512-MvIY0B8/qjq7bKxdN1eD+nrljoeaai+qjLJgfRn3TiMuz0pamsIWY2bFODPZMSNmabsLANXsLl4EMoWvlaTZWA==} + + mqtt@5.15.1: + resolution: {integrity: sha512-V1WnkGuJh3ec9QXzy5Iylw8OOBK+Xu1WhxcQ9mMpLThG+/JZIMV1PgLNRgIiqXhZnvnVLsuyxHl5A/3bHHbcAA==} + engines: {node: '>=16.0.0'} + hasBin: true + + ms@2.1.3: + resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==} + + mute-stream@1.0.0: + resolution: {integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + mute-stream@2.0.0: + resolution: {integrity: sha512-WWdIxpyjEn+FhQJQQv9aQAYlHoNVdzIzUySNV1gHUPDSdZJ3yZn7pAAbQcV7B56Mvu881q9FZV+0Vx2xC44VWA==} + engines: {node: ^18.17.0 || >=20.5.0} + + nanoid@3.3.12: + resolution: {integrity: sha512-ZB9RH/39qpq5Vu6Y+NmUaFhQR6pp+M2Xt76XBnEwDaGcVAqhlvxrl3B2bKS5D3NH3QR76v3aSrKaF/Kiy7lEtQ==} + engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1} + hasBin: true + + nanoid@5.1.11: + resolution: {integrity: sha512-v+KEsUv2ps74PaSKv0gHTxTCgMXOIfBEbaqa6w6ISIGC7ZsvHN4N9oJ8d4cmf0n5oTzQz2SLmThbQWhjd/8eKg==} + engines: {node: ^18 || >=20} + hasBin: true + + natural-compare@1.4.0: + resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==} + + no-case@3.0.4: + resolution: {integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==} + + normalize-package-data@6.0.2: + resolution: {integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==} + engines: {node: ^16.14.0 || >=18.0.0} + + normalize-path@3.0.0: + resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==} + engines: {node: '>=0.10.0'} + + normalize-url@8.1.1: + resolution: {integrity: sha512-JYc0DPlpGWB40kH5g07gGTrYuMqV653k3uBKY6uITPWds3M0ov3GaWGp9lbE3Bzngx8+XkfzgvASb9vk9JDFXQ==} + engines: {node: '>=14.16'} + + npm-run-path@4.0.1: + resolution: {integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==} + engines: {node: '>=8'} + + npm-run-path@6.0.0: + resolution: {integrity: sha512-9qny7Z9DsQU8Ou39ERsPU4OZQlSTP47ShQzuKZ6PRXpYLtIFgl/DEBYEXKlvcEa+9tHVcK8CF81Y2V72qaZhWA==} + engines: {node: '>=18'} + + number-allocator@1.0.14: + resolution: {integrity: sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==} + + oclif@4.23.0: + resolution: {integrity: sha512-0Rz8YsJx6NQORMgyDeDr6i0OlJa6h4oLXBht9iRZhn/YI/by/ONKgcJIPXyTgeLK21JmhbFqJn6Y1AME0EH1Dw==} + engines: {node: '>=18.0.0'} + hasBin: true + + onetime@5.1.2: + resolution: {integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==} + engines: {node: '>=6'} + + onetime@7.0.0: + resolution: {integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==} + engines: {node: '>=18'} + + open@11.0.0: + resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} + engines: {node: '>=20'} + + optionator@0.9.3: + resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + engines: {node: '>= 0.8.0'} + + ora@9.4.0: + resolution: {integrity: sha512-84cglkRILFxdtA8hAvLNdMrtBpPNBTrQ9/ulg0FA7xLMnD6mifv+enAIeRmvtv+WgdCE+LPGOfQmtJRrVaIVhQ==} + engines: {node: '>=20'} + + p-cancelable@3.0.0: + resolution: {integrity: sha512-mlVgR3PGuzlo0MmTdk4cXqXWlwQDLnONTAg6sm62XkMJEiRxN3GL3SffkYvqwonbkJBcrI7Uvv5Zh9yjvn2iUw==} + engines: {node: '>=12.20'} + + p-limit@3.1.0: + resolution: {integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==} + engines: {node: '>=10'} + + p-locate@5.0.0: + resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} + engines: {node: '>=10'} + + p-queue@9.2.0: + resolution: {integrity: sha512-dWgLE8AH0HjQ9fe74pUkKkvzzYT18Inp4zra3lKHnnwqGvcfcUBrvF2EAVX+envufDNBOzpPq/IBUONDbI7+3g==} + engines: {node: '>=20'} + + p-timeout@7.0.1: + resolution: {integrity: sha512-AxTM2wDGORHGEkPCt8yqxOTMgpfbEHqF51f/5fJCmwFC3C/zNcGT63SymH2ttOAaiIws2zVg4+izQCjrakcwHg==} + engines: {node: '>=20'} + + package-json-from-dist@1.0.1: + resolution: {integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==} + + param-case@3.0.4: + resolution: {integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==} + + parent-module@1.0.1: + resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==} + engines: {node: '>=6'} + + parse-json@4.0.0: + resolution: {integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==} + engines: {node: '>=4'} + + parse-json@5.2.0: + resolution: {integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==} + engines: {node: '>=8'} + + parse-ms@4.0.0: + resolution: {integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==} + engines: {node: '>=18'} + + pascal-case@3.1.2: + resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} + + passwd-user@4.0.0: + resolution: {integrity: sha512-Y0hVgYTHsWRkOF/lG2ciRChuD1kiQCGbmg9hQuyxRrszz2B9779U8nUa90NVJ089UTCFIcvfQ6zgmbXj/YoIYg==} + engines: {node: ^12.20.0 || ^14.13.1 || >=16.0.0} + + path-case@3.0.4: + resolution: {integrity: sha512-qO4qCFjXqVTrcbPt/hQfhTQ+VhFsqNKOPtytgNKkKxSoEp3XPUQ8ObFuePylOIok5gjn69ry8XiULxCwot3Wfg==} + + path-exists@4.0.0: + resolution: {integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==} + engines: {node: '>=8'} + + path-expression-matcher@1.5.0: + resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==} + engines: {node: '>=14.0.0'} + + path-key@3.1.1: + resolution: {integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==} + engines: {node: '>=8'} + + path-key@4.0.0: + resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} + engines: {node: '>=12'} + + path-scurry@1.11.1: + resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} + engines: {node: '>=16 || 14 >=14.18'} + + path-scurry@2.0.2: + resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} + engines: {node: 18 || 20 || >=22} + + pathe@2.0.3: + resolution: {integrity: sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==} + + pathval@2.0.1: + resolution: {integrity: sha512-//nshmD55c46FuFw26xV/xFAaB5HF9Xdap7HJBBnrKdAd6/GxDBaNA1870O79+9ueg61cZLSVc+OaFlfmObYVQ==} + engines: {node: '>= 14.16'} + + picocolors@1.1.1: + resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==} + + picomatch@2.3.2: + resolution: {integrity: sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==} + engines: {node: '>=8.6'} + + picomatch@4.0.4: + resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} + engines: {node: '>=12'} + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + + postcss@8.5.14: + resolution: {integrity: sha512-SoSL4+OSEtR99LHFZQiJLkT59C5B1amGO1NzTwj7TT1qCUgUO6hxOvzkOYxD+vMrXBM3XJIKzokoERdqQq/Zmg==} + engines: {node: ^10 || ^12 || >=14} + + powershell-utils@0.1.0: + resolution: {integrity: sha512-dM0jVuXJPsDN6DvRpea484tCUaMiXWjuCn++HGTqUWzGDjv5tZkEZldAJ/UMlqRYGFrD/etByo4/xOuC/snX2A==} + engines: {node: '>=20'} + + prelude-ls@1.2.1: + resolution: {integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==} + engines: {node: '>= 0.8.0'} + + pretty-ms@9.3.0: + resolution: {integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==} + engines: {node: '>=18'} + + process-nextick-args@2.0.1: + resolution: {integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==} + + process@0.11.10: + resolution: {integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==} + engines: {node: '>= 0.6.0'} + + prompts@2.4.2: + resolution: {integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==} + engines: {node: '>= 6'} + + proto-list@1.2.4: + resolution: {integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==} + + proxy-from-env@2.1.0: + resolution: {integrity: sha512-cJ+oHTW1VAEa8cJslgmUZrc+sjRKgAKl3Zyse6+PV38hZe/V6Z14TbCuXcan9F9ghlz4QrFr2c92TNF82UkYHA==} + engines: {node: '>=10'} + + punycode@2.3.1: + resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} + engines: {node: '>=6'} + + quick-lru@5.1.1: + resolution: {integrity: sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==} + engines: {node: '>=10'} + + readable-stream@2.3.8: + resolution: {integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==} + + readable-stream@3.6.2: + resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==} + engines: {node: '>= 6'} + + readable-stream@4.7.0: + resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} + engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} + + readdir-glob@1.1.3: + resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + + recast@0.23.11: + resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} + engines: {node: '>= 4'} + + registry-auth-token@5.1.1: + resolution: {integrity: sha512-P7B4+jq8DeD2nMsAcdfaqHbssgHtZ7Z5+++a5ask90fvmJ8p5je4mOa+wzu+DB4vQ5tdJV/xywY+UnVFeQLV5Q==} + engines: {node: '>=14'} + + require-directory@2.1.1: + resolution: {integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==} + engines: {node: '>=0.10.0'} + + require-from-string@2.0.2: + resolution: {integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==} + engines: {node: '>=0.10.0'} + + resolve-alpn@1.2.1: + resolution: {integrity: sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==} + + resolve-from@4.0.0: + resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} + engines: {node: '>=4'} + + resolve-from@5.0.0: + resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} + engines: {node: '>=8'} + + responselike@3.0.0: + resolution: {integrity: sha512-40yHxbNcl2+rzXvZuVkrYohathsSJlMTXKryG5y8uciHv1+xDLHQpgjG64JUO9nrEq2jGLH6IZ8BcZyw3wrweg==} + engines: {node: '>=14.16'} + + restore-cursor@5.1.0: + resolution: {integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==} + engines: {node: '>=18'} + + retry@0.13.1: + resolution: {integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==} + engines: {node: '>= 4'} + + rfdc@1.4.1: + resolution: {integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==} + + rimraf@6.1.3: + resolution: {integrity: sha512-LKg+Cr2ZF61fkcaK1UdkH2yEBBKnYjTyWzTJT6KNPcSPaiT7HSdhtMXQuN5wkTX0Xu72KQ1l8S42rlmexS2hSA==} + engines: {node: 20 || >=22} + hasBin: true + + rollup@4.60.3: + resolution: {integrity: sha512-pAQK9HalE84QSm4Po3EmWIZPd3FnjkShVkiMlz1iligWYkWQ7wHYd1PF/T7QZ5TVSD6uSTon5gBVMSM4JfBV+A==} + engines: {node: '>=18.0.0', npm: '>=8.0.0'} + hasBin: true + + run-applescript@7.1.0: + resolution: {integrity: sha512-DPe5pVFaAsinSaV6QjQ6gdiedWDcRCbUuiQfQa2wmWV7+xC9bGulGI8+TdRmoFkAPaBXk8CrAbnlY2ISniJ47Q==} + engines: {node: '>=18'} + + safe-buffer@5.1.2: + resolution: {integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==} + + safe-buffer@5.2.1: + resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==} + + safer-buffer@2.1.2: + resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + + semver@7.7.4: + resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + engines: {node: '>=10'} + hasBin: true + + sentence-case@3.0.4: + resolution: {integrity: sha512-8LS0JInaQMCRoQ7YUytAo/xUu5W2XnQxV2HI/6uM6U7CITS1RqPElr30V6uIqyMKM9lJGRVFy5/4CuzcixNYSg==} + + shebang-command@2.0.0: + resolution: {integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==} + engines: {node: '>=8'} + + shebang-regex@3.0.0: + resolution: {integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==} + engines: {node: '>=8'} + + siginfo@2.0.0: + resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + + signal-exit@3.0.7: + resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} + + signal-exit@4.1.0: + resolution: {integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==} + engines: {node: '>=14'} + + simple-git-hooks@2.13.1: + resolution: {integrity: sha512-WszCLXwT4h2k1ufIXAgsbiTOazqqevFCIncOuUBZJ91DdvWcC5+OFkluWRQPrcuSYd8fjq+o2y1QfWqYMoAToQ==} + hasBin: true + + sisteransi@1.0.5: + resolution: {integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==} + + slice-ansi@7.1.2: + resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==} + engines: {node: '>=18'} + + slice-ansi@8.0.0: + resolution: {integrity: sha512-stxByr12oeeOyY2BlviTNQlYV5xOj47GirPr4yA1hE9JCtxfQN0+tVbkxwCtYDQWhEKWFHsEK48ORg5jrouCAg==} + engines: {node: '>=20'} + + smart-buffer@4.2.0: + resolution: {integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==} + engines: {node: '>= 6.0.0', npm: '>= 3.0.0'} + + snake-case@3.0.4: + resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==} + + socks@2.8.9: + resolution: {integrity: sha512-LJhUYUvItdQ0LkJTmPeaEObWXAqFyfmP85x0tch/ez9cahmhlBBLbIqDFnvBnUJGagb0JbIQrkBs1wJ+yRYpEw==} + engines: {node: '>= 10.0.0', npm: '>= 3.0.0'} + + sort-object-keys@1.1.3: + resolution: {integrity: sha512-855pvK+VkU7PaKYPc+Jjnmt4EzejQHyhhF33q31qG8x7maDzkeFhAAThdCYay11CISO+qAMwjOBP+fPZe0IPyg==} + + sort-package-json@2.15.1: + resolution: {integrity: sha512-9x9+o8krTT2saA9liI4BljNjwAbvUnWf11Wq+i/iZt8nl2UGYnf3TH5uBydE7VALmP7AGwlfszuEeL8BDyb0YA==} + hasBin: true + + source-map-js@1.2.1: + resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} + engines: {node: '>=0.10.0'} + + source-map@0.6.1: + resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==} + engines: {node: '>=0.10.0'} + + spdx-correct@3.2.0: + resolution: {integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==} + + spdx-exceptions@2.5.0: + resolution: {integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==} + + spdx-expression-parse@3.0.1: + resolution: {integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==} + + spdx-license-ids@3.0.23: + resolution: {integrity: sha512-CWLcCCH7VLu13TgOH+r8p1O/Znwhqv/dbb6lqWy67G+pT1kHmeD/+V36AVb/vq8QMIQwVShJ6Ssl5FPh0fuSdw==} + + split2@4.2.0: + resolution: {integrity: sha512-UcjcJOWknrNkF6PLX83qcHM6KHgVKNkV62Y8a5uYDVv9ydGQVwAHMKqHdJje1VTWpljG0WYpCDhrCdAOYH4TWg==} + engines: {node: '>= 10.x'} + + stackback@0.0.2: + resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + + std-env@3.10.0: + resolution: {integrity: sha512-5GS12FdOZNliM5mAOxFRg7Ir0pWz8MdpYm6AY6VPkGpbA7ZzmbzNcBJQ0GPvvyWgcY7QAhCgf9Uy89I03faLkg==} + + stdin-discarder@0.3.2: + resolution: {integrity: sha512-eCPu1qRxPVkl5605OTWF8Wz40b4Mf45NY5LQmVPQ599knfs5QhASUm9GbJ5BDMDOXgrnh0wyEdvzmL//YMlw0A==} + engines: {node: '>=18'} + + streamx@2.25.0: + resolution: {integrity: sha512-0nQuG6jf1w+wddNEEXCF4nTg3LtufWINB5eFEN+5TNZW7KWJp6x87+JFL43vaAUPyCfH1wID+mNVyW6OHtFamg==} + + string-argv@0.3.2: + resolution: {integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==} + engines: {node: '>=0.6.19'} + + string-width@4.2.3: + resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} + engines: {node: '>=8'} + + string-width@5.1.2: + resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} + engines: {node: '>=12'} + + string-width@7.2.0: + resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} + engines: {node: '>=18'} + + string-width@8.2.1: + resolution: {integrity: sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==} + engines: {node: '>=20'} + + string_decoder@1.1.1: + resolution: {integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==} + + string_decoder@1.3.0: + resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==} + + strip-ansi@6.0.1: + resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} + engines: {node: '>=8'} + + strip-ansi@7.2.0: + resolution: {integrity: sha512-yDPMNjp4WyfYBkHnjIRLfca1i6KMyGCtsVgoKe/z1+6vukgaENdgGBZt+ZmKPc4gavvEZ5OgHfHdrazhgNyG7w==} + engines: {node: '>=12'} + + strip-final-newline@2.0.0: + resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} + engines: {node: '>=6'} + + strip-final-newline@4.0.0: + resolution: {integrity: sha512-aulFJcD6YK8V1G7iRB5tigAP4TsHBZZrOV8pjV++zdUwmeV8uzbY7yn6h9MswN62adStNZFuCIx4haBnRuMDaw==} + engines: {node: '>=18'} + + strip-literal@3.1.0: + resolution: {integrity: sha512-8r3mkIM/2+PpjHoOtiAW8Rg3jJLHaV7xPwG+YRGrv6FP0wwk/toTpATxWYOW0BKdWwl82VT2tFYi5DlROa0Mxg==} + + strnum@2.3.0: + resolution: {integrity: sha512-ums3KNd42PGyx5xaoVTO1mjU1bH3NpY4vsrVlnv9PNGqQj8wd7rJ6nEypLrJ7z5vxK5RP0yMLo6J/Gsm62DI5Q==} + + stubborn-fs@2.0.0: + resolution: {integrity: sha512-Y0AvSwDw8y+nlSNFXMm2g6L51rBGdAQT20J3YSOqxC53Lo3bjWRtr2BKcfYoAf352WYpsZSTURrA0tqhfgudPA==} + + stubborn-utils@1.0.2: + resolution: {integrity: sha512-zOh9jPYI+xrNOyisSelgym4tolKTJCQd5GBhK0+0xJvcYDcwlOoxF/rnFKQ2KRZknXSG9jWAp66fwP6AxN9STg==} + + supports-color@8.1.1: + resolution: {integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==} + engines: {node: '>=10'} + + tagged-tag@1.0.0: + resolution: {integrity: sha512-yEFYrVhod+hdNyx7g5Bnkkb0G6si8HJurOoOEgC8B/O0uXLHlaey/65KRv6cuWBNhBgHKAROVpc7QyYqE5gFng==} + engines: {node: '>=20'} + + tar-stream@3.2.0: + resolution: {integrity: sha512-ojzvCvVaNp6aOTFmG7jaRD0meowIAuPc3cMMhSgKiVWws1GyHbGd/xvnyuRKcKlMpt3qvxx6r0hreCNITP9hIg==} + + tar@7.5.15: + resolution: {integrity: sha512-dzGK0boVlC4W5QFuQN1EFSl3bIDYsk7Tj40U6eIBnK2k/8ml7TZ5agbI5j5+qnoVcAA+rNtBml8SEiLxZpNqRQ==} + engines: {node: '>=18'} + + teex@1.0.1: + resolution: {integrity: sha512-eYE6iEI62Ni1H8oIa7KlDU6uQBtqr4Eajni3wX7rpfXD8ysFx8z0+dri+KWEPWpBsxXfxu58x/0jvTVT1ekOSg==} + + text-decoder@1.2.7: + resolution: {integrity: sha512-vlLytXkeP4xvEq2otHeJfSQIRyWxo/oZGEbXrtEEF9Hnmrdly59sUbzZ/QgyWuLYHctCHxFF4tRQZNQ9k60ExQ==} + + tiny-invariant@1.3.3: + resolution: {integrity: sha512-+FbBPE1o9QAYvviau/qC5SE3caw21q3xkvWKBtja5vgqOWIHHJ3ioaq1VPfn/Szqctz2bU/oYeKd9/z5BL+PVg==} + + tiny-jsonc@1.0.2: + resolution: {integrity: sha512-f5QDAfLq6zIVSyCZQZhhyl0QS6MvAyTxgz4X4x3+EoCktNWEYJ6PeoEA97fyb98njpBNNi88ybpD7m+BDFXaCw==} + + tinybench@2.9.0: + resolution: {integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==} + + tinyexec@0.3.2: + resolution: {integrity: sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==} + + tinyexec@1.1.2: + resolution: {integrity: sha512-dAqSqE/RabpBKI8+h26GfLq6Vb3JVXs30XYQjdMjaj/c2tS8IYYMbIzP599KtRj7c57/wYApb3QjgRgXmrCukA==} + engines: {node: '>=18'} + + tinyglobby@0.2.16: + resolution: {integrity: sha512-pn99VhoACYR8nFHhxqix+uvsbXineAasWm5ojXoN8xEwK5Kd3/TrhNn1wByuD52UxWRLy8pu+kRMniEi6Eq9Zg==} + engines: {node: '>=12.0.0'} + + tinypool@1.1.1: + resolution: {integrity: sha512-Zba82s87IFq9A9XmjiX5uZA/ARWDrB03OHlq+Vw1fSdt0I+4/Kutwy8BP4Y/y/aORMo61FQ0vIb5j44vSo5Pkg==} + engines: {node: ^18.0.0 || >=20.0.0} + + tinyrainbow@2.0.0: + resolution: {integrity: sha512-op4nsTR47R6p0vMUUoYl/a+ljLFVtlfaXkLQmqfLR1qHma1h/ysYk4hEXZ880bf2CYgTskvTa/e196Vd5dDQXw==} + engines: {node: '>=14.0.0'} + + tinyspy@4.0.4: + resolution: {integrity: sha512-azl+t0z7pw/z958Gy9svOTuzqIk6xq+NSheJzn5MMWtWTFywIacg2wUlzKFGtt3cthx0r2SxMK0yzJOR0IES7Q==} + engines: {node: '>=14.0.0'} + + to-regex-range@5.0.1: + resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==} + engines: {node: '>=8.0'} + + ts-api-utils@2.5.0: + resolution: {integrity: sha512-OJ/ibxhPlqrMM0UiNHJ/0CKQkoKF243/AEmplt3qpRgkW8VG7IfOS41h7V8TjITqdByHzrjcS/2si+y4lIh8NA==} + engines: {node: '>=18.12'} + peerDependencies: + typescript: '>=4.8.4' + + tslib@2.8.1: + resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==} + + tunnel-agent@0.6.0: + resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==} + + tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + + type-check@0.4.0: + resolution: {integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==} + engines: {node: '>= 0.8.0'} + + type-fest@0.21.3: + resolution: {integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==} + engines: {node: '>=10'} + + type-fest@5.6.0: + resolution: {integrity: sha512-8ZiHFm91orbSAe2PSAiSVBVko18pbhbiB3U9GglSzF/zCGkR+rxpHx6sEMCUm4kxY4LjDIUGgCfUMtwfZfjfUA==} + engines: {node: '>=20'} + + typedarray@0.0.6: + resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} + + typescript-eslint@8.59.2: + resolution: {integrity: sha512-pJw051uomb3ZeCzGTpRb8RbEqB5Y4WWet8gl/GcTlU35BSx0PVdZ86/bqkQCyKKuraVQEK7r6kBHQXF+fBhkoQ==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + peerDependencies: + eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 + typescript: '>=4.8.4 <6.1.0' + + typescript@6.0.3: + resolution: {integrity: sha512-y2TvuxSZPDyQakkFRPZHKFm+KKVqIisdg9/CZwm9ftvKXLP8NRWj38/ODjNbr43SsoXqNuAisEf1GdCxqWcdBw==} + engines: {node: '>=14.17'} + hasBin: true + + uint8array-extras@1.5.0: + resolution: {integrity: sha512-rvKSBiC5zqCCiDZ9kAOszZcDvdAHwwIKJG33Ykj43OKcWsnmcBRL09YTU4nOeHZ8Y2a7l1MgTd08SBe9A8Qj6A==} + engines: {node: '>=18'} + + undici-types@6.21.0: + resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==} + + undici-types@7.19.2: + resolution: {integrity: sha512-qYVnV5OEm2AW8cJMCpdV20CDyaN3g0AjDlOGf1OW4iaDEx8MwdtChUp4zu4H0VP3nDRF/8RKWH+IPp9uW0YGZg==} + + unicorn-magic@0.3.0: + resolution: {integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==} + engines: {node: '>=18'} + + unique-names-generator@4.7.1: + resolution: {integrity: sha512-lMx9dX+KRmG8sq6gulYYpKWZc9RlGsgBR6aoO8Qsm3qvkSJ+3rAymr+TnV8EDMrIrwuFJ4kruzMWM/OpYzPoow==} + engines: {node: '>=8'} + + universalify@0.1.2: + resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} + engines: {node: '>= 4.0.0'} + + upper-case-first@2.0.2: + resolution: {integrity: sha512-514ppYHBaKwfJRK/pNC6c/OxfGa0obSnAl106u97Ed0I625Nin96KAjttZF6ZL3e1XLtphxnqrOi9iWgm+u+bg==} + + upper-case@2.0.2: + resolution: {integrity: sha512-KgdgDGJt2TpuwBUIjgG6lzw2GWFRCW9Qkfkiv0DxqHHLYJHmtmdUIKcZd8rHgFSjopVTlw6ggzCm1b8MFQwikg==} + + uri-js@4.4.1: + resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} + + util-deprecate@1.0.2: + resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} + + uuid@14.0.0: + resolution: {integrity: sha512-Qo+uWgilfSmAhXCMav1uYFynlQO7fMFiMVZsQqZRMIXp0O7rR7qjkj+cPvBHLgBqi960QCoo/PH2/6ZtVqKvrg==} + hasBin: true + + validate-npm-package-license@3.0.4: + resolution: {integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==} + + validate-npm-package-name@5.0.1: + resolution: {integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==} + engines: {node: ^14.17.0 || ^16.13.0 || >=18.0.0} + + vite-node@3.2.4: + resolution: {integrity: sha512-EbKSKh+bh1E1IFxeO0pg1n4dvoOTt0UDiXMd/qn++r98+jPO1xtJilvXldeuQ8giIB5IkpjCgMleHMNEsGH6pg==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + + vite@7.3.3: + resolution: {integrity: sha512-/4XH147Ui7OGTjg3HbdWe5arnZQSbfuRzdr9Ec7TQi5I7R+ir0Rlc9GIvD4v0XZurELqA035KVXJXpR61xhiTA==} + engines: {node: ^20.19.0 || >=22.12.0} + hasBin: true + peerDependencies: + '@types/node': ^20.19.0 || >=22.12.0 + jiti: '>=1.21.0' + less: ^4.0.0 + lightningcss: ^1.21.0 + sass: ^1.70.0 + sass-embedded: ^1.70.0 + stylus: '>=0.54.8' + sugarss: ^5.0.0 + terser: ^5.16.0 + tsx: ^4.8.1 + yaml: ^2.4.2 + peerDependenciesMeta: + '@types/node': + optional: true + jiti: + optional: true + less: + optional: true + lightningcss: + optional: true + sass: + optional: true + sass-embedded: + optional: true + stylus: + optional: true + sugarss: + optional: true + terser: + optional: true + tsx: + optional: true + yaml: + optional: true + + vitest@3.2.4: + resolution: {integrity: sha512-LUCP5ev3GURDysTWiP47wRRUpLKMOfPh+yKTx3kVIEiu5KOMeqzpnYNsKyOoVrULivR8tLcks4+lga33Whn90A==} + engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} + hasBin: true + peerDependencies: + '@edge-runtime/vm': '*' + '@types/debug': ^4.1.12 + '@types/node': ^18.0.0 || ^20.0.0 || >=22.0.0 + '@vitest/browser': 3.2.4 + '@vitest/ui': 3.2.4 + happy-dom: '*' + jsdom: '*' + peerDependenciesMeta: + '@edge-runtime/vm': + optional: true + '@types/debug': + optional: true + '@types/node': + optional: true + '@vitest/browser': + optional: true + '@vitest/ui': + optional: true + happy-dom: + optional: true + jsdom: + optional: true + + when-exit@2.1.5: + resolution: {integrity: sha512-VGkKJ564kzt6Ms1dbgPP/yuIoQCrsFAnRbptpC5wOEsDaNsbCB2bnfnaA8i/vRs5tjUSEOtIuvl9/MyVsvQZCg==} + + which@2.0.2: + resolution: {integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==} + engines: {node: '>= 8'} + hasBin: true + + why-is-node-running@2.3.0: + resolution: {integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==} + engines: {node: '>=8'} + hasBin: true + + widest-line@3.1.0: + resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} + engines: {node: '>=8'} + + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + + worker-factory@7.0.49: + resolution: {integrity: sha512-lW7tpgy6aUv2dFsQhv1yv+XFzdkCf/leoKRTGMPVK5/die6RrUjqgJHJf556qO+ZfytNG6wPXc17E8zzsOLUDw==} + + worker-timers-broker@8.0.16: + resolution: {integrity: sha512-JyP3AvUGyPGbBGW7XiUewm2+0pN/aYo1QpVf5kdXAfkDZcN3p7NbWrG6XnyDEpDIvfHk/+LCnOW/NsuiU9riYA==} + + worker-timers-worker@9.0.14: + resolution: {integrity: sha512-/qF06C60sXmSLfUl7WglvrDIbspmPOM8UrG63Dnn4bi2x4/DfqHS/+dxF5B+MdHnYO5tVuZYLHdAodrKdabTIg==} + + worker-timers@8.0.31: + resolution: {integrity: sha512-ngkq5S6JuZyztom8tDgBzorLo9byhBMko/sXfgiUD945AuzKGg1GCgDMCC3NaYkicLpGKXutONM36wEX8UbBCA==} + + wrap-ansi@6.2.0: + resolution: {integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==} + engines: {node: '>=8'} + + wrap-ansi@7.0.0: + resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} + engines: {node: '>=10'} + + wrap-ansi@8.1.0: + resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} + engines: {node: '>=12'} + + wrap-ansi@9.0.2: + resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} + engines: {node: '>=18'} + + ws@8.20.0: + resolution: {integrity: sha512-sAt8BhgNbzCtgGbt2OxmpuryO63ZoDk/sqaB/znQm94T4fCEsy/yV+7CdC1kJhOU9lboAEU7R3kquuycDoibVA==} + engines: {node: '>=10.0.0'} + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true + + wsl-utils@0.3.1: + resolution: {integrity: sha512-g/eziiSUNBSsdDJtCLB8bdYEUMj4jR7AGeUo96p/3dTafgjHhpF4RiCFPiRILwjQoDXx5MqkBr4fwWtR3Ky4Wg==} + engines: {node: '>=20'} + + xml-naming@0.1.0: + resolution: {integrity: sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==} + engines: {node: '>=16.0.0'} + + y18n@5.0.8: + resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==} + engines: {node: '>=10'} + + yallist@5.0.0: + resolution: {integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==} + engines: {node: '>=18'} + + yaml@2.8.4: + resolution: {integrity: sha512-ml/JPOj9fOQK8RNnWojA67GbZ0ApXAUlN2UQclwv2eVgTgn7O9gg9o7paZWKMp4g0H3nTLtS9LVzhkpOFIKzog==} + engines: {node: '>= 14.6'} + hasBin: true + + yargs-parser@21.1.1: + resolution: {integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==} + engines: {node: '>=12'} + + yargs@17.7.1: + resolution: {integrity: sha512-cwiTb08Xuv5fqF4AovYacTFNxk62th7LKJ6BL9IGUpTJrWoU7/7WdQGTP2SjKf1dUNBGzDd28p/Yfs/GI6JrLw==} + engines: {node: '>=12'} + + yocto-queue@0.1.0: + resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} + engines: {node: '>=10'} + + yoctocolors-cjs@2.1.3: + resolution: {integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==} + engines: {node: '>=18'} + + yoctocolors@2.1.2: + resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} + engines: {node: '>=18'} + + zip-stream@6.0.1: + resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} + engines: {node: '>= 14'} + +snapshots: + + '@aashutoshrathi/word-wrap@1.2.6': {} + + '@aws-crypto/crc32@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.8 + tslib: 2.8.1 + + '@aws-crypto/crc32c@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.8 + tslib: 2.8.1 + + '@aws-crypto/sha1-browser@5.2.0': + dependencies: + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.8 + '@aws-sdk/util-locate-window': 3.965.5 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-browser@5.2.0': + dependencies: + '@aws-crypto/sha256-js': 5.2.0 + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.8 + '@aws-sdk/util-locate-window': 3.965.5 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-crypto/sha256-js@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.8 + tslib: 2.8.1 + + '@aws-crypto/supports-web-crypto@5.2.0': + dependencies: + tslib: 2.8.1 + + '@aws-crypto/util@5.2.0': + dependencies: + '@aws-sdk/types': 3.973.8 + '@smithy/util-utf8': 2.3.0 + tslib: 2.8.1 + + '@aws-sdk/client-cloudfront@3.1009.0': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.8 + '@aws-sdk/credential-provider-node': 3.972.39 + '@aws-sdk/middleware-host-header': 3.972.10 + '@aws-sdk/middleware-logger': 3.972.10 + '@aws-sdk/middleware-recursion-detection': 3.972.11 + '@aws-sdk/middleware-user-agent': 3.972.38 + '@aws-sdk/region-config-resolver': 3.972.13 + '@aws-sdk/types': 3.973.8 + '@aws-sdk/util-endpoints': 3.996.8 + '@aws-sdk/util-user-agent-browser': 3.972.10 + '@aws-sdk/util-user-agent-node': 3.973.24 + '@smithy/config-resolver': 4.5.0 + '@smithy/core': 3.24.0 + '@smithy/fetch-http-handler': 5.4.0 + '@smithy/hash-node': 4.3.0 + '@smithy/invalid-dependency': 4.3.0 + '@smithy/middleware-content-length': 4.3.0 + '@smithy/middleware-endpoint': 4.5.0 + '@smithy/middleware-retry': 4.6.0 + '@smithy/middleware-serde': 4.3.0 + '@smithy/middleware-stack': 4.3.0 + '@smithy/node-config-provider': 4.4.0 + '@smithy/node-http-handler': 4.7.0 + '@smithy/protocol-http': 5.4.0 + '@smithy/smithy-client': 4.13.0 + '@smithy/types': 4.14.1 + '@smithy/url-parser': 4.3.0 + '@smithy/util-base64': 4.4.0 + '@smithy/util-body-length-browser': 4.3.0 + '@smithy/util-body-length-node': 4.3.0 + '@smithy/util-defaults-mode-browser': 4.4.0 + '@smithy/util-defaults-mode-node': 4.3.0 + '@smithy/util-endpoints': 3.5.0 + '@smithy/util-middleware': 4.3.0 + '@smithy/util-retry': 4.4.0 + '@smithy/util-stream': 4.6.0 + '@smithy/util-utf8': 4.3.0 + '@smithy/util-waiter': 4.4.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/client-s3@3.1014.0': + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.8 + '@aws-sdk/credential-provider-node': 3.972.39 + '@aws-sdk/middleware-bucket-endpoint': 3.972.10 + '@aws-sdk/middleware-expect-continue': 3.972.10 + '@aws-sdk/middleware-flexible-checksums': 3.974.16 + '@aws-sdk/middleware-host-header': 3.972.10 + '@aws-sdk/middleware-location-constraint': 3.972.10 + '@aws-sdk/middleware-logger': 3.972.10 + '@aws-sdk/middleware-recursion-detection': 3.972.11 + '@aws-sdk/middleware-sdk-s3': 3.972.37 + '@aws-sdk/middleware-ssec': 3.972.10 + '@aws-sdk/middleware-user-agent': 3.972.38 + '@aws-sdk/region-config-resolver': 3.972.13 + '@aws-sdk/signature-v4-multi-region': 3.996.25 + '@aws-sdk/types': 3.973.8 + '@aws-sdk/util-endpoints': 3.996.8 + '@aws-sdk/util-user-agent-browser': 3.972.10 + '@aws-sdk/util-user-agent-node': 3.973.24 + '@smithy/config-resolver': 4.5.0 + '@smithy/core': 3.24.0 + '@smithy/eventstream-serde-browser': 4.3.0 + '@smithy/eventstream-serde-config-resolver': 4.4.0 + '@smithy/eventstream-serde-node': 4.3.0 + '@smithy/fetch-http-handler': 5.4.0 + '@smithy/hash-blob-browser': 4.3.0 + '@smithy/hash-node': 4.3.0 + '@smithy/hash-stream-node': 4.3.0 + '@smithy/invalid-dependency': 4.3.0 + '@smithy/md5-js': 4.3.0 + '@smithy/middleware-content-length': 4.3.0 + '@smithy/middleware-endpoint': 4.5.0 + '@smithy/middleware-retry': 4.6.0 + '@smithy/middleware-serde': 4.3.0 + '@smithy/middleware-stack': 4.3.0 + '@smithy/node-config-provider': 4.4.0 + '@smithy/node-http-handler': 4.7.0 + '@smithy/protocol-http': 5.4.0 + '@smithy/smithy-client': 4.13.0 + '@smithy/types': 4.14.1 + '@smithy/url-parser': 4.3.0 + '@smithy/util-base64': 4.4.0 + '@smithy/util-body-length-browser': 4.3.0 + '@smithy/util-body-length-node': 4.3.0 + '@smithy/util-defaults-mode-browser': 4.4.0 + '@smithy/util-defaults-mode-node': 4.3.0 + '@smithy/util-endpoints': 3.5.0 + '@smithy/util-middleware': 4.3.0 + '@smithy/util-retry': 4.4.0 + '@smithy/util-stream': 4.6.0 + '@smithy/util-utf8': 4.3.0 + '@smithy/util-waiter': 4.4.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/core@3.974.8': + dependencies: + '@aws-sdk/types': 3.973.8 + '@aws-sdk/xml-builder': 3.972.22 + '@smithy/core': 3.24.0 + '@smithy/node-config-provider': 4.4.0 + '@smithy/property-provider': 4.3.0 + '@smithy/protocol-http': 5.4.0 + '@smithy/signature-v4': 5.4.0 + '@smithy/smithy-client': 4.13.0 + '@smithy/types': 4.14.1 + '@smithy/util-base64': 4.4.0 + '@smithy/util-middleware': 4.3.0 + '@smithy/util-retry': 4.4.0 + '@smithy/util-utf8': 4.3.0 + tslib: 2.8.1 + + '@aws-sdk/crc64-nvme@3.972.7': + dependencies: + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-env@3.972.34': + dependencies: + '@aws-sdk/core': 3.974.8 + '@aws-sdk/types': 3.973.8 + '@smithy/property-provider': 4.3.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-http@3.972.36': + dependencies: + '@aws-sdk/core': 3.974.8 + '@aws-sdk/types': 3.973.8 + '@smithy/fetch-http-handler': 5.4.0 + '@smithy/node-http-handler': 4.7.0 + '@smithy/property-provider': 4.3.0 + '@smithy/protocol-http': 5.4.0 + '@smithy/smithy-client': 4.13.0 + '@smithy/types': 4.14.1 + '@smithy/util-stream': 4.6.0 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-ini@3.972.38': + dependencies: + '@aws-sdk/core': 3.974.8 + '@aws-sdk/credential-provider-env': 3.972.34 + '@aws-sdk/credential-provider-http': 3.972.36 + '@aws-sdk/credential-provider-login': 3.972.38 + '@aws-sdk/credential-provider-process': 3.972.34 + '@aws-sdk/credential-provider-sso': 3.972.38 + '@aws-sdk/credential-provider-web-identity': 3.972.38 + '@aws-sdk/nested-clients': 3.997.6 + '@aws-sdk/types': 3.973.8 + '@smithy/credential-provider-imds': 4.3.0 + '@smithy/property-provider': 4.3.0 + '@smithy/shared-ini-file-loader': 4.5.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-login@3.972.38': + dependencies: + '@aws-sdk/core': 3.974.8 + '@aws-sdk/nested-clients': 3.997.6 + '@aws-sdk/types': 3.973.8 + '@smithy/property-provider': 4.3.0 + '@smithy/protocol-http': 5.4.0 + '@smithy/shared-ini-file-loader': 4.5.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-node@3.972.39': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.34 + '@aws-sdk/credential-provider-http': 3.972.36 + '@aws-sdk/credential-provider-ini': 3.972.38 + '@aws-sdk/credential-provider-process': 3.972.34 + '@aws-sdk/credential-provider-sso': 3.972.38 + '@aws-sdk/credential-provider-web-identity': 3.972.38 + '@aws-sdk/types': 3.973.8 + '@smithy/credential-provider-imds': 4.3.0 + '@smithy/property-provider': 4.3.0 + '@smithy/shared-ini-file-loader': 4.5.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-process@3.972.34': + dependencies: + '@aws-sdk/core': 3.974.8 + '@aws-sdk/types': 3.973.8 + '@smithy/property-provider': 4.3.0 + '@smithy/shared-ini-file-loader': 4.5.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@aws-sdk/credential-provider-sso@3.972.38': + dependencies: + '@aws-sdk/core': 3.974.8 + '@aws-sdk/nested-clients': 3.997.6 + '@aws-sdk/token-providers': 3.1041.0 + '@aws-sdk/types': 3.973.8 + '@smithy/property-provider': 4.3.0 + '@smithy/shared-ini-file-loader': 4.5.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/credential-provider-web-identity@3.972.38': + dependencies: + '@aws-sdk/core': 3.974.8 + '@aws-sdk/nested-clients': 3.997.6 + '@aws-sdk/types': 3.973.8 + '@smithy/property-provider': 4.3.0 + '@smithy/shared-ini-file-loader': 4.5.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/middleware-bucket-endpoint@3.972.10': + dependencies: + '@aws-sdk/types': 3.973.8 + '@aws-sdk/util-arn-parser': 3.972.3 + '@smithy/node-config-provider': 4.4.0 + '@smithy/protocol-http': 5.4.0 + '@smithy/types': 4.14.1 + '@smithy/util-config-provider': 4.3.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-expect-continue@3.972.10': + dependencies: + '@aws-sdk/types': 3.973.8 + '@smithy/protocol-http': 5.4.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-flexible-checksums@3.974.16': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.974.8 + '@aws-sdk/crc64-nvme': 3.972.7 + '@aws-sdk/types': 3.973.8 + '@smithy/is-array-buffer': 4.3.0 + '@smithy/node-config-provider': 4.4.0 + '@smithy/protocol-http': 5.4.0 + '@smithy/types': 4.14.1 + '@smithy/util-middleware': 4.3.0 + '@smithy/util-stream': 4.6.0 + '@smithy/util-utf8': 4.3.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-host-header@3.972.10': + dependencies: + '@aws-sdk/types': 3.973.8 + '@smithy/protocol-http': 5.4.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-location-constraint@3.972.10': + dependencies: + '@aws-sdk/types': 3.973.8 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-logger@3.972.10': + dependencies: + '@aws-sdk/types': 3.973.8 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-recursion-detection@3.972.11': + dependencies: + '@aws-sdk/types': 3.973.8 + '@aws/lambda-invoke-store': 0.2.4 + '@smithy/protocol-http': 5.4.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-sdk-s3@3.972.37': + dependencies: + '@aws-sdk/core': 3.974.8 + '@aws-sdk/types': 3.973.8 + '@aws-sdk/util-arn-parser': 3.972.3 + '@smithy/core': 3.24.0 + '@smithy/node-config-provider': 4.4.0 + '@smithy/protocol-http': 5.4.0 + '@smithy/signature-v4': 5.4.0 + '@smithy/smithy-client': 4.13.0 + '@smithy/types': 4.14.1 + '@smithy/util-config-provider': 4.3.0 + '@smithy/util-middleware': 4.3.0 + '@smithy/util-stream': 4.6.0 + '@smithy/util-utf8': 4.3.0 + tslib: 2.8.1 + + '@aws-sdk/middleware-ssec@3.972.10': + dependencies: + '@aws-sdk/types': 3.973.8 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@aws-sdk/middleware-user-agent@3.972.38': + dependencies: + '@aws-sdk/core': 3.974.8 + '@aws-sdk/types': 3.973.8 + '@aws-sdk/util-endpoints': 3.996.8 + '@smithy/core': 3.24.0 + '@smithy/protocol-http': 5.4.0 + '@smithy/types': 4.14.1 + '@smithy/util-retry': 4.4.0 + tslib: 2.8.1 + + '@aws-sdk/nested-clients@3.997.6': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.8 + '@aws-sdk/middleware-host-header': 3.972.10 + '@aws-sdk/middleware-logger': 3.972.10 + '@aws-sdk/middleware-recursion-detection': 3.972.11 + '@aws-sdk/middleware-user-agent': 3.972.38 + '@aws-sdk/region-config-resolver': 3.972.13 + '@aws-sdk/signature-v4-multi-region': 3.996.25 + '@aws-sdk/types': 3.973.8 + '@aws-sdk/util-endpoints': 3.996.8 + '@aws-sdk/util-user-agent-browser': 3.972.10 + '@aws-sdk/util-user-agent-node': 3.973.24 + '@smithy/config-resolver': 4.5.0 + '@smithy/core': 3.24.0 + '@smithy/fetch-http-handler': 5.4.0 + '@smithy/hash-node': 4.3.0 + '@smithy/invalid-dependency': 4.3.0 + '@smithy/middleware-content-length': 4.3.0 + '@smithy/middleware-endpoint': 4.5.0 + '@smithy/middleware-retry': 4.6.0 + '@smithy/middleware-serde': 4.3.0 + '@smithy/middleware-stack': 4.3.0 + '@smithy/node-config-provider': 4.4.0 + '@smithy/node-http-handler': 4.7.0 + '@smithy/protocol-http': 5.4.0 + '@smithy/smithy-client': 4.13.0 + '@smithy/types': 4.14.1 + '@smithy/url-parser': 4.3.0 + '@smithy/util-base64': 4.4.0 + '@smithy/util-body-length-browser': 4.3.0 + '@smithy/util-body-length-node': 4.3.0 + '@smithy/util-defaults-mode-browser': 4.4.0 + '@smithy/util-defaults-mode-node': 4.3.0 + '@smithy/util-endpoints': 3.5.0 + '@smithy/util-middleware': 4.3.0 + '@smithy/util-retry': 4.4.0 + '@smithy/util-utf8': 4.3.0 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/region-config-resolver@3.972.13': + dependencies: + '@aws-sdk/types': 3.973.8 + '@smithy/config-resolver': 4.5.0 + '@smithy/node-config-provider': 4.4.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@aws-sdk/signature-v4-multi-region@3.996.25': + dependencies: + '@aws-sdk/middleware-sdk-s3': 3.972.37 + '@aws-sdk/types': 3.973.8 + '@smithy/protocol-http': 5.4.0 + '@smithy/signature-v4': 5.4.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@aws-sdk/token-providers@3.1041.0': + dependencies: + '@aws-sdk/core': 3.974.8 + '@aws-sdk/nested-clients': 3.997.6 + '@aws-sdk/types': 3.973.8 + '@smithy/property-provider': 4.3.0 + '@smithy/shared-ini-file-loader': 4.5.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + transitivePeerDependencies: + - aws-crt + + '@aws-sdk/types@3.973.8': + dependencies: + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@aws-sdk/util-arn-parser@3.972.3': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-endpoints@3.996.8': + dependencies: + '@aws-sdk/types': 3.973.8 + '@smithy/types': 4.14.1 + '@smithy/url-parser': 4.3.0 + '@smithy/util-endpoints': 3.5.0 + tslib: 2.8.1 + + '@aws-sdk/util-locate-window@3.965.5': + dependencies: + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-browser@3.972.10': + dependencies: + '@aws-sdk/types': 3.973.8 + '@smithy/types': 4.14.1 + bowser: 2.14.1 + tslib: 2.8.1 + + '@aws-sdk/util-user-agent-node@3.973.24': + dependencies: + '@aws-sdk/middleware-user-agent': 3.972.38 + '@aws-sdk/types': 3.973.8 + '@smithy/node-config-provider': 4.4.0 + '@smithy/types': 4.14.1 + '@smithy/util-config-provider': 4.3.0 + tslib: 2.8.1 + + '@aws-sdk/xml-builder@3.972.22': + dependencies: + '@nodable/entities': 2.1.0 + '@smithy/types': 4.14.1 + fast-xml-parser: 5.7.2 + tslib: 2.8.1 + + '@aws/lambda-invoke-store@0.2.4': {} + + '@babel/code-frame@7.29.0': + dependencies: + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 + + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/runtime@7.29.2': {} + + '@commitlint/cli@20.5.3(@types/node@25.6.0)(conventional-commits-parser@6.4.0)(typescript@6.0.3)': + dependencies: + '@commitlint/format': 20.5.0 + '@commitlint/lint': 20.5.3 + '@commitlint/load': 20.5.3(@types/node@25.6.0)(typescript@6.0.3) + '@commitlint/read': 20.5.0(conventional-commits-parser@6.4.0) + '@commitlint/types': 20.5.0 + tinyexec: 1.1.2 + yargs: 17.7.1 + transitivePeerDependencies: + - '@types/node' + - conventional-commits-filter + - conventional-commits-parser + - typescript + + '@commitlint/config-conventional@20.5.3': + dependencies: + '@commitlint/types': 20.5.0 + conventional-changelog-conventionalcommits: 9.3.1 + + '@commitlint/config-validator@20.5.0': + dependencies: + '@commitlint/types': 20.5.0 + ajv: 8.20.0 + + '@commitlint/ensure@20.5.3': + dependencies: + '@commitlint/types': 20.5.0 + es-toolkit: 1.46.1 + + '@commitlint/execute-rule@20.0.0': {} + + '@commitlint/format@20.5.0': + dependencies: + '@commitlint/types': 20.5.0 + picocolors: 1.1.1 + + '@commitlint/is-ignored@20.5.0': + dependencies: + '@commitlint/types': 20.5.0 + semver: 7.7.4 + + '@commitlint/lint@20.5.3': + dependencies: + '@commitlint/is-ignored': 20.5.0 + '@commitlint/parse': 20.5.0 + '@commitlint/rules': 20.5.3 + '@commitlint/types': 20.5.0 + + '@commitlint/load@20.5.3(@types/node@25.6.0)(typescript@6.0.3)': + dependencies: + '@commitlint/config-validator': 20.5.0 + '@commitlint/execute-rule': 20.0.0 + '@commitlint/resolve-extends': 20.5.3 + '@commitlint/types': 20.5.0 + cosmiconfig: 9.0.1(typescript@6.0.3) + cosmiconfig-typescript-loader: 6.3.0(@types/node@25.6.0)(cosmiconfig@9.0.1(typescript@6.0.3))(typescript@6.0.3) + es-toolkit: 1.46.1 + is-plain-obj: 4.1.0 + picocolors: 1.1.1 + transitivePeerDependencies: + - '@types/node' + - typescript + + '@commitlint/message@20.4.3': {} + + '@commitlint/parse@20.5.0': + dependencies: + '@commitlint/types': 20.5.0 + conventional-changelog-angular: 8.3.1 + conventional-commits-parser: 6.4.0 + + '@commitlint/read@20.5.0(conventional-commits-parser@6.4.0)': + dependencies: + '@commitlint/top-level': 20.4.3 + '@commitlint/types': 20.5.0 + git-raw-commits: 5.0.1(conventional-commits-parser@6.4.0) + minimist: 1.2.8 + tinyexec: 1.1.2 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser + + '@commitlint/resolve-extends@20.5.3': + dependencies: + '@commitlint/config-validator': 20.5.0 + '@commitlint/types': 20.5.0 + es-toolkit: 1.46.1 + global-directory: 5.0.0 + import-meta-resolve: 4.2.0 + resolve-from: 5.0.0 + + '@commitlint/rules@20.5.3': + dependencies: + '@commitlint/ensure': 20.5.3 + '@commitlint/message': 20.4.3 + '@commitlint/to-lines': 20.0.0 + '@commitlint/types': 20.5.0 + + '@commitlint/to-lines@20.0.0': {} + + '@commitlint/top-level@20.4.3': + dependencies: + escalade: 3.2.0 + + '@commitlint/types@20.5.0': + dependencies: + conventional-commits-parser: 6.4.0 + picocolors: 1.1.1 + + '@conventional-changelog/git-client@2.7.0(conventional-commits-parser@6.4.0)': + dependencies: + '@simple-libs/child-process-utils': 1.0.2 + '@simple-libs/stream-utils': 1.2.0 + semver: 7.7.4 + optionalDependencies: + conventional-commits-parser: 6.4.0 + + '@epic-web/invariant@1.0.0': {} + + '@esbuild/aix-ppc64@0.27.7': + optional: true + + '@esbuild/android-arm64@0.27.7': + optional: true + + '@esbuild/android-arm@0.27.7': + optional: true + + '@esbuild/android-x64@0.27.7': + optional: true + + '@esbuild/darwin-arm64@0.27.7': + optional: true + + '@esbuild/darwin-x64@0.27.7': + optional: true + + '@esbuild/freebsd-arm64@0.27.7': + optional: true + + '@esbuild/freebsd-x64@0.27.7': + optional: true + + '@esbuild/linux-arm64@0.27.7': + optional: true + + '@esbuild/linux-arm@0.27.7': + optional: true + + '@esbuild/linux-ia32@0.27.7': + optional: true + + '@esbuild/linux-loong64@0.27.7': + optional: true + + '@esbuild/linux-mips64el@0.27.7': + optional: true + + '@esbuild/linux-ppc64@0.27.7': + optional: true + + '@esbuild/linux-riscv64@0.27.7': + optional: true + + '@esbuild/linux-s390x@0.27.7': + optional: true + + '@esbuild/linux-x64@0.27.7': + optional: true + + '@esbuild/netbsd-arm64@0.27.7': + optional: true + + '@esbuild/netbsd-x64@0.27.7': + optional: true + + '@esbuild/openbsd-arm64@0.27.7': + optional: true + + '@esbuild/openbsd-x64@0.27.7': + optional: true + + '@esbuild/openharmony-arm64@0.27.7': + optional: true + + '@esbuild/sunos-x64@0.27.7': + optional: true + + '@esbuild/win32-arm64@0.27.7': + optional: true + + '@esbuild/win32-ia32@0.27.7': + optional: true + + '@esbuild/win32-x64@0.27.7': + optional: true + + '@eslint-community/eslint-utils@4.9.1(eslint@10.3.0(jiti@2.7.0))': + dependencies: + eslint: 10.3.0(jiti@2.7.0) + eslint-visitor-keys: 3.4.3 + + '@eslint-community/regexpp@4.12.2': {} + + '@eslint/config-array@0.23.5': + dependencies: + '@eslint/object-schema': 3.0.5 + debug: 4.4.3(supports-color@8.1.1) + minimatch: 10.2.5 + transitivePeerDependencies: + - supports-color + + '@eslint/config-helpers@0.5.5': + dependencies: + '@eslint/core': 1.2.1 + + '@eslint/core@1.2.1': + dependencies: + '@types/json-schema': 7.0.15 + + '@eslint/js@10.0.1(eslint@10.3.0(jiti@2.7.0))': + optionalDependencies: + eslint: 10.3.0(jiti@2.7.0) + + '@eslint/object-schema@3.0.5': {} + + '@eslint/plugin-kit@0.7.1': + dependencies: + '@eslint/core': 1.2.1 + levn: 0.4.1 + + '@humanfs/core@0.19.1': {} + + '@humanfs/node@0.16.6': + dependencies: + '@humanfs/core': 0.19.1 + '@humanwhocodes/retry': 0.3.1 + + '@humanwhocodes/module-importer@1.0.1': {} + + '@humanwhocodes/retry@0.3.1': {} + + '@humanwhocodes/retry@0.4.2': {} + + '@inquirer/ansi@1.0.2': {} + + '@inquirer/checkbox@4.3.2(@types/node@22.19.18)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@22.19.18) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@22.19.18) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.19.18 + + '@inquirer/confirm@3.2.0': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 1.5.5 + + '@inquirer/confirm@5.1.21(@types/node@22.19.18)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.19.18) + '@inquirer/type': 3.0.10(@types/node@22.19.18) + optionalDependencies: + '@types/node': 22.19.18 + + '@inquirer/core@10.3.2(@types/node@22.19.18)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@22.19.18) + cli-width: 4.1.0 + mute-stream: 2.0.0 + signal-exit: 4.1.0 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.19.18 + + '@inquirer/core@9.2.1': + dependencies: + '@inquirer/figures': 1.0.15 + '@inquirer/type': 2.0.0 + '@types/mute-stream': 0.0.4 + '@types/node': 22.19.18 + '@types/wrap-ansi': 3.0.0 + ansi-escapes: 4.3.2 + cli-width: 4.1.0 + mute-stream: 1.0.0 + signal-exit: 4.1.0 + strip-ansi: 6.0.1 + wrap-ansi: 6.2.0 + yoctocolors-cjs: 2.1.3 + + '@inquirer/editor@4.2.23(@types/node@22.19.18)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.19.18) + '@inquirer/external-editor': 1.0.3(@types/node@22.19.18) + '@inquirer/type': 3.0.10(@types/node@22.19.18) + optionalDependencies: + '@types/node': 22.19.18 + + '@inquirer/expand@4.0.23(@types/node@22.19.18)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.19.18) + '@inquirer/type': 3.0.10(@types/node@22.19.18) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.19.18 + + '@inquirer/external-editor@1.0.3(@types/node@22.19.18)': + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.2 + optionalDependencies: + '@types/node': 22.19.18 + + '@inquirer/figures@1.0.15': {} + + '@inquirer/input@2.3.0': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/type': 1.5.5 + + '@inquirer/input@4.3.1(@types/node@22.19.18)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.19.18) + '@inquirer/type': 3.0.10(@types/node@22.19.18) + optionalDependencies: + '@types/node': 22.19.18 + + '@inquirer/number@3.0.23(@types/node@22.19.18)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.19.18) + '@inquirer/type': 3.0.10(@types/node@22.19.18) + optionalDependencies: + '@types/node': 22.19.18 + + '@inquirer/password@4.0.23(@types/node@22.19.18)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@22.19.18) + '@inquirer/type': 3.0.10(@types/node@22.19.18) + optionalDependencies: + '@types/node': 22.19.18 + + '@inquirer/prompts@7.10.1(@types/node@22.19.18)': + dependencies: + '@inquirer/checkbox': 4.3.2(@types/node@22.19.18) + '@inquirer/confirm': 5.1.21(@types/node@22.19.18) + '@inquirer/editor': 4.2.23(@types/node@22.19.18) + '@inquirer/expand': 4.0.23(@types/node@22.19.18) + '@inquirer/input': 4.3.1(@types/node@22.19.18) + '@inquirer/number': 3.0.23(@types/node@22.19.18) + '@inquirer/password': 4.0.23(@types/node@22.19.18) + '@inquirer/rawlist': 4.1.11(@types/node@22.19.18) + '@inquirer/search': 3.2.2(@types/node@22.19.18) + '@inquirer/select': 4.4.2(@types/node@22.19.18) + optionalDependencies: + '@types/node': 22.19.18 + + '@inquirer/rawlist@4.1.11(@types/node@22.19.18)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.19.18) + '@inquirer/type': 3.0.10(@types/node@22.19.18) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.19.18 + + '@inquirer/search@3.2.2(@types/node@22.19.18)': + dependencies: + '@inquirer/core': 10.3.2(@types/node@22.19.18) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@22.19.18) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.19.18 + + '@inquirer/select@2.5.0': + dependencies: + '@inquirer/core': 9.2.1 + '@inquirer/figures': 1.0.15 + '@inquirer/type': 1.5.5 + ansi-escapes: 4.3.2 + yoctocolors-cjs: 2.1.3 + + '@inquirer/select@4.4.2(@types/node@22.19.18)': + dependencies: + '@inquirer/ansi': 1.0.2 + '@inquirer/core': 10.3.2(@types/node@22.19.18) + '@inquirer/figures': 1.0.15 + '@inquirer/type': 3.0.10(@types/node@22.19.18) + yoctocolors-cjs: 2.1.3 + optionalDependencies: + '@types/node': 22.19.18 + + '@inquirer/type@1.5.5': + dependencies: + mute-stream: 1.0.0 + + '@inquirer/type@2.0.0': + dependencies: + mute-stream: 1.0.0 + + '@inquirer/type@3.0.10(@types/node@22.19.18)': + optionalDependencies: + '@types/node': 22.19.18 + + '@isaacs/cliui@8.0.2': + dependencies: + string-width: 5.1.2 + string-width-cjs: string-width@4.2.3 + strip-ansi: 7.2.0 + strip-ansi-cjs: strip-ansi@6.0.1 + wrap-ansi: 8.1.0 + wrap-ansi-cjs: wrap-ansi@7.0.0 + + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.3 + + '@jridgewell/sourcemap-codec@1.5.5': {} + + '@nodable/entities@2.1.0': {} + + '@oclif/core@4.11.1': + dependencies: + ansi-escapes: 4.3.2 + ansis: 3.17.0 + clean-stack: 3.0.1 + cli-spinners: 2.9.2 + debug: 4.4.3(supports-color@8.1.1) + ejs: 3.1.10 + get-package-type: 0.1.0 + indent-string: 4.0.0 + is-wsl: 2.2.0 + lilconfig: 3.1.3 + minimatch: 10.2.5 + semver: 7.7.4 + string-width: 4.2.3 + supports-color: 8.1.1 + tinyglobby: 0.2.16 + widest-line: 3.1.0 + wordwrap: 1.0.0 + wrap-ansi: 7.0.0 + + '@oclif/core@4.9.0': + dependencies: + ansi-escapes: 4.3.2 + ansis: 3.17.0 + clean-stack: 3.0.1 + cli-spinners: 2.9.2 + debug: 4.4.3(supports-color@8.1.1) + ejs: 3.1.10 + get-package-type: 0.1.0 + indent-string: 4.0.0 + is-wsl: 2.2.0 + lilconfig: 3.1.3 + minimatch: 10.2.5 + semver: 7.7.4 + string-width: 4.2.3 + supports-color: 8.1.1 + tinyglobby: 0.2.16 + widest-line: 3.1.0 + wordwrap: 1.0.0 + wrap-ansi: 7.0.0 + + '@oclif/plugin-help@6.2.46': + dependencies: + '@oclif/core': 4.11.1 + + '@oclif/plugin-not-found@3.2.82(@types/node@22.19.18)': + dependencies: + '@inquirer/prompts': 7.10.1(@types/node@22.19.18) + '@oclif/core': 4.11.1 + ansis: 3.17.0 + fast-levenshtein: 3.0.0 + transitivePeerDependencies: + - '@types/node' + + '@oclif/plugin-warn-if-update-available@3.1.62': + dependencies: + '@oclif/core': 4.11.1 + ansis: 3.17.0 + debug: 4.4.3(supports-color@8.1.1) + http-call: 5.3.0 + lodash: 4.18.1 + registry-auth-token: 5.1.1 + transitivePeerDependencies: + - supports-color + + '@pkgjs/parseargs@0.11.0': + optional: true + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + '@pnpm/config.env-replace@1.1.0': {} + + '@pnpm/network.ca-file@1.0.2': + dependencies: + graceful-fs: 4.2.10 + + '@pnpm/npm-conf@3.0.2': + dependencies: + '@pnpm/config.env-replace': 1.1.0 + '@pnpm/network.ca-file': 1.0.2 + config-chain: 1.1.13 + + '@rollup/rollup-android-arm-eabi@4.60.3': + optional: true + + '@rollup/rollup-android-arm64@4.60.3': + optional: true + + '@rollup/rollup-darwin-arm64@4.60.3': + optional: true + + '@rollup/rollup-darwin-x64@4.60.3': + optional: true + + '@rollup/rollup-freebsd-arm64@4.60.3': + optional: true + + '@rollup/rollup-freebsd-x64@4.60.3': + optional: true + + '@rollup/rollup-linux-arm-gnueabihf@4.60.3': + optional: true + + '@rollup/rollup-linux-arm-musleabihf@4.60.3': + optional: true + + '@rollup/rollup-linux-arm64-gnu@4.60.3': + optional: true + + '@rollup/rollup-linux-arm64-musl@4.60.3': + optional: true + + '@rollup/rollup-linux-loong64-gnu@4.60.3': + optional: true + + '@rollup/rollup-linux-loong64-musl@4.60.3': + optional: true + + '@rollup/rollup-linux-ppc64-gnu@4.60.3': + optional: true + + '@rollup/rollup-linux-ppc64-musl@4.60.3': + optional: true + + '@rollup/rollup-linux-riscv64-gnu@4.60.3': + optional: true + + '@rollup/rollup-linux-riscv64-musl@4.60.3': + optional: true + + '@rollup/rollup-linux-s390x-gnu@4.60.3': + optional: true + + '@rollup/rollup-linux-x64-gnu@4.60.3': + optional: true + + '@rollup/rollup-linux-x64-musl@4.60.3': + optional: true + + '@rollup/rollup-openbsd-x64@4.60.3': + optional: true + + '@rollup/rollup-openharmony-arm64@4.60.3': + optional: true + + '@rollup/rollup-win32-arm64-msvc@4.60.3': + optional: true + + '@rollup/rollup-win32-ia32-msvc@4.60.3': + optional: true + + '@rollup/rollup-win32-x64-gnu@4.60.3': + optional: true + + '@rollup/rollup-win32-x64-msvc@4.60.3': + optional: true + + '@sec-ant/readable-stream@0.4.1': {} + + '@simple-libs/child-process-utils@1.0.2': + dependencies: + '@simple-libs/stream-utils': 1.2.0 + + '@simple-libs/stream-utils@1.2.0': {} + + '@sindresorhus/is@5.6.0': {} + + '@sindresorhus/merge-streams@4.0.0': {} + + '@smithy/config-resolver@4.5.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/core@3.24.0': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/credential-provider-imds@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/eventstream-serde-browser@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-config-resolver@4.4.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/eventstream-serde-node@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/fetch-http-handler@5.4.0': + dependencies: + '@smithy/core': 3.24.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/hash-blob-browser@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/hash-node@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/hash-stream-node@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/invalid-dependency@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/is-array-buffer@2.2.0': + dependencies: + tslib: 2.8.1 + + '@smithy/is-array-buffer@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/md5-js@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/middleware-content-length@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/middleware-endpoint@4.5.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/middleware-retry@4.6.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/middleware-serde@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/middleware-stack@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/node-config-provider@4.4.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/node-http-handler@4.7.0': + dependencies: + '@smithy/core': 3.24.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/property-provider@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/protocol-http@5.4.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/shared-ini-file-loader@4.5.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/signature-v4@5.4.0': + dependencies: + '@smithy/core': 3.24.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/smithy-client@4.13.0': + dependencies: + '@smithy/core': 3.24.0 + '@smithy/types': 4.14.1 + tslib: 2.8.1 + + '@smithy/types@4.14.1': + dependencies: + tslib: 2.8.1 + + '@smithy/url-parser@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/util-base64@4.4.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/util-body-length-browser@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/util-body-length-node@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/util-buffer-from@2.2.0': + dependencies: + '@smithy/is-array-buffer': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-config-provider@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/util-defaults-mode-browser@4.4.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/util-defaults-mode-node@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/util-endpoints@3.5.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/util-middleware@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/util-retry@4.4.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/util-stream@4.6.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/util-utf8@2.3.0': + dependencies: + '@smithy/util-buffer-from': 2.2.0 + tslib: 2.8.1 + + '@smithy/util-utf8@4.3.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@smithy/util-waiter@4.4.0': + dependencies: + '@smithy/core': 3.24.0 + tslib: 2.8.1 + + '@stylistic/eslint-plugin@5.10.0(eslint@10.3.0(jiti@2.7.0))': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)) + '@typescript-eslint/types': 8.59.2 + eslint: 10.3.0(jiti@2.7.0) + eslint-visitor-keys: 4.2.1 + espree: 10.4.0 + estraverse: 5.3.0 + picomatch: 4.0.4 + + '@szmarczak/http-timer@5.0.1': + dependencies: + defer-to-connect: 2.0.1 + + '@types/archiver@7.0.0': + dependencies: + '@types/readdir-glob': 1.1.5 + + '@types/chai@5.2.3': + dependencies: + '@types/deep-eql': 4.0.2 + assertion-error: 2.0.1 + + '@types/config@3.3.5': {} + + '@types/debug@4.1.13': + dependencies: + '@types/ms': 2.1.0 + + '@types/deep-eql@4.0.2': {} + + '@types/esrecurse@4.3.1': {} + + '@types/estree@1.0.8': {} + + '@types/estree@1.0.9': {} + + '@types/http-cache-semantics@4.2.0': {} + + '@types/json-schema@7.0.15': {} + + '@types/luxon@3.7.1': {} + + '@types/ms@2.1.0': {} + + '@types/mute-stream@0.0.4': + dependencies: + '@types/node': 22.19.18 + + '@types/node@22.19.18': + dependencies: + undici-types: 6.21.0 + + '@types/node@25.6.0': + dependencies: + undici-types: 7.19.2 + + '@types/prompts@2.4.9': + dependencies: + '@types/node': 22.19.18 + kleur: 3.0.3 + + '@types/readable-stream@4.0.23': + dependencies: + '@types/node': 22.19.18 + + '@types/readdir-glob@1.1.5': + dependencies: + '@types/node': 22.19.18 + + '@types/semver@7.7.1': {} + + '@types/tunnel@0.0.7': + dependencies: + '@types/node': 22.19.18 + + '@types/uuid@10.0.0': {} + + '@types/wrap-ansi@3.0.0': {} + + '@types/ws@8.18.1': + dependencies: + '@types/node': 22.19.18 + + '@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.59.2 + '@typescript-eslint/type-utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.59.2 + eslint: 10.3.0(jiti@2.7.0) + ignore: 7.0.5 + natural-compare: 1.4.0 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@typescript-eslint/scope-manager': 8.59.2 + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.59.2 + debug: 4.4.3(supports-color@8.1.1) + eslint: 10.3.0(jiti@2.7.0) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/project-service@8.59.2(typescript@6.0.3)': + dependencies: + '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@6.0.3) + '@typescript-eslint/types': 8.59.2 + debug: 4.4.3(supports-color@8.1.1) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/scope-manager@8.59.2': + dependencies: + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/visitor-keys': 8.59.2 + + '@typescript-eslint/tsconfig-utils@8.59.2(typescript@6.0.3)': + dependencies: + typescript: 6.0.3 + + '@typescript-eslint/type-utils@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + debug: 4.4.3(supports-color@8.1.1) + eslint: 10.3.0(jiti@2.7.0) + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/types@8.59.2': {} + + '@typescript-eslint/typescript-estree@8.59.2(typescript@6.0.3)': + dependencies: + '@typescript-eslint/project-service': 8.59.2(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@6.0.3) + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/visitor-keys': 8.59.2 + debug: 4.4.3(supports-color@8.1.1) + minimatch: 10.2.5 + semver: 7.7.4 + tinyglobby: 0.2.16 + ts-api-utils: 2.5.0(typescript@6.0.3) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/utils@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.59.2 + '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3) + eslint: 10.3.0(jiti@2.7.0) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + '@typescript-eslint/visitor-keys@8.59.2': + dependencies: + '@typescript-eslint/types': 8.59.2 + eslint-visitor-keys: 5.0.1 + + '@vitest/expect@3.2.4': + dependencies: + '@types/chai': 5.2.3 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + tinyrainbow: 2.0.0 + + '@vitest/mocker@3.2.4(vite@7.3.3(@types/node@22.19.18)(jiti@2.7.0)(yaml@2.8.4))': + dependencies: + '@vitest/spy': 3.2.4 + estree-walker: 3.0.3 + magic-string: 0.30.21 + optionalDependencies: + vite: 7.3.3(@types/node@22.19.18)(jiti@2.7.0)(yaml@2.8.4) + + '@vitest/pretty-format@3.2.4': + dependencies: + tinyrainbow: 2.0.0 + + '@vitest/runner@3.2.4': + dependencies: + '@vitest/utils': 3.2.4 + pathe: 2.0.3 + strip-literal: 3.1.0 + + '@vitest/snapshot@3.2.4': + dependencies: + '@vitest/pretty-format': 3.2.4 + magic-string: 0.30.21 + pathe: 2.0.3 + + '@vitest/spy@3.2.4': + dependencies: + tinyspy: 4.0.4 + + '@vitest/utils@3.2.4': + dependencies: + '@vitest/pretty-format': 3.2.4 + loupe: 3.2.1 + tinyrainbow: 2.0.0 + + abort-controller@3.0.0: + dependencies: + event-target-shim: 5.0.1 + + acorn-jsx@5.3.2(acorn@8.16.0): + dependencies: + acorn: 8.16.0 + + acorn-walk@8.3.5: + dependencies: + acorn: 8.16.0 + + acorn@8.16.0: {} + + ajv-formats@3.0.1(ajv@8.20.0): + optionalDependencies: + ajv: 8.20.0 + + ajv@6.15.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-json-stable-stringify: 2.1.0 + json-schema-traverse: 0.4.1 + uri-js: 4.4.1 + + ajv@8.20.0: + dependencies: + fast-deep-equal: 3.1.3 + fast-uri: 3.1.2 + json-schema-traverse: 1.0.0 + require-from-string: 2.0.2 + + ansi-escapes@4.3.2: + dependencies: + type-fest: 0.21.3 + + ansi-escapes@7.3.0: + dependencies: + environment: 1.1.0 + + ansi-regex@5.0.1: {} + + ansi-regex@6.2.2: {} + + ansi-styles@4.3.0: + dependencies: + color-convert: 2.0.1 + + ansi-styles@6.2.3: {} + + ansis@3.17.0: {} + + archiver-utils@5.0.2: + dependencies: + glob: 10.5.0 + graceful-fs: 4.2.11 + is-stream: 2.0.1 + lazystream: 1.0.1 + lodash: 4.18.1 + normalize-path: 3.0.0 + readable-stream: 4.7.0 + + archiver@7.0.1: + dependencies: + archiver-utils: 5.0.2 + async: 3.2.6 + buffer-crc32: 1.0.0 + readable-stream: 4.7.0 + readdir-glob: 1.1.3 + tar-stream: 3.2.0 + zip-stream: 6.0.1 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + + argparse@2.0.1: {} + + array-ify@1.0.0: {} + + assertion-error@2.0.1: {} + + ast-types@0.16.1: + dependencies: + tslib: 2.8.1 + + async-retry@1.3.3: + dependencies: + retry: 0.13.1 + + async@3.2.6: {} + + asynckit@0.4.0: {} + + atomically@2.1.1: + dependencies: + stubborn-fs: 2.0.0 + when-exit: 2.1.5 + + axios@1.16.0(debug@4.4.3): + dependencies: + follow-redirects: 1.16.0(debug@4.4.3) + form-data: 4.0.5 + proxy-from-env: 2.1.0 + transitivePeerDependencies: + - debug + + b4a@1.8.1: {} + + balanced-match@1.0.2: {} + + balanced-match@4.0.4: {} + + bare-events@2.8.2: {} + + bare-fs@4.7.1: + dependencies: + bare-events: 2.8.2 + bare-path: 3.0.0 + bare-stream: 2.13.1(bare-events@2.8.2) + bare-url: 2.4.3 + fast-fifo: 1.3.2 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + + bare-os@3.9.1: {} + + bare-path@3.0.0: + dependencies: + bare-os: 3.9.1 + + bare-stream@2.13.1(bare-events@2.8.2): + dependencies: + streamx: 2.25.0 + teex: 1.0.1 + optionalDependencies: + bare-events: 2.8.2 + transitivePeerDependencies: + - react-native-b4a + + bare-url@2.4.3: + dependencies: + bare-path: 3.0.0 + + base64-js@1.5.1: {} + + bl@6.1.6: + dependencies: + '@types/readable-stream': 4.0.23 + buffer: 6.0.3 + inherits: 2.0.4 + readable-stream: 4.7.0 + + bowser@2.14.1: {} + + brace-expansion@2.1.0: + dependencies: + balanced-match: 1.0.2 + + brace-expansion@5.0.6: + dependencies: + balanced-match: 4.0.4 + + braces@3.0.3: + dependencies: + fill-range: 7.1.1 + + broker-factory@3.1.14: + dependencies: + '@babel/runtime': 7.29.2 + fast-unique-numbers: 9.0.27 + tslib: 2.8.1 + worker-factory: 7.0.49 + + buffer-crc32@1.0.0: {} + + buffer-from@1.1.2: {} + + buffer@6.0.3: + dependencies: + base64-js: 1.5.1 + ieee754: 1.2.1 + + bundle-name@4.1.0: + dependencies: + run-applescript: 7.1.0 + + cac@6.7.14: {} + + cacheable-lookup@7.0.0: {} + + cacheable-request@10.2.14: + dependencies: + '@types/http-cache-semantics': 4.2.0 + get-stream: 6.0.1 + http-cache-semantics: 4.2.0 + keyv: 4.5.4 + mimic-response: 4.0.0 + normalize-url: 8.1.1 + responselike: 3.0.0 + + call-bind-apply-helpers@1.0.2: + dependencies: + es-errors: 1.3.0 + function-bind: 1.1.2 + + callsites@3.1.0: {} + + camel-case@4.1.2: + dependencies: + pascal-case: 3.1.2 + tslib: 2.8.1 + + capital-case@1.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + upper-case-first: 2.0.2 + + chai@5.3.3: + dependencies: + assertion-error: 2.0.1 + check-error: 2.1.3 + deep-eql: 5.0.2 + loupe: 3.2.1 + pathval: 2.0.1 + + chalk@5.6.2: {} + + change-case@4.1.2: + dependencies: + camel-case: 4.1.2 + capital-case: 1.0.4 + constant-case: 3.0.4 + dot-case: 3.0.4 + header-case: 2.0.4 + no-case: 3.0.4 + param-case: 3.0.4 + pascal-case: 3.1.2 + path-case: 3.0.4 + sentence-case: 3.0.4 + snake-case: 3.0.4 + tslib: 2.8.1 + + chardet@2.1.1: {} + + check-error@2.1.3: {} + + chownr@3.0.0: {} + + ci-info@4.4.0: {} + + clean-stack@3.0.1: + dependencies: + escape-string-regexp: 4.0.0 + + cli-cursor@5.0.0: + dependencies: + restore-cursor: 5.1.0 + + cli-spinners@2.9.2: {} + + cli-spinners@3.4.0: {} + + cli-truncate@5.2.0: + dependencies: + slice-ansi: 8.0.0 + string-width: 8.2.1 + + cli-width@4.1.0: {} + + cliui@8.0.1: + dependencies: + string-width: 4.2.3 + strip-ansi: 6.0.1 + wrap-ansi: 7.0.0 + + color-convert@2.0.1: + dependencies: + color-name: 1.1.4 + + color-name@1.1.4: {} + + colorette@2.0.20: {} + + combined-stream@1.0.8: + dependencies: + delayed-stream: 1.0.0 + + commander@14.0.3: {} + + commist@3.2.0: {} + + compare-func@2.0.0: + dependencies: + array-ify: 1.0.0 + dot-prop: 5.3.0 + + compress-commons@6.0.2: + dependencies: + crc-32: 1.2.2 + crc32-stream: 6.0.0 + is-stream: 2.0.1 + normalize-path: 3.0.0 + readable-stream: 4.7.0 + + concat-stream@2.0.0: + dependencies: + buffer-from: 1.1.2 + inherits: 2.0.4 + readable-stream: 3.6.2 + typedarray: 0.0.6 + + conf@15.1.0: + dependencies: + ajv: 8.20.0 + ajv-formats: 3.0.1(ajv@8.20.0) + atomically: 2.1.1 + debounce-fn: 6.0.0 + dot-prop: 10.1.0 + env-paths: 3.0.0 + json-schema-typed: 8.0.2 + semver: 7.7.4 + uint8array-extras: 1.5.0 + + config-chain@1.1.13: + dependencies: + ini: 1.3.8 + proto-list: 1.2.4 + + config@4.4.1: + dependencies: + json5: 2.2.3 + + constant-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + upper-case: 2.0.2 + + content-type@1.0.5: {} + + conventional-changelog-angular@8.3.1: + dependencies: + compare-func: 2.0.0 + + conventional-changelog-conventionalcommits@9.3.1: + dependencies: + compare-func: 2.0.0 + + conventional-commits-parser@6.4.0: + dependencies: + '@simple-libs/stream-utils': 1.2.0 + meow: 13.2.0 + + core-util-is@1.0.3: {} + + cosmiconfig-typescript-loader@6.3.0(@types/node@25.6.0)(cosmiconfig@9.0.1(typescript@6.0.3))(typescript@6.0.3): + dependencies: + '@types/node': 25.6.0 + cosmiconfig: 9.0.1(typescript@6.0.3) + jiti: 2.6.1 + typescript: 6.0.3 + + cosmiconfig@9.0.1(typescript@6.0.3): + dependencies: + env-paths: 2.2.1 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + parse-json: 5.2.0 + optionalDependencies: + typescript: 6.0.3 + + crc-32@1.2.2: {} + + crc32-stream@6.0.0: + dependencies: + crc-32: 1.2.2 + readable-stream: 4.7.0 + + cross-env@10.1.0: + dependencies: + '@epic-web/invariant': 1.0.0 + cross-spawn: 7.0.6 + + cross-spawn@7.0.6: + dependencies: + path-key: 3.1.1 + shebang-command: 2.0.0 + which: 2.0.2 + + debounce-fn@6.0.0: + dependencies: + mimic-function: 5.0.1 + + debug@4.4.3(supports-color@8.1.1): + dependencies: + ms: 2.1.3 + optionalDependencies: + supports-color: 8.1.1 + + decompress-response@6.0.0: + dependencies: + mimic-response: 3.1.0 + + deep-eql@5.0.2: {} + + deep-is@0.1.4: {} + + default-browser-id@5.0.1: {} + + default-browser@5.5.0: + dependencies: + bundle-name: 4.1.0 + default-browser-id: 5.0.1 + + defer-to-connect@2.0.1: {} + + define-lazy-prop@3.0.0: {} + + delayed-stream@1.0.0: {} + + detect-indent@7.0.2: {} + + detect-newline@4.0.1: {} + + dot-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + dot-prop@10.1.0: + dependencies: + type-fest: 5.6.0 + + dot-prop@5.3.0: + dependencies: + is-obj: 2.0.0 + + dotenv@17.4.2: {} + + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + + eastasianwidth@0.2.0: {} + + ejs@3.1.10: + dependencies: + jake: 10.9.4 + + emoji-regex@10.6.0: {} + + emoji-regex@8.0.0: {} + + emoji-regex@9.2.2: {} + + env-paths@2.2.1: {} + + env-paths@3.0.0: {} + + environment@1.1.0: {} + + error-ex@1.3.2: + dependencies: + is-arrayish: 0.2.1 + + es-define-property@1.0.1: {} + + es-errors@1.3.0: {} + + es-module-lexer@1.7.0: {} + + es-object-atoms@1.1.1: + dependencies: + es-errors: 1.3.0 + + es-set-tostringtag@2.1.0: + dependencies: + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + has-tostringtag: 1.0.2 + hasown: 2.0.3 + + es-toolkit@1.46.1: {} + + esbuild@0.27.7: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + + escalade@3.2.0: {} + + escape-string-regexp@4.0.0: {} + + eslint-scope@9.1.2: + dependencies: + '@types/esrecurse': 4.3.1 + '@types/estree': 1.0.9 + esrecurse: 4.3.0 + estraverse: 5.3.0 + + eslint-visitor-keys@3.4.3: {} + + eslint-visitor-keys@4.2.1: {} + + eslint-visitor-keys@5.0.1: {} + + eslint@10.3.0(jiti@2.7.0): + dependencies: + '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)) + '@eslint-community/regexpp': 4.12.2 + '@eslint/config-array': 0.23.5 + '@eslint/config-helpers': 0.5.5 + '@eslint/core': 1.2.1 + '@eslint/plugin-kit': 0.7.1 + '@humanfs/node': 0.16.6 + '@humanwhocodes/module-importer': 1.0.1 + '@humanwhocodes/retry': 0.4.2 + '@types/estree': 1.0.9 + ajv: 6.15.0 + cross-spawn: 7.0.6 + debug: 4.4.3(supports-color@8.1.1) + escape-string-regexp: 4.0.0 + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + espree: 11.2.0 + esquery: 1.7.0 + esutils: 2.0.3 + fast-deep-equal: 3.1.3 + file-entry-cache: 8.0.0 + find-up: 5.0.0 + glob-parent: 6.0.2 + ignore: 5.3.2 + imurmurhash: 0.1.4 + is-glob: 4.0.3 + json-stable-stringify-without-jsonify: 1.0.1 + minimatch: 10.2.5 + natural-compare: 1.4.0 + optionator: 0.9.3 + optionalDependencies: + jiti: 2.7.0 + transitivePeerDependencies: + - supports-color + + espree@10.4.0: + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 4.2.1 + + espree@11.2.0: + dependencies: + acorn: 8.16.0 + acorn-jsx: 5.3.2(acorn@8.16.0) + eslint-visitor-keys: 5.0.1 + + esprima@4.0.1: {} + + esquery@1.7.0: + dependencies: + estraverse: 5.3.0 + + esrecurse@4.3.0: + dependencies: + estraverse: 5.3.0 + + estraverse@5.3.0: {} + + estree-walker@3.0.3: + dependencies: + '@types/estree': 1.0.9 + + esutils@2.0.3: {} + + event-target-shim@5.0.1: {} + + eventemitter3@5.0.4: {} + + events-universal@1.0.1: + dependencies: + bare-events: 2.8.2 + transitivePeerDependencies: + - bare-abort-controller + + events@3.3.0: {} + + execa@5.1.1: + dependencies: + cross-spawn: 7.0.6 + get-stream: 6.0.1 + human-signals: 2.1.0 + is-stream: 2.0.1 + merge-stream: 2.0.0 + npm-run-path: 4.0.1 + onetime: 5.1.2 + signal-exit: 3.0.7 + strip-final-newline: 2.0.0 + + execa@9.6.1: + dependencies: + '@sindresorhus/merge-streams': 4.0.0 + cross-spawn: 7.0.6 + figures: 6.1.0 + get-stream: 9.0.1 + human-signals: 8.0.1 + is-plain-obj: 4.1.0 + is-stream: 4.0.1 + npm-run-path: 6.0.0 + pretty-ms: 9.3.0 + signal-exit: 4.1.0 + strip-final-newline: 4.0.0 + yoctocolors: 2.1.2 + + expect-type@1.3.0: {} + + fast-deep-equal@3.1.3: {} + + fast-fifo@1.3.2: {} + + fast-json-stable-stringify@2.1.0: {} + + fast-levenshtein@2.0.6: {} + + fast-levenshtein@3.0.0: + dependencies: + fastest-levenshtein: 1.0.16 + + fast-unique-numbers@9.0.27: + dependencies: + '@babel/runtime': 7.29.2 + tslib: 2.8.1 + + fast-uri@3.1.2: {} + + fast-xml-builder@1.2.0: + dependencies: + path-expression-matcher: 1.5.0 + xml-naming: 0.1.0 + + fast-xml-parser@5.7.2: + dependencies: + '@nodable/entities': 2.1.0 + fast-xml-builder: 1.2.0 + path-expression-matcher: 1.5.0 + strnum: 2.3.0 + + fastest-levenshtein@1.0.16: {} + + fdir@6.5.0(picomatch@4.0.4): + optionalDependencies: + picomatch: 4.0.4 + + figures@6.1.0: + dependencies: + is-unicode-supported: 2.1.0 + + file-entry-cache@8.0.0: + dependencies: + flat-cache: 4.0.1 + + filelist@1.0.6: + dependencies: + minimatch: 5.1.9 + + fill-range@7.1.1: + dependencies: + to-regex-range: 5.0.1 + + find-up@5.0.0: + dependencies: + locate-path: 6.0.0 + path-exists: 4.0.0 + + find-yarn-workspace-root@2.0.0: + dependencies: + micromatch: 4.0.8 + + flat-cache@4.0.1: + dependencies: + flatted: 3.4.2 + keyv: 4.5.4 + + flatted@3.4.2: {} + + follow-redirects@1.16.0(debug@4.4.3): + optionalDependencies: + debug: 4.4.3(supports-color@8.1.1) + + foreground-child@3.3.1: + dependencies: + cross-spawn: 7.0.6 + signal-exit: 4.1.0 + + form-data-encoder@2.1.4: {} + + form-data@4.0.5: + dependencies: + asynckit: 0.4.0 + combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.3 + mime-types: 2.1.35 + + fs-extra@8.1.0: + dependencies: + graceful-fs: 4.2.11 + jsonfile: 4.0.0 + universalify: 0.1.2 + + fsevents@2.3.2: + optional: true + + fsevents@2.3.3: + optional: true + + function-bind@1.1.2: {} + + get-caller-file@2.0.5: {} + + get-east-asian-width@1.6.0: {} + + get-intrinsic@1.3.0: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 + function-bind: 1.1.2 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 + hasown: 2.0.3 + math-intrinsics: 1.1.0 + + get-package-type@0.1.0: {} + + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + + get-stdin@9.0.0: {} + + get-stream@6.0.1: {} + + get-stream@9.0.1: + dependencies: + '@sec-ant/readable-stream': 0.4.1 + is-stream: 4.0.1 + + giget@3.2.0: {} + + git-hooks-list@3.2.0: {} + + git-raw-commits@5.0.1(conventional-commits-parser@6.4.0): + dependencies: + '@conventional-changelog/git-client': 2.7.0(conventional-commits-parser@6.4.0) + meow: 13.2.0 + transitivePeerDependencies: + - conventional-commits-filter + - conventional-commits-parser + + git-repo-info@2.1.1: {} + + github-slugger@2.0.0: {} + + glob-parent@6.0.2: + dependencies: + is-glob: 4.0.3 + + glob@10.5.0: + dependencies: + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.9 + minipass: 7.1.3 + package-json-from-dist: 1.0.1 + path-scurry: 1.11.1 + + glob@13.0.6: + dependencies: + minimatch: 10.2.5 + minipass: 7.1.3 + path-scurry: 2.0.2 + + global-directory@5.0.0: + dependencies: + ini: 6.0.0 + + globals@17.6.0: {} + + gopd@1.2.0: {} + + got@13.0.0: + dependencies: + '@sindresorhus/is': 5.6.0 + '@szmarczak/http-timer': 5.0.1 + cacheable-lookup: 7.0.0 + cacheable-request: 10.2.14 + decompress-response: 6.0.0 + form-data-encoder: 2.1.4 + get-stream: 6.0.1 + http2-wrapper: 2.2.1 + lowercase-keys: 3.0.0 + p-cancelable: 3.0.0 + responselike: 3.0.0 + + graceful-fs@4.2.10: {} + + graceful-fs@4.2.11: {} + + has-flag@4.0.0: {} + + has-symbols@1.1.0: {} + + has-tostringtag@1.0.2: + dependencies: + has-symbols: 1.1.0 + + hasown@2.0.3: + dependencies: + function-bind: 1.1.2 + + header-case@2.0.4: + dependencies: + capital-case: 1.0.4 + tslib: 2.8.1 + + help-me@5.0.0: {} + + hosted-git-info@7.0.2: + dependencies: + lru-cache: 10.4.3 + + http-cache-semantics@4.2.0: {} + + http-call@5.3.0: + dependencies: + content-type: 1.0.5 + debug: 4.4.3(supports-color@8.1.1) + is-retry-allowed: 1.2.0 + is-stream: 2.0.1 + parse-json: 4.0.0 + tunnel-agent: 0.6.0 + transitivePeerDependencies: + - supports-color + + http2-wrapper@2.2.1: + dependencies: + quick-lru: 5.1.1 + resolve-alpn: 1.2.1 + + human-signals@2.1.0: {} + + human-signals@8.0.1: {} + + iconv-lite@0.7.2: + dependencies: + safer-buffer: 2.1.2 + + ieee754@1.2.1: {} + + ignore@5.3.2: {} + + ignore@7.0.5: {} + + import-fresh@3.3.1: + dependencies: + parent-module: 1.0.1 + resolve-from: 4.0.0 + + import-meta-resolve@4.2.0: {} + + imurmurhash@0.1.4: {} + + indent-string@4.0.0: {} + + indent-string@5.0.0: {} + + inherits@2.0.4: {} + + ini@1.3.8: {} + + ini@6.0.0: {} + + ip-address@10.2.0: {} + + is-arrayish@0.2.1: {} + + is-docker@2.2.1: {} + + is-docker@3.0.0: {} + + is-extglob@2.1.1: {} + + is-fullwidth-code-point@3.0.0: {} + + is-fullwidth-code-point@5.1.0: + dependencies: + get-east-asian-width: 1.6.0 + + is-glob@4.0.3: + dependencies: + is-extglob: 2.1.1 + + is-in-ssh@1.0.0: {} + + is-inside-container@1.0.0: + dependencies: + is-docker: 3.0.0 + + is-interactive@2.0.0: {} + + is-number@7.0.0: {} + + is-obj@2.0.0: {} + + is-plain-obj@4.1.0: {} + + is-retry-allowed@1.2.0: {} + + is-stream@2.0.1: {} + + is-stream@4.0.1: {} + + is-unicode-supported@2.1.0: {} + + is-wsl@2.2.0: + dependencies: + is-docker: 2.2.1 + + is-wsl@3.1.1: + dependencies: + is-inside-container: 1.0.0 + + isarray@1.0.0: {} + + isexe@2.0.0: {} + + jackspeak@3.4.3: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + + jake@10.9.4: + dependencies: + async: 3.2.6 + filelist: 1.0.6 + picocolors: 1.1.1 + + jiti@2.6.1: {} + + jiti@2.7.0: {} + + js-sdsl@4.3.0: {} + + js-tokens@4.0.0: {} + + js-tokens@9.0.1: {} + + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 + + json-buffer@3.0.1: {} + + json-parse-better-errors@1.0.2: {} + + json-parse-even-better-errors@2.3.1: {} + + json-schema-traverse@0.4.1: {} + + json-schema-traverse@1.0.0: {} + + json-schema-typed@8.0.2: {} + + json-stable-stringify-without-jsonify@1.0.1: {} + + json-stream-stringify@3.1.6: {} + + json5@2.2.3: {} + + jsonfile@4.0.0: + optionalDependencies: + graceful-fs: 4.2.11 + + jwt-decode@4.0.0: {} + + keyv@4.5.4: + dependencies: + json-buffer: 3.0.1 + + kleur@3.0.3: {} + + lazystream@1.0.1: + dependencies: + readable-stream: 2.3.8 + + levn@0.4.1: + dependencies: + prelude-ls: 1.2.1 + type-check: 0.4.0 + + lilconfig@3.1.3: {} + + lines-and-columns@1.2.4: {} + + lint-staged@16.4.0: + dependencies: + commander: 14.0.3 + listr2: 9.0.5 + picomatch: 4.0.4 + string-argv: 0.3.2 + tinyexec: 1.1.2 + yaml: 2.8.4 + + listr2@9.0.5: + dependencies: + cli-truncate: 5.2.0 + colorette: 2.0.20 + eventemitter3: 5.0.4 + log-update: 6.1.0 + rfdc: 1.4.1 + wrap-ansi: 9.0.2 + + locate-path@6.0.0: + dependencies: + p-locate: 5.0.0 + + lodash@4.18.1: {} + + log-symbols@7.0.1: + dependencies: + is-unicode-supported: 2.1.0 + yoctocolors: 2.1.2 + + log-update@6.1.0: + dependencies: + ansi-escapes: 7.3.0 + cli-cursor: 5.0.0 + slice-ansi: 7.1.2 + strip-ansi: 7.2.0 + wrap-ansi: 9.0.2 + + loupe@3.2.1: {} + + lower-case@2.0.2: + dependencies: + tslib: 2.8.1 + + lowercase-keys@3.0.0: {} + + lru-cache@10.4.3: {} + + lru-cache@11.3.6: {} + + luxon@3.7.2: {} + + magic-string@0.30.21: + dependencies: + '@jridgewell/sourcemap-codec': 1.5.5 + + math-intrinsics@1.1.0: {} + + meow@13.2.0: {} + + merge-stream@2.0.0: {} + + micromatch@4.0.8: + dependencies: + braces: 3.0.3 + picomatch: 2.3.2 + + mime-db@1.52.0: {} + + mime-types@2.1.35: + dependencies: + mime-db: 1.52.0 + + mimic-fn@2.1.0: {} + + mimic-function@5.0.1: {} + + mimic-response@3.1.0: {} + + mimic-response@4.0.0: {} + + minimatch@10.2.5: + dependencies: + brace-expansion: 5.0.6 + + minimatch@5.1.9: + dependencies: + brace-expansion: 2.1.0 + + minimatch@9.0.9: + dependencies: + brace-expansion: 2.1.0 + + minimist@1.2.8: {} + + minipass@7.1.3: {} + + minizlib@3.1.0: + dependencies: + minipass: 7.1.3 + + mqtt-packet@9.0.2: + dependencies: + bl: 6.1.6 + debug: 4.4.3(supports-color@8.1.1) + process-nextick-args: 2.0.1 + transitivePeerDependencies: + - supports-color + + mqtt@5.15.1: + dependencies: + '@types/readable-stream': 4.0.23 + '@types/ws': 8.18.1 + commist: 3.2.0 + concat-stream: 2.0.0 + debug: 4.4.3(supports-color@8.1.1) + help-me: 5.0.0 + lru-cache: 10.4.3 + minimist: 1.2.8 + mqtt-packet: 9.0.2 + number-allocator: 1.0.14 + readable-stream: 4.7.0 + rfdc: 1.4.1 + socks: 2.8.9 + split2: 4.2.0 + worker-timers: 8.0.31 + ws: 8.20.0 + transitivePeerDependencies: + - bufferutil + - supports-color + - utf-8-validate + + ms@2.1.3: {} + + mute-stream@1.0.0: {} + + mute-stream@2.0.0: {} + + nanoid@3.3.12: {} + + nanoid@5.1.11: {} + + natural-compare@1.4.0: {} + + no-case@3.0.4: + dependencies: + lower-case: 2.0.2 + tslib: 2.8.1 + + normalize-package-data@6.0.2: + dependencies: + hosted-git-info: 7.0.2 + semver: 7.7.4 + validate-npm-package-license: 3.0.4 + + normalize-path@3.0.0: {} + + normalize-url@8.1.1: {} + + npm-run-path@4.0.1: + dependencies: + path-key: 3.1.1 + + npm-run-path@6.0.0: + dependencies: + path-key: 4.0.0 + unicorn-magic: 0.3.0 + + number-allocator@1.0.14: + dependencies: + debug: 4.4.3(supports-color@8.1.1) + js-sdsl: 4.3.0 + transitivePeerDependencies: + - supports-color + + oclif@4.23.0(@types/node@22.19.18): + dependencies: + '@aws-sdk/client-cloudfront': 3.1009.0 + '@aws-sdk/client-s3': 3.1014.0 + '@inquirer/confirm': 3.2.0 + '@inquirer/input': 2.3.0 + '@inquirer/select': 2.5.0 + '@oclif/core': 4.9.0 + '@oclif/plugin-help': 6.2.46 + '@oclif/plugin-not-found': 3.2.82(@types/node@22.19.18) + '@oclif/plugin-warn-if-update-available': 3.1.62 + ansis: 3.17.0 + async-retry: 1.3.3 + change-case: 4.1.2 + debug: 4.4.3(supports-color@8.1.1) + ejs: 3.1.10 + find-yarn-workspace-root: 2.0.0 + fs-extra: 8.1.0 + github-slugger: 2.0.0 + got: 13.0.0 + lodash: 4.18.1 + normalize-package-data: 6.0.2 + semver: 7.7.4 + sort-package-json: 2.15.1 + tiny-jsonc: 1.0.2 + validate-npm-package-name: 5.0.1 + transitivePeerDependencies: + - '@types/node' + - aws-crt + - supports-color + + onetime@5.1.2: + dependencies: + mimic-fn: 2.1.0 + + onetime@7.0.0: + dependencies: + mimic-function: 5.0.1 + + open@11.0.0: + dependencies: + default-browser: 5.5.0 + define-lazy-prop: 3.0.0 + is-in-ssh: 1.0.0 + is-inside-container: 1.0.0 + powershell-utils: 0.1.0 + wsl-utils: 0.3.1 + + optionator@0.9.3: + dependencies: + '@aashutoshrathi/word-wrap': 1.2.6 + deep-is: 0.1.4 + fast-levenshtein: 2.0.6 + levn: 0.4.1 + prelude-ls: 1.2.1 + type-check: 0.4.0 + + ora@9.4.0: + dependencies: + chalk: 5.6.2 + cli-cursor: 5.0.0 + cli-spinners: 3.4.0 + is-interactive: 2.0.0 + is-unicode-supported: 2.1.0 + log-symbols: 7.0.1 + stdin-discarder: 0.3.2 + string-width: 8.2.1 + + p-cancelable@3.0.0: {} + + p-limit@3.1.0: + dependencies: + yocto-queue: 0.1.0 + + p-locate@5.0.0: + dependencies: + p-limit: 3.1.0 + + p-queue@9.2.0: + dependencies: + eventemitter3: 5.0.4 + p-timeout: 7.0.1 + + p-timeout@7.0.1: {} + + package-json-from-dist@1.0.1: {} + + param-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + parent-module@1.0.1: + dependencies: + callsites: 3.1.0 + + parse-json@4.0.0: + dependencies: + error-ex: 1.3.2 + json-parse-better-errors: 1.0.2 + + parse-json@5.2.0: + dependencies: + '@babel/code-frame': 7.29.0 + error-ex: 1.3.2 + json-parse-even-better-errors: 2.3.1 + lines-and-columns: 1.2.4 + + parse-ms@4.0.0: {} + + pascal-case@3.1.2: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + + passwd-user@4.0.0: + dependencies: + execa: 5.1.1 + + path-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + path-exists@4.0.0: {} + + path-expression-matcher@1.5.0: {} + + path-key@3.1.1: {} + + path-key@4.0.0: {} + + path-scurry@1.11.1: + dependencies: + lru-cache: 10.4.3 + minipass: 7.1.3 + + path-scurry@2.0.2: + dependencies: + lru-cache: 11.3.6 + minipass: 7.1.3 + + pathe@2.0.3: {} + + pathval@2.0.1: {} + + picocolors@1.1.1: {} + + picomatch@2.3.2: {} + + picomatch@4.0.4: {} + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 + + postcss@8.5.14: + dependencies: + nanoid: 3.3.12 + picocolors: 1.1.1 + source-map-js: 1.2.1 + + powershell-utils@0.1.0: {} + + prelude-ls@1.2.1: {} + + pretty-ms@9.3.0: + dependencies: + parse-ms: 4.0.0 + + process-nextick-args@2.0.1: {} + + process@0.11.10: {} + + prompts@2.4.2: + dependencies: + kleur: 3.0.3 + sisteransi: 1.0.5 + + proto-list@1.2.4: {} + + proxy-from-env@2.1.0: {} + + punycode@2.3.1: {} + + quick-lru@5.1.1: {} + + readable-stream@2.3.8: + dependencies: + core-util-is: 1.0.3 + inherits: 2.0.4 + isarray: 1.0.0 + process-nextick-args: 2.0.1 + safe-buffer: 5.1.2 + string_decoder: 1.1.1 + util-deprecate: 1.0.2 + + readable-stream@3.6.2: + dependencies: + inherits: 2.0.4 + string_decoder: 1.3.0 + util-deprecate: 1.0.2 + + readable-stream@4.7.0: + dependencies: + abort-controller: 3.0.0 + buffer: 6.0.3 + events: 3.3.0 + process: 0.11.10 + string_decoder: 1.3.0 + + readdir-glob@1.1.3: + dependencies: + minimatch: 5.1.9 + + recast@0.23.11: + dependencies: + ast-types: 0.16.1 + esprima: 4.0.1 + source-map: 0.6.1 + tiny-invariant: 1.3.3 + tslib: 2.8.1 + + registry-auth-token@5.1.1: + dependencies: + '@pnpm/npm-conf': 3.0.2 + + require-directory@2.1.1: {} + + require-from-string@2.0.2: {} + + resolve-alpn@1.2.1: {} + + resolve-from@4.0.0: {} + + resolve-from@5.0.0: {} + + responselike@3.0.0: + dependencies: + lowercase-keys: 3.0.0 + + restore-cursor@5.1.0: + dependencies: + onetime: 7.0.0 + signal-exit: 4.1.0 + + retry@0.13.1: {} + + rfdc@1.4.1: {} + + rimraf@6.1.3: + dependencies: + glob: 13.0.6 + package-json-from-dist: 1.0.1 + + rollup@4.60.3: + dependencies: + '@types/estree': 1.0.8 + optionalDependencies: + '@rollup/rollup-android-arm-eabi': 4.60.3 + '@rollup/rollup-android-arm64': 4.60.3 + '@rollup/rollup-darwin-arm64': 4.60.3 + '@rollup/rollup-darwin-x64': 4.60.3 + '@rollup/rollup-freebsd-arm64': 4.60.3 + '@rollup/rollup-freebsd-x64': 4.60.3 + '@rollup/rollup-linux-arm-gnueabihf': 4.60.3 + '@rollup/rollup-linux-arm-musleabihf': 4.60.3 + '@rollup/rollup-linux-arm64-gnu': 4.60.3 + '@rollup/rollup-linux-arm64-musl': 4.60.3 + '@rollup/rollup-linux-loong64-gnu': 4.60.3 + '@rollup/rollup-linux-loong64-musl': 4.60.3 + '@rollup/rollup-linux-ppc64-gnu': 4.60.3 + '@rollup/rollup-linux-ppc64-musl': 4.60.3 + '@rollup/rollup-linux-riscv64-gnu': 4.60.3 + '@rollup/rollup-linux-riscv64-musl': 4.60.3 + '@rollup/rollup-linux-s390x-gnu': 4.60.3 + '@rollup/rollup-linux-x64-gnu': 4.60.3 + '@rollup/rollup-linux-x64-musl': 4.60.3 + '@rollup/rollup-openbsd-x64': 4.60.3 + '@rollup/rollup-openharmony-arm64': 4.60.3 + '@rollup/rollup-win32-arm64-msvc': 4.60.3 + '@rollup/rollup-win32-ia32-msvc': 4.60.3 + '@rollup/rollup-win32-x64-gnu': 4.60.3 + '@rollup/rollup-win32-x64-msvc': 4.60.3 + fsevents: 2.3.3 + + run-applescript@7.1.0: {} + + safe-buffer@5.1.2: {} + + safe-buffer@5.2.1: {} + + safer-buffer@2.1.2: {} + + semver@7.7.4: {} + + sentence-case@3.0.4: + dependencies: + no-case: 3.0.4 + tslib: 2.8.1 + upper-case-first: 2.0.2 + + shebang-command@2.0.0: + dependencies: + shebang-regex: 3.0.0 + + shebang-regex@3.0.0: {} + + siginfo@2.0.0: {} + + signal-exit@3.0.7: {} + + signal-exit@4.1.0: {} + + simple-git-hooks@2.13.1: {} + + sisteransi@1.0.5: {} + + slice-ansi@7.1.2: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 + + slice-ansi@8.0.0: + dependencies: + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 + + smart-buffer@4.2.0: {} + + snake-case@3.0.4: + dependencies: + dot-case: 3.0.4 + tslib: 2.8.1 + + socks@2.8.9: + dependencies: + ip-address: 10.2.0 + smart-buffer: 4.2.0 + + sort-object-keys@1.1.3: {} + + sort-package-json@2.15.1: + dependencies: + detect-indent: 7.0.2 + detect-newline: 4.0.1 + get-stdin: 9.0.0 + git-hooks-list: 3.2.0 + is-plain-obj: 4.1.0 + semver: 7.7.4 + sort-object-keys: 1.1.3 + tinyglobby: 0.2.16 + + source-map-js@1.2.1: {} + + source-map@0.6.1: {} + + spdx-correct@3.2.0: + dependencies: + spdx-expression-parse: 3.0.1 + spdx-license-ids: 3.0.23 + + spdx-exceptions@2.5.0: {} + + spdx-expression-parse@3.0.1: + dependencies: + spdx-exceptions: 2.5.0 + spdx-license-ids: 3.0.23 + + spdx-license-ids@3.0.23: {} + + split2@4.2.0: {} + + stackback@0.0.2: {} + + std-env@3.10.0: {} + + stdin-discarder@0.3.2: {} + + streamx@2.25.0: + dependencies: + events-universal: 1.0.1 + fast-fifo: 1.3.2 + text-decoder: 1.2.7 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + + string-argv@0.3.2: {} + + string-width@4.2.3: + dependencies: + emoji-regex: 8.0.0 + is-fullwidth-code-point: 3.0.0 + strip-ansi: 6.0.1 + + string-width@5.1.2: + dependencies: + eastasianwidth: 0.2.0 + emoji-regex: 9.2.2 + strip-ansi: 7.2.0 + + string-width@7.2.0: + dependencies: + emoji-regex: 10.6.0 + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + + string-width@8.2.1: + dependencies: + get-east-asian-width: 1.6.0 + strip-ansi: 7.2.0 + + string_decoder@1.1.1: + dependencies: + safe-buffer: 5.1.2 + + string_decoder@1.3.0: + dependencies: + safe-buffer: 5.2.1 + + strip-ansi@6.0.1: + dependencies: + ansi-regex: 5.0.1 + + strip-ansi@7.2.0: + dependencies: + ansi-regex: 6.2.2 + + strip-final-newline@2.0.0: {} + + strip-final-newline@4.0.0: {} + + strip-literal@3.1.0: + dependencies: + js-tokens: 9.0.1 + + strnum@2.3.0: {} + + stubborn-fs@2.0.0: + dependencies: + stubborn-utils: 1.0.2 + + stubborn-utils@1.0.2: {} + + supports-color@8.1.1: + dependencies: + has-flag: 4.0.0 + + tagged-tag@1.0.0: {} + + tar-stream@3.2.0: + dependencies: + b4a: 1.8.1 + bare-fs: 4.7.1 + fast-fifo: 1.3.2 + streamx: 2.25.0 + transitivePeerDependencies: + - bare-abort-controller + - bare-buffer + - react-native-b4a + + tar@7.5.15: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.3 + minizlib: 3.1.0 + yallist: 5.0.0 + + teex@1.0.1: + dependencies: + streamx: 2.25.0 + transitivePeerDependencies: + - bare-abort-controller + - react-native-b4a + + text-decoder@1.2.7: + dependencies: + b4a: 1.8.1 + transitivePeerDependencies: + - react-native-b4a + + tiny-invariant@1.3.3: {} + + tiny-jsonc@1.0.2: {} + + tinybench@2.9.0: {} + + tinyexec@0.3.2: {} + + tinyexec@1.1.2: {} + + tinyglobby@0.2.16: + dependencies: + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + + tinypool@1.1.1: {} + + tinyrainbow@2.0.0: {} + + tinyspy@4.0.4: {} + + to-regex-range@5.0.1: + dependencies: + is-number: 7.0.0 + + ts-api-utils@2.5.0(typescript@6.0.3): + dependencies: + typescript: 6.0.3 + + tslib@2.8.1: {} + + tunnel-agent@0.6.0: + dependencies: + safe-buffer: 5.2.1 + + tunnel@0.0.6: {} + + type-check@0.4.0: + dependencies: + prelude-ls: 1.2.1 + + type-fest@0.21.3: {} + + type-fest@5.6.0: + dependencies: + tagged-tag: 1.0.0 + + typedarray@0.0.6: {} + + typescript-eslint@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3): + dependencies: + '@typescript-eslint/eslint-plugin': 8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/parser': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + eslint: 10.3.0(jiti@2.7.0) + typescript: 6.0.3 + transitivePeerDependencies: + - supports-color + + typescript@6.0.3: {} + + uint8array-extras@1.5.0: {} + + undici-types@6.21.0: {} + + undici-types@7.19.2: {} + + unicorn-magic@0.3.0: {} + + unique-names-generator@4.7.1: {} + + universalify@0.1.2: {} + + upper-case-first@2.0.2: + dependencies: + tslib: 2.8.1 + + upper-case@2.0.2: + dependencies: + tslib: 2.8.1 + + uri-js@4.4.1: + dependencies: + punycode: 2.3.1 + + util-deprecate@1.0.2: {} + + uuid@14.0.0: {} + + validate-npm-package-license@3.0.4: + dependencies: + spdx-correct: 3.2.0 + spdx-expression-parse: 3.0.1 + + validate-npm-package-name@5.0.1: {} + + vite-node@3.2.4(@types/node@22.19.18)(jiti@2.7.0)(yaml@2.8.4): + dependencies: + cac: 6.7.14 + debug: 4.4.3(supports-color@8.1.1) + es-module-lexer: 1.7.0 + pathe: 2.0.3 + vite: 7.3.3(@types/node@22.19.18)(jiti@2.7.0)(yaml@2.8.4) + transitivePeerDependencies: + - '@types/node' + - jiti + - less + - lightningcss + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + vite@7.3.3(@types/node@22.19.18)(jiti@2.7.0)(yaml@2.8.4): + dependencies: + esbuild: 0.27.7 + fdir: 6.5.0(picomatch@4.0.4) + picomatch: 4.0.4 + postcss: 8.5.14 + rollup: 4.60.3 + tinyglobby: 0.2.16 + optionalDependencies: + '@types/node': 22.19.18 + fsevents: 2.3.3 + jiti: 2.7.0 + yaml: 2.8.4 + + vitest@3.2.4(@types/debug@4.1.13)(@types/node@22.19.18)(jiti@2.7.0)(yaml@2.8.4): + dependencies: + '@types/chai': 5.2.3 + '@vitest/expect': 3.2.4 + '@vitest/mocker': 3.2.4(vite@7.3.3(@types/node@22.19.18)(jiti@2.7.0)(yaml@2.8.4)) + '@vitest/pretty-format': 3.2.4 + '@vitest/runner': 3.2.4 + '@vitest/snapshot': 3.2.4 + '@vitest/spy': 3.2.4 + '@vitest/utils': 3.2.4 + chai: 5.3.3 + debug: 4.4.3(supports-color@8.1.1) + expect-type: 1.3.0 + magic-string: 0.30.21 + pathe: 2.0.3 + picomatch: 4.0.4 + std-env: 3.10.0 + tinybench: 2.9.0 + tinyexec: 0.3.2 + tinyglobby: 0.2.16 + tinypool: 1.1.1 + tinyrainbow: 2.0.0 + vite: 7.3.3(@types/node@22.19.18)(jiti@2.7.0)(yaml@2.8.4) + vite-node: 3.2.4(@types/node@22.19.18)(jiti@2.7.0)(yaml@2.8.4) + why-is-node-running: 2.3.0 + optionalDependencies: + '@types/debug': 4.1.13 + '@types/node': 22.19.18 + transitivePeerDependencies: + - jiti + - less + - lightningcss + - msw + - sass + - sass-embedded + - stylus + - sugarss + - supports-color + - terser + - tsx + - yaml + + when-exit@2.1.5: {} + + which@2.0.2: + dependencies: + isexe: 2.0.0 + + why-is-node-running@2.3.0: + dependencies: + siginfo: 2.0.0 + stackback: 0.0.2 + + widest-line@3.1.0: + dependencies: + string-width: 4.2.3 + + wordwrap@1.0.0: {} + + worker-factory@7.0.49: + dependencies: + '@babel/runtime': 7.29.2 + fast-unique-numbers: 9.0.27 + tslib: 2.8.1 + + worker-timers-broker@8.0.16: + dependencies: + '@babel/runtime': 7.29.2 + broker-factory: 3.1.14 + fast-unique-numbers: 9.0.27 + tslib: 2.8.1 + worker-timers-worker: 9.0.14 + + worker-timers-worker@9.0.14: + dependencies: + '@babel/runtime': 7.29.2 + tslib: 2.8.1 + worker-factory: 7.0.49 + + worker-timers@8.0.31: + dependencies: + '@babel/runtime': 7.29.2 + tslib: 2.8.1 + worker-timers-broker: 8.0.16 + worker-timers-worker: 9.0.14 + + wrap-ansi@6.2.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@7.0.0: + dependencies: + ansi-styles: 4.3.0 + string-width: 4.2.3 + strip-ansi: 6.0.1 + + wrap-ansi@8.1.0: + dependencies: + ansi-styles: 6.2.3 + string-width: 5.1.2 + strip-ansi: 7.2.0 + + wrap-ansi@9.0.2: + dependencies: + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.2.0 + + ws@8.20.0: {} + + wsl-utils@0.3.1: + dependencies: + is-wsl: 3.1.1 + powershell-utils: 0.1.0 + + xml-naming@0.1.0: {} + + y18n@5.0.8: {} + + yallist@5.0.0: {} + + yaml@2.8.4: {} + + yargs-parser@21.1.1: {} + + yargs@17.7.1: + dependencies: + cliui: 8.0.1 + escalade: 3.2.0 + get-caller-file: 2.0.5 + require-directory: 2.1.1 + string-width: 4.2.3 + y18n: 5.0.8 + yargs-parser: 21.1.1 + + yocto-queue@0.1.0: {} + + yoctocolors-cjs@2.1.3: {} + + yoctocolors@2.1.2: {} + + zip-stream@6.0.1: + dependencies: + archiver-utils: 5.0.2 + compress-commons: 6.0.2 + readable-stream: 4.7.0 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 000000000..924b55f42 --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +packages: + - packages/* From 748a4e790e5c134fb3136e73c1f9412e5a3f193c Mon Sep 17 00:00:00 2001 From: Simo Kinnunen Date: Thu, 21 May 2026 14:08:53 +0900 Subject: [PATCH 05/13] feat(cli)!: default --record to true on test and trigger commands (#1306) * feat(cli)!: default --record to true on test and trigger commands Recording is almost always desired, so make it the default. Users can opt out with --no-record. This aligns test and trigger with pw-test, which already defaults to recording. Remove the now-dead "use --record" tip from list, ci and github reporters, and update all documentation and examples. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): show [default: true] in --record help text oclif doesn't render defaults for boolean flags automatically, so add it to the description string like verify-runtime-dependencies does. Co-Authored-By: Claude Opus 4.6 (1M context) --------- Co-authored-by: Claude Opus 4.6 (1M context) --- examples/advanced-project-js/.github/workflow.yml | 2 +- examples/advanced-project/.github/workflow.yml | 2 +- examples/boilerplate-project-js/README.md | 4 +--- examples/boilerplate-project/README.md | 4 +--- packages/cli/src/ai-context/references/configure.md | 2 +- packages/cli/src/commands/pw-test.ts | 2 +- packages/cli/src/commands/test.ts | 7 ++++--- packages/cli/src/commands/trigger.ts | 7 ++++--- packages/cli/src/help/examples.ts | 4 ++-- packages/cli/src/helpers/onboarding/messages.ts | 8 ++++---- packages/cli/src/messages/common-messages.ts | 3 --- .../__snapshots__/github-md-builder.spec.ts.snap | 2 +- packages/cli/src/reporters/ci.ts | 4 ---- packages/cli/src/reporters/github.ts | 7 +------ packages/cli/src/reporters/list.ts | 4 ---- packages/create-cli/e2e/__tests__/bootstrap.spec.ts | 2 +- packages/create-cli/src/utils/messages.ts | 2 +- 17 files changed, 24 insertions(+), 42 deletions(-) diff --git a/examples/advanced-project-js/.github/workflow.yml b/examples/advanced-project-js/.github/workflow.yml index d86611ce3..8b5d810c0 100644 --- a/examples/advanced-project-js/.github/workflow.yml +++ b/examples/advanced-project-js/.github/workflow.yml @@ -44,7 +44,7 @@ jobs: run: npm ci - name: Run checks # run the checks passing in the ENVIRONMENT_URL and recording a test session. id: run-checks - run: npx checkly -v && npx checkly test -e ENVIRONMENT_URL=${{ env.ENVIRONMENT_URL }} --reporter=github --record + run: npx checkly -v && npx checkly test -e ENVIRONMENT_URL=${{ env.ENVIRONMENT_URL }} --reporter=github - name: Create summary # export the markdown report to the job summary. id: create-summary run: cat checkly-github-report.md > $GITHUB_STEP_SUMMARY diff --git a/examples/advanced-project/.github/workflow.yml b/examples/advanced-project/.github/workflow.yml index d86611ce3..8b5d810c0 100644 --- a/examples/advanced-project/.github/workflow.yml +++ b/examples/advanced-project/.github/workflow.yml @@ -44,7 +44,7 @@ jobs: run: npm ci - name: Run checks # run the checks passing in the ENVIRONMENT_URL and recording a test session. id: run-checks - run: npx checkly -v && npx checkly test -e ENVIRONMENT_URL=${{ env.ENVIRONMENT_URL }} --reporter=github --record + run: npx checkly -v && npx checkly test -e ENVIRONMENT_URL=${{ env.ENVIRONMENT_URL }} --reporter=github - name: Create summary # export the markdown report to the job summary. id: create-summary run: cat checkly-github-report.md > $GITHUB_STEP_SUMMARY diff --git a/examples/boilerplate-project-js/README.md b/examples/boilerplate-project-js/README.md index 22cea013d..efecb8175 100644 --- a/examples/boilerplate-project-js/README.md +++ b/examples/boilerplate-project-js/README.md @@ -31,9 +31,7 @@ This project has the basic boilerplate files needed to get you started. - Running `npx checkly pw-test` will use the `playwright.config.js` file and run the test suite in Checkly. -- Running `npx checkly test` will look for `.check.js` files and `.spec.js` in `__checks__` directories and execute them in a dry run. - -- Running `npx checkly test --record` will run all checks in a test session for you to preview in the UI. +- Running `npx checkly test` will look for `.check.js` files and `.spec.js` in `__checks__` directories and execute them in a dry run. Results are recorded as a test session for you to preview in the UI. Use `--no-record` to skip recording. - Running `npx checkly deploy` will deploy your checks to Checkly, attach alert channels, and run them on a 10m schedule in the region `us-east-1` and `eu-west-1` diff --git a/examples/boilerplate-project/README.md b/examples/boilerplate-project/README.md index c2d171e29..fd1eccb3f 100644 --- a/examples/boilerplate-project/README.md +++ b/examples/boilerplate-project/README.md @@ -30,9 +30,7 @@ This project has the basic boilerplate files needed to get you started. ``` - Running `npx checkly pw-test` will use the `playwright.config.ts` file and run the test suite in Checkly. -- Running `npx checkly test` will look for `.check.ts` files and `.spec.ts` in `__checks__` directories and execute them in a dry run. - -- Running `npx checkly test --record` will run all checks in a test session for you to preview in the UI. +- Running `npx checkly test` will look for `.check.ts` files and `.spec.ts` in `__checks__` directories and execute them in a dry run. Results are recorded as a test session for you to preview in the UI. Use `--no-record` to skip recording. - Running `npx checkly deploy` will deploy your checks to Checkly, attach alert channels, and run them on a 10m schedule in the region `us-east-1` and `eu-west-1` diff --git a/packages/cli/src/ai-context/references/configure.md b/packages/cli/src/ai-context/references/configure.md index 9464f5000..6500a118e 100644 --- a/packages/cli/src/ai-context/references/configure.md +++ b/packages/cli/src/ai-context/references/configure.md @@ -68,7 +68,7 @@ Run `npx checkly skills manage plan` for the full reference. ## Testing and Debugging -- Test checks using the `npx checkly test` command. Pass environment variables with the `-e` flag, use `--record` to persist results, and use `--verbose` to see all errors. +- Test checks using the `npx checkly test` command. Pass environment variables with the `-e` flag, results are recorded by default (use `--no-record` to skip), and use `--verbose` to see all errors. ## Deploying diff --git a/packages/cli/src/commands/pw-test.ts b/packages/cli/src/commands/pw-test.ts index 2d64921a1..3ef717cb1 100644 --- a/packages/cli/src/commands/pw-test.ts +++ b/packages/cli/src/commands/pw-test.ts @@ -83,7 +83,7 @@ export default class PwTestCommand extends AuthCommand { description: commonMessages.configFile, }), 'record': Flags.boolean({ - description: 'Record test results in Checkly as a test session with full logs, traces and videos.', + description: '[default: true] Record test results in Checkly as a test session with full logs, traces and videos.', default: true, allowNo: true, }), diff --git a/packages/cli/src/commands/test.ts b/packages/cli/src/commands/test.ts index bf6295b25..4a920d824 100644 --- a/packages/cli/src/commands/test.ts +++ b/packages/cli/src/commands/test.ts @@ -93,12 +93,13 @@ export default class Test extends AuthCommand { description: commonMessages.configFile, }), 'record': Flags.boolean({ - description: 'Record test results in Checkly as a test session with full logs, traces and videos.', - default: false, + description: '[default: true] Record test results in Checkly as a test session with full logs, traces and videos.', + default: true, + allowNo: true, }), 'test-session-name': Flags.string({ char: 'n', - description: 'A name to use when storing results in Checkly with --record.', + description: 'A name to use when storing results in Checkly.', }), 'update-snapshots': Flags.boolean({ char: 'u', diff --git a/packages/cli/src/commands/trigger.ts b/packages/cli/src/commands/trigger.ts index 0f2d4d979..5494457e8 100644 --- a/packages/cli/src/commands/trigger.ts +++ b/packages/cli/src/commands/trigger.ts @@ -83,12 +83,13 @@ export default class Trigger extends AuthCommand { exclusive: ['env'], }), 'record': Flags.boolean({ - description: 'Record check results in Checkly as a test session with full logs, traces and videos.', - default: false, + description: '[default: true] Record check results in Checkly as a test session with full logs, traces and videos.', + default: true, + allowNo: true, }), 'test-session-name': Flags.string({ char: 'n', - description: 'A name to use when storing results in Checkly with --record.', + description: 'A name to use when storing results in Checkly.', }), 'retries': Flags.integer({ description: `[default: 0, max: ${MAX_RETRIES}] How many times to retry a check run.`, diff --git a/packages/cli/src/help/examples.ts b/packages/cli/src/help/examples.ts index f189e0c9e..cee7a9f32 100644 --- a/packages/cli/src/help/examples.ts +++ b/packages/cli/src/help/examples.ts @@ -5,8 +5,8 @@ type Example = { const examples: Array = [ { - description: 'Record your test session in Checkly with logs, traces and videos.', - command: 'npx checkly test --record', + description: 'Run your checks on Checkly with full logs, traces and videos.', + command: 'npx checkly test', }, { description: 'Pass environment variables to your checks.', diff --git a/packages/cli/src/helpers/onboarding/messages.ts b/packages/cli/src/helpers/onboarding/messages.ts index 8028f35c0..350a9ec9b 100644 --- a/packages/cli/src/helpers/onboarding/messages.ts +++ b/packages/cli/src/helpers/onboarding/messages.ts @@ -71,8 +71,8 @@ export function footer (hasPlaywright: boolean = false): string { ` ${chalk.bold('npx checkly login')}`, chalk.dim(' Log in or create a free account'), '', - ` ${chalk.bold('npx checkly test --record')}`, - chalk.dim(' Dry run your checks and record results'), + ` ${chalk.bold('npx checkly test')}`, + chalk.dim(' Dry run your checks'), '', ` ${chalk.bold('npx checkly deploy')}`, chalk.dim(' Deploy checks to Checkly'), @@ -133,7 +133,7 @@ export function agentFooter ( '', chalk.dim(' Prefer to set up manually?'), chalk.dim(` ${chalk.bold('npx checkly login')}`), - chalk.dim(` ${chalk.bold('npx checkly test --record')}`), + chalk.dim(` ${chalk.bold('npx checkly test')}`), chalk.dim(` ${chalk.bold('npx checkly deploy')}`), ) @@ -162,7 +162,7 @@ export function existingProjectFooter ( '', chalk.green.bold(' You\'re all set!'), '', - ` ${chalk.bold('npx checkly test --record')}`, + ` ${chalk.bold('npx checkly test')}`, chalk.dim(' Run your checks locally'), '', ` ${chalk.bold('npx checkly deploy')}`, diff --git a/packages/cli/src/messages/common-messages.ts b/packages/cli/src/messages/common-messages.ts index 021cf8a15..362623831 100644 --- a/packages/cli/src/messages/common-messages.ts +++ b/packages/cli/src/messages/common-messages.ts @@ -2,9 +2,6 @@ const commonMessages = { forceMode: 'Force mode. Skips the confirmation dialog.', configFile: 'The Checkly CLI configuration file. If not passed, uses the checkly.config.ts|js file in the current' + ' directory.', - inlineTips: { - useRecordFlag: 'Use `--record` to get test results in Checkly with full traces, videos and logs: `npx checkly test --record`', - }, } export default commonMessages diff --git a/packages/cli/src/reporters/__tests__/__snapshots__/github-md-builder.spec.ts.snap b/packages/cli/src/reporters/__tests__/__snapshots__/github-md-builder.spec.ts.snap index 0987ca930..37a5015ef 100644 --- a/packages/cli/src/reporters/__tests__/__snapshots__/github-md-builder.spec.ts.snap +++ b/packages/cli/src/reporters/__tests__/__snapshots__/github-md-builder.spec.ts.snap @@ -18,5 +18,5 @@ Ran **2** checks in **eu-west-1**. |:-|:-|:-|:-|:-| |✅ Pass|my-test.spec.ts|BROWSER|\`src/__checks__/folder/browser.check.ts\`|7s | |✅ Pass|Test API check|API|\`src/some-other-folder/api.check.ts\`|2s | -> Tip: Use \`--record\` to get test results in Checkly with full traces, videos and logs: \`npx checkly test --record\`" +" `; diff --git a/packages/cli/src/reporters/ci.ts b/packages/cli/src/reporters/ci.ts index fae61c93e..68f6f88e8 100644 --- a/packages/cli/src/reporters/ci.ts +++ b/packages/cli/src/reporters/ci.ts @@ -4,7 +4,6 @@ import AbstractListReporter from './abstract-list.js' import { formatCheckTitle, formatCheckResult, CheckStatus, printLn, resultToCheckStatus } from './util.js' import { SequenceId } from '../services/abstract-check-runner.js' import { TestResultsShortLinks } from '../rest/test-sessions.js' -import commonMessages from '../messages/common-messages.js' export default class CiReporter extends AbstractListReporter { onBegin (checks: Array<{ check: any, sequenceId: SequenceId }>, testSessionId?: string) { @@ -17,9 +16,6 @@ export default class CiReporter extends AbstractListReporter { printLn('Finished running all checks:', 2) this._printSummary() this._printTestSessionsUrl() - if (!this.testSessionId) { - this._printTip(commonMessages.inlineTips.useRecordFlag) - } } onCheckAttemptResult (sequenceId: string, checkResult: any, links?: TestResultsShortLinks): void { diff --git a/packages/cli/src/reporters/github.ts b/packages/cli/src/reporters/github.ts index 11c1ab61b..021468028 100644 --- a/packages/cli/src/reporters/github.ts +++ b/packages/cli/src/reporters/github.ts @@ -4,7 +4,6 @@ import * as path from 'path' import AbstractListReporter, { checkFilesMap } from './abstract-list.js' import { SequenceId } from '../services/abstract-check-runner.js' import { CheckStatus, formatDuration, getTestSessionUrl, printLn, resultToCheckStatus } from './util.js' -import commonMessages from '../messages/common-messages.js' const outputFile = './checkly-github-report.md' @@ -83,16 +82,12 @@ export class GithubMdBuilder { } } - let markdown = this.header + '\n' + const markdown = this.header + '\n' + this.subHeader.join('\n') + '\n' + this.tableSeparator + this.tableHeaders.join('|') + this.tableSeparator + '\n' + this.tableSeparatorFiller.repeat(this.tableHeaders.length) + this.tableSeparator + '\n' + this.tableRows.sort((a, b) => a < b ? 1 : -1).join('\n') + '\n' - if (!this.testSessionId) { - markdown = markdown + `> Tip: ${commonMessages.inlineTips.useRecordFlag}` - } - return markdown } } diff --git a/packages/cli/src/reporters/list.ts b/packages/cli/src/reporters/list.ts index a172c2a4c..80f934203 100644 --- a/packages/cli/src/reporters/list.ts +++ b/packages/cli/src/reporters/list.ts @@ -5,7 +5,6 @@ import AbstractListReporter from './abstract-list.js' import { SequenceId } from '../services/abstract-check-runner.js' import { formatCheckTitle, formatCheckResult, CheckStatus, printLn, resultToCheckStatus } from './util.js' import { TestResultsShortLinks } from '../rest/test-sessions.js' -import commonMessages from '../messages/common-messages.js' export default class ListReporter extends AbstractListReporter { onBegin (checks: Array<{ check: any, sequenceId: SequenceId }>, testSessionId?: string) { @@ -30,9 +29,6 @@ export default class ListReporter extends AbstractListReporter { this._clearSummary() this._printSummary() this._printTestSessionsUrl() - if (!this.testSessionId) { - this._printTip(commonMessages.inlineTips.useRecordFlag) - } } onCheckAttemptResult (sequenceId: string, checkResult: any, links?: TestResultsShortLinks): void { diff --git a/packages/create-cli/e2e/__tests__/bootstrap.spec.ts b/packages/create-cli/e2e/__tests__/bootstrap.spec.ts index f1a541a96..900c57420 100644 --- a/packages/create-cli/e2e/__tests__/bootstrap.spec.ts +++ b/packages/create-cli/e2e/__tests__/bootstrap.spec.ts @@ -54,7 +54,7 @@ function expectCompleteCreation ({ > Enter your project directory using cd ${projectFolder} > Run npx checkly login to login to your Checkly account or create a free new account - > Run npx checkly test --record to dry run your checks + > Run npx checkly test to dry run your checks > Run npx checkly deploy to deploy your checks to the Checkly cloud Questions? diff --git a/packages/create-cli/src/utils/messages.ts b/packages/create-cli/src/utils/messages.ts index 6826725cc..6fa145866 100644 --- a/packages/create-cli/src/utils/messages.ts +++ b/packages/create-cli/src/utils/messages.ts @@ -53,7 +53,7 @@ export async function footer (targetDir?: string): Promise { ) await sleep(200) console.log( - `${prefix}> Run ${chalk.cyan('npx checkly test --record')} to dry run your checks`, + `${prefix}> Run ${chalk.cyan('npx checkly test')} to dry run your checks`, ) await sleep(200) console.log( From 9566611abc51157b0476c5d801985db5e26ef237 Mon Sep 17 00:00:00 2001 From: Simo Kinnunen Date: Thu, 21 May 2026 16:25:58 +0900 Subject: [PATCH 06/13] feat(cli): auto-load .env file for CLI configuration (#1307) * feat(cli): auto-load .env file for CLI configuration Load a .env file from the current directory before any CLI commands run, so users can set CHECKLY_API_KEY and CHECKLY_ACCOUNT_ID without exporting them in their shell. Process env vars always take precedence. Opt out with CHECKLY_NO_DOTENV=1. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): fix login e2e test and skip chmod test on Windows Update e2e login test to match the new warning message wording. Skip the permission error test on Windows where fs.chmod(0o000) does not restrict file reads. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): use shorter substrings in login e2e to handle line wrapping The longer warning message gets line-wrapped by oclif's warn formatter, inserting line break prefixes that break toContain checks on the full string. Match shorter substrings instead. Co-Authored-By: Claude Opus 4.6 (1M context) --------- Co-authored-by: Claude Opus 4.6 (1M context) --- packages/cli/bin/run | 2 + packages/cli/e2e/__tests__/login.spec.ts | 5 +- packages/cli/src/commands/login.ts | 2 +- packages/cli/src/help/help-extension.ts | 4 +- packages/cli/src/rest/api.ts | 4 +- .../services/__tests__/load-dotenv.spec.ts | 103 ++++++++++++++++++ packages/cli/src/services/load-dotenv.ts | 48 ++++++++ 7 files changed, 162 insertions(+), 6 deletions(-) create mode 100644 packages/cli/src/services/__tests__/load-dotenv.spec.ts create mode 100644 packages/cli/src/services/load-dotenv.ts diff --git a/packages/cli/bin/run b/packages/cli/bin/run index ca2ae151e..713ffcfca 100755 --- a/packages/cli/bin/run +++ b/packages/cli/bin/run @@ -1,6 +1,8 @@ #!/usr/bin/env node +import { loadDotenvFile } from '../dist/services/load-dotenv.js' import { execute, settings } from '@oclif/core' +await loadDotenvFile() settings.enableAutoTranspile = false await execute({ dir: import.meta.url }) diff --git a/packages/cli/e2e/__tests__/login.spec.ts b/packages/cli/e2e/__tests__/login.spec.ts index ecb84e947..543d7dc9d 100644 --- a/packages/cli/e2e/__tests__/login.spec.ts +++ b/packages/cli/e2e/__tests__/login.spec.ts @@ -77,8 +77,9 @@ describe('login', () => { const { stderr } = await runCheckly(fixt, ['login'], { timeout: 5000, }) - expect(stderr).toContain('Warning: `CHECKLY_API_KEY` or `CHECKLY_ACCOUNT_ID` environment variables') - expect(stderr).toContain('are configured. You must delete them to use `npx checkly login`.') + expect(stderr).toContain('`CHECKLY_API_KEY`') + expect(stderr).toContain('environment variables') + expect(stderr).toContain('are configured (via shell or .env file)') }, 10000) it('should show URL to login', async () => { diff --git a/packages/cli/src/commands/login.ts b/packages/cli/src/commands/login.ts index e31a8dca7..9b86e8649 100644 --- a/packages/cli/src/commands/login.ts +++ b/packages/cli/src/commands/login.ts @@ -31,7 +31,7 @@ export default class Login extends BaseCommand { private _checkExistingCredentials = async () => { if (config.hasEnvVarsConfigured()) { this.warn('`CHECKLY_API_KEY` ' - + 'or `CHECKLY_ACCOUNT_ID` environment variables are configured. You must delete them to use `npx checkly login`.') + + 'or `CHECKLY_ACCOUNT_ID` environment variables are configured (via shell or .env file). You must delete them to use `npx checkly login`.') this.exit(0) } diff --git a/packages/cli/src/help/help-extension.ts b/packages/cli/src/help/help-extension.ts index 84644a349..44f3d1c56 100644 --- a/packages/cli/src/help/help-extension.ts +++ b/packages/cli/src/help/help-extension.ts @@ -89,7 +89,9 @@ export default class ChecklyHelpClass extends Help { } this.log(this.section('ENVIRONMENT VARIABLES', - `Running the CLI from your CI pipeline will need to export variables in the shell:\n + `The CLI automatically loads variables from a .env file in the current directory. + To disable, set CHECKLY_NO_DOTENV=1. + CHECKLY_ACCOUNT_ID Checkly account ID. CHECKLY_API_KEY Checkly User API Key. `)) diff --git a/packages/cli/src/rest/api.ts b/packages/cli/src/rest/api.ts index 39b0723fd..803cb87ef 100644 --- a/packages/cli/src/rest/api.ts +++ b/packages/cli/src/rest/api.ts @@ -47,8 +47,8 @@ export async function validateAuthentication (): Promise { } if (!config.hasValidCredentials()) { - throw new Error('Run `npx checkly login` or manually set `CHECKLY_API_KEY` ' - + '& `CHECKLY_ACCOUNT_ID` environment variables to setup authentication.') + throw new Error('Run `npx checkly login` or set `CHECKLY_API_KEY` ' + + '& `CHECKLY_ACCOUNT_ID` in your environment or .env file.') } const accountId = config.getAccountId() diff --git a/packages/cli/src/services/__tests__/load-dotenv.spec.ts b/packages/cli/src/services/__tests__/load-dotenv.spec.ts new file mode 100644 index 000000000..27488d739 --- /dev/null +++ b/packages/cli/src/services/__tests__/load-dotenv.spec.ts @@ -0,0 +1,103 @@ +import * as path from 'node:path' +import * as fs from 'node:fs/promises' +import * as os from 'node:os' +import { describe, it, expect, beforeEach, afterEach } from 'vitest' +import { loadDotenvFile } from '../load-dotenv.js' + +describe('loadDotenvFile', () => { + let tempDir: string + let originalCwd: typeof process.cwd + const savedEnv: Record = {} + + beforeEach(async () => { + tempDir = await fs.mkdtemp(path.join(os.tmpdir(), 'checkly-dotenv-')) + originalCwd = process.cwd + process.cwd = () => tempDir + + for (const key of ['TEST_DOTENV_A', 'TEST_DOTENV_B', 'CHECKLY_NO_DOTENV']) { + savedEnv[key] = process.env[key] + delete process.env[key] + } + }) + + afterEach(async () => { + process.cwd = originalCwd + for (const [key, value] of Object.entries(savedEnv)) { + if (value === undefined) { + delete process.env[key] + } else { + process.env[key] = value + } + } + await fs.rm(tempDir, { recursive: true, force: true }) + }) + + it('loads variables from .env into process.env', async () => { + await fs.writeFile(path.join(tempDir, '.env'), 'TEST_DOTENV_A=hello\nTEST_DOTENV_B=world\n') + + await loadDotenvFile() + + expect(process.env.TEST_DOTENV_A).toBe('hello') + expect(process.env.TEST_DOTENV_B).toBe('world') + }) + + it('does not override existing env vars', async () => { + process.env.TEST_DOTENV_A = 'original' + await fs.writeFile(path.join(tempDir, '.env'), 'TEST_DOTENV_A=overwritten\n') + + await loadDotenvFile() + + expect(process.env.TEST_DOTENV_A).toBe('original') + }) + + it('does nothing when .env does not exist', async () => { + await expect(loadDotenvFile()).resolves.toBeUndefined() + }) + + it('does nothing when CHECKLY_NO_DOTENV=1', async () => { + process.env.CHECKLY_NO_DOTENV = '1' + await fs.writeFile(path.join(tempDir, '.env'), 'TEST_DOTENV_A=should-not-load\n') + + await loadDotenvFile() + + expect(process.env.TEST_DOTENV_A).toBeUndefined() + }) + + it('still loads when CHECKLY_NO_DOTENV is set to something other than "1"', async () => { + process.env.CHECKLY_NO_DOTENV = 'true' + await fs.writeFile(path.join(tempDir, '.env'), 'TEST_DOTENV_A=loaded\n') + + await loadDotenvFile() + + expect(process.env.TEST_DOTENV_A).toBe('loaded') + }) + + it('handles empty .env file', async () => { + await fs.writeFile(path.join(tempDir, '.env'), '') + + await expect(loadDotenvFile()).resolves.toBeUndefined() + }) + + // fs.chmod(0o000) does not restrict reads on Windows + it.skipIf(process.platform === 'win32')('handles permission errors gracefully', async () => { + const envPath = path.join(tempDir, '.env') + await fs.writeFile(envPath, 'TEST_DOTENV_A=secret\n') + await fs.chmod(envPath, 0o000) + + const stderrWrite = process.stderr.write + let stderrOutput = '' + process.stderr.write = ((chunk: string) => { + stderrOutput += chunk + return true + }) as typeof process.stderr.write + + try { + await expect(loadDotenvFile()).resolves.toBeUndefined() + expect(stderrOutput).toContain('Warning') + expect(process.env.TEST_DOTENV_A).toBeUndefined() + } finally { + process.stderr.write = stderrWrite + await fs.chmod(envPath, 0o644) + } + }) +}) diff --git a/packages/cli/src/services/load-dotenv.ts b/packages/cli/src/services/load-dotenv.ts new file mode 100644 index 000000000..514fb5e10 --- /dev/null +++ b/packages/cli/src/services/load-dotenv.ts @@ -0,0 +1,48 @@ +import { readFile } from 'node:fs/promises' +import * as path from 'node:path' +import Debug from 'debug' +import { parse } from 'dotenv' + +const debug = Debug('checkly:cli:dotenv') + +export async function loadDotenvFile (): Promise { + if (process.env.CHECKLY_NO_DOTENV === '1') { + debug('dotenv loading disabled via CHECKLY_NO_DOTENV=1') + return + } + + const dotenvPath = path.resolve(process.cwd(), '.env') + + let content: string + try { + content = await readFile(dotenvPath, { encoding: 'utf8' }) + } catch (err: any) { + if (err.code === 'ENOENT') { + debug('no .env file found at %s', dotenvPath) + return + } + process.stderr.write(`Warning: failed to read .env file at ${dotenvPath}: ${err.message}\n`) + return + } + + let parsed: ReturnType + try { + parsed = parse(content) + } catch (err: any) { + process.stderr.write(`Warning: failed to parse .env file at ${dotenvPath}: ${err.message}\n`) + return + } + + let injectedCount = 0 + + for (const [key, value] of Object.entries(parsed)) { + if (Object.prototype.hasOwnProperty.call(process.env, key)) { + debug('skipping %s (already set in environment)', key) + } else { + process.env[key] = value + injectedCount++ + } + } + + debug('loaded %d variable(s) from %s', injectedCount, dotenvPath) +} From 063ca763a94d68d83453925289b365e8341fce4d Mon Sep 17 00:00:00 2001 From: ferrandiaz Date: Thu, 21 May 2026 17:23:45 +0200 Subject: [PATCH 07/13] feat(cli): cancel running checks on Ctrl+C (#1292) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat(cli): add cancel REST client * feat(cli): support cancellation status in reporters * feat(cli): add --detach flag with SIGINT cancel flow * feat(cli): wire cancel handler in test, pw-test, and trigger commands * test(cli): add tests for cancellation flow * feat(cli/reporters): suppress live panel while cancel prompt is open Adds an isCancelling flag to AbstractListReporter so the live status panel stops re-rendering while the cancel confirmation prompt is on screen, and resumes when the prompt closes. - onCancelPromptShown clears the panel and raises the flag. - onCancelPromptHidden lowers the flag and repaints; runs on both confirm and decline so live updates resume during the cancellation drain. - _printSummary and onStreamLogs short-circuit while the flag is up. - _clearSummary becomes a no-op when there is nothing to erase, preserving the clear/print invariant if a guard skips the paired _printSummary. * fix(cli/runner): close SIGINT race and add cancel feedback PQueue.pause() does not interrupt an in-flight handler. A CHECK_INPROGRESS handler that started before SIGINT could still emit and trigger a panel re-render right under the cancel prompt, producing spurious project-tree output. - Emit CANCEL_PROMPT_SHOWN before queue.pause(); EventEmitter.emit is synchronous so reporters set their flag before any pending handler can render. - Emit CANCEL_PROMPT_HIDDEN after the prompt resolves on both confirm and decline, restoring live updates. - On confirm, print 'Cancelling test session...' so the user sees feedback while the backend cancellation completes. - Always queue.start() after the prompt: drains MQTT results so allChecksFinished can resolve on confirm, resumes normal flow on decline. - Use printLn instead of raw process.stdout.write to match the rest of the CLI. * feat(cli/commands): forward cancel prompt events to reporters Wires the runner's CANCEL_PROMPT_SHOWN and CANCEL_PROMPT_HIDDEN events to each reporter for the test, pw-test, and trigger commands. * test(cli/reporters): cover AbstractListReporter cancellation lifecycle Covers happy paths (clear-then-repaint, normal render before/after the prompt) and edge cases (empty _clearString no-op, double prompt-shown idempotency, prompt-hidden without prior prompt-shown, suppression of _printSummary and onStreamLogs while cancelling). * fix(cli/runner): drain buffered ^C before opening cancel prompt * fix: tests * feat: rebuild * fix: sigint handling * fix: flip detached * fix: skip question for non terminal * fix: tests * fix: prompt * fix: tests * chore: remove unused cancel-prompt e2e test and fixture The fixture doesn't import any project code — it only tests prompts library behavior, which is already covered by the abstract-check-runner unit tests. Co-Authored-By: Claude Opus 4.6 (1M context) * fix: add .js suffixes to ESM imports in new test files Co-Authored-By: Claude Opus 4.6 (1M context) * ci: trigger CI after rebase onto next/v8 Co-Authored-By: Claude Opus 4.6 (1M context) * fix: replace interactive cancel prompt with immediate cancellation The interactive confirmation prompt on Ctrl+C broke on Windows due to cmd.exe's competing "Terminate batch job" dialog and the `when-exit` transitive dependency (conf → atomically → when-exit) preempting the SIGINT handler. Now Ctrl+C always cancels immediately and suggests --detach for keeping checks running. Uses prependListener to run before when-exit's handler. Co-Authored-By: Claude Opus 4.6 (1M context) * fix: always cancel immediately on SIGINT instead of showing interactive prompt The interactive confirmation prompt on Ctrl+C conflicted with cmd.exe's "Terminate batch job" prompt on Windows, and a transitive dependency (when-exit via conf → atomically) preempted the SIGINT handler by re-raising SIGINT, which is a hard kill on Windows. Replace the prompt with immediate cancellation: first Ctrl+C emits CANCEL and shows a message suggesting --detach, second Ctrl+C force exits. The cancellation message is rendered by the reporter as part of its live summary panel so it doesn't get overwritten. Pre-existing SIGINT listeners are removed during the run and restored afterward to prevent when-exit from terminating the process. Co-Authored-By: Claude Opus 4.6 (1M context) * feat: show detach message on SIGINT when --detach is used Ctrl+C with --detach now shows "Checks will continue running in the cloud." before exiting, instead of silently terminating. Also refactors the SIGINT handler setup: both detach and non-detach modes share the same when-exit listener removal and registration code, with the mode-specific behavior inside the handler body. Co-Authored-By: Claude Opus 4.6 (1M context) * fix: handle 403 from /v1/cancel gracefully The cancel endpoint returns 403 when the account doesn't have the feature flag set. Silently ignore it since cancellation is best-effort. Co-Authored-By: Claude Opus 4.6 (1M context) * fix: update cancel REST client for resource-oriented endpoints The cancel API moved from a single POST /v1/cancel with a discriminated union body to resource-oriented endpoints: - POST /v1/test-sessions/{testSessionId}/cancel - POST /v1/check-sessions/{checkSessionId}/cancel The body is now optional and accepts { sequenceId?: string[] } to cancel specific sequences. Omitting it cancels all in-progress sequences. Co-Authored-By: Claude Opus 4.6 (1M context) --------- Co-authored-by: Simo Kinnunen Co-authored-by: Claude Opus 4.6 (1M context) --- packages/cli/src/commands/pw-test.ts | 15 ++ packages/cli/src/commands/test.ts | 15 ++ packages/cli/src/commands/trigger.ts | 13 + .../reporters/__tests__/abstract-list.spec.ts | 101 ++++++++ .../cli/src/reporters/__tests__/util.spec.ts | 15 ++ packages/cli/src/reporters/abstract-list.ts | 42 +++- packages/cli/src/reporters/reporter.ts | 2 + packages/cli/src/reporters/util.ts | 7 + .../cli/src/rest/__tests__/cancel.spec.ts | 59 +++++ packages/cli/src/rest/api.ts | 2 + packages/cli/src/rest/cancel.ts | 29 +++ .../__tests__/abstract-check-runner.spec.ts | 235 ++++++++++++++++++ .../cli/src/services/abstract-check-runner.ts | 44 ++++ packages/cli/src/services/test-runner.ts | 3 +- packages/cli/src/services/trigger-runner.ts | 3 +- 15 files changed, 580 insertions(+), 5 deletions(-) create mode 100644 packages/cli/src/reporters/__tests__/abstract-list.spec.ts create mode 100644 packages/cli/src/rest/__tests__/cancel.spec.ts create mode 100644 packages/cli/src/rest/cancel.ts create mode 100644 packages/cli/src/services/__tests__/abstract-check-runner.spec.ts diff --git a/packages/cli/src/commands/pw-test.ts b/packages/cli/src/commands/pw-test.ts index 3ef717cb1..c2d8cb152 100644 --- a/packages/cli/src/commands/pw-test.ts +++ b/packages/cli/src/commands/pw-test.ts @@ -118,6 +118,11 @@ export default class PwTestCommand extends AuthCommand { description: 'Force a fresh install of dependencies and update the cached version.', default: false, }), + 'detach': Flags.boolean({ + char: 'd', + description: 'Keep checks running in the cloud after cancelling the CLI process.', + default: false, + }), } async run (): Promise { @@ -143,6 +148,7 @@ export default class PwTestCommand extends AuthCommand { 'frequency': frequency, 'install-command': installCommand, 'refresh-cache': refreshCache, + 'detach': detach, } = flags const { configDirectory, configFilenames } = splitConfigFilePath(configFilename) const pwPathFlag = this.getConfigPath(playwrightFlags) @@ -315,6 +321,7 @@ export default class PwTestCommand extends AuthCommand { null, // testRetryStrategy streamLogs, refreshCache, + detach, ) runner.on(Events.RUN_STARTED, @@ -338,6 +345,14 @@ export default class PwTestCommand extends AuthCommand { }, links)) }) + runner.on(Events.CANCEL, async testSessionId => { + reporters.forEach(r => r.onCancel()) + if (!testSessionId) return + await api.cancel.cancelTestSession({ testSessionId }) + }) + + runner.on(Events.DETACH, () => reporters.forEach(r => r.onDetach())) + const noTestsFoundChecks = new Set() runner.on(Events.CHECK_SUCCESSFUL, diff --git a/packages/cli/src/commands/test.ts b/packages/cli/src/commands/test.ts index 4a920d824..2af6f0d34 100644 --- a/packages/cli/src/commands/test.ts +++ b/packages/cli/src/commands/test.ts @@ -119,6 +119,11 @@ export default class Test extends AuthCommand { description: 'Force a fresh install of dependencies and update the cached version.', default: false, }), + 'detach': Flags.boolean({ + char: 'd', + description: 'Keep checks running in the cloud after cancelling the CLI process.', + default: false, + }), } static args = { @@ -154,6 +159,7 @@ export default class Test extends AuthCommand { retries, 'verify-runtime-dependencies': verifyRuntimeDependencies, 'refresh-cache': refreshCache, + 'detach': detach, } = flags const filePatterns = argv as string[] @@ -367,8 +373,17 @@ export default class Test extends AuthCommand { testRetryStrategy, undefined, refreshCache, + detach, ) + runner.on(Events.CANCEL, async testSessionId => { + reporters.forEach(r => r.onCancel()) + if (!testSessionId) return + await api.cancel.cancelTestSession({ testSessionId }) + }) + + runner.on(Events.DETACH, () => reporters.forEach(r => r.onDetach())) + runner.on(Events.RUN_STARTED, (checks: Array<{ check: any, sequenceId: SequenceId }>, testSessionId: string) => reporters.forEach(r => r.onBegin(checks, testSessionId)), diff --git a/packages/cli/src/commands/trigger.ts b/packages/cli/src/commands/trigger.ts index 5494457e8..506597265 100644 --- a/packages/cli/src/commands/trigger.ts +++ b/packages/cli/src/commands/trigger.ts @@ -98,6 +98,11 @@ export default class Trigger extends AuthCommand { description: 'Force a fresh install of dependencies and update the cached version.', default: false, }), + 'detach': Flags.boolean({ + char: 'd', + description: 'Keep checks running in the cloud after cancelling the CLI process.', + default: false, + }), } async run (): Promise { @@ -117,6 +122,7 @@ export default class Trigger extends AuthCommand { 'test-session-name': testSessionName, retries, 'refresh-cache': refreshCache, + 'detach': detach, } = flags const envVars = await getEnvs(envFile, env) const { configDirectory, configFilenames } = splitConfigFilePath(configFilename) @@ -153,6 +159,7 @@ export default class Trigger extends AuthCommand { testSessionName, testRetryStrategy, refreshCache, + detach, ) // TODO: This is essentially the same for `checkly test`. Maybe reuse code. runner.on(Events.RUN_STARTED, @@ -193,6 +200,12 @@ export default class Trigger extends AuthCommand { reporters.forEach(r => r.onError(err)) process.exitCode = 1 }) + runner.on(Events.CANCEL, async testSessionId => { + reporters.forEach(r => r.onCancel()) + if (!testSessionId) return + await api.cancel.cancelTestSession({ testSessionId }) + }) + runner.on(Events.DETACH, () => reporters.forEach(r => r.onDetach())) await runner.run() } diff --git a/packages/cli/src/reporters/__tests__/abstract-list.spec.ts b/packages/cli/src/reporters/__tests__/abstract-list.spec.ts new file mode 100644 index 000000000..671687da1 --- /dev/null +++ b/packages/cli/src/reporters/__tests__/abstract-list.spec.ts @@ -0,0 +1,101 @@ +import { beforeEach, describe, expect, it, vi } from 'vitest' + +import ListReporter from '../list.js' +import type { SequenceId } from '../../services/abstract-check-runner.js' + +vi.mock('../../rest/api.js', () => ({ + getDefaults: () => ({ + baseURL: 'https://api.checklyhq.com', + accountId: 'test-account-123', + Authorization: 'Bearer test-key', + apiKey: 'test-key', + }), + testSessions: { + getShortLink: vi.fn(), + }, +})) + +const printLnMock = vi.fn() + +vi.mock('../util.js', async () => { + const actual = await vi.importActual('../util.js') + return { + ...actual, + printLn: (...args: Parameters) => printLnMock(...args), + } +}) + +const PUBLIC_RUN_LOCATION = { type: 'PUBLIC' as const, region: 'eu-west-1' } + +const SOURCE_FILE = 'folder/api.check.ts' +const SEQUENCE_ID: SequenceId = 'seq-001' + +function makeCheck (sourceFile = SOURCE_FILE) { + return { + name: 'My API Check', + getSourceFile: () => sourceFile, + } +} + +function makePassingResult (sourceFile = SOURCE_FILE) { + return { + name: 'My API Check', + sourceFile, + hasFailures: false, + isDegraded: false, + isCancelled: false, + } +} + +function makeReporterWithOneCheck () { + const reporter = new ListReporter(PUBLIC_RUN_LOCATION, false) + const check = makeCheck() + reporter.onBegin([{ check, sequenceId: SEQUENCE_ID }]) + return { reporter, check } +} + +describe('AbstractListReporter', () => { + beforeEach(() => { + printLnMock.mockClear() + }) + + it('should call printLn with check status output after onCheckEnd', () => { + const { reporter, check } = makeReporterWithOneCheck() + + reporter.onCheckInProgress(check, SEQUENCE_ID) + reporter.onCheckEnd(SEQUENCE_ID, makePassingResult()) + + expect(printLnMock).toHaveBeenCalled() + const calls = printLnMock.mock.calls.map(([text]: [string]) => text) + expect(calls.some(text => text.includes('My API Check'))).toBe(true) + }) + + it('should populate _clearString after _printSummary runs', () => { + const { reporter } = makeReporterWithOneCheck() + + reporter._printSummary() + + expect(reporter._clearString).not.toBe('') + }) + + it('should include cancellation message with --detach hint after onCancel', () => { + const { reporter } = makeReporterWithOneCheck() + + reporter.onCancel() + + const calls = printLnMock.mock.calls.map(([text]: [string]) => text) + const summary = calls.join('\n') + expect(summary).toContain('Cancelling checks') + expect(summary).toContain('--detach') + }) + + it('should include detach message after onDetach', () => { + const { reporter } = makeReporterWithOneCheck() + + reporter.onDetach() + + const calls = printLnMock.mock.calls.map(([text]: [string]) => text) + const summary = calls.join('\n') + expect(summary).toContain('continue running') + }) +}) diff --git a/packages/cli/src/reporters/__tests__/util.spec.ts b/packages/cli/src/reporters/__tests__/util.spec.ts index 9f9ba960f..1f232e7a2 100644 --- a/packages/cli/src/reporters/__tests__/util.spec.ts +++ b/packages/cli/src/reporters/__tests__/util.spec.ts @@ -148,4 +148,19 @@ describe('resultToCheckStatus()', () => { expect(resultToCheckStatus({ hasFailures: false, isDegraded: true, hasErrors: false })) .toBe(CheckStatus.DEGRADED) }) + it('returns cancelled when isCancelled is true', () => { + expect(resultToCheckStatus({ isCancelled: true })) + .toBe(CheckStatus.CANCELLED) + }) + it('returns cancelled when isCancelled is true even if hasFailures is also true', () => { + expect(resultToCheckStatus({ isCancelled: true, hasFailures: true })) + .toBe(CheckStatus.CANCELLED) + }) +}) + +describe('formatCheckTitle() with CANCELLED status', () => { + it('should use the ⊘ symbol for a cancelled check title', () => { + const result = stripAnsi(formatCheckTitle(CheckStatus.CANCELLED, simpleCheckFixture)) + expect(result).toContain('⊘') + }) }) diff --git a/packages/cli/src/reporters/abstract-list.ts b/packages/cli/src/reporters/abstract-list.ts index 006eb5318..60596a10f 100644 --- a/packages/cli/src/reporters/abstract-list.ts +++ b/packages/cli/src/reporters/abstract-list.ts @@ -26,6 +26,8 @@ export type checkFilesMap = Map): void + onCancel(): void + onDetach(): void } export type ReporterType = 'list' | 'dot' | 'ci' | 'github' | 'json' diff --git a/packages/cli/src/reporters/util.ts b/packages/cli/src/reporters/util.ts index e475c444d..533ba4909 100644 --- a/packages/cli/src/reporters/util.ts +++ b/packages/cli/src/reporters/util.ts @@ -16,6 +16,7 @@ export enum CheckStatus { FAILED, SUCCESSFUL, DEGRADED, + CANCELLED, } export function formatDuration (ms: number): string { @@ -56,6 +57,9 @@ export function formatCheckTitle ( } else if (status === CheckStatus.RETRIED) { statusString = '↺' format = chalk.bold + } else if (status === CheckStatus.CANCELLED) { + statusString = '⊘' + format = chalk.bold } else { statusString = '-' format = chalk.bold.dim @@ -710,6 +714,9 @@ function toString (val: any): string { } export function resultToCheckStatus (checkResult: any): CheckStatus { + if (checkResult.isCancelled) { + return CheckStatus.CANCELLED + } return checkResult.hasFailures ? CheckStatus.FAILED : checkResult.isDegraded diff --git a/packages/cli/src/rest/__tests__/cancel.spec.ts b/packages/cli/src/rest/__tests__/cancel.spec.ts new file mode 100644 index 000000000..b2b08e16a --- /dev/null +++ b/packages/cli/src/rest/__tests__/cancel.spec.ts @@ -0,0 +1,59 @@ +import { describe, it, expect, vi, beforeEach } from 'vitest' +import type { AxiosInstance } from 'axios' +import Cancel from '../cancel.js' + +function makeAxiosMock (): AxiosInstance { + return { + post: vi.fn().mockResolvedValue({ data: {} }), + } as unknown as AxiosInstance +} + +describe('Cancel', () => { + let api: AxiosInstance + let cancel: Cancel + + beforeEach(() => { + api = makeAxiosMock() + cancel = new Cancel(api) + }) + + describe('cancelTestSession()', () => { + it('calls POST /v1/test-sessions/:id/cancel', async () => { + await cancel.cancelTestSession({ testSessionId: 'ts-abc' }) + + expect(api.post).toHaveBeenCalledWith('/v1/test-sessions/ts-abc/cancel', undefined) + }) + + it('passes sequenceId in the body when provided', async () => { + await cancel.cancelTestSession({ testSessionId: 'ts-abc', sequenceId: ['seq-1', 'seq-2'] }) + + expect(api.post).toHaveBeenCalledWith('/v1/test-sessions/ts-abc/cancel', { sequenceId: ['seq-1', 'seq-2'] }) + }) + + it('silently ignores a 403 response', async () => { + vi.mocked(api.post).mockRejectedValueOnce({ response: { status: 403 } }) + + await expect(cancel.cancelTestSession({ testSessionId: 'ts-forbidden' })).resolves.not.toThrow() + }) + + it('re-throws non-403 errors', async () => { + vi.mocked(api.post).mockRejectedValueOnce({ response: { status: 500 } }) + + await expect(cancel.cancelTestSession({ testSessionId: 'ts-error' })).rejects.toEqual({ response: { status: 500 } }) + }) + }) + + describe('cancelCheckSession()', () => { + it('calls POST /v1/check-sessions/:id/cancel', async () => { + await cancel.cancelCheckSession({ checkSessionId: 'cs-abc' }) + + expect(api.post).toHaveBeenCalledWith('/v1/check-sessions/cs-abc/cancel', undefined) + }) + + it('passes sequenceId in the body when provided', async () => { + await cancel.cancelCheckSession({ checkSessionId: 'cs-abc', sequenceId: ['seq-1'] }) + + expect(api.post).toHaveBeenCalledWith('/v1/check-sessions/cs-abc/cancel', { sequenceId: ['seq-1'] }) + }) + }) +}) diff --git a/packages/cli/src/rest/api.ts b/packages/cli/src/rest/api.ts index 803cb87ef..0db7a5ceb 100644 --- a/packages/cli/src/rest/api.ts +++ b/packages/cli/src/rest/api.ts @@ -26,6 +26,7 @@ import BatchAnalytics from './batch-analytics.js' import Entitlements from './entitlements.js' import AccountMembers from './account-members.js' import Rca from './rca.js' +import Cancel from './cancel.js' import { handleErrorResponse, UnauthorizedError } from './errors.js' import { detectOperator } from '../helpers/cli-mode.js' @@ -131,3 +132,4 @@ export const batchAnalytics = new BatchAnalytics(api) export const entitlements = new Entitlements(api) export const accountMembers = new AccountMembers(api) export const rca = new Rca(api) +export const cancel = new Cancel(api) diff --git a/packages/cli/src/rest/cancel.ts b/packages/cli/src/rest/cancel.ts new file mode 100644 index 000000000..8339d358d --- /dev/null +++ b/packages/cli/src/rest/cancel.ts @@ -0,0 +1,29 @@ +import { type AxiosInstance } from 'axios' + +class Cancel { + api: AxiosInstance + + constructor (api: AxiosInstance) { + this.api = api + } + + async cancelTestSession ({ testSessionId, sequenceId }: { testSessionId: string, sequenceId?: string[] }) { + try { + return await this.api.post(`/v1/test-sessions/${testSessionId}/cancel`, sequenceId ? { sequenceId } : undefined) + } catch (err: any) { + if (err?.response?.status === 403) return + throw err + } + } + + async cancelCheckSession ({ checkSessionId, sequenceId }: { checkSessionId: string, sequenceId?: string[] }) { + try { + return await this.api.post(`/v1/check-sessions/${checkSessionId}/cancel`, sequenceId ? { sequenceId } : undefined) + } catch (err: any) { + if (err?.response?.status === 403) return + throw err + } + } +} + +export default Cancel diff --git a/packages/cli/src/services/__tests__/abstract-check-runner.spec.ts b/packages/cli/src/services/__tests__/abstract-check-runner.spec.ts new file mode 100644 index 000000000..e51f31e0d --- /dev/null +++ b/packages/cli/src/services/__tests__/abstract-check-runner.spec.ts @@ -0,0 +1,235 @@ +import { describe, it, expect, vi, beforeEach, afterEach } from 'vitest' +import AbstractCheckRunner, { Events, SequenceId } from '../abstract-check-runner.js' + +// --------------------------------------------------------------------------- +// Module mocks — must be hoisted before any imports that pull these in +// --------------------------------------------------------------------------- + +vi.mock('../../rest/api.js', () => ({ + testSessions: { + run: vi.fn().mockResolvedValue({ data: { testSessionId: 'ts-123', sequenceIds: {} } }), + getResultShortLinks: vi.fn().mockResolvedValue({ data: {} }), + }, + assets: { + getLogs: vi.fn().mockResolvedValue([]), + getCheckRunData: vi.fn().mockResolvedValue({}), + }, + getDefaults: vi.fn().mockReturnValue({ baseURL: 'https://api.checkly.com', accountId: 'acc-1' }), +})) + +vi.mock('../socket-client.js', () => ({ + SocketClient: { + connect: vi.fn().mockResolvedValue({ + on: vi.fn(), + subscribeAsync: vi.fn().mockResolvedValue(undefined), + endAsync: vi.fn().mockResolvedValue(undefined), + }), + }, +})) + +// --------------------------------------------------------------------------- +// Helpers +// --------------------------------------------------------------------------- + +import { SocketClient } from '../socket-client.js' + +/** Minimal concrete subclass — scheduleChecks immediately returns with zero checks so the runner exits cleanly. */ +class StubCheckRunner extends AbstractCheckRunner { + constructor (accountId: string, timeout: number, verbose: boolean, detach: boolean = false) { + super(accountId, timeout, verbose, detach) + } + + // eslint-disable-next-line @typescript-eslint/no-unused-vars + scheduleChecks (_checkRunSuiteId: string): Promise<{ + testSessionId?: string + checks: Array<{ check: any, sequenceId: SequenceId }> + }> { + return Promise.resolve({ testSessionId: 'ts-stub', checks: [] }) + } +} + +function makeRunner (detach = false): StubCheckRunner { + return new StubCheckRunner('acc-1', 60, false, detach) +} + +// --------------------------------------------------------------------------- +// Tests +// --------------------------------------------------------------------------- + +describe('AbstractCheckRunner — SIGINT / cancellation', () => { + beforeEach(() => { + vi.clearAllMocks() + vi.mocked(SocketClient.connect).mockResolvedValue({ + on: vi.fn(), + subscribeAsync: vi.fn().mockResolvedValue(undefined), + endAsync: vi.fn().mockResolvedValue(undefined), + } as any) + vi.spyOn(process, 'rawListeners').mockReturnValue([]) + vi.spyOn(process, 'removeAllListeners').mockReturnValue(process) + }) + + afterEach(() => { + vi.restoreAllMocks() + }) + + it('registers a SIGINT handler during run() when detach is false', async () => { + const onSpy = vi.spyOn(process, 'on').mockReturnValue(process) + vi.spyOn(process, 'off').mockReturnValue(process) + + const runner = makeRunner(false) + await runner.run() + + const sigintCalls = onSpy.mock.calls.filter(([event]) => event === 'SIGINT') + expect(sigintCalls).toHaveLength(1) + }) + + it('registers a SIGINT handler during run() when detach is true', async () => { + const onSpy = vi.spyOn(process, 'on').mockReturnValue(process) + vi.spyOn(process, 'off').mockReturnValue(process) + + const runner = makeRunner(true) + await runner.run() + + const sigintCalls = onSpy.mock.calls.filter(([event]) => event === 'SIGINT') + expect(sigintCalls).toHaveLength(1) + }) + + it('emits Events.DETACH and exits with 0 on SIGINT when detach is true', async () => { + let sigintHandler: (() => void) | undefined + vi.spyOn(process, 'on').mockImplementation((event: string | symbol, listener: any) => { + if (event === 'SIGINT') sigintHandler = listener + return process + }) + vi.spyOn(process, 'off').mockReturnValue(process) + const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => undefined as never) + + const runner = makeRunner(true) + + const detachEvents: unknown[] = [] + runner.on(Events.DETACH, () => detachEvents.push(true)) + + await runner.run() + + sigintHandler?.() + + expect(detachEvents).toHaveLength(1) + expect(exitSpy).toHaveBeenCalledWith(0) + }) + + it('removes the SIGINT handler in the finally block after run() completes', async () => { + const onSpy = vi.spyOn(process, 'on').mockReturnValue(process) + const offSpy = vi.spyOn(process, 'off').mockReturnValue(process) + + const runner = makeRunner(false) + await runner.run() + + const registeredHandler = onSpy.mock.calls.find(([e]) => e === 'SIGINT')?.[1] as (() => void) | undefined + const removedHandlers = offSpy.mock.calls + .filter(([event]) => event === 'SIGINT') + .map(([, listener]) => listener) + + expect(registeredHandler).toBeDefined() + expect(removedHandlers).toContain(registeredHandler) + }) + + it('emits Events.CANCEL with testSessionId on first SIGINT', async () => { + let sigintHandler: (() => void) | undefined + vi.spyOn(process, 'on').mockImplementation((event: string | symbol, listener: any) => { + if (event === 'SIGINT') sigintHandler = listener + return process + }) + vi.spyOn(process, 'off').mockReturnValue(process) + + const runner = makeRunner(false) + runner.scheduleChecks = vi.fn().mockResolvedValue({ testSessionId: 'ts-cancel', checks: [] }) + + const cancelEvents: unknown[] = [] + runner.on(Events.CANCEL, id => cancelEvents.push(id)) + + await runner.run() + + sigintHandler?.() + + expect(cancelEvents).toHaveLength(1) + expect(cancelEvents[0]).toBe('ts-cancel') + }) + + it('calls process.exit(1) on second SIGINT after cancellation', async () => { + let sigintHandler: (() => void) | undefined + vi.spyOn(process, 'on').mockImplementation((event: string | symbol, listener: any) => { + if (event === 'SIGINT') sigintHandler = listener + return process + }) + vi.spyOn(process, 'off').mockReturnValue(process) + const exitSpy = vi.spyOn(process, 'exit').mockImplementation(() => undefined as never) + + const runner = makeRunner(false) + await runner.run() + + sigintHandler?.() + + await new Promise(resolve => setTimeout(resolve, 110)) + + sigintHandler?.() + expect(exitSpy).toHaveBeenCalledWith(1) + }) + + it('debounces duplicate SIGINTs delivered within 100ms', async () => { + let sigintHandler: (() => void) | undefined + vi.spyOn(process, 'on').mockImplementation((event: string | symbol, listener: any) => { + if (event === 'SIGINT') sigintHandler = listener + return process + }) + vi.spyOn(process, 'off').mockReturnValue(process) + + const runner = makeRunner(false) + runner.scheduleChecks = vi.fn().mockResolvedValue({ testSessionId: 'ts-debounce', checks: [] }) + + const cancelEvents: unknown[] = [] + runner.on(Events.CANCEL, id => cancelEvents.push(id)) + + await runner.run() + + sigintHandler?.() + sigintHandler?.() + + expect(cancelEvents).toHaveLength(1) + }) +}) + +describe('AbstractCheckRunner — SocketClient lifecycle', () => { + beforeEach(() => { + vi.clearAllMocks() + }) + + afterEach(() => { + vi.restoreAllMocks() + }) + + it('connects SocketClient at the start of run()', async () => { + vi.spyOn(process, 'on').mockReturnValue(process) + vi.spyOn(process, 'off').mockReturnValue(process) + + const runner = makeRunner() + await runner.run() + + expect(SocketClient.connect).toHaveBeenCalledTimes(1) + }) + + it('calls endAsync on the socket client in the finally block', async () => { + vi.spyOn(process, 'on').mockReturnValue(process) + vi.spyOn(process, 'off').mockReturnValue(process) + + const mockClient = { + on: vi.fn(), + subscribeAsync: vi.fn().mockResolvedValue(undefined), + endAsync: vi.fn().mockResolvedValue(undefined), + } + vi.mocked(SocketClient.connect).mockResolvedValueOnce(mockClient as any) + + const runner = makeRunner() + await runner.run() + + expect(mockClient.endAsync).toHaveBeenCalledTimes(1) + }) +}) diff --git a/packages/cli/src/services/abstract-check-runner.ts b/packages/cli/src/services/abstract-check-runner.ts index b7b8baf90..f54c039bc 100644 --- a/packages/cli/src/services/abstract-check-runner.ts +++ b/packages/cli/src/services/abstract-check-runner.ts @@ -21,6 +21,8 @@ export enum Events { ERROR = 'ERROR', MAX_SCHEDULING_DELAY_EXCEEDED = 'MAX_SCHEDULING_DELAY_EXCEEDED', STREAM_LOGS = 'STREAM_LOGS', + CANCEL = 'CANCEL', + DETACH = 'DETACH', } export type PrivateRunLocation = { @@ -52,12 +54,14 @@ export default abstract class AbstractCheckRunner extends EventEmitter { accountId: string timeout: number verbose: boolean + protected detach: boolean queue: PQueue constructor ( accountId: string, timeout: number, verbose: boolean, + detach: boolean = false, ) { super() this.checks = new Map() @@ -66,6 +70,7 @@ export default abstract class AbstractCheckRunner extends EventEmitter { this.timeout = timeout this.verbose = verbose this.accountId = accountId + this.detach = detach } abstract scheduleChecks (checkRunSuiteId: string): Promise<{ @@ -75,6 +80,8 @@ export default abstract class AbstractCheckRunner extends EventEmitter { async run () { let socketClient = null + let sigintHandler: (() => void) | null = null + let previousSigintListeners: Array<(...args: any[]) => void> = [] try { socketClient = await SocketClient.connect() @@ -87,6 +94,37 @@ export default abstract class AbstractCheckRunner extends EventEmitter { this.checks = new Map( checks.map(({ check, sequenceId }) => [sequenceId, { check }]), ) + let lastSigintAt = 0 + let hasCancelled = false + + // Remove pre-existing SIGINT listeners (e.g. from `when-exit`, a transitive + // dependency via conf → atomically) that would re-raise the signal and + // terminate the process — especially on Windows where process.kill(pid, 'SIGINT') + // is a hard kill. The listeners are restored in the finally block. + previousSigintListeners = process.rawListeners('SIGINT') as Array<(...args: any[]) => void> + process.removeAllListeners('SIGINT') + + sigintHandler = () => { + const now = Date.now() + // Ignore duplicate SIGINTs within 100ms — some terminals/shells deliver + // two signals for one Ctrl+C. + if (now - lastSigintAt < 100) { + return + } + lastSigintAt = now + + if (this.detach) { + this.emit(Events.DETACH) + process.exit(0) + } else if (hasCancelled) { + process.exit(1) + } else { + hasCancelled = true + this.emit(Events.CANCEL, testSessionId) + } + } + + process.on('SIGINT', sigintHandler) // `processMessage()` assumes that `this.timeouts` always has an entry for non-timed-out checks. // To ensure that this is the case, we call `setAllTimeouts()` before `queue.start()`. @@ -110,6 +148,12 @@ export default abstract class AbstractCheckRunner extends EventEmitter { this.disableAllTimeouts() this.emit(Events.ERROR, err) } finally { + if (sigintHandler) { + process.off('SIGINT', sigintHandler) + for (const listener of previousSigintListeners) { + process.on('SIGINT', listener) + } + } if (socketClient) { await socketClient.endAsync() } diff --git a/packages/cli/src/services/test-runner.ts b/packages/cli/src/services/test-runner.ts index 83ccc53e7..16c3c03de 100644 --- a/packages/cli/src/services/test-runner.ts +++ b/packages/cli/src/services/test-runner.ts @@ -39,8 +39,9 @@ export default class TestRunner extends AbstractCheckRunner { testRetryStrategy: RetryStrategy | null, streamLogs?: boolean, refreshCache?: boolean, + detach?: boolean, ) { - super(accountId, timeout, verbose) + super(accountId, timeout, verbose, detach ?? false) this.projectBundle = projectBundle this.checkBundles = checkBundles this.sharedFiles = sharedFiles diff --git a/packages/cli/src/services/trigger-runner.ts b/packages/cli/src/services/trigger-runner.ts index 02ec118e5..bd3891bef 100644 --- a/packages/cli/src/services/trigger-runner.ts +++ b/packages/cli/src/services/trigger-runner.ts @@ -27,8 +27,9 @@ export default class TriggerRunner extends AbstractCheckRunner { testSessionName: string | undefined, testRetryStrategy: RetryStrategy | null, refreshCache?: boolean, + detach?: boolean, ) { - super(accountId, timeout, verbose) + super(accountId, timeout, verbose, detach ?? false) this.shouldRecord = shouldRecord this.location = location this.targetTags = targetTags From f2d3b1bfb0ae65ec1c0ed198f3223733dbba1cfa Mon Sep 17 00:00:00 2001 From: Simo Kinnunen Date: Fri, 22 May 2026 00:40:57 +0900 Subject: [PATCH 08/13] chore: update pnpm lockfile after rebase Drop @oclif/plugin-not-found entry removed in the ESM migration. Co-Authored-By: Claude Opus 4.6 (1M context) --- pnpm-lock.yaml | 3 --- 1 file changed, 3 deletions(-) diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 23c299f8d..cb155de2e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -47,9 +47,6 @@ importers: '@oclif/plugin-help': specifier: ^6.2.46 version: 6.2.46 - '@oclif/plugin-not-found': - specifier: ^3.2.82 - version: 3.2.82(@types/node@22.19.18) '@oclif/plugin-warn-if-update-available': specifier: ^3.1.62 version: 3.1.62 From f5d99e4f2d33cdee362456df28507ea418a67138 Mon Sep 17 00:00:00 2001 From: Simo Kinnunen Date: Fri, 22 May 2026 02:28:47 +0900 Subject: [PATCH 09/13] fix(cli): migrate remaining e2e tests from removed runChecklyCli to runCheckly Co-Authored-By: Claude Opus 4.6 (1M context) --- .../cli/e2e/__tests__/cli-parse-error.spec.ts | 54 +++++++++++++------ .../e2e/__tests__/command-not-found.spec.ts | 39 ++++++++++---- 2 files changed, 65 insertions(+), 28 deletions(-) diff --git a/packages/cli/e2e/__tests__/cli-parse-error.spec.ts b/packages/cli/e2e/__tests__/cli-parse-error.spec.ts index fb6959275..ca1491565 100644 --- a/packages/cli/e2e/__tests__/cli-parse-error.spec.ts +++ b/packages/cli/e2e/__tests__/cli-parse-error.spec.ts @@ -1,26 +1,46 @@ -import { describe, it, expect } from 'vitest' +import { ExecaError } from 'execa' +import { describe, it, expect, beforeAll, afterAll } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { runCheckly } from '../run-checkly' describe('cli parse error', () => { - it('hints at the skills command on unknown flags', async () => { - const { status, stderr } = await runChecklyCli({ - args: ['checks', 'list', '--does-not-exist'], - env: { CHECKLY_SKIP_AUTH: '1' }, - }) + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({}) + }, 180_000) - expect(status).not.toBe(0) - expect(stderr).toContain('Nonexistent flag: --does-not-exist') - expect(stderr).toContain('checkly skills') + afterAll(async () => { + await fixt?.destroy() }) - it('hints at the skills command on invalid flag values', async () => { - const { status, stderr } = await runChecklyCli({ - args: ['checks', 'list', '--output', 'bogus'], - env: { CHECKLY_SKIP_AUTH: '1' }, - }) + it('hints at the skills command on unknown flags', async () => { + try { + await runCheckly(fixt, ['checks', 'list', '--does-not-exist']) + expect.unreachable('Expected command to fail') + } catch (err) { + if (err instanceof ExecaError) { + expect(err.exitCode).not.toBe(0) + expect(err.stderr).toContain('Nonexistent flag: --does-not-exist') + expect(err.stderr).toContain('checkly skills') + } else { + throw err + } + } + }) - expect(status).not.toBe(0) - expect(stderr).toContain('checkly skills') + it('hints at the skills command on invalid flag values', async () => { + try { + await runCheckly(fixt, ['checks', 'list', '--output', 'bogus']) + expect.unreachable('Expected command to fail') + } catch (err) { + if (err instanceof ExecaError) { + expect(err.exitCode).not.toBe(0) + expect(err.stderr).toContain('checkly skills') + } else { + throw err + } + } }) }) diff --git a/packages/cli/e2e/__tests__/command-not-found.spec.ts b/packages/cli/e2e/__tests__/command-not-found.spec.ts index 8ffab8039..bd13c6142 100644 --- a/packages/cli/e2e/__tests__/command-not-found.spec.ts +++ b/packages/cli/e2e/__tests__/command-not-found.spec.ts @@ -1,17 +1,34 @@ -import { describe, it, expect } from 'vitest' +import { ExecaError } from 'execa' +import { describe, it, expect, beforeAll, afterAll } from 'vitest' -import { runChecklyCli } from '../run-checkly' +import { FixtureSandbox } from '../../src/testing/fixture-sandbox' +import { runCheckly } from '../run-checkly' describe('command-not-found', () => { - it('points users to the docs and skills command for unknown commands', async () => { - const { status, stderr } = await runChecklyCli({ - args: ['does-not-exist'], - }) + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({}) + }, 180_000) - expect(status).toBe(127) - expect(stderr).toContain('does-not-exist is not a checkly command') - expect(stderr).toContain('https://www.checklyhq.com/docs/cli/') - expect(stderr).toContain('checkly skills') - expect(stderr).toContain('checkly help') + afterAll(async () => { + await fixt?.destroy() + }) + + it('points users to the docs and skills command for unknown commands', async () => { + try { + await runCheckly(fixt, ['does-not-exist']) + expect.unreachable('Expected command to fail') + } catch (err) { + if (err instanceof ExecaError) { + expect(err.exitCode).toBe(127) + expect(err.stderr).toContain('does-not-exist is not a checkly command') + expect(err.stderr).toContain('https://www.checklyhq.com/docs/cli/') + expect(err.stderr).toContain('checkly skills') + expect(err.stderr).toContain('checkly help') + } else { + throw err + } + } }) }) From 1f8a28ab151f852668a0ab5fb944b0c4f79b0edd Mon Sep 17 00:00:00 2001 From: Simo Kinnunen Date: Fri, 22 May 2026 02:55:55 +0900 Subject: [PATCH 10/13] fix(cli)!: resolve include patterns relative to Playwright config directory (#1309) * fix(cli)!: resolve include patterns relative to Playwright config directory Include glob patterns in bundlePlayWrightProject were resolved relative to Session.basePath (workspace root) instead of the Playwright config file's directory. This caused patterns like 'fixtures/**' to look in the wrong location when the Playwright config lived in a subdirectory. Co-Authored-By: Claude Opus 4.6 (1M context) * test(cli): add tests for include pattern resolution relative to Playwright config Update getAutoIncludes unit tests for the new globCwd parameter and add coverage for subdirectory scenarios. Add integration test with a fixture where the Playwright config lives in a subdirectory to verify include patterns resolve correctly. Co-Authored-By: Claude Opus 4.6 (1M context) * test(cli): add integration tests for pnpm patches auto-inclusion in bundles Verify that pnpm patch files are auto-included in Playwright check bundles for both the root case and the subdirectory case where the Playwright config lives in a nested directory. Co-Authored-By: Claude Opus 4.6 (1M context) * test(cli): add integration test for absolute paths in include Verify that absolute file paths in the PlaywrightCheck include property are supported. Uses a .check.ts file with import.meta.url to compute the absolute path dynamically at runtime. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): detect explicit include of ignored dirs regardless of path form The skipIf checks for default node_modules and .git ignore patterns only matched patterns starting with the directory name. This missed patterns using parent traversal or absolute paths. Use a helper that checks for the directory name as a path segment anywhere in the pattern. Co-Authored-By: Claude Opus 4.6 (1M context) * fix(cli): normalize include patterns to forward slashes for glob on Windows path.join produces backslash paths on Windows, but glob requires forward slashes. Normalize patterns in findFilesWithPattern before passing them to glob. Co-Authored-By: Claude Opus 4.6 (1M context) --------- Co-authored-by: Claude Opus 4.6 (1M context) --- .../checkly.config.ts | 11 ++ .../fixtures/data.json | 1 + .../package.json | 7 ++ .../playwright.check.ts | 11 ++ .../playwright.config.ts | 6 + .../pnpm-lock.yaml | 52 +++++++++ .../tests/example.spec.ts | 6 + .../checkly.config.ts | 19 ++++ .../test-bundling-pnpm-patches/package.json | 7 ++ .../patches/some-package+1.0.0.patch | 7 ++ .../playwright.config.ts | 6 + .../test-bundling-pnpm-patches/pnpm-lock.yaml | 52 +++++++++ .../tests/example.spec.ts | 6 + .../checkly.config.ts | 20 ++++ .../fixtures/decoy.json | 1 + .../test-bundling-subdir-include/package.json | 7 ++ .../pnpm-lock.yaml | 52 +++++++++ .../subdir/fixtures/data.json | 1 + .../subdir/playwright.config.ts | 6 + .../subdir/tests/example.spec.ts | 6 + .../checkly.config.ts | 19 ++++ .../package.json | 7 ++ .../patches/some-package+1.0.0.patch | 7 ++ .../pnpm-lock.yaml | 52 +++++++++ .../subdir/playwright.config.ts | 6 + .../subdir/tests/example.spec.ts | 6 + .../__tests__/playwright-check.spec.ts | 105 ++++++++++++++++++ .../cli/src/services/__tests__/util.spec.ts | 26 +++-- packages/cli/src/services/util.ts | 38 ++++--- 29 files changed, 525 insertions(+), 25 deletions(-) create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/checkly.config.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/fixtures/data.json create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/package.json create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/playwright.check.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/playwright.config.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/tests/example.spec.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/checkly.config.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/package.json create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/patches/some-package+1.0.0.patch create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/playwright.config.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/tests/example.spec.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/checkly.config.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/fixtures/decoy.json create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/package.json create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/subdir/fixtures/data.json create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/subdir/playwright.config.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/subdir/tests/example.spec.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/checkly.config.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/package.json create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/patches/some-package+1.0.0.patch create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/pnpm-lock.yaml create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/subdir/playwright.config.ts create mode 100644 packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/subdir/tests/example.spec.ts diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/checkly.config.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/checkly.config.ts new file mode 100644 index 000000000..a03f1941e --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/checkly.config.ts @@ -0,0 +1,11 @@ +import { defineConfig } from 'checkly' + +const config = defineConfig({ + projectName: 'Check Fixture', + logicalId: 'check-fixture', + checks: { + checkMatch: '**/*.check.ts', + }, +}) + +export default config diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/fixtures/data.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/fixtures/data.json new file mode 100644 index 000000000..42a102133 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/fixtures/data.json @@ -0,0 +1 @@ +{ "test": true } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/package.json new file mode 100644 index 000000000..b12adbc29 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/package.json @@ -0,0 +1,7 @@ +{ + "name": "playwright-bundle-test", + "version": "1.0.0", + "dependencies": { + "@playwright/test": "^1.55.1" + } +} diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/playwright.check.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/playwright.check.ts new file mode 100644 index 000000000..4c8322e69 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/playwright.check.ts @@ -0,0 +1,11 @@ +import path from 'node:path' +import { fileURLToPath } from 'node:url' +import { PlaywrightCheck } from 'checkly/constructs' + +const __dirname = path.dirname(fileURLToPath(import.meta.url)) + +new PlaywrightCheck('playwright-check-suite', { + name: 'Playwright Check Suite', + playwrightConfigPath: './playwright.config.ts', + include: [path.join(__dirname, 'fixtures', '**')], +}) diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/playwright.config.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/playwright.config.ts new file mode 100644 index 000000000..eed093e29 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/playwright.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from '@playwright/test' + +export default defineConfig({ + testDir: './tests', + timeout: 30000, +}) diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/pnpm-lock.yaml new file mode 100644 index 000000000..9c3c4c244 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/tests/example.spec.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/tests/example.spec.ts new file mode 100644 index 000000000..4cbbbc71e --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-absolute-include/tests/example.spec.ts @@ -0,0 +1,6 @@ +import { test, expect } from '@playwright/test' + +test('basic test', async ({ page }) => { + await page.goto('https://playwright.dev/') + expect(await page.title()).toContain('Playwright') +}) diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/checkly.config.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/checkly.config.ts new file mode 100644 index 000000000..3dede8ef2 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/checkly.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from 'checkly' + +const config = defineConfig({ + projectName: 'Check Fixture', + logicalId: 'check-fixture', + checks: { + checkMatch: '**/*.check.ts', + ignoreDirectoriesMatch: [], + playwrightConfigPath: './playwright.config.ts', + playwrightChecks: [ + { + logicalId: 'playwright-check-suite', + name: 'Playwright Check Suite', + } + ], + }, +}) + +export default config diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/package.json new file mode 100644 index 000000000..b12adbc29 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/package.json @@ -0,0 +1,7 @@ +{ + "name": "playwright-bundle-test", + "version": "1.0.0", + "dependencies": { + "@playwright/test": "^1.55.1" + } +} diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/patches/some-package+1.0.0.patch b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/patches/some-package+1.0.0.patch new file mode 100644 index 000000000..a49a934ce --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/patches/some-package+1.0.0.patch @@ -0,0 +1,7 @@ +diff --git a/index.js b/index.js +index 1234567..abcdefg 100644 +--- a/index.js ++++ b/index.js +@@ -1 +1 @@ +-module.exports = 'original' ++module.exports = 'patched' diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/playwright.config.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/playwright.config.ts new file mode 100644 index 000000000..eed093e29 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/playwright.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from '@playwright/test' + +export default defineConfig({ + testDir: './tests', + timeout: 30000, +}) diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/pnpm-lock.yaml new file mode 100644 index 000000000..9c3c4c244 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/tests/example.spec.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/tests/example.spec.ts new file mode 100644 index 000000000..4cbbbc71e --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-pnpm-patches/tests/example.spec.ts @@ -0,0 +1,6 @@ +import { test, expect } from '@playwright/test' + +test('basic test', async ({ page }) => { + await page.goto('https://playwright.dev/') + expect(await page.title()).toContain('Playwright') +}) diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/checkly.config.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/checkly.config.ts new file mode 100644 index 000000000..2b62c2c14 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/checkly.config.ts @@ -0,0 +1,20 @@ +import { defineConfig } from 'checkly' + +const config = defineConfig({ + projectName: 'Check Fixture', + logicalId: 'check-fixture', + checks: { + checkMatch: '**/*.check.ts', + ignoreDirectoriesMatch: [], + include: ['fixtures/**'], + playwrightConfigPath: './subdir/playwright.config.ts', + playwrightChecks: [ + { + logicalId: 'playwright-check-suite', + name: 'Playwright Check Suite', + } + ], + }, +}) + +export default config diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/fixtures/decoy.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/fixtures/decoy.json new file mode 100644 index 000000000..ac736ea5c --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/fixtures/decoy.json @@ -0,0 +1 @@ +{ "decoy": true } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/package.json new file mode 100644 index 000000000..b12adbc29 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/package.json @@ -0,0 +1,7 @@ +{ + "name": "playwright-bundle-test", + "version": "1.0.0", + "dependencies": { + "@playwright/test": "^1.55.1" + } +} diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/pnpm-lock.yaml new file mode 100644 index 000000000..9c3c4c244 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/subdir/fixtures/data.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/subdir/fixtures/data.json new file mode 100644 index 000000000..42a102133 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/subdir/fixtures/data.json @@ -0,0 +1 @@ +{ "test": true } diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/subdir/playwright.config.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/subdir/playwright.config.ts new file mode 100644 index 000000000..eed093e29 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/subdir/playwright.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from '@playwright/test' + +export default defineConfig({ + testDir: './tests', + timeout: 30000, +}) diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/subdir/tests/example.spec.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/subdir/tests/example.spec.ts new file mode 100644 index 000000000..4cbbbc71e --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-include/subdir/tests/example.spec.ts @@ -0,0 +1,6 @@ +import { test, expect } from '@playwright/test' + +test('basic test', async ({ page }) => { + await page.goto('https://playwright.dev/') + expect(await page.title()).toContain('Playwright') +}) diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/checkly.config.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/checkly.config.ts new file mode 100644 index 000000000..a3c679930 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/checkly.config.ts @@ -0,0 +1,19 @@ +import { defineConfig } from 'checkly' + +const config = defineConfig({ + projectName: 'Check Fixture', + logicalId: 'check-fixture', + checks: { + checkMatch: '**/*.check.ts', + ignoreDirectoriesMatch: [], + playwrightConfigPath: './subdir/playwright.config.ts', + playwrightChecks: [ + { + logicalId: 'playwright-check-suite', + name: 'Playwright Check Suite', + } + ], + }, +}) + +export default config diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/package.json b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/package.json new file mode 100644 index 000000000..b12adbc29 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/package.json @@ -0,0 +1,7 @@ +{ + "name": "playwright-bundle-test", + "version": "1.0.0", + "dependencies": { + "@playwright/test": "^1.55.1" + } +} diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/patches/some-package+1.0.0.patch b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/patches/some-package+1.0.0.patch new file mode 100644 index 000000000..a49a934ce --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/patches/some-package+1.0.0.patch @@ -0,0 +1,7 @@ +diff --git a/index.js b/index.js +index 1234567..abcdefg 100644 +--- a/index.js ++++ b/index.js +@@ -1 +1 @@ +-module.exports = 'original' ++module.exports = 'patched' diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/pnpm-lock.yaml b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/pnpm-lock.yaml new file mode 100644 index 000000000..9c3c4c244 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/pnpm-lock.yaml @@ -0,0 +1,52 @@ +lockfileVersion: '9.0' + +settings: + autoInstallPeers: true + excludeLinksFromLockfile: false + +importers: + + .: + dependencies: + '@playwright/test': + specifier: ^1.55.1 + version: 1.59.1 + +packages: + + '@playwright/test@1.59.1': + resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + engines: {node: '>=18'} + hasBin: true + + fsevents@2.3.2: + resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + + playwright-core@1.59.1: + resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + engines: {node: '>=18'} + hasBin: true + + playwright@1.59.1: + resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + engines: {node: '>=18'} + hasBin: true + +snapshots: + + '@playwright/test@1.59.1': + dependencies: + playwright: 1.59.1 + + fsevents@2.3.2: + optional: true + + playwright-core@1.59.1: {} + + playwright@1.59.1: + dependencies: + playwright-core: 1.59.1 + optionalDependencies: + fsevents: 2.3.2 diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/subdir/playwright.config.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/subdir/playwright.config.ts new file mode 100644 index 000000000..eed093e29 --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/subdir/playwright.config.ts @@ -0,0 +1,6 @@ +import { defineConfig } from '@playwright/test' + +export default defineConfig({ + testDir: './tests', + timeout: 30000, +}) diff --git a/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/subdir/tests/example.spec.ts b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/subdir/tests/example.spec.ts new file mode 100644 index 000000000..4cbbbc71e --- /dev/null +++ b/packages/cli/src/constructs/__tests__/fixtures/playwright-check/test-cases/test-bundling-subdir-pnpm-patches/subdir/tests/example.spec.ts @@ -0,0 +1,6 @@ +import { test, expect } from '@playwright/test' + +test('basic test', async ({ page }) => { + await page.goto('https://playwright.dev/') + expect(await page.title()).toContain('Playwright') +}) diff --git a/packages/cli/src/constructs/__tests__/playwright-check.spec.ts b/packages/cli/src/constructs/__tests__/playwright-check.spec.ts index adc112f3f..5e3b51ab7 100644 --- a/packages/cli/src/constructs/__tests__/playwright-check.spec.ts +++ b/packages/cli/src/constructs/__tests__/playwright-check.spec.ts @@ -989,4 +989,109 @@ describe('PlaywrightCheck', () => { ]) }, DEFAULT_TEST_TIMEOUT) }) + + describe('bundling with subdirectory playwright config', () => { + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({ + source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-bundling-subdir-include'), + }) + }, DEFAULT_TEST_TIMEOUT) + + afterAll(async () => { + await fixt?.destroy() + }) + + it('should resolve include patterns relative to the playwright config directory', async () => { + const output = await parseProject(fixt) + + const { + codeBundlePath, + } = output.payload.resources[0].payload as any + + const files = await listTarFiles(codeBundlePath) + + expect(files).toContain('subdir/fixtures/data.json') + expect(files).not.toContain('fixtures/decoy.json') + }, DEFAULT_TEST_TIMEOUT) + }) + + describe('bundling with pnpm patches auto-include', () => { + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({ + source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-bundling-pnpm-patches'), + }) + }, DEFAULT_TEST_TIMEOUT) + + afterAll(async () => { + await fixt?.destroy() + }) + + it('should auto-include patches directory for pnpm projects', async () => { + const output = await parseProject(fixt) + + const { + codeBundlePath, + } = output.payload.resources[0].payload as any + + const files = await listTarFiles(codeBundlePath) + + expect(files).toContain('patches/some-package+1.0.0.patch') + }, DEFAULT_TEST_TIMEOUT) + }) + + describe('bundling with pnpm patches auto-include and subdirectory playwright config', () => { + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({ + source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-bundling-subdir-pnpm-patches'), + }) + }, DEFAULT_TEST_TIMEOUT) + + afterAll(async () => { + await fixt?.destroy() + }) + + it('should auto-include patches from project root when playwright config is in a subdirectory', async () => { + const output = await parseProject(fixt) + + const { + codeBundlePath, + } = output.payload.resources[0].payload as any + + const files = await listTarFiles(codeBundlePath) + + expect(files).toContain('patches/some-package+1.0.0.patch') + }, DEFAULT_TEST_TIMEOUT) + }) + + describe('bundling with absolute include path', () => { + let fixt: FixtureSandbox + + beforeAll(async () => { + fixt = await FixtureSandbox.create({ + source: path.join(__dirname, 'fixtures', 'playwright-check', 'test-cases', 'test-bundling-absolute-include'), + }) + }, DEFAULT_TEST_TIMEOUT) + + afterAll(async () => { + await fixt?.destroy() + }) + + it('should include files specified via absolute path in include', async () => { + const output = await parseProject(fixt) + + const { + codeBundlePath, + } = output.payload.resources[0].payload as any + + const files = await listTarFiles(codeBundlePath) + + expect(files).toContain('fixtures/data.json') + }, DEFAULT_TEST_TIMEOUT) + }) }) diff --git a/packages/cli/src/services/__tests__/util.spec.ts b/packages/cli/src/services/__tests__/util.spec.ts index 5068efc35..bc964a4a5 100644 --- a/packages/cli/src/services/__tests__/util.spec.ts +++ b/packages/cli/src/services/__tests__/util.spec.ts @@ -44,37 +44,49 @@ describe('util', () => { }) it('should return patches/*.patch for pnpm', () => { - const result = getAutoIncludes(basePath, makePm('pnpm'), []) + const result = getAutoIncludes(basePath, basePath, makePm('pnpm'), []) expect(result).toEqual(['patches/*.patch']) }) it('should return empty for npm', () => { - const result = getAutoIncludes(basePath, makePm('npm'), []) + const result = getAutoIncludes(basePath, basePath, makePm('npm'), []) expect(result).toEqual([]) }) it('should return empty for yarn', () => { - const result = getAutoIncludes(basePath, makePm('yarn'), []) + const result = getAutoIncludes(basePath, basePath, makePm('yarn'), []) expect(result).toEqual([]) }) it('should skip when user already includes patches/*.patch', () => { - const result = getAutoIncludes(basePath, makePm('pnpm'), ['patches/*.patch']) + const result = getAutoIncludes(basePath, basePath, makePm('pnpm'), ['patches/*.patch']) expect(result).toEqual([]) }) it('should skip when user already includes a patches/ subpath', () => { - const result = getAutoIncludes(basePath, makePm('pnpm'), ['patches/some-patch.patch']) + const result = getAutoIncludes(basePath, basePath, makePm('pnpm'), ['patches/some-patch.patch']) expect(result).toEqual([]) }) it('should skip when user includes ./patches/**', () => { - const result = getAutoIncludes(basePath, makePm('pnpm'), ['./patches/**']) + const result = getAutoIncludes(basePath, basePath, makePm('pnpm'), ['./patches/**']) expect(result).toEqual([]) }) it('should skip when user includes absolute patches path', () => { - const result = getAutoIncludes(basePath, makePm('pnpm'), [path.join(basePath, 'patches/**')]) + const result = getAutoIncludes(basePath, basePath, makePm('pnpm'), [path.join(basePath, 'patches/**')]) + expect(result).toEqual([]) + }) + + it('should return relative pattern when globCwd is a subdirectory', () => { + const globCwd = path.resolve('/project/packages/app') + const result = getAutoIncludes(basePath, globCwd, makePm('pnpm'), []) + expect(result).toEqual(['../../patches/*.patch']) + }) + + it('should detect alreadyIncluded when patterns are relative to globCwd', () => { + const globCwd = path.resolve('/project/packages/app') + const result = getAutoIncludes(basePath, globCwd, makePm('pnpm'), ['../../patches/foo.patch']) expect(result).toEqual([]) }) }) diff --git a/packages/cli/src/services/util.ts b/packages/cli/src/services/util.ts index 916ee403d..8b1e0509f 100644 --- a/packages/cli/src/services/util.ts +++ b/packages/cli/src/services/util.ts @@ -146,16 +146,17 @@ export function normalizeVersion (v?: string | undefined): string | undefined { export function getAutoIncludes ( basePath: string, + globCwd: string, packageManager: PackageManager, existingIncludes: string[], ): string[] { const autoIncludes: string[] = [] if (packageManager.name === 'pnpm') { - const patchesPattern = 'patches/*.patch' const patchesDir = path.join(basePath, 'patches') - const alreadyIncluded = existingIncludes.some(p => path.resolve(basePath, p).startsWith(patchesDir)) + const alreadyIncluded = existingIncludes.some(p => path.resolve(globCwd, p).startsWith(patchesDir)) if (!alreadyIncluded) { + const patchesPattern = pathToPosix(path.join(path.relative(globCwd, basePath), 'patches', '*.patch')) autoIncludes.push(patchesPattern) } } @@ -189,22 +190,20 @@ export async function bundlePlayWrightProject ( throw new Error(`Error loading playwright project files: ${errors.map((e: string) => e).join(', ')}`) } + function includeTargets (dirName: string): boolean { + return include.some(value => { + return value.startsWith(`${dirName}/`) || value.includes(`/${dirName}/`) + }) + } + const defaultIgnores = [ { pattern: '**/node_modules/**', - skipIf: () => { - return include.some(value => { - return value.startsWith('node_modules/') - }) - }, + skipIf: () => includeTargets('node_modules'), }, { - pattern: '.git/**', - skipIf: () => { - return include.some(value => { - return value.startsWith('.git/') - }) - }, + pattern: '**/.git/**', + skipIf: () => includeTargets('.git'), }, ] @@ -215,12 +214,11 @@ export async function bundlePlayWrightProject ( } } - const autoIncludes = getAutoIncludes(Session.basePath!, Session.packageManager, include) + const autoIncludes = getAutoIncludes(Session.basePath!, dir, Session.packageManager, include) const effectiveIncludes = [...include, ...autoIncludes] const includedFiles = await findFilesWithPattern( - // FIXME: Shouldn't the pattern be relative to the Playwright check? - Session.basePath!, + dir, effectiveIncludes, ignoredFiles, ) @@ -284,8 +282,12 @@ export async function findFilesWithPattern ( pattern: string | string[], ignorePattern: string[], ): Promise { - // The files are sorted to make sure that the processing order is deterministic. - const files = await glob(pattern, { + // Not using pathToPosix here because it strips the drive letter (e.g. C:) that glob + // needs to resolve absolute patterns on Windows. + const posixPattern = Array.isArray(pattern) + ? pattern.map(p => p.replaceAll('\\', '/')) + : pattern.replaceAll('\\', '/') + const files = await glob(posixPattern, { nodir: true, cwd: directory, ignore: ignorePattern, From 5775fa2071b1b407ee7023300f3a5a53e93d7cc3 Mon Sep 17 00:00:00 2001 From: Simo Kinnunen Date: Fri, 22 May 2026 17:08:02 +0900 Subject: [PATCH 11/13] docs: add CLAUDE.md and custom commands for adding constructs (#1312) * docs: add CLAUDE.md for Claude Code onboarding Co-Authored-By: Claude Opus 4.6 (1M context) * docs: add /new-monitor and /new-alert-channel custom commands Step-by-step checklists for adding new construct types, covering all files that need changes (core construct, codegen, registry, reporters, tests, examples). Co-Authored-By: Claude Opus 4.6 (1M context) --------- Co-authored-by: Claude Opus 4.6 (1M context) --- .claude/commands/new-alert-channel.md | 65 +++++++++++++++ .claude/commands/new-monitor.md | 88 +++++++++++++++++++ .gitignore | 1 - CLAUDE.md | 116 ++++++++++++++++++++++++++ 4 files changed, 269 insertions(+), 1 deletion(-) create mode 100644 .claude/commands/new-alert-channel.md create mode 100644 .claude/commands/new-monitor.md create mode 100644 CLAUDE.md diff --git a/.claude/commands/new-alert-channel.md b/.claude/commands/new-alert-channel.md new file mode 100644 index 000000000..64bcc1c88 --- /dev/null +++ b/.claude/commands/new-alert-channel.md @@ -0,0 +1,65 @@ +# Add a New Alert Channel Construct + +**Input:** $ARGUMENTS + +Interpret the arguments as a description of the new alert channel: its name, what service it integrates with, and its configuration properties. If arguments are missing or unclear, ask before proceeding. + +There are two alert channel families: + +- **Webhook-based** (e.g., Telegram, Incident.io, MS Teams) — extends `WebhookAlertChannel`, routes through `webhook-alert-channel-codegen.ts`. Use **TelegramAlertChannel** as reference. +- **Standalone** (e.g., Slack, Opsgenie, PagerDuty) — extends `AlertChannel` directly, routes through `alert-channel-codegen.ts`. Use **SlackAlertChannel** as reference. + +Determine which family applies based on the integration. If unsure, ask. + +All paths below are relative to `packages/cli/`. + +## Phase 1: Core Construct File (new file) + +- [ ] `src/constructs/{name}-alert-channel.ts` + - **Webhook-based**: Class extending `WebhookAlertChannel`. Define `{Name}AlertChannelProps` extending `AlertChannelProps`. In the constructor, call `super(logicalId, props)` (add `// @ts-ignore` above the call — the props type mismatch with `WebhookAlertChannelProps` is expected), then set `this.webhookType = 'WEBHOOK_{UPPER_NAME}'`, `this.method`, `this.url`, and `this.template`. Implement `describe()` and `synthesize()` (synthesize returns `type: 'WEBHOOK'` with a `config` object containing `name`, `webhookType`, `url`, `template`, `method`, `headers`, `queryParameters`, `webhookSecret`). + - **Standalone**: Class extending `AlertChannel`. Define `{Name}AlertChannelProps` extending `AlertChannelProps`. In the constructor, call `super(logicalId, props)` and `Session.registerConstruct(this)`. Implement `describe()` and `synthesize()` (synthesize returns a unique `type` string and a `config` object with channel-specific properties). + +## Phase 2: Code Generation File (new file) + +- [ ] `src/constructs/{name}-alert-channel-codegen.ts` + - Class `{Name}AlertChannelCodegen` extending `Codegen<{Name}AlertChannelResource>`. + - Define `{Name}AlertChannelResource` interface extending the appropriate parent (`WebhookAlertChannelResource` or `AlertChannelResource`). + - Implement `describe()`, `prepare()`, and `gencode()`. For **webhook-based** channels, also implement `validateSafety()` to reject unexpected values for method, headers, queryParameters, and webhookSecret (standalone channels do not need this). + - `prepare()`: resolve file path via `context.filePath()`, register with `context.registerAlertChannel()`. + - `gencode()`: look up alert channel, add imports, emit `new {Name}AlertChannel(...)` expression using `file.section(decl(...))` pattern. Call `buildAlertChannelProps()` from `./alert-channel-codegen.js`. + +## Phase 3: Registry (modify existing files) + +- [ ] `src/constructs/index.ts` — Add export: `export * from './{name}-alert-channel.js'` + +- [ ] **Webhook-based** — `src/constructs/webhook-alert-channel-codegen.ts`: + 1. Add `'WEBHOOK_{UPPER_NAME}'` to `WebhookType` union + 2. Import `{Name}AlertChannelCodegen` + 3. Add property and initialize in constructor + 4. Add entry to `codegensByWebhookType` map + +- [ ] **Standalone** — `src/constructs/alert-channel-codegen.ts`: + 1. Add `'{UPPER_NAME}'` to `AlertChannelType` union + 2. Import `{Name}AlertChannelCodegen` + 3. Add property and initialize in constructor + 4. Add entry to `codegensByType` map + +## Phase 4: Tests (new file) + +- [ ] `src/constructs/__tests__/{name}-alert-channel.spec.ts` — Unit tests covering: construct instantiation, `synthesize()` output structure, property mapping, and `describe()`. Follow existing alert channel tests as template. + +## Phase 5: Build and Verify + +- [ ] `pnpm --filter checkly run prepare` — Rebuild. +- [ ] `pnpm --filter checkly test` — Run unit tests. +- [ ] `pnpm lint:fix` — Fix formatting (run from repo root). + +## Naming Conventions + +| Concept | Pattern | Example (Telegram) | +|---------|---------|-------------------| +| File name | `{name}-alert-channel.ts` | `telegram-alert-channel.ts` | +| Class name | `{Name}AlertChannel` | `TelegramAlertChannel` | +| Props interface | `{Name}AlertChannelProps` | `TelegramAlertChannelProps` | +| Webhook type | `WEBHOOK_{UPPER_NAME}` | `WEBHOOK_TELEGRAM` | +| Codegen class | `{Name}AlertChannelCodegen` | `TelegramAlertChannelCodegen` | diff --git a/.claude/commands/new-monitor.md b/.claude/commands/new-monitor.md new file mode 100644 index 000000000..4d6686114 --- /dev/null +++ b/.claude/commands/new-monitor.md @@ -0,0 +1,88 @@ +# Add a New Monitor Construct + +**Input:** $ARGUMENTS + +Interpret the arguments as a description of the new monitor: its name, what it monitors, its custom properties, and its assertion sources. If arguments are missing or unclear, ask before proceeding. + +Use an existing monitor as your reference implementation. For monitors with assertions and requests (the common case), use **IcmpMonitor** or **DnsMonitor**. For simpler constructs without assertions, use **HeartbeatMonitor**. + +All paths below are relative to `packages/cli/` unless noted otherwise. + +## Phase 1: Core Construct Files (new files) + +Create these three files (skip assertion + request if the construct has no assertions): + +- [ ] `src/constructs/{name}-monitor.ts` — Class extending `Monitor` (from `./monitor.js`). Define `{Name}MonitorProps` extending `MonitorProps`. Implement `constructor`, `describe()`, `validate()`, `synthesize()`. The constructor must call `Session.registerConstruct(this)`, `this.addSubscriptions()`, and `this.addPrivateLocationCheckAssignments()`. `synthesize()` must include `checkType: '{UPPER_NAME}'` and spread `super.synthesize()`. + +- [ ] `src/constructs/{name}-assertion.ts` — Define `{Name}AssertionSource` union type, `{Name}Assertion` type alias using `CoreAssertion`, and `{Name}AssertionBuilder` class with static methods per assertion source. Use `NumericAssertionBuilder` for numeric sources (e.g., latency) and `GeneralAssertionBuilder` for text/JSON sources. Import builders from `./internal/assertion.js`. + +- [ ] `src/constructs/{name}-request.ts` — Define `{Name}Request` interface with request configuration properties. Include an `assertions?: Array<{Name}Assertion>` field if assertions are supported. + +## Phase 2: Code Generation Files (new files) + +- [ ] `src/constructs/{name}-monitor-codegen.ts` — Class `{Name}MonitorCodegen` extending `Codegen<{Name}MonitorResource>`. Define `{Name}MonitorResource` extending `MonitorResource` with `checkType: '{UPPER_NAME}'`. Implement `describe()` and `gencode()`. Follow the exact pattern in `IcmpMonitorCodegen.gencode()`: resolve output path via `context.filePath()`, get file handle via `this.program.generatedConstructFile()`, add imports with `file.namedImport()`, emit the `new {Name}Monitor(...)` expression via `file.section()`, and call `buildMonitorProps()` from `./monitor-codegen.js`. + +- [ ] `src/constructs/{name}-assertion-codegen.ts` — Export `valueFor{Name}Assertion()` function. Switch on `assertion.source`, delegate to `valueForNumericAssertion` or `valueForGeneralAssertion` from `./internal/assertion-codegen.js`. + +- [ ] `src/constructs/{name}-request-codegen.ts` — Export `valueFor{Name}Request()` function. Build an object value with request fields, calling `valueFor{Name}Assertion()` for each assertion. + +## Phase 3: Central Registry (modify existing files) + +- [ ] `src/constructs/index.ts` — Add three export lines: + ``` + export * from './{name}-monitor.js' + export * from './{name}-assertion.js' + export * from './{name}-request.js' + ``` + +- [ ] `src/constructs/check-codegen.ts` — (1) Import `{Name}MonitorCodegen` and `{Name}MonitorResource`. (2) Add property `{name}MonitorCodegen: {Name}MonitorCodegen` to `CheckCodegen`. (3) Initialize in constructor. (4) Add `case '{UPPER_NAME}':` in both the `describe()` and `gencode()` switch statements. + +- [ ] `src/constants.ts` — Add `{UPPER_NAME}: '{UPPER_NAME}'` to the `CheckTypes` object. + +## Phase 4: Reporter and Formatter Integration (modify existing files) + +- [ ] `src/reporters/util.ts` — Add `if (checkResult.checkType === '{UPPER_NAME}')` block in `formatCheckResult()`. Define `format{Name}Request()` and `format{Name}Response()` functions, and add subsections for request errors, connection errors, and assertions as appropriate. Follow the ICMP or DNS block as a template. + +- [ ] `src/formatters/batch-stats.ts` — Add detection logic for the new check type in `buildColumns()` and add metric-specific columns if the construct has unique metrics (not standard response time). + +- [ ] `src/rest/analytics.ts` — Add entry to `checkTypeToPath` map and `defaultMetrics` map. + +## Phase 5: AI Context (new file + modify existing) + +- [ ] `src/ai-context/references/configure-{name}-monitors.md` — New markdown reference. Follow the pattern of `configure-icmp-monitors.md`. + +- [ ] `src/ai-context/context.ts` — Add entry to `REFERENCES` array and add an `{UPPER_NAME}_MONITOR` entry to `EXAMPLE_CONFIGS`. + +## Phase 6: Tests (new files + modify existing) + +- [ ] `src/constructs/__tests__/{name}-monitor.spec.ts` — Unit tests covering: default synthesis, group assignment, request properties, validation, assertion builder methods. Follow `icmp-monitor.spec.ts` as template. + +- [ ] `e2e/__tests__/fixtures/deploy-project/{name}.check.ts` — Minimal construct instantiation with `activated: false`. + +- [ ] `e2e/__tests__/deploy.spec.ts` — Add the new construct's logical ID to expected `Create:` output in deploy test assertions. + +## Phase 7: Examples (new files, paths relative to repo root) + +- [ ] `examples/advanced-project/src/__checks__/uptime/{name}.check.ts` — TypeScript example with group, assertions, and doc link comments. + +- [ ] `examples/advanced-project-js/src/__checks__/uptime/{name}.check.js` — JavaScript equivalent. + +## Phase 8: Build and Verify + +- [ ] `pnpm --filter checkly run prepare` — Rebuild (compiles TS + regenerates AI context). +- [ ] `pnpm --filter checkly test` — Run unit tests. +- [ ] `pnpm run sync:skills` — Sync AI context to published skills (from repo root). +- [ ] `pnpm lint:fix` — Fix formatting (run from repo root). + +## Naming Conventions + +| Concept | Pattern | Example (ICMP) | +|---------|---------|----------------| +| File names | `{name}-monitor.ts` | `icmp-monitor.ts` | +| Class name | `{Name}Monitor` | `IcmpMonitor` | +| Props interface | `{Name}MonitorProps` | `IcmpMonitorProps` | +| Check type constant | `{UPPER_NAME}` | `ICMP` | +| Assertion builder | `{Name}AssertionBuilder` | `IcmpAssertionBuilder` | +| Request interface | `{Name}Request` | `IcmpRequest` | +| Codegen class | `{Name}MonitorCodegen` | `IcmpMonitorCodegen` | +| AI context reference | `configure-{name}-monitors.md` | `configure-icmp-monitors.md` | diff --git a/.gitignore b/.gitignore index ecb96c4bc..63b3f2899 100644 --- a/.gitignore +++ b/.gitignore @@ -19,4 +19,3 @@ local **/checkly-github-report.md **/checkly-summary.md **/e2e/__tests__/fixtures/empty-project/e2e-test-project-* -CLAUDE.md diff --git a/CLAUDE.md b/CLAUDE.md new file mode 100644 index 000000000..a2648fc85 --- /dev/null +++ b/CLAUDE.md @@ -0,0 +1,116 @@ +# CLAUDE.md + +This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository. + +## Build and Development + +This is a **pnpm monorepo** with two packages: `packages/cli` (the main `checkly` CLI) and `packages/create-cli` (the `create-checkly` scaffolding tool). Both are ESM-only TypeScript. + +```bash +# Install dependencies +pnpm install + +# Build everything (clean + compile + AI context) +pnpm --filter checkly run prepare +pnpm --filter create-checkly run prepare + +# Watch mode for CLI development +pnpm --filter checkly run watch +``` + +## Testing + +Unit tests use **Vitest**. The CLI package requires `pnpm pack` before running tests (the test script handles this) because the test sandbox installs the CLI from a tarball. + +```bash +# Run all unit tests (both packages) +pnpm test + +# Run a single test file (pnpm pack must have run first; `pnpm --filter checkly test` does this) +pnpm --filter checkly exec vitest --run src/services/check-parser/__tests__/parser.spec.ts + +# Run tests matching a pattern +pnpm --filter checkly exec vitest --run -t "pattern" + +# E2E tests (require CHECKLY_ACCOUNT_ID and CHECKLY_API_KEY) +pnpm --filter checkly run test:e2e + +# E2E against local backend (localhost:3000) +pnpm --filter checkly run test:e2e:local +``` + +Unit tests live alongside source in `src/**/*.spec.ts`. E2E tests are in `e2e/__tests__/**/*.spec.ts` with a 15-second timeout. + +**Test sandbox**: Tests that exercise CLI behavior use `FixtureSandbox` (from `src/testing/fixture-sandbox.ts`), which creates isolated temp directories with `checkly` installed from the packed tarball. Templates (`bare`, `playwright`, etc.) are pre-built in `global-setup.ts` and reused across tests. + +## Linting + +```bash +pnpm lint # check +pnpm lint:fix # auto-fix +``` + +Key ESLint rules enforced by `@stylistic` recommended + custom config: +- **No semicolons** (stylistic recommended default) +- **Space before function parens**: `function ()`, `method ()`, `async ()` — not `function()` +- **Arrow parens as-needed**: `x => x + 1` not `(x) => x + 1` +- No enums (use union types), no `console` outside commands/reporters +- Max 120 char lines, `require-await`, 1TBS brace style, always-multiline trailing commas, `object-shorthand: always` +- Operator line-breaks go before the operator (except `=`, `+=`) + +## Commits + +Conventional commits enforced by commitlint (max 100 char header). Pre-commit hook runs lint-staged on `*.{ts,js,mjs}` files. + +## Architecture + +### Constructs (the resource model) + +The core abstraction is the `Construct` base class (`src/constructs/construct.ts`). Every Checkly resource (check, alert channel, dashboard, etc.) extends `Construct` and implements: +- `validate(diagnostics)` — reports configuration errors +- `bundle(bundler)` — prepares for deployment (e.g., packaging scripts into tarballs) +- `synthesize()` — produces the API-ready payload + +`Project` (`src/constructs/project.ts`) is the root construct. It holds a typed map (`ProjectData`) of all resources keyed by type and logical ID. + +`Session` is a static class on `Project` that carries global context during check file loading: the current project, available runtimes, check defaults, file loaders, and the path of the currently-loading check file. + +To add a new construct, use `/new-monitor` or `/new-alert-channel` for step-by-step checklists. + +### Check discovery and loading + +`project-parser.ts` orchestrates discovery: it resolves glob patterns from `checkly.config.ts` (`checkMatch`, `browserCheckMatch`, `multiStepCheckMatch`), dynamically imports each matching file, and the constructs self-register with the `Session`/`Project` during import. File loading uses a pluggable `FileLoader` system (`src/loader/`): `NativeFileLoader` (Node's native TS support), `JitiFileLoader` (jiti), or `MixedFileLoader` (tries both in sequence). + +### Check bundling and parsing + +`src/services/check-parser/` handles dependency analysis and packaging: +- `parser.ts` — uses Acorn/TypeScript ESTree to extract imports and resolve npm dependencies +- `bundler.ts` — creates tar.gz archives of check code + dependencies, uploads to Checkly storage +- `playwright-config-expander.ts` — parses Playwright configs to extract test projects and patterns + +### Command framework + +Built on **oclif**. Commands live in `src/commands/`. `BaseCommand` provides engine-check and version headers. `AuthCommand` extends it for authenticated operations. Commands declare static metadata: `coreCommand`, `readOnly`, `destructive`, `idempotent`. + +### Deploy flow + +`deploy.ts` → load config → parse project (discover + instantiate) → bundle all constructs → validate → diff against remote state → create/update/delete resources via REST API. + +### Test/trigger flow + +`test.ts` → parse + bundle → `TestRunner.scheduleChecks()` → API creates a test session → results stream back over MQTT → reporters format output (`list`, `dot`, `ci`, `github`, `json`). + +### REST client + +Axios-based, in `src/rest/`. One API class per resource type. Request interceptor adds auth headers and CLI metadata. Base URL determined by `CHECKLY_API_URL` or `CHECKLY_ENV` (production/staging/local). + +### AI context pipeline + +Source in `src/ai-context/`, built during `prepare`. Generates examples from fixtures, produces public skills in `dist/ai-context/public-skills/`. The published copy at `skills/checkly/SKILL.md` must stay in sync — CI checks this. After modifying AI context sources, run the full prepare step, then `pnpm run sync:skills` from the repo root. + +## Key Environment Variables + +- `CHECKLY_ACCOUNT_ID`, `CHECKLY_API_KEY` — authentication +- `CHECKLY_ENV` — target environment (`production`, `staging`, `development`, `local`) +- `CHECKLY_API_URL` — override API base URL (used when `CHECKLY_ENV=local`) +- `CHECKLY_CLI_VERSION` — override reported CLI version (useful for testing `create-checkly`) From 3346ba4ffb1b574f6e2dc39ea07f8448afbc97c0 Mon Sep 17 00:00:00 2001 From: Simo Kinnunen Date: Fri, 22 May 2026 17:31:15 +0900 Subject: [PATCH 12/13] fix(cli): remove extra blank line before "Running N checks" output (#1313) actionSuccess() already emits a trailing blank line after each progress step. The reporters' onBegin duplicated this with beforeLnCount=1, producing two blank lines instead of one. Co-authored-by: Claude Opus 4.6 (1M context) --- packages/cli/src/reporters/ci.ts | 2 +- packages/cli/src/reporters/dot.ts | 2 +- packages/cli/src/reporters/github.ts | 2 +- packages/cli/src/reporters/json.ts | 2 +- packages/cli/src/reporters/list.ts | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/cli/src/reporters/ci.ts b/packages/cli/src/reporters/ci.ts index 68f6f88e8..b52add2c2 100644 --- a/packages/cli/src/reporters/ci.ts +++ b/packages/cli/src/reporters/ci.ts @@ -8,7 +8,7 @@ import { TestResultsShortLinks } from '../rest/test-sessions.js' export default class CiReporter extends AbstractListReporter { onBegin (checks: Array<{ check: any, sequenceId: SequenceId }>, testSessionId?: string) { super.onBegin(checks, testSessionId) - printLn(`Running ${this.numChecks} checks in ${this._runLocationString()}:`, 2, 1) + printLn(`Running ${this.numChecks} checks in ${this._runLocationString()}:`, 2) this._printSummary({ skipCheckCount: true }) } diff --git a/packages/cli/src/reporters/dot.ts b/packages/cli/src/reporters/dot.ts index 3f66a0e22..a6c6ecec5 100644 --- a/packages/cli/src/reporters/dot.ts +++ b/packages/cli/src/reporters/dot.ts @@ -6,7 +6,7 @@ import { print, printLn } from './util.js' export default class DotReporter extends AbstractListReporter { onBegin (checks: Array<{ check: any, sequenceId: SequenceId }>, testSessionId?: string) { super.onBegin(checks, testSessionId) - printLn(`Running ${this.numChecks} checks in ${this._runLocationString()}.`, 2, 1) + printLn(`Running ${this.numChecks} checks in ${this._runLocationString()}.`, 2) } onEnd () { diff --git a/packages/cli/src/reporters/github.ts b/packages/cli/src/reporters/github.ts index 021468028..63b1fb439 100644 --- a/packages/cli/src/reporters/github.ts +++ b/packages/cli/src/reporters/github.ts @@ -95,7 +95,7 @@ export class GithubMdBuilder { export default class GithubReporter extends AbstractListReporter { onBegin (checks: Array<{ check: any, sequenceId: SequenceId }>, testSessionId?: string) { super.onBegin(checks, testSessionId) - printLn(`Running ${this.numChecks} checks in ${this._runLocationString()}.`, 2, 1) + printLn(`Running ${this.numChecks} checks in ${this._runLocationString()}.`, 2) } onEnd () { diff --git a/packages/cli/src/reporters/json.ts b/packages/cli/src/reporters/json.ts index 396208a42..b448f4c0b 100644 --- a/packages/cli/src/reporters/json.ts +++ b/packages/cli/src/reporters/json.ts @@ -72,7 +72,7 @@ export class JsonBuilder { export default class JsonReporter extends AbstractListReporter { onBegin (checks: Array<{ check: any, checkRunId: CheckRunId, sequenceId: SequenceId }>, testSessionId?: string) { super.onBegin(checks, testSessionId) - printLn(`Running ${this.numChecks} checks in ${this._runLocationString()}.`, 2, 1) + printLn(`Running ${this.numChecks} checks in ${this._runLocationString()}.`, 2) } onEnd () { diff --git a/packages/cli/src/reporters/list.ts b/packages/cli/src/reporters/list.ts index 80f934203..7a785b9d3 100644 --- a/packages/cli/src/reporters/list.ts +++ b/packages/cli/src/reporters/list.ts @@ -9,7 +9,7 @@ import { TestResultsShortLinks } from '../rest/test-sessions.js' export default class ListReporter extends AbstractListReporter { onBegin (checks: Array<{ check: any, sequenceId: SequenceId }>, testSessionId?: string) { super.onBegin(checks, testSessionId) - printLn(`Running ${this.numChecks} checks in ${this._runLocationString()}.`, 2, 1) + printLn(`Running ${this.numChecks} checks in ${this._runLocationString()}.`, 2) this._printSummary() } From 08dec4a7ce084ffe8c80e3472b22371bc9d75256 Mon Sep 17 00:00:00 2001 From: Simo Kinnunen Date: Fri, 22 May 2026 18:25:31 +0900 Subject: [PATCH 13/13] chore: update dependencies (#1315) --- package.json | 4 +- packages/cli/package.json | 24 +- packages/create-cli/package.json | 9 +- pnpm-lock.yaml | 1678 +++++++++--------------------- 4 files changed, 518 insertions(+), 1197 deletions(-) diff --git a/package.json b/package.json index 278a39e77..beb03a87b 100644 --- a/package.json +++ b/package.json @@ -16,12 +16,12 @@ "@commitlint/config-conventional": "^20.5.3", "@eslint/js": "^10.0.1", "@stylistic/eslint-plugin": "^5.10.0", - "eslint": "^10.0.1", + "eslint": "^10.4.0", "globals": "^17.6.0", "lint-staged": "^16.4.0", "rimraf": "^6.1.3", "simple-git-hooks": "^2.13.1", - "typescript-eslint": "^8.59.2" + "typescript-eslint": "^8.59.4" }, "simple-git-hooks": { "commit-msg": "pnpm exec commitlint --edit", diff --git a/packages/cli/package.json b/packages/cli/package.json index 3c9ce1708..7ad4285c6 100644 --- a/packages/cli/package.json +++ b/packages/cli/package.json @@ -97,15 +97,15 @@ }, "homepage": "https://github.com/checkly/checkly-cli#readme", "dependencies": { - "@oclif/core": "^4.11.1", - "@oclif/plugin-help": "^6.2.46", - "@oclif/plugin-warn-if-update-available": "^3.1.62", - "@typescript-eslint/typescript-estree": "^8.59.2", + "@oclif/core": "^4.11.3", + "@oclif/plugin-help": "^6.2.49", + "@oclif/plugin-warn-if-update-available": "^3.1.65", + "@typescript-eslint/typescript-estree": "^8.59.4", "acorn": "^8.16.0", "acorn-walk": "^8.3.5", - "archiver": "7.0.1", + "archiver": "^8.0.0", "ast-types": "^0.16.1", - "axios": "^1.16.0", + "axios": "^1.16.1", "chalk": "^5.6.2", "ci-info": "^4.4.0", "conf": "^15.1.0", @@ -124,31 +124,29 @@ "minimatch": "^10.2.5", "mqtt": "^5.15.1", "open": "^11.0.0", - "p-queue": "^9.2.0", + "p-queue": "^9.3.0", "prompts": "^2.4.2", "proxy-from-env": "^2.1.0", "recast": "^0.23.11", - "semver": "^7.7.3", - "string-width": "^7.2.0", + "semver": "^7.8.1", + "string-width": "^8.2.1", "tunnel": "^0.0.6", "uuid": "^14.0.0" }, "devDependencies": { - "@playwright/test": "^1.59.1", + "@playwright/test": "^1.60.0", "@types/archiver": "^7.0.0", - "@types/config": "^3.3.5", "@types/debug": "^4.1.13", "@types/luxon": "^3.7.1", "@types/node": "^22.19.17", "@types/prompts": "^2.4.9", "@types/semver": "^7.7.1", "@types/tunnel": "^0.0.7", - "@types/uuid": "^10.0.0", "@types/ws": "^8.5.5", "config": "^4.4.1", "cross-env": "^10.1.0", "nanoid": "^5.1.11", - "oclif": "^4.23.0", + "oclif": "^4.23.7", "rimraf": "^6.1.3", "tar": "^7.5.15", "typescript": "^6.0.3", diff --git a/packages/create-cli/package.json b/packages/create-cli/package.json index 42953ebe9..9876d9ec6 100644 --- a/packages/create-cli/package.json +++ b/packages/create-cli/package.json @@ -54,10 +54,10 @@ }, "homepage": "https://github.com/checkly/checkly-cli#readme", "dependencies": { - "@oclif/core": "^4.11.1", - "@oclif/plugin-help": "^6.2.46", - "@oclif/plugin-warn-if-update-available": "^3.1.62", - "axios": "^1.16.0", + "@oclif/core": "^4.11.3", + "@oclif/plugin-help": "^6.2.49", + "@oclif/plugin-warn-if-update-available": "^3.1.65", + "axios": "^1.16.1", "chalk": "^5.6.2", "debug": "^4.4.3", "execa": "^9.6.1", @@ -74,7 +74,6 @@ "@types/debug": "^4.1.13", "@types/node": "^22.19.17", "@types/prompts": "^2.4.9", - "@types/uuid": "^10.0.0", "cross-env": "^10.1.0", "rimraf": "^6.1.3", "typescript": "^6.0.3", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cb155de2e..4340cc69d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -16,13 +16,13 @@ importers: version: 20.5.3 '@eslint/js': specifier: ^10.0.1 - version: 10.0.1(eslint@10.3.0(jiti@2.7.0)) + version: 10.0.1(eslint@10.4.0(jiti@2.7.0)) '@stylistic/eslint-plugin': specifier: ^5.10.0 - version: 5.10.0(eslint@10.3.0(jiti@2.7.0)) + version: 5.10.0(eslint@10.4.0(jiti@2.7.0)) eslint: - specifier: ^10.0.1 - version: 10.3.0(jiti@2.7.0) + specifier: ^10.4.0 + version: 10.4.0(jiti@2.7.0) globals: specifier: ^17.6.0 version: 17.6.0 @@ -36,23 +36,23 @@ importers: specifier: ^2.13.1 version: 2.13.1 typescript-eslint: - specifier: ^8.59.2 - version: 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + specifier: ^8.59.4 + version: 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) packages/cli: dependencies: '@oclif/core': - specifier: ^4.11.1 - version: 4.11.1 + specifier: ^4.11.3 + version: 4.11.3 '@oclif/plugin-help': - specifier: ^6.2.46 - version: 6.2.46 + specifier: ^6.2.49 + version: 6.2.49 '@oclif/plugin-warn-if-update-available': - specifier: ^3.1.62 - version: 3.1.62 + specifier: ^3.1.65 + version: 3.1.65 '@typescript-eslint/typescript-estree': - specifier: ^8.59.2 - version: 8.59.2(typescript@6.0.3) + specifier: ^8.59.4 + version: 8.59.4(typescript@6.0.3) acorn: specifier: ^8.16.0 version: 8.16.0 @@ -60,14 +60,14 @@ importers: specifier: ^8.3.5 version: 8.3.5 archiver: - specifier: 7.0.1 - version: 7.0.1 + specifier: ^8.0.0 + version: 8.0.0 ast-types: specifier: ^0.16.1 version: 0.16.1 axios: - specifier: ^1.16.0 - version: 1.16.0(debug@4.4.3) + specifier: ^1.16.1 + version: 1.16.1(debug@4.4.3) chalk: specifier: ^5.6.2 version: 5.6.2 @@ -123,8 +123,8 @@ importers: specifier: ^11.0.0 version: 11.0.0 p-queue: - specifier: ^9.2.0 - version: 9.2.0 + specifier: ^9.3.0 + version: 9.3.0 prompts: specifier: ^2.4.2 version: 2.4.2 @@ -135,11 +135,11 @@ importers: specifier: ^0.23.11 version: 0.23.11 semver: - specifier: ^7.7.3 - version: 7.7.4 + specifier: ^7.8.1 + version: 7.8.1 string-width: - specifier: ^7.2.0 - version: 7.2.0 + specifier: ^8.2.1 + version: 8.2.1 tunnel: specifier: ^0.0.6 version: 0.0.6 @@ -148,14 +148,11 @@ importers: version: 14.0.0 devDependencies: '@playwright/test': - specifier: ^1.59.1 - version: 1.59.1 + specifier: ^1.60.0 + version: 1.60.0 '@types/archiver': specifier: ^7.0.0 version: 7.0.0 - '@types/config': - specifier: ^3.3.5 - version: 3.3.5 '@types/debug': specifier: ^4.1.13 version: 4.1.13 @@ -174,9 +171,6 @@ importers: '@types/tunnel': specifier: ^0.0.7 version: 0.0.7 - '@types/uuid': - specifier: ^10.0.0 - version: 10.0.0 '@types/ws': specifier: ^8.5.5 version: 8.18.1 @@ -190,8 +184,8 @@ importers: specifier: ^5.1.11 version: 5.1.11 oclif: - specifier: ^4.23.0 - version: 4.23.0(@types/node@22.19.18) + specifier: ^4.23.7 + version: 4.23.7(@types/node@22.19.18) rimraf: specifier: ^6.1.3 version: 6.1.3 @@ -208,17 +202,17 @@ importers: packages/create-cli: dependencies: '@oclif/core': - specifier: ^4.11.1 - version: 4.11.1 + specifier: ^4.11.3 + version: 4.11.3 '@oclif/plugin-help': - specifier: ^6.2.46 - version: 6.2.46 + specifier: ^6.2.49 + version: 6.2.49 '@oclif/plugin-warn-if-update-available': - specifier: ^3.1.62 - version: 3.1.62 + specifier: ^3.1.65 + version: 3.1.65 axios: - specifier: ^1.16.0 - version: 1.16.0(debug@4.4.3) + specifier: ^1.16.1 + version: 1.16.1(debug@4.4.3) chalk: specifier: ^5.6.2 version: 5.6.2 @@ -262,9 +256,6 @@ importers: '@types/prompts': specifier: ^2.4.9 version: 2.4.9 - '@types/uuid': - specifier: ^10.0.0 - version: 10.0.0 cross-env: specifier: ^10.1.0 version: 10.1.0 @@ -283,10 +274,6 @@ importers: packages: - '@aashutoshrathi/word-wrap@1.2.6': - resolution: {integrity: sha512-1Yjs2SvM8TflER/OD3cOjhWWOZb58A2t7wpE2S9XfBYTiIl+XFhQG2bjy4Pu1I+EAlCNUzRDYDdFwFYUKvXcIA==} - engines: {node: '>=0.10.0'} - '@aws-crypto/crc32@5.2.0': resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} engines: {node: '>=16.0.0'} @@ -310,140 +297,100 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-cloudfront@3.1009.0': - resolution: {integrity: sha512-KRac+gkuj3u49IyWkrudHRlP/q/faTto+1xRS7Aj6cDGewMIzgdQArrdZEJoVntbaVZHLM5s/NVmWORzBWNcSw==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/client-s3@3.1014.0': - resolution: {integrity: sha512-0XLrOT4Cm3NEhhiME7l/8LbTXS4KdsbR4dSrY207KNKTcHLLTZ9EXt4ZpgnTfLvWQF3pGP2us4Zi1fYLo0N+Ow==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/core@3.974.8': - resolution: {integrity: sha512-njR2qoG6ZuB0kvAS2FyICsFZJ6gmCcf2X/7JcD14sUvGDm26wiZ5BrA6LOiUxKFEF+IVe7kdroxyE00YlkiYsw==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/crc64-nvme@3.972.7': - resolution: {integrity: sha512-QUagVVBbC8gODCF6e1aV0mE2TXWB9Opz4k8EJFdNrujUVQm5R4AjJa1mpOqzwOuROBzqJU9zawzig7M96L8Ejg==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/credential-provider-env@3.972.34': - resolution: {integrity: sha512-XT0jtf8Fw9JE6ppsQeoNnZRiG+jqRixMT1v1ZR17G60UvVdsQmTG8nbEyHuEPfMxDXEhfdARaM/XiEhca4lGHQ==} + '@aws-sdk/client-cloudfront@3.1052.0': + resolution: {integrity: sha512-Tm7pZToRrQnmpuGib27P/yEAeZzvxPf52ZBv8vJ5GrOKTg/GgkdjKqPkoluy/8LnG2vvLpdpMgClp54SQGdpGg==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-http@3.972.36': - resolution: {integrity: sha512-DPoGWfy7J7RKxvbf5kOKIGQkD2ek3dbKgzKIGrnLuvZBz5myU+Im/H6pmc14QcnFbqHMqxvtWSgRDSJW3qXLQg==} + '@aws-sdk/client-s3@3.1052.0': + resolution: {integrity: sha512-8fgQHfk1WjGUyowyqtMwq9HzZvIQQ86cqn9IZW5Qkq8kaolVjMmZez60qVYxKYvKhVRYUP5hWYPVCyraoud0AA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-ini@3.972.38': - resolution: {integrity: sha512-oDzUBu2MGJFgoar05sPMCwSrhw44ASyccrHzj66vO69OZqi7I6hZZxXfuPLC8OCzW7C+sU+bI73XHij41yekgQ==} + '@aws-sdk/core@3.974.13': + resolution: {integrity: sha512-+Y5/4tHki0uYgyx8eun146DegRVQBpdKGK5RbV0FTKJPpaKTchvqVxrrRFK6Wk0JksO4iAZKw3eqxGEIwtO98w==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-login@3.972.38': - resolution: {integrity: sha512-g1NosS8qe4OF++G2UFCM5ovSkgipC7YYor5KCWatG0UoMSO5YFj9C8muePlyVmOBV/WTI16Jo3/s1NUo/o1Bww==} + '@aws-sdk/crc64-nvme@3.972.9': + resolution: {integrity: sha512-P+QGozmXn2mZZI7sDgk+aUm+RTI61MPSFB+Ir2vjEjEbEsE4e7hYtzrDvAUxZy9ko81h53e11+F/GYlvwDkaOQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-node@3.972.39': - resolution: {integrity: sha512-HEswDQyxUtadoZ/bJsPPENHg7R0Lzym5LuMksJeHvqhCOpP+rtkDLKI4/ZChH4w3cf5kG8n6bZuI8PzajoiqMg==} + '@aws-sdk/credential-provider-env@3.972.39': + resolution: {integrity: sha512-29wX9zpAvEt1vcj0psha+y6ygBHy2V/S72mp6e7q0KARLWXq+pwE/lR6qGkwknQvruh52lXvlqZIga8Hdxkucw==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-process@3.972.34': - resolution: {integrity: sha512-T3IFs4EVmVi1dVN5RciFnklCANSzvrQd/VuHY9ThHSQmYkTogjcGkoJEr+oNUPQZnso52183088NqysMPji1/Q==} + '@aws-sdk/credential-provider-http@3.972.41': + resolution: {integrity: sha512-IA3CQTjtJkb6u1H4mE4936c8OPBMa9Jggtwe8U2Mqw/vvb/tZ5Ebd0mcZcX0uKWQhOyYo/+qNIwkV5Xh+FeJJA==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-sso@3.972.38': - resolution: {integrity: sha512-5ZxG+t0+3Q3QPh8KEjX6syskhgNf7I0MN7oGioTf6Lm1NTjfP7sIcYGNsthXC2qR8vcD3edNZwCr2ovfSSWuRA==} + '@aws-sdk/credential-provider-ini@3.972.43': + resolution: {integrity: sha512-4mzII+3mZEVXXE1xzrLQrCJL7/r62A63bA6SVzZoNL5rqCJghpf+xgGltVrIBBs0n+mOZBKrQl2tRREtvZ5l6A==} engines: {node: '>=20.0.0'} - '@aws-sdk/credential-provider-web-identity@3.972.38': - resolution: {integrity: sha512-lYHFF30DGI20jZcYX8cm6Ns0V7f1dDN6g/MBDLTyD/5iw+bXs3yBr2iAiHDkx4RFU5JgsnZvCHYKiRVPRdmOgw==} + '@aws-sdk/credential-provider-login@3.972.43': + resolution: {integrity: sha512-HG7kQCwXtbv3oBV61Ins0oNX8KKyvrMqqRkb6ZiAfQHbMuHaiNaEb2KnpKLPkNpqImSBK82UkVE/kaY6IfWikA==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-bucket-endpoint@3.972.10': - resolution: {integrity: sha512-Vbc2frZH7wXlMNd+ZZSXUEs/l1Sv8Jj4zUnIfwrYF5lwaLdXHZ9xx4U3rjUcaye3HRhFVc+E5DbBxpRAbB16BA==} + '@aws-sdk/credential-provider-node@3.972.44': + resolution: {integrity: sha512-sDaBIT0yrNNIPfvlsiTCmANm07zKju+ipWODjEXgZlsjMeIJR3LVp7RDyAOzUoAsTbDfYKDWp+i5WrFiQP6rmQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-expect-continue@3.972.10': - resolution: {integrity: sha512-2Yn0f1Qiq/DjxYR3wfI3LokXnjOhFM7Ssn4LTdFDIxRMCE6I32MAsVnhPX1cUZsuVA9tiZtwwhlSLAtFGxAZlQ==} + '@aws-sdk/credential-provider-process@3.972.39': + resolution: {integrity: sha512-2k/amBifLd75eXNwgvPw/2lKYSQ3NhvHQgkVKVjfUq13/eJ3JRtHmznuFenn74OK3sSfp4SMy1YB2w+UVXoKqA==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-flexible-checksums@3.974.16': - resolution: {integrity: sha512-6ru8doI0/XzszqLIPXf0E/V7HhAw1Pu94010XCKYtBUfD0LxF0BuOzrUf8OQGR6j2o6wgKTHUniOmndQycHwCA==} + '@aws-sdk/credential-provider-sso@3.972.43': + resolution: {integrity: sha512-LPc3+Y4vhH1T4x6CMqwCM6hk5+SRf/Lwmgm8INm95wxTtIRHcMwQUVkDzWu4Iw/RSncxYM2BC01OrYbxOPZvyg==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-host-header@3.972.10': - resolution: {integrity: sha512-IJSsIMeVQ8MMCPbuh1AbltkFhLBLXn7aejzfX5YKT/VLDHn++Dcz8886tXckE+wQssyPUhaXrJhdakO2VilRhg==} + '@aws-sdk/credential-provider-web-identity@3.972.43': + resolution: {integrity: sha512-wQtL34lUD/09VXjwAUo2T+I3aEXRDxMB3DKmTJL/Zj0Gi6sLDTrVhae1XVt01yzkquOWajI/sZW72JGDZ1ciTw==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-location-constraint@3.972.10': - resolution: {integrity: sha512-rI3NZvJcEvjoD0+0PI0iUAwlPw2IlSlhyvgBK/3WkKJQE/YiKFedd9dMN2lVacdNxPNhxL/jzQaKQdrGtQagjQ==} + '@aws-sdk/middleware-bucket-endpoint@3.972.15': + resolution: {integrity: sha512-O2HDANa+MrvbxpaRVQDiH3T13uAa9AkMjKyZmDygwauAmmvqZ5B0iRmKW+fuVGW6NPXuyXurFgIx69lSvmAWGA==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-logger@3.972.10': - resolution: {integrity: sha512-OOuGvvz1Dm20SjZo5oEBePFqxt5nf8AwkNDSyUHvD9/bfNASmstcYxFAHUowy4n6Io7mWUZ04JURZwSBvyQanQ==} + '@aws-sdk/middleware-expect-continue@3.972.13': + resolution: {integrity: sha512-sHiqIFg8o2ipT7t40B89Vj0ubSUtY6OSt/+Ee/OXhHch5K4+81zP2+QX8Lkc/nJ2QSmCySxOke7TEbmX69fe2g==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-recursion-detection@3.972.11': - resolution: {integrity: sha512-+zz6f79Kj9V5qFK2P+D8Ehjnw4AhphAlCAsPjUqEcInA9umtSSKMrHbSagEeOIsDNuvVrH98bjRHcyQukTrhaQ==} + '@aws-sdk/middleware-flexible-checksums@3.974.21': + resolution: {integrity: sha512-alAu9heyiBK/OmRNXVxq8mmPTgeW2AQ6EYjRsI38kPZa1MZvt2Jh+BlGq7/GG9OVXOaEgD7DlGj/Lzfy5OmuEg==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-sdk-s3@3.972.37': - resolution: {integrity: sha512-Km7M+i8DrLArVzrid1gfxeGhYHBd3uxvE77g0s5a52zPSVosxzQBnJ0gwWb6NIp/DOk8gsBMhi7V+cpJG0ndTA==} + '@aws-sdk/middleware-location-constraint@3.972.11': + resolution: {integrity: sha512-hkfspNUP4criAH6ton6BGKgnm5dZx+7bUOy1YqlTfejDeUPAM23D81q/IX+hdlS3KUsfwGz5ADTqZWKBEUpf4A==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-ssec@3.972.10': - resolution: {integrity: sha512-Gli9A0u8EVVb+5bFDGS/QbSVg28w/wpEidg1ggVcSj65BDTdGR6punsOcVjqdiu1i42WHWo51MCvARPIIz9juw==} + '@aws-sdk/middleware-sdk-s3@3.972.42': + resolution: {integrity: sha512-/xNqNGXv9LaxZd25L9VV4pnSOw9OdDNO4rAHamM+h3KQBSITljIH9vk3dveGga1I2j36lQd0rdG3gjNEXvtNew==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-user-agent@3.972.38': - resolution: {integrity: sha512-iz+B29TXcAZsJpwB+AwG/TTGA5l/VnmMZ2UxtiySOZjI6gCdmviXPwdgzcmuazMy16rXoPY4mYCGe7zdNKfx5A==} + '@aws-sdk/middleware-ssec@3.972.11': + resolution: {integrity: sha512-7PQvGNhtveKlvVqNahqWx5yrwxP7ecwAoB1dYBf8eKwfo2tzzCbNnW+q2nO3N066ktQaB4iBQbDRWtizm+amoQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/nested-clients@3.997.6': - resolution: {integrity: sha512-WBDnqatJl+kGObpfmfSxqnXeYTu3Me8wx8WCtvoxX3pfWrrTv8I4WTMSSs7PZqcRcVh8WeUKMgGFjMG+52SR1w==} + '@aws-sdk/nested-clients@3.997.11': + resolution: {integrity: sha512-nWXXJ1r/r8N2Gw1pWolRgED38/A9A8DHR2ETWIv220zh4PZHcybbR4hUVWWktmNXTRHzDJwRluapHn0rZxuoqA==} engines: {node: '>=20.0.0'} - '@aws-sdk/region-config-resolver@3.972.13': - resolution: {integrity: sha512-CvJ2ZIjK/jVD/lbOpowBVElJyC1YxLTIJ13yM0AEo0t2v7swOzGjSA6lJGH+DwZXQhcjUjoYwc8bVYCX5MDr1A==} + '@aws-sdk/signature-v4-multi-region@3.996.28': + resolution: {integrity: sha512-qs9z5LqXO/CZC2Lg9SGKpoLU8Rhi+m2pFKZqfO9pytX1clc0katqtsDNupJxFy0xT9wsZSPzM2v1y+/H/zfp5Q==} engines: {node: '>=20.0.0'} - '@aws-sdk/signature-v4-multi-region@3.996.25': - resolution: {integrity: sha512-+CMIt3e1VzlklAECmG+DtP1sV8iKq25FuA0OKpnJ4KA0kxUtd7CgClY7/RU6VzJBQwbN4EJ9Ue6plvqx1qGadw==} + '@aws-sdk/token-providers@3.1052.0': + resolution: {integrity: sha512-QqZNB3so7UIDxZtroc85TQaLVxdZRFm0eWM1CSR2N+b06as9TOrilvrlTZuj3guYlxMs6yLOgGxnklJ5qMYtTw==} engines: {node: '>=20.0.0'} - '@aws-sdk/token-providers@3.1041.0': - resolution: {integrity: sha512-Th7kPI6YPtvJUcdznooXJMy+9rQWjmEF81LxaJssngBzuysK4a/x+l8kjm1zb7nYsUPbndnBdUnwng/3PLvtGw==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/types@3.973.8': - resolution: {integrity: sha512-gjlAdtHMbtR9X5iIhVUvbVcy55KnznpC6bkDUWW9z915bi0ckdUr5cjf16Kp6xq0bP5HBD2xzgbL9F9Quv5vUw==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/util-arn-parser@3.972.3': - resolution: {integrity: sha512-HzSD8PMFrvgi2Kserxuff5VitNq2sgf3w9qxmskKDiDTThWfVteJxuCS9JXiPIPtmCrp+7N9asfIaVhBFORllA==} - engines: {node: '>=20.0.0'} - - '@aws-sdk/util-endpoints@3.996.8': - resolution: {integrity: sha512-oOZHcRDihk5iEe5V25NVWg45b3qEA8OpHWVdU/XQh8Zj4heVPAJqWvMphQnU7LkufmUo10EpvFPZuQMiFLJK3g==} + '@aws-sdk/types@3.973.9': + resolution: {integrity: sha512-kuBfgQVdcz5Bmapc4A13YbpVw/pXkesfhetcFYwbntqas8sF41OHyd4o28+/TG2ZQdHBsv90Lsu5y6oitvYCdg==} engines: {node: '>=20.0.0'} '@aws-sdk/util-locate-window@3.965.5': resolution: {integrity: sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/util-user-agent-browser@3.972.10': - resolution: {integrity: sha512-FAzqXvfEssGdSIz8ejatan0bOdx1qefBWKF/gWmVBXIP1HkS7v/wjjaqrAGGKvyihrXTXW00/2/1nTJtxpXz7g==} - - '@aws-sdk/util-user-agent-node@3.973.24': - resolution: {integrity: sha512-ZWwlkjcIp7cEL8ZfTpTAPNkwx25p7xol0xlKoWVVf22+nsjwmLcHYtTPjIV1cSpmB/b6DaK4cb1fSkvCXHgRdw==} - engines: {node: '>=20.0.0'} - peerDependencies: - aws-crt: '>=1.0.0' - peerDependenciesMeta: - aws-crt: - optional: true - - '@aws-sdk/xml-builder@3.972.22': - resolution: {integrity: sha512-PMYKKtJd70IsSG0yHrdAbxBr+ZWBKLvzFZfD3/urxgf6hXVMzuU5M+3MJ5G67RpOmLBu1fAUN65SbWuKUCOlAA==} + '@aws-sdk/xml-builder@3.972.25': + resolution: {integrity: sha512-GH+Kjz4nPKWKHnsiQpnhP1MJdTGIcK4rAka6tzakgjjUkVgNsmPeEbbRAf09SzS1hjGu6duGHCBsxYke0BhHjQ==} engines: {node: '>=20.0.0'} '@aws/lambda-invoke-store@0.2.4': @@ -716,8 +663,8 @@ packages: resolution: {integrity: sha512-Y3kKLvC1dvTOT+oGlqNQ1XLqK6D1HU2YXPc52NmAlJZbMMWDzGYXMiPRJ8TYD39muD/OTjlZmNJ4ib7dvSrMBA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@eslint/config-helpers@0.5.5': - resolution: {integrity: sha512-eIJYKTCECbP/nsKaaruF6LW967mtbQbsw4JTtSVkUQc9MneSkbrgPJAbKl9nWr0ZeowV8BfsarBmPpBzGelA2w==} + '@eslint/config-helpers@0.6.0': + resolution: {integrity: sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} '@eslint/core@1.2.1': @@ -741,24 +688,24 @@ packages: resolution: {integrity: sha512-rZAP3aVgB9ds9KOeUSL+zZ21hPmo8dh6fnIFwRQj5EAZl9gzR7wxYbYXYysAM8CTqGmUGyp2S4kUdV17MnGuWQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - '@humanfs/core@0.19.1': - resolution: {integrity: sha512-5DyQ4+1JEUzejeK1JGICcideyfUbGixgS9jNgex5nqkW+cY7WZhxBigmieN5Qnw9ZosSNVC9KQKyb+GUaGyKUA==} + '@humanfs/core@0.19.2': + resolution: {integrity: sha512-UhXNm+CFMWcbChXywFwkmhqjs3PRCmcSa/hfBgLIb7oQ5HNb1wS0icWsGtSAUNgefHeI+eBrA8I1fxmbHsGdvA==} + engines: {node: '>=18.18.0'} + + '@humanfs/node@0.16.8': + resolution: {integrity: sha512-gE1eQNZ3R++kTzFUpdGlpmy8kDZD/MLyHqDwqjkVQI0JMdI1D51sy1H958PNXYkM2rAac7e5/CnIKZrHtPh3BQ==} engines: {node: '>=18.18.0'} - '@humanfs/node@0.16.6': - resolution: {integrity: sha512-YuI2ZHQL78Q5HbhDiBA1X4LmYdXCKCMQIfw0pw7piHJwyREFebJUvrQN4cMssyES6x+vfUbx1CIpaQUKYdQZOw==} + '@humanfs/types@0.15.0': + resolution: {integrity: sha512-ZZ1w0aoQkwuUuC7Yf+7sdeaNfqQiiLcSRbfI08oAxqLtpXQr9AIVX7Ay7HLDuiLYAaFPu8oBYNq/QIi9URHJ3Q==} engines: {node: '>=18.18.0'} '@humanwhocodes/module-importer@1.0.1': resolution: {integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==} engines: {node: '>=12.22'} - '@humanwhocodes/retry@0.3.1': - resolution: {integrity: sha512-JBxkERygn7Bv/GbN5Rv8Ul6LVknS+5Bp6RgDC/O8gEBU/yeH5Ui5C/OlWrTb6qct7LjjfT6Re2NxB0ln0yYybA==} - engines: {node: '>=18.18'} - - '@humanwhocodes/retry@0.4.2': - resolution: {integrity: sha512-xeO57FpIu4p1Ri3Jq/EXq4ClRm86dVF2z/+kvFnyqVYRavTZmaFaUBbWCOuuTh0o/g7DSsk6kc2vrS4Vl5oPOQ==} + '@humanwhocodes/retry@0.4.3': + resolution: {integrity: sha512-bV0Tgo9K4hfPCek+aMAn81RppFKv2ySDQeMoSZuvTASywNTnVJCArCZE2FWqpvIatKu7VMRLWlR1EazvVhDyhQ==} engines: {node: '>=18.18'} '@inquirer/ansi@1.0.2': @@ -919,10 +866,6 @@ packages: '@types/node': optional: true - '@isaacs/cliui@8.0.2': - resolution: {integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==} - engines: {node: '>=12'} - '@isaacs/fs-minipass@4.0.1': resolution: {integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==} engines: {node: '>=18.0.0'} @@ -933,32 +876,24 @@ packages: '@nodable/entities@2.1.0': resolution: {integrity: sha512-nyT7T3nbMyBI/lvr6L5TyWbFJAI9FTgVRakNoBqCD+PmID8DzFrrNdLLtHMwMszOtqZa8PAOV24ZqDnQrhQINA==} - '@oclif/core@4.11.1': - resolution: {integrity: sha512-+N5yqeoOKPnT0p+ZJiNutMILsZukZrEpsVup24XERla594EkGSWS9tiCqRfvzr1xfvf/AhM9pb0yPaf8L3Y9Uw==} - engines: {node: '>=18.0.0'} - - '@oclif/core@4.9.0': - resolution: {integrity: sha512-k/ntRgDcUprTT+aaNoF+whk3cY3f9fRD2lkF6ul7JeCUg2MaMXVXZXfbRhJCfsiX51X8/5Pqo0LGdO9SLYXNHg==} + '@oclif/core@4.11.3': + resolution: {integrity: sha512-gQCSYAtUhJilGKaSaZhqejH9X1dDu+jWQjLmtGOgN/XcKaAEPPSeT2mu1UvlvtPox1/NNRdlBcUa8KRKo2HnJQ==} engines: {node: '>=18.0.0'} - '@oclif/plugin-help@6.2.46': - resolution: {integrity: sha512-KmuMFt/fURCVxor0rrRjEqs2nLN0Y3ixcixo/M5VjKcN920gbuw5T+AF23FBeyUDuW/Dg79YPcTWy/Rtz0Dg/A==} + '@oclif/plugin-help@6.2.49': + resolution: {integrity: sha512-fEsO0YU7ThtzHE1RGuoHxFu/OGlqxm7PCfFp+U1PS8sde4E0cDqjVDuv78+VKrr45LpC5lWOApj7pm3FNfHrVA==} engines: {node: '>=18.0.0'} - '@oclif/plugin-not-found@3.2.82': - resolution: {integrity: sha512-6heNFE2gadcDYijWy4XJc6ZLzPd1qKe0i8sb8uyrR3mX0o5IFA+5KSAx/BFBkGS8j/tKOsCYvvmMKVdReeb1Gg==} + '@oclif/plugin-not-found@3.2.86': + resolution: {integrity: sha512-BJhJSahwsYayZpo18f0fPTg8tKb9dIvydaz03NCK3eMfmcsT1MmXhXqh1KEV8J7mz0sQ6f0qFEb6BXy490/iUg==} engines: {node: '>=18.0.0'} - '@oclif/plugin-warn-if-update-available@3.1.62': - resolution: {integrity: sha512-g1tOOf9tJ3RE4dqhUynw3TH8Gea78IkzG9hq2lcUJ5wIdOSzcp8+3SWVzzpKfHgwBGgFupmj8peCjypybJVIrg==} + '@oclif/plugin-warn-if-update-available@3.1.65': + resolution: {integrity: sha512-HcSJc8SeCVUBHwc063xDL0LcpdjcamAISlisSX14VDDYQayMantvtVNOo9PmciwYpXRXfAykeH1z066YkA9JvQ==} engines: {node: '>=18.0.0'} - '@pkgjs/parseargs@0.11.0': - resolution: {integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==} - engines: {node: '>=14'} - - '@playwright/test@1.59.1': - resolution: {integrity: sha512-PG6q63nQg5c9rIi4/Z5lR5IVF7yU5MqmKaPOe0HSc0O2cX1fPi96sUQu5j7eo4gKCkB2AnNGoWt7y4/Xx3Kcqg==} + '@playwright/test@1.60.0': + resolution: {integrity: sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==} engines: {node: '>=18'} hasBin: true @@ -1131,174 +1066,42 @@ packages: resolution: {integrity: sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==} engines: {node: '>=18'} - '@smithy/config-resolver@4.5.0': - resolution: {integrity: sha512-m5PNfr7xKdIegNG8DlLz+Gf/DlAhHWFGmFbe0DZo9pnvBwuZ3P/9OMtQU0UyWMYy8zjl+HDFVS7rdD9p2xEFjQ==} - engines: {node: '>=18.0.0'} - - '@smithy/core@3.24.0': - resolution: {integrity: sha512-rZ5YfycIXX6puoGjthnDiMpUgtKNOq3c7CndQYkCNYQTv26AiCrZQOJPy7ANSfZ6Okk3UvCRnmO1OYWlLnYZgg==} - engines: {node: '>=18.0.0'} - - '@smithy/credential-provider-imds@4.3.0': - resolution: {integrity: sha512-5gi+28FH+RurB2+tcRH1CK7KiLJ0dVnabjWLY3DgeFLiU45dbyrsq7NOYvMUcHgu9LVZH5F7G+Qk1GdXF0y6jg==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-browser@4.3.0': - resolution: {integrity: sha512-JlY17/ZwBJ2O7FK/bKt8PZR+HBkyFwvgssgT6LiB0xYtz5/E5XG/HeKr5q2NMaVm8u8xjFfGk/6DVlbBe1qNkA==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-config-resolver@4.4.0': - resolution: {integrity: sha512-1Pg7aqxIdMilTbGJKCHTx0toIkKSrHdO6VHCh9oCncWJG+1wkJa90O/xb9mmRPuoOFCg2DLZAqnRyuBiUQnNIA==} - engines: {node: '>=18.0.0'} - - '@smithy/eventstream-serde-node@4.3.0': - resolution: {integrity: sha512-Xte1Td6CQpc/D0WnPZ2k98CvF7y1GopylMoGY/r26a9wbRHV5xusRbT6O9vouSeZlvtxoVb4ON/1fLRofO7m4Q==} - engines: {node: '>=18.0.0'} - - '@smithy/fetch-http-handler@5.4.0': - resolution: {integrity: sha512-yxurumLvHfgYgM0FVtjOVIyBSJXfno4xKKOgD43wOk9Qh+2lTKfP9Qhu4JHU7IUwrqVPa888byUzomHMgvKVMg==} + '@smithy/core@3.24.4': + resolution: {integrity: sha512-3UNRKEyQyAgVgM0LGlerCLm+ChZWZ1GPfde+jBEW6bm6bSBGU1p0EbblaUV3unbhwvidjLA5Zs3sOs7mnZwvAw==} engines: {node: '>=18.0.0'} - '@smithy/hash-blob-browser@4.3.0': - resolution: {integrity: sha512-xOQ7w5hSzTe8IAwQ6BAbX+1d9s9SRwWUbU8cYYh5DHgkYOi131Q5+B9Blelg9u0zoPfM4VYOuuBRAmregPkzpQ==} + '@smithy/credential-provider-imds@4.3.4': + resolution: {integrity: sha512-vKW0MEFRU4Y3MkVZUkpJm+g9qyPGLCXhc0YLggUdSdBB4g7IaSSsCE75P9rBXyWHrXY1UYSQUl8/DwsTR7QciA==} engines: {node: '>=18.0.0'} - '@smithy/hash-node@4.3.0': - resolution: {integrity: sha512-4a+KoVqr1SZtw7cZvY24XU1S5OL+c23MdDQ3jFmMCQ5s9diBFdMG/UIgp5dNqlwvDrWA0U5KO+z3Gzq1ize+LA==} - engines: {node: '>=18.0.0'} - - '@smithy/hash-stream-node@4.3.0': - resolution: {integrity: sha512-DPDT0UyOREMPwipO7BzSJfD8z2YYp/x1FMpHqEppBF+gmGr7FoqUUFlXfK+YPOfHhlr8HDJRQpmShNb9C9po5Q==} - engines: {node: '>=18.0.0'} - - '@smithy/invalid-dependency@4.3.0': - resolution: {integrity: sha512-TaoGtqi2ZNdGzxUgYcLczjW8rb/h5DQ8vlCMYDSdZ4LRzGQrrEYgUjlZVM9dAagTsLK5gZx1f7+44sFTjz5vuQ==} + '@smithy/fetch-http-handler@5.4.4': + resolution: {integrity: sha512-qM7AUKI4G6d7lNgaZD3lA1tWSolh5r6gcixfTZAPstVURfjIbvreVTPz+994M0yC3HbX4YYhDRgr31Xy3XwWOQ==} engines: {node: '>=18.0.0'} '@smithy/is-array-buffer@2.2.0': resolution: {integrity: sha512-GGP3O9QFD24uGeAXYUjwSTXARoqpZykHadOmA8G5vfJPK0/DC67qa//0qvqrJzL1xc8WQWX7/yc7fwudjPHPhA==} engines: {node: '>=14.0.0'} - '@smithy/is-array-buffer@4.3.0': - resolution: {integrity: sha512-V9ZCT5mHNteWOKtu3LkGHTheEyBWzTU3XydeSOHrqG6znEoCARjxFZ0XP9JJyKV9jxEMx7hNbzGlQaXtKkmvSQ==} - engines: {node: '>=18.0.0'} - - '@smithy/md5-js@4.3.0': - resolution: {integrity: sha512-bODwWrXILREpCL7XZq1/QxiMqFxdWadw3noiKGjNKsPl1/nvWtLVFInNjK6pmHjM4BUOgfgZkrl9+V56ez2FNA==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-content-length@4.3.0': - resolution: {integrity: sha512-IbSiS/3nOxsimCthzElEoBrjQo+Na4bsQ63qyC8qSI8lkMjOv9+VlosDQd8gfNolAD9XmC5tLqYTI0bJGJsscg==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-endpoint@4.5.0': - resolution: {integrity: sha512-ux8LgN/m/X7ET2ISRc8G4aKFI1QhINZtkKpoayNPTrhwpsCVxb47mlpYFuWceTlesc0Wmb0S9y6DP195ReQoXA==} - engines: {node: '>=18.0.0'} - - '@smithy/middleware-retry@4.6.0': - resolution: {integrity: sha512-8CtxY9aHT4f3UvZUbU2O0bccRckqTDfTKk3t1DawUZa5DWRZdV2AMABLsdMTdj7KE1uumhzEaT0X7/jTcOtoBw==} + '@smithy/node-http-handler@4.7.4': + resolution: {integrity: sha512-HIeF+1vrDGzPkkv39Hj2vlHSXHY3p958jd/8ZnePIY6+ZOsQX8coyEUKO5yQu4r0bQIVsbpotVIrXXwyycMStQ==} engines: {node: '>=18.0.0'} - '@smithy/middleware-serde@4.3.0': - resolution: {integrity: sha512-c+V02hZlIStscI4ie2VllJjM4DLxdI2SymIBvXmqCqicrNb0NAbgDXDTBiwcMiruaBOqEFYxpKXbz6JjsNEN3Q==} + '@smithy/signature-v4@5.4.4': + resolution: {integrity: sha512-e5UtkMvsatzBfbeBZjEOt0k0Z3BEsjTFL/n6fdO5vtBLe67tdy0dX7xw2DU7uZ3acwoHyeCqpU2Fzb7pxwHb6Q==} engines: {node: '>=18.0.0'} - '@smithy/middleware-stack@4.3.0': - resolution: {integrity: sha512-KtYcs+sJn7AiT0YdM53/6MT0dKsaW2MSAr9MpprRVSfwN9qyKQf2dBIuCXt18/nEZaWerol/bGaQ63G949aovw==} - engines: {node: '>=18.0.0'} - - '@smithy/node-config-provider@4.4.0': - resolution: {integrity: sha512-5RutFJsYoqK4tWYZOjGQrPLowGf2Ku8rbNuVeGkNJ5axIDO4LV/fydBojPtwcDz2zf87YNCOXfNyuEyAwYgI7A==} - engines: {node: '>=18.0.0'} - - '@smithy/node-http-handler@4.7.0': - resolution: {integrity: sha512-PxF57Jr3dPm+RgZWekOL+o96FPdaT62xZUyDfi47uMRFi5rHpwO/ewFbrztrASQ/7H8moNi1sspIHihHpfoKsQ==} - engines: {node: '>=18.0.0'} - - '@smithy/property-provider@4.3.0': - resolution: {integrity: sha512-/YBWtO2SdvPSAUk/Ke1Xpdg1E1lfaNGblla7mnIVGtaGkSQ5bK7KBZqpuj5IokHlU9UcLDvt2QwTLV7oRzBUTA==} - engines: {node: '>=18.0.0'} - - '@smithy/protocol-http@5.4.0': - resolution: {integrity: sha512-WG0LgSZg+WbvWYD04uwIYVyMEpyd0cPx1lkqx61JxunxiFti+wGoFiDKr6wswun1r25Z2f8yUoMQWyxjMnnXtw==} - engines: {node: '>=18.0.0'} - - '@smithy/shared-ini-file-loader@4.5.0': - resolution: {integrity: sha512-xATpw6gcurFztdsUrMNaKb2ugqk3545Whhqg7ZD4sxTg+zI27THjg3IY+InXsVWturOWdCdV+UHQx11g9Sp5Kw==} - engines: {node: '>=18.0.0'} - - '@smithy/signature-v4@5.4.0': - resolution: {integrity: sha512-nkdB9T8JS6iD5PukE5TB8KqcvMEPVPHVUY7J0odYJgyIM40Du2msUhBdoPNRqRArDDcGQqVQcbzu0CZA7b+Nkw==} - engines: {node: '>=18.0.0'} - - '@smithy/smithy-client@4.13.0': - resolution: {integrity: sha512-lysfoRCr7PdD9CsPp9VQuJYRGI5mWYb8FRkbdBSQttxpQmW7tZsFgmpBNKVcgvBsAgBCkYX/UQs0NmznuBcZQQ==} - engines: {node: '>=18.0.0'} - - '@smithy/types@4.14.1': - resolution: {integrity: sha512-59b5HtSVrVR/eYNei3BUj3DCPKD/G7EtDDe7OEJE7i7FtQFugYo6MxbotS8mVJkLNVf8gYaAlEBwwtJ9HzhWSg==} - engines: {node: '>=18.0.0'} - - '@smithy/url-parser@4.3.0': - resolution: {integrity: sha512-I5tCWs/ndLrJrbvlnsN1cOt8PVAbQEqg0nNeQqebD5ynQcbhgch9uA7KmpX9vfq/vEudq0iVYAOxt+4aBkUlWA==} - engines: {node: '>=18.0.0'} - - '@smithy/util-base64@4.4.0': - resolution: {integrity: sha512-puJITyefgQ9a5F+wKylCLkf0VCwesWbaN4O3YCEalRin4N0CTPQu/XA3kz/QsMOTgd3knhd0BQwGCBm/tv0Y1A==} - engines: {node: '>=18.0.0'} - - '@smithy/util-body-length-browser@4.3.0': - resolution: {integrity: sha512-83U8xa8EmdExGzFuqBzgXvtmbLQIYcCuCNm5no4rlPqpGdOPGUufzMvLdlw+sPTb01qHIsDDNwOecm4s8ROOPw==} - engines: {node: '>=18.0.0'} - - '@smithy/util-body-length-node@4.3.0': - resolution: {integrity: sha512-Ok2v9zPFfd6uOJMTIIJ8HFdCpARD77q4OHYhwhG9y5X1Y9oeQ0CHUQVJD6LhT6l8FUkFYisqcUaZSg7SArFUTA==} + '@smithy/types@4.14.2': + resolution: {integrity: sha512-P+otAxbV4CqBybp7EkcJCrig63yE2E7PuNVOmilVMRcx/O+QDzGULTrKsq4DV13gSfak9ObPrWaHl/9bL5YcWw==} engines: {node: '>=18.0.0'} '@smithy/util-buffer-from@2.2.0': resolution: {integrity: sha512-IJdWBbTcMQ6DA0gdNhh/BwrLkDR+ADW5Kr1aZmd4k3DIF6ezMV4R2NIAmT08wQJ3yUK82thHWmC/TnK/wpMMIA==} engines: {node: '>=14.0.0'} - '@smithy/util-config-provider@4.3.0': - resolution: {integrity: sha512-kAC6/UB9qW9r2xQAOko2iDxAXmRD2VGMZjnXSEacAhQySdJs58CwvoOE0tHWdtc/lWF4g78X6Z9ucLanJnuVUw==} - engines: {node: '>=18.0.0'} - - '@smithy/util-defaults-mode-browser@4.4.0': - resolution: {integrity: sha512-jKezW5Taa+N2gbkB02UVijH1rFlEJC+cskZzwasFqFJMBBi/bcVgHqcYOX0WOnUk6MDZfHf0gEsr5Br4XMHiAg==} - engines: {node: '>=18.0.0'} - - '@smithy/util-defaults-mode-node@4.3.0': - resolution: {integrity: sha512-xYRuNHHIztu5AzruMJ8kTyA1JsBL/yZKvX5z/A7OHUxsf+rkEESZFZWJDcAj5dDWSu6brWFe5KH6qJNTVztX/w==} - engines: {node: '>=18.0.0'} - - '@smithy/util-endpoints@3.5.0': - resolution: {integrity: sha512-pcvTCp9Wch/9UnWWfRGoG5GJogDXFPjevE+CqALxtPFGA4GqFQRD6eUtgJhHN+NPtohcozI12u1skF2/iubGrQ==} - engines: {node: '>=18.0.0'} - - '@smithy/util-middleware@4.3.0': - resolution: {integrity: sha512-X/DNQxgUCbjjs3HosLmt5Yi1NocxjRFiiOgHml4tVV3w4mIbqZxPR8kq7apGPEMnhIpyxeTgFyypMrfxfn2DlQ==} - engines: {node: '>=18.0.0'} - - '@smithy/util-retry@4.4.0': - resolution: {integrity: sha512-pV/Kq4jUuP9raOqwSPeBiut2IWmwbc9vM+nE3ly4YUkzPHbBZvfhikwMOyudER+KHPjakuc8r4TecEPMsI7nVg==} - engines: {node: '>=18.0.0'} - - '@smithy/util-stream@4.6.0': - resolution: {integrity: sha512-BlWg46UASokl3O5YqWmbLpINE5stmAxynXlyOe1nE4dx+tvwgqtT4ug/rPcRg0xVcBnj68XlcOqbXeaGGcH0DA==} - engines: {node: '>=18.0.0'} - '@smithy/util-utf8@2.3.0': resolution: {integrity: sha512-R8Rdn8Hy72KKcebgLiv8jQcQkXoLMOGGv5uI1/k0l+snqkOzQ1R0ChUBCxWMlBsFMekWjq0wRudIweFs7sKT5A==} engines: {node: '>=14.0.0'} - '@smithy/util-utf8@4.3.0': - resolution: {integrity: sha512-5hrmCc+dTgZkiFhX72Q16LemYPkvZ1M4pFMOhk0X9tQnLY7dn7zC1+C+aAJn0dw6CXldbqY/KMbMYCwm8yw14g==} - engines: {node: '>=18.0.0'} - - '@smithy/util-waiter@4.4.0': - resolution: {integrity: sha512-7kAlrB3n7/BHyw+uLq83d5jdadPUcDkdMOUSGxvpXjrJ++G0hTedTnoNChjybIxhZ/Gk7sCrfIOLkMAB0LhRBA==} - engines: {node: '>=18.0.0'} - '@stylistic/eslint-plugin@5.10.0': resolution: {integrity: sha512-nPK52ZHvot8Ju/0A4ucSX1dcPV2/1clx0kLcH5wDmrE4naKso7TUC/voUyU1O9OTKTrR6MYip6LP0ogEMQ9jPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} @@ -1315,9 +1118,6 @@ packages: '@types/chai@5.2.3': resolution: {integrity: sha512-Mw558oeA9fFbv65/y4mHtXDs9bPnFMZAL/jxdPFUpOHHIXX91mcgEHbS5Lahr+pwZFR8A7GQleRWeI6cGFC2UA==} - '@types/config@3.3.5': - resolution: {integrity: sha512-itq2HtXQBrNUKwMNZnb9mBRE3T99VYCdl1gjST9rq+9kFaB1iMMGuDeZnP88qid73DnpAMKH9ZolqDpS1Lz7+w==} - '@types/debug@4.1.13': resolution: {integrity: sha512-KSVgmQmzMwPlmtljOomayoR89W4FynCAi3E8PPs7vmDVPe84hT+vGPKkJfThkmXs0x0jAaa9U8uW8bbfyS2fWw==} @@ -1369,48 +1169,45 @@ packages: '@types/tunnel@0.0.7': resolution: {integrity: sha512-VYKjZSmb2PvUwXoux4Gy4LAk7kzOB1ktkjyL4lxvpkqL2adgR+Qrh/yFyWluvJgIXWFicqs7XuzPI2NbTO/r3Q==} - '@types/uuid@10.0.0': - resolution: {integrity: sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ==} - '@types/wrap-ansi@3.0.0': resolution: {integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==} '@types/ws@8.18.1': resolution: {integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==} - '@typescript-eslint/eslint-plugin@8.59.2': - resolution: {integrity: sha512-j/bwmkBvHUtPNxzuWe5z6BEk3q54YRyGlBXkSsmfoih7zNrBvl5A9A98anlp/7JbyZcWIJ8KXo/3Tq/DjFLtuQ==} + '@typescript-eslint/eslint-plugin@8.59.4': + resolution: {integrity: sha512-PegsU+XfyJJNjd4+u/k6f9yTyp0lEXXiPopUNobZcIAUJFGICFLN+sP0Rb3JehVmiij1Ph0dFGYqODoRo/2+6A==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: - '@typescript-eslint/parser': ^8.59.2 + '@typescript-eslint/parser': ^8.59.4 eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/parser@8.59.2': - resolution: {integrity: sha512-plR3pp6D+SSUn1HM7xvSkx12/DhoHInI2YF35KAcVFNZvlC0gtrWqx7Qq1oH2Ssgi0vlFRCTbP+DZc7B9+TtsQ==} + '@typescript-eslint/parser@8.59.4': + resolution: {integrity: sha512-zORHqO/tuhxY1zWuTvMUqddRxpiFJ72xVfcNoWpqdLjs6lfPbuQBJuW4pk+49/uBMy7Ssr4bzgjiKmmDB1UbZQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/project-service@8.59.2': - resolution: {integrity: sha512-+2hqvEkeyf/0FBor67duF0Ll7Ot8jyKzDQOSrxazF/danillRq2DwR9dLptsXpoZQqxE1UisSmoZewrlPas9Vw==} + '@typescript-eslint/project-service@8.59.4': + resolution: {integrity: sha512-Ly00Vu4oAacfDeHp2Zg85ioNG6l8HG+tN1D7J+xTHSxu9y0awYKJ2zH1rFBn8ZSfuGK+7FxK3Cgl3uAz0aZZLg==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/scope-manager@8.59.2': - resolution: {integrity: sha512-JzfyEpEtOU89CcFSwyNS3mu4MLvLSXqnmX05+aKBDM+TdR5jzcGOEBwxwGNxrEQ7p/z6kK2WyioCGBf2zZBnvg==} + '@typescript-eslint/scope-manager@8.59.4': + resolution: {integrity: sha512-mUeR/3H1WrTAddJrwut8OoPjfauaztMQmRwV5fQTUyNVJCLiUXXe4lGEyYIL2oFDpP7UtgbGJXCt72wT0z2S3Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/tsconfig-utils@8.59.2': - resolution: {integrity: sha512-BKK4alN7oi4C/zv4VqHQ+uRU+lTa6JGIZ7s1juw7b3RHo9OfKB+bKX3u0iVZetdsUCBBkSbdWbarJbmN0fTeSw==} + '@typescript-eslint/tsconfig-utils@8.59.4': + resolution: {integrity: sha512-DLCpnKgD4alVxTBSKulK+gU1KCqOgUXfDRDXh2mZgzokQKa/70ax93I2uVO3m/LLvIAtWZIFoiifudmIqAxpMA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/type-utils@8.59.2': - resolution: {integrity: sha512-nhqaj1nmTdVVl/BP5omXNRGO38jn5iosis2vbdmupF2txCf8ylWT8lx+JlvMYYVqzGVKtjojUFoQ3JRWK+mfzQ==} + '@typescript-eslint/type-utils@8.59.4': + resolution: {integrity: sha512-uonTuPAAKr9XaBGqJ3LjYTh72zy5DyGesljO9gtmk/eFW0W1fRHjnwVYKB35Lm8d5Q5CluEW3gPHjTvZTmgrfA==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -1420,21 +1217,25 @@ packages: resolution: {integrity: sha512-e82GVOE8Ps3E++Egvb6Y3Dw0S10u8NkQ9KXmtRhCWJJ8kDhOJTvtMAWnFL16kB1583goCWXsr0NieKCZMs2/0Q==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} - '@typescript-eslint/typescript-estree@8.59.2': - resolution: {integrity: sha512-o0XPGNwcWw+FIwStOWn+BwBuEmL6QXP0rsvAFg7ET1dey1Nr6Wb1ac8p5HEsK0ygO/6mUxlk+YWQD9xcb/nnXg==} + '@typescript-eslint/types@8.59.4': + resolution: {integrity: sha512-F1o7WJcCq+bc8dwcO/YsSEOudAH8RDtaOhM6wcAQhcUsFhnWQl81JKy48q1hoxAU0qrzM89+31GYh1515Zde3Q==} + engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} + + '@typescript-eslint/typescript-estree@8.59.4': + resolution: {integrity: sha512-F+RuOmcDXo4+TPdfd/TCLS3m2nw8gE9XXyZLrA3JBfaA5tz9TtdkyD3YJFmPxulyc2cKbEok/CvFE3MgSLWnag==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/utils@8.59.2': - resolution: {integrity: sha512-Juw3EinkXqjaffxz6roowvV7GZT/kET5vSKKZT6upl5TXdWkLkYmNPXwDDL2Vkt2DPn0nODIS4egC/0AGxKo/Q==} + '@typescript-eslint/utils@8.59.4': + resolution: {integrity: sha512-cYXeNAUsG4lJo5dbc1FcKm+JwIWrj1/UpTORsC6tGMjEZ81DYcvIr9/ueikhMa/Y/gDQYGp+YX9/xQrXje5BJw==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 typescript: '>=4.8.4 <6.1.0' - '@typescript-eslint/visitor-keys@8.59.2': - resolution: {integrity: sha512-NwjLUnGy8/Zfx23fl50tRC8rYaYnM52xNRYFAXvmiil9yh1+K6aRVQMnzW6gQB/1DLgWt977lYQn7C+wtgXZiA==} + '@typescript-eslint/visitor-keys@8.59.4': + resolution: {integrity: sha512-U3gxVaDVnuZKhSspW/MzMxE1kq7zOdc072FcSNoqA1I9p8HyKbBFfEHoWckBAMgNMph4MamwS5iTVzFmrnt8TQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} '@vitest/expect@3.2.4': @@ -1484,6 +1285,10 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + agent-base@6.0.2: + resolution: {integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==} + engines: {node: '>= 6.0.0'} + ajv-formats@3.0.1: resolution: {integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==} peerDependencies: @@ -1526,13 +1331,9 @@ packages: resolution: {integrity: sha512-0qWUglt9JEqLFr3w1I1pbrChn1grhaiAR2ocX1PP/flRmxgtwTzPFFFnfIlD6aMOLQZgSuCRlidD70lvx8yhzg==} engines: {node: '>=14'} - archiver-utils@5.0.2: - resolution: {integrity: sha512-wuLJMmIBQYCsGZgYLTy5FIB2pF6Lfb6cXMSF8Qywwk3t20zWnAi7zLcQFdKQmIB8wyZpY5ER38x08GbwtR2cLA==} - engines: {node: '>= 14'} - - archiver@7.0.1: - resolution: {integrity: sha512-ZcbTaIqJOfCc03QwD468Unz/5Ir8ATtvAHsK+FdXbDIbGfihqh9mrvdcYunQzqn4HrvWWaFyaxJhGZagaJJpPQ==} - engines: {node: '>= 14'} + archiver@8.0.0: + resolution: {integrity: sha512-fV1orZfsnPn9BaSByR/qE67rJCLJEy2Ox5bq7nJh+jquWaNh6Sfec75kJ2T6PtdGUbPQlrVoSVCEOa5SdiTQ1g==} + engines: {node: '>=18'} argparse@2.0.1: resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==} @@ -1560,8 +1361,8 @@ packages: atomically@2.1.1: resolution: {integrity: sha512-P4w9o2dqARji6P7MHprklbfiArZAWvo07yW7qs3pdljb3BWr12FIB7W+p0zJiuiVsUpRO0iZn1kFFcpPegg0tQ==} - axios@1.16.0: - resolution: {integrity: sha512-6hp5CwvTPlN2A31g5dxnwAX0orzM7pmCRDLnZSX772mv8WDqICwFjowHuPs04Mc8deIld1+ejhtaMn5vp6b+1w==} + axios@1.16.1: + resolution: {integrity: sha512-caYkukvroVPO8KrzuJEb50Hm07KwfBZPEC3VeFHTsqWHvKTsy54hjJz9BS/cdaypROE2rH6xvm9mHX4fgWkr3A==} b4a@1.8.1: resolution: {integrity: sha512-aiqre1Nr0B/6DgE2N5vwTc+2/oQZ4Wh1t4NznYY4E00y8LCt6NqdRv81so00oo27D8MVKTpUa/MwUUtBLXCoDw==} @@ -1578,8 +1379,8 @@ packages: resolution: {integrity: sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==} engines: {node: 18 || 20 || >=22} - bare-events@2.8.2: - resolution: {integrity: sha512-riJjyv1/mHLIPX4RwiK+oW9/4c3TEUeORHKefKAKnZ5kyslbN+HXowtbaVEqt4IMUB7OXlfixcs6gsFeo/jhiQ==} + bare-events@2.8.3: + resolution: {integrity: sha512-HdUm8EMQBLaJvGUdidNNbqpA1kYkwNcb+MYxkxCLAPJGQzlv9J0C24h8V65Z4c5GLd/JEALDvpFCQgpLJqc0zw==} peerDependencies: bare-abort-controller: '*' peerDependenciesMeta: @@ -1760,9 +1561,9 @@ packages: compare-func@2.0.0: resolution: {integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==} - compress-commons@6.0.2: - resolution: {integrity: sha512-6FqVXeETqWPoGcfzrXb37E50NP0LXT8kAMu5ooZayhWWdgEY4lBEEcbQNXtkuKQsGduxiIcI4gOTsxTmuq/bSg==} - engines: {node: '>= 14'} + compress-commons@7.0.1: + resolution: {integrity: sha512-g0S8KAD8qf4+V//pr3BfB1aBnARLXNz2Gx+jmHU0LEriUuoQUOPOulVquHKTJ8+EAIIO7fhseNDr9wK5Q9FKBQ==} + engines: {node: '>=18'} concat-stream@2.0.0: resolution: {integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==} @@ -1824,9 +1625,9 @@ packages: engines: {node: '>=0.8'} hasBin: true - crc32-stream@6.0.0: - resolution: {integrity: sha512-piICUB6ei4IlTv1+653yq5+KoqfBYmj9bw6LqXoOneTMDXk5nM1qt12mFW1caG3LlJXEKW1Bp0WggEmIfQB34g==} - engines: {node: '>= 14'} + crc32-stream@7.0.1: + resolution: {integrity: sha512-IBWsY8xznyQrcHn8h4bC8/4ErNke5elzgG8GcqF4RFPw6aHkWWRc7Tgw6upjaTX/CT/yQgqYENkxYsTYN+hW2g==} + engines: {node: '>=18'} cross-env@10.1.0: resolution: {integrity: sha512-GsYosgnACZTADcmEyJctkJIoqAhHjttw7RsFrVoJNXbsWWqaq6Ym+7kZjq6mS45O0jij6vtiReppKQEtqWy6Dw==} @@ -1908,9 +1709,6 @@ packages: resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==} engines: {node: '>= 0.4'} - eastasianwidth@0.2.0: - resolution: {integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==} - ejs@3.1.10: resolution: {integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==} engines: {node: '>=0.10.0'} @@ -1922,9 +1720,6 @@ packages: emoji-regex@8.0.0: resolution: {integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==} - emoji-regex@9.2.2: - resolution: {integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==} - env-paths@2.2.1: resolution: {integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==} engines: {node: '>=6'} @@ -1991,8 +1786,8 @@ packages: resolution: {integrity: sha512-tD40eHxA35h0PEIZNeIjkHoDR4YjjJp34biM0mDvplBe//mB+IHCqHDGV7pxF+7MklTvighcCPPZC7ynWyjdTA==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} - eslint@10.3.0: - resolution: {integrity: sha512-XbEXaRva5cF0ZQB8w6MluHA0kZZfV2DuCMJ3ozyEOHLwDpZX2Lmm/7Pp0xdJmI0GL1W05VH5VwIFHEm1Vcw2gw==} + eslint@10.4.0: + resolution: {integrity: sha512-loXy6bWOoP3EP6JA7jo6p5jMpBJmHmsNZM5SFRHLdh1MGOPurMnNBj4ZlAbaqUAaQWbCr7jHV4P7gzAyryZWkQ==} engines: {node: ^20.19.0 || ^22.13.0 || >=24} hasBin: true peerDependencies: @@ -2084,8 +1879,8 @@ packages: fast-xml-builder@1.2.0: resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==} - fast-xml-parser@5.7.2: - resolution: {integrity: sha512-P7oW7tLbYnhOLQk/Gv7cZgzgMPP/XN03K02/Jy6Y/NHzyIAIpxuZIM/YqAkfiXFPxA2CTm7NtCijK9EDu09u2w==} + fast-xml-parser@5.7.3: + resolution: {integrity: sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==} hasBin: true fastest-levenshtein@1.0.16: @@ -2139,10 +1934,6 @@ packages: debug: optional: true - foreground-child@3.3.1: - resolution: {integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==} - engines: {node: '>=14'} - form-data-encoder@2.1.4: resolution: {integrity: sha512-yDYSgNMraqvnxiEXO4hi88+YZxaHC6QKzb5N84iRCTDeRO7ZALpir/lVmf/uXUhnwUr2O4HU8s/n6x+yNjQkHw==} engines: {node: '>= 14.17'} @@ -2223,11 +2014,6 @@ packages: resolution: {integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==} engines: {node: '>=10.13.0'} - glob@10.5.0: - resolution: {integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==} - deprecated: Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me - hasBin: true - glob@13.0.6: resolution: {integrity: sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==} engines: {node: 18 || 20 || >=22} @@ -2291,6 +2077,10 @@ packages: resolution: {integrity: sha512-V5nVw1PAOgfI3Lmeaj2Exmeg7fenjhRUgz1lPSezy1CuhPYbgQtbQj4jZfEAEMlaL+vupsvhjqCyjzob0yxsmQ==} engines: {node: '>=10.19.0'} + https-proxy-agent@5.0.1: + resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} + engines: {node: '>= 6'} + human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} @@ -2431,9 +2221,6 @@ packages: isexe@2.0.0: resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} - jackspeak@3.4.3: - resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} - jake@10.9.4: resolution: {integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==} engines: {node: '>=10'} @@ -2614,10 +2401,6 @@ packages: resolution: {integrity: sha512-7o1wEA2RyMP7Iu7GNba9vc0RWWGACJOCZBJX2GJWip0ikV+wcOsgVuY9uE8CPiyQhkGFSlhuSkZPavN7u1c2Fw==} engines: {node: '>=10'} - minimatch@9.0.9: - resolution: {integrity: sha512-OBwBN9AL4dqmETlpS2zasx+vTeWclWzkblfZk7KTA5j3jeOONz/tRCnZomUyvNg83wL5Zv9Ss6HMJXAgL8R2Yg==} - engines: {node: '>=16 || 14 >=14.17'} - minimist@1.2.8: resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==} @@ -2687,8 +2470,8 @@ packages: number-allocator@1.0.14: resolution: {integrity: sha512-OrL44UTVAvkKdOdRQZIJpLkAdjXGTRda052sN4sO77bKEzYYqWKMBjQvrJFzqygI99gL6Z4u2xctPW1tB8ErvA==} - oclif@4.23.0: - resolution: {integrity: sha512-0Rz8YsJx6NQORMgyDeDr6i0OlJa6h4oLXBht9iRZhn/YI/by/ONKgcJIPXyTgeLK21JmhbFqJn6Y1AME0EH1Dw==} + oclif@4.23.7: + resolution: {integrity: sha512-rog7/P6l6PXe7O3zWMcKB4prQm35z6NyDfpED6B3UwnPr1Fy+KWdcBHSr6Er3AjmvYsP5wsJwwPEsxUfvMNsyg==} engines: {node: '>=18.0.0'} hasBin: true @@ -2704,8 +2487,8 @@ packages: resolution: {integrity: sha512-smsWv2LzFjP03xmvFoJ331ss6h+jixfA4UUV/Bsiyuu4YJPfN+FIQGOIiv4w9/+MoHkfkJ22UIaQWRVFRfH6Vw==} engines: {node: '>=20'} - optionator@0.9.3: - resolution: {integrity: sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==} + optionator@0.9.4: + resolution: {integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==} engines: {node: '>= 0.8.0'} ora@9.4.0: @@ -2724,8 +2507,8 @@ packages: resolution: {integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==} engines: {node: '>=10'} - p-queue@9.2.0: - resolution: {integrity: sha512-dWgLE8AH0HjQ9fe74pUkKkvzzYT18Inp4zra3lKHnnwqGvcfcUBrvF2EAVX+envufDNBOzpPq/IBUONDbI7+3g==} + p-queue@9.3.0: + resolution: {integrity: sha512-7NED7xhQ74Ngp4JP/2e0VZHp7vSWfJfqeiR92jPgxsz6m0Se4P03YoTKa9dDXyZ3r6P616gUXttrB6nnHYKang==} engines: {node: '>=20'} p-timeout@7.0.1: @@ -2780,10 +2563,6 @@ packages: resolution: {integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==} engines: {node: '>=12'} - path-scurry@1.11.1: - resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} - engines: {node: '>=16 || 14 >=14.18'} - path-scurry@2.0.2: resolution: {integrity: sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==} engines: {node: 18 || 20 || >=22} @@ -2806,13 +2585,13 @@ packages: resolution: {integrity: sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==} engines: {node: '>=12'} - playwright-core@1.59.1: - resolution: {integrity: sha512-HBV/RJg81z5BiiZ9yPzIiClYV/QMsDCKUyogwH9p3MCP6IYjUFu/MActgYAvK0oWyV9NlwM3GLBjADyWgydVyg==} + playwright-core@1.60.0: + resolution: {integrity: sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==} engines: {node: '>=18'} hasBin: true - playwright@1.59.1: - resolution: {integrity: sha512-C8oWjPR3F81yljW9o5OxcWzfh6avkVwDD2VYdwIGqTkl+OGFISgypqzfu7dOe4QNLL2aqcWBmI3PMtLIK233lw==} + playwright@1.60.0: + resolution: {integrity: sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==} engines: {node: '>=18'} hasBin: true @@ -2869,8 +2648,9 @@ packages: resolution: {integrity: sha512-oIGGmcpTLwPga8Bn6/Z75SVaH1z5dUut2ibSyAMVhmUggWpmDn2dapB0n7f8nwaSiRtepAsfJyfXIO5DCVAODg==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} - readdir-glob@1.1.3: - resolution: {integrity: sha512-v05I2k7xN8zXvPD9N+z/uhXPaj0sUFCe2rcWZIpBsqxfP7xXFQ0tipAd/wjj1YxWyWtUS5IDJpOG82JKt2EAVA==} + readdir-glob@3.0.0: + resolution: {integrity: sha512-AhNB2KgKeVJr16nK9LLZbJNWnYoT23ZrumNKFDebHBdkC8KHSqWo871JAUhoWC/RtjEVdqNMFpM6qrwRbaUqpw==} + engines: {node: '>=18'} recast@0.23.11: resolution: {integrity: sha512-YTUo+Flmw4ZXiWfQKGcwwc11KnoRAYgzAE2E7mXKCjSviTKShtxBsN6YUUBB2gtaBzKzeKunxhUwNHQuRryhWA==} @@ -2937,8 +2717,8 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} - semver@7.7.4: - resolution: {integrity: sha512-vFKC2IEtQnVhpT78h1Yp8wzwrf8CM+MzKMHGJZfBtzhZNycRFnXsHk6E5TxIkkMsgNS7mdX3AGB7x2QM2di4lA==} + semver@7.8.1: + resolution: {integrity: sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==} engines: {node: '>=10'} hasBin: true @@ -3041,10 +2821,6 @@ packages: resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} engines: {node: '>=8'} - string-width@5.1.2: - resolution: {integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==} - engines: {node: '>=12'} - string-width@7.2.0: resolution: {integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==} engines: {node: '>=18'} @@ -3175,8 +2951,8 @@ packages: typedarray@0.0.6: resolution: {integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==} - typescript-eslint@8.59.2: - resolution: {integrity: sha512-pJw051uomb3ZeCzGTpRb8RbEqB5Y4WWet8gl/GcTlU35BSx0PVdZ86/bqkQCyKKuraVQEK7r6kBHQXF+fBhkoQ==} + typescript-eslint@8.59.4: + resolution: {integrity: sha512-Rw6+44QNFaXtgHSjPy+Kw8hrJniMYzR85E9yLmOLcfZ91/rz+JXQbDTCmc6ccxMPY6K6PgAq26f0JCBfR7LIPQ==} engines: {node: ^18.18.0 || ^20.9.0 || >=21.1.0} peerDependencies: eslint: ^8.57.0 || ^9.0.0 || ^10.0.0 @@ -3322,6 +3098,10 @@ packages: resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} engines: {node: '>=8'} + word-wrap@1.2.5: + resolution: {integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==} + engines: {node: '>=0.10.0'} + wordwrap@1.0.0: resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} @@ -3345,10 +3125,6 @@ packages: resolution: {integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==} engines: {node: '>=10'} - wrap-ansi@8.1.0: - resolution: {integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==} - engines: {node: '>=12'} - wrap-ansi@9.0.2: resolution: {integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==} engines: {node: '>=18'} @@ -3406,31 +3182,29 @@ packages: resolution: {integrity: sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==} engines: {node: '>=18'} - zip-stream@6.0.1: - resolution: {integrity: sha512-zK7YHHz4ZXpW89AHXUPbQVGKI7uvkd3hzusTdotCg1UxyaVtg0zFJSTfW/Dq5f7OBBVnq6cZIaC8Ti4hb6dtCA==} - engines: {node: '>= 14'} + zip-stream@7.0.5: + resolution: {integrity: sha512-dSvYKdvLsAHCDqPOhIwk/q5CvuWtTB3Dgpoe0uVEFjTzIOAmsQpprX25InCvrvJsirEbu1OHyy67n/kAj1Sw/w==} + engines: {node: '>=18'} snapshots: - '@aashutoshrathi/word-wrap@1.2.6': {} - '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.8 + '@aws-sdk/types': 3.973.9 tslib: 2.8.1 '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.8 + '@aws-sdk/types': 3.973.9 tslib: 2.8.1 '@aws-crypto/sha1-browser@5.2.0': dependencies: '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.8 + '@aws-sdk/types': 3.973.9 '@aws-sdk/util-locate-window': 3.965.5 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -3440,7 +3214,7 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.8 + '@aws-sdk/types': 3.973.9 '@aws-sdk/util-locate-window': 3.965.5 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -3448,7 +3222,7 @@ snapshots: '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.8 + '@aws-sdk/types': 3.973.9 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -3457,452 +3231,237 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.973.8 + '@aws-sdk/types': 3.973.9 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-cloudfront@3.1009.0': + '@aws-sdk/client-cloudfront@3.1052.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.8 - '@aws-sdk/credential-provider-node': 3.972.39 - '@aws-sdk/middleware-host-header': 3.972.10 - '@aws-sdk/middleware-logger': 3.972.10 - '@aws-sdk/middleware-recursion-detection': 3.972.11 - '@aws-sdk/middleware-user-agent': 3.972.38 - '@aws-sdk/region-config-resolver': 3.972.13 - '@aws-sdk/types': 3.973.8 - '@aws-sdk/util-endpoints': 3.996.8 - '@aws-sdk/util-user-agent-browser': 3.972.10 - '@aws-sdk/util-user-agent-node': 3.973.24 - '@smithy/config-resolver': 4.5.0 - '@smithy/core': 3.24.0 - '@smithy/fetch-http-handler': 5.4.0 - '@smithy/hash-node': 4.3.0 - '@smithy/invalid-dependency': 4.3.0 - '@smithy/middleware-content-length': 4.3.0 - '@smithy/middleware-endpoint': 4.5.0 - '@smithy/middleware-retry': 4.6.0 - '@smithy/middleware-serde': 4.3.0 - '@smithy/middleware-stack': 4.3.0 - '@smithy/node-config-provider': 4.4.0 - '@smithy/node-http-handler': 4.7.0 - '@smithy/protocol-http': 5.4.0 - '@smithy/smithy-client': 4.13.0 - '@smithy/types': 4.14.1 - '@smithy/url-parser': 4.3.0 - '@smithy/util-base64': 4.4.0 - '@smithy/util-body-length-browser': 4.3.0 - '@smithy/util-body-length-node': 4.3.0 - '@smithy/util-defaults-mode-browser': 4.4.0 - '@smithy/util-defaults-mode-node': 4.3.0 - '@smithy/util-endpoints': 3.5.0 - '@smithy/util-middleware': 4.3.0 - '@smithy/util-retry': 4.4.0 - '@smithy/util-stream': 4.6.0 - '@smithy/util-utf8': 4.3.0 - '@smithy/util-waiter': 4.4.0 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/credential-provider-node': 3.972.44 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/fetch-http-handler': 5.4.4 + '@smithy/node-http-handler': 4.7.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/client-s3@3.1014.0': + '@aws-sdk/client-s3@3.1052.0': dependencies: '@aws-crypto/sha1-browser': 5.2.0 '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.8 - '@aws-sdk/credential-provider-node': 3.972.39 - '@aws-sdk/middleware-bucket-endpoint': 3.972.10 - '@aws-sdk/middleware-expect-continue': 3.972.10 - '@aws-sdk/middleware-flexible-checksums': 3.974.16 - '@aws-sdk/middleware-host-header': 3.972.10 - '@aws-sdk/middleware-location-constraint': 3.972.10 - '@aws-sdk/middleware-logger': 3.972.10 - '@aws-sdk/middleware-recursion-detection': 3.972.11 - '@aws-sdk/middleware-sdk-s3': 3.972.37 - '@aws-sdk/middleware-ssec': 3.972.10 - '@aws-sdk/middleware-user-agent': 3.972.38 - '@aws-sdk/region-config-resolver': 3.972.13 - '@aws-sdk/signature-v4-multi-region': 3.996.25 - '@aws-sdk/types': 3.973.8 - '@aws-sdk/util-endpoints': 3.996.8 - '@aws-sdk/util-user-agent-browser': 3.972.10 - '@aws-sdk/util-user-agent-node': 3.973.24 - '@smithy/config-resolver': 4.5.0 - '@smithy/core': 3.24.0 - '@smithy/eventstream-serde-browser': 4.3.0 - '@smithy/eventstream-serde-config-resolver': 4.4.0 - '@smithy/eventstream-serde-node': 4.3.0 - '@smithy/fetch-http-handler': 5.4.0 - '@smithy/hash-blob-browser': 4.3.0 - '@smithy/hash-node': 4.3.0 - '@smithy/hash-stream-node': 4.3.0 - '@smithy/invalid-dependency': 4.3.0 - '@smithy/md5-js': 4.3.0 - '@smithy/middleware-content-length': 4.3.0 - '@smithy/middleware-endpoint': 4.5.0 - '@smithy/middleware-retry': 4.6.0 - '@smithy/middleware-serde': 4.3.0 - '@smithy/middleware-stack': 4.3.0 - '@smithy/node-config-provider': 4.4.0 - '@smithy/node-http-handler': 4.7.0 - '@smithy/protocol-http': 5.4.0 - '@smithy/smithy-client': 4.13.0 - '@smithy/types': 4.14.1 - '@smithy/url-parser': 4.3.0 - '@smithy/util-base64': 4.4.0 - '@smithy/util-body-length-browser': 4.3.0 - '@smithy/util-body-length-node': 4.3.0 - '@smithy/util-defaults-mode-browser': 4.4.0 - '@smithy/util-defaults-mode-node': 4.3.0 - '@smithy/util-endpoints': 3.5.0 - '@smithy/util-middleware': 4.3.0 - '@smithy/util-retry': 4.4.0 - '@smithy/util-stream': 4.6.0 - '@smithy/util-utf8': 4.3.0 - '@smithy/util-waiter': 4.4.0 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/core@3.974.8': - dependencies: - '@aws-sdk/types': 3.973.8 - '@aws-sdk/xml-builder': 3.972.22 - '@smithy/core': 3.24.0 - '@smithy/node-config-provider': 4.4.0 - '@smithy/property-provider': 4.3.0 - '@smithy/protocol-http': 5.4.0 - '@smithy/signature-v4': 5.4.0 - '@smithy/smithy-client': 4.13.0 - '@smithy/types': 4.14.1 - '@smithy/util-base64': 4.4.0 - '@smithy/util-middleware': 4.3.0 - '@smithy/util-retry': 4.4.0 - '@smithy/util-utf8': 4.3.0 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/credential-provider-node': 3.972.44 + '@aws-sdk/middleware-bucket-endpoint': 3.972.15 + '@aws-sdk/middleware-expect-continue': 3.972.13 + '@aws-sdk/middleware-flexible-checksums': 3.974.21 + '@aws-sdk/middleware-location-constraint': 3.972.11 + '@aws-sdk/middleware-sdk-s3': 3.972.42 + '@aws-sdk/middleware-ssec': 3.972.11 + '@aws-sdk/signature-v4-multi-region': 3.996.28 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/fetch-http-handler': 5.4.4 + '@smithy/node-http-handler': 4.7.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/crc64-nvme@3.972.7': + '@aws-sdk/core@3.974.13': dependencies: - '@smithy/types': 4.14.1 + '@aws-sdk/types': 3.973.9 + '@aws-sdk/xml-builder': 3.972.25 + '@aws/lambda-invoke-store': 0.2.4 + '@smithy/core': 3.24.4 + '@smithy/signature-v4': 5.4.4 + '@smithy/types': 4.14.2 + bowser: 2.14.1 tslib: 2.8.1 - '@aws-sdk/credential-provider-env@3.972.34': + '@aws-sdk/crc64-nvme@3.972.9': dependencies: - '@aws-sdk/core': 3.974.8 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.3.0 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - - '@aws-sdk/credential-provider-http@3.972.36': - dependencies: - '@aws-sdk/core': 3.974.8 - '@aws-sdk/types': 3.973.8 - '@smithy/fetch-http-handler': 5.4.0 - '@smithy/node-http-handler': 4.7.0 - '@smithy/property-provider': 4.3.0 - '@smithy/protocol-http': 5.4.0 - '@smithy/smithy-client': 4.13.0 - '@smithy/types': 4.14.1 - '@smithy/util-stream': 4.6.0 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/credential-provider-ini@3.972.38': - dependencies: - '@aws-sdk/core': 3.974.8 - '@aws-sdk/credential-provider-env': 3.972.34 - '@aws-sdk/credential-provider-http': 3.972.36 - '@aws-sdk/credential-provider-login': 3.972.38 - '@aws-sdk/credential-provider-process': 3.972.34 - '@aws-sdk/credential-provider-sso': 3.972.38 - '@aws-sdk/credential-provider-web-identity': 3.972.38 - '@aws-sdk/nested-clients': 3.997.6 - '@aws-sdk/types': 3.973.8 - '@smithy/credential-provider-imds': 4.3.0 - '@smithy/property-provider': 4.3.0 - '@smithy/shared-ini-file-loader': 4.5.0 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-login@3.972.38': + '@aws-sdk/credential-provider-env@3.972.39': dependencies: - '@aws-sdk/core': 3.974.8 - '@aws-sdk/nested-clients': 3.997.6 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.3.0 - '@smithy/protocol-http': 5.4.0 - '@smithy/shared-ini-file-loader': 4.5.0 - '@smithy/types': 4.14.1 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/credential-provider-node@3.972.39': - dependencies: - '@aws-sdk/credential-provider-env': 3.972.34 - '@aws-sdk/credential-provider-http': 3.972.36 - '@aws-sdk/credential-provider-ini': 3.972.38 - '@aws-sdk/credential-provider-process': 3.972.34 - '@aws-sdk/credential-provider-sso': 3.972.38 - '@aws-sdk/credential-provider-web-identity': 3.972.38 - '@aws-sdk/types': 3.973.8 - '@smithy/credential-provider-imds': 4.3.0 - '@smithy/property-provider': 4.3.0 - '@smithy/shared-ini-file-loader': 4.5.0 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/credential-provider-process@3.972.34': + '@aws-sdk/credential-provider-http@3.972.41': dependencies: - '@aws-sdk/core': 3.974.8 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.3.0 - '@smithy/shared-ini-file-loader': 4.5.0 - '@smithy/types': 4.14.1 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/fetch-http-handler': 5.4.4 + '@smithy/node-http-handler': 4.7.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/credential-provider-sso@3.972.38': - dependencies: - '@aws-sdk/core': 3.974.8 - '@aws-sdk/nested-clients': 3.997.6 - '@aws-sdk/token-providers': 3.1041.0 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.3.0 - '@smithy/shared-ini-file-loader': 4.5.0 - '@smithy/types': 4.14.1 + '@aws-sdk/credential-provider-ini@3.972.43': + dependencies: + '@aws-sdk/core': 3.974.13 + '@aws-sdk/credential-provider-env': 3.972.39 + '@aws-sdk/credential-provider-http': 3.972.41 + '@aws-sdk/credential-provider-login': 3.972.43 + '@aws-sdk/credential-provider-process': 3.972.39 + '@aws-sdk/credential-provider-sso': 3.972.43 + '@aws-sdk/credential-provider-web-identity': 3.972.43 + '@aws-sdk/nested-clients': 3.997.11 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/credential-provider-imds': 4.3.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/credential-provider-web-identity@3.972.38': + '@aws-sdk/credential-provider-login@3.972.43': dependencies: - '@aws-sdk/core': 3.974.8 - '@aws-sdk/nested-clients': 3.997.6 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.3.0 - '@smithy/shared-ini-file-loader': 4.5.0 - '@smithy/types': 4.14.1 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/nested-clients': 3.997.11 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/middleware-bucket-endpoint@3.972.10': - dependencies: - '@aws-sdk/types': 3.973.8 - '@aws-sdk/util-arn-parser': 3.972.3 - '@smithy/node-config-provider': 4.4.0 - '@smithy/protocol-http': 5.4.0 - '@smithy/types': 4.14.1 - '@smithy/util-config-provider': 4.3.0 + '@aws-sdk/credential-provider-node@3.972.44': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.39 + '@aws-sdk/credential-provider-http': 3.972.41 + '@aws-sdk/credential-provider-ini': 3.972.43 + '@aws-sdk/credential-provider-process': 3.972.39 + '@aws-sdk/credential-provider-sso': 3.972.43 + '@aws-sdk/credential-provider-web-identity': 3.972.43 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/credential-provider-imds': 4.3.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/middleware-expect-continue@3.972.10': + '@aws-sdk/credential-provider-process@3.972.39': dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/protocol-http': 5.4.0 - '@smithy/types': 4.14.1 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/middleware-flexible-checksums@3.974.16': + '@aws-sdk/credential-provider-sso@3.972.43': dependencies: - '@aws-crypto/crc32': 5.2.0 - '@aws-crypto/crc32c': 5.2.0 - '@aws-crypto/util': 5.2.0 - '@aws-sdk/core': 3.974.8 - '@aws-sdk/crc64-nvme': 3.972.7 - '@aws-sdk/types': 3.973.8 - '@smithy/is-array-buffer': 4.3.0 - '@smithy/node-config-provider': 4.4.0 - '@smithy/protocol-http': 5.4.0 - '@smithy/types': 4.14.1 - '@smithy/util-middleware': 4.3.0 - '@smithy/util-stream': 4.6.0 - '@smithy/util-utf8': 4.3.0 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/nested-clients': 3.997.11 + '@aws-sdk/token-providers': 3.1052.0 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/middleware-host-header@3.972.10': + '@aws-sdk/credential-provider-web-identity@3.972.43': dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/protocol-http': 5.4.0 - '@smithy/types': 4.14.1 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/nested-clients': 3.997.11 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/middleware-location-constraint@3.972.10': + '@aws-sdk/middleware-bucket-endpoint@3.972.15': dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/types': 4.14.1 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/middleware-logger@3.972.10': + '@aws-sdk/middleware-expect-continue@3.972.13': dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/types': 4.14.1 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/middleware-recursion-detection@3.972.11': + '@aws-sdk/middleware-flexible-checksums@3.974.21': dependencies: - '@aws-sdk/types': 3.973.8 - '@aws/lambda-invoke-store': 0.2.4 - '@smithy/protocol-http': 5.4.0 - '@smithy/types': 4.14.1 + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/crc64-nvme': 3.972.9 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/middleware-sdk-s3@3.972.37': - dependencies: - '@aws-sdk/core': 3.974.8 - '@aws-sdk/types': 3.973.8 - '@aws-sdk/util-arn-parser': 3.972.3 - '@smithy/core': 3.24.0 - '@smithy/node-config-provider': 4.4.0 - '@smithy/protocol-http': 5.4.0 - '@smithy/signature-v4': 5.4.0 - '@smithy/smithy-client': 4.13.0 - '@smithy/types': 4.14.1 - '@smithy/util-config-provider': 4.3.0 - '@smithy/util-middleware': 4.3.0 - '@smithy/util-stream': 4.6.0 - '@smithy/util-utf8': 4.3.0 + '@aws-sdk/middleware-location-constraint@3.972.11': + dependencies: + '@aws-sdk/types': 3.973.9 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/middleware-ssec@3.972.10': + '@aws-sdk/middleware-sdk-s3@3.972.42': dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/types': 4.14.1 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/signature-v4-multi-region': 3.996.28 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/signature-v4': 5.4.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/middleware-user-agent@3.972.38': + '@aws-sdk/middleware-ssec@3.972.11': dependencies: - '@aws-sdk/core': 3.974.8 - '@aws-sdk/types': 3.973.8 - '@aws-sdk/util-endpoints': 3.996.8 - '@smithy/core': 3.24.0 - '@smithy/protocol-http': 5.4.0 - '@smithy/types': 4.14.1 - '@smithy/util-retry': 4.4.0 + '@aws-sdk/types': 3.973.9 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/nested-clients@3.997.6': + '@aws-sdk/nested-clients@3.997.11': dependencies: '@aws-crypto/sha256-browser': 5.2.0 '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.974.8 - '@aws-sdk/middleware-host-header': 3.972.10 - '@aws-sdk/middleware-logger': 3.972.10 - '@aws-sdk/middleware-recursion-detection': 3.972.11 - '@aws-sdk/middleware-user-agent': 3.972.38 - '@aws-sdk/region-config-resolver': 3.972.13 - '@aws-sdk/signature-v4-multi-region': 3.996.25 - '@aws-sdk/types': 3.973.8 - '@aws-sdk/util-endpoints': 3.996.8 - '@aws-sdk/util-user-agent-browser': 3.972.10 - '@aws-sdk/util-user-agent-node': 3.973.24 - '@smithy/config-resolver': 4.5.0 - '@smithy/core': 3.24.0 - '@smithy/fetch-http-handler': 5.4.0 - '@smithy/hash-node': 4.3.0 - '@smithy/invalid-dependency': 4.3.0 - '@smithy/middleware-content-length': 4.3.0 - '@smithy/middleware-endpoint': 4.5.0 - '@smithy/middleware-retry': 4.6.0 - '@smithy/middleware-serde': 4.3.0 - '@smithy/middleware-stack': 4.3.0 - '@smithy/node-config-provider': 4.4.0 - '@smithy/node-http-handler': 4.7.0 - '@smithy/protocol-http': 5.4.0 - '@smithy/smithy-client': 4.13.0 - '@smithy/types': 4.14.1 - '@smithy/url-parser': 4.3.0 - '@smithy/util-base64': 4.4.0 - '@smithy/util-body-length-browser': 4.3.0 - '@smithy/util-body-length-node': 4.3.0 - '@smithy/util-defaults-mode-browser': 4.4.0 - '@smithy/util-defaults-mode-node': 4.3.0 - '@smithy/util-endpoints': 3.5.0 - '@smithy/util-middleware': 4.3.0 - '@smithy/util-retry': 4.4.0 - '@smithy/util-utf8': 4.3.0 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/signature-v4-multi-region': 3.996.28 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/fetch-http-handler': 5.4.4 + '@smithy/node-http-handler': 4.7.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/region-config-resolver@3.972.13': + '@aws-sdk/signature-v4-multi-region@3.996.28': dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/config-resolver': 4.5.0 - '@smithy/node-config-provider': 4.4.0 - '@smithy/types': 4.14.1 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/signature-v4': 5.4.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/signature-v4-multi-region@3.996.25': + '@aws-sdk/token-providers@3.1052.0': dependencies: - '@aws-sdk/middleware-sdk-s3': 3.972.37 - '@aws-sdk/types': 3.973.8 - '@smithy/protocol-http': 5.4.0 - '@smithy/signature-v4': 5.4.0 - '@smithy/types': 4.14.1 + '@aws-sdk/core': 3.974.13 + '@aws-sdk/nested-clients': 3.997.11 + '@aws-sdk/types': 3.973.9 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@aws-sdk/token-providers@3.1041.0': - dependencies: - '@aws-sdk/core': 3.974.8 - '@aws-sdk/nested-clients': 3.997.6 - '@aws-sdk/types': 3.973.8 - '@smithy/property-provider': 4.3.0 - '@smithy/shared-ini-file-loader': 4.5.0 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - - '@aws-sdk/types@3.973.8': + '@aws-sdk/types@3.973.9': dependencies: - '@smithy/types': 4.14.1 - tslib: 2.8.1 - - '@aws-sdk/util-arn-parser@3.972.3': - dependencies: - tslib: 2.8.1 - - '@aws-sdk/util-endpoints@3.996.8': - dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/types': 4.14.1 - '@smithy/url-parser': 4.3.0 - '@smithy/util-endpoints': 3.5.0 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@aws-sdk/util-locate-window@3.965.5': dependencies: tslib: 2.8.1 - '@aws-sdk/util-user-agent-browser@3.972.10': - dependencies: - '@aws-sdk/types': 3.973.8 - '@smithy/types': 4.14.1 - bowser: 2.14.1 - tslib: 2.8.1 - - '@aws-sdk/util-user-agent-node@3.973.24': - dependencies: - '@aws-sdk/middleware-user-agent': 3.972.38 - '@aws-sdk/types': 3.973.8 - '@smithy/node-config-provider': 4.4.0 - '@smithy/types': 4.14.1 - '@smithy/util-config-provider': 4.3.0 - tslib: 2.8.1 - - '@aws-sdk/xml-builder@3.972.22': + '@aws-sdk/xml-builder@3.972.25': dependencies: '@nodable/entities': 2.1.0 - '@smithy/types': 4.14.1 - fast-xml-parser: 5.7.2 + '@smithy/types': 4.14.2 + fast-xml-parser: 5.7.3 tslib: 2.8.1 '@aws/lambda-invoke-store@0.2.4': {} @@ -3957,7 +3516,7 @@ snapshots: '@commitlint/is-ignored@20.5.0': dependencies: '@commitlint/types': 20.5.0 - semver: 7.7.4 + semver: 7.8.1 '@commitlint/lint@20.5.3': dependencies: @@ -4031,7 +3590,7 @@ snapshots: dependencies: '@simple-libs/child-process-utils': 1.0.2 '@simple-libs/stream-utils': 1.2.0 - semver: 7.7.4 + semver: 7.8.1 optionalDependencies: conventional-commits-parser: 6.4.0 @@ -4115,9 +3674,9 @@ snapshots: '@esbuild/win32-x64@0.27.7': optional: true - '@eslint-community/eslint-utils@4.9.1(eslint@10.3.0(jiti@2.7.0))': + '@eslint-community/eslint-utils@4.9.1(eslint@10.4.0(jiti@2.7.0))': dependencies: - eslint: 10.3.0(jiti@2.7.0) + eslint: 10.4.0(jiti@2.7.0) eslint-visitor-keys: 3.4.3 '@eslint-community/regexpp@4.12.2': {} @@ -4130,7 +3689,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@eslint/config-helpers@0.5.5': + '@eslint/config-helpers@0.6.0': dependencies: '@eslint/core': 1.2.1 @@ -4138,9 +3697,9 @@ snapshots: dependencies: '@types/json-schema': 7.0.15 - '@eslint/js@10.0.1(eslint@10.3.0(jiti@2.7.0))': + '@eslint/js@10.0.1(eslint@10.4.0(jiti@2.7.0))': optionalDependencies: - eslint: 10.3.0(jiti@2.7.0) + eslint: 10.4.0(jiti@2.7.0) '@eslint/object-schema@3.0.5': {} @@ -4149,18 +3708,21 @@ snapshots: '@eslint/core': 1.2.1 levn: 0.4.1 - '@humanfs/core@0.19.1': {} + '@humanfs/core@0.19.2': + dependencies: + '@humanfs/types': 0.15.0 - '@humanfs/node@0.16.6': + '@humanfs/node@0.16.8': dependencies: - '@humanfs/core': 0.19.1 - '@humanwhocodes/retry': 0.3.1 + '@humanfs/core': 0.19.2 + '@humanfs/types': 0.15.0 + '@humanwhocodes/retry': 0.4.3 - '@humanwhocodes/module-importer@1.0.1': {} + '@humanfs/types@0.15.0': {} - '@humanwhocodes/retry@0.3.1': {} + '@humanwhocodes/module-importer@1.0.1': {} - '@humanwhocodes/retry@0.4.2': {} + '@humanwhocodes/retry@0.4.3': {} '@inquirer/ansi@1.0.2': {} @@ -4328,15 +3890,6 @@ snapshots: optionalDependencies: '@types/node': 22.19.18 - '@isaacs/cliui@8.0.2': - dependencies: - string-width: 5.1.2 - string-width-cjs: string-width@4.2.3 - strip-ansi: 7.2.0 - strip-ansi-cjs: strip-ansi@6.0.1 - wrap-ansi: 8.1.0 - wrap-ansi-cjs: wrap-ansi@7.0.0 - '@isaacs/fs-minipass@4.0.1': dependencies: minipass: 7.1.3 @@ -4345,28 +3898,7 @@ snapshots: '@nodable/entities@2.1.0': {} - '@oclif/core@4.11.1': - dependencies: - ansi-escapes: 4.3.2 - ansis: 3.17.0 - clean-stack: 3.0.1 - cli-spinners: 2.9.2 - debug: 4.4.3(supports-color@8.1.1) - ejs: 3.1.10 - get-package-type: 0.1.0 - indent-string: 4.0.0 - is-wsl: 2.2.0 - lilconfig: 3.1.3 - minimatch: 10.2.5 - semver: 7.7.4 - string-width: 4.2.3 - supports-color: 8.1.1 - tinyglobby: 0.2.16 - widest-line: 3.1.0 - wordwrap: 1.0.0 - wrap-ansi: 7.0.0 - - '@oclif/core@4.9.0': + '@oclif/core@4.11.3': dependencies: ansi-escapes: 4.3.2 ansis: 3.17.0 @@ -4379,7 +3911,7 @@ snapshots: is-wsl: 2.2.0 lilconfig: 3.1.3 minimatch: 10.2.5 - semver: 7.7.4 + semver: 7.8.1 string-width: 4.2.3 supports-color: 8.1.1 tinyglobby: 0.2.16 @@ -4387,22 +3919,22 @@ snapshots: wordwrap: 1.0.0 wrap-ansi: 7.0.0 - '@oclif/plugin-help@6.2.46': + '@oclif/plugin-help@6.2.49': dependencies: - '@oclif/core': 4.11.1 + '@oclif/core': 4.11.3 - '@oclif/plugin-not-found@3.2.82(@types/node@22.19.18)': + '@oclif/plugin-not-found@3.2.86(@types/node@22.19.18)': dependencies: '@inquirer/prompts': 7.10.1(@types/node@22.19.18) - '@oclif/core': 4.11.1 + '@oclif/core': 4.11.3 ansis: 3.17.0 fast-levenshtein: 3.0.0 transitivePeerDependencies: - '@types/node' - '@oclif/plugin-warn-if-update-available@3.1.62': + '@oclif/plugin-warn-if-update-available@3.1.65': dependencies: - '@oclif/core': 4.11.1 + '@oclif/core': 4.11.3 ansis: 3.17.0 debug: 4.4.3(supports-color@8.1.1) http-call: 5.3.0 @@ -4411,12 +3943,9 @@ snapshots: transitivePeerDependencies: - supports-color - '@pkgjs/parseargs@0.11.0': - optional: true - - '@playwright/test@1.59.1': + '@playwright/test@1.60.0': dependencies: - playwright: 1.59.1 + playwright: 1.60.0 '@pnpm/config.env-replace@1.1.0': {} @@ -4517,163 +4046,42 @@ snapshots: '@sindresorhus/merge-streams@4.0.0': {} - '@smithy/config-resolver@4.5.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/core@3.24.0': + '@smithy/core@3.24.4': dependencies: '@aws-crypto/crc32': 5.2.0 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - - '@smithy/credential-provider-imds@4.3.0': - dependencies: - '@smithy/core': 3.24.0 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - - '@smithy/eventstream-serde-browser@4.3.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/eventstream-serde-config-resolver@4.4.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/eventstream-serde-node@4.3.0': - dependencies: - '@smithy/core': 3.24.0 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@smithy/fetch-http-handler@5.4.0': + '@smithy/credential-provider-imds@4.3.4': dependencies: - '@smithy/core': 3.24.0 - '@smithy/types': 4.14.1 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@smithy/hash-blob-browser@4.3.0': + '@smithy/fetch-http-handler@5.4.4': dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/hash-node@4.3.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/hash-stream-node@4.3.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/invalid-dependency@4.3.0': - dependencies: - '@smithy/core': 3.24.0 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 '@smithy/is-array-buffer@2.2.0': dependencies: tslib: 2.8.1 - '@smithy/is-array-buffer@4.3.0': + '@smithy/node-http-handler@4.7.4': dependencies: - '@smithy/core': 3.24.0 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@smithy/md5-js@4.3.0': + '@smithy/signature-v4@5.4.4': dependencies: - '@smithy/core': 3.24.0 + '@smithy/core': 3.24.4 + '@smithy/types': 4.14.2 tslib: 2.8.1 - '@smithy/middleware-content-length@4.3.0': + '@smithy/types@4.14.2': dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/middleware-endpoint@4.5.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/middleware-retry@4.6.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/middleware-serde@4.3.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/middleware-stack@4.3.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/node-config-provider@4.4.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/node-http-handler@4.7.0': - dependencies: - '@smithy/core': 3.24.0 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - - '@smithy/property-provider@4.3.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/protocol-http@5.4.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/shared-ini-file-loader@4.5.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/signature-v4@5.4.0': - dependencies: - '@smithy/core': 3.24.0 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - - '@smithy/smithy-client@4.13.0': - dependencies: - '@smithy/core': 3.24.0 - '@smithy/types': 4.14.1 - tslib: 2.8.1 - - '@smithy/types@4.14.1': - dependencies: - tslib: 2.8.1 - - '@smithy/url-parser@4.3.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/util-base64@4.4.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/util-body-length-browser@4.3.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/util-body-length-node@4.3.0': - dependencies: - '@smithy/core': 3.24.0 tslib: 2.8.1 '@smithy/util-buffer-from@2.2.0': @@ -4681,61 +4089,16 @@ snapshots: '@smithy/is-array-buffer': 2.2.0 tslib: 2.8.1 - '@smithy/util-config-provider@4.3.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/util-defaults-mode-browser@4.4.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/util-defaults-mode-node@4.3.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/util-endpoints@3.5.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/util-middleware@4.3.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/util-retry@4.4.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/util-stream@4.6.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - '@smithy/util-utf8@2.3.0': dependencies: '@smithy/util-buffer-from': 2.2.0 tslib: 2.8.1 - '@smithy/util-utf8@4.3.0': - dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@smithy/util-waiter@4.4.0': + '@stylistic/eslint-plugin@5.10.0(eslint@10.4.0(jiti@2.7.0))': dependencies: - '@smithy/core': 3.24.0 - tslib: 2.8.1 - - '@stylistic/eslint-plugin@5.10.0(eslint@10.3.0(jiti@2.7.0))': - dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0)) '@typescript-eslint/types': 8.59.2 - eslint: 10.3.0(jiti@2.7.0) + eslint: 10.4.0(jiti@2.7.0) eslint-visitor-keys: 4.2.1 espree: 10.4.0 estraverse: 5.3.0 @@ -4754,8 +4117,6 @@ snapshots: '@types/deep-eql': 4.0.2 assertion-error: 2.0.1 - '@types/config@3.3.5': {} - '@types/debug@4.1.13': dependencies: '@types/ms': 2.1.0 @@ -4807,23 +4168,21 @@ snapshots: dependencies: '@types/node': 22.19.18 - '@types/uuid@10.0.0': {} - '@types/wrap-ansi@3.0.0': {} '@types/ws@8.18.1': dependencies: '@types/node': 22.19.18 - '@typescript-eslint/eslint-plugin@8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/eslint-plugin@8.59.4(@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: '@eslint-community/regexpp': 4.12.2 - '@typescript-eslint/parser': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/scope-manager': 8.59.2 - '@typescript-eslint/type-utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.59.2 - eslint: 10.3.0(jiti@2.7.0) + '@typescript-eslint/parser': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/scope-manager': 8.59.4 + '@typescript-eslint/type-utils': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.59.4 + eslint: 10.4.0(jiti@2.7.0) ignore: 7.0.5 natural-compare: 1.4.0 ts-api-utils: 2.5.0(typescript@6.0.3) @@ -4831,43 +4190,43 @@ snapshots: transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@typescript-eslint/scope-manager': 8.59.2 - '@typescript-eslint/types': 8.59.2 - '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3) - '@typescript-eslint/visitor-keys': 8.59.2 + '@typescript-eslint/scope-manager': 8.59.4 + '@typescript-eslint/types': 8.59.4 + '@typescript-eslint/typescript-estree': 8.59.4(typescript@6.0.3) + '@typescript-eslint/visitor-keys': 8.59.4 debug: 4.4.3(supports-color@8.1.1) - eslint: 10.3.0(jiti@2.7.0) + eslint: 10.4.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/project-service@8.59.2(typescript@6.0.3)': + '@typescript-eslint/project-service@8.59.4(typescript@6.0.3)': dependencies: - '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@6.0.3) - '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/tsconfig-utils': 8.59.4(typescript@6.0.3) + '@typescript-eslint/types': 8.59.4 debug: 4.4.3(supports-color@8.1.1) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/scope-manager@8.59.2': + '@typescript-eslint/scope-manager@8.59.4': dependencies: - '@typescript-eslint/types': 8.59.2 - '@typescript-eslint/visitor-keys': 8.59.2 + '@typescript-eslint/types': 8.59.4 + '@typescript-eslint/visitor-keys': 8.59.4 - '@typescript-eslint/tsconfig-utils@8.59.2(typescript@6.0.3)': + '@typescript-eslint/tsconfig-utils@8.59.4(typescript@6.0.3)': dependencies: typescript: 6.0.3 - '@typescript-eslint/type-utils@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/type-utils@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@typescript-eslint/types': 8.59.2 - '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/types': 8.59.4 + '@typescript-eslint/typescript-estree': 8.59.4(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) debug: 4.4.3(supports-color@8.1.1) - eslint: 10.3.0(jiti@2.7.0) + eslint: 10.4.0(jiti@2.7.0) ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: @@ -4875,35 +4234,37 @@ snapshots: '@typescript-eslint/types@8.59.2': {} - '@typescript-eslint/typescript-estree@8.59.2(typescript@6.0.3)': + '@typescript-eslint/types@8.59.4': {} + + '@typescript-eslint/typescript-estree@8.59.4(typescript@6.0.3)': dependencies: - '@typescript-eslint/project-service': 8.59.2(typescript@6.0.3) - '@typescript-eslint/tsconfig-utils': 8.59.2(typescript@6.0.3) - '@typescript-eslint/types': 8.59.2 - '@typescript-eslint/visitor-keys': 8.59.2 + '@typescript-eslint/project-service': 8.59.4(typescript@6.0.3) + '@typescript-eslint/tsconfig-utils': 8.59.4(typescript@6.0.3) + '@typescript-eslint/types': 8.59.4 + '@typescript-eslint/visitor-keys': 8.59.4 debug: 4.4.3(supports-color@8.1.1) minimatch: 10.2.5 - semver: 7.7.4 + semver: 7.8.1 tinyglobby: 0.2.16 ts-api-utils: 2.5.0(typescript@6.0.3) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/utils@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3)': + '@typescript-eslint/utils@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3)': dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)) - '@typescript-eslint/scope-manager': 8.59.2 - '@typescript-eslint/types': 8.59.2 - '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3) - eslint: 10.3.0(jiti@2.7.0) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0)) + '@typescript-eslint/scope-manager': 8.59.4 + '@typescript-eslint/types': 8.59.4 + '@typescript-eslint/typescript-estree': 8.59.4(typescript@6.0.3) + eslint: 10.4.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color - '@typescript-eslint/visitor-keys@8.59.2': + '@typescript-eslint/visitor-keys@8.59.4': dependencies: - '@typescript-eslint/types': 8.59.2 + '@typescript-eslint/types': 8.59.4 eslint-visitor-keys: 5.0.1 '@vitest/expect@3.2.4': @@ -4962,6 +4323,12 @@ snapshots: acorn@8.16.0: {} + agent-base@6.0.2: + dependencies: + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + ajv-formats@3.0.1(ajv@8.20.0): optionalDependencies: ajv: 8.20.0 @@ -5000,25 +4367,17 @@ snapshots: ansis@3.17.0: {} - archiver-utils@5.0.2: + archiver@8.0.0: dependencies: - glob: 10.5.0 - graceful-fs: 4.2.11 - is-stream: 2.0.1 - lazystream: 1.0.1 - lodash: 4.18.1 - normalize-path: 3.0.0 - readable-stream: 4.7.0 - - archiver@7.0.1: - dependencies: - archiver-utils: 5.0.2 async: 3.2.6 buffer-crc32: 1.0.0 + is-stream: 4.0.1 + lazystream: 1.0.1 + normalize-path: 3.0.0 readable-stream: 4.7.0 - readdir-glob: 1.1.3 + readdir-glob: 3.0.0 tar-stream: 3.2.0 - zip-stream: 6.0.1 + zip-stream: 7.0.5 transitivePeerDependencies: - bare-abort-controller - bare-buffer @@ -5047,13 +4406,15 @@ snapshots: stubborn-fs: 2.0.0 when-exit: 2.1.5 - axios@1.16.0(debug@4.4.3): + axios@1.16.1(debug@4.4.3): dependencies: follow-redirects: 1.16.0(debug@4.4.3) form-data: 4.0.5 + https-proxy-agent: 5.0.1 proxy-from-env: 2.1.0 transitivePeerDependencies: - debug + - supports-color b4a@1.8.1: {} @@ -5061,13 +4422,13 @@ snapshots: balanced-match@4.0.4: {} - bare-events@2.8.2: {} + bare-events@2.8.3: {} bare-fs@4.7.1: dependencies: - bare-events: 2.8.2 + bare-events: 2.8.3 bare-path: 3.0.0 - bare-stream: 2.13.1(bare-events@2.8.2) + bare-stream: 2.13.1(bare-events@2.8.3) bare-url: 2.4.3 fast-fifo: 1.3.2 transitivePeerDependencies: @@ -5080,12 +4441,12 @@ snapshots: dependencies: bare-os: 3.9.1 - bare-stream@2.13.1(bare-events@2.8.2): + bare-stream@2.13.1(bare-events@2.8.3): dependencies: streamx: 2.25.0 teex: 1.0.1 optionalDependencies: - bare-events: 2.8.2 + bare-events: 2.8.3 transitivePeerDependencies: - react-native-b4a @@ -5247,11 +4608,11 @@ snapshots: array-ify: 1.0.0 dot-prop: 5.3.0 - compress-commons@6.0.2: + compress-commons@7.0.1: dependencies: crc-32: 1.2.2 - crc32-stream: 6.0.0 - is-stream: 2.0.1 + crc32-stream: 7.0.1 + is-stream: 4.0.1 normalize-path: 3.0.0 readable-stream: 4.7.0 @@ -5271,7 +4632,7 @@ snapshots: dot-prop: 10.1.0 env-paths: 3.0.0 json-schema-typed: 8.0.2 - semver: 7.7.4 + semver: 7.8.1 uint8array-extras: 1.5.0 config-chain@1.1.13: @@ -5324,7 +4685,7 @@ snapshots: crc-32@1.2.2: {} - crc32-stream@6.0.0: + crc32-stream@7.0.1: dependencies: crc-32: 1.2.2 readable-stream: 4.7.0 @@ -5396,8 +4757,6 @@ snapshots: es-errors: 1.3.0 gopd: 1.2.0 - eastasianwidth@0.2.0: {} - ejs@3.1.10: dependencies: jake: 10.9.4 @@ -5406,8 +4765,6 @@ snapshots: emoji-regex@8.0.0: {} - emoji-regex@9.2.2: {} - env-paths@2.2.1: {} env-paths@3.0.0: {} @@ -5483,17 +4840,17 @@ snapshots: eslint-visitor-keys@5.0.1: {} - eslint@10.3.0(jiti@2.7.0): + eslint@10.4.0(jiti@2.7.0): dependencies: - '@eslint-community/eslint-utils': 4.9.1(eslint@10.3.0(jiti@2.7.0)) + '@eslint-community/eslint-utils': 4.9.1(eslint@10.4.0(jiti@2.7.0)) '@eslint-community/regexpp': 4.12.2 '@eslint/config-array': 0.23.5 - '@eslint/config-helpers': 0.5.5 + '@eslint/config-helpers': 0.6.0 '@eslint/core': 1.2.1 '@eslint/plugin-kit': 0.7.1 - '@humanfs/node': 0.16.6 + '@humanfs/node': 0.16.8 '@humanwhocodes/module-importer': 1.0.1 - '@humanwhocodes/retry': 0.4.2 + '@humanwhocodes/retry': 0.4.3 '@types/estree': 1.0.9 ajv: 6.15.0 cross-spawn: 7.0.6 @@ -5514,7 +4871,7 @@ snapshots: json-stable-stringify-without-jsonify: 1.0.1 minimatch: 10.2.5 natural-compare: 1.4.0 - optionator: 0.9.3 + optionator: 0.9.4 optionalDependencies: jiti: 2.7.0 transitivePeerDependencies: @@ -5556,7 +4913,7 @@ snapshots: events-universal@1.0.1: dependencies: - bare-events: 2.8.2 + bare-events: 2.8.3 transitivePeerDependencies: - bare-abort-controller @@ -5615,7 +4972,7 @@ snapshots: path-expression-matcher: 1.5.0 xml-naming: 0.1.0 - fast-xml-parser@5.7.2: + fast-xml-parser@5.7.3: dependencies: '@nodable/entities': 2.1.0 fast-xml-builder: 1.2.0 @@ -5664,11 +5021,6 @@ snapshots: optionalDependencies: debug: 4.4.3(supports-color@8.1.1) - foreground-child@3.3.1: - dependencies: - cross-spawn: 7.0.6 - signal-exit: 4.1.0 - form-data-encoder@2.1.4: {} form-data@4.0.5: @@ -5746,15 +5098,6 @@ snapshots: dependencies: is-glob: 4.0.3 - glob@10.5.0: - dependencies: - foreground-child: 3.3.1 - jackspeak: 3.4.3 - minimatch: 9.0.9 - minipass: 7.1.3 - package-json-from-dist: 1.0.1 - path-scurry: 1.11.1 - glob@13.0.6: dependencies: minimatch: 10.2.5 @@ -5828,6 +5171,13 @@ snapshots: quick-lru: 5.1.1 resolve-alpn: 1.2.1 + https-proxy-agent@5.0.1: + dependencies: + agent-base: 6.0.2 + debug: 4.4.3(supports-color@8.1.1) + transitivePeerDependencies: + - supports-color + human-signals@2.1.0: {} human-signals@8.0.1: {} @@ -5915,12 +5265,6 @@ snapshots: isexe@2.0.0: {} - jackspeak@3.4.3: - dependencies: - '@isaacs/cliui': 8.0.2 - optionalDependencies: - '@pkgjs/parseargs': 0.11.0 - jake@10.9.4: dependencies: async: 3.2.6 @@ -6072,10 +5416,6 @@ snapshots: dependencies: brace-expansion: 2.1.0 - minimatch@9.0.9: - dependencies: - brace-expansion: 2.1.0 - minimist@1.2.8: {} minipass@7.1.3: {} @@ -6135,7 +5475,7 @@ snapshots: normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - semver: 7.7.4 + semver: 7.8.1 validate-npm-package-license: 3.0.4 normalize-path@3.0.0: {} @@ -6158,17 +5498,17 @@ snapshots: transitivePeerDependencies: - supports-color - oclif@4.23.0(@types/node@22.19.18): + oclif@4.23.7(@types/node@22.19.18): dependencies: - '@aws-sdk/client-cloudfront': 3.1009.0 - '@aws-sdk/client-s3': 3.1014.0 + '@aws-sdk/client-cloudfront': 3.1052.0 + '@aws-sdk/client-s3': 3.1052.0 '@inquirer/confirm': 3.2.0 '@inquirer/input': 2.3.0 '@inquirer/select': 2.5.0 - '@oclif/core': 4.9.0 - '@oclif/plugin-help': 6.2.46 - '@oclif/plugin-not-found': 3.2.82(@types/node@22.19.18) - '@oclif/plugin-warn-if-update-available': 3.1.62 + '@oclif/core': 4.11.3 + '@oclif/plugin-help': 6.2.49 + '@oclif/plugin-not-found': 3.2.86(@types/node@22.19.18) + '@oclif/plugin-warn-if-update-available': 3.1.65 ansis: 3.17.0 async-retry: 1.3.3 change-case: 4.1.2 @@ -6180,13 +5520,12 @@ snapshots: got: 13.0.0 lodash: 4.18.1 normalize-package-data: 6.0.2 - semver: 7.7.4 + semver: 7.8.1 sort-package-json: 2.15.1 tiny-jsonc: 1.0.2 validate-npm-package-name: 5.0.1 transitivePeerDependencies: - '@types/node' - - aws-crt - supports-color onetime@5.1.2: @@ -6206,14 +5545,14 @@ snapshots: powershell-utils: 0.1.0 wsl-utils: 0.3.1 - optionator@0.9.3: + optionator@0.9.4: dependencies: - '@aashutoshrathi/word-wrap': 1.2.6 deep-is: 0.1.4 fast-levenshtein: 2.0.6 levn: 0.4.1 prelude-ls: 1.2.1 type-check: 0.4.0 + word-wrap: 1.2.5 ora@9.4.0: dependencies: @@ -6236,7 +5575,7 @@ snapshots: dependencies: p-limit: 3.1.0 - p-queue@9.2.0: + p-queue@9.3.0: dependencies: eventemitter3: 5.0.4 p-timeout: 7.0.1 @@ -6290,11 +5629,6 @@ snapshots: path-key@4.0.0: {} - path-scurry@1.11.1: - dependencies: - lru-cache: 10.4.3 - minipass: 7.1.3 - path-scurry@2.0.2: dependencies: lru-cache: 11.3.6 @@ -6310,11 +5644,11 @@ snapshots: picomatch@4.0.4: {} - playwright-core@1.59.1: {} + playwright-core@1.60.0: {} - playwright@1.59.1: + playwright@1.60.0: dependencies: - playwright-core: 1.59.1 + playwright-core: 1.60.0 optionalDependencies: fsevents: 2.3.2 @@ -6373,9 +5707,9 @@ snapshots: process: 0.11.10 string_decoder: 1.3.0 - readdir-glob@1.1.3: + readdir-glob@3.0.0: dependencies: - minimatch: 5.1.9 + minimatch: 10.2.5 recast@0.23.11: dependencies: @@ -6456,7 +5790,7 @@ snapshots: safer-buffer@2.1.2: {} - semver@7.7.4: {} + semver@7.8.1: {} sentence-case@3.0.4: dependencies: @@ -6511,7 +5845,7 @@ snapshots: get-stdin: 9.0.0 git-hooks-list: 3.2.0 is-plain-obj: 4.1.0 - semver: 7.7.4 + semver: 7.8.1 sort-object-keys: 1.1.3 tinyglobby: 0.2.16 @@ -6558,12 +5892,6 @@ snapshots: is-fullwidth-code-point: 3.0.0 strip-ansi: 6.0.1 - string-width@5.1.2: - dependencies: - eastasianwidth: 0.2.0 - emoji-regex: 9.2.2 - strip-ansi: 7.2.0 - string-width@7.2.0: dependencies: emoji-regex: 10.6.0 @@ -6694,13 +6022,13 @@ snapshots: typedarray@0.0.6: {} - typescript-eslint@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3): + typescript-eslint@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3): dependencies: - '@typescript-eslint/eslint-plugin': 8.59.2(@typescript-eslint/parser@8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/parser': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - '@typescript-eslint/typescript-estree': 8.59.2(typescript@6.0.3) - '@typescript-eslint/utils': 8.59.2(eslint@10.3.0(jiti@2.7.0))(typescript@6.0.3) - eslint: 10.3.0(jiti@2.7.0) + '@typescript-eslint/eslint-plugin': 8.59.4(@typescript-eslint/parser@8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3))(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/parser': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) + '@typescript-eslint/typescript-estree': 8.59.4(typescript@6.0.3) + '@typescript-eslint/utils': 8.59.4(eslint@10.4.0(jiti@2.7.0))(typescript@6.0.3) + eslint: 10.4.0(jiti@2.7.0) typescript: 6.0.3 transitivePeerDependencies: - supports-color @@ -6834,6 +6162,8 @@ snapshots: dependencies: string-width: 4.2.3 + word-wrap@1.2.5: {} + wordwrap@1.0.0: {} worker-factory@7.0.49: @@ -6875,12 +6205,6 @@ snapshots: string-width: 4.2.3 strip-ansi: 6.0.1 - wrap-ansi@8.1.0: - dependencies: - ansi-styles: 6.2.3 - string-width: 5.1.2 - strip-ansi: 7.2.0 - wrap-ansi@9.0.2: dependencies: ansi-styles: 6.2.3 @@ -6920,8 +6244,8 @@ snapshots: yoctocolors@2.1.2: {} - zip-stream@6.0.1: + zip-stream@7.0.5: dependencies: - archiver-utils: 5.0.2 - compress-commons: 6.0.2 + compress-commons: 7.0.1 + normalize-path: 3.0.0 readable-stream: 4.7.0