@zuplo/cli 7.10.0 → 7.11.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/common/worker-output.d.ts +7 -0
- package/dist/common/worker-output.d.ts.map +1 -1
- package/dist/common/worker-output.js +39 -0
- package/dist/common/worker-output.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@hono/node-server/README.md +2 -0
- package/node_modules/@hono/node-server/dist/index.cjs +1 -1
- package/node_modules/@hono/node-server/dist/index.mjs +1 -1
- package/node_modules/@hono/node-server/dist/serve-static.cjs +2 -1
- package/node_modules/@hono/node-server/dist/serve-static.mjs +2 -1
- package/node_modules/@hono/node-server/package.json +1 -1
- package/node_modules/@posthog/core/dist/metrics/index.d.ts +9 -0
- package/node_modules/@posthog/core/dist/metrics/index.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/metrics/index.js +38 -3
- package/node_modules/@posthog/core/dist/metrics/index.mjs +38 -3
- package/node_modules/@posthog/core/dist/metrics/types.d.ts +7 -2
- package/node_modules/@posthog/core/dist/metrics/types.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/traces/ids.d.ts.map +1 -1
- package/node_modules/@posthog/core/dist/traces/ids.js +2 -2
- package/node_modules/@posthog/core/dist/traces/ids.mjs +2 -2
- package/node_modules/@posthog/core/dist/types.d.ts +1 -1
- package/node_modules/@posthog/core/dist/types.d.ts.map +1 -1
- package/node_modules/@posthog/core/package.json +4 -3
- package/node_modules/@posthog/core/src/metrics/index.spec.ts +75 -0
- package/node_modules/@posthog/core/src/metrics/index.ts +60 -0
- package/node_modules/@posthog/core/src/metrics/types.ts +7 -1
- package/node_modules/@posthog/core/src/traces/ids.ts +4 -2
- package/node_modules/@posthog/core/src/types.ts +1 -1
- package/node_modules/@posthog/types/dist/capture-metric.d.ts +10 -0
- package/node_modules/@posthog/types/dist/capture-metric.d.ts.map +1 -1
- package/node_modules/@posthog/types/dist/capture.d.ts +1 -1
- package/node_modules/@posthog/types/dist/capture.d.ts.map +1 -1
- package/node_modules/@posthog/types/dist/index.d.ts +1 -1
- package/node_modules/@posthog/types/dist/index.d.ts.map +1 -1
- package/node_modules/@posthog/types/package.json +1 -1
- package/node_modules/@posthog/types/src/capture-metric.ts +11 -0
- package/node_modules/@posthog/types/src/capture.ts +1 -1
- package/node_modules/@posthog/types/src/index.ts +1 -0
- package/node_modules/@zuplo/core/customer.cli.minified.js +272 -261
- package/node_modules/@zuplo/core/index.minified.js +276 -265
- package/node_modules/@zuplo/core/package.json +1 -1
- package/node_modules/@zuplo/graphql/package.json +1 -1
- package/node_modules/@zuplo/openapi-tools/package.json +5 -2
- package/node_modules/@zuplo/otel/package.json +1 -1
- package/node_modules/@zuplo/runtime/out/esm/{chunk-YJ2BHVUH.js → chunk-CDEAY3VY.js} +2 -2
- package/node_modules/@zuplo/runtime/out/esm/chunk-LVSZ3WTO.js +37 -0
- package/node_modules/@zuplo/runtime/out/esm/chunk-LVSZ3WTO.js.map +1 -0
- package/node_modules/@zuplo/runtime/out/esm/{chunk-VTO3F6DK.js → chunk-NUVXDVLJ.js} +2 -2
- package/node_modules/@zuplo/runtime/out/esm/{chunk-6YPRGG62.js → chunk-RHU3Z7DA.js} +108 -108
- package/node_modules/@zuplo/runtime/out/esm/chunk-RHU3Z7DA.js.map +1 -0
- package/node_modules/@zuplo/runtime/out/esm/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/esm/internal/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/esm/mcp-gateway/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/esm/mocks/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/esm/sdks/aws/index.js +1 -1
- package/node_modules/@zuplo/runtime/out/types/index.d.ts +15 -24
- package/node_modules/@zuplo/runtime/out/types/internal/index.d.ts +14 -0
- package/node_modules/@zuplo/runtime/package.json +1 -1
- package/package.json +15 -12
- package/dist/__tests__/archive-utils.test.d.ts +0 -2
- package/dist/__tests__/archive-utils.test.d.ts.map +0 -1
- package/dist/__tests__/archive-utils.test.js +0 -50
- package/dist/__tests__/archive-utils.test.js.map +0 -1
- package/dist/__tests__/import-openapi.test.d.ts +0 -2
- package/dist/__tests__/import-openapi.test.d.ts.map +0 -1
- package/dist/__tests__/import-openapi.test.js +0 -251
- package/dist/__tests__/import-openapi.test.js.map +0 -1
- package/dist/__tests__/integration/confirm-linked-config.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/confirm-linked-config.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/confirm-linked-config.integration.test.js +0 -202
- package/dist/__tests__/integration/confirm-linked-config.integration.test.js.map +0 -1
- package/dist/__tests__/integration/confirm-production-deploy.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/confirm-production-deploy.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/confirm-production-deploy.integration.test.js +0 -184
- package/dist/__tests__/integration/confirm-production-deploy.integration.test.js.map +0 -1
- package/dist/__tests__/integration/custom-domain.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/custom-domain.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/custom-domain.integration.test.js +0 -563
- package/dist/__tests__/integration/custom-domain.integration.test.js.map +0 -1
- package/dist/__tests__/integration/delete.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/delete.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/delete.integration.test.js +0 -262
- package/dist/__tests__/integration/delete.integration.test.js.map +0 -1
- package/dist/__tests__/integration/deploy.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/deploy.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/deploy.integration.test.js +0 -519
- package/dist/__tests__/integration/deploy.integration.test.js.map +0 -1
- package/dist/__tests__/integration/get-project-param.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/get-project-param.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/get-project-param.integration.test.js +0 -305
- package/dist/__tests__/integration/get-project-param.integration.test.js.map +0 -1
- package/dist/__tests__/integration/info.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/info.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/info.integration.test.js +0 -293
- package/dist/__tests__/integration/info.integration.test.js.map +0 -1
- package/dist/__tests__/integration/jest-mocks-setup.d.ts +0 -2
- package/dist/__tests__/integration/jest-mocks-setup.d.ts.map +0 -1
- package/dist/__tests__/integration/jest-mocks-setup.js +0 -104
- package/dist/__tests__/integration/jest-mocks-setup.js.map +0 -1
- package/dist/__tests__/integration/jest-setup.d.ts +0 -2
- package/dist/__tests__/integration/jest-setup.d.ts.map +0 -1
- package/dist/__tests__/integration/jest-setup.js +0 -12
- package/dist/__tests__/integration/jest-setup.js.map +0 -1
- package/dist/__tests__/integration/link.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/link.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/link.integration.test.js +0 -395
- package/dist/__tests__/integration/link.integration.test.js.map +0 -1
- package/dist/__tests__/integration/linked-config-cascade.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/linked-config-cascade.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/linked-config-cascade.integration.test.js +0 -179
- package/dist/__tests__/integration/linked-config-cascade.integration.test.js.map +0 -1
- package/dist/__tests__/integration/list.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/list.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/list.integration.test.js +0 -300
- package/dist/__tests__/integration/list.integration.test.js.map +0 -1
- package/dist/__tests__/integration/source-upgrade.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/source-upgrade.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/source-upgrade.integration.test.js +0 -100
- package/dist/__tests__/integration/source-upgrade.integration.test.js.map +0 -1
- package/dist/__tests__/integration/test-utils.d.ts +0 -30
- package/dist/__tests__/integration/test-utils.d.ts.map +0 -1
- package/dist/__tests__/integration/test-utils.js +0 -82
- package/dist/__tests__/integration/test-utils.js.map +0 -1
- package/dist/__tests__/integration/tunnel.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/tunnel.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/tunnel.integration.test.js +0 -486
- package/dist/__tests__/integration/tunnel.integration.test.js.map +0 -1
- package/dist/__tests__/integration/variable.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/variable.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/variable.integration.test.js +0 -258
- package/dist/__tests__/integration/variable.integration.test.js.map +0 -1
- package/dist/__tests__/integration/whoami.integration.test.d.ts +0 -2
- package/dist/__tests__/integration/whoami.integration.test.d.ts.map +0 -1
- package/dist/__tests__/integration/whoami.integration.test.js +0 -116
- package/dist/__tests__/integration/whoami.integration.test.js.map +0 -1
- package/dist/__tests__/outdated.test.d.ts +0 -2
- package/dist/__tests__/outdated.test.d.ts.map +0 -1
- package/dist/__tests__/outdated.test.js +0 -67
- package/dist/__tests__/outdated.test.js.map +0 -1
- package/dist/__tests__/populate.test.d.ts +0 -2
- package/dist/__tests__/populate.test.d.ts.map +0 -1
- package/dist/__tests__/populate.test.js +0 -445
- package/dist/__tests__/populate.test.js.map +0 -1
- package/dist/__tests__/tsconfig-upgrader.test.d.ts +0 -2
- package/dist/__tests__/tsconfig-upgrader.test.d.ts.map +0 -1
- package/dist/__tests__/tsconfig-upgrader.test.js +0 -31
- package/dist/__tests__/tsconfig-upgrader.test.js.map +0 -1
- package/dist/ca-certificate/validation.test.d.ts +0 -2
- package/dist/ca-certificate/validation.test.d.ts.map +0 -1
- package/dist/ca-certificate/validation.test.js +0 -131
- package/dist/ca-certificate/validation.test.js.map +0 -1
- package/dist/common/analytics/cli-invocation.test.d.ts +0 -2
- package/dist/common/analytics/cli-invocation.test.d.ts.map +0 -1
- package/dist/common/analytics/cli-invocation.test.js +0 -51
- package/dist/common/analytics/cli-invocation.test.js.map +0 -1
- package/dist/common/analytics/package-manager.test.d.ts +0 -2
- package/dist/common/analytics/package-manager.test.d.ts.map +0 -1
- package/dist/common/analytics/package-manager.test.js +0 -163
- package/dist/common/analytics/package-manager.test.js.map +0 -1
- package/dist/common/cli-dispatcher.test.d.ts +0 -2
- package/dist/common/cli-dispatcher.test.d.ts.map +0 -1
- package/dist/common/cli-dispatcher.test.js +0 -80
- package/dist/common/cli-dispatcher.test.js.map +0 -1
- package/dist/common/middleware/check-pnpm-lifecycle.test.d.ts +0 -2
- package/dist/common/middleware/check-pnpm-lifecycle.test.d.ts.map +0 -1
- package/dist/common/middleware/check-pnpm-lifecycle.test.js +0 -125
- package/dist/common/middleware/check-pnpm-lifecycle.test.js.map +0 -1
- package/dist/common/middleware/get-environment-param.test.d.ts +0 -2
- package/dist/common/middleware/get-environment-param.test.d.ts.map +0 -1
- package/dist/common/middleware/get-environment-param.test.js +0 -57
- package/dist/common/middleware/get-environment-param.test.js.map +0 -1
- package/dist/common/read-linked-config.test.d.ts +0 -2
- package/dist/common/read-linked-config.test.d.ts.map +0 -1
- package/dist/common/read-linked-config.test.js +0 -363
- package/dist/common/read-linked-config.test.js.map +0 -1
- package/dist/common/terminal.test.d.ts +0 -2
- package/dist/common/terminal.test.d.ts.map +0 -1
- package/dist/common/terminal.test.js +0 -101
- package/dist/common/terminal.test.js.map +0 -1
- package/dist/common/utils/build-environment-prompt-choices.test.d.ts +0 -2
- package/dist/common/utils/build-environment-prompt-choices.test.d.ts.map +0 -1
- package/dist/common/utils/build-environment-prompt-choices.test.js +0 -97
- package/dist/common/utils/build-environment-prompt-choices.test.js.map +0 -1
- package/dist/common/utils/format-environment-type.test.d.ts +0 -2
- package/dist/common/utils/format-environment-type.test.d.ts.map +0 -1
- package/dist/common/utils/format-environment-type.test.js +0 -32
- package/dist/common/utils/format-environment-type.test.js.map +0 -1
- package/dist/common/utils/pnpm-lifecycle.test.d.ts +0 -2
- package/dist/common/utils/pnpm-lifecycle.test.d.ts.map +0 -1
- package/dist/common/utils/pnpm-lifecycle.test.js +0 -196
- package/dist/common/utils/pnpm-lifecycle.test.js.map +0 -1
- package/dist/common/utils/pretty-print-environment-prompt.test.d.ts +0 -2
- package/dist/common/utils/pretty-print-environment-prompt.test.d.ts.map +0 -1
- package/dist/common/utils/pretty-print-environment-prompt.test.js +0 -42
- package/dist/common/utils/pretty-print-environment-prompt.test.js.map +0 -1
- package/dist/common/utils/sort-environments-for-prompt.test.d.ts +0 -2
- package/dist/common/utils/sort-environments-for-prompt.test.d.ts.map +0 -1
- package/dist/common/utils/sort-environments-for-prompt.test.js +0 -82
- package/dist/common/utils/sort-environments-for-prompt.test.js.map +0 -1
- package/dist/common/utils/stringify-config.test.d.ts +0 -2
- package/dist/common/utils/stringify-config.test.d.ts.map +0 -1
- package/dist/common/utils/stringify-config.test.js +0 -80
- package/dist/common/utils/stringify-config.test.js.map +0 -1
- package/dist/common/validators/argument-validators.spec.d.ts +0 -2
- package/dist/common/validators/argument-validators.spec.d.ts.map +0 -1
- package/dist/common/validators/argument-validators.spec.js +0 -181
- package/dist/common/validators/argument-validators.spec.js.map +0 -1
- package/dist/deploy/archive.local-registry.test.d.ts +0 -2
- package/dist/deploy/archive.local-registry.test.d.ts.map +0 -1
- package/dist/deploy/archive.local-registry.test.js +0 -100
- package/dist/deploy/archive.local-registry.test.js.map +0 -1
- package/dist/deploy/archive.test.d.ts +0 -2
- package/dist/deploy/archive.test.d.ts.map +0 -1
- package/dist/deploy/archive.test.js +0 -248
- package/dist/deploy/archive.test.js.map +0 -1
- package/dist/deploy/classify-build-probe.test.d.ts +0 -2
- package/dist/deploy/classify-build-probe.test.d.ts.map +0 -1
- package/dist/deploy/classify-build-probe.test.js +0 -51
- package/dist/deploy/classify-build-probe.test.js.map +0 -1
- package/dist/deploy/poll-deployment.test.d.ts +0 -2
- package/dist/deploy/poll-deployment.test.d.ts.map +0 -1
- package/dist/deploy/poll-deployment.test.js +0 -158
- package/dist/deploy/poll-deployment.test.js.map +0 -1
- package/dist/dev/zuplo-local-gitignore.test.d.ts +0 -2
- package/dist/dev/zuplo-local-gitignore.test.d.ts.map +0 -1
- package/dist/dev/zuplo-local-gitignore.test.js +0 -58
- package/dist/dev/zuplo-local-gitignore.test.js.map +0 -1
- package/dist/editor/e2e/editor.spec.d.ts +0 -2
- package/dist/editor/e2e/editor.spec.d.ts.map +0 -1
- package/dist/editor/e2e/editor.spec.js +0 -44
- package/dist/editor/e2e/editor.spec.js.map +0 -1
- package/dist/link/project-type.test.d.ts +0 -2
- package/dist/link/project-type.test.d.ts.map +0 -1
- package/dist/link/project-type.test.js +0 -225
- package/dist/link/project-type.test.js.map +0 -1
- package/dist/lint/resolve-binary.test.d.ts +0 -2
- package/dist/lint/resolve-binary.test.d.ts.map +0 -1
- package/dist/lint/resolve-binary.test.js +0 -155
- package/dist/lint/resolve-binary.test.js.map +0 -1
- package/dist/open-api/convert/handler.spec.d.ts +0 -2
- package/dist/open-api/convert/handler.spec.d.ts.map +0 -1
- package/dist/open-api/convert/handler.spec.js +0 -301
- package/dist/open-api/convert/handler.spec.js.map +0 -1
- package/dist/open-api/merge/handler.spec.d.ts +0 -2
- package/dist/open-api/merge/handler.spec.d.ts.map +0 -1
- package/dist/open-api/merge/handler.spec.js +0 -673
- package/dist/open-api/merge/handler.spec.js.map +0 -1
- package/dist/open-api/overlay/handler.spec.d.ts +0 -2
- package/dist/open-api/overlay/handler.spec.d.ts.map +0 -1
- package/dist/open-api/overlay/handler.spec.js +0 -346
- package/dist/open-api/overlay/handler.spec.js.map +0 -1
- package/dist/source/ai-gateway/files.test.d.ts +0 -2
- package/dist/source/ai-gateway/files.test.d.ts.map +0 -1
- package/dist/source/ai-gateway/files.test.js +0 -135
- package/dist/source/ai-gateway/files.test.js.map +0 -1
- package/dist/source/ai-gateway/handler.test.d.ts +0 -2
- package/dist/source/ai-gateway/handler.test.d.ts.map +0 -1
- package/dist/source/ai-gateway/handler.test.js +0 -113
- package/dist/source/ai-gateway/handler.test.js.map +0 -1
- package/dist/source/ai-gateway/package.test.d.ts +0 -2
- package/dist/source/ai-gateway/package.test.d.ts.map +0 -1
- package/dist/source/ai-gateway/package.test.js +0 -30
- package/dist/source/ai-gateway/package.test.js.map +0 -1
- package/dist/source/ai-gateway/planner.test.d.ts +0 -2
- package/dist/source/ai-gateway/planner.test.d.ts.map +0 -1
- package/dist/source/ai-gateway/planner.test.js +0 -330
- package/dist/source/ai-gateway/planner.test.js.map +0 -1
- package/dist/source/ai-gateway/release.test.d.ts +0 -2
- package/dist/source/ai-gateway/release.test.d.ts.map +0 -1
- package/dist/source/ai-gateway/release.test.js +0 -62
- package/dist/source/ai-gateway/release.test.js.map +0 -1
- package/dist/test/invoke-test.test.d.ts +0 -2
- package/dist/test/invoke-test.test.d.ts.map +0 -1
- package/dist/test/invoke-test.test.js +0 -150
- package/dist/test/invoke-test.test.js.map +0 -1
- package/dist/test/test-files.test.d.ts +0 -2
- package/dist/test/test-files.test.d.ts.map +0 -1
- package/dist/test/test-files.test.js +0 -57
- package/dist/test/test-files.test.js.map +0 -1
- package/node_modules/@zuplo/openapi-tools/dist/file-format.spec.d.ts +0 -2
- package/node_modules/@zuplo/openapi-tools/dist/file-format.spec.d.ts.map +0 -1
- package/node_modules/@zuplo/openapi-tools/dist/file-format.spec.js +0 -289
- package/node_modules/@zuplo/openapi-tools/dist/file-format.spec.js.map +0 -1
- package/node_modules/@zuplo/openapi-tools/dist/merge-fixtures.spec.d.ts +0 -2
- package/node_modules/@zuplo/openapi-tools/dist/merge-fixtures.spec.d.ts.map +0 -1
- package/node_modules/@zuplo/openapi-tools/dist/merge-fixtures.spec.js +0 -181
- package/node_modules/@zuplo/openapi-tools/dist/merge-fixtures.spec.js.map +0 -1
- package/node_modules/@zuplo/openapi-tools/dist/merge.spec.d.ts +0 -2
- package/node_modules/@zuplo/openapi-tools/dist/merge.spec.d.ts.map +0 -1
- package/node_modules/@zuplo/openapi-tools/dist/merge.spec.js +0 -399
- package/node_modules/@zuplo/openapi-tools/dist/merge.spec.js.map +0 -1
- package/node_modules/@zuplo/openapi-tools/dist/overlay.spec.d.ts +0 -2
- package/node_modules/@zuplo/openapi-tools/dist/overlay.spec.d.ts.map +0 -1
- package/node_modules/@zuplo/openapi-tools/dist/overlay.spec.js +0 -779
- package/node_modules/@zuplo/openapi-tools/dist/overlay.spec.js.map +0 -1
- package/node_modules/@zuplo/openapi-tools/dist/path-transform.spec.d.ts +0 -2
- package/node_modules/@zuplo/openapi-tools/dist/path-transform.spec.d.ts.map +0 -1
- package/node_modules/@zuplo/openapi-tools/dist/path-transform.spec.js +0 -269
- package/node_modules/@zuplo/openapi-tools/dist/path-transform.spec.js.map +0 -1
- package/node_modules/@zuplo/openapi-tools/dist/url-utils.spec.d.ts +0 -2
- package/node_modules/@zuplo/openapi-tools/dist/url-utils.spec.d.ts.map +0 -1
- package/node_modules/@zuplo/openapi-tools/dist/url-utils.spec.js +0 -93
- package/node_modules/@zuplo/openapi-tools/dist/url-utils.spec.js.map +0 -1
- package/node_modules/@zuplo/runtime/out/esm/chunk-6YPRGG62.js.map +0 -1
- package/node_modules/@zuplo/runtime/out/esm/chunk-PBDT4FDO.js +0 -37
- package/node_modules/@zuplo/runtime/out/esm/chunk-PBDT4FDO.js.map +0 -1
- /package/node_modules/@zuplo/runtime/out/esm/{chunk-YJ2BHVUH.js.map → chunk-CDEAY3VY.js.map} +0 -0
- /package/node_modules/@zuplo/runtime/out/esm/{chunk-PBDT4FDO.js.LEGAL.txt → chunk-LVSZ3WTO.js.LEGAL.txt} +0 -0
- /package/node_modules/@zuplo/runtime/out/esm/{chunk-VTO3F6DK.js.map → chunk-NUVXDVLJ.js.map} +0 -0
- /package/node_modules/@zuplo/runtime/out/esm/{chunk-6YPRGG62.js.LEGAL.txt → chunk-RHU3Z7DA.js.LEGAL.txt} +0 -0
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert";
|
|
2
|
-
import { describe, test } from "node:test";
|
|
3
|
-
import { TSConfigUpgrader } from "../common/upgraders/tsconfig-upgrader.js";
|
|
4
|
-
process.env.ZUPLO_OVERRIDE_CI_TO_TEST = "true";
|
|
5
|
-
describe("TSConfigUpgrader checks", async function () {
|
|
6
|
-
test("Should not run for a valid tsconfig.json", async function () {
|
|
7
|
-
const upgrader = new TSConfigUpgrader(new URL("../../test-fixtures-cli/tsconfig/valid", import.meta.url)
|
|
8
|
-
.pathname);
|
|
9
|
-
const needsUpgrade = await upgrader.needsUpgrade();
|
|
10
|
-
assert.equal(needsUpgrade, false);
|
|
11
|
-
});
|
|
12
|
-
test("Should run for a legacy tsconfig.json", async function () {
|
|
13
|
-
const upgrader = new TSConfigUpgrader(new URL("../../test-fixtures-cli/tsconfig/legacy", import.meta.url)
|
|
14
|
-
.pathname);
|
|
15
|
-
const needsUpgrade = await upgrader.needsUpgrade();
|
|
16
|
-
assert.equal(needsUpgrade, true);
|
|
17
|
-
});
|
|
18
|
-
test("Should run for a missing prop tsconfig.json", async function () {
|
|
19
|
-
const upgrader = new TSConfigUpgrader(new URL("../../test-fixtures-cli/tsconfig/missing-prop", import.meta.url)
|
|
20
|
-
.pathname);
|
|
21
|
-
const needsUpgrade = await upgrader.needsUpgrade();
|
|
22
|
-
assert.equal(needsUpgrade, true);
|
|
23
|
-
});
|
|
24
|
-
test("Should run when baseUrl set in tsconfig.json", async function () {
|
|
25
|
-
const upgrader = new TSConfigUpgrader(new URL("../../test-fixtures-cli/tsconfig/missing-prop", import.meta.url)
|
|
26
|
-
.pathname);
|
|
27
|
-
const needsUpgrade = await upgrader.needsUpgrade();
|
|
28
|
-
assert.equal(needsUpgrade, true);
|
|
29
|
-
});
|
|
30
|
-
});
|
|
31
|
-
//# sourceMappingURL=tsconfig-upgrader.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"tsconfig-upgrader.test.js","sourceRoot":"","sources":["../../src/__tests__/tsconfig-upgrader.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,gBAAgB,EAAE,MAAM,0CAA0C,CAAC;AAE5E,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,MAAM,CAAC;AAE/C,QAAQ,CAAC,yBAAyB,EAAE,KAAK;IACvC,IAAI,CAAC,0CAA0C,EAAE,KAAK;QACpD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACnC,IAAI,GAAG,CAAC,wCAAwC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aAC/D,QAAQ,CACZ,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC;IACpC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,uCAAuC,EAAE,KAAK;QACjD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACnC,IAAI,GAAG,CAAC,yCAAyC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aAChE,QAAQ,CACZ,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,6CAA6C,EAAE,KAAK;QACvD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACnC,IAAI,GAAG,CAAC,+CAA+C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aACtE,QAAQ,CACZ,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;IACH,IAAI,CAAC,8CAA8C,EAAE,KAAK;QACxD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CACnC,IAAI,GAAG,CAAC,+CAA+C,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC;aACtE,QAAQ,CACZ,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,YAAY,EAAE,CAAC;QACnD,MAAM,CAAC,KAAK,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import assert from \"node:assert\";\nimport { describe, test } from \"node:test\";\nimport { TSConfigUpgrader } from \"../common/upgraders/tsconfig-upgrader.js\";\n\nprocess.env.ZUPLO_OVERRIDE_CI_TO_TEST = \"true\";\n\ndescribe(\"TSConfigUpgrader checks\", async function () {\n test(\"Should not run for a valid tsconfig.json\", async function () {\n const upgrader = new TSConfigUpgrader(\n new URL(\"../../test-fixtures-cli/tsconfig/valid\", import.meta.url)\n .pathname\n );\n\n const needsUpgrade = await upgrader.needsUpgrade();\n assert.equal(needsUpgrade, false);\n });\n test(\"Should run for a legacy tsconfig.json\", async function () {\n const upgrader = new TSConfigUpgrader(\n new URL(\"../../test-fixtures-cli/tsconfig/legacy\", import.meta.url)\n .pathname\n );\n\n const needsUpgrade = await upgrader.needsUpgrade();\n assert.equal(needsUpgrade, true);\n });\n test(\"Should run for a missing prop tsconfig.json\", async function () {\n const upgrader = new TSConfigUpgrader(\n new URL(\"../../test-fixtures-cli/tsconfig/missing-prop\", import.meta.url)\n .pathname\n );\n\n const needsUpgrade = await upgrader.needsUpgrade();\n assert.equal(needsUpgrade, true);\n });\n test(\"Should run when baseUrl set in tsconfig.json\", async function () {\n const upgrader = new TSConfigUpgrader(\n new URL(\"../../test-fixtures-cli/tsconfig/missing-prop\", import.meta.url)\n .pathname\n );\n\n const needsUpgrade = await upgrader.needsUpgrade();\n assert.equal(needsUpgrade, true);\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.test.d.ts","sourceRoot":"","sources":["../../src/ca-certificate/validation.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert";
|
|
2
|
-
import { describe, it } from "node:test";
|
|
3
|
-
import { isValidationError, parseAndValidateCaCertificate, validateName, } from "./validation.js";
|
|
4
|
-
const CA_PEM = `-----BEGIN CERTIFICATE-----
|
|
5
|
-
MIIC5jCCAc6gAwIBAgIUB4s5BPjuGshWHSZKkNIJJ7W7alkwDQYJKoZIhvcNAQEL
|
|
6
|
-
BQAwEjEQMA4GA1UEAwwHVGVzdCBjYTAgFw0yNjA1MTMwMDA1NDFaGA8yMTI2MDQx
|
|
7
|
-
OTAwMDU0MVowEjEQMA4GA1UEAwwHVGVzdCBjYTCCASIwDQYJKoZIhvcNAQEBBQAD
|
|
8
|
-
ggEPADCCAQoCggEBAK+8kcIOYXC5SKCnnEmddLKiVSon8NoLn8RABel0op+5i3J2
|
|
9
|
-
pnDBBWOy2nT5qWRI2N0tTK4tQn/jaGeiBP0BUu4z+Y/pcglveexyFWhtFstHyyUr
|
|
10
|
-
yiwhBhX3NEWHZGr/VShriKxojnTwWONpgQwq7On7k+We3JK7IEASvKLxhC1+hcch
|
|
11
|
-
CwP67zGDF6qJrfjBfdPSRoW8OomioTRyb7MyrWvRpKm/0rj9NYc7MxMYbgVffE6y
|
|
12
|
-
IVQ4UCsVw74DdebfdzBSJOwNa+2Fe8AwQ3QMVbzfE3qs6+nviQ1EJA/h0kWgIrCI
|
|
13
|
-
3JvGpJinI0kDXEYx/4BTHVNfg1UdCOqPxxdrS18CAwEAAaMyMDAwDwYDVR0TAQH/
|
|
14
|
-
BAUwAwEB/zAdBgNVHQ4EFgQUuku+yW29ASY8vCZ7fBVA6L3r28YwDQYJKoZIhvcN
|
|
15
|
-
AQELBQADggEBAFaYAde91xdpST+LlokhbWanr8xiUr7jdHemjxGvBi/Zxs2VQIj2
|
|
16
|
-
+1Bh0dpxGk670nSc/Bq8jcivoiGoaRxT5rFVhtQOpYLgo+wKqNoYfEoEPrIrT4PO
|
|
17
|
-
seBrdMa9cduhs/Nx11Vgf5N56KomRO1a4AaIcvh6uGxrf1jfaCjaAKWTNNd9luzo
|
|
18
|
-
/IsRikl4QN0pZ1lIxdOdVMFhCp8V/+oEO6aw2FhFZlZKA+XLELHQzPBpuubQocuT
|
|
19
|
-
9dLovPbpFD2UwgvpjXQYjpr5btZx+iupHfiXq7WI6EI3eG5UgTuOpK8g9rLDiX9f
|
|
20
|
-
ArcSyj6/ZV+MDtaEHyEJBdsp//aT6Kfpoek=
|
|
21
|
-
-----END CERTIFICATE-----
|
|
22
|
-
`;
|
|
23
|
-
const LEAF_PEM = `-----BEGIN CERTIFICATE-----
|
|
24
|
-
MIIC5zCCAc+gAwIBAgIUFG0P6P6J4YoBLyRH2pjt7RdV9sAwDQYJKoZIhvcNAQEL
|
|
25
|
-
BQAwFDESMBAGA1UEAwwJVGVzdCBsZWFmMCAXDTI2MDUxMzAwMDU0MVoYDzIxMjYw
|
|
26
|
-
NDE5MDAwNTQxWjAUMRIwEAYDVQQDDAlUZXN0IGxlYWYwggEiMA0GCSqGSIb3DQEB
|
|
27
|
-
AQUAA4IBDwAwggEKAoIBAQDc1H+Z9qbmSsTR1tDVEvMN94ayec1UZ/17eIDY55ho
|
|
28
|
-
N5UA3Blho2xLeXvWWpKpo6wTXONzpNak8qhccIGsuIogpparkYYPBG+86cofnGDC
|
|
29
|
-
m/T9wa8eLTvyrIyPfUjkYVU7Gfmsq08pF/GZHIHcJg/xdTOLKE8WgJi15zwi1ZOE
|
|
30
|
-
z/OtpGKlX2pnM7aq6mzUqamWo2WBPpFdtdLfCBtnUkoNtxWmn98Xj/AaoiBR0UAI
|
|
31
|
-
C8UQAEAv3yaZ8pBZoLLn68kFgkOdNAPnX2zi6B6uk7LWA90JUneL+fPb/89muxl+
|
|
32
|
-
uQ4NGgWINtG23OtELLtUIuNiZxEFEO0mxf+0pIYa/1VTAgMBAAGjLzAtMAwGA1Ud
|
|
33
|
-
EwEB/wQCMAAwHQYDVR0OBBYEFP5YdepOBrpmYPdem5awTb3ByLZ7MA0GCSqGSIb3
|
|
34
|
-
DQEBCwUAA4IBAQBZ9Bl8IcQ9VYxTQgO1U9wB+LcHJ2WXqVSQTlz+qwd+tyfnv0PM
|
|
35
|
-
O5/ouSYiCj3IBQ42N3z+QhLgZgvfGcC6qFvG67A1WV7n7ZV5D7Yb9CqE+NPUbx3V
|
|
36
|
-
3GFBkIAv7U+4TKYPSK2YPXCb/D3rtel2j31tcMtODoT0LrHbwaOCGd8G+15rxBjP
|
|
37
|
-
dfHuC/nYYeKsplDhcdfemel73WbNzuqGNliQhEqhtlpGOhciHpd1Zlm7OgUINmCr
|
|
38
|
-
rfRfSGvBGDkuNRQIEhnFZXYhD0iCM/6D56/VykaqaQz+bPr04d0e0KvusFGsmapN
|
|
39
|
-
zC0Ztm1aNp0wB0vPNoEJrpQEmkB80cR1DXVR
|
|
40
|
-
-----END CERTIFICATE-----
|
|
41
|
-
`;
|
|
42
|
-
describe("validateName", () => {
|
|
43
|
-
it("accepts valid names", () => {
|
|
44
|
-
assert.strictEqual(validateName("my_ca"), null);
|
|
45
|
-
assert.strictEqual(validateName("CA1"), null);
|
|
46
|
-
assert.strictEqual(validateName("$abc"), null);
|
|
47
|
-
assert.strictEqual(validateName("_underscore"), null);
|
|
48
|
-
});
|
|
49
|
-
it("rejects empty names", () => {
|
|
50
|
-
const result = validateName("");
|
|
51
|
-
assert.ok(result);
|
|
52
|
-
assert.match(result.message, /empty/i);
|
|
53
|
-
});
|
|
54
|
-
it("rejects names over 120 characters", () => {
|
|
55
|
-
const result = validateName("a".repeat(121));
|
|
56
|
-
assert.ok(result);
|
|
57
|
-
assert.match(result.message, /120 characters/);
|
|
58
|
-
});
|
|
59
|
-
it("rejects names starting with a digit", () => {
|
|
60
|
-
const result = validateName("1ca");
|
|
61
|
-
assert.ok(result);
|
|
62
|
-
assert.match(result.message, /JavaScript variable name/);
|
|
63
|
-
});
|
|
64
|
-
it("rejects names with hyphens or spaces", () => {
|
|
65
|
-
assert.ok(validateName("my-ca"));
|
|
66
|
-
assert.ok(validateName("my ca"));
|
|
67
|
-
assert.ok(validateName("ca.example"));
|
|
68
|
-
});
|
|
69
|
-
it("rejects JavaScript reserved keywords", () => {
|
|
70
|
-
for (const keyword of ["class", "delete", "import", "return", "await"]) {
|
|
71
|
-
const result = validateName(keyword);
|
|
72
|
-
assert.ok(result, `expected ${keyword} to be rejected`);
|
|
73
|
-
assert.match(result.message, /reserved keyword/);
|
|
74
|
-
}
|
|
75
|
-
});
|
|
76
|
-
it("rejects reserved keywords case-insensitively", () => {
|
|
77
|
-
assert.ok(validateName("CLASS"));
|
|
78
|
-
assert.ok(validateName("Delete"));
|
|
79
|
-
});
|
|
80
|
-
});
|
|
81
|
-
describe("parseAndValidateCaCertificate", () => {
|
|
82
|
-
it("rejects garbage input", () => {
|
|
83
|
-
const result = parseAndValidateCaCertificate("not a certificate");
|
|
84
|
-
assert.ok(isValidationError(result));
|
|
85
|
-
assert.match(result.message, /PEM-encoded/);
|
|
86
|
-
assert.match(result.hint ?? "", /openssl x509.*-inform der/);
|
|
87
|
-
});
|
|
88
|
-
it("rejects a PKCS#8 private key with a key-specific hint", () => {
|
|
89
|
-
const pem = `-----BEGIN PRIVATE KEY-----\nfoo\n-----END PRIVATE KEY-----`;
|
|
90
|
-
const result = parseAndValidateCaCertificate(pem);
|
|
91
|
-
assert.ok(isValidationError(result));
|
|
92
|
-
assert.match(result.message, /private key/i);
|
|
93
|
-
assert.match(result.hint ?? "", /public CA certificate/);
|
|
94
|
-
});
|
|
95
|
-
it("rejects an RSA private key with a key-specific hint", () => {
|
|
96
|
-
const pem = `-----BEGIN RSA PRIVATE KEY-----\nfoo\n-----END RSA PRIVATE KEY-----`;
|
|
97
|
-
const result = parseAndValidateCaCertificate(pem);
|
|
98
|
-
assert.ok(isValidationError(result));
|
|
99
|
-
assert.match(result.message, /private key/i);
|
|
100
|
-
});
|
|
101
|
-
it("rejects a CSR with a CSR-specific hint", () => {
|
|
102
|
-
const pem = `-----BEGIN CERTIFICATE REQUEST-----\nfoo\n-----END CERTIFICATE REQUEST-----`;
|
|
103
|
-
const result = parseAndValidateCaCertificate(pem);
|
|
104
|
-
assert.ok(isValidationError(result));
|
|
105
|
-
assert.match(result.message, /CSR|signing request/i);
|
|
106
|
-
});
|
|
107
|
-
it("rejects a PEM-shaped but corrupt certificate", () => {
|
|
108
|
-
const pem = `-----BEGIN CERTIFICATE-----\nnot-real-base64\n-----END CERTIFICATE-----`;
|
|
109
|
-
const result = parseAndValidateCaCertificate(pem);
|
|
110
|
-
assert.ok(isValidationError(result));
|
|
111
|
-
assert.match(result.message, /Failed to parse/);
|
|
112
|
-
});
|
|
113
|
-
it("accepts a valid CA certificate", () => {
|
|
114
|
-
const result = parseAndValidateCaCertificate(CA_PEM);
|
|
115
|
-
assert.ok(!isValidationError(result), JSON.stringify(result));
|
|
116
|
-
assert.strictEqual(result.isCa, true);
|
|
117
|
-
assert.match(result.subject, /Test ca/i);
|
|
118
|
-
});
|
|
119
|
-
it("rejects a leaf (non-CA) certificate", () => {
|
|
120
|
-
const result = parseAndValidateCaCertificate(LEAF_PEM);
|
|
121
|
-
assert.ok(isValidationError(result));
|
|
122
|
-
assert.match(result.message, /not a CA certificate/);
|
|
123
|
-
});
|
|
124
|
-
it("rejects a CA certificate that is expired relative to `now`", () => {
|
|
125
|
-
const farFuture = new Date("2200-01-01T00:00:00Z");
|
|
126
|
-
const result = parseAndValidateCaCertificate(CA_PEM, farFuture);
|
|
127
|
-
assert.ok(isValidationError(result));
|
|
128
|
-
assert.match(result.message, /expired/);
|
|
129
|
-
});
|
|
130
|
-
});
|
|
131
|
-
//# sourceMappingURL=validation.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"validation.test.js","sourceRoot":"","sources":["../../src/ca-certificate/validation.test.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from \"node:assert\";\nimport { describe, it } from \"node:test\";\nimport {\n isValidationError,\n parseAndValidateCaCertificate,\n validateName,\n} from \"./validation.js\";\n\n// Hard-coded test fixtures generated with openssl req -x509 (RSA 2048, 100y\n// validity, CN=\"Test ca\" / CN=\"Test leaf\"). Checked in so the test suite has no\n// external dependency on the openssl binary. To regenerate, see\n// `regenerate-fixtures.md` next to this file (or use the helper in the PR).\nconst CA_PEM = `-----BEGIN CERTIFICATE-----\nMIIC5jCCAc6gAwIBAgIUB4s5BPjuGshWHSZKkNIJJ7W7alkwDQYJKoZIhvcNAQEL\nBQAwEjEQMA4GA1UEAwwHVGVzdCBjYTAgFw0yNjA1MTMwMDA1NDFaGA8yMTI2MDQx\nOTAwMDU0MVowEjEQMA4GA1UEAwwHVGVzdCBjYTCCASIwDQYJKoZIhvcNAQEBBQAD\nggEPADCCAQoCggEBAK+8kcIOYXC5SKCnnEmddLKiVSon8NoLn8RABel0op+5i3J2\npnDBBWOy2nT5qWRI2N0tTK4tQn/jaGeiBP0BUu4z+Y/pcglveexyFWhtFstHyyUr\nyiwhBhX3NEWHZGr/VShriKxojnTwWONpgQwq7On7k+We3JK7IEASvKLxhC1+hcch\nCwP67zGDF6qJrfjBfdPSRoW8OomioTRyb7MyrWvRpKm/0rj9NYc7MxMYbgVffE6y\nIVQ4UCsVw74DdebfdzBSJOwNa+2Fe8AwQ3QMVbzfE3qs6+nviQ1EJA/h0kWgIrCI\n3JvGpJinI0kDXEYx/4BTHVNfg1UdCOqPxxdrS18CAwEAAaMyMDAwDwYDVR0TAQH/\nBAUwAwEB/zAdBgNVHQ4EFgQUuku+yW29ASY8vCZ7fBVA6L3r28YwDQYJKoZIhvcN\nAQELBQADggEBAFaYAde91xdpST+LlokhbWanr8xiUr7jdHemjxGvBi/Zxs2VQIj2\n+1Bh0dpxGk670nSc/Bq8jcivoiGoaRxT5rFVhtQOpYLgo+wKqNoYfEoEPrIrT4PO\nseBrdMa9cduhs/Nx11Vgf5N56KomRO1a4AaIcvh6uGxrf1jfaCjaAKWTNNd9luzo\n/IsRikl4QN0pZ1lIxdOdVMFhCp8V/+oEO6aw2FhFZlZKA+XLELHQzPBpuubQocuT\n9dLovPbpFD2UwgvpjXQYjpr5btZx+iupHfiXq7WI6EI3eG5UgTuOpK8g9rLDiX9f\nArcSyj6/ZV+MDtaEHyEJBdsp//aT6Kfpoek=\n-----END CERTIFICATE-----\n`;\n\nconst LEAF_PEM = `-----BEGIN CERTIFICATE-----\nMIIC5zCCAc+gAwIBAgIUFG0P6P6J4YoBLyRH2pjt7RdV9sAwDQYJKoZIhvcNAQEL\nBQAwFDESMBAGA1UEAwwJVGVzdCBsZWFmMCAXDTI2MDUxMzAwMDU0MVoYDzIxMjYw\nNDE5MDAwNTQxWjAUMRIwEAYDVQQDDAlUZXN0IGxlYWYwggEiMA0GCSqGSIb3DQEB\nAQUAA4IBDwAwggEKAoIBAQDc1H+Z9qbmSsTR1tDVEvMN94ayec1UZ/17eIDY55ho\nN5UA3Blho2xLeXvWWpKpo6wTXONzpNak8qhccIGsuIogpparkYYPBG+86cofnGDC\nm/T9wa8eLTvyrIyPfUjkYVU7Gfmsq08pF/GZHIHcJg/xdTOLKE8WgJi15zwi1ZOE\nz/OtpGKlX2pnM7aq6mzUqamWo2WBPpFdtdLfCBtnUkoNtxWmn98Xj/AaoiBR0UAI\nC8UQAEAv3yaZ8pBZoLLn68kFgkOdNAPnX2zi6B6uk7LWA90JUneL+fPb/89muxl+\nuQ4NGgWINtG23OtELLtUIuNiZxEFEO0mxf+0pIYa/1VTAgMBAAGjLzAtMAwGA1Ud\nEwEB/wQCMAAwHQYDVR0OBBYEFP5YdepOBrpmYPdem5awTb3ByLZ7MA0GCSqGSIb3\nDQEBCwUAA4IBAQBZ9Bl8IcQ9VYxTQgO1U9wB+LcHJ2WXqVSQTlz+qwd+tyfnv0PM\nO5/ouSYiCj3IBQ42N3z+QhLgZgvfGcC6qFvG67A1WV7n7ZV5D7Yb9CqE+NPUbx3V\n3GFBkIAv7U+4TKYPSK2YPXCb/D3rtel2j31tcMtODoT0LrHbwaOCGd8G+15rxBjP\ndfHuC/nYYeKsplDhcdfemel73WbNzuqGNliQhEqhtlpGOhciHpd1Zlm7OgUINmCr\nrfRfSGvBGDkuNRQIEhnFZXYhD0iCM/6D56/VykaqaQz+bPr04d0e0KvusFGsmapN\nzC0Ztm1aNp0wB0vPNoEJrpQEmkB80cR1DXVR\n-----END CERTIFICATE-----\n`;\n\ndescribe(\"validateName\", () => {\n it(\"accepts valid names\", () => {\n assert.strictEqual(validateName(\"my_ca\"), null);\n assert.strictEqual(validateName(\"CA1\"), null);\n assert.strictEqual(validateName(\"$abc\"), null);\n assert.strictEqual(validateName(\"_underscore\"), null);\n });\n\n it(\"rejects empty names\", () => {\n const result = validateName(\"\");\n assert.ok(result);\n assert.match(result.message, /empty/i);\n });\n\n it(\"rejects names over 120 characters\", () => {\n const result = validateName(\"a\".repeat(121));\n assert.ok(result);\n assert.match(result.message, /120 characters/);\n });\n\n it(\"rejects names starting with a digit\", () => {\n const result = validateName(\"1ca\");\n assert.ok(result);\n assert.match(result.message, /JavaScript variable name/);\n });\n\n it(\"rejects names with hyphens or spaces\", () => {\n assert.ok(validateName(\"my-ca\"));\n assert.ok(validateName(\"my ca\"));\n assert.ok(validateName(\"ca.example\"));\n });\n\n it(\"rejects JavaScript reserved keywords\", () => {\n for (const keyword of [\"class\", \"delete\", \"import\", \"return\", \"await\"]) {\n const result = validateName(keyword);\n assert.ok(result, `expected ${keyword} to be rejected`);\n assert.match(result.message, /reserved keyword/);\n }\n });\n\n it(\"rejects reserved keywords case-insensitively\", () => {\n assert.ok(validateName(\"CLASS\"));\n assert.ok(validateName(\"Delete\"));\n });\n});\n\ndescribe(\"parseAndValidateCaCertificate\", () => {\n it(\"rejects garbage input\", () => {\n const result = parseAndValidateCaCertificate(\"not a certificate\");\n assert.ok(isValidationError(result));\n assert.match(result.message, /PEM-encoded/);\n assert.match(result.hint ?? \"\", /openssl x509.*-inform der/);\n });\n\n it(\"rejects a PKCS#8 private key with a key-specific hint\", () => {\n const pem = `-----BEGIN PRIVATE KEY-----\\nfoo\\n-----END PRIVATE KEY-----`;\n const result = parseAndValidateCaCertificate(pem);\n assert.ok(isValidationError(result));\n assert.match(result.message, /private key/i);\n assert.match(result.hint ?? \"\", /public CA certificate/);\n });\n\n it(\"rejects an RSA private key with a key-specific hint\", () => {\n const pem = `-----BEGIN RSA PRIVATE KEY-----\\nfoo\\n-----END RSA PRIVATE KEY-----`;\n const result = parseAndValidateCaCertificate(pem);\n assert.ok(isValidationError(result));\n assert.match(result.message, /private key/i);\n });\n\n it(\"rejects a CSR with a CSR-specific hint\", () => {\n const pem = `-----BEGIN CERTIFICATE REQUEST-----\\nfoo\\n-----END CERTIFICATE REQUEST-----`;\n const result = parseAndValidateCaCertificate(pem);\n assert.ok(isValidationError(result));\n assert.match(result.message, /CSR|signing request/i);\n });\n\n it(\"rejects a PEM-shaped but corrupt certificate\", () => {\n const pem = `-----BEGIN CERTIFICATE-----\\nnot-real-base64\\n-----END CERTIFICATE-----`;\n const result = parseAndValidateCaCertificate(pem);\n assert.ok(isValidationError(result));\n assert.match(result.message, /Failed to parse/);\n });\n\n it(\"accepts a valid CA certificate\", () => {\n const result = parseAndValidateCaCertificate(CA_PEM);\n assert.ok(!isValidationError(result), JSON.stringify(result));\n assert.strictEqual(result.isCa, true);\n assert.match(result.subject, /Test ca/i);\n });\n\n it(\"rejects a leaf (non-CA) certificate\", () => {\n const result = parseAndValidateCaCertificate(LEAF_PEM);\n assert.ok(isValidationError(result));\n assert.match(result.message, /not a CA certificate/);\n });\n\n it(\"rejects a CA certificate that is expired relative to `now`\", () => {\n // The CA fixture is valid for 100 years from generation. Pass a `now` far\n // in the future to exercise the expiry branch without backdating the cert.\n const farFuture = new Date(\"2200-01-01T00:00:00Z\");\n const result = parseAndValidateCaCertificate(CA_PEM, farFuture);\n assert.ok(isValidationError(result));\n assert.match(result.message, /expired/);\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-invocation.test.d.ts","sourceRoot":"","sources":["../../../src/common/analytics/cli-invocation.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,51 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert";
|
|
2
|
-
import { describe, it } from "node:test";
|
|
3
|
-
import { captureCliInvocationEvent, getCliInvocationProperties, } from "./cli-invocation.js";
|
|
4
|
-
describe("getCliInvocationProperties", () => {
|
|
5
|
-
it("captures the top-level CLI command token", () => {
|
|
6
|
-
assert.deepEqual(getCliInvocationProperties({ _: ["deploy"] }, "1.2.3"), {
|
|
7
|
-
version: "1.2.3",
|
|
8
|
-
cliCommand: "deploy",
|
|
9
|
-
});
|
|
10
|
-
assert.deepEqual(getCliInvocationProperties({ _: ["bucket"] }, "1.2.3"), {
|
|
11
|
-
version: "1.2.3",
|
|
12
|
-
cliCommand: "bucket",
|
|
13
|
-
});
|
|
14
|
-
assert.deepEqual(getCliInvocationProperties({ _: ["logout"] }, "1.2.3"), {
|
|
15
|
-
version: "1.2.3",
|
|
16
|
-
cliCommand: "logout",
|
|
17
|
-
});
|
|
18
|
-
assert.deepEqual(getCliInvocationProperties({ _: ["hello"] }, "1.2.3"), {
|
|
19
|
-
version: "1.2.3",
|
|
20
|
-
cliCommand: "hello",
|
|
21
|
-
});
|
|
22
|
-
});
|
|
23
|
-
it("canonicalizes OpenAPI command aliases", () => {
|
|
24
|
-
assert.deepEqual(getCliInvocationProperties({ _: ["oas"] }, "1.2.3"), {
|
|
25
|
-
version: "1.2.3",
|
|
26
|
-
cliCommand: "openapi",
|
|
27
|
-
});
|
|
28
|
-
assert.deepEqual(getCliInvocationProperties({ _: ["open-api"] }, "1.2.3"), {
|
|
29
|
-
version: "1.2.3",
|
|
30
|
-
cliCommand: "openapi",
|
|
31
|
-
});
|
|
32
|
-
});
|
|
33
|
-
it("does not include positional values after the command token", () => {
|
|
34
|
-
assert.deepEqual(getCliInvocationProperties({ _: ["deploy", "customer-project-name"] }, "1.2.3"), {
|
|
35
|
-
version: "1.2.3",
|
|
36
|
-
cliCommand: "deploy",
|
|
37
|
-
});
|
|
38
|
-
});
|
|
39
|
-
it("reports unknown when no command token is present", () => {
|
|
40
|
-
assert.deepEqual(getCliInvocationProperties({ _: [] }, "1.2.3"), {
|
|
41
|
-
version: "1.2.3",
|
|
42
|
-
cliCommand: "unknown",
|
|
43
|
-
});
|
|
44
|
-
});
|
|
45
|
-
it("does not fail the CLI when analytics capture fails", async () => {
|
|
46
|
-
await assert.doesNotReject(captureCliInvocationEvent({ _: ["deploy"] }, "1.2.3", async () => {
|
|
47
|
-
throw new Error("analytics failed");
|
|
48
|
-
}));
|
|
49
|
-
});
|
|
50
|
-
});
|
|
51
|
-
//# sourceMappingURL=cli-invocation.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-invocation.test.js","sourceRoot":"","sources":["../../../src/common/analytics/cli-invocation.test.ts"],"names":[],"mappings":"AAAA,OAAO,MAAM,MAAM,aAAa,CAAC;AACjC,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AACzC,OAAO,EACL,yBAAyB,EACzB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAE7B,QAAQ,CAAC,4BAA4B,EAAE,GAAG,EAAE;IAC1C,EAAE,CAAC,0CAA0C,EAAE,GAAG,EAAE;QAClD,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;YACvE,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;YACvE,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;YACvE,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,QAAQ;SACrB,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;YACtE,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,OAAO;SACpB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;YACpE,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;QACH,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,CAAC,EAAE;YACzE,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,4DAA4D,EAAE,GAAG,EAAE;QACpE,MAAM,CAAC,SAAS,CACd,0BAA0B,CACxB,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,uBAAuB,CAAC,EAAE,EAC1C,OAAO,CACR,EACD;YACE,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,QAAQ;SACrB,CACF,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,SAAS,CAAC,0BAA0B,CAAC,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,OAAO,CAAC,EAAE;YAC/D,OAAO,EAAE,OAAO;YAChB,UAAU,EAAE,SAAS;SACtB,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,oDAAoD,EAAE,KAAK,IAAI,EAAE;QAClE,MAAM,MAAM,CAAC,aAAa,CACxB,yBAAyB,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,IAAI,EAAE;YAC/D,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QACtC,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import assert from \"node:assert\";\nimport { describe, it } from \"node:test\";\nimport {\n captureCliInvocationEvent,\n getCliInvocationProperties,\n} from \"./cli-invocation.js\";\n\ndescribe(\"getCliInvocationProperties\", () => {\n it(\"captures the top-level CLI command token\", () => {\n assert.deepEqual(getCliInvocationProperties({ _: [\"deploy\"] }, \"1.2.3\"), {\n version: \"1.2.3\",\n cliCommand: \"deploy\",\n });\n assert.deepEqual(getCliInvocationProperties({ _: [\"bucket\"] }, \"1.2.3\"), {\n version: \"1.2.3\",\n cliCommand: \"bucket\",\n });\n assert.deepEqual(getCliInvocationProperties({ _: [\"logout\"] }, \"1.2.3\"), {\n version: \"1.2.3\",\n cliCommand: \"logout\",\n });\n assert.deepEqual(getCliInvocationProperties({ _: [\"hello\"] }, \"1.2.3\"), {\n version: \"1.2.3\",\n cliCommand: \"hello\",\n });\n });\n\n it(\"canonicalizes OpenAPI command aliases\", () => {\n assert.deepEqual(getCliInvocationProperties({ _: [\"oas\"] }, \"1.2.3\"), {\n version: \"1.2.3\",\n cliCommand: \"openapi\",\n });\n assert.deepEqual(getCliInvocationProperties({ _: [\"open-api\"] }, \"1.2.3\"), {\n version: \"1.2.3\",\n cliCommand: \"openapi\",\n });\n });\n\n it(\"does not include positional values after the command token\", () => {\n assert.deepEqual(\n getCliInvocationProperties(\n { _: [\"deploy\", \"customer-project-name\"] },\n \"1.2.3\"\n ),\n {\n version: \"1.2.3\",\n cliCommand: \"deploy\",\n }\n );\n });\n\n it(\"reports unknown when no command token is present\", () => {\n assert.deepEqual(getCliInvocationProperties({ _: [] }, \"1.2.3\"), {\n version: \"1.2.3\",\n cliCommand: \"unknown\",\n });\n });\n\n it(\"does not fail the CLI when analytics capture fails\", async () => {\n await assert.doesNotReject(\n captureCliInvocationEvent({ _: [\"deploy\"] }, \"1.2.3\", async () => {\n throw new Error(\"analytics failed\");\n })\n );\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.test.d.ts","sourceRoot":"","sources":["../../../src/common/analytics/package-manager.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
import assert from "node:assert";
|
|
2
|
-
import { describe, it } from "node:test";
|
|
3
|
-
import { getPackageManagerUsageProperties } from "./package-manager.js";
|
|
4
|
-
describe("getPackageManagerUsageProperties", () => {
|
|
5
|
-
it("buckets npm create under npm", () => {
|
|
6
|
-
const info = getPackageManagerUsageProperties({
|
|
7
|
-
npm_config_user_agent: "npm/10.9.0 node/v22.14.0 darwin arm64 workspaces/false",
|
|
8
|
-
npm_command: "init",
|
|
9
|
-
npm_execpath: "/usr/local/lib/node_modules/npm/bin/npm-cli.js",
|
|
10
|
-
_: "/usr/local/bin/npm",
|
|
11
|
-
});
|
|
12
|
-
assert.strictEqual(info.packageManager, "npm");
|
|
13
|
-
assert.strictEqual(info.runner, "npm-create");
|
|
14
|
-
assert.strictEqual(info.packageManagerVersion, "10.9.0");
|
|
15
|
-
assert.strictEqual(info.installSource, "system");
|
|
16
|
-
});
|
|
17
|
-
it("buckets npx under npm when npm exposes the npx runner", () => {
|
|
18
|
-
const info = getPackageManagerUsageProperties({
|
|
19
|
-
npm_config_user_agent: "npm/10.9.0 node/v22.14.0 darwin arm64 workspaces/false",
|
|
20
|
-
npm_command: "exec",
|
|
21
|
-
npm_execpath: "/usr/local/lib/node_modules/npm/bin/npx-cli.js",
|
|
22
|
-
_: "/usr/local/bin/npx",
|
|
23
|
-
});
|
|
24
|
-
assert.strictEqual(info.packageManager, "npm");
|
|
25
|
-
assert.strictEqual(info.runner, "npx");
|
|
26
|
-
});
|
|
27
|
-
it("buckets pnpm create under pnpm", () => {
|
|
28
|
-
const info = getPackageManagerUsageProperties({
|
|
29
|
-
npm_config_user_agent: "pnpm/10.7.0 npm/? node/v22.14.0 darwin arm64",
|
|
30
|
-
npm_command: "create",
|
|
31
|
-
npm_execpath: "/Users/me/Library/pnpm/pnpm.cjs",
|
|
32
|
-
_: "/Users/me/Library/pnpm/pnpm",
|
|
33
|
-
});
|
|
34
|
-
assert.strictEqual(info.packageManager, "pnpm");
|
|
35
|
-
assert.strictEqual(info.runner, "pnpm-create");
|
|
36
|
-
assert.strictEqual(info.packageManagerVersion, "10.7.0");
|
|
37
|
-
});
|
|
38
|
-
it("buckets pnpx under pnpm", () => {
|
|
39
|
-
const info = getPackageManagerUsageProperties({
|
|
40
|
-
npm_config_user_agent: "pnpm/10.7.0 npm/? node/v22.14.0 darwin arm64",
|
|
41
|
-
npm_command: "exec",
|
|
42
|
-
npm_execpath: "/Users/me/Library/pnpm/pnpm.cjs",
|
|
43
|
-
_: "/Users/me/Library/pnpm/pnpx",
|
|
44
|
-
});
|
|
45
|
-
assert.strictEqual(info.packageManager, "pnpm");
|
|
46
|
-
assert.strictEqual(info.runner, "pnpx");
|
|
47
|
-
});
|
|
48
|
-
it("buckets yarn create under yarn", () => {
|
|
49
|
-
const info = getPackageManagerUsageProperties({
|
|
50
|
-
npm_config_user_agent: "yarn/4.5.1 npm/? node/v22.14.0 darwin arm64",
|
|
51
|
-
npm_command: "create",
|
|
52
|
-
npm_execpath: "/usr/local/bin/yarn.js",
|
|
53
|
-
_: "/usr/local/bin/yarn",
|
|
54
|
-
});
|
|
55
|
-
assert.strictEqual(info.packageManager, "yarn");
|
|
56
|
-
assert.strictEqual(info.runner, "yarn-create");
|
|
57
|
-
assert.strictEqual(info.packageManagerVersion, "4.5.1");
|
|
58
|
-
});
|
|
59
|
-
it("buckets yarn dlx under yarn", () => {
|
|
60
|
-
const info = getPackageManagerUsageProperties({
|
|
61
|
-
npm_config_user_agent: "yarn/4.5.1 npm/? node/v22.14.0 darwin arm64",
|
|
62
|
-
npm_command: "dlx",
|
|
63
|
-
npm_execpath: "/usr/local/bin/yarn.js",
|
|
64
|
-
_: "/usr/local/bin/yarn",
|
|
65
|
-
});
|
|
66
|
-
assert.strictEqual(info.packageManager, "yarn");
|
|
67
|
-
assert.strictEqual(info.runner, "yarn-dlx");
|
|
68
|
-
});
|
|
69
|
-
it("buckets bun create under bun", () => {
|
|
70
|
-
const info = getPackageManagerUsageProperties({
|
|
71
|
-
npm_config_user_agent: "bun/1.2.0 npm/? node/v22.14.0 darwin arm64",
|
|
72
|
-
npm_command: "create",
|
|
73
|
-
npm_execpath: "/usr/local/bin/bun",
|
|
74
|
-
_: "/usr/local/bin/bun",
|
|
75
|
-
});
|
|
76
|
-
assert.strictEqual(info.packageManager, "bun");
|
|
77
|
-
assert.strictEqual(info.runner, "bun-create");
|
|
78
|
-
assert.strictEqual(info.packageManagerVersion, "1.2.0");
|
|
79
|
-
});
|
|
80
|
-
it("buckets bunx under bun", () => {
|
|
81
|
-
const info = getPackageManagerUsageProperties({
|
|
82
|
-
npm_config_user_agent: "bun/1.2.0 npm/? node/v22.14.0 darwin arm64",
|
|
83
|
-
npm_command: "x",
|
|
84
|
-
npm_execpath: "/usr/local/bin/bun",
|
|
85
|
-
_: "/usr/local/bin/bunx",
|
|
86
|
-
});
|
|
87
|
-
assert.strictEqual(info.packageManager, "bun");
|
|
88
|
-
assert.strictEqual(info.runner, "bunx");
|
|
89
|
-
});
|
|
90
|
-
it("reports unknown for missing environment", () => {
|
|
91
|
-
const info = getPackageManagerUsageProperties({});
|
|
92
|
-
assert.strictEqual(info.packageManager, "unknown");
|
|
93
|
-
assert.strictEqual(info.runner, "unknown");
|
|
94
|
-
assert.strictEqual(info.installSource, "unknown");
|
|
95
|
-
});
|
|
96
|
-
});
|
|
97
|
-
describe("installSource detection", () => {
|
|
98
|
-
it("detects project-local node_modules/.bin", () => {
|
|
99
|
-
const info = getPackageManagerUsageProperties({
|
|
100
|
-
npm_config_user_agent: "npm/10.9.0 node/v22.14.0 darwin arm64",
|
|
101
|
-
npm_execpath: "/Users/me/work/proj/node_modules/.bin/npm",
|
|
102
|
-
_: "/Users/me/work/proj/node_modules/.bin/npm",
|
|
103
|
-
});
|
|
104
|
-
assert.strictEqual(info.installSource, "project-local");
|
|
105
|
-
});
|
|
106
|
-
it("detects corepack", () => {
|
|
107
|
-
const info = getPackageManagerUsageProperties({
|
|
108
|
-
npm_config_user_agent: "pnpm/10.7.0 npm/? node/v22.14.0 darwin arm64",
|
|
109
|
-
npm_execpath: "/Users/me/.nvm/versions/node/v22.14.0/lib/node_modules/corepack/dist/pnpm.js",
|
|
110
|
-
_: "/Users/me/.nvm/versions/node/v22.14.0/bin/pnpm",
|
|
111
|
-
});
|
|
112
|
-
assert.strictEqual(info.installSource, "corepack");
|
|
113
|
-
});
|
|
114
|
-
it("detects volta", () => {
|
|
115
|
-
const info = getPackageManagerUsageProperties({
|
|
116
|
-
npm_config_user_agent: "npm/10.9.0 node/v22.14.0 darwin arm64",
|
|
117
|
-
npm_execpath: "/Users/me/.volta/tools/image/npm/10.9.0/bin/npm-cli.js",
|
|
118
|
-
_: "/Users/me/.volta/bin/npm",
|
|
119
|
-
});
|
|
120
|
-
assert.strictEqual(info.installSource, "volta");
|
|
121
|
-
});
|
|
122
|
-
it("detects nvm", () => {
|
|
123
|
-
const info = getPackageManagerUsageProperties({
|
|
124
|
-
npm_config_user_agent: "npm/10.9.0 node/v22.14.0 darwin arm64",
|
|
125
|
-
npm_execpath: "/Users/me/.nvm/versions/node/v22.14.0/lib/node_modules/npm/bin/npm-cli.js",
|
|
126
|
-
_: "/Users/me/.nvm/versions/node/v22.14.0/bin/npm",
|
|
127
|
-
});
|
|
128
|
-
assert.strictEqual(info.installSource, "nvm");
|
|
129
|
-
});
|
|
130
|
-
it("detects asdf", () => {
|
|
131
|
-
const info = getPackageManagerUsageProperties({
|
|
132
|
-
npm_config_user_agent: "npm/10.9.0 node/v22.14.0 linux x64",
|
|
133
|
-
npm_execpath: "/Users/me/.asdf/installs/nodejs/22.14.0/lib/node_modules/npm/bin/npm-cli.js",
|
|
134
|
-
_: "/Users/me/.asdf/shims/npm",
|
|
135
|
-
});
|
|
136
|
-
assert.strictEqual(info.installSource, "asdf");
|
|
137
|
-
});
|
|
138
|
-
it("detects fnm", () => {
|
|
139
|
-
const info = getPackageManagerUsageProperties({
|
|
140
|
-
npm_config_user_agent: "npm/10.9.0 node/v22.14.0 darwin arm64",
|
|
141
|
-
npm_execpath: "/var/folders/xx/fnm_multishells/12345_0000000000000/lib/node_modules/npm/bin/npm-cli.js",
|
|
142
|
-
_: "/Users/me/.fnm/aliases/default/bin/npm",
|
|
143
|
-
});
|
|
144
|
-
assert.strictEqual(info.installSource, "fnm");
|
|
145
|
-
});
|
|
146
|
-
it("detects homebrew (apple silicon path)", () => {
|
|
147
|
-
const info = getPackageManagerUsageProperties({
|
|
148
|
-
npm_config_user_agent: "npm/10.9.0 node/v22.14.0 darwin arm64",
|
|
149
|
-
npm_execpath: "/opt/homebrew/Cellar/node/22.14.0/lib/node_modules/npm/bin/npm-cli.js",
|
|
150
|
-
_: "/opt/homebrew/bin/npm",
|
|
151
|
-
});
|
|
152
|
-
assert.strictEqual(info.installSource, "homebrew");
|
|
153
|
-
});
|
|
154
|
-
it("detects system install", () => {
|
|
155
|
-
const info = getPackageManagerUsageProperties({
|
|
156
|
-
npm_config_user_agent: "npm/10.9.0 node/v22.14.0 linux x64",
|
|
157
|
-
npm_execpath: "/usr/local/lib/node_modules/npm/bin/npm-cli.js",
|
|
158
|
-
_: "/usr/local/bin/npm",
|
|
159
|
-
});
|
|
160
|
-
assert.strictEqual(info.installSource, "system");
|
|
161
|
-
});
|
|
162
|
-
});
|
|
163
|
-
//# sourceMappingURL=package-manager.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"package-manager.test.js","sourceRoot":"","sources":["../../../src/common/analytics/package-manager.test.ts"],"names":[],"mappings":"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","sourcesContent":["import assert from \"node:assert\";\nimport { describe, it } from \"node:test\";\nimport { getPackageManagerUsageProperties } from \"./package-manager.js\";\n\ndescribe(\"getPackageManagerUsageProperties\", () => {\n it(\"buckets npm create under npm\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent:\n \"npm/10.9.0 node/v22.14.0 darwin arm64 workspaces/false\",\n npm_command: \"init\",\n npm_execpath: \"/usr/local/lib/node_modules/npm/bin/npm-cli.js\",\n _: \"/usr/local/bin/npm\",\n });\n\n assert.strictEqual(info.packageManager, \"npm\");\n assert.strictEqual(info.runner, \"npm-create\");\n assert.strictEqual(info.packageManagerVersion, \"10.9.0\");\n assert.strictEqual(info.installSource, \"system\");\n });\n\n it(\"buckets npx under npm when npm exposes the npx runner\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent:\n \"npm/10.9.0 node/v22.14.0 darwin arm64 workspaces/false\",\n npm_command: \"exec\",\n npm_execpath: \"/usr/local/lib/node_modules/npm/bin/npx-cli.js\",\n _: \"/usr/local/bin/npx\",\n });\n\n assert.strictEqual(info.packageManager, \"npm\");\n assert.strictEqual(info.runner, \"npx\");\n });\n\n it(\"buckets pnpm create under pnpm\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"pnpm/10.7.0 npm/? node/v22.14.0 darwin arm64\",\n npm_command: \"create\",\n npm_execpath: \"/Users/me/Library/pnpm/pnpm.cjs\",\n _: \"/Users/me/Library/pnpm/pnpm\",\n });\n\n assert.strictEqual(info.packageManager, \"pnpm\");\n assert.strictEqual(info.runner, \"pnpm-create\");\n assert.strictEqual(info.packageManagerVersion, \"10.7.0\");\n });\n\n it(\"buckets pnpx under pnpm\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"pnpm/10.7.0 npm/? node/v22.14.0 darwin arm64\",\n npm_command: \"exec\",\n npm_execpath: \"/Users/me/Library/pnpm/pnpm.cjs\",\n _: \"/Users/me/Library/pnpm/pnpx\",\n });\n\n assert.strictEqual(info.packageManager, \"pnpm\");\n assert.strictEqual(info.runner, \"pnpx\");\n });\n\n it(\"buckets yarn create under yarn\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"yarn/4.5.1 npm/? node/v22.14.0 darwin arm64\",\n npm_command: \"create\",\n npm_execpath: \"/usr/local/bin/yarn.js\",\n _: \"/usr/local/bin/yarn\",\n });\n\n assert.strictEqual(info.packageManager, \"yarn\");\n assert.strictEqual(info.runner, \"yarn-create\");\n assert.strictEqual(info.packageManagerVersion, \"4.5.1\");\n });\n\n it(\"buckets yarn dlx under yarn\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"yarn/4.5.1 npm/? node/v22.14.0 darwin arm64\",\n npm_command: \"dlx\",\n npm_execpath: \"/usr/local/bin/yarn.js\",\n _: \"/usr/local/bin/yarn\",\n });\n\n assert.strictEqual(info.packageManager, \"yarn\");\n assert.strictEqual(info.runner, \"yarn-dlx\");\n });\n\n it(\"buckets bun create under bun\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"bun/1.2.0 npm/? node/v22.14.0 darwin arm64\",\n npm_command: \"create\",\n npm_execpath: \"/usr/local/bin/bun\",\n _: \"/usr/local/bin/bun\",\n });\n\n assert.strictEqual(info.packageManager, \"bun\");\n assert.strictEqual(info.runner, \"bun-create\");\n assert.strictEqual(info.packageManagerVersion, \"1.2.0\");\n });\n\n it(\"buckets bunx under bun\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"bun/1.2.0 npm/? node/v22.14.0 darwin arm64\",\n npm_command: \"x\",\n npm_execpath: \"/usr/local/bin/bun\",\n _: \"/usr/local/bin/bunx\",\n });\n\n assert.strictEqual(info.packageManager, \"bun\");\n assert.strictEqual(info.runner, \"bunx\");\n });\n\n it(\"reports unknown for missing environment\", () => {\n const info = getPackageManagerUsageProperties({});\n\n assert.strictEqual(info.packageManager, \"unknown\");\n assert.strictEqual(info.runner, \"unknown\");\n assert.strictEqual(info.installSource, \"unknown\");\n });\n});\n\ndescribe(\"installSource detection\", () => {\n it(\"detects project-local node_modules/.bin\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"npm/10.9.0 node/v22.14.0 darwin arm64\",\n npm_execpath: \"/Users/me/work/proj/node_modules/.bin/npm\",\n _: \"/Users/me/work/proj/node_modules/.bin/npm\",\n });\n assert.strictEqual(info.installSource, \"project-local\");\n });\n\n it(\"detects corepack\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"pnpm/10.7.0 npm/? node/v22.14.0 darwin arm64\",\n npm_execpath:\n \"/Users/me/.nvm/versions/node/v22.14.0/lib/node_modules/corepack/dist/pnpm.js\",\n _: \"/Users/me/.nvm/versions/node/v22.14.0/bin/pnpm\",\n });\n assert.strictEqual(info.installSource, \"corepack\");\n });\n\n it(\"detects volta\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"npm/10.9.0 node/v22.14.0 darwin arm64\",\n npm_execpath: \"/Users/me/.volta/tools/image/npm/10.9.0/bin/npm-cli.js\",\n _: \"/Users/me/.volta/bin/npm\",\n });\n assert.strictEqual(info.installSource, \"volta\");\n });\n\n it(\"detects nvm\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"npm/10.9.0 node/v22.14.0 darwin arm64\",\n npm_execpath:\n \"/Users/me/.nvm/versions/node/v22.14.0/lib/node_modules/npm/bin/npm-cli.js\",\n _: \"/Users/me/.nvm/versions/node/v22.14.0/bin/npm\",\n });\n assert.strictEqual(info.installSource, \"nvm\");\n });\n\n it(\"detects asdf\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"npm/10.9.0 node/v22.14.0 linux x64\",\n npm_execpath:\n \"/Users/me/.asdf/installs/nodejs/22.14.0/lib/node_modules/npm/bin/npm-cli.js\",\n _: \"/Users/me/.asdf/shims/npm\",\n });\n assert.strictEqual(info.installSource, \"asdf\");\n });\n\n it(\"detects fnm\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"npm/10.9.0 node/v22.14.0 darwin arm64\",\n npm_execpath:\n \"/var/folders/xx/fnm_multishells/12345_0000000000000/lib/node_modules/npm/bin/npm-cli.js\",\n _: \"/Users/me/.fnm/aliases/default/bin/npm\",\n });\n assert.strictEqual(info.installSource, \"fnm\");\n });\n\n it(\"detects homebrew (apple silicon path)\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"npm/10.9.0 node/v22.14.0 darwin arm64\",\n npm_execpath:\n \"/opt/homebrew/Cellar/node/22.14.0/lib/node_modules/npm/bin/npm-cli.js\",\n _: \"/opt/homebrew/bin/npm\",\n });\n assert.strictEqual(info.installSource, \"homebrew\");\n });\n\n it(\"detects system install\", () => {\n const info = getPackageManagerUsageProperties({\n npm_config_user_agent: \"npm/10.9.0 node/v22.14.0 linux x64\",\n npm_execpath: \"/usr/local/lib/node_modules/npm/bin/npm-cli.js\",\n _: \"/usr/local/bin/npm\",\n });\n assert.strictEqual(info.installSource, \"system\");\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-dispatcher.test.d.ts","sourceRoot":"","sources":["../../src/common/cli-dispatcher.test.ts"],"names":[],"mappings":""}
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
import { afterEach, beforeEach, describe, it } from "node:test";
|
|
2
|
-
import { assert } from "chai";
|
|
3
|
-
import { getGlobalDispatcher, MockAgent, setGlobalDispatcher, } from "undici";
|
|
4
|
-
import { configureCliDispatcher } from "./cli-dispatcher.js";
|
|
5
|
-
describe("configureCliDispatcher", () => {
|
|
6
|
-
let mockAgent;
|
|
7
|
-
let previousDispatcher;
|
|
8
|
-
let previousCanary;
|
|
9
|
-
beforeEach(() => {
|
|
10
|
-
previousCanary = process.env.ZUPLO_CANARY;
|
|
11
|
-
delete process.env.ZUPLO_CANARY;
|
|
12
|
-
previousDispatcher = getGlobalDispatcher();
|
|
13
|
-
mockAgent = new MockAgent();
|
|
14
|
-
mockAgent.disableNetConnect();
|
|
15
|
-
setGlobalDispatcher(mockAgent);
|
|
16
|
-
});
|
|
17
|
-
afterEach(async () => {
|
|
18
|
-
if (previousCanary === undefined) {
|
|
19
|
-
delete process.env.ZUPLO_CANARY;
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
process.env.ZUPLO_CANARY = previousCanary;
|
|
23
|
-
}
|
|
24
|
-
await mockAgent.close();
|
|
25
|
-
setGlobalDispatcher(previousDispatcher);
|
|
26
|
-
});
|
|
27
|
-
it("sets ZuploCLI user-agent on outbound fetch requests", async () => {
|
|
28
|
-
configureCliDispatcher("1.2.3");
|
|
29
|
-
mockAgent
|
|
30
|
-
.get("https://example.com")
|
|
31
|
-
.intercept({
|
|
32
|
-
path: "/v1/ping",
|
|
33
|
-
method: "GET",
|
|
34
|
-
headers: {
|
|
35
|
-
"user-agent": "ZuploCLI/1.2.3",
|
|
36
|
-
},
|
|
37
|
-
})
|
|
38
|
-
.reply(200, { ok: true });
|
|
39
|
-
const response = await fetch("https://example.com/v1/ping");
|
|
40
|
-
assert.strictEqual(response.status, 200);
|
|
41
|
-
assert.strictEqual(mockAgent.pendingInterceptors().length, 0);
|
|
42
|
-
});
|
|
43
|
-
it("sets zp-canary when ZUPLO_CANARY is set", async () => {
|
|
44
|
-
process.env.ZUPLO_CANARY = "1";
|
|
45
|
-
configureCliDispatcher("9.9.9");
|
|
46
|
-
mockAgent
|
|
47
|
-
.get("https://example.com")
|
|
48
|
-
.intercept({
|
|
49
|
-
path: "/v1/ping",
|
|
50
|
-
method: "GET",
|
|
51
|
-
headers: {
|
|
52
|
-
"user-agent": "ZuploCLI/9.9.9",
|
|
53
|
-
"zp-canary": "true",
|
|
54
|
-
},
|
|
55
|
-
})
|
|
56
|
-
.reply(200, { ok: true });
|
|
57
|
-
const response = await fetch("https://example.com/v1/ping");
|
|
58
|
-
assert.strictEqual(response.status, 200);
|
|
59
|
-
assert.strictEqual(mockAgent.pendingInterceptors().length, 0);
|
|
60
|
-
});
|
|
61
|
-
it("does not set zp-canary when ZUPLO_CANARY is unset", async () => {
|
|
62
|
-
configureCliDispatcher("1.0.0");
|
|
63
|
-
let seenHeaders;
|
|
64
|
-
mockAgent
|
|
65
|
-
.get("https://example.com")
|
|
66
|
-
.intercept({
|
|
67
|
-
path: "/v1/ping",
|
|
68
|
-
method: "GET",
|
|
69
|
-
})
|
|
70
|
-
.reply((opts) => {
|
|
71
|
-
seenHeaders = opts.headers;
|
|
72
|
-
return { statusCode: 200, data: { ok: true } };
|
|
73
|
-
});
|
|
74
|
-
await fetch("https://example.com/v1/ping");
|
|
75
|
-
assert.ok(seenHeaders);
|
|
76
|
-
assert.strictEqual(seenHeaders["user-agent"], "ZuploCLI/1.0.0");
|
|
77
|
-
assert.isUndefined(seenHeaders["zp-canary"]);
|
|
78
|
-
});
|
|
79
|
-
});
|
|
80
|
-
//# sourceMappingURL=cli-dispatcher.test.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-dispatcher.test.js","sourceRoot":"","sources":["../../src/common/cli-dispatcher.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,WAAW,CAAC;AAChE,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAEL,mBAAmB,EACnB,SAAS,EACT,mBAAmB,GACpB,MAAM,QAAQ,CAAC;AAChB,OAAO,EAAE,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAE7D,QAAQ,CAAC,wBAAwB,EAAE,GAAG,EAAE;IACtC,IAAI,SAAoB,CAAC;IACzB,IAAI,kBAA8B,CAAC;IACnC,IAAI,cAAkC,CAAC;IAEvC,UAAU,CAAC,GAAG,EAAE;QACd,cAAc,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAMhC,kBAAkB,GAAG,mBAAmB,EAAE,CAAC;QAC3C,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,SAAS,CAAC,iBAAiB,EAAE,CAAC;QAC9B,mBAAmB,CAAC,SAAS,CAAC,CAAC;IACjC,CAAC,CAAC,CAAC;IAEH,SAAS,CAAC,KAAK,IAAI,EAAE;QACnB,IAAI,cAAc,KAAK,SAAS,EAAE,CAAC;YACjC,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;QAClC,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,cAAc,CAAC;QAC5C,CAAC;QAED,MAAM,SAAS,CAAC,KAAK,EAAE,CAAC;QACxB,mBAAmB,CAAC,kBAAkB,CAAC,CAAC;IAC1C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAEhC,SAAS;aACN,GAAG,CAAC,qBAAqB,CAAC;aAC1B,SAAS,CAAC;YACT,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,YAAY,EAAE,gBAAgB;aAC/B;SACF,CAAC;aACD,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC5D,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,yCAAyC,EAAE,KAAK,IAAI,EAAE;QACvD,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,GAAG,CAAC;QAC/B,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAEhC,SAAS;aACN,GAAG,CAAC,qBAAqB,CAAC;aAC1B,SAAS,CAAC;YACT,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,KAAK;YACb,OAAO,EAAE;gBACP,YAAY,EAAE,gBAAgB;gBAC9B,WAAW,EAAE,MAAM;aACpB;SACF,CAAC;aACD,KAAK,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;QAE5B,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAC5D,MAAM,CAAC,WAAW,CAAC,QAAQ,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACzC,MAAM,CAAC,WAAW,CAAC,SAAS,CAAC,mBAAmB,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;IAChE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,KAAK,IAAI,EAAE;QACjE,sBAAsB,CAAC,OAAO,CAAC,CAAC;QAEhC,IAAI,WAAsE,CAAC;QAE3E,SAAS;aACN,GAAG,CAAC,qBAAqB,CAAC;aAC1B,SAAS,CAAC;YACT,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE,KAAK;SACd,CAAC;aACD,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE;YACd,WAAW,GAAG,IAAI,CAAC,OAGlB,CAAC;YACF,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC;QACjD,CAAC,CAAC,CAAC;QAEL,MAAM,KAAK,CAAC,6BAA6B,CAAC,CAAC;QAE3C,MAAM,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;QACvB,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,YAAY,CAAC,EAAE,gBAAgB,CAAC,CAAC;QAChE,MAAM,CAAC,WAAW,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC,CAAC;IAC/C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC","sourcesContent":["import { afterEach, beforeEach, describe, it } from \"node:test\";\nimport { assert } from \"chai\";\nimport {\n type Dispatcher,\n getGlobalDispatcher,\n MockAgent,\n setGlobalDispatcher,\n} from \"undici\";\nimport { configureCliDispatcher } from \"./cli-dispatcher.js\";\n\ndescribe(\"configureCliDispatcher\", () => {\n let mockAgent: MockAgent;\n let previousDispatcher: Dispatcher;\n let previousCanary: string | undefined;\n\n beforeEach(() => {\n previousCanary = process.env.ZUPLO_CANARY;\n delete process.env.ZUPLO_CANARY;\n\n // The subject under test replaces the process-global dispatcher itself, so\n // capture whatever was installed before this suite ran. The teardown used\n // to install a brand new `Agent()` instead, which left the real original\n // unreachable and abandoned a fresh Agent after every test.\n previousDispatcher = getGlobalDispatcher();\n mockAgent = new MockAgent();\n mockAgent.disableNetConnect();\n setGlobalDispatcher(mockAgent);\n });\n\n afterEach(async () => {\n if (previousCanary === undefined) {\n delete process.env.ZUPLO_CANARY;\n } else {\n process.env.ZUPLO_CANARY = previousCanary;\n }\n\n await mockAgent.close();\n setGlobalDispatcher(previousDispatcher);\n });\n\n it(\"sets ZuploCLI user-agent on outbound fetch requests\", async () => {\n configureCliDispatcher(\"1.2.3\");\n\n mockAgent\n .get(\"https://example.com\")\n .intercept({\n path: \"/v1/ping\",\n method: \"GET\",\n headers: {\n \"user-agent\": \"ZuploCLI/1.2.3\",\n },\n })\n .reply(200, { ok: true });\n\n const response = await fetch(\"https://example.com/v1/ping\");\n assert.strictEqual(response.status, 200);\n assert.strictEqual(mockAgent.pendingInterceptors().length, 0);\n });\n\n it(\"sets zp-canary when ZUPLO_CANARY is set\", async () => {\n process.env.ZUPLO_CANARY = \"1\";\n configureCliDispatcher(\"9.9.9\");\n\n mockAgent\n .get(\"https://example.com\")\n .intercept({\n path: \"/v1/ping\",\n method: \"GET\",\n headers: {\n \"user-agent\": \"ZuploCLI/9.9.9\",\n \"zp-canary\": \"true\",\n },\n })\n .reply(200, { ok: true });\n\n const response = await fetch(\"https://example.com/v1/ping\");\n assert.strictEqual(response.status, 200);\n assert.strictEqual(mockAgent.pendingInterceptors().length, 0);\n });\n\n it(\"does not set zp-canary when ZUPLO_CANARY is unset\", async () => {\n configureCliDispatcher(\"1.0.0\");\n\n let seenHeaders: Record<string, string | string[] | undefined> | undefined;\n\n mockAgent\n .get(\"https://example.com\")\n .intercept({\n path: \"/v1/ping\",\n method: \"GET\",\n })\n .reply((opts) => {\n seenHeaders = opts.headers as Record<\n string,\n string | string[] | undefined\n >;\n return { statusCode: 200, data: { ok: true } };\n });\n\n await fetch(\"https://example.com/v1/ping\");\n\n assert.ok(seenHeaders);\n assert.strictEqual(seenHeaders[\"user-agent\"], \"ZuploCLI/1.0.0\");\n assert.isUndefined(seenHeaders[\"zp-canary\"]);\n });\n});\n"]}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"check-pnpm-lifecycle.test.d.ts","sourceRoot":"","sources":["../../../src/common/middleware/check-pnpm-lifecycle.test.ts"],"names":[],"mappings":""}
|