@gfdelarue/testkit 0.3.0
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/LICENSE +68 -0
- package/README.md +1125 -0
- package/bin/testkit-windows-owner-arm64.exe +0 -0
- package/bin/testkit-windows-owner-x64.exe +0 -0
- package/bin/testkit.mjs +60 -0
- package/dist/app/cleanup/index.d.ts +52 -0
- package/dist/app/cleanup/index.js +1 -0
- package/dist/app/cloud/campaigns.d.ts +6 -0
- package/dist/app/cloud/campaigns.js +1 -0
- package/dist/app/cloud/control-actions.d.ts +12 -0
- package/dist/app/cloud/control-actions.js +2 -0
- package/dist/app/cloud/control-links.d.ts +5 -0
- package/dist/app/cloud/control-links.js +1 -0
- package/dist/app/cloud/control-read.d.ts +24 -0
- package/dist/app/cloud/control-read.js +1 -0
- package/dist/app/cloud/control-resources.d.ts +3 -0
- package/dist/app/cloud/control-resources.js +1 -0
- package/dist/app/cloud/control.d.ts +34 -0
- package/dist/app/cloud/control.js +5 -0
- package/dist/app/cloud/credentials.d.ts +11 -0
- package/dist/app/cloud/credentials.js +2 -0
- package/dist/app/cloud/index.d.ts +22 -0
- package/dist/app/cloud/index.js +2 -0
- package/dist/app/cloud/login.d.ts +63 -0
- package/dist/app/cloud/login.js +2 -0
- package/dist/app/cloud/migration/archive.d.ts +13 -0
- package/dist/app/cloud/migration/archive.js +1 -0
- package/dist/app/cloud/migration/commands.d.ts +8 -0
- package/dist/app/cloud/migration/commands.js +1 -0
- package/dist/app/cloud/migration/evidence.d.ts +13 -0
- package/dist/app/cloud/migration/evidence.js +2 -0
- package/dist/app/cloud/migration/files.d.ts +16 -0
- package/dist/app/cloud/migration/files.js +2 -0
- package/dist/app/cloud/migration/index.d.ts +6 -0
- package/dist/app/cloud/migration/index.js +1 -0
- package/dist/app/cloud/migration/journal.d.ts +64 -0
- package/dist/app/cloud/migration/journal.js +1 -0
- package/dist/app/cloud/migration/mapping-dispositions.d.ts +3 -0
- package/dist/app/cloud/migration/mapping-dispositions.js +1 -0
- package/dist/app/cloud/migration/mapping.d.ts +11 -0
- package/dist/app/cloud/migration/mapping.js +2 -0
- package/dist/app/cloud/migration/model.d.ts +175 -0
- package/dist/app/cloud/migration/model.js +1 -0
- package/dist/app/cloud/migration/plan.d.ts +7 -0
- package/dist/app/cloud/migration/plan.js +1 -0
- package/dist/app/cloud/migration/progress.d.ts +19 -0
- package/dist/app/cloud/migration/progress.js +1 -0
- package/dist/app/cloud/migration/reconcile.d.ts +22 -0
- package/dist/app/cloud/migration/reconcile.js +1 -0
- package/dist/app/cloud/migration/reconciliation-spool.d.ts +4 -0
- package/dist/app/cloud/migration/reconciliation-spool.js +1 -0
- package/dist/app/cloud/migration/state.d.ts +15 -0
- package/dist/app/cloud/migration/state.js +1 -0
- package/dist/app/cloud/migration/transfer.d.ts +6 -0
- package/dist/app/cloud/migration/transfer.js +1 -0
- package/dist/app/db-schema/prepare.d.ts +11 -0
- package/dist/app/db-schema/prepare.js +1 -0
- package/dist/app/db-schema/refresh.d.ts +17 -0
- package/dist/app/db-schema/refresh.js +1 -0
- package/dist/app/db-schema/verify.d.ts +11 -0
- package/dist/app/db-schema/verify.js +1 -0
- package/dist/app/destroy/index.d.ts +16 -0
- package/dist/app/destroy/index.js +1 -0
- package/dist/app/discover/index.d.ts +8 -0
- package/dist/app/discover/index.js +2 -0
- package/dist/app/doctor/index.d.ts +17 -0
- package/dist/app/doctor/index.js +1 -0
- package/dist/app/file-selection.d.ts +1 -0
- package/dist/app/file-selection.js +1 -0
- package/dist/app/inspect/artifacts.d.ts +29 -0
- package/dist/app/inspect/artifacts.js +1 -0
- package/dist/app/inspect/index.d.ts +112 -0
- package/dist/app/inspect/index.js +1 -0
- package/dist/app/lint/index.d.ts +28 -0
- package/dist/app/lint/index.js +2 -0
- package/dist/app/lint/native.d.ts +10 -0
- package/dist/app/lint/native.js +1 -0
- package/dist/app/lint/options.d.ts +67 -0
- package/dist/app/lint/options.js +1 -0
- package/dist/app/lint/policy.d.ts +21 -0
- package/dist/app/lint/policy.js +1 -0
- package/dist/app/lint/rules/data.d.ts +3 -0
- package/dist/app/lint/rules/data.js +1 -0
- package/dist/app/lint/rules/engine-imports.d.ts +3 -0
- package/dist/app/lint/rules/engine-imports.js +1 -0
- package/dist/app/lint/rules/syntax.d.ts +4 -0
- package/dist/app/lint/rules/syntax.js +1 -0
- package/dist/app/lint/rules/unit.d.ts +3 -0
- package/dist/app/lint/rules/unit.js +1 -0
- package/dist/app/lint/shared.d.ts +36 -0
- package/dist/app/lint/shared.js +1 -0
- package/dist/app/package-inspection.d.ts +20 -0
- package/dist/app/package-inspection.js +1 -0
- package/dist/app/run/endpoint-readiness.d.ts +43 -0
- package/dist/app/run/endpoint-readiness.js +1 -0
- package/dist/app/run/engine-evidence-persistence.d.ts +39 -0
- package/dist/app/run/engine-evidence-persistence.js +1 -0
- package/dist/app/run/engine-execution-cleanup.d.ts +8 -0
- package/dist/app/run/engine-execution-cleanup.js +1 -0
- package/dist/app/run/engine-execution-failures.d.ts +41 -0
- package/dist/app/run/engine-execution-failures.js +1 -0
- package/dist/app/run/engine-execution-observer.d.ts +21 -0
- package/dist/app/run/engine-execution-observer.js +1 -0
- package/dist/app/run/engine-execution-reporting.d.ts +17 -0
- package/dist/app/run/engine-execution-reporting.js +1 -0
- package/dist/app/run/engine-execution.d.ts +60 -0
- package/dist/app/run/engine-execution.js +1 -0
- package/dist/app/run/engine-orchestration.d.ts +49 -0
- package/dist/app/run/engine-orchestration.js +1 -0
- package/dist/app/run/failure-details.d.ts +36 -0
- package/dist/app/run/failure-details.js +1 -0
- package/dist/app/run/live-run.d.ts +27 -0
- package/dist/app/run/live-run.js +1 -0
- package/dist/app/run/operation-progress.d.ts +13 -0
- package/dist/app/run/operation-progress.js +1 -0
- package/dist/app/run/orchestrator.d.ts +68 -0
- package/dist/app/run/orchestrator.js +1 -0
- package/dist/app/run/planning-types.d.ts +68 -0
- package/dist/app/run/planning-types.js +1 -0
- package/dist/app/run/planning.d.ts +15 -0
- package/dist/app/run/planning.js +1 -0
- package/dist/app/run/playwright-configuration.d.ts +2 -0
- package/dist/app/run/playwright-configuration.js +1 -0
- package/dist/app/run/request.d.ts +30 -0
- package/dist/app/run/request.js +1 -0
- package/dist/app/run/results.d.ts +161 -0
- package/dist/app/run/results.js +1 -0
- package/dist/app/run/run-events.d.ts +144 -0
- package/dist/app/run/run-events.js +1 -0
- package/dist/app/run/run-finalization.d.ts +52 -0
- package/dist/app/run/run-finalization.js +1 -0
- package/dist/app/run/run-guards.d.ts +3 -0
- package/dist/app/run/run-guards.js +3 -0
- package/dist/app/run/runtime-failures.d.ts +18 -0
- package/dist/app/run/runtime-failures.js +1 -0
- package/dist/app/run/runtime-fixtures.d.ts +2 -0
- package/dist/app/run/runtime-fixtures.js +1 -0
- package/dist/app/run/runtime-task-types.d.ts +20 -0
- package/dist/app/run/runtime-task-types.js +1 -0
- package/dist/app/run/scheduler/estimates.d.ts +32 -0
- package/dist/app/run/scheduler/estimates.js +1 -0
- package/dist/app/run/scheduler/identity.d.ts +9 -0
- package/dist/app/run/scheduler/identity.js +1 -0
- package/dist/app/run/scheduler/index.d.ts +124 -0
- package/dist/app/run/scheduler/index.js +1 -0
- package/dist/app/run/scheduler/observations.d.ts +20 -0
- package/dist/app/run/scheduler/observations.js +1 -0
- package/dist/app/run/selection.d.ts +10 -0
- package/dist/app/run/selection.js +1 -0
- package/dist/app/run/setup/runtime-node-setup-errors.d.ts +13 -0
- package/dist/app/run/setup/runtime-node-setup-errors.js +1 -0
- package/dist/app/run/setup/runtime-node-setup-protocol.d.ts +85 -0
- package/dist/app/run/setup/runtime-node-setup-protocol.js +1 -0
- package/dist/app/run/setup/runtime-node-setup-worker.d.ts +1 -0
- package/dist/app/run/setup/runtime-node-setup-worker.js +1 -0
- package/dist/app/run/setup/runtime-node-setup.d.ts +48 -0
- package/dist/app/run/setup/runtime-node-setup.js +3 -0
- package/dist/app/run/task-batches.d.ts +23 -0
- package/dist/app/run/task-batches.js +1 -0
- package/dist/app/run/worker-loop.d.ts +57 -0
- package/dist/app/run/worker-loop.js +1 -0
- package/dist/app/setup/playwright.d.ts +22 -0
- package/dist/app/setup/playwright.js +1 -0
- package/dist/app/status/index.d.ts +7 -0
- package/dist/app/status/index.js +1 -0
- package/dist/app/status/model.d.ts +29 -0
- package/dist/app/status/model.js +1 -0
- package/dist/app/status/runs.d.ts +99 -0
- package/dist/app/status/runs.js +1 -0
- package/dist/app/stop/index.d.ts +14 -0
- package/dist/app/stop/index.js +1 -0
- package/dist/app/typecheck/index.d.ts +61 -0
- package/dist/app/typecheck/index.js +4 -0
- package/dist/app/typecheck/unavailable.d.ts +1 -0
- package/dist/app/typecheck/unavailable.js +1 -0
- package/dist/cli/cloud-apply-help.d.ts +1 -0
- package/dist/cli/cloud-apply-help.js +56 -0
- package/dist/cli/cloud-selection.d.ts +2 -0
- package/dist/cli/cloud-selection.js +3 -0
- package/dist/cli/command-catalog.d.ts +238 -0
- package/dist/cli/command-catalog.js +1 -0
- package/dist/cli/command-flags.d.ts +19 -0
- package/dist/cli/command-flags.js +1 -0
- package/dist/cli/command-registry.d.ts +2 -0
- package/dist/cli/command-registry.js +1 -0
- package/dist/cli/commands/artifacts.d.ts +48 -0
- package/dist/cli/commands/artifacts.js +3 -0
- package/dist/cli/commands/cleanup.d.ts +13 -0
- package/dist/cli/commands/cleanup.js +1 -0
- package/dist/cli/commands/cloud/apply.d.ts +5 -0
- package/dist/cli/commands/cloud/apply.js +1 -0
- package/dist/cli/commands/cloud/campaign/create.d.ts +5 -0
- package/dist/cli/commands/cloud/campaign/create.js +1 -0
- package/dist/cli/commands/cloud/download.d.ts +5 -0
- package/dist/cli/commands/cloud/download.js +1 -0
- package/dist/cli/commands/cloud/list.d.ts +5 -0
- package/dist/cli/commands/cloud/list.js +1 -0
- package/dist/cli/commands/cloud/login.d.ts +13 -0
- package/dist/cli/commands/cloud/login.js +2 -0
- package/dist/cli/commands/cloud/logout.d.ts +7 -0
- package/dist/cli/commands/cloud/logout.js +1 -0
- package/dist/cli/commands/cloud/migrate/apply.d.ts +2 -0
- package/dist/cli/commands/cloud/migrate/apply.js +1 -0
- package/dist/cli/commands/cloud/migrate/plan.d.ts +7 -0
- package/dist/cli/commands/cloud/migrate/plan.js +1 -0
- package/dist/cli/commands/cloud/migrate/progress.d.ts +2 -0
- package/dist/cli/commands/cloud/migrate/progress.js +2 -0
- package/dist/cli/commands/cloud/migrate/reconcile.d.ts +2 -0
- package/dist/cli/commands/cloud/migrate/reconcile.js +1 -0
- package/dist/cli/commands/cloud/policy/preview.d.ts +5 -0
- package/dist/cli/commands/cloud/policy/preview.js +1 -0
- package/dist/cli/commands/cloud/project/create.d.ts +5 -0
- package/dist/cli/commands/cloud/project/create.js +1 -0
- package/dist/cli/commands/cloud/publish.d.ts +7 -0
- package/dist/cli/commands/cloud/publish.js +1 -0
- package/dist/cli/commands/cloud/session/revoke.d.ts +8 -0
- package/dist/cli/commands/cloud/session/revoke.js +1 -0
- package/dist/cli/commands/cloud/show.d.ts +5 -0
- package/dist/cli/commands/cloud/show.js +1 -0
- package/dist/cli/commands/cloud/snapshot.d.ts +5 -0
- package/dist/cli/commands/cloud/snapshot.js +1 -0
- package/dist/cli/commands/cloud/status.d.ts +33 -0
- package/dist/cli/commands/cloud/status.js +1 -0
- package/dist/cli/commands/db/schema/refresh.d.ts +2 -0
- package/dist/cli/commands/db/schema/refresh.js +1 -0
- package/dist/cli/commands/db/schema/verify.d.ts +2 -0
- package/dist/cli/commands/db/schema/verify.js +1 -0
- package/dist/cli/commands/destroy.d.ts +9 -0
- package/dist/cli/commands/destroy.js +1 -0
- package/dist/cli/commands/discover.d.ts +2 -0
- package/dist/cli/commands/discover.js +1 -0
- package/dist/cli/commands/doctor.d.ts +2 -0
- package/dist/cli/commands/doctor.js +1 -0
- package/dist/cli/commands/guard/unsafe-entrypoint.d.ts +2 -0
- package/dist/cli/commands/guard/unsafe-entrypoint.js +2 -0
- package/dist/cli/commands/lint.d.ts +2 -0
- package/dist/cli/commands/lint.js +1 -0
- package/dist/cli/commands/run/status.d.ts +5 -0
- package/dist/cli/commands/run/status.js +1 -0
- package/dist/cli/commands/run/stop.d.ts +7 -0
- package/dist/cli/commands/run/stop.js +1 -0
- package/dist/cli/commands/run.d.ts +9 -0
- package/dist/cli/commands/run.js +1 -0
- package/dist/cli/commands/setup/playwright.d.ts +2 -0
- package/dist/cli/commands/setup/playwright.js +1 -0
- package/dist/cli/commands/status.d.ts +5 -0
- package/dist/cli/commands/status.js +1 -0
- package/dist/cli/commands/stop.d.ts +12 -0
- package/dist/cli/commands/stop.js +1 -0
- package/dist/cli/commands/typecheck.d.ts +2 -0
- package/dist/cli/commands/typecheck.js +1 -0
- package/dist/cli/commands/workspace.d.ts +2 -0
- package/dist/cli/commands/workspace.js +1 -0
- package/dist/cli/entrypoint.d.ts +1 -0
- package/dist/cli/entrypoint.js +1 -0
- package/dist/cli/framework/command.d.ts +21 -0
- package/dist/cli/framework/command.js +1 -0
- package/dist/cli/framework/definitions.d.ts +100 -0
- package/dist/cli/framework/definitions.js +1 -0
- package/dist/cli/framework/errors.d.ts +6 -0
- package/dist/cli/framework/errors.js +1 -0
- package/dist/cli/framework/execute.d.ts +13 -0
- package/dist/cli/framework/execute.js +6 -0
- package/dist/cli/framework/help.d.ts +11 -0
- package/dist/cli/framework/help.js +8 -0
- package/dist/cli/framework/index.d.ts +3 -0
- package/dist/cli/framework/index.js +1 -0
- package/dist/cli/framework/parser.d.ts +6 -0
- package/dist/cli/framework/parser.js +1 -0
- package/dist/cli/index.d.ts +4 -0
- package/dist/cli/index.js +1 -0
- package/dist/cli/json-errors.d.ts +3 -0
- package/dist/cli/json-errors.js +1 -0
- package/dist/cli/operations/db/schema/refresh/operation.d.ts +6 -0
- package/dist/cli/operations/db/schema/refresh/operation.js +1 -0
- package/dist/cli/operations/db/schema/verify/operation.d.ts +6 -0
- package/dist/cli/operations/db/schema/verify/operation.js +1 -0
- package/dist/cli/operations/run/operation.d.ts +24 -0
- package/dist/cli/operations/run/operation.js +2 -0
- package/dist/cli/process-signal.d.ts +1 -0
- package/dist/cli/process-signal.js +1 -0
- package/dist/cli/renderers/artifact-preview.d.ts +4 -0
- package/dist/cli/renderers/artifact-preview.js +1 -0
- package/dist/cli/renderers/cleanup/format.d.ts +14 -0
- package/dist/cli/renderers/cleanup/format.js +1 -0
- package/dist/cli/renderers/db-schema/text.d.ts +4 -0
- package/dist/cli/renderers/db-schema/text.js +1 -0
- package/dist/cli/renderers/destroy/text.d.ts +4 -0
- package/dist/cli/renderers/destroy/text.js +1 -0
- package/dist/cli/renderers/discover/report.d.ts +7 -0
- package/dist/cli/renderers/discover/report.js +1 -0
- package/dist/cli/renderers/discover/text.d.ts +3 -0
- package/dist/cli/renderers/discover/text.js +1 -0
- package/dist/cli/renderers/doctor/text.d.ts +2 -0
- package/dist/cli/renderers/doctor/text.js +1 -0
- package/dist/cli/renderers/lint/text.d.ts +2 -0
- package/dist/cli/renderers/lint/text.js +1 -0
- package/dist/cli/renderers/run/events.d.ts +8 -0
- package/dist/cli/renderers/run/events.js +2 -0
- package/dist/cli/renderers/run/failure.d.ts +8 -0
- package/dist/cli/renderers/run/failure.js +1 -0
- package/dist/cli/renderers/run/formatting.d.ts +79 -0
- package/dist/cli/renderers/run/formatting.js +1 -0
- package/dist/cli/renderers/run/status.d.ts +6 -0
- package/dist/cli/renderers/run/status.js +1 -0
- package/dist/cli/renderers/run/text-reporter.d.ts +19 -0
- package/dist/cli/renderers/run/text-reporter.js +23 -0
- package/dist/cli/renderers/status/text.d.ts +2 -0
- package/dist/cli/renderers/status/text.js +1 -0
- package/dist/cli/renderers/stop/text.d.ts +7 -0
- package/dist/cli/renderers/stop/text.js +1 -0
- package/dist/cli/renderers/typecheck/text.d.ts +2 -0
- package/dist/cli/renderers/typecheck/text.js +1 -0
- package/dist/cli/terminal/colors.d.ts +10 -0
- package/dist/cli/terminal/colors.js +1 -0
- package/dist/cli/terminal/layout.d.ts +11 -0
- package/dist/cli/terminal/layout.js +2 -0
- package/dist/cli/version-drift.d.ts +25 -0
- package/dist/cli/version-drift.js +7 -0
- package/dist/cloud/account.d.ts +34 -0
- package/dist/cloud/account.js +1 -0
- package/dist/cloud/archive-contract.d.ts +1 -0
- package/dist/cloud/archive-contract.js +1 -0
- package/dist/cloud/archive.d.ts +12 -0
- package/dist/cloud/archive.js +1 -0
- package/dist/cloud/campaigns.d.ts +200 -0
- package/dist/cloud/campaigns.js +2 -0
- package/dist/cloud/client.d.ts +68 -0
- package/dist/cloud/client.js +4 -0
- package/dist/cloud/download.d.ts +5 -0
- package/dist/cloud/download.js +1 -0
- package/dist/cloud/historical-contract.d.ts +224 -0
- package/dist/cloud/historical-contract.js +1 -0
- package/dist/cloud/historical-json.d.ts +16 -0
- package/dist/cloud/historical-json.js +1 -0
- package/dist/cloud/historical.d.ts +69 -0
- package/dist/cloud/historical.js +1 -0
- package/dist/cloud/pagination.d.ts +5 -0
- package/dist/cloud/pagination.js +1 -0
- package/dist/cloud/transport.d.ts +18 -0
- package/dist/cloud/transport.js +1 -0
- package/dist/config/authoring/build-config-contract.d.ts +27 -0
- package/dist/config/authoring/build-config-contract.js +1 -0
- package/dist/config/authoring/configured-step-contract.d.ts +18 -0
- package/dist/config/authoring/configured-step-contract.js +1 -0
- package/dist/config/authoring/http-execution-contract.d.ts +70 -0
- package/dist/config/authoring/http-execution-contract.js +1 -0
- package/dist/config/authoring/http-methods.d.ts +18 -0
- package/dist/config/authoring/http-methods.js +1 -0
- package/dist/config/authoring/index.d.ts +376 -0
- package/dist/config/authoring/index.js +1 -0
- package/dist/config/authoring/preset-env.d.ts +19 -0
- package/dist/config/authoring/preset-env.js +1 -0
- package/dist/config/authoring/runtime.d.ts +64 -0
- package/dist/config/authoring/runtime.js +1 -0
- package/dist/config/loader/cloud.d.ts +2 -0
- package/dist/config/loader/cloud.js +1 -0
- package/dist/config/loader/config-loader.d.ts +9 -0
- package/dist/config/loader/config-loader.js +1 -0
- package/dist/config/loader/database-materialization.d.ts +19 -0
- package/dist/config/loader/database-materialization.js +1 -0
- package/dist/config/loader/database-roles.d.ts +2 -0
- package/dist/config/loader/database-roles.js +1 -0
- package/dist/config/loader/database.d.ts +55 -0
- package/dist/config/loader/database.js +1 -0
- package/dist/config/loader/decode-discovery.d.ts +5 -0
- package/dist/config/loader/decode-discovery.js +1 -0
- package/dist/config/loader/decode-execution.d.ts +9 -0
- package/dist/config/loader/decode-execution.js +1 -0
- package/dist/config/loader/dependencies.d.ts +7 -0
- package/dist/config/loader/dependencies.js +1 -0
- package/dist/config/loader/discover-tests.d.ts +101 -0
- package/dist/config/loader/discover-tests.js +1 -0
- package/dist/config/loader/discovery-summary.d.ts +29 -0
- package/dist/config/loader/discovery-summary.js +1 -0
- package/dist/config/loader/discovery.d.ts +54 -0
- package/dist/config/loader/discovery.js +2 -0
- package/dist/config/loader/env.d.ts +4 -0
- package/dist/config/loader/env.js +1 -0
- package/dist/config/loader/execution-model.d.ts +16 -0
- package/dist/config/loader/execution-model.js +1 -0
- package/dist/config/loader/file-metadata.d.ts +19 -0
- package/dist/config/loader/file-metadata.js +1 -0
- package/dist/config/loader/index.d.ts +10 -0
- package/dist/config/loader/index.js +1 -0
- package/dist/config/loader/load.d.ts +89 -0
- package/dist/config/loader/load.js +1 -0
- package/dist/config/loader/managed-configs.d.ts +21 -0
- package/dist/config/loader/managed-configs.js +1 -0
- package/dist/config/loader/path-policy.d.ts +9 -0
- package/dist/config/loader/path-policy.js +1 -0
- package/dist/config/loader/paths.d.ts +5 -0
- package/dist/config/loader/paths.js +1 -0
- package/dist/config/loader/runtime-isolation.d.ts +44 -0
- package/dist/config/loader/runtime-isolation.js +1 -0
- package/dist/config/loader/runtime.d.ts +25 -0
- package/dist/config/loader/runtime.js +1 -0
- package/dist/config/loader/skip-config.d.ts +44 -0
- package/dist/config/loader/skip-config.js +1 -0
- package/dist/config/loader/validation.d.ts +16 -0
- package/dist/config/loader/validation.js +1 -0
- package/dist/config/loader/values.d.ts +4 -0
- package/dist/config/loader/values.js +1 -0
- package/dist/config/runtime/build-assets.d.ts +6 -0
- package/dist/config/runtime/build-assets.js +1 -0
- package/dist/config/runtime/env/index.d.ts +35 -0
- package/dist/config/runtime/env/index.js +1 -0
- package/dist/config/runtime/next-runtime-tsconfig.d.ts +6 -0
- package/dist/config/runtime/next-runtime-tsconfig.js +2 -0
- package/dist/database/activity-gate.d.ts +22 -0
- package/dist/database/activity-gate.js +1 -0
- package/dist/database/admin.d.ts +31 -0
- package/dist/database/admin.js +2 -0
- package/dist/database/cleanup.d.ts +36 -0
- package/dist/database/cleanup.js +1 -0
- package/dist/database/configured-steps.d.ts +27 -0
- package/dist/database/configured-steps.js +1 -0
- package/dist/database/constants.d.ts +11 -0
- package/dist/database/constants.js +1 -0
- package/dist/database/docker.d.ts +65 -0
- package/dist/database/docker.js +5 -0
- package/dist/database/drizzle/index.d.ts +13 -0
- package/dist/database/drizzle/index.js +1 -0
- package/dist/database/fingerprint.d.ts +12 -0
- package/dist/database/fingerprint.js +1 -0
- package/dist/database/index.d.ts +41 -0
- package/dist/database/index.js +1 -0
- package/dist/database/local-postgres.d.ts +71 -0
- package/dist/database/local-postgres.js +2 -0
- package/dist/database/naming.d.ts +17 -0
- package/dist/database/naming.js +1 -0
- package/dist/database/postgres/index.d.ts +71 -0
- package/dist/database/postgres/index.js +2 -0
- package/dist/database/progress.d.ts +6 -0
- package/dist/database/progress.js +1 -0
- package/dist/database/roles.d.ts +19 -0
- package/dist/database/roles.js +41 -0
- package/dist/database/runtime-config.d.ts +16 -0
- package/dist/database/runtime-config.js +1 -0
- package/dist/database/runtime-reservations.d.ts +19 -0
- package/dist/database/runtime-reservations.js +1 -0
- package/dist/database/schema-operations.d.ts +18 -0
- package/dist/database/schema-operations.js +1 -0
- package/dist/database/schema-source.d.ts +93 -0
- package/dist/database/schema-source.js +3 -0
- package/dist/database/source-refresh-lock.d.ts +8 -0
- package/dist/database/source-refresh-lock.js +1 -0
- package/dist/database/source-url.d.ts +22 -0
- package/dist/database/source-url.js +2 -0
- package/dist/database/state-files.d.ts +13 -0
- package/dist/database/state-files.js +1 -0
- package/dist/database/state.d.ts +26 -0
- package/dist/database/state.js +1 -0
- package/dist/database/steps.d.ts +16 -0
- package/dist/database/steps.js +4 -0
- package/dist/database/template-steps.d.ts +35 -0
- package/dist/database/template-steps.js +4 -0
- package/dist/domain/file-timeout.d.ts +28 -0
- package/dist/domain/file-timeout.js +1 -0
- package/dist/domain/identifiers.d.ts +9 -0
- package/dist/domain/identifiers.js +1 -0
- package/dist/domain/operation-display.d.ts +10 -0
- package/dist/domain/operation-display.js +1 -0
- package/dist/domain/operation-reason.d.ts +5 -0
- package/dist/domain/operation-reason.js +1 -0
- package/dist/domain/postgres-route.d.ts +4 -0
- package/dist/domain/postgres-route.js +1 -0
- package/dist/domain/runtime-identity.d.ts +1 -0
- package/dist/domain/runtime-identity.js +1 -0
- package/dist/domain/runtime-isolation-contract.d.ts +5 -0
- package/dist/domain/runtime-isolation-contract.js +1 -0
- package/dist/domain/service-name.d.ts +2 -0
- package/dist/domain/service-name.js +1 -0
- package/dist/domain/suite-selection.d.ts +20 -0
- package/dist/domain/suite-selection.js +1 -0
- package/dist/domain/test-outcomes.d.ts +3 -0
- package/dist/domain/test-outcomes.js +1 -0
- package/dist/domain/test-types.d.ts +16 -0
- package/dist/domain/test-types.js +1 -0
- package/dist/engines/adapters/evidence-files.d.ts +32 -0
- package/dist/engines/adapters/evidence-files.js +1 -0
- package/dist/engines/adapters/evidence-identity.d.ts +12 -0
- package/dist/engines/adapters/evidence-identity.js +1 -0
- package/dist/engines/adapters/execution.d.ts +38 -0
- package/dist/engines/adapters/execution.js +1 -0
- package/dist/engines/adapters/native-report.d.ts +25 -0
- package/dist/engines/adapters/native-report.js +1 -0
- package/dist/engines/adapters/workspace.d.ts +4 -0
- package/dist/engines/adapters/workspace.js +1 -0
- package/dist/engines/api/capabilities.d.ts +31 -0
- package/dist/engines/api/capabilities.js +1 -0
- package/dist/engines/api/evidence.d.ts +38 -0
- package/dist/engines/api/evidence.js +1 -0
- package/dist/engines/api/execution-observer.d.ts +8 -0
- package/dist/engines/api/execution-observer.js +1 -0
- package/dist/engines/api/execution-scope.d.ts +17 -0
- package/dist/engines/api/execution-scope.js +1 -0
- package/dist/engines/api/execution.d.ts +99 -0
- package/dist/engines/api/execution.js +1 -0
- package/dist/engines/api/index.d.ts +5 -0
- package/dist/engines/api/index.js +1 -0
- package/dist/engines/api/k6-runtime-input.d.ts +26 -0
- package/dist/engines/api/k6-runtime-input.js +1 -0
- package/dist/engines/api/runtime-artifact.d.ts +19 -0
- package/dist/engines/api/runtime-artifact.js +1 -0
- package/dist/engines/bundle-cache.d.ts +32 -0
- package/dist/engines/bundle-cache.js +1 -0
- package/dist/engines/catalog.d.ts +32 -0
- package/dist/engines/catalog.js +1 -0
- package/dist/engines/contracts/fixture-manifest.d.ts +34 -0
- package/dist/engines/contracts/fixture-manifest.js +1 -0
- package/dist/engines/contracts/json-bounds.d.ts +36 -0
- package/dist/engines/contracts/json-bounds.js +2 -0
- package/dist/engines/contracts/k6-repository-configuration.d.ts +12 -0
- package/dist/engines/contracts/k6-repository-configuration.js +1 -0
- package/dist/engines/contracts/test-context.d.ts +15 -0
- package/dist/engines/contracts/test-context.js +1 -0
- package/dist/engines/definitions.d.ts +15 -0
- package/dist/engines/definitions.js +1 -0
- package/dist/engines/factory.d.ts +6 -0
- package/dist/engines/factory.js +1 -0
- package/dist/engines/installation-catalog.d.ts +27 -0
- package/dist/engines/installation-catalog.js +1 -0
- package/dist/engines/installations/k6.d.ts +98 -0
- package/dist/engines/installations/k6.js +1 -0
- package/dist/engines/installations/node-vitest.d.ts +47 -0
- package/dist/engines/installations/node-vitest.js +1 -0
- package/dist/engines/installations/package-resolution.d.ts +51 -0
- package/dist/engines/installations/package-resolution.js +1 -0
- package/dist/engines/installations/playwright-resolution-child.d.ts +1 -0
- package/dist/engines/installations/playwright-resolution-child.js +2 -0
- package/dist/engines/installations/playwright.d.ts +85 -0
- package/dist/engines/installations/playwright.js +1 -0
- package/dist/engines/installations/types.d.ts +10 -0
- package/dist/engines/installations/types.js +1 -0
- package/dist/engines/k6/adapter/bundle.d.ts +25 -0
- package/dist/engines/k6/adapter/bundle.js +112 -0
- package/dist/engines/k6/adapter/evidence.d.ts +15 -0
- package/dist/engines/k6/adapter/evidence.js +4 -0
- package/dist/engines/k6/adapter/executor.d.ts +13 -0
- package/dist/engines/k6/adapter/executor.js +1 -0
- package/dist/engines/k6/adapter/index.d.ts +1 -0
- package/dist/engines/k6/adapter/index.js +1 -0
- package/dist/engines/k6/adapter/input.d.ts +21 -0
- package/dist/engines/k6/adapter/input.js +1 -0
- package/dist/engines/k6/adapter/native-summary.d.ts +11 -0
- package/dist/engines/k6/adapter/native-summary.js +1 -0
- package/dist/engines/k6/adapter/repository-configuration.d.ts +2 -0
- package/dist/engines/k6/adapter/repository-configuration.js +1 -0
- package/dist/engines/k6/authoring-type-paths.d.ts +3 -0
- package/dist/engines/k6/authoring-type-paths.js +1 -0
- package/dist/engines/k6/runtime/ambient-types/bundle-manifest.json +146 -0
- package/dist/engines/k6/runtime/ambient-types/k6/LICENSE +21 -0
- package/dist/engines/k6/runtime/ambient-types/k6/browser/index.d.ts +6332 -0
- package/dist/engines/k6/runtime/ambient-types/k6/crypto/index.d.ts +218 -0
- package/dist/engines/k6/runtime/ambient-types/k6/data/index.d.ts +16 -0
- package/dist/engines/k6/runtime/ambient-types/k6/encoding/index.d.ts +46 -0
- package/dist/engines/k6/runtime/ambient-types/k6/execution/index.d.ts +127 -0
- package/dist/engines/k6/runtime/ambient-types/k6/experimental/csv/index.d.ts +96 -0
- package/dist/engines/k6/runtime/ambient-types/k6/experimental/fs/index.d.ts +104 -0
- package/dist/engines/k6/runtime/ambient-types/k6/experimental/redis/index.d.ts +821 -0
- package/dist/engines/k6/runtime/ambient-types/k6/experimental/streams/index.d.ts +198 -0
- package/dist/engines/k6/runtime/ambient-types/k6/global.d.ts +83 -0
- package/dist/engines/k6/runtime/ambient-types/k6/html/index.d.ts +1325 -0
- package/dist/engines/k6/runtime/ambient-types/k6/http/index.d.ts +806 -0
- package/dist/engines/k6/runtime/ambient-types/k6/index.d.ts +126 -0
- package/dist/engines/k6/runtime/ambient-types/k6/metrics/index.d.ts +66 -0
- package/dist/engines/k6/runtime/ambient-types/k6/net/grpc/index.d.ts +247 -0
- package/dist/engines/k6/runtime/ambient-types/k6/options/index.d.ts +459 -0
- package/dist/engines/k6/runtime/ambient-types/k6/package.json +79 -0
- package/dist/engines/k6/runtime/ambient-types/k6/secrets/index.d.ts +36 -0
- package/dist/engines/k6/runtime/ambient-types/k6/timers/index.d.ts +47 -0
- package/dist/engines/k6/runtime/ambient-types/k6/websockets/index.d.ts +324 -0
- package/dist/engines/k6/runtime/ambient-types/k6/ws/index.d.ts +283 -0
- package/dist/engines/k6/runtime/ambient-types/xk6-sql/LICENSE +201 -0
- package/dist/engines/k6/runtime/ambient-types/xk6-sql/index.d.ts +397 -0
- package/dist/engines/k6/runtime/ambient-types/xk6-sql/package.json +15 -0
- package/dist/engines/k6/runtime/artifacts.d.ts +2 -0
- package/dist/engines/k6/runtime/artifacts.js +1 -0
- package/dist/engines/k6/runtime/checks.d.ts +17 -0
- package/dist/engines/k6/runtime/checks.js +1 -0
- package/dist/engines/k6/runtime/dal-fixtures.d.ts +24 -0
- package/dist/engines/k6/runtime/dal-fixtures.js +1 -0
- package/dist/engines/k6/runtime/dal-suite.d.ts +24 -0
- package/dist/engines/k6/runtime/dal-suite.js +1 -0
- package/dist/engines/k6/runtime/dal.d.ts +10 -0
- package/dist/engines/k6/runtime/dal.js +1 -0
- package/dist/engines/k6/runtime/fixtures.d.ts +3 -0
- package/dist/engines/k6/runtime/fixtures.js +1 -0
- package/dist/engines/k6/runtime/http-assertions.d.ts +19 -0
- package/dist/engines/k6/runtime/http-assertions.js +1 -0
- package/dist/engines/k6/runtime/http-checks.d.ts +19 -0
- package/dist/engines/k6/runtime/http-checks.js +1 -0
- package/dist/engines/k6/runtime/http-suite-runtime.d.ts +103 -0
- package/dist/engines/k6/runtime/http-suite-runtime.js +1 -0
- package/dist/engines/k6/runtime/http.d.ts +15 -0
- package/dist/engines/k6/runtime/http.js +1 -0
- package/dist/engines/k6/runtime/index.d.ts +11 -0
- package/dist/engines/k6/runtime/index.js +1 -0
- package/dist/engines/k6/runtime/input.d.ts +3 -0
- package/dist/engines/k6/runtime/input.js +1 -0
- package/dist/engines/k6/runtime/k6-repository-configuration.d.ts +9 -0
- package/dist/engines/k6/runtime/k6-repository-configuration.js +1 -0
- package/dist/engines/k6/runtime/node-setup.d.ts +13 -0
- package/dist/engines/k6/runtime/node-setup.js +1 -0
- package/dist/engines/k6/runtime/runtime-globals.d.ts +10 -0
- package/dist/engines/k6/runtime/runtime-globals.js +1 -0
- package/dist/engines/k6/runtime/runtime.d.ts +54 -0
- package/dist/engines/k6/runtime/runtime.js +1 -0
- package/dist/engines/k6/runtime/shared/assertion-details.d.ts +19 -0
- package/dist/engines/k6/runtime/shared/assertion-details.js +2 -0
- package/dist/engines/k6/runtime/shared/db-normalization.d.ts +19 -0
- package/dist/engines/k6/runtime/shared/db-normalization.js +1 -0
- package/dist/engines/k6/runtime/shared/error-body.d.ts +3 -0
- package/dist/engines/k6/runtime/shared/error-body.js +1 -0
- package/dist/engines/k6/runtime/shared/file-data.d.ts +1 -0
- package/dist/engines/k6/runtime/shared/file-data.js +1 -0
- package/dist/engines/k6/runtime/shared/fixture-engine.d.ts +8 -0
- package/dist/engines/k6/runtime/shared/fixture-engine.js +2 -0
- package/dist/engines/k6/runtime/shared/http-check-plan.d.ts +29 -0
- package/dist/engines/k6/runtime/shared/http-check-plan.js +1 -0
- package/dist/engines/k6/runtime/shared/http-parsing.d.ts +10 -0
- package/dist/engines/k6/runtime/shared/http-parsing.js +3 -0
- package/dist/engines/k6/runtime/shared/ordering.d.ts +2 -0
- package/dist/engines/k6/runtime/shared/ordering.js +1 -0
- package/dist/engines/k6/runtime/shared/properties.d.ts +1 -0
- package/dist/engines/k6/runtime/shared/properties.js +1 -0
- package/dist/engines/k6/runtime/suite.d.ts +4 -0
- package/dist/engines/k6/runtime/suite.js +1 -0
- package/dist/engines/k6/runtime/types.d.ts +242 -0
- package/dist/engines/k6/runtime/types.js +1 -0
- package/dist/engines/k6/runtime/xk6-sql-driver-postgres.d.ts +7 -0
- package/dist/engines/k6/runtime/xk6-sql-driver-postgres.js +1 -0
- package/dist/engines/managed-module-resolution-policy-input.d.ts +9 -0
- package/dist/engines/managed-module-resolution-policy-input.js +1 -0
- package/dist/engines/managed-module-resolution-policy.d.ts +25 -0
- package/dist/engines/managed-module-resolution-policy.js +1 -0
- package/dist/engines/managed-module-resolution.d.ts +13 -0
- package/dist/engines/managed-module-resolution.js +697 -0
- package/dist/engines/manager.d.ts +24 -0
- package/dist/engines/manager.js +1 -0
- package/dist/engines/node-vitest/adapter/adapter.d.ts +16 -0
- package/dist/engines/node-vitest/adapter/adapter.js +1 -0
- package/dist/engines/node-vitest/adapter/consumer-typescript-paths.d.ts +17 -0
- package/dist/engines/node-vitest/adapter/consumer-typescript-paths.js +3 -0
- package/dist/engines/node-vitest/adapter/evidence.d.ts +33 -0
- package/dist/engines/node-vitest/adapter/evidence.js +2 -0
- package/dist/engines/node-vitest/adapter/failure-details.d.ts +2 -0
- package/dist/engines/node-vitest/adapter/failure-details.js +2 -0
- package/dist/engines/node-vitest/adapter/index.d.ts +1 -0
- package/dist/engines/node-vitest/adapter/index.js +1 -0
- package/dist/engines/node-vitest/adapter/reporter.d.ts +7 -0
- package/dist/engines/node-vitest/adapter/reporter.js +1 -0
- package/dist/engines/node-vitest/adapter/resolution.d.ts +12 -0
- package/dist/engines/node-vitest/adapter/resolution.js +1 -0
- package/dist/engines/node-vitest/adapter/workspace.d.ts +19 -0
- package/dist/engines/node-vitest/adapter/workspace.js +177 -0
- package/dist/engines/node-vitest/runtime/contract/index.d.ts +64 -0
- package/dist/engines/node-vitest/runtime/contract/index.js +1 -0
- package/dist/engines/node-vitest/runtime/data/http.d.ts +4 -0
- package/dist/engines/node-vitest/runtime/data/http.js +1 -0
- package/dist/engines/node-vitest/runtime/data/index.d.ts +8 -0
- package/dist/engines/node-vitest/runtime/data/index.js +1 -0
- package/dist/engines/node-vitest/runtime/data/primitives.d.ts +1 -0
- package/dist/engines/node-vitest/runtime/data/primitives.js +1 -0
- package/dist/engines/node-vitest/runtime/data/report.d.ts +3 -0
- package/dist/engines/node-vitest/runtime/data/report.js +6 -0
- package/dist/engines/node-vitest/runtime/data/runner.d.ts +4 -0
- package/dist/engines/node-vitest/runtime/data/runner.js +1 -0
- package/dist/engines/node-vitest/runtime/data/scenario.d.ts +12 -0
- package/dist/engines/node-vitest/runtime/data/scenario.js +2 -0
- package/dist/engines/node-vitest/runtime/data/types.d.ts +412 -0
- package/dist/engines/node-vitest/runtime/data/types.js +1 -0
- package/dist/engines/node-vitest/runtime/runtime-input.d.ts +63 -0
- package/dist/engines/node-vitest/runtime/runtime-input.js +1 -0
- package/dist/engines/playwright/adapter/adapter.d.ts +18 -0
- package/dist/engines/playwright/adapter/adapter.js +1 -0
- package/dist/engines/playwright/adapter/attachments.d.ts +25 -0
- package/dist/engines/playwright/adapter/attachments.js +1 -0
- package/dist/engines/playwright/adapter/config.d.ts +45 -0
- package/dist/engines/playwright/adapter/config.js +167 -0
- package/dist/engines/playwright/adapter/evidence-validation.d.ts +12 -0
- package/dist/engines/playwright/adapter/evidence-validation.js +1 -0
- package/dist/engines/playwright/adapter/evidence.d.ts +32 -0
- package/dist/engines/playwright/adapter/evidence.js +1 -0
- package/dist/engines/playwright/adapter/failure-details.d.ts +2 -0
- package/dist/engines/playwright/adapter/failure-details.js +2 -0
- package/dist/engines/playwright/adapter/index.d.ts +3 -0
- package/dist/engines/playwright/adapter/index.js +1 -0
- package/dist/engines/playwright/adapter/reporter.d.ts +12 -0
- package/dist/engines/playwright/adapter/reporter.js +1 -0
- package/dist/engines/playwright/runtime/config-file.d.ts +2 -0
- package/dist/engines/playwright/runtime/config-file.js +1 -0
- package/dist/engines/playwright/runtime/config.d.ts +24 -0
- package/dist/engines/playwright/runtime/config.js +1 -0
- package/dist/engines/playwright/runtime/index.d.ts +4 -0
- package/dist/engines/playwright/runtime/index.js +1 -0
- package/dist/engines/playwright/runtime/runtime-input.d.ts +36 -0
- package/dist/engines/playwright/runtime/runtime-input.js +151 -0
- package/dist/engines/playwright/runtime/sandbox.d.ts +84 -0
- package/dist/engines/playwright/runtime/sandbox.js +1 -0
- package/dist/engines/runtime-input-file.d.ts +25 -0
- package/dist/engines/runtime-input-file.js +1 -0
- package/dist/environment/lifecycle-artifacts.d.ts +7 -0
- package/dist/environment/lifecycle-artifacts.js +1 -0
- package/dist/environment/lifecycle-controller.d.ts +71 -0
- package/dist/environment/lifecycle-controller.js +1 -0
- package/dist/environment/lifecycle.d.ts +29 -0
- package/dist/environment/lifecycle.js +1 -0
- package/dist/environment/maintenance.d.ts +68 -0
- package/dist/environment/maintenance.js +1 -0
- package/dist/environment/planning-types.d.ts +35 -0
- package/dist/environment/planning-types.js +1 -0
- package/dist/environment/readiness.d.ts +12 -0
- package/dist/environment/readiness.js +1 -0
- package/dist/environment/ready-environment.d.ts +17 -0
- package/dist/environment/ready-environment.js +1 -0
- package/dist/environment/run-environment.d.ts +38 -0
- package/dist/environment/run-environment.js +1 -0
- package/dist/environment/run-stopping.d.ts +13 -0
- package/dist/environment/run-stopping.js +1 -0
- package/dist/environment/runtime-contexts.d.ts +32 -0
- package/dist/environment/runtime-contexts.js +1 -0
- package/dist/environment/runtime-manager.d.ts +95 -0
- package/dist/environment/runtime-manager.js +1 -0
- package/dist/environment/runtime-planning.d.ts +16 -0
- package/dist/environment/runtime-planning.js +1 -0
- package/dist/environment/runtime-preparation.d.ts +30 -0
- package/dist/environment/runtime-preparation.js +1 -0
- package/dist/environment/runtime-service.d.ts +18 -0
- package/dist/environment/runtime-service.js +1 -0
- package/dist/environment/services.d.ts +48 -0
- package/dist/environment/services.js +1 -0
- package/dist/environment/state.d.ts +18 -0
- package/dist/environment/state.js +1 -0
- package/dist/environment/status-runtime.d.ts +53 -0
- package/dist/environment/status-runtime.js +1 -0
- package/dist/environment/template.d.ts +180 -0
- package/dist/environment/template.js +1 -0
- package/dist/evidence/artifact-config.d.ts +14 -0
- package/dist/evidence/artifact-config.js +1 -0
- package/dist/evidence/artifact-validation.d.ts +5 -0
- package/dist/evidence/artifact-validation.js +1 -0
- package/dist/evidence/artifacts.d.ts +75 -0
- package/dist/evidence/artifacts.js +2 -0
- package/dist/evidence/bundles.d.ts +28 -0
- package/dist/evidence/bundles.js +1 -0
- package/dist/evidence/ci-provenance.d.ts +9 -0
- package/dist/evidence/ci-provenance.js +1 -0
- package/dist/evidence/contracts.d.ts +162 -0
- package/dist/evidence/contracts.js +1 -0
- package/dist/evidence/file-evidence.d.ts +23 -0
- package/dist/evidence/file-evidence.js +1 -0
- package/dist/evidence/finalization.d.ts +9 -0
- package/dist/evidence/finalization.js +1 -0
- package/dist/evidence/index.d.ts +8 -0
- package/dist/evidence/index.js +1 -0
- package/dist/evidence/logs.d.ts +31 -0
- package/dist/evidence/logs.js +2 -0
- package/dist/evidence/operation-timings.d.ts +60 -0
- package/dist/evidence/operation-timings.js +1 -0
- package/dist/evidence/read-bundle.d.ts +4 -0
- package/dist/evidence/read-bundle.js +1 -0
- package/dist/evidence/read-fields.d.ts +22 -0
- package/dist/evidence/read-fields.js +1 -0
- package/dist/evidence/read-provenance.d.ts +2 -0
- package/dist/evidence/read-provenance.js +1 -0
- package/dist/evidence/read-redaction.d.ts +2 -0
- package/dist/evidence/read-redaction.js +1 -0
- package/dist/evidence/read-retention.d.ts +2 -0
- package/dist/evidence/read-retention.js +1 -0
- package/dist/evidence/read-run.d.ts +2 -0
- package/dist/evidence/read-run.js +1 -0
- package/dist/evidence/reading.d.ts +28 -0
- package/dist/evidence/reading.js +1 -0
- package/dist/evidence/reporting-types.d.ts +330 -0
- package/dist/evidence/reporting-types.js +1 -0
- package/dist/evidence/reporting.d.ts +3 -0
- package/dist/evidence/reporting.js +1 -0
- package/dist/evidence/secure-file-copy.d.ts +24 -0
- package/dist/evidence/secure-file-copy.js +1 -0
- package/dist/evidence/setup-progress.d.ts +63 -0
- package/dist/evidence/setup-progress.js +1 -0
- package/dist/evidence/step-output.d.ts +16 -0
- package/dist/evidence/step-output.js +6 -0
- package/dist/evidence/storage-inventory.d.ts +27 -0
- package/dist/evidence/storage-inventory.js +1 -0
- package/dist/evidence/storage.d.ts +27 -0
- package/dist/evidence/storage.js +2 -0
- package/dist/evidence/timing.d.ts +23 -0
- package/dist/evidence/timing.js +1 -0
- package/dist/file.d.ts +11 -0
- package/dist/file.js +1 -0
- package/dist/index.d.ts +4 -0
- package/dist/index.js +1 -0
- package/dist/kernel/error-serialization.d.ts +38 -0
- package/dist/kernel/error-serialization.js +1 -0
- package/dist/kernel/redaction.d.ts +1 -0
- package/dist/kernel/redaction.js +1 -0
- package/dist/kernel/unknown-values.d.ts +6 -0
- package/dist/kernel/unknown-values.js +1 -0
- package/dist/process/capture-output.d.ts +7 -0
- package/dist/process/capture-output.js +1 -0
- package/dist/process/command-shell.d.ts +1 -0
- package/dist/process/command-shell.js +1 -0
- package/dist/process/environment-overlay.d.ts +17 -0
- package/dist/process/environment-overlay.js +1 -0
- package/dist/process/environment.d.ts +33 -0
- package/dist/process/environment.js +1 -0
- package/dist/process/files/contained-path.d.ts +8 -0
- package/dist/process/files/contained-path.js +1 -0
- package/dist/process/files/directory-status.d.ts +14 -0
- package/dist/process/files/directory-status.js +1 -0
- package/dist/process/files/dotenv.d.ts +2 -0
- package/dist/process/files/dotenv.js +1 -0
- package/dist/process/files/file-snapshot.d.ts +34 -0
- package/dist/process/files/file-snapshot.js +1 -0
- package/dist/process/files/json-file.d.ts +11 -0
- package/dist/process/files/json-file.js +1 -0
- package/dist/process/files/paths.d.ts +1 -0
- package/dist/process/files/paths.js +1 -0
- package/dist/process/files/temp-dir.d.ts +11 -0
- package/dist/process/files/temp-dir.js +1 -0
- package/dist/process/host/metadata.d.ts +6 -0
- package/dist/process/host/metadata.js +1 -0
- package/dist/process/host/platform.d.ts +57 -0
- package/dist/process/host/platform.js +1 -0
- package/dist/process/host-command.d.ts +4 -0
- package/dist/process/host-command.js +3 -0
- package/dist/process/host-inspection-command.d.ts +13 -0
- package/dist/process/host-inspection-command.js +1 -0
- package/dist/process/host-process.d.ts +14 -0
- package/dist/process/host-process.js +1 -0
- package/dist/process/index.d.ts +9 -0
- package/dist/process/index.js +1 -0
- package/dist/process/lifecycle-fence.d.ts +11 -0
- package/dist/process/lifecycle-fence.js +1 -0
- package/dist/process/locks.d.ts +28 -0
- package/dist/process/locks.js +4 -0
- package/dist/process/process-contracts.d.ts +70 -0
- package/dist/process/process-contracts.js +1 -0
- package/dist/process/process-group.d.ts +12 -0
- package/dist/process/process-group.js +1 -0
- package/dist/process/process-identity.d.ts +27 -0
- package/dist/process/process-identity.js +1 -0
- package/dist/process/process-limits.d.ts +6 -0
- package/dist/process/process-limits.js +1 -0
- package/dist/process/process.d.ts +11 -0
- package/dist/process/process.js +1 -0
- package/dist/process/readiness.d.ts +37 -0
- package/dist/process/readiness.js +1 -0
- package/dist/process/recovery.d.ts +3 -0
- package/dist/process/recovery.js +1 -0
- package/dist/process/runs/manifest.d.ts +85 -0
- package/dist/process/runs/manifest.js +1 -0
- package/dist/process/runs/ownership.d.ts +11 -0
- package/dist/process/runs/ownership.js +1 -0
- package/dist/process/runs/product-state.d.ts +2 -0
- package/dist/process/runs/product-state.js +1 -0
- package/dist/process/runs/schema.d.ts +3 -0
- package/dist/process/runs/schema.js +1 -0
- package/dist/process/runs/stop.d.ts +19 -0
- package/dist/process/runs/stop.js +1 -0
- package/dist/process/runtime-socket.d.ts +4 -0
- package/dist/process/runtime-socket.js +1 -0
- package/dist/process/service-processes.d.ts +13 -0
- package/dist/process/service-processes.js +1 -0
- package/dist/process/shutdown.d.ts +10 -0
- package/dist/process/shutdown.js +1 -0
- package/dist/process/windows-cli-owner.d.ts +2 -0
- package/dist/process/windows-cli-owner.js +3 -0
- package/dist/process/windows-native.d.ts +6 -0
- package/dist/process/windows-native.js +1 -0
- package/dist/process/windows-process-identity.d.ts +4 -0
- package/dist/process/windows-process-identity.js +1 -0
- package/dist/repo/ci-environment.d.ts +7 -0
- package/dist/repo/ci-environment.js +1 -0
- package/dist/repo/fingerprint-policy.d.ts +15 -0
- package/dist/repo/fingerprint-policy.js +1 -0
- package/dist/repo/git-path.d.ts +2 -0
- package/dist/repo/git-path.js +1 -0
- package/dist/repo/managed-git.d.ts +10 -0
- package/dist/repo/managed-git.js +1 -0
- package/dist/repo/metadata.d.ts +3 -0
- package/dist/repo/metadata.js +1 -0
- package/dist/repo/physical-tree.d.ts +37 -0
- package/dist/repo/physical-tree.js +1 -0
- package/dist/repo/remote.d.ts +6 -0
- package/dist/repo/remote.js +1 -0
- package/dist/repo/state.d.ts +25 -0
- package/dist/repo/state.js +5 -0
- package/dist/steps/build-config.d.ts +35 -0
- package/dist/steps/build-config.js +1 -0
- package/dist/steps/configured-step-testkit-modules.d.ts +19 -0
- package/dist/steps/configured-step-testkit-modules.js +1 -0
- package/dist/steps/configured-steps.d.ts +51 -0
- package/dist/steps/configured-steps.js +1 -0
- package/dist/steps/environment.d.ts +78 -0
- package/dist/steps/environment.js +1 -0
- package/dist/steps/index.d.ts +2 -0
- package/dist/steps/index.js +1 -0
- package/dist/steps/module-runner.d.ts +1 -0
- package/dist/steps/module-runner.js +1 -0
- package/dist/steps/run.d.ts +36 -0
- package/dist/steps/run.js +3 -0
- package/dist/toolchains/archive.d.ts +53 -0
- package/dist/toolchains/archive.js +1 -0
- package/dist/toolchains/esbuild.d.ts +9 -0
- package/dist/toolchains/esbuild.js +1 -0
- package/dist/toolchains/host-node-support.d.ts +3 -0
- package/dist/toolchains/host-node-support.js +1 -0
- package/dist/toolchains/index.d.ts +114 -0
- package/dist/toolchains/index.js +4 -0
- package/dist/toolchains/managed-node-releases.d.ts +28 -0
- package/dist/toolchains/managed-node-releases.js +1 -0
- package/dist/toolchains/node-cache.d.ts +20 -0
- package/dist/toolchains/node-cache.js +1 -0
- package/dist/toolchains/node-integrity.d.ts +16 -0
- package/dist/toolchains/node-integrity.js +1 -0
- package/dist/toolchains/node-provisioning.d.ts +29 -0
- package/dist/toolchains/node-provisioning.js +2 -0
- package/dist/toolchains/semver.d.ts +13 -0
- package/dist/toolchains/semver.js +1 -0
- package/dist/toolchains/shared-operation.d.ts +11 -0
- package/dist/toolchains/shared-operation.js +1 -0
- package/dist/toolchains/timeouts.d.ts +1 -0
- package/dist/toolchains/timeouts.js +1 -0
- package/dist/toolchains/vitest/index.d.ts +13 -0
- package/dist/toolchains/vitest/index.js +1 -0
- package/docs/cloud-control.md +105 -0
- package/docs/engine-architecture.md +631 -0
- package/docs/test-types.md +120 -0
- package/docs/testkit-cloud-boundary.md +640 -0
- package/node_modules/@isaacs/fs-minipass/LICENSE +15 -0
- package/node_modules/@isaacs/fs-minipass/README.md +71 -0
- package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts +118 -0
- package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js +430 -0
- package/node_modules/@isaacs/fs-minipass/dist/commonjs/index.js.map +1 -0
- package/node_modules/@isaacs/fs-minipass/dist/commonjs/package.json +3 -0
- package/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts +118 -0
- package/node_modules/@isaacs/fs-minipass/dist/esm/index.d.ts.map +1 -0
- package/node_modules/@isaacs/fs-minipass/dist/esm/index.js +420 -0
- package/node_modules/@isaacs/fs-minipass/dist/esm/index.js.map +1 -0
- package/node_modules/@isaacs/fs-minipass/dist/esm/package.json +3 -0
- package/node_modules/@isaacs/fs-minipass/package.json +72 -0
- package/node_modules/buffer-crc32/LICENSE +19 -0
- package/node_modules/buffer-crc32/README.md +55 -0
- package/node_modules/buffer-crc32/dist/index.cjs +306 -0
- package/node_modules/buffer-crc32/dist/index.d.cts +35 -0
- package/node_modules/buffer-crc32/dist/index.d.mts +35 -0
- package/node_modules/buffer-crc32/dist/index.mjs +304 -0
- package/node_modules/buffer-crc32/index.d.ts +35 -0
- package/node_modules/buffer-crc32/package.json +54 -0
- package/node_modules/chownr/LICENSE.md +63 -0
- package/node_modules/chownr/README.md +3 -0
- package/node_modules/chownr/dist/commonjs/index.d.ts +3 -0
- package/node_modules/chownr/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/chownr/dist/commonjs/index.js +93 -0
- package/node_modules/chownr/dist/commonjs/index.js.map +1 -0
- package/node_modules/chownr/dist/commonjs/package.json +3 -0
- package/node_modules/chownr/dist/esm/index.d.ts +3 -0
- package/node_modules/chownr/dist/esm/index.d.ts.map +1 -0
- package/node_modules/chownr/dist/esm/index.js +85 -0
- package/node_modules/chownr/dist/esm/index.js.map +1 -0
- package/node_modules/chownr/dist/esm/package.json +3 -0
- package/node_modules/chownr/package.json +69 -0
- package/node_modules/diff/CONTRIBUTING.md +28 -0
- package/node_modules/diff/LICENSE +29 -0
- package/node_modules/diff/README.md +468 -0
- package/node_modules/diff/dist/diff.js +2313 -0
- package/node_modules/diff/dist/diff.min.js +1 -0
- package/node_modules/diff/eslint.config.mjs +182 -0
- package/node_modules/diff/libcjs/convert/dmp.d.ts +8 -0
- package/node_modules/diff/libcjs/convert/dmp.d.ts.map +1 -0
- package/node_modules/diff/libcjs/convert/dmp.js +24 -0
- package/node_modules/diff/libcjs/convert/xml.d.ts +6 -0
- package/node_modules/diff/libcjs/convert/xml.d.ts.map +1 -0
- package/node_modules/diff/libcjs/convert/xml.js +34 -0
- package/node_modules/diff/libcjs/diff/array.d.ts +19 -0
- package/node_modules/diff/libcjs/diff/array.d.ts.map +1 -0
- package/node_modules/diff/libcjs/diff/array.js +23 -0
- package/node_modules/diff/libcjs/diff/base.d.ts +20 -0
- package/node_modules/diff/libcjs/diff/base.d.ts.map +1 -0
- package/node_modules/diff/libcjs/diff/base.js +256 -0
- package/node_modules/diff/libcjs/diff/character.d.ts +19 -0
- package/node_modules/diff/libcjs/diff/character.d.ts.map +1 -0
- package/node_modules/diff/libcjs/diff/character.js +14 -0
- package/node_modules/diff/libcjs/diff/css.d.ts +18 -0
- package/node_modules/diff/libcjs/diff/css.d.ts.map +1 -0
- package/node_modules/diff/libcjs/diff/css.js +17 -0
- package/node_modules/diff/libcjs/diff/json.d.ts +24 -0
- package/node_modules/diff/libcjs/diff/json.d.ts.map +1 -0
- package/node_modules/diff/libcjs/diff/json.js +86 -0
- package/node_modules/diff/libcjs/diff/line.d.ts +24 -0
- package/node_modules/diff/libcjs/diff/line.d.ts.map +1 -0
- package/node_modules/diff/libcjs/diff/line.js +74 -0
- package/node_modules/diff/libcjs/diff/sentence.d.ts +21 -0
- package/node_modules/diff/libcjs/diff/sentence.d.ts.map +1 -0
- package/node_modules/diff/libcjs/diff/sentence.js +50 -0
- package/node_modules/diff/libcjs/diff/word.d.ts +35 -0
- package/node_modules/diff/libcjs/diff/word.d.ts.map +1 -0
- package/node_modules/diff/libcjs/diff/word.js +289 -0
- package/node_modules/diff/libcjs/index.d.ts +20 -0
- package/node_modules/diff/libcjs/index.d.ts.map +1 -0
- package/node_modules/diff/libcjs/index.js +67 -0
- package/node_modules/diff/libcjs/package.json +1 -0
- package/node_modules/diff/libcjs/patch/apply.d.ts +62 -0
- package/node_modules/diff/libcjs/patch/apply.d.ts.map +1 -0
- package/node_modules/diff/libcjs/patch/apply.js +264 -0
- package/node_modules/diff/libcjs/patch/create.d.ts +131 -0
- package/node_modules/diff/libcjs/patch/create.d.ts.map +1 -0
- package/node_modules/diff/libcjs/patch/create.js +364 -0
- package/node_modules/diff/libcjs/patch/line-endings.d.ts +17 -0
- package/node_modules/diff/libcjs/patch/line-endings.d.ts.map +1 -0
- package/node_modules/diff/libcjs/patch/line-endings.js +50 -0
- package/node_modules/diff/libcjs/patch/parse.d.ts +16 -0
- package/node_modules/diff/libcjs/patch/parse.d.ts.map +1 -0
- package/node_modules/diff/libcjs/patch/parse.js +515 -0
- package/node_modules/diff/libcjs/patch/reverse.d.ts +22 -0
- package/node_modules/diff/libcjs/patch/reverse.d.ts.map +1 -0
- package/node_modules/diff/libcjs/patch/reverse.js +63 -0
- package/node_modules/diff/libcjs/types.d.ts +260 -0
- package/node_modules/diff/libcjs/types.d.ts.map +1 -0
- package/node_modules/diff/libcjs/types.js +2 -0
- package/node_modules/diff/libcjs/util/array.d.ts +3 -0
- package/node_modules/diff/libcjs/util/array.d.ts.map +1 -0
- package/node_modules/diff/libcjs/util/array.js +21 -0
- package/node_modules/diff/libcjs/util/distance-iterator.d.ts +2 -0
- package/node_modules/diff/libcjs/util/distance-iterator.d.ts.map +1 -0
- package/node_modules/diff/libcjs/util/distance-iterator.js +40 -0
- package/node_modules/diff/libcjs/util/params.d.ts +4 -0
- package/node_modules/diff/libcjs/util/params.d.ts.map +1 -0
- package/node_modules/diff/libcjs/util/params.js +17 -0
- package/node_modules/diff/libcjs/util/string.d.ts +30 -0
- package/node_modules/diff/libcjs/util/string.d.ts.map +1 -0
- package/node_modules/diff/libcjs/util/string.js +199 -0
- package/node_modules/diff/libesm/convert/dmp.d.ts +8 -0
- package/node_modules/diff/libesm/convert/dmp.d.ts.map +1 -0
- package/node_modules/diff/libesm/convert/dmp.js +21 -0
- package/node_modules/diff/libesm/convert/xml.d.ts +6 -0
- package/node_modules/diff/libesm/convert/xml.d.ts.map +1 -0
- package/node_modules/diff/libesm/convert/xml.js +31 -0
- package/node_modules/diff/libesm/diff/array.d.ts +19 -0
- package/node_modules/diff/libesm/diff/array.d.ts.map +1 -0
- package/node_modules/diff/libesm/diff/array.js +16 -0
- package/node_modules/diff/libesm/diff/base.d.ts +20 -0
- package/node_modules/diff/libesm/diff/base.d.ts.map +1 -0
- package/node_modules/diff/libesm/diff/base.js +253 -0
- package/node_modules/diff/libesm/diff/character.d.ts +19 -0
- package/node_modules/diff/libesm/diff/character.d.ts.map +1 -0
- package/node_modules/diff/libesm/diff/character.js +7 -0
- package/node_modules/diff/libesm/diff/css.d.ts +18 -0
- package/node_modules/diff/libesm/diff/css.d.ts.map +1 -0
- package/node_modules/diff/libesm/diff/css.js +10 -0
- package/node_modules/diff/libesm/diff/json.d.ts +24 -0
- package/node_modules/diff/libesm/diff/json.d.ts.map +1 -0
- package/node_modules/diff/libesm/diff/json.js +78 -0
- package/node_modules/diff/libesm/diff/line.d.ts +24 -0
- package/node_modules/diff/libesm/diff/line.d.ts.map +1 -0
- package/node_modules/diff/libesm/diff/line.js +65 -0
- package/node_modules/diff/libesm/diff/sentence.d.ts +21 -0
- package/node_modules/diff/libesm/diff/sentence.d.ts.map +1 -0
- package/node_modules/diff/libesm/diff/sentence.js +43 -0
- package/node_modules/diff/libesm/diff/word.d.ts +35 -0
- package/node_modules/diff/libesm/diff/word.d.ts.map +1 -0
- package/node_modules/diff/libesm/diff/word.js +281 -0
- package/node_modules/diff/libesm/index.d.ts +20 -0
- package/node_modules/diff/libesm/index.d.ts.map +1 -0
- package/node_modules/diff/libesm/index.js +30 -0
- package/node_modules/diff/libesm/package.json +1 -0
- package/node_modules/diff/libesm/patch/apply.d.ts +62 -0
- package/node_modules/diff/libesm/patch/apply.d.ts.map +1 -0
- package/node_modules/diff/libesm/patch/apply.js +257 -0
- package/node_modules/diff/libesm/patch/create.d.ts +131 -0
- package/node_modules/diff/libesm/patch/create.d.ts.map +1 -0
- package/node_modules/diff/libesm/patch/create.js +357 -0
- package/node_modules/diff/libesm/patch/line-endings.d.ts +17 -0
- package/node_modules/diff/libesm/patch/line-endings.d.ts.map +1 -0
- package/node_modules/diff/libesm/patch/line-endings.js +44 -0
- package/node_modules/diff/libesm/patch/parse.d.ts +16 -0
- package/node_modules/diff/libesm/patch/parse.d.ts.map +1 -0
- package/node_modules/diff/libesm/patch/parse.js +512 -0
- package/node_modules/diff/libesm/patch/reverse.d.ts +22 -0
- package/node_modules/diff/libesm/patch/reverse.d.ts.map +1 -0
- package/node_modules/diff/libesm/patch/reverse.js +60 -0
- package/node_modules/diff/libesm/types.d.ts +260 -0
- package/node_modules/diff/libesm/types.d.ts.map +1 -0
- package/node_modules/diff/libesm/types.js +1 -0
- package/node_modules/diff/libesm/util/array.d.ts +3 -0
- package/node_modules/diff/libesm/util/array.d.ts.map +1 -0
- package/node_modules/diff/libesm/util/array.js +17 -0
- package/node_modules/diff/libesm/util/distance-iterator.d.ts +2 -0
- package/node_modules/diff/libesm/util/distance-iterator.d.ts.map +1 -0
- package/node_modules/diff/libesm/util/distance-iterator.js +37 -0
- package/node_modules/diff/libesm/util/params.d.ts +4 -0
- package/node_modules/diff/libesm/util/params.d.ts.map +1 -0
- package/node_modules/diff/libesm/util/params.js +14 -0
- package/node_modules/diff/libesm/util/string.d.ts +30 -0
- package/node_modules/diff/libesm/util/string.d.ts.map +1 -0
- package/node_modules/diff/libesm/util/string.js +184 -0
- package/node_modules/diff/package.json +130 -0
- package/node_modules/diff/release-notes.md +474 -0
- package/node_modules/minipass/LICENSE.md +55 -0
- package/node_modules/minipass/README.md +825 -0
- package/node_modules/minipass/dist/commonjs/index.d.ts +545 -0
- package/node_modules/minipass/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/minipass/dist/commonjs/index.js +1038 -0
- package/node_modules/minipass/dist/commonjs/index.js.map +1 -0
- package/node_modules/minipass/dist/commonjs/package.json +3 -0
- package/node_modules/minipass/dist/esm/index.d.ts +545 -0
- package/node_modules/minipass/dist/esm/index.d.ts.map +1 -0
- package/node_modules/minipass/dist/esm/index.js +1020 -0
- package/node_modules/minipass/dist/esm/index.js.map +1 -0
- package/node_modules/minipass/dist/esm/package.json +3 -0
- package/node_modules/minipass/package.json +77 -0
- package/node_modules/minizlib/LICENSE +26 -0
- package/node_modules/minizlib/README.md +64 -0
- package/node_modules/minizlib/dist/commonjs/constants.d.ts +2 -0
- package/node_modules/minizlib/dist/commonjs/constants.d.ts.map +1 -0
- package/node_modules/minizlib/dist/commonjs/constants.js +123 -0
- package/node_modules/minizlib/dist/commonjs/constants.js.map +1 -0
- package/node_modules/minizlib/dist/commonjs/index.d.ts +99 -0
- package/node_modules/minizlib/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/minizlib/dist/commonjs/index.js +416 -0
- package/node_modules/minizlib/dist/commonjs/index.js.map +1 -0
- package/node_modules/minizlib/dist/commonjs/package.json +3 -0
- package/node_modules/minizlib/dist/esm/constants.d.ts +2 -0
- package/node_modules/minizlib/dist/esm/constants.d.ts.map +1 -0
- package/node_modules/minizlib/dist/esm/constants.js +117 -0
- package/node_modules/minizlib/dist/esm/constants.js.map +1 -0
- package/node_modules/minizlib/dist/esm/index.d.ts +99 -0
- package/node_modules/minizlib/dist/esm/index.d.ts.map +1 -0
- package/node_modules/minizlib/dist/esm/index.js +363 -0
- package/node_modules/minizlib/dist/esm/index.js.map +1 -0
- package/node_modules/minizlib/dist/esm/package.json +3 -0
- package/node_modules/minizlib/package.json +80 -0
- package/node_modules/pend/LICENSE +23 -0
- package/node_modules/pend/README.md +41 -0
- package/node_modules/pend/index.js +55 -0
- package/node_modules/pend/package.json +18 -0
- package/node_modules/pend/test.js +137 -0
- package/node_modules/tar/LICENSE.md +55 -0
- package/node_modules/tar/README.md +1233 -0
- package/node_modules/tar/dist/commonjs/create.d.ts +3 -0
- package/node_modules/tar/dist/commonjs/create.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/create.js +82 -0
- package/node_modules/tar/dist/commonjs/create.js.map +1 -0
- package/node_modules/tar/dist/commonjs/cwd-error.d.ts +8 -0
- package/node_modules/tar/dist/commonjs/cwd-error.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/cwd-error.js +18 -0
- package/node_modules/tar/dist/commonjs/cwd-error.js.map +1 -0
- package/node_modules/tar/dist/commonjs/extract.d.ts +3 -0
- package/node_modules/tar/dist/commonjs/extract.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/extract.js +88 -0
- package/node_modules/tar/dist/commonjs/extract.js.map +1 -0
- package/node_modules/tar/dist/commonjs/get-write-flag.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/get-write-flag.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/get-write-flag.js +32 -0
- package/node_modules/tar/dist/commonjs/get-write-flag.js.map +1 -0
- package/node_modules/tar/dist/commonjs/header.d.ts +53 -0
- package/node_modules/tar/dist/commonjs/header.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/header.js +348 -0
- package/node_modules/tar/dist/commonjs/header.js.map +1 -0
- package/node_modules/tar/dist/commonjs/index.d.ts +20 -0
- package/node_modules/tar/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/index.js +64 -0
- package/node_modules/tar/dist/commonjs/index.js.map +1 -0
- package/node_modules/tar/dist/commonjs/index.min.js +4 -0
- package/node_modules/tar/dist/commonjs/index.min.js.map +7 -0
- package/node_modules/tar/dist/commonjs/large-numbers.d.ts +3 -0
- package/node_modules/tar/dist/commonjs/large-numbers.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/large-numbers.js +99 -0
- package/node_modules/tar/dist/commonjs/large-numbers.js.map +1 -0
- package/node_modules/tar/dist/commonjs/list.d.ts +7 -0
- package/node_modules/tar/dist/commonjs/list.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/list.js +153 -0
- package/node_modules/tar/dist/commonjs/list.js.map +1 -0
- package/node_modules/tar/dist/commonjs/make-command.d.ts +49 -0
- package/node_modules/tar/dist/commonjs/make-command.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/make-command.js +52 -0
- package/node_modules/tar/dist/commonjs/make-command.js.map +1 -0
- package/node_modules/tar/dist/commonjs/mkdir.d.ts +25 -0
- package/node_modules/tar/dist/commonjs/mkdir.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/mkdir.js +187 -0
- package/node_modules/tar/dist/commonjs/mkdir.js.map +1 -0
- package/node_modules/tar/dist/commonjs/mode-fix.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/mode-fix.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/mode-fix.js +29 -0
- package/node_modules/tar/dist/commonjs/mode-fix.js.map +1 -0
- package/node_modules/tar/dist/commonjs/normalize-unicode.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/normalize-unicode.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/normalize-unicode.js +38 -0
- package/node_modules/tar/dist/commonjs/normalize-unicode.js.map +1 -0
- package/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/normalize-windows-path.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/normalize-windows-path.js +12 -0
- package/node_modules/tar/dist/commonjs/normalize-windows-path.js.map +1 -0
- package/node_modules/tar/dist/commonjs/options.d.ts +604 -0
- package/node_modules/tar/dist/commonjs/options.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/options.js +66 -0
- package/node_modules/tar/dist/commonjs/options.js.map +1 -0
- package/node_modules/tar/dist/commonjs/pack.d.ts +105 -0
- package/node_modules/tar/dist/commonjs/pack.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/pack.js +544 -0
- package/node_modules/tar/dist/commonjs/pack.js.map +1 -0
- package/node_modules/tar/dist/commonjs/package.json +3 -0
- package/node_modules/tar/dist/commonjs/parse.d.ts +92 -0
- package/node_modules/tar/dist/commonjs/parse.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/parse.js +655 -0
- package/node_modules/tar/dist/commonjs/parse.js.map +1 -0
- package/node_modules/tar/dist/commonjs/path-reservations.d.ts +11 -0
- package/node_modules/tar/dist/commonjs/path-reservations.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/path-reservations.js +170 -0
- package/node_modules/tar/dist/commonjs/path-reservations.js.map +1 -0
- package/node_modules/tar/dist/commonjs/pax.d.ts +26 -0
- package/node_modules/tar/dist/commonjs/pax.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/pax.js +182 -0
- package/node_modules/tar/dist/commonjs/pax.js.map +1 -0
- package/node_modules/tar/dist/commonjs/process-umask.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/process-umask.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/process-umask.js +7 -0
- package/node_modules/tar/dist/commonjs/process-umask.js.map +1 -0
- package/node_modules/tar/dist/commonjs/read-entry.d.ts +36 -0
- package/node_modules/tar/dist/commonjs/read-entry.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/read-entry.js +136 -0
- package/node_modules/tar/dist/commonjs/read-entry.js.map +1 -0
- package/node_modules/tar/dist/commonjs/replace.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/replace.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/replace.js +227 -0
- package/node_modules/tar/dist/commonjs/replace.js.map +1 -0
- package/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/strip-absolute-path.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/strip-absolute-path.js +29 -0
- package/node_modules/tar/dist/commonjs/strip-absolute-path.js.map +1 -0
- package/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/strip-trailing-slashes.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/strip-trailing-slashes.js +18 -0
- package/node_modules/tar/dist/commonjs/strip-trailing-slashes.js.map +1 -0
- package/node_modules/tar/dist/commonjs/symlink-error.d.ts +9 -0
- package/node_modules/tar/dist/commonjs/symlink-error.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/symlink-error.js +19 -0
- package/node_modules/tar/dist/commonjs/symlink-error.js.map +1 -0
- package/node_modules/tar/dist/commonjs/types.d.ts +16 -0
- package/node_modules/tar/dist/commonjs/types.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/types.js +70 -0
- package/node_modules/tar/dist/commonjs/types.js.map +1 -0
- package/node_modules/tar/dist/commonjs/unpack.d.ts +101 -0
- package/node_modules/tar/dist/commonjs/unpack.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/unpack.js +932 -0
- package/node_modules/tar/dist/commonjs/unpack.js.map +1 -0
- package/node_modules/tar/dist/commonjs/update.d.ts +2 -0
- package/node_modules/tar/dist/commonjs/update.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/update.js +33 -0
- package/node_modules/tar/dist/commonjs/update.js.map +1 -0
- package/node_modules/tar/dist/commonjs/warn-method.d.ts +24 -0
- package/node_modules/tar/dist/commonjs/warn-method.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/warn-method.js +31 -0
- package/node_modules/tar/dist/commonjs/warn-method.js.map +1 -0
- package/node_modules/tar/dist/commonjs/winchars.d.ts +3 -0
- package/node_modules/tar/dist/commonjs/winchars.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/winchars.js +14 -0
- package/node_modules/tar/dist/commonjs/winchars.js.map +1 -0
- package/node_modules/tar/dist/commonjs/write-entry.d.ts +129 -0
- package/node_modules/tar/dist/commonjs/write-entry.d.ts.map +1 -0
- package/node_modules/tar/dist/commonjs/write-entry.js +698 -0
- package/node_modules/tar/dist/commonjs/write-entry.js.map +1 -0
- package/node_modules/tar/dist/esm/create.d.ts +3 -0
- package/node_modules/tar/dist/esm/create.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/create.js +76 -0
- package/node_modules/tar/dist/esm/create.js.map +1 -0
- package/node_modules/tar/dist/esm/cwd-error.d.ts +8 -0
- package/node_modules/tar/dist/esm/cwd-error.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/cwd-error.js +14 -0
- package/node_modules/tar/dist/esm/cwd-error.js.map +1 -0
- package/node_modules/tar/dist/esm/extract.d.ts +3 -0
- package/node_modules/tar/dist/esm/extract.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/extract.js +49 -0
- package/node_modules/tar/dist/esm/extract.js.map +1 -0
- package/node_modules/tar/dist/esm/get-write-flag.d.ts +2 -0
- package/node_modules/tar/dist/esm/get-write-flag.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/get-write-flag.js +26 -0
- package/node_modules/tar/dist/esm/get-write-flag.js.map +1 -0
- package/node_modules/tar/dist/esm/header.d.ts +53 -0
- package/node_modules/tar/dist/esm/header.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/header.js +311 -0
- package/node_modules/tar/dist/esm/header.js.map +1 -0
- package/node_modules/tar/dist/esm/index.d.ts +20 -0
- package/node_modules/tar/dist/esm/index.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/index.js +20 -0
- package/node_modules/tar/dist/esm/index.js.map +1 -0
- package/node_modules/tar/dist/esm/index.min.js +4 -0
- package/node_modules/tar/dist/esm/index.min.js.map +7 -0
- package/node_modules/tar/dist/esm/large-numbers.d.ts +3 -0
- package/node_modules/tar/dist/esm/large-numbers.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/large-numbers.js +94 -0
- package/node_modules/tar/dist/esm/large-numbers.js.map +1 -0
- package/node_modules/tar/dist/esm/list.d.ts +7 -0
- package/node_modules/tar/dist/esm/list.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/list.js +113 -0
- package/node_modules/tar/dist/esm/list.js.map +1 -0
- package/node_modules/tar/dist/esm/make-command.d.ts +49 -0
- package/node_modules/tar/dist/esm/make-command.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/make-command.js +48 -0
- package/node_modules/tar/dist/esm/make-command.js.map +1 -0
- package/node_modules/tar/dist/esm/mkdir.d.ts +25 -0
- package/node_modules/tar/dist/esm/mkdir.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/mkdir.js +179 -0
- package/node_modules/tar/dist/esm/mkdir.js.map +1 -0
- package/node_modules/tar/dist/esm/mode-fix.d.ts +2 -0
- package/node_modules/tar/dist/esm/mode-fix.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/mode-fix.js +25 -0
- package/node_modules/tar/dist/esm/mode-fix.js.map +1 -0
- package/node_modules/tar/dist/esm/normalize-unicode.d.ts +2 -0
- package/node_modules/tar/dist/esm/normalize-unicode.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/normalize-unicode.js +34 -0
- package/node_modules/tar/dist/esm/normalize-unicode.js.map +1 -0
- package/node_modules/tar/dist/esm/normalize-windows-path.d.ts +2 -0
- package/node_modules/tar/dist/esm/normalize-windows-path.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/normalize-windows-path.js +9 -0
- package/node_modules/tar/dist/esm/normalize-windows-path.js.map +1 -0
- package/node_modules/tar/dist/esm/options.d.ts +604 -0
- package/node_modules/tar/dist/esm/options.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/options.js +54 -0
- package/node_modules/tar/dist/esm/options.js.map +1 -0
- package/node_modules/tar/dist/esm/pack.d.ts +105 -0
- package/node_modules/tar/dist/esm/pack.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/pack.js +502 -0
- package/node_modules/tar/dist/esm/pack.js.map +1 -0
- package/node_modules/tar/dist/esm/package.json +3 -0
- package/node_modules/tar/dist/esm/parse.d.ts +92 -0
- package/node_modules/tar/dist/esm/parse.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/parse.js +651 -0
- package/node_modules/tar/dist/esm/parse.js.map +1 -0
- package/node_modules/tar/dist/esm/path-reservations.d.ts +11 -0
- package/node_modules/tar/dist/esm/path-reservations.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/path-reservations.js +166 -0
- package/node_modules/tar/dist/esm/path-reservations.js.map +1 -0
- package/node_modules/tar/dist/esm/pax.d.ts +26 -0
- package/node_modules/tar/dist/esm/pax.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/pax.js +178 -0
- package/node_modules/tar/dist/esm/pax.js.map +1 -0
- package/node_modules/tar/dist/esm/process-umask.d.ts +2 -0
- package/node_modules/tar/dist/esm/process-umask.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/process-umask.js +3 -0
- package/node_modules/tar/dist/esm/process-umask.js.map +1 -0
- package/node_modules/tar/dist/esm/read-entry.d.ts +36 -0
- package/node_modules/tar/dist/esm/read-entry.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/read-entry.js +132 -0
- package/node_modules/tar/dist/esm/read-entry.js.map +1 -0
- package/node_modules/tar/dist/esm/replace.d.ts +2 -0
- package/node_modules/tar/dist/esm/replace.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/replace.js +221 -0
- package/node_modules/tar/dist/esm/replace.js.map +1 -0
- package/node_modules/tar/dist/esm/strip-absolute-path.d.ts +2 -0
- package/node_modules/tar/dist/esm/strip-absolute-path.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/strip-absolute-path.js +25 -0
- package/node_modules/tar/dist/esm/strip-absolute-path.js.map +1 -0
- package/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts +2 -0
- package/node_modules/tar/dist/esm/strip-trailing-slashes.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/strip-trailing-slashes.js +14 -0
- package/node_modules/tar/dist/esm/strip-trailing-slashes.js.map +1 -0
- package/node_modules/tar/dist/esm/symlink-error.d.ts +9 -0
- package/node_modules/tar/dist/esm/symlink-error.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/symlink-error.js +15 -0
- package/node_modules/tar/dist/esm/symlink-error.js.map +1 -0
- package/node_modules/tar/dist/esm/types.d.ts +16 -0
- package/node_modules/tar/dist/esm/types.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/types.js +65 -0
- package/node_modules/tar/dist/esm/types.js.map +1 -0
- package/node_modules/tar/dist/esm/unpack.d.ts +101 -0
- package/node_modules/tar/dist/esm/unpack.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/unpack.js +891 -0
- package/node_modules/tar/dist/esm/unpack.js.map +1 -0
- package/node_modules/tar/dist/esm/update.d.ts +2 -0
- package/node_modules/tar/dist/esm/update.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/update.js +30 -0
- package/node_modules/tar/dist/esm/update.js.map +1 -0
- package/node_modules/tar/dist/esm/warn-method.d.ts +24 -0
- package/node_modules/tar/dist/esm/warn-method.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/warn-method.js +27 -0
- package/node_modules/tar/dist/esm/warn-method.js.map +1 -0
- package/node_modules/tar/dist/esm/winchars.d.ts +3 -0
- package/node_modules/tar/dist/esm/winchars.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/winchars.js +9 -0
- package/node_modules/tar/dist/esm/winchars.js.map +1 -0
- package/node_modules/tar/dist/esm/write-entry.d.ts +129 -0
- package/node_modules/tar/dist/esm/write-entry.d.ts.map +1 -0
- package/node_modules/tar/dist/esm/write-entry.js +656 -0
- package/node_modules/tar/dist/esm/write-entry.js.map +1 -0
- package/node_modules/tar/package.json +298 -0
- package/node_modules/typescript/LICENSE.txt +55 -0
- package/node_modules/typescript/README.md +50 -0
- package/node_modules/typescript/SECURITY.md +41 -0
- package/node_modules/typescript/ThirdPartyNoticeText.txt +193 -0
- package/node_modules/typescript/bin/tsc +2 -0
- package/node_modules/typescript/bin/tsserver +2 -0
- package/node_modules/typescript/lib/_tsc.js +133818 -0
- package/node_modules/typescript/lib/_tsserver.js +659 -0
- package/node_modules/typescript/lib/_typingsInstaller.js +222 -0
- package/node_modules/typescript/lib/cs/diagnosticMessages.generated.json +2122 -0
- package/node_modules/typescript/lib/de/diagnosticMessages.generated.json +2122 -0
- package/node_modules/typescript/lib/es/diagnosticMessages.generated.json +2122 -0
- package/node_modules/typescript/lib/fr/diagnosticMessages.generated.json +2122 -0
- package/node_modules/typescript/lib/it/diagnosticMessages.generated.json +2122 -0
- package/node_modules/typescript/lib/ja/diagnosticMessages.generated.json +2122 -0
- package/node_modules/typescript/lib/ko/diagnosticMessages.generated.json +2122 -0
- package/node_modules/typescript/lib/lib.d.ts +22 -0
- package/node_modules/typescript/lib/lib.decorators.d.ts +384 -0
- package/node_modules/typescript/lib/lib.decorators.legacy.d.ts +22 -0
- package/node_modules/typescript/lib/lib.dom.asynciterable.d.ts +41 -0
- package/node_modules/typescript/lib/lib.dom.d.ts +39429 -0
- package/node_modules/typescript/lib/lib.dom.iterable.d.ts +571 -0
- package/node_modules/typescript/lib/lib.es2015.collection.d.ts +147 -0
- package/node_modules/typescript/lib/lib.es2015.core.d.ts +597 -0
- package/node_modules/typescript/lib/lib.es2015.d.ts +28 -0
- package/node_modules/typescript/lib/lib.es2015.generator.d.ts +77 -0
- package/node_modules/typescript/lib/lib.es2015.iterable.d.ts +605 -0
- package/node_modules/typescript/lib/lib.es2015.promise.d.ts +81 -0
- package/node_modules/typescript/lib/lib.es2015.proxy.d.ts +128 -0
- package/node_modules/typescript/lib/lib.es2015.reflect.d.ts +144 -0
- package/node_modules/typescript/lib/lib.es2015.symbol.d.ts +46 -0
- package/node_modules/typescript/lib/lib.es2015.symbol.wellknown.d.ts +326 -0
- package/node_modules/typescript/lib/lib.es2016.array.include.d.ts +116 -0
- package/node_modules/typescript/lib/lib.es2016.d.ts +21 -0
- package/node_modules/typescript/lib/lib.es2016.full.d.ts +23 -0
- package/node_modules/typescript/lib/lib.es2016.intl.d.ts +31 -0
- package/node_modules/typescript/lib/lib.es2017.arraybuffer.d.ts +21 -0
- package/node_modules/typescript/lib/lib.es2017.d.ts +26 -0
- package/node_modules/typescript/lib/lib.es2017.date.d.ts +31 -0
- package/node_modules/typescript/lib/lib.es2017.full.d.ts +23 -0
- package/node_modules/typescript/lib/lib.es2017.intl.d.ts +44 -0
- package/node_modules/typescript/lib/lib.es2017.object.d.ts +49 -0
- package/node_modules/typescript/lib/lib.es2017.sharedmemory.d.ts +135 -0
- package/node_modules/typescript/lib/lib.es2017.string.d.ts +45 -0
- package/node_modules/typescript/lib/lib.es2017.typedarrays.d.ts +53 -0
- package/node_modules/typescript/lib/lib.es2018.asyncgenerator.d.ts +77 -0
- package/node_modules/typescript/lib/lib.es2018.asynciterable.d.ts +53 -0
- package/node_modules/typescript/lib/lib.es2018.d.ts +24 -0
- package/node_modules/typescript/lib/lib.es2018.full.d.ts +24 -0
- package/node_modules/typescript/lib/lib.es2018.intl.d.ts +83 -0
- package/node_modules/typescript/lib/lib.es2018.promise.d.ts +30 -0
- package/node_modules/typescript/lib/lib.es2018.regexp.d.ts +37 -0
- package/node_modules/typescript/lib/lib.es2019.array.d.ts +79 -0
- package/node_modules/typescript/lib/lib.es2019.d.ts +24 -0
- package/node_modules/typescript/lib/lib.es2019.full.d.ts +24 -0
- package/node_modules/typescript/lib/lib.es2019.intl.d.ts +23 -0
- package/node_modules/typescript/lib/lib.es2019.object.d.ts +33 -0
- package/node_modules/typescript/lib/lib.es2019.string.d.ts +37 -0
- package/node_modules/typescript/lib/lib.es2019.symbol.d.ts +24 -0
- package/node_modules/typescript/lib/lib.es2020.bigint.d.ts +765 -0
- package/node_modules/typescript/lib/lib.es2020.d.ts +27 -0
- package/node_modules/typescript/lib/lib.es2020.date.d.ts +42 -0
- package/node_modules/typescript/lib/lib.es2020.full.d.ts +24 -0
- package/node_modules/typescript/lib/lib.es2020.intl.d.ts +474 -0
- package/node_modules/typescript/lib/lib.es2020.number.d.ts +28 -0
- package/node_modules/typescript/lib/lib.es2020.promise.d.ts +47 -0
- package/node_modules/typescript/lib/lib.es2020.sharedmemory.d.ts +99 -0
- package/node_modules/typescript/lib/lib.es2020.string.d.ts +44 -0
- package/node_modules/typescript/lib/lib.es2020.symbol.wellknown.d.ts +41 -0
- package/node_modules/typescript/lib/lib.es2021.d.ts +23 -0
- package/node_modules/typescript/lib/lib.es2021.full.d.ts +24 -0
- package/node_modules/typescript/lib/lib.es2021.intl.d.ts +166 -0
- package/node_modules/typescript/lib/lib.es2021.promise.d.ts +48 -0
- package/node_modules/typescript/lib/lib.es2021.string.d.ts +33 -0
- package/node_modules/typescript/lib/lib.es2021.weakref.d.ts +78 -0
- package/node_modules/typescript/lib/lib.es2022.array.d.ts +121 -0
- package/node_modules/typescript/lib/lib.es2022.d.ts +25 -0
- package/node_modules/typescript/lib/lib.es2022.error.d.ts +75 -0
- package/node_modules/typescript/lib/lib.es2022.full.d.ts +24 -0
- package/node_modules/typescript/lib/lib.es2022.intl.d.ts +145 -0
- package/node_modules/typescript/lib/lib.es2022.object.d.ts +26 -0
- package/node_modules/typescript/lib/lib.es2022.regexp.d.ts +39 -0
- package/node_modules/typescript/lib/lib.es2022.string.d.ts +25 -0
- package/node_modules/typescript/lib/lib.es2023.array.d.ts +924 -0
- package/node_modules/typescript/lib/lib.es2023.collection.d.ts +21 -0
- package/node_modules/typescript/lib/lib.es2023.d.ts +22 -0
- package/node_modules/typescript/lib/lib.es2023.full.d.ts +24 -0
- package/node_modules/typescript/lib/lib.es2023.intl.d.ts +56 -0
- package/node_modules/typescript/lib/lib.es2024.arraybuffer.d.ts +65 -0
- package/node_modules/typescript/lib/lib.es2024.collection.d.ts +29 -0
- package/node_modules/typescript/lib/lib.es2024.d.ts +26 -0
- package/node_modules/typescript/lib/lib.es2024.full.d.ts +24 -0
- package/node_modules/typescript/lib/lib.es2024.object.d.ts +29 -0
- package/node_modules/typescript/lib/lib.es2024.promise.d.ts +35 -0
- package/node_modules/typescript/lib/lib.es2024.regexp.d.ts +25 -0
- package/node_modules/typescript/lib/lib.es2024.sharedmemory.d.ts +68 -0
- package/node_modules/typescript/lib/lib.es2024.string.d.ts +29 -0
- package/node_modules/typescript/lib/lib.es5.d.ts +4601 -0
- package/node_modules/typescript/lib/lib.es6.d.ts +23 -0
- package/node_modules/typescript/lib/lib.esnext.array.d.ts +35 -0
- package/node_modules/typescript/lib/lib.esnext.collection.d.ts +96 -0
- package/node_modules/typescript/lib/lib.esnext.d.ts +29 -0
- package/node_modules/typescript/lib/lib.esnext.decorators.d.ts +28 -0
- package/node_modules/typescript/lib/lib.esnext.disposable.d.ts +193 -0
- package/node_modules/typescript/lib/lib.esnext.error.d.ts +24 -0
- package/node_modules/typescript/lib/lib.esnext.float16.d.ts +445 -0
- package/node_modules/typescript/lib/lib.esnext.full.d.ts +24 -0
- package/node_modules/typescript/lib/lib.esnext.intl.d.ts +21 -0
- package/node_modules/typescript/lib/lib.esnext.iterator.d.ts +148 -0
- package/node_modules/typescript/lib/lib.esnext.promise.d.ts +34 -0
- package/node_modules/typescript/lib/lib.esnext.sharedmemory.d.ts +25 -0
- package/node_modules/typescript/lib/lib.scripthost.d.ts +322 -0
- package/node_modules/typescript/lib/lib.webworker.asynciterable.d.ts +41 -0
- package/node_modules/typescript/lib/lib.webworker.d.ts +13150 -0
- package/node_modules/typescript/lib/lib.webworker.importscripts.d.ts +23 -0
- package/node_modules/typescript/lib/lib.webworker.iterable.d.ts +340 -0
- package/node_modules/typescript/lib/pl/diagnosticMessages.generated.json +2122 -0
- package/node_modules/typescript/lib/pt-br/diagnosticMessages.generated.json +2122 -0
- package/node_modules/typescript/lib/ru/diagnosticMessages.generated.json +2122 -0
- package/node_modules/typescript/lib/tr/diagnosticMessages.generated.json +2122 -0
- package/node_modules/typescript/lib/tsc.js +8 -0
- package/node_modules/typescript/lib/tsserver.js +8 -0
- package/node_modules/typescript/lib/tsserverlibrary.d.ts +17 -0
- package/node_modules/typescript/lib/tsserverlibrary.js +21 -0
- package/node_modules/typescript/lib/typesMap.json +497 -0
- package/node_modules/typescript/lib/typescript.d.ts +11437 -0
- package/node_modules/typescript/lib/typescript.js +200276 -0
- package/node_modules/typescript/lib/typingsInstaller.js +8 -0
- package/node_modules/typescript/lib/watchGuard.js +53 -0
- package/node_modules/typescript/lib/zh-cn/diagnosticMessages.generated.json +2122 -0
- package/node_modules/typescript/lib/zh-tw/diagnosticMessages.generated.json +2122 -0
- package/node_modules/typescript/package.json +120 -0
- package/node_modules/yallist/LICENSE.md +63 -0
- package/node_modules/yallist/README.md +205 -0
- package/node_modules/yallist/dist/commonjs/index.d.ts +39 -0
- package/node_modules/yallist/dist/commonjs/index.d.ts.map +1 -0
- package/node_modules/yallist/dist/commonjs/index.js +384 -0
- package/node_modules/yallist/dist/commonjs/index.js.map +1 -0
- package/node_modules/yallist/dist/commonjs/package.json +3 -0
- package/node_modules/yallist/dist/esm/index.d.ts +39 -0
- package/node_modules/yallist/dist/esm/index.d.ts.map +1 -0
- package/node_modules/yallist/dist/esm/index.js +379 -0
- package/node_modules/yallist/dist/esm/index.js.map +1 -0
- package/node_modules/yallist/dist/esm/package.json +3 -0
- package/node_modules/yallist/package.json +68 -0
- package/node_modules/yauzl/LICENSE +21 -0
- package/node_modules/yauzl/README.md +1015 -0
- package/node_modules/yauzl/crc32.js +45 -0
- package/node_modules/yauzl/fd-slicer.js +188 -0
- package/node_modules/yauzl/index.js +1096 -0
- package/node_modules/yauzl/package.json +40 -0
- package/node_modules/yazl/LICENSE +21 -0
- package/node_modules/yazl/README.md +457 -0
- package/node_modules/yazl/index.js +826 -0
- package/node_modules/yazl/package.json +34 -0
- package/package.json +163 -0
- package/testkit-config-schema.md +718 -0
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
import { type EngineConfigurations } from "../../engines/catalog.js";
|
|
2
|
+
import { type EngineId, type PublicTestType, type RunnerProfileId } from "../../domain/identifiers.js";
|
|
3
|
+
import { type DiscoveredSuite, type DiscoveryOptions, type DiscoveryProject } from "./discovery.js";
|
|
4
|
+
import { type NormalizedToolchainRegistry } from "../../toolchains/index.js";
|
|
5
|
+
import { type TestFileMetadata } from "./file-metadata.js";
|
|
6
|
+
import { type NormalizedDiscoveryConfig } from "./path-policy.js";
|
|
7
|
+
import { type FingerprintPolicy } from "../../repo/fingerprint-policy.js";
|
|
8
|
+
import { type NormalizedDatabaseConfig } from "./database.js";
|
|
9
|
+
import { parseDotenv } from "./env.js";
|
|
10
|
+
import { type NormalizedRuntimeIsolationConfig } from "./runtime-isolation.js";
|
|
11
|
+
import { resolveProductDir, resolveServiceCwd } from "./paths.js";
|
|
12
|
+
import { type NormalizedRuntimeConfig } from "./runtime.js";
|
|
13
|
+
import { type NormalizedServiceRequirements, type NormalizedSkipConfig } from "./skip-config.js";
|
|
14
|
+
import { type NormalizedArtifactArchiveConfig } from "../../evidence/index.js";
|
|
15
|
+
import type { NormalizedExecutionConfig } from "./execution-model.js";
|
|
16
|
+
type UnknownRecord = Record<string, unknown>;
|
|
17
|
+
export interface NormalizedSuiteConfig extends DiscoveredSuite {
|
|
18
|
+
engineId: EngineId;
|
|
19
|
+
profileId: RunnerProfileId;
|
|
20
|
+
testType: PublicTestType;
|
|
21
|
+
}
|
|
22
|
+
export type ServiceSuites = Partial<Record<PublicTestType, NormalizedSuiteConfig[]>>;
|
|
23
|
+
export interface NormalizedLocalServiceConfig {
|
|
24
|
+
baseUrl: string;
|
|
25
|
+
cwd: string;
|
|
26
|
+
env: Record<string, string>;
|
|
27
|
+
port?: number;
|
|
28
|
+
readyTimeoutMs?: number;
|
|
29
|
+
shutdownTimeoutMs?: number;
|
|
30
|
+
readyUrl?: false | null | string;
|
|
31
|
+
start: string;
|
|
32
|
+
}
|
|
33
|
+
export interface NormalizedServiceTestkitConfig {
|
|
34
|
+
database: NormalizedLoadedDatabaseConfig | undefined;
|
|
35
|
+
databaseFrom: string | undefined;
|
|
36
|
+
dependsOn: string[];
|
|
37
|
+
discovery: NormalizedDiscoveryConfig;
|
|
38
|
+
envFiles: string[];
|
|
39
|
+
execution: NormalizedExecutionConfig;
|
|
40
|
+
fileMetadataByPath: Map<string, TestFileMetadata>;
|
|
41
|
+
fingerprints: FingerprintPolicy;
|
|
42
|
+
local: NormalizedLocalServiceConfig | undefined;
|
|
43
|
+
requirements: NormalizedServiceRequirements;
|
|
44
|
+
runtime: NormalizedRuntimeConfig;
|
|
45
|
+
runtimeIsolation: NormalizedRuntimeIsolationConfig;
|
|
46
|
+
serviceEnv: Record<string, string>;
|
|
47
|
+
skip: NormalizedSkipConfig | undefined;
|
|
48
|
+
ui: unknown;
|
|
49
|
+
}
|
|
50
|
+
export type NormalizedLoadedDatabaseConfig = NormalizedDatabaseConfig & Record<PropertyKey, unknown>;
|
|
51
|
+
export interface NormalizedServiceConfig {
|
|
52
|
+
artifacts: NormalizedArtifactArchiveConfig;
|
|
53
|
+
configFile: null | string;
|
|
54
|
+
engineConfigurations?: EngineConfigurations;
|
|
55
|
+
name: string;
|
|
56
|
+
productDir: string;
|
|
57
|
+
stateDir: string;
|
|
58
|
+
suites: ServiceSuites;
|
|
59
|
+
testkit: NormalizedServiceTestkitConfig;
|
|
60
|
+
}
|
|
61
|
+
export interface PreparedDiscovery {
|
|
62
|
+
readonly project: DiscoveryProject;
|
|
63
|
+
readonly fileMetadataByPath: Map<string, TestFileMetadata>;
|
|
64
|
+
}
|
|
65
|
+
export interface LoadConfigContextOptions {
|
|
66
|
+
preparedDiscovery?: PreparedDiscovery;
|
|
67
|
+
configContext?: unknown;
|
|
68
|
+
configImportCacheSalt?: string;
|
|
69
|
+
dir?: null | string;
|
|
70
|
+
discoveryOptions?: Omit<DiscoveryOptions, "discovery">;
|
|
71
|
+
requireLocalRuntime?: boolean;
|
|
72
|
+
}
|
|
73
|
+
export interface LoadConfigsOptions extends LoadConfigContextOptions {
|
|
74
|
+
service?: null | string;
|
|
75
|
+
}
|
|
76
|
+
export interface NormalizedConfigContext {
|
|
77
|
+
config: object;
|
|
78
|
+
configFile: null | string;
|
|
79
|
+
configs: NormalizedServiceConfig[];
|
|
80
|
+
discovery: DiscoveryProject;
|
|
81
|
+
execution: NormalizedExecutionConfig;
|
|
82
|
+
explicitServices: Partial<Record<string, UnknownRecord>>;
|
|
83
|
+
fingerprints: FingerprintPolicy;
|
|
84
|
+
productDir: string;
|
|
85
|
+
toolchains: NormalizedToolchainRegistry;
|
|
86
|
+
}
|
|
87
|
+
export { parseDotenv, resolveProductDir, resolveServiceCwd };
|
|
88
|
+
export declare function loadConfigContext(opts?: Readonly<LoadConfigContextOptions>): Promise<NormalizedConfigContext>;
|
|
89
|
+
export declare function loadConfigs(opts?: Readonly<LoadConfigsOptions>): Promise<NormalizedServiceConfig[]>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import A from"path";import{buildEngineConfigurations as B}from"../../engines/catalog.js";import{isPublicTestType as K}from"../../domain/identifiers.js";import{discoverProject as G}from"./discovery.js";import{loadTestkitConfig as H}from"./config-loader.js";import{normalizeToolchainRegistry as J}from"../../toolchains/index.js";import{loadTestFileMetadataMap as Q}from"./file-metadata.js";import{mergeDiscoveryConfigs as V}from"./path-policy.js";import{normalizeDiscoveryConfig as I}from"./decode-discovery.js";import{normalizeFingerprintPolicy as W}from"../../repo/fingerprint-policy.js";import{normalizeDatabaseConfig as X}from"./database.js";import{inferEnvFiles as Y,loadServiceEnv as Z,parseDotenv as _}from"./env.js";import{normalizeRuntimeIsolationConfig as N}from"./runtime-isolation.js";import{resolveProductDir as M,resolveServiceCwd as ee}from"./paths.js";import{inferLocalRuntime as re,normalizeRepoExecution as oe,normalizeRuntimeConfig as te}from"./runtime.js";import{normalizeServiceRequirements as ne,normalizeSkipConfig as ie}from"./skip-config.js";import{normalizeArtifactArchiveConfig as se}from"../../evidence/index.js";import{validateConfigCoverage as ce,validateServiceConfig as fe}from"./validation.js";import{isObjectRecord as g,readProperty as i}from"./values.js";import{assertPortableServiceNameSet as ae,requireServiceName as de}from"../../domain/service-name.js";import{resolveEngineProfile as le}from"../../engines/catalog.js";export{_ as parseDotenv,M as resolveProductDir,ee as resolveServiceCwd};export async function loadConfigContext(e={}){const r=M(process.cwd(),e.dir),o=e.requireLocalRuntime!==!1,t=e.configContext||await H(r,{importCacheSalt:e.configImportCacheSalt??""}),{config:n,configFile:f}=he(t),d=oe(je(i(n,"execution"))),u=se(i(n,"artifacts")),a=J(i(n,"toolchains")),s=W(i(n,"fingerprints")),m=I(i(n,"discovery"),{allowRoots:!0}),c=be(i(n,"services")),p=e.preparedDiscovery?.project??G(r,ye(c),{...e.discoveryOptions||{},discovery:m}),$=Q(r,p.suitesByService,e.preparedDiscovery?.fileMetadataByPath),w=ue(p.suitesByService,$),b=[...new Set([...Object.keys(c),...Object.keys(w)])].sort((l,S)=>l.localeCompare(S)).map(l=>pe({name:l,productDir:r,config:n,configFile:f,execution:d,discovery:m,artifacts:u,toolchains:a,fingerprints:s,explicitService:c[l]||{},discoveredService:p.services[l]||null,suites:w[l]||{},fileMetadataByPath:$,requireLocalRuntime:o}));return ce(b),{productDir:r,config:n,configFile:f,execution:d,toolchains:a,fingerprints:s,explicitServices:c,discovery:p,configs:b}}function ue(e,r){return Object.fromEntries(Object.entries(e).map(([o,t])=>[o,me(o,t||{},r)]))}function me(e,r,o){const t={};for(const[n,f]of Object.entries(r)){if(!K(n))throw new Error(`Discovered service "${e}" contains unknown test type "${n}"`);t[n]=f.map(d=>{const u=d.files[0];if(!u)throw new Error(`Discovered suite ${e}/${n}:${d.name} contains no files`);const a=T(o,u),s=le(n,a.engineId);if(s.id!==a.profileId)throw new Error(`Discovered file ${u} resolved conflicting engine profile ${a.profileId}; expected ${s.id}`);for(const m of d.files.slice(1)){const c=T(o,m);if(c.engineId!==a.engineId||c.profileId!==a.profileId)throw new Error(`Discovered suite ${e}/${n}:${d.name} mixes engine profiles ${a.engineId}/${a.profileId} and ${c.engineId}/${c.profileId}`)}return{...d,testType:n,engineId:a.engineId,profileId:a.profileId}})}return t}function T(e,r){const o=e.get(r);if(!o)throw new Error(`Missing validated testkit metadata for discovered file: ${r}`);return o}export async function loadConfigs(e={}){const r=await loadConfigContext(e),{configs:o}=r,t=e.service?o.filter(n=>n.name===e.service):o;if(e.service&&t.length===0){const n=o.map(f=>f.name).join(", ");throw new Error(`Service "${e.service}" not found. Available: ${n}`)}return t}function pe({name:e,productDir:r,config:o,configFile:t,execution:n,discovery:f,artifacts:d,toolchains:u,fingerprints:a,explicitService:s,discoveredService:m,suites:c,fileMetadataByPath:p,requireLocalRuntime:$}){const w=B(o,new Set(Object.values(c).flatMap(y=>y.map(E=>E.engineId)))),v=ge(e,s,m,r),b=Y(r,s,v),l={...Z(r,b),...F(i(s,"env"),`Service "${e}" env`)},S=V(f,P(i(s,"discovery"),e));if(i(s,"migrate")||i(s,"seed"))throw new Error(`Service "${e}" uses removed migrate/seed hooks. Move template lifecycle to database.template.{migrate,seed,verify}.`);const C=we(s,e),j=te(i(s,"runtime"),e,u),D=ie(i(s,"skip"),{name:e,suites:c}),L=ne(i(s,"requirements"),{name:e,suites:c}),q=N(i(s,"runtimeIsolation"),{name:e,suites:c}),x=new Set(Object.values(c).flatMap(y=>y.flatMap(E=>E.files))),U=new Map([...p.entries()].filter(([y])=>x.has(y))),O=$e(i(s,"dependsOn"),`Service "${e}" dependsOn`),z=h(i(s,"databaseFrom"),`Service "${e}" databaseFrom`);return fe({name:e,local:v,database:C,databaseFrom:z,runtime:j,dependsOn:O,suites:c,productDir:r,requireLocalRuntime:$}),{name:e,productDir:r,configFile:t,...w===void 0?{}:{engineConfigurations:w},stateDir:A.join(r,".testkit",e),artifacts:d,suites:c,testkit:{execution:n,dependsOn:O,discovery:S,database:C,databaseFrom:z,envFiles:b,requirements:L,serviceEnv:l,skip:D,runtime:j,runtimeIsolation:q,ui:i(o,"ui")||null,fingerprints:a,fileMetadataByPath:U,local:v}}}function ge(e,r,o,t){if(Object.prototype.hasOwnProperty.call(r,"local"))return k(i(r,"local"),e);const n=o?.inferredLocalCwd||".",f=re(t,n);if(f)return f}function k(e,r){if(e===!1)return;if(!g(e))throw new Error(`Service "${r}" local must be an object or false`);const o=R(e.baseUrl,`Service "${r}" local.baseUrl`),t=R(e.start,`Service "${r}" local.start`),{shutdownTimeoutMs:n,...f}=e;return{...f,...Ee(n,r),baseUrl:o,start:t,cwd:h(e.cwd,`Service "${r}" local.cwd`)||".",env:F(e.env,`Service "${r}" local.env`),...ve(e.port,`Service "${r}" local.port`),...Se(e.readyTimeoutMs,`Service "${r}" local.readyTimeoutMs`),...Ce(e.readyUrl,r)}}function we(e,r){const o=X(e,r);if(!o)return;const t=h(i(o,"image"),`Service "${r}" database.image`),n=h(i(o,"password"),`Service "${r}" database.password`),f=h(i(o,"user"),`Service "${r}" database.user`);return{...o,...Object.prototype.hasOwnProperty.call(o,"image")?{image:t}:{},...Object.prototype.hasOwnProperty.call(o,"password")?{password:n}:{},...Object.prototype.hasOwnProperty.call(o,"user")?{user:f}:{}}}function P(e,r){try{return I(e,{allowRoots:!0})}catch(o){const t=o instanceof Error?o.message:String(o);throw new Error(`Service "${r}" has invalid discovery config: ${t}`,{cause:o})}}function be(e){if(e==null)return{};if(!g(e))throw new Error("testkit.config.ts services must be an object");const r=Object.fromEntries(Object.entries(e).map(([o,t])=>{if(de(o,`Service name "${o}"`),t==null)return[o,{}];if(!g(t))throw new Error(`Service "${o}" config must be an object`);return[o,t]}));return ae(Object.keys(r)),r}function ye(e){return Object.fromEntries(Object.entries(e).map(([r,o])=>{const t=o||{},n={discovery:P(i(t,"discovery"),r),local:Object.prototype.hasOwnProperty.call(t,"local")?k(i(t,"local"),r)||!1:void 0};return[r,n]}))}function he(e){if(!g(e))throw new Error("Loaded Testkit config context must be an object");const r=e.config;if(typeof r!="object"||r===null)throw new Error("Loaded Testkit config must be an object");const o=e.configFile;if(o!==null&&typeof o!="string")throw new Error("Loaded Testkit config file must be a string or null");return{config:r,configFile:o}}function $e(e,r){if(e==null)return[];if(!Array.isArray(e))throw new Error(`${r} must be an array of strings`);return e.map((o,t)=>{if(typeof o!="string")throw new Error(`${r}[${String(t)}] must be a string`);return o})}function F(e,r){if(e==null)return{};if(!g(e))throw new Error(`${r} must be an object of strings`);return Object.fromEntries(Object.entries(e).map(([o,t])=>{if(typeof t!="string")throw new Error(`${r}.${o} must be a string`);return[o,t]}))}function ve(e,r){if(e===void 0)return{};if(typeof e!="number")throw new Error(`${r} must be a number`);return{port:e}}function Se(e,r){if(e===void 0)return{};if(typeof e!="number")throw new Error(`${r} must be a number`);return{readyTimeoutMs:e}}function Ee(e,r){if(e===void 0)return{};if(typeof e!="number"||!Number.isInteger(e)||e<=0)throw new Error(`Service "${r}" local.shutdownTimeoutMs must be a positive finite integer in milliseconds`);return{shutdownTimeoutMs:e}}function Ce(e,r){if(e===void 0)return{};if(e===!1||e===null||typeof e=="string")return{readyUrl:e};throw new Error(`Service "${r}" local.readyUrl must be a string, false, or null`)}function h(e,r){if(e!==void 0){if(typeof e!="string")throw new Error(`${r} must be a string`);return e}}function R(e,r){if(typeof e!="string")throw new Error(`${r} must be a string`);return e}function je(e){if(e){if(!g(e))throw new Error("testkit.config.ts execution must be an object");return e}}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { type NormalizedServiceConfig } from "./load.js";
|
|
2
|
+
export interface LoadManagedConfigsOptions {
|
|
3
|
+
dir?: string;
|
|
4
|
+
service?: null | string;
|
|
5
|
+
}
|
|
6
|
+
export interface ManagedConfigCollection {
|
|
7
|
+
allConfigs: NormalizedServiceConfig[];
|
|
8
|
+
configs: NormalizedServiceConfig[];
|
|
9
|
+
}
|
|
10
|
+
export interface ManagedConfigDependencyNode {
|
|
11
|
+
name: string;
|
|
12
|
+
testkit: {
|
|
13
|
+
database?: unknown;
|
|
14
|
+
dependsOn: readonly string[];
|
|
15
|
+
};
|
|
16
|
+
}
|
|
17
|
+
export declare function loadManagedConfigs(options?: Readonly<LoadManagedConfigsOptions>): Promise<ManagedConfigCollection>;
|
|
18
|
+
export declare function filterConfigsByService<Config extends ManagedConfigDependencyNode>(allConfigs: Config[], serviceName: null | string): Config[];
|
|
19
|
+
export declare function resolveTargetConfig<Config extends ManagedConfigDependencyNode>(configs: readonly Config[], serviceName?: null | string): Config;
|
|
20
|
+
export declare function collectRequiredConfigs<Config extends ManagedConfigDependencyNode>(configs: readonly Config[], targetName: string): Config[];
|
|
21
|
+
export declare function topologicallySortConfigs<Config extends ManagedConfigDependencyNode>(configs: readonly Config[]): Config[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{loadConfigs as d}from"./load.js";export async function loadManagedConfigs(e={}){const o=await d({dir:e.dir}),a=filterConfigsByService(o,e.service||null);return{allConfigs:o,configs:a}}export function filterConfigsByService(e,o){if(!o)return e;const a=e.filter(t=>t.name===o);if(a.length>0)return a;const i=e.map(t=>t.name).join(", ");throw new Error(`Service "${o}" not found. Available: ${i}`)}export function resolveTargetConfig(e,o=null){if(o){const t=e.find(r=>r.name===o);if(!t){const r=e.map(n=>n.name).join(", ");throw new Error(`Service "${o}" not found. Available: ${r}`)}return t}if(e.length===1)return e[0];const a=e.filter(t=>t.testkit.database);if(a.length===1)return a[0];const i=e.map(t=>t.name).join(", ");throw new Error(`Multiple services available. Pass --service. Available: ${i}`)}export function collectRequiredConfigs(e,o){const a=new Map(e.map(r=>[r.name,r])),i=new Set,t=r=>{if(i.has(r))return;const n=a.get(r);if(!n)throw new Error(`Missing config for dependency "${r}"`);i.add(r);for(const s of n.testkit.dependsOn)t(s)};return t(o),e.filter(r=>i.has(r.name))}export function topologicallySortConfigs(e){const o=new Map(e.map(n=>[n.name,n])),a=new Set,i=new Set,t=[],r=n=>{if(!a.has(n.name)){if(i.has(n.name))throw new Error(`Dependency cycle while resolving configs for "${n.name}"`);i.add(n.name);for(const s of n.testkit.dependsOn){const l=o.get(s);l&&r(l)}i.delete(n.name),a.add(n.name),t.push(n)}};for(const n of e)r(n);return t}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface NormalizedDiscoveryConfig {
|
|
2
|
+
exclude?: string[];
|
|
3
|
+
roots?: string[];
|
|
4
|
+
}
|
|
5
|
+
export declare const DEFAULT_DISCOVERY_EXCLUDES: readonly string[];
|
|
6
|
+
export declare function mergeDiscoveryConfigs(...configs: readonly (NormalizedDiscoveryConfig | null | undefined)[]): NormalizedDiscoveryConfig;
|
|
7
|
+
export declare function resolveDiscoveryRoots(baseDir: string, roots: null | readonly unknown[] | undefined, defaultRoot?: unknown): string[];
|
|
8
|
+
export declare function shouldExcludeDiscoveryPath(relativePath: unknown, exclude?: readonly string[]): boolean;
|
|
9
|
+
export declare function normalizeDiscoveryPath(value: unknown): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import u from"fs";import l from"path";const f=String;export const DEFAULT_DISCOVERY_EXCLUDES=Object.freeze([".cache",".git",".hg",".next",".nuxt",".playwright-browsers",".svn",".testkit",".turbo","build","coverage","dist","node_modules","playwright-report","test-results"]);export function mergeDiscoveryConfigs(...o){const e={};for(const t of o)t&&(Array.isArray(t.roots)&&(e.roots=[...t.roots]),Array.isArray(t.exclude)&&t.exclude.length>0&&(e.exclude=[...new Set([...e.exclude||[],...t.exclude])]));return e}export function resolveDiscoveryRoots(o,e,t="."){const s=Array.isArray(e)&&e.length>0?e:[t],c=new Set,a=[];for(const i of s){const r=normalizeDiscoveryPath(i);if(!r)continue;const n=l.resolve(o,r==="."?".":r);!u.existsSync(n)||!u.statSync(n).isDirectory()||c.has(n)||(c.add(n),a.push(n))}return a.sort((i,r)=>i.localeCompare(r))}export function shouldExcludeDiscoveryPath(o,e=[]){const t=normalizeDiscoveryPath(o);return!t||t==="."?!1:e.some(s=>d(t,s))}export function normalizeDiscoveryPath(o){return f(o||"").trim().split(l.sep).join("/").replace(/^\.\/+/u,"").replace(/\/+/gu,"/").replace(/\/+$/u,"")||"."}function d(o,e){return o===e||o.startsWith(`${e}/`)}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
export declare function resolveServiceCwd(productDir: string, maybeRelative?: string | null): string;
|
|
2
|
+
export declare function ensureExistingPath(productDir: string, relativePath: string, label: string): void;
|
|
3
|
+
export declare function ensureExistingContainedPath(productDir: string, relativePath: string, label: string): void;
|
|
4
|
+
export declare function normalizePath(value?: string | null): string;
|
|
5
|
+
export declare function resolveProductDir(cwd: string, explicitDir?: string | null): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import n from"fs";import s from"path";import{resolveContainedPath as i}from"../../process/files/contained-path.js";export function resolveServiceCwd(o,r){return s.resolve(o,r||".")}export function ensureExistingPath(o,r,e){const t=resolveServiceCwd(o,r);if(!n.existsSync(t))throw new Error(`${e} does not exist: ${r}`)}export function ensureExistingContainedPath(o,r,e){const t=i(o,r,e);if(!n.existsSync(t))throw new Error(`${e} does not exist: ${r}`)}export function normalizePath(o){return(o||"").replaceAll("\\","/").replace(/^\.\/+/,"")}export function resolveProductDir(o,r){const e=r?s.resolve(o,r):o;if(!n.existsSync(e))throw new Error(`Product directory does not exist: ${e}`);return e}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { type TypedSuiteSelector } from "../../domain/suite-selection.js";
|
|
2
|
+
import type { PublicTestType } from "../../domain/identifiers.js";
|
|
3
|
+
import { type RuntimeIsolationPolicy } from "../../domain/runtime-isolation-contract.js";
|
|
4
|
+
export { DEFAULT_RUNTIME_ISOLATION_POLICY, isRuntimeIsolationPolicy, normalizeRuntimeIsolationPolicy, RUNTIME_ISOLATION_POLICIES, type RuntimeIsolationPolicy, } from "../../domain/runtime-isolation-contract.js";
|
|
5
|
+
export interface RuntimeIsolationSuiteInput {
|
|
6
|
+
files?: readonly string[];
|
|
7
|
+
name: string;
|
|
8
|
+
testType: PublicTestType;
|
|
9
|
+
}
|
|
10
|
+
export type RuntimeIsolationSuiteCollection = Readonly<Record<string, readonly RuntimeIsolationSuiteInput[] | undefined>>;
|
|
11
|
+
export interface RuntimeIsolationNormalizationOptions {
|
|
12
|
+
name: string;
|
|
13
|
+
suites?: null | RuntimeIsolationSuiteCollection;
|
|
14
|
+
}
|
|
15
|
+
export interface NormalizedSuiteRuntimeIsolationRule {
|
|
16
|
+
policy: RuntimeIsolationPolicy;
|
|
17
|
+
selector: TypedSuiteSelector;
|
|
18
|
+
}
|
|
19
|
+
export interface NormalizedFileRuntimeIsolationRule {
|
|
20
|
+
path: string;
|
|
21
|
+
policy: RuntimeIsolationPolicy;
|
|
22
|
+
}
|
|
23
|
+
export interface NormalizedRuntimeIsolationConfig {
|
|
24
|
+
defaultPolicy: RuntimeIsolationPolicy;
|
|
25
|
+
filePolicyByPath: ReadonlyMap<string, RuntimeIsolationPolicy>;
|
|
26
|
+
files: NormalizedFileRuntimeIsolationRule[];
|
|
27
|
+
suites: NormalizedSuiteRuntimeIsolationRule[];
|
|
28
|
+
}
|
|
29
|
+
export interface RuntimeIsolationFileMetadata<Policy extends string = RuntimeIsolationPolicy> {
|
|
30
|
+
runtimeIsolation?: null | Policy;
|
|
31
|
+
}
|
|
32
|
+
export interface RuntimeIsolationResolverTestkitConfig<Policy extends string = string> {
|
|
33
|
+
fileMetadataByPath?: ReadonlyMap<string, RuntimeIsolationFileMetadata<Policy>>;
|
|
34
|
+
runtimeIsolation?: NormalizedRuntimeIsolationConfig;
|
|
35
|
+
}
|
|
36
|
+
export interface RuntimeIsolationResolverConfig<Policy extends string = string> {
|
|
37
|
+
testkit?: RuntimeIsolationResolverTestkitConfig<Policy>;
|
|
38
|
+
}
|
|
39
|
+
export interface RuntimeIsolationResolutionSuite {
|
|
40
|
+
name: string;
|
|
41
|
+
testType: PublicTestType;
|
|
42
|
+
}
|
|
43
|
+
export declare function normalizeRuntimeIsolationConfig(value: unknown, { name, suites }: RuntimeIsolationNormalizationOptions): NormalizedRuntimeIsolationConfig;
|
|
44
|
+
export declare function resolveRuntimeIsolationPolicy<Policy extends string>(config: RuntimeIsolationResolverConfig<Policy>, suite: RuntimeIsolationResolutionSuite, filePath: string): Policy | RuntimeIsolationPolicy;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{matchesSuiteSelectors as P,parseSuiteSelectors as v}from"../../domain/suite-selection.js";import{isObjectRecord as y}from"./values.js";import{DEFAULT_RUNTIME_ISOLATION_POLICY as E,normalizeRuntimeIsolationPolicy as m}from"../../domain/runtime-isolation-contract.js";import{normalizePath as I}from"./paths.js";export{DEFAULT_RUNTIME_ISOLATION_POLICY,isRuntimeIsolationPolicy,normalizeRuntimeIsolationPolicy,RUNTIME_ISOLATION_POLICIES}from"../../domain/runtime-isolation-contract.js";const R=String;export function normalizeRuntimeIsolationConfig(e,{name:t,suites:d}){if(!e)return h();if(typeof e=="string")return{...h(),defaultPolicy:m(e,`Service "${t}" runtimeIsolation`)};if(!y(e))throw new Error(`Service "${t}" runtimeIsolation must be a policy string or object`);const l=[],f=new Set;for(const o of Object.values(d||{}))for(const r of o||[]){l.push({testType:r.testType,name:r.name});for(const s of r.files||[])f.add(I(s))}const c=e.default==null?E:m(e.default,`Service "${t}" runtimeIsolation.default`),u=[],a=new Set;for(const[o,r]of g(e.suites,`Service "${t}" runtimeIsolation.suites`).entries()){if(!y(r))throw new Error(`Service "${t}" runtimeIsolation.suites entries must be objects`);const s=r,i=R(s.selector||"").trim();if(!i)throw new Error(`Service "${t}" runtimeIsolation.suites[${o.toString()}] requires a selector`);const w=v([i]);if(w.length!==1)throw new Error(`Service "${t}" runtimeIsolation.suites["${i}"] is invalid`);const n=w[0];if(n.kind!=="typed")throw new Error(`Service "${t}" runtimeIsolation.suites["${i}"] must use a typed selector like ui:auth`);if(a.has(n.raw))throw new Error(`Service "${t}" defines duplicate runtimeIsolation.suites selector "${n.raw}"`);if(!l.some($=>P($.testType,$.name,[n])))throw new Error(`Service "${t}" runtimeIsolation.suites selector "${n.raw}" did not match any discovered suite`);a.add(n.raw),u.push({selector:n,policy:m(s.policy||s.runtimeIsolation,`Service "${t}" runtimeIsolation.suites["${n.raw}"].policy`)})}const p=[],S=new Set;for(const[o,r]of g(e.files,`Service "${t}" runtimeIsolation.files`).entries()){if(!y(r))throw new Error(`Service "${t}" runtimeIsolation.files entries must be objects`);const s=r,i=I(T(s.path,`Service "${t}" runtimeIsolation.files[${o.toString()}].path`));if(!i)throw new Error(`Service "${t}" runtimeIsolation.files[${o.toString()}] requires a path`);if(!f.has(i))throw new Error(`Service "${t}" runtimeIsolation.files["${i}"] did not match any discovered test file`);if(S.has(i))throw new Error(`Service "${t}" defines duplicate runtimeIsolation.files path "${i}"`);S.add(i),p.push({path:i,policy:m(s.policy||s.runtimeIsolation,`Service "${t}" runtimeIsolation.files["${i}"].policy`)})}return{defaultPolicy:c,suites:u,files:p,filePolicyByPath:new Map(p.map(o=>[o.path,o.policy]))}}export function resolveRuntimeIsolationPolicy(e,t,d){const l=I(d),f=e.testkit?.fileMetadataByPath?.get(l)||null,c=e.testkit?.runtimeIsolation||h(),u=f?.runtimeIsolation||c.filePolicyByPath.get(l);if(u)return u;for(const a of c.suites)if(P(t.testType,t.name,[a.selector]))return a.policy;return c.defaultPolicy}function h(){return{defaultPolicy:E,suites:[],files:[],filePolicyByPath:new Map}}function g(e,t){if(e==null)return[];if(!Array.isArray(e))throw new Error(`${t} must be an array`);return e}function T(e,t){if(e==null||typeof e=="string")return e;throw new Error(`${t} must be a string`)}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { type ExecutionConfigInput, type NormalizedExecutionConfig } from "./execution-model.js";
|
|
2
|
+
import { type NormalizedBuildConfig, type NormalizedBuildPrepareConfig } from "../../steps/build-config.js";
|
|
3
|
+
import { type NormalizedRuntimeToolchain, type NormalizedToolchainRegistry } from "../../toolchains/index.js";
|
|
4
|
+
export type { NormalizedNodeToolchainConfig, NormalizedRuntimeToolchain, NormalizedToolchainRegistry, } from "../../toolchains/index.js";
|
|
5
|
+
export interface NormalizedRuntimeConfig {
|
|
6
|
+
build: NormalizedBuildConfig | null;
|
|
7
|
+
instances: number;
|
|
8
|
+
maxConcurrentTasks: number;
|
|
9
|
+
prepare: NormalizedBuildPrepareConfig;
|
|
10
|
+
toolchain: NormalizedRuntimeToolchain | null;
|
|
11
|
+
}
|
|
12
|
+
export interface InferredLocalRuntimeConfig {
|
|
13
|
+
baseUrl: string;
|
|
14
|
+
cwd: string;
|
|
15
|
+
env: Record<string, string>;
|
|
16
|
+
port: number;
|
|
17
|
+
readyUrl: string;
|
|
18
|
+
start: string;
|
|
19
|
+
}
|
|
20
|
+
export declare function inferLocalRuntime(productDir: string, cwd: string): InferredLocalRuntimeConfig | undefined;
|
|
21
|
+
export declare function normalizeRuntimeConfig(value: unknown, serviceName: string, toolchains: NormalizedToolchainRegistry | null | undefined): NormalizedRuntimeConfig;
|
|
22
|
+
export declare function normalizeRuntimePrepareConfig(value: unknown, serviceName: string): NormalizedBuildPrepareConfig;
|
|
23
|
+
export declare function normalizeRepoExecution(execution: ExecutionConfigInput | null | undefined): NormalizedExecutionConfig;
|
|
24
|
+
export declare function detectNextApp(cwd: string): boolean;
|
|
25
|
+
export { normalizeConfiguredStep as normalizeTemplateLifecycleStep, normalizeConfiguredSteps as normalizeTemplateLifecycleSteps, normalizeOptionalString, parseModuleSpecifier, } from "../../steps/configured-steps.js";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import n from"fs";import i from"path";import{DEFAULT_FILE_TIMEOUT_SECONDS as m}from"../../domain/file-timeout.js";import{normalizeExecutionConfig as a,normalizeRuntimeMaxConcurrentTasks as l,normalizeRuntimeInstances as f}from"./decode-execution.js";import"./execution-model.js";import{normalizeConfiguredInputs as S,normalizeConfiguredSteps as x}from"../../steps/configured-steps.js";import{buildConfigToPrepare as d,normalizeBuildConfig as h}from"../../steps/build-config.js";import{normalizeRuntimeToolchain as b}from"../../toolchains/index.js";import{resolveServiceCwd as C}from"./paths.js";export function inferLocalRuntime(e,r){const t=C(e,r);if(n.existsSync(t)){if(detectNextApp(t))return{cwd:r,start:"{bin:next} dev -p {port}",port:3e3,baseUrl:"http://127.0.0.1:{port}",readyUrl:"http://127.0.0.1:{port}",env:{}};if(n.existsSync(i.join(t,"cmd","server")))return{cwd:r,start:"go run ./cmd/server",port:3e3,baseUrl:"http://127.0.0.1:{port}",readyUrl:"http://127.0.0.1:{port}/health",env:{}};if(n.existsSync(i.join(t,"package.json"))&&n.existsSync(i.join(t,"src")))return{cwd:r,start:"{bin:tsx} watch src/index.ts",port:3e3,baseUrl:"http://127.0.0.1:{port}",readyUrl:"http://127.0.0.1:{port}/health",env:{}}}}export function normalizeRuntimeConfig(e,r,t){if(!e)return{build:null,instances:1,maxConcurrentTasks:Number.POSITIVE_INFINITY,prepare:{inputs:[],steps:[]},toolchain:null};const o=c(e)?e:{},s=h(o.build,`Service "${r}" runtime.build`),p=normalizeRuntimePrepareConfig(o.prepare,r),u=d(s);return{build:s,instances:f(o.instances??1,`Service "${r}" runtime.instances`),maxConcurrentTasks:l(o.maxConcurrentTasks,`Service "${r}" runtime.maxConcurrentTasks`),prepare:{inputs:[...new Set([...u.inputs,...p.inputs])],steps:[...u.steps,...p.steps]},toolchain:b(o.toolchain,`Service "${r}" runtime.toolchain`,t||{})}}export function normalizeRuntimePrepareConfig(e,r){if(e==null)return{inputs:[],steps:[]};if(!c(e))throw new Error(`Service "${r}" runtime.prepare must be an object`);return{inputs:S(e.inputs,`Service "${r}" runtime.prepare`),steps:x(e.steps,`Service "${r}" runtime.prepare.steps`)}}export function normalizeRepoExecution(e){return e?a(e):a({workers:1,fileTimeoutSeconds:m})}export function detectNextApp(e){return n.existsSync(i.join(e,"next.config.js"))||n.existsSync(i.join(e,"next.config.mjs"))||n.existsSync(i.join(e,"next.config.ts"))}function c(e){return e!==null&&typeof e=="object"}export{normalizeConfiguredStep as normalizeTemplateLifecycleStep,normalizeConfiguredSteps as normalizeTemplateLifecycleSteps,normalizeOptionalString,parseModuleSpecifier}from"../../steps/configured-steps.js";
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import type { EngineId, PublicTestType, RunnerProfileId } from "../../domain/identifiers.js";
|
|
2
|
+
import { type SuiteSelector, type TypedSuiteSelector } from "../../domain/suite-selection.js";
|
|
3
|
+
export interface SelectableSuite {
|
|
4
|
+
engineId: EngineId;
|
|
5
|
+
files: readonly string[];
|
|
6
|
+
name: string;
|
|
7
|
+
profileId: RunnerProfileId;
|
|
8
|
+
testType: PublicTestType;
|
|
9
|
+
}
|
|
10
|
+
export type ServiceSuiteCollection = Readonly<Partial<Record<PublicTestType, null | readonly SelectableSuite[] | undefined>>>;
|
|
11
|
+
export interface SkipConfigNormalizationContext {
|
|
12
|
+
name: string;
|
|
13
|
+
suites: ServiceSuiteCollection;
|
|
14
|
+
}
|
|
15
|
+
export interface NormalizedSkipFileRule {
|
|
16
|
+
path: string;
|
|
17
|
+
reason: string;
|
|
18
|
+
}
|
|
19
|
+
export interface NormalizedSkipSuiteRule {
|
|
20
|
+
reason: string;
|
|
21
|
+
selector: SuiteSelector;
|
|
22
|
+
}
|
|
23
|
+
export interface NormalizedSkipConfig {
|
|
24
|
+
fileReasonByPath: Map<string, string>;
|
|
25
|
+
files: NormalizedSkipFileRule[];
|
|
26
|
+
suites: NormalizedSkipSuiteRule[];
|
|
27
|
+
}
|
|
28
|
+
export interface NormalizedRequirementFileRule {
|
|
29
|
+
locks: string[];
|
|
30
|
+
path: string;
|
|
31
|
+
}
|
|
32
|
+
export interface NormalizedRequirementSuiteRule {
|
|
33
|
+
locks: string[];
|
|
34
|
+
selector: TypedSuiteSelector;
|
|
35
|
+
}
|
|
36
|
+
export interface NormalizedServiceRequirements {
|
|
37
|
+
fileLocksByPath: Map<string, string[]>;
|
|
38
|
+
files: NormalizedRequirementFileRule[];
|
|
39
|
+
suites: NormalizedRequirementSuiteRule[];
|
|
40
|
+
}
|
|
41
|
+
export declare function normalizeSkipReason(reason: unknown, label: string): string;
|
|
42
|
+
export declare function normalizeSkipConfig(value: unknown, { name, suites }: Readonly<SkipConfigNormalizationContext>): NormalizedSkipConfig | undefined;
|
|
43
|
+
export declare function normalizeServiceRequirements(value: unknown, { name, suites }: Readonly<SkipConfigNormalizationContext>): NormalizedServiceRequirements;
|
|
44
|
+
export declare function normalizeRequirementLocks(value: unknown, label: string): string[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{isObjectRecord as y}from"./values.js";import{matchesSuiteSelectors as k,parseSuiteSelectors as q}from"../../domain/suite-selection.js";import{normalizePath as E}from"./paths.js";const S=String;export function normalizeSkipReason(s,e){const u=S(s||"").trim();if(!u)throw new Error(`${e} requires a non-empty reason`);return u}export function normalizeSkipConfig(s,{name:e,suites:u}){if(!s)return;const f=b(s,`Service "${e}" skip`),l=new Set,a=[];for(const t of Object.values(u))for(const i of t||[]){a.push({testType:i.testType,name:i.name});for(const r of i.files)l.add(E(r))}const c=new Set,p=[];for(const t of m(f.files,`Service "${e}" skip.files`)){const i=$(t,`Service "${e}" skip.files entries must be objects`),r=E(typeof i.path=="string"?i.path:void 0),o=normalizeSkipReason(i.reason,`Service "${e}" skip.files["${r}"]`);if(!r)throw new Error(`Service "${e}" skip.files entries require a non-empty path`);if(c.has(r))throw new Error(`Service "${e}" defines duplicate skip.files path "${r}"`);if(!l.has(r))throw new Error(`Service "${e}" skip.files path "${r}" did not match any discovered suite file`);c.add(r),p.push({path:r,reason:o})}const d=m(f.suites,`Service "${e}" skip.suites`).map((t,i)=>{const r=$(t,`Service "${e}" skip.suites entries must be objects`),o=S(r.selector||"").trim();if(!o)throw new Error(`Service "${e}" skip.suites[${String(i)}] requires a non-empty selector`);const v=normalizeSkipReason(r.reason,`Service "${e}" skip.suites["${o}"]`),w=q([o]),g=w[0];if(w.length!==1)throw new Error(`Service "${e}" skip.suites["${o}"] is invalid`);return{selector:g,reason:v}}),h=new Set,n=[];for(const t of d){if(h.has(t.selector.raw))throw new Error(`Service "${e}" defines duplicate skip.suites selector "${t.selector.raw}"`);if(!a.some(r=>k(r.testType,r.name,[t.selector])))throw new Error(`Service "${e}" skip.suites selector "${t.selector.raw}" did not match any discovered suite`);h.add(t.selector.raw),n.push(t)}if(!(p.length===0&&n.length===0))return{files:p,fileReasonByPath:new Map(p.map(t=>[t.path,t.reason])),suites:n}}export function normalizeServiceRequirements(s,{name:e,suites:u}){if(!s)return R();const f=b(s,`Service "${e}" requirements`),l=[],a=new Set;for(const n of Object.values(u))for(const t of n||[]){l.push({testType:t.testType,name:t.name});for(const i of t.files)a.add(i)}const c=[],p=new Set;for(const n of m(f.suites,`Service "${e}" requirements.suites`)){const t=$(n,`Service "${e}" requirements.suites entries must be objects`),i=S(t.selector||"").trim();if(!i)throw new Error(`Service "${e}" requirements.suites entries require a selector`);const r=q([i]),o=r[0];if(r.length!==1)throw new Error(`Service "${e}" requirements.suites["${i}"] is invalid`);if(o.kind!=="typed")throw new Error(`Service "${e}" requirements.suites["${i}"] must use a typed selector like int:health`);if(p.has(o.raw))throw new Error(`Service "${e}" defines duplicate requirements.suites selector "${o.raw}"`);if(!l.some(w=>k(w.testType,w.name,[o])))throw new Error(`Service "${e}" requirements.suites selector "${o.raw}" did not match any discovered suite`);p.add(o.raw),c.push({selector:o,locks:normalizeRequirementLocks(t.locks,`Service "${e}" requirements.suites["${o.raw}"].locks`)})}const d=[],h=new Set;for(const[n,t]of m(f.files,`Service "${e}" requirements.files`).entries()){const i=$(t,`Service "${e}" requirements.files entries must be objects`),r=S(i.path||"").trim();if(!r)throw new Error(`Service "${e}" requirements.files[${String(n)}] requires a path`);if(!a.has(r))throw new Error(`Service "${e}" requirements.files["${r}"] did not match any discovered test file`);if(h.has(r))throw new Error(`Service "${e}" defines duplicate requirements.files path "${r}"`);h.add(r),d.push({path:r,locks:normalizeRequirementLocks(i.locks,`Service "${e}" requirements.files["${r}"].locks`)})}return{suites:c,files:d,fileLocksByPath:new Map(d.map(n=>[n.path,n.locks]))}}export function normalizeRequirementLocks(s,e){const u=Array.isArray(s)?s:s==null?[]:[s],f=new Set,l=[];for(const a of u){const c=S(a||"").trim();if(!c)throw new Error(`${e} entries must be non-empty strings`);f.has(c)||(f.add(c),l.push(c))}return l.sort()}function R(){return{suites:[],files:[],fileLocksByPath:new Map}}function b(s,e){if(!y(s))throw new Error(`${e} must be an object`);return s}function $(s,e){if(!y(s))throw new Error(e);return s}function m(s,e){if(s==null)return[];if(!Array.isArray(s))throw new Error(`${e} must be an array`);return s}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import type { NormalizedLoadedDatabaseConfig, NormalizedLocalServiceConfig, NormalizedServiceConfig } from "./load.js";
|
|
2
|
+
import type { NormalizedRuntimeConfig } from "./runtime.js";
|
|
3
|
+
import type { ServiceSuiteCollection } from "./skip-config.js";
|
|
4
|
+
export interface ServiceConfigValidationInput {
|
|
5
|
+
database: NormalizedLoadedDatabaseConfig | undefined;
|
|
6
|
+
databaseFrom: string | undefined;
|
|
7
|
+
dependsOn: readonly string[];
|
|
8
|
+
local: NormalizedLocalServiceConfig | undefined;
|
|
9
|
+
name: string;
|
|
10
|
+
productDir: string;
|
|
11
|
+
requireLocalRuntime?: boolean;
|
|
12
|
+
runtime: NormalizedRuntimeConfig;
|
|
13
|
+
suites: ServiceSuiteCollection;
|
|
14
|
+
}
|
|
15
|
+
export declare function validateConfigCoverage(configs: readonly NormalizedServiceConfig[]): void;
|
|
16
|
+
export declare function validateServiceConfig({ name, local, database, databaseFrom, runtime, dependsOn, suites, productDir, requireLocalRuntime, }: Readonly<ServiceConfigValidationInput>): void;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{validateConfiguredCollection as f}from"../../steps/configured-steps.js";import{resolveEngineProfile as $}from"../../engines/catalog.js";import{ensureExistingContainedPath as m,ensureExistingPath as h}from"./paths.js";const S=["migrate","seed","verify"];export function validateConfigCoverage(e){const n=new Set(e.map(t=>t.name));for(const t of e){for(const r of t.testkit.dependsOn)if(!n.has(r))throw new Error(`Service "${t.name}" depends on "${r}", but ${r} is not defined`);const s=t.testkit.databaseFrom;if(s&&!n.has(s))throw new Error(`Service "${t.name}" databaseFrom "${s}" is not defined`)}}export function validateServiceConfig({name:e,local:n,database:t,databaseFrom:s,runtime:r,dependsOn:d,suites:p,productDir:a,requireLocalRuntime:l=!0}){const w=Object.entries(p).some(([o,v])=>(v||[]).some(i=>{if(i.testType!==o)throw new Error(`Service "${e}" suite ${o}:${i.name} declares conflicting test type ${i.testType}`);const c=$(i.testType,i.engineId);if(c.id!==i.profileId)throw new Error(`Service "${e}" suite ${i.testType}:${i.name} declares conflicting engine profile ${i.profileId}; expected ${c.id}`);return c.capabilities.applicationRuntime==="required"}));if(l&&w&&!n)throw new Error(`Service "${e}" defines suites whose engine profile requires an application runtime, but no local runtime could be resolved. Add it in testkit.config.ts.`);if(t&&s)throw new Error(`Service "${e}" cannot define both database and databaseFrom`);if(r.instances<1)throw new Error(`Service "${e}" runtime.instances must be a positive integer`);if(r.maxConcurrentTasks<=0)throw new Error(`Service "${e}" runtime.maxConcurrentTasks must be a positive integer when provided`);for(const o of d)if(o===e)throw new Error(`Service "${e}" cannot depend on itself`);if(n?.cwd&&h(a,n.cwd,`Service "${e}" local.cwd`),r.toolchain?.cwd&&m(a,r.toolchain.cwd,`Service "${e}" runtime.toolchain.cwd`),t)for(const o of S)f({productDir:a,label:`Service "${e}" database.template.${o}`,steps:t.template[o]});f({productDir:a,label:`Service "${e}" database.template`,inputs:t?.template.inputs||[]}),f({productDir:a,label:`Service "${e}" runtime.prepare`,inputs:r.prepare.inputs,steps:r.prepare.steps})}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare function isObjectRecord(value: unknown): value is Record<string, unknown>;
|
|
2
|
+
export declare function isObjectLike(value: unknown): value is object;
|
|
3
|
+
export declare function readProperty(value: unknown, key: string): unknown;
|
|
4
|
+
export declare function readObjectRecord(value: unknown): Record<string, unknown>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export function isObjectRecord(t){return typeof t=="object"&&t!==null&&!Array.isArray(t)}export function isObjectLike(t){return typeof t=="object"&&t!==null||typeof t=="function"}export function readProperty(t,r){return isObjectLike(t)?Reflect.get(t,r):void 0}export function readObjectRecord(t){return isObjectRecord(t)?t:{}}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import s from"fs";import n from"path";const h=new Set([".csv",".css",".gql",".graphql",".html",".json",".md",".sql",".txt",".wasm",".yaml",".yml"]),f=String;export function copyTscRuntimeAssets(t){return new Promise(e=>{d(t),e()})}function d(t){if(!t.prepareDir)throw new Error("copyTscRuntimeAssets requires a runtime prepare directory");const e=D(t.args),r=m(o(e.sourceDir,"src"),"sourceDir"),i=m(o(e.outDir,"dist"),"outDir"),y=S(e.extensions),c=n.resolve(t.cwd,r),w=n.resolve(t.prepareDir,i);if(s.existsSync(c))for(const u of p(c)){const a=n.relative(c,u);if(g(a,y))continue;const l=n.join(w,a);s.mkdirSync(n.dirname(l),{recursive:!0}),s.copyFileSync(u,l)}}function D(t){return typeof t!="object"||t===null?{}:{extensions:Reflect.get(t,"extensions"),outDir:Reflect.get(t,"outDir"),sourceDir:Reflect.get(t,"sourceDir")}}function m(t,e){const r=f(o(t,"")).trim();if(!r)throw new Error(`${e} must be a non-empty relative path`);if(n.isAbsolute(r)||r.split(n.sep).includes(".."))throw new Error(`${e} must be a relative path inside the service cwd`);return r}function S(t){if(t==null)return h;if(!Array.isArray(t))throw new Error("extensions must be an array");return new Set(t.map((e,r)=>{const i=f(o(e,"")).trim().toLowerCase();if(!/^\.[a-z0-9]+$/i.test(i))throw new Error(`extensions[${String(r)}] must look like ".json"`);return i}))}function o(t,e){return!!t?t:e}function g(t,e){const r=t.split(n.sep).join("/");return r.includes("/__testkit__/")||r.startsWith("__testkit__/")||/(^|\/)[^/]+\.test\.[^/]+$/i.test(r)||/(^|\/)[^/]+\.spec\.[^/]+$/i.test(r)?!0:!e.has(n.extname(r).toLowerCase())}function*p(t){for(const e of s.readdirSync(t,{withFileTypes:!0})){const r=n.join(t,e.name);if(e.isDirectory()){yield*p(r);continue}e.isFile()&&(yield r)}}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export interface LoadDotenvFilesOptions {
|
|
2
|
+
cwd?: string;
|
|
3
|
+
env?: NodeJS.ProcessEnv;
|
|
4
|
+
files?: string[];
|
|
5
|
+
onlyWhenAllowed?: boolean;
|
|
6
|
+
override?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface PostgresConnectionEnvFallback {
|
|
9
|
+
database?: string;
|
|
10
|
+
host?: string;
|
|
11
|
+
password?: string;
|
|
12
|
+
port?: number | string;
|
|
13
|
+
ssl?: boolean;
|
|
14
|
+
username?: string;
|
|
15
|
+
}
|
|
16
|
+
export interface PostgresConnectionEnvOptions {
|
|
17
|
+
env?: NodeJS.ProcessEnv;
|
|
18
|
+
fallback?: PostgresConnectionEnvFallback;
|
|
19
|
+
}
|
|
20
|
+
export interface PostgresConnectionEnvValue {
|
|
21
|
+
database: string;
|
|
22
|
+
host: string;
|
|
23
|
+
password: string;
|
|
24
|
+
port: number;
|
|
25
|
+
ssl: boolean;
|
|
26
|
+
username: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function isManagedRuntime(env?: NodeJS.ProcessEnv): boolean;
|
|
29
|
+
export declare function managedRuntimeMode(env?: NodeJS.ProcessEnv): null | string;
|
|
30
|
+
export declare function shouldLoadDotenv(env?: NodeJS.ProcessEnv): boolean;
|
|
31
|
+
export declare function loadDotenvFiles(options?: LoadDotenvFilesOptions): {
|
|
32
|
+
loaded: string[];
|
|
33
|
+
};
|
|
34
|
+
export declare function assertLocalDatabaseUrl(env?: NodeJS.ProcessEnv, consumer?: string): void;
|
|
35
|
+
export declare function readPostgresConnectionFromEnv(prefix: string, options?: PostgresConnectionEnvOptions): PostgresConnectionEnvValue;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import u from"fs";import f from"path";import{parseDotenvString as v}from"../../../process/files/dotenv.js";const w=new Set(["localhost","127.0.0.1","::1"]),A=new Set(["postgres:","postgresql:"]),d=[".env",".env.local"],c=String;export function isManagedRuntime(e=process.env){return e.TESTKIT_ACTIVE==="1"}export function managedRuntimeMode(e=process.env){return isManagedRuntime(e)?e.TESTKIT_MODE||"test":null}export function shouldLoadDotenv(e=process.env){return e.NODE_ENV!=="production"&&!isManagedRuntime(e)}export function loadDotenvFiles(e={}){const t=e.env||process.env;if(e.onlyWhenAllowed!==!1&&!shouldLoadDotenv(t))return{loaded:[]};const n=f.resolve(e.cwd||process.cwd()),r=e.override!==!1,o=T(e.files),s=[];for(const p of o){const i=f.resolve(n,p);if(!u.existsSync(i))continue;const m=v(u.readFileSync(i,"utf8"));for(const[l,E]of Object.entries(m))(r||t[l]==null)&&(t[l]=E);s.push(i)}return{loaded:s}}function T(e){if(e===void 0)return d;if(!Array.isArray(e))throw new Error("loadDotenvFiles options.files must be an array of non-empty strings");if(e.length===0)return d;const t=Array.from(e);if(!t.every(n=>typeof n=="string"&&n.trim().length>0))throw new Error("loadDotenvFiles options.files must be an array of non-empty strings");return t}export function assertLocalDatabaseUrl(e=process.env,t="This command"){if(!isManagedRuntime(e))return;const n=e.DATABASE_URL;if(!n)throw new Error(`${t} requires DATABASE_URL when TESTKIT_ACTIVE=1.`);let r;try{r=new URL(n)}catch{throw new Error(`${t} requires a valid DATABASE_URL when TESTKIT_ACTIVE=1.`)}if(!A.has(r.protocol)||!w.has(r.hostname)){const o=`${r.protocol}//${r.hostname}${r.port?`:${r.port}`:""}`;throw new Error(`${t} managed Testkit runtime requires a local PostgreSQL DATABASE_URL. Refusing ${o}.`)}}export function readPostgresConnectionFromEnv(e,t={}){const n=t.env||process.env,r=c(e||"").trim();if(!r)throw new Error("readPostgresConnectionFromEnv requires an environment variable prefix");const o=t.fallback||{};return{host:a(n,`${r}_HOST`,o.host),port:h(n,`${r}_PORT`,o.port),database:a(n,`${r}_NAME`,o.database),username:a(n,`${r}_USER`,o.username),password:a(n,`${r}_PASSWORD`,o.password),ssl:S(n,`${r}_SSL`,o.ssl??!1)}}function a(e,t,n){const r=e[t]?.trim();if(r)return r;const o=c(n??"").trim();if(n!=null&&o)return o;throw new Error(`${t} environment variable is required`)}function h(e,t,n){const o=e[t]?.trim()||(n==null?"":c(n)),s=Number.parseInt(o,10);if(!Number.isInteger(s)||s<=0)throw new Error(`${t} must be a positive integer`);return s}function S(e,t,n){const r=e[t];if(!r)return!!n;switch(r.trim().toLowerCase()){case"1":case"true":case"yes":case"on":return!0;case"0":case"false":case"no":case"off":return!1;default:return!!n}}
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import d from"fs";import t from"path";export async function writeNextRuntimeTsconfig(n={}){const i=n.cwd??n.productDir,o=n.runtimeId;if(!i||!o)throw new Error("writeNextRuntimeTsconfig requires cwd and runtimeId");const u=t.join(i,".next-testkit",o),r=t.join(u,"tsconfig.json"),c=t.dirname(r),e=a=>t.relative(c,a).replaceAll(t.sep,"/"),s=t.join(i,"src"),m=t.join(i,"tests"),p={extends:e(t.join(i,"tsconfig.json")),compilerOptions:{paths:{"@/*":[e(t.join(s,"*"))]}},include:[e(t.join(i,"next-env.d.ts")),`${e(s)}/**/*.ts`,`${e(s)}/**/*.tsx`,`${e(s)}/**/*.mts`,"dist/types/**/*.ts","dist/dev/types/**/*.ts"],exclude:["node_modules",`${e(s)}/**/__testkit__/**`,`${e(m)}/**`,".next/cache",".next/dev"]};await d.promises.mkdir(c,{recursive:!0}),await d.promises.writeFile(r,`${JSON.stringify(p,null,2)}
|
|
2
|
+
`)}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export interface UserHostLocalPostgresActivityLocation {
|
|
2
|
+
readonly homeDirectory: string;
|
|
3
|
+
readonly hostname: string;
|
|
4
|
+
readonly uid: number;
|
|
5
|
+
readonly username: string;
|
|
6
|
+
}
|
|
7
|
+
export interface UserHostLocalPostgresActivityPaths {
|
|
8
|
+
readonly activityDirectory: string;
|
|
9
|
+
readonly productsDirectory: string;
|
|
10
|
+
}
|
|
11
|
+
export interface UserHostLocalPostgresActivityOptions {
|
|
12
|
+
/**
|
|
13
|
+
* Immutable identity captured by an owning caller. Ordinary runtime callers
|
|
14
|
+
* omit this and use the authoritative OS identity at the coordination seam.
|
|
15
|
+
*/
|
|
16
|
+
readonly location?: Readonly<UserHostLocalPostgresActivityLocation>;
|
|
17
|
+
readonly signal?: AbortSignal;
|
|
18
|
+
}
|
|
19
|
+
/** Serializes local Postgres mutations for one canonical product. */
|
|
20
|
+
export declare function withUserHostLocalPostgresActivity<Result>(productDir: string, operation: () => Result | PromiseLike<Result>, options?: Readonly<UserHostLocalPostgresActivityOptions>): Promise<Result>;
|
|
21
|
+
export declare function resolveUserHostLocalPostgresActivityPaths({ homeDirectory, hostname, uid, username, }: Readonly<UserHostLocalPostgresActivityLocation>): UserHostLocalPostgresActivityPaths;
|
|
22
|
+
export declare function readSystemUserHostLocalPostgresActivityLocation(): UserHostLocalPostgresActivityLocation;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{AsyncLocalStorage as p}from"node:async_hooks";import n from"node:fs";import h from"node:os";import c from"node:path";import{withProcessLock as E}from"../process/locks.js";import{hashString as u}from"./naming.js";const S=Object.freeze([".testkit","_locks","local-postgres"]),P=448,m=18,f=new p;export async function withUserHostLocalPostgresActivity(t,o,e={}){$();const r=e.location??readSystemUserHostLocalPostgresActivityLocation(),s=D(r),i=L(s.productsDirectory,t);return f.run(!0,()=>E(i,o,{hostScope:"current-host",signal:e.signal}))}export function resolveUserHostLocalPostgresActivityPaths({homeDirectory:t,hostname:o,uid:e,username:r}){const s=c.resolve(a(t,"home directory")),i=a(o,"hostname").trim().toLowerCase(),l=a(r,"username").trim().toLowerCase();if(!Number.isSafeInteger(e))throw new Error("Local Postgres activity gate requires a valid user ID");const w=e>=0?`uid:${e.toString()}`:`username:${l}`,y=c.join(s,...S,`host-${u(i,24)}-user-${u(w,24)}`);return Object.freeze({activityDirectory:y,productsDirectory:c.join(y,"products")})}export function readSystemUserHostLocalPostgresActivityLocation(){const t=h.userInfo();return{homeDirectory:t.homedir,hostname:h.hostname(),uid:t.uid,username:t.username}}function D(t){const o=k(t.homeDirectory,t.uid),e=resolveUserHostLocalPostgresActivityPaths({...t,homeDirectory:o});let r=o;const s=c.relative(o,e.activityDirectory).split(c.sep);for(const i of s)r=v(c.join(r,i),o,t.uid);return v(e.productsDirectory,o,t.uid),e}function L(t,o){const e=n.realpathSync.native(c.resolve(a(o,"product directory")));return c.join(t,`product-${u(e,24)}.lock`)}function k(t,o){const e=c.resolve(a(t,"home directory"));if(!n.statSync(e).isDirectory())throw new Error(`Cannot use non-directory home for the local Postgres activity gate: ${e}`);const s=n.realpathSync.native(e);return d(s,!1,o),s}function v(t,o,e){let r;try{r=n.lstatSync(t)}catch(i){if(!g(i,"ENOENT"))throw i;try{n.mkdirSync(t,{mode:P})}catch(l){if(!g(l,"EEXIST"))throw l}r=n.lstatSync(t)}if(!r.isDirectory()||r.isSymbolicLink())throw new Error(`Local Postgres activity lock ancestor is not a real directory: ${t}`);const s=n.realpathSync.native(t);return A(s,o),d(s,!0,e),s}function d(t,o,e){if(e<0)return;let r=n.lstatSync(t);if(r.uid!==e)throw new Error(`Local Postgres activity lock ancestor is not owned by the current user: ${t}`);if((r.mode&m)!==0){if(!o)throw new Error(`Local Postgres activity lock ancestor is writable by another user: ${t}`);if(n.chmodSync(t,r.mode&511&~m),r=n.lstatSync(t),(r.mode&m)!==0)throw new Error(`Could not secure local Postgres activity lock ancestor: ${t}`)}}function A(t,o){const e=c.relative(o,t);if(e===".."||e.startsWith(`..${c.sep}`)||c.isAbsolute(e))throw new Error(`Local Postgres activity lock escaped the user home: ${t}`)}function $(){if(f.getStore()!==void 0)throw new Error("Nested local Postgres activity is not allowed")}function a(t,o){if(t.trim().length===0)throw new Error(`Local Postgres activity gate requires a ${o}`);return t}function g(t,o){return typeof t=="object"&&t!==null&&"code"in t&&Reflect.get(t,"code")===o}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { buildDatabaseUrl, type DatabaseConnection } from "./naming.js";
|
|
2
|
+
export { buildDatabaseUrl };
|
|
3
|
+
export declare const ADMIN_QUERY_COMMAND_TIMEOUT_MS = 15000;
|
|
4
|
+
export interface ContainerAdminDatabaseInfrastructure {
|
|
5
|
+
adminDatabase?: string | null;
|
|
6
|
+
containerId: string;
|
|
7
|
+
containerName: string;
|
|
8
|
+
containerPort?: number | null;
|
|
9
|
+
password: string;
|
|
10
|
+
user: string;
|
|
11
|
+
}
|
|
12
|
+
export interface NetworkAdminDatabaseInfrastructure extends DatabaseConnection {
|
|
13
|
+
adminDatabase?: string | null;
|
|
14
|
+
containerName?: null | undefined;
|
|
15
|
+
}
|
|
16
|
+
export type AdminDatabaseInfrastructure = ContainerAdminDatabaseInfrastructure | NetworkAdminDatabaseInfrastructure;
|
|
17
|
+
export interface AdminDatabaseOperationOptions {
|
|
18
|
+
signal?: AbortSignal;
|
|
19
|
+
}
|
|
20
|
+
export interface DrainDatabaseConnectionsOptions extends AdminDatabaseOperationOptions {
|
|
21
|
+
timeoutMs?: number;
|
|
22
|
+
}
|
|
23
|
+
export declare function databaseExists(infra: Readonly<AdminDatabaseInfrastructure>, dbName: string, options?: Readonly<AdminDatabaseOperationOptions>): Promise<boolean>;
|
|
24
|
+
export declare function createEmptyDatabase(infra: Readonly<AdminDatabaseInfrastructure>, dbName: string, options?: Readonly<AdminDatabaseOperationOptions>): Promise<void>;
|
|
25
|
+
export declare function cloneDatabaseFromTemplate(infra: Readonly<AdminDatabaseInfrastructure>, dbName: string, templateDbName: string, options?: Readonly<AdminDatabaseOperationOptions>): Promise<void>;
|
|
26
|
+
export declare function dropDatabaseIfExists(infra: Readonly<AdminDatabaseInfrastructure>, dbName: string, options?: Readonly<AdminDatabaseOperationOptions>): Promise<void>;
|
|
27
|
+
export declare function dropDatabaseWithForceOrDrain(infra: Readonly<AdminDatabaseInfrastructure>, dbName: string, options?: Readonly<AdminDatabaseOperationOptions>): Promise<void>;
|
|
28
|
+
export declare function waitForDatabaseConnectionsToDrain(infra: Readonly<AdminDatabaseInfrastructure>, dbName: string, options?: Readonly<DrainDatabaseConnectionsOptions>): Promise<void>;
|
|
29
|
+
export declare function runAdminQuery(infra: Readonly<AdminDatabaseInfrastructure>, args: readonly string[], options?: Readonly<AdminDatabaseOperationOptions>): Promise<string>;
|
|
30
|
+
export declare function buildAdminQueryCommandArgs(infra: Readonly<AdminDatabaseInfrastructure>, args: readonly string[]): string[];
|
|
31
|
+
export declare function isTransientAdminQueryConnectionError(error: unknown): boolean;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{randomUUID as T}from"node:crypto";import{managedHostProcessInfrastructureError as g,runManagedHostProcess as E}from"../process/index.js";import{LOCAL_ADMIN_DB as u,LOCAL_ADMIN_QUERY_RETRY_INTERVAL_MS as f,LOCAL_ADMIN_QUERY_RETRY_MS as S,LOCAL_DROP_DATABASE_POLL_INTERVAL_MS as O,LOCAL_DROP_DATABASE_TIMEOUT_MS as R}from"./constants.js";import{buildDatabaseUrl as y,escapeIdentifier as c,escapeSqlLiteral as l}from"./naming.js";import{runDockerPsql as b}from"./postgres/index.js";export{y as buildDatabaseUrl};export const ADMIN_QUERY_COMMAND_TIMEOUT_MS=15e3;export async function databaseExists(t,e,o={}){return(await runAdminQuery(t,["-tAc",`SELECT 1 FROM pg_database WHERE datname = '${l(e)}'`],o)).trim()==="1"}export async function createEmptyDatabase(t,e,o={}){await runAdminQuery(t,["-c",`CREATE DATABASE "${c(e)}"`],o)}export async function cloneDatabaseFromTemplate(t,e,o,r={}){await runAdminQuery(t,["-c",`CREATE DATABASE "${c(e)}" TEMPLATE "${c(o)}"`],r)}export async function dropDatabaseIfExists(t,e,o={}){await dropDatabaseWithForceOrDrain(t,e,o)}export async function dropDatabaseWithForceOrDrain(t,e,o={}){const r={signal:o.signal};try{await runAdminQuery(t,["-c",`DROP DATABASE IF EXISTS "${c(e)}" WITH (FORCE)`],r);return}catch(n){if(!M(n))throw n}if(!await databaseExists(t,e,r))return;let s=!1;try{await runAdminQuery(t,["-c",`ALTER DATABASE "${c(e)}" WITH ALLOW_CONNECTIONS false`],r),s=!0,await waitForDatabaseConnectionsToDrain(t,e,{signal:o.signal}),await runAdminQuery(t,["-c",`DROP DATABASE IF EXISTS "${c(e)}"`],r),s=!1}finally{s&&await databaseExists(t,e)&&await runAdminQuery(t,["-c",`ALTER DATABASE "${c(e)}" WITH ALLOW_CONNECTIONS true`]).catch(()=>{})}}export async function waitForDatabaseConnectionsToDrain(t,e,o={}){const r=o.timeoutMs??R,s=Date.now()+r,n={signal:o.signal};for(;;){D(o.signal),await C(t,e,n);const i=await L(t,e,n);if(i===0)return;if(Date.now()>=s)throw new Error(`Timed out waiting for database "${e}" connections to close (${String(i)} remaining)`);await A(O,o.signal)}}export async function runAdminQuery(t,e,o={}){const r=buildAdminQueryCommandArgs(t,e),s=Date.now();for(;;){D(o.signal);try{let n;if(_(t)){const a=`testkit-admin-${T()}`,d=await E({args:["exec","-e",`PGAPPNAME=${a}`,...r.slice(1)],cwd:process.cwd(),displayLabel:`Docker Postgres admin query for ${t.containerName}`,env:process.env,executable:"docker",signal:o.signal,timeoutMs:ADMIN_QUERY_COMMAND_TIMEOUT_MS});d.cancelled&&await E({args:buildAdminQueryCommandArgs(t,["-tAc",`SELECT pg_terminate_backend(pid) FROM pg_stat_activity WHERE application_name = '${a}'`]),cwd:process.cwd(),displayLabel:`Docker Postgres admin query cancellation for ${t.containerName}`,env:process.env,executable:"docker",timeoutMs:ADMIN_QUERY_COMMAND_TIMEOUT_MS});const m=g(`Docker Postgres admin query for ${t.containerName}`,d);if(m)throw m;n={exitCode:d.exitCode,stderr:d.stderr,stdout:d.stdout}}else{const a={...process.env,PGPASSWORD:t.password,...t.sslMode?{PGSSLMODE:t.sslMode}:{}};n=await b({args:r,env:a,timeoutMs:ADMIN_QUERY_COMMAND_TIMEOUT_MS,connection:{host:t.host,port:t.port,user:t.user,password:t.password,database:t.adminDatabase||u,sslMode:t.sslMode},signal:o.signal})}if(n.exitCode!=null&&n.exitCode!==0){const a=new Error(n.shortMessage||n.stderr||n.stdout||`psql failed with exit code ${String(n.exitCode)}`);throw Reflect.set(a,"stdout",n.stdout||""),Reflect.set(a,"stderr",n.stderr||""),a}const{stdout:i}=n;return i}catch(n){if(Date.now()-s>=S||!isTransientAdminQueryConnectionError(n))throw n;await A(f,o.signal)}}}export function buildAdminQueryCommandArgs(t,e){return _(t)?["exec","-e",`PGPASSWORD=${t.password}`,t.containerId,"psql","-v","ON_ERROR_STOP=1","-U",t.user,"-d",t.adminDatabase||u,"-p",String(t.containerPort||5432),...e]:["-v","ON_ERROR_STOP=1","-h",t.host,"-p",String(t.port),"-U",t.user,"-d",t.adminDatabase||u,...e]}export function isTransientAdminQueryConnectionError(t){const e=w(t);return e.includes('connection to server on socket "/var/run/postgresql/.s.PGSQL.5432" failed')||e.includes("No such file or directory")||e.includes("the database system is starting up")||e.includes("could not connect to server")||e.includes("connection refused")||e.includes("Connection timed out")||e.includes("connection timed out")||e.includes("Operation timed out")||e.includes("i/o timeout")||e.includes("server closed the connection unexpectedly")||e.includes("terminating connection due to administrator command")}async function C(t,e,o){await runAdminQuery(t,["-c",["SELECT pg_terminate_backend(pid)","FROM pg_stat_activity",`WHERE datname = '${l(e)}' AND pid <> pg_backend_pid();`].join(" ")],o)}async function L(t,e,o){const r=await runAdminQuery(t,["-tAc",["SELECT COUNT(*)","FROM pg_stat_activity",`WHERE datname = '${l(e)}' AND pid <> pg_backend_pid();`].join(" ")],o);return Number.parseInt(r.trim(),10)||0}function M(t){const e=w(t);return e.includes('syntax error at or near "WITH"')||e.includes('option "force"')}function A(t,e){return new Promise((o,r)=>{if(e?.aborted){r(p(e));return}const s=setTimeout(n,t);e?.addEventListener("abort",i,{once:!0});function n(){e?.removeEventListener("abort",i),o()}function i(){clearTimeout(s),r(e?p(e):new Error("Database administration aborted"))}})}function D(t){if(t?.aborted)throw p(t)}function p(t){return t.reason instanceof Error?t.reason:new Error("Database administration aborted",{cause:t.reason})}function w(t){return["shortMessage","stderr","stdout","message"].map(e=>P(x(t,e)||"")).join(`
|
|
2
|
+
`)}function x(t,e){if(!(typeof t!="object"&&typeof t!="function"||t===null))return Reflect.get(t,e)}function P(t){if(typeof t=="symbol")throw new TypeError("Cannot convert a Symbol value to a string");return String(t)}function _(t){return!!t.containerName}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { type TerminalRunDatabaseCleanupAuthority } from "../process/runs/ownership.js";
|
|
2
|
+
import { type ManagedDockerContainer, type ManagedDockerVolume } from "./docker.js";
|
|
3
|
+
import { type ProductLifecycleFence } from "../process/lifecycle-fence.js";
|
|
4
|
+
export interface LocalPostgresCleanupOptions {
|
|
5
|
+
dryRun?: unknown;
|
|
6
|
+
productDir?: string | null;
|
|
7
|
+
stopIdle?: unknown;
|
|
8
|
+
}
|
|
9
|
+
interface ContainerCleanupEntry extends ManagedDockerContainer {
|
|
10
|
+
action?: "remove" | "skip" | "stop";
|
|
11
|
+
intendedAction?: "remove" | "stop";
|
|
12
|
+
reason: string;
|
|
13
|
+
resourceType?: undefined;
|
|
14
|
+
selectionReason?: string;
|
|
15
|
+
}
|
|
16
|
+
interface VolumeCleanupEntry extends ManagedDockerVolume {
|
|
17
|
+
action?: "remove" | "skip";
|
|
18
|
+
intendedAction?: "remove";
|
|
19
|
+
reason: string;
|
|
20
|
+
resourceType: "volume";
|
|
21
|
+
selectionReason?: string;
|
|
22
|
+
}
|
|
23
|
+
export type DatabaseResourceCleanupEntry = ContainerCleanupEntry | VolumeCleanupEntry;
|
|
24
|
+
export interface LocalPostgresCleanupResult {
|
|
25
|
+
kept: DatabaseResourceCleanupEntry[];
|
|
26
|
+
removed: DatabaseResourceCleanupEntry[];
|
|
27
|
+
skipped: DatabaseResourceCleanupEntry[];
|
|
28
|
+
stopped: ContainerCleanupEntry[];
|
|
29
|
+
targets: DatabaseResourceCleanupEntry[];
|
|
30
|
+
}
|
|
31
|
+
export declare function cleanupLocalPostgresDockerResources(options?: Readonly<LocalPostgresCleanupOptions>): Promise<LocalPostgresCleanupResult>;
|
|
32
|
+
export declare function destroyLocalPostgresDockerResources(fence: Readonly<ProductLifecycleFence>, options?: Readonly<Omit<LocalPostgresCleanupOptions, "productDir">>): Promise<LocalPostgresCleanupResult>;
|
|
33
|
+
export declare function cleanupTerminalRunLocalPostgresDockerResources(fence: Readonly<ProductLifecycleFence>, terminalRunAuthority: Readonly<TerminalRunDatabaseCleanupAuthority>, options?: Readonly<Omit<LocalPostgresCleanupOptions, "productDir">>): Promise<LocalPostgresCleanupResult>;
|
|
34
|
+
export declare function assertTerminalRunDatabaseCleanupAuthority(fence: Readonly<ProductLifecycleFence>, terminalRunAuthority: Readonly<TerminalRunDatabaseCleanupAuthority>): void;
|
|
35
|
+
export declare function hasActiveProductRuntime(productDir: string): boolean;
|
|
36
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{hasActiveRunManifest as A,hasActiveRunManifestWithTerminalAuthority as v}from"../process/runs/ownership.js";import{observeProcessCreationIdentity as l}from"../process/index.js";import{TESTKIT_PRODUCT_ID_LABEL as y,TESTKIT_RESOURCE_KIND_LABEL as g,TESTKIT_SCOPE_LABEL as k,buildProductIdentity as T,listManagedDockerContainers as L,listManagedDockerVolumes as P,removeDockerContainer as C,removeDockerVolume as w,stopDockerContainer as E}from"./docker.js";import{requireProductLifecycleFenceProductDir as i}from"../process/lifecycle-fence.js";import{hasRemainingLocalArtifacts as D,readOwnedStateValues as R}from"./state.js";export async function cleanupLocalPostgresDockerResources(e={}){return f({...e,force:!1})}export async function destroyLocalPostgresDockerResources(e,r={}){const t=i(e);return f({...r,assertMutationAuthority:()=>{if(i(e)!==t)throw new Error("Database destroy lifecycle authority changed products")},force:!0,productDir:t})}export async function cleanupTerminalRunLocalPostgresDockerResources(e,r,t={}){const s=i(e),a=()=>{assertTerminalRunDatabaseCleanupAuthority(e,r)};return a(),f({...t,assertMutationAuthority:a,force:!1,productDir:s,terminalRunAuthority:r})}export function assertTerminalRunDatabaseCleanupAuthority(e,r){const t=i(e);if(v(t,l,r))throw new Error(`Cannot clean terminal Testkit run ${r.runId} database resources while another product run is active or its terminal ownership is invalid`)}async function f(e){e.assertMutationAuthority?.();const r=T(e.productDir||process.cwd()),t=await L(r),s=await P(r),a=[],u=[],d=[],c=[],h=[];for(const o of t){if(!I(o))continue;const n=M(o,r,e);n.action==="remove"?a.push({...o,action:"remove",reason:n.reason}):n.action==="stop"?a.push({...o,action:"stop",reason:n.reason}):n.reason&&u.push({...o,reason:n.reason})}for(const o of s){if(!S(o))continue;const n=_(o,r,e);n.action==="remove"?a.push({...o,action:"remove",reason:n.reason,resourceType:"volume"}):n.reason&&u.push({...o,reason:n.reason,resourceType:"volume"})}if(!e.dryRun)for(const o of a)e.assertMutationAuthority?.(),o.action==="stop"?await E(o.id,o.name)?h.push(o):c.push(p(o)):o.resourceType==="volume"?await w(o.name,o)?d.push(o):c.push(p(o)):await C(o.id,o.name)?d.push(o):c.push(p(o));return{removed:e.dryRun?[]:d,stopped:e.dryRun?[]:h,skipped:e.dryRun?[]:c,targets:a,kept:u}}function p(e){return e.resourceType==="volume"?{...e,action:"skip",intendedAction:"remove",reason:"resource-changed-or-disappeared-before-mutation",selectionReason:e.reason}:{...e,action:"skip",intendedAction:e.action==="stop"?"stop":"remove",reason:"resource-changed-or-disappeared-before-mutation",selectionReason:e.reason}}function M(e,r,t){return e.labels[y]!==r.id?{action:"keep",reason:"different-product"}:t.force?{action:"remove",reason:"destroy-current-product"}:m(r.dir,t)?{action:"keep",reason:"current-product-active"}:D(r.dir)?R(r.dir,["container_name","local_container_name"]).has(e.name)?b(e,r.dir,t)?{action:"stop",reason:"current-product-idle"}:{action:"keep",reason:"current-product-referenced"}:{action:"remove",reason:"current-product-unreferenced"}:{action:"remove",reason:"current-product-no-local-artifacts"}}function _(e,r,t){return e.labels[y]!==r.id?{action:"keep",reason:"different-product"}:t.force?{action:"remove",reason:"destroy-current-product"}:m(r.dir,t)?{action:"keep",reason:"current-product-active"}:D(r.dir)?R(r.dir,["volume_name"]).has(e.name)?{action:"keep",reason:"current-product-referenced"}:{action:"remove",reason:"current-product-unreferenced"}:{action:"remove",reason:"current-product-no-local-artifacts"}}function b(e,r,t){return!!(t.stopIdle&&e.running&&!m(r,t))}function I(e){const{labels:r}=e;return r[g]==="postgres-container"&&r[k]==="local-postgres"}function S(e){const{labels:r}=e;return r[g]==="postgres-volume"&&r[k]==="local-postgres"}export function hasActiveProductRuntime(e){return A(e,l)}function m(e,r){return r.terminalRunAuthority===void 0?hasActiveProductRuntime(e):v(e,l,r.terminalRunAuthority)}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import type { OwnedPostgresContainerRoute } from "../domain/postgres-route.js";
|
|
2
|
+
import type { SetupOperationHandle, SetupOperationRegistry } from "../evidence/setup-progress.js";
|
|
3
|
+
import { type ConfiguredStepReporter, type ConfiguredStepServiceConfig } from "../steps/run.js";
|
|
4
|
+
import { type ToolchainEnvironment } from "../toolchains/index.js";
|
|
5
|
+
import { type NormalizedConfiguredStep } from "../steps/configured-steps.js";
|
|
6
|
+
export interface ConfiguredStepCompletion {
|
|
7
|
+
index: number;
|
|
8
|
+
label: string;
|
|
9
|
+
step: NormalizedConfiguredStep;
|
|
10
|
+
stepNumber: number;
|
|
11
|
+
}
|
|
12
|
+
export type ConfiguredStepCompletionHandler = (completion: Readonly<ConfiguredStepCompletion>) => unknown;
|
|
13
|
+
export interface RunConfiguredStepsOptions {
|
|
14
|
+
afterStep?: ConfiguredStepCompletionHandler | null;
|
|
15
|
+
config: ConfiguredStepServiceConfig;
|
|
16
|
+
env: Readonly<ToolchainEnvironment>;
|
|
17
|
+
labelPrefix: string;
|
|
18
|
+
ownedContainer?: OwnedPostgresContainerRoute | null;
|
|
19
|
+
parentOperation?: SetupOperationHandle | string | null;
|
|
20
|
+
reporter?: ConfiguredStepReporter | null;
|
|
21
|
+
setupRegistry?: SetupOperationRegistry | null;
|
|
22
|
+
signal?: AbortSignal;
|
|
23
|
+
startIndex?: number;
|
|
24
|
+
stepTimeoutMs?: number;
|
|
25
|
+
steps?: readonly NormalizedConfiguredStep[];
|
|
26
|
+
}
|
|
27
|
+
export declare function runConfiguredSteps({ config, steps, env, labelPrefix, ownedContainer, reporter, setupRegistry, parentOperation, startIndex, afterStep, signal, stepTimeoutMs: configuredStepTimeoutMs, }: Readonly<RunConfiguredStepsOptions>): Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{runDockerPsql as E}from"./postgres/index.js";import{awaitCapturedResult as _}from"../evidence/step-output.js";import{applySetupNodeOptions as M,runConfiguredStep as D}from"../steps/run.js";import{announceResolvedToolchain as R,applyToolchainEnv as y,resolveConfiguredToolchain as A}from"../toolchains/index.js";import{resolveConfiguredCwd as P,resolveConfiguredPath as N,summarizeConfiguredStep as m}from"../steps/configured-steps.js";const U=3600*1e3;export async function runConfiguredSteps({config:e,steps:n=[],env:S,labelPrefix:O,ownedContainer:f=null,reporter:s=null,setupRegistry:o=null,parentOperation:g=null,startIndex:p=0,afterStep:c=null,signal:h,stepTimeoutMs:C}){if(n.length===0)return;const b=L(C),a=await A(e,{signal:h});await R(e,a,s);for(const[v,t]of n.entries()){const w=p+v+1,r=`${O}:${e.name}:${String(w)}`,u=o?.start({config:e,stage:r,kind:"setup-step",summary:m(t),parentId:$(g)});s?.phaseStarted?.(r);try{const i=y(M(S),a),l={livePrefix:`[${e.runtimeLabel||e.name}:${e.name}]`,liveWriter:s?.outputMode==="debug"?d=>{s.writeDebugLine?.(d)}:null,logRecord:u?._logRecord||null};if(t.kind==="sql-file"){const d=await E({databaseUrl:i.DATABASE_URL,args:[i.DATABASE_URL,"-v","ON_ERROR_STOP=1","-X","-f",N(e.productDir,t.cwd,t.path)],cwd:P(e.productDir,t.cwd),env:i,ownedContainer:f});_(d,l)}else await D(e,t,i,a,{...l,ownedContainer:f,signal:h,timeoutMs:b});const T=u&&o?o.finish(u,{status:"passed",summary:m(t)}):null;T&&s?.setupOperationFinished?.(T)}catch(i){const l=u&&o?o.finish(u,{status:"failed",summary:m(t),error:I(i)}):null;throw l&&s?.setupOperationFinished?.(l),i}c&&await c({step:t,index:p+v,stepNumber:w,label:r})}}function $(e){return typeof e=="string"?e||null:e?.id||null}function I(e){return(typeof e!="object"||e===null)&&typeof e!="function"?e:Reflect.get(e,"message")||e}function L(e){const n=e??U;if(!Number.isSafeInteger(n)||n<=0)throw new Error("Configured step timeout must be a positive safe integer in milliseconds");return n}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare const LOCAL_IMAGE = "pgvector/pgvector:pg16";
|
|
2
|
+
export declare const LOCAL_USER = "testkit";
|
|
3
|
+
export declare const LOCAL_PASSWORD = "testkit";
|
|
4
|
+
export declare const LOCAL_ADMIN_DB = "postgres";
|
|
5
|
+
export declare const LOCAL_MAX_CONNECTIONS = 200;
|
|
6
|
+
export declare const LOCAL_READY_TIMEOUT_MS = 60000;
|
|
7
|
+
export declare const LOCAL_POLL_INTERVAL_MS = 1000;
|
|
8
|
+
export declare const LOCAL_ADMIN_QUERY_RETRY_MS = 15000;
|
|
9
|
+
export declare const LOCAL_ADMIN_QUERY_RETRY_INTERVAL_MS = 250;
|
|
10
|
+
export declare const LOCAL_DROP_DATABASE_TIMEOUT_MS = 15000;
|
|
11
|
+
export declare const LOCAL_DROP_DATABASE_POLL_INTERVAL_MS = 250;
|