@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 @@
|
|
|
1
|
+
export const LOCAL_IMAGE="pgvector/pgvector:pg16",LOCAL_USER="testkit",LOCAL_PASSWORD="testkit",LOCAL_ADMIN_DB="postgres",LOCAL_MAX_CONNECTIONS=200,LOCAL_READY_TIMEOUT_MS=6e4,LOCAL_POLL_INTERVAL_MS=1e3,LOCAL_ADMIN_QUERY_RETRY_MS=15e3,LOCAL_ADMIN_QUERY_RETRY_INTERVAL_MS=250,LOCAL_DROP_DATABASE_TIMEOUT_MS=15e3,LOCAL_DROP_DATABASE_POLL_INTERVAL_MS=250;
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { ManagedProcessResult } from "../process/index.js";
|
|
2
|
+
export declare const TESTKIT_MANAGED_LABEL = "com.elench.testkit.managed";
|
|
3
|
+
export declare const TESTKIT_RESOURCE_KIND_LABEL = "com.elench.testkit.resource.kind";
|
|
4
|
+
export declare const TESTKIT_RESOURCE_NAME_LABEL = "com.elench.testkit.resource.name";
|
|
5
|
+
export declare const TESTKIT_PRODUCT_DIR_LABEL = "com.elench.testkit.product.dir";
|
|
6
|
+
export declare const TESTKIT_PRODUCT_ID_LABEL = "com.elench.testkit.product.id";
|
|
7
|
+
export declare const TESTKIT_SCOPE_LABEL = "com.elench.testkit.scope";
|
|
8
|
+
export declare const TESTKIT_CACHE_POLICY_LABEL = "com.elench.testkit.cache.policy";
|
|
9
|
+
export declare const TESTKIT_CREATED_AT_LABEL = "com.elench.testkit.created-at";
|
|
10
|
+
export declare const TESTKIT_RESOURCE_GENERATION_LABEL = "com.elench.testkit.resource.generation";
|
|
11
|
+
export declare const DOCKER_OWNERSHIP_OPERATION_TIMEOUTS_MS: Readonly<{
|
|
12
|
+
inspect: 30000;
|
|
13
|
+
list: 30000;
|
|
14
|
+
remove: 120000;
|
|
15
|
+
stop: 30000;
|
|
16
|
+
}>;
|
|
17
|
+
export type DockerLabels = Readonly<Record<string, string>>;
|
|
18
|
+
export interface ProductIdentity {
|
|
19
|
+
dir: string;
|
|
20
|
+
id: string;
|
|
21
|
+
}
|
|
22
|
+
export interface DockerOwnershipOperationOptions {
|
|
23
|
+
signal?: AbortSignal;
|
|
24
|
+
}
|
|
25
|
+
export interface DockerResourceIdentity {
|
|
26
|
+
cachePolicy?: null | string;
|
|
27
|
+
createdAt?: null | string;
|
|
28
|
+
generation: string;
|
|
29
|
+
kind: string;
|
|
30
|
+
name: string;
|
|
31
|
+
scope?: null | string;
|
|
32
|
+
}
|
|
33
|
+
export interface ManagedDockerContainer {
|
|
34
|
+
createdAt: null | string;
|
|
35
|
+
id: string;
|
|
36
|
+
image: string;
|
|
37
|
+
labels: DockerLabels;
|
|
38
|
+
name: string;
|
|
39
|
+
running: boolean;
|
|
40
|
+
shortId: string;
|
|
41
|
+
status: string;
|
|
42
|
+
}
|
|
43
|
+
export interface ManagedDockerVolume {
|
|
44
|
+
createdAt: null | string;
|
|
45
|
+
driver: string;
|
|
46
|
+
labels: DockerLabels;
|
|
47
|
+
mountpoint: string;
|
|
48
|
+
name: string;
|
|
49
|
+
}
|
|
50
|
+
type DockerInspectRecord = Record<string, unknown>;
|
|
51
|
+
export declare function buildProductIdentity(productDir: string): ProductIdentity;
|
|
52
|
+
export declare function buildDockerResourceLabels(productDir: string, resource: Readonly<DockerResourceIdentity>): DockerLabels;
|
|
53
|
+
export declare function dockerLabelArgs(labels: Readonly<Record<string, unknown>>): string[];
|
|
54
|
+
export declare function inspectDockerContainer(containerRef: string, options?: Readonly<DockerOwnershipOperationOptions>): Promise<DockerInspectRecord | null>;
|
|
55
|
+
export declare function listManagedDockerContainers(product: Readonly<ProductIdentity>): Promise<ManagedDockerContainer[]>;
|
|
56
|
+
export declare function inspectDockerVolume(volumeRef: string, options?: Readonly<DockerOwnershipOperationOptions>): Promise<DockerInspectRecord | null>;
|
|
57
|
+
export declare function listManagedDockerVolumes(product: Readonly<ProductIdentity>): Promise<ManagedDockerVolume[]>;
|
|
58
|
+
export declare function removeDockerContainer(containerRef: string, displayName?: string): Promise<boolean>;
|
|
59
|
+
export declare function removeDockerVolume(volumeRef: string, expected: Readonly<ManagedDockerVolume>, options?: Readonly<DockerOwnershipOperationOptions>): Promise<boolean>;
|
|
60
|
+
export declare function sameDockerVolumeGeneration(current: Readonly<ManagedDockerVolume>, expected: Readonly<ManagedDockerVolume>): boolean;
|
|
61
|
+
export declare function stopDockerContainer(containerRef: string, displayName?: string): Promise<boolean>;
|
|
62
|
+
export declare function normalizeDockerContainerInspect(value: unknown): ManagedDockerContainer | null;
|
|
63
|
+
export declare function normalizeDockerVolumeInspect(value: unknown): ManagedDockerVolume | null;
|
|
64
|
+
export declare function runDockerCommand(args: readonly string[], displayLabel: string, timeoutMs: number, signal?: AbortSignal): Promise<ManagedProcessResult>;
|
|
65
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import b from"crypto";import D from"fs";import C from"path";import{managedHostProcessInfrastructureError as T,runManagedHostProcess as w}from"../process/index.js";export const TESTKIT_MANAGED_LABEL="com.elench.testkit.managed",TESTKIT_RESOURCE_KIND_LABEL="com.elench.testkit.resource.kind",TESTKIT_RESOURCE_NAME_LABEL="com.elench.testkit.resource.name",TESTKIT_PRODUCT_DIR_LABEL="com.elench.testkit.product.dir",TESTKIT_PRODUCT_ID_LABEL="com.elench.testkit.product.id",TESTKIT_SCOPE_LABEL="com.elench.testkit.scope",TESTKIT_CACHE_POLICY_LABEL="com.elench.testkit.cache.policy",TESTKIT_CREATED_AT_LABEL="com.elench.testkit.created-at",TESTKIT_RESOURCE_GENERATION_LABEL="com.elench.testkit.resource.generation";const I=4e3,d=String;export const DOCKER_OWNERSHIP_OPERATION_TIMEOUTS_MS=Object.freeze({inspect:3e4,list:3e4,remove:12e4,stop:3e4});export function buildProductIdentity(e){const t=A(e);return{dir:t,id:O(t,24)}}export function buildDockerResourceLabels(e,t){if(!t.generation)throw new Error("Docker resource generation must be non-empty");const r=buildProductIdentity(e);return{[TESTKIT_MANAGED_LABEL]:"true",[TESTKIT_RESOURCE_KIND_LABEL]:t.kind,[TESTKIT_RESOURCE_NAME_LABEL]:t.name,[TESTKIT_PRODUCT_DIR_LABEL]:r.dir,[TESTKIT_PRODUCT_ID_LABEL]:r.id,[TESTKIT_SCOPE_LABEL]:t.scope||t.kind,[TESTKIT_CACHE_POLICY_LABEL]:t.cachePolicy||"ephemeral",[TESTKIT_CREATED_AT_LABEL]:t.createdAt||new Date().toISOString(),[TESTKIT_RESOURCE_GENERATION_LABEL]:t.generation}}export function dockerLabelArgs(e){return Object.entries(e).flatMap(([t,r])=>["--label",`${t}=${d(r)}`])}export async function inspectDockerContainer(e,t={}){const r=`Docker container inspect for ${e}`,n=await runDockerCommand(["inspect",e],r,DOCKER_OWNERSHIP_OPERATION_TIMEOUTS_MS.inspect,t.signal);if(n.exitCode!==0){if(p(n))return null;throw s(r,n)}return m(n,r,"Id")}export async function listManagedDockerContainers(e){return y(["--filter",`label=${TESTKIT_MANAGED_LABEL}=true`,"--filter",`label=${TESTKIT_PRODUCT_ID_LABEL}=${e.id}`])}export async function inspectDockerVolume(e,t={}){const r=`Docker volume inspect for ${e}`,n=await runDockerCommand(["volume","inspect",e],r,DOCKER_OWNERSHIP_OPERATION_TIMEOUTS_MS.inspect,t.signal);if(n.exitCode!==0){if(E(n))return null;throw s(r,n)}return m(n,r,"Name")}export async function listManagedDockerVolumes(e){return _(["--filter",`label=${TESTKIT_MANAGED_LABEL}=true`,"--filter",`label=${TESTKIT_PRODUCT_ID_LABEL}=${e.id}`])}export async function removeDockerContainer(e,t=e){const r=`Docker container removal for ${t}`,n=await runDockerCommand(["rm","-f","-v",e],r,DOCKER_OWNERSHIP_OPERATION_TIMEOUTS_MS.remove);if(n.exitCode===0)return n.stdout.trim().length>0;if(p(n))return!1;throw s(r,n)}export async function removeDockerVolume(e,t,r={}){const n=normalizeDockerVolumeInspect(await inspectDockerVolume(e,r));if(n===null||!sameDockerVolumeGeneration(n,t))return!1;const o=`Docker volume removal for ${e}`,c=await runDockerCommand(["volume","rm","-f",e],o,DOCKER_OWNERSHIP_OPERATION_TIMEOUTS_MS.remove,r.signal);if(c.exitCode===0)return!0;if(E(c))return!1;throw s(o,c)}export function sameDockerVolumeGeneration(e,t){return e.name===t.name&&e.createdAt===t.createdAt&&e.driver===t.driver&&e.mountpoint===t.mountpoint&&x(e.labels,t.labels)}export async function stopDockerContainer(e,t=e){const r=`Docker container stop for ${t}`,n=await runDockerCommand(["stop","--time","5",e],r,DOCKER_OWNERSHIP_OPERATION_TIMEOUTS_MS.stop);if(n.exitCode===0)return!0;if(p(n))return!1;throw s(r,n)}async function y(e){const t="Docker container inventory",r=await runDockerCommand(["ps","-a","--format","{{.ID}}",...e],t,DOCKER_OWNERSHIP_OPERATION_TIMEOUTS_MS.list);if(r.exitCode!==0)throw s(t,r);const{stdout:n}=r,o=n.split(/\r?\n/).map(i=>i.trim()).filter(Boolean);if(o.length===0)return[];const c=[];for(const i of o){const f=await inspectDockerContainer(i),u=normalizeDockerContainerInspect(f);u&&c.push(u)}return c}async function _(e){const t="Docker volume inventory",r=await runDockerCommand(["volume","ls","-q",...e],t,DOCKER_OWNERSHIP_OPERATION_TIMEOUTS_MS.list);if(r.exitCode!==0)throw s(t,r);const{stdout:n}=r,o=n.split(/\r?\n/).map(i=>i.trim()).filter(Boolean);if(o.length===0)return[];const c=[];for(const i of o){const f=await inspectDockerVolume(i),u=normalizeDockerVolumeInspect(f);u&&c.push(u)}return c}export function normalizeDockerContainerInspect(e){const t=a(e);if(!t||typeof t.Id!="string"||!t.Id)return null;const r=a(t.Config),n=a(t.State),o=d(t.Name||"").replace(/^\//,"");return{id:t.Id,shortId:t.Id.slice(0,12),name:o,image:l(r?.Image)||"",createdAt:l(t.Created),running:!!n?.Running,status:l(n?.Status)||"unknown",labels:h(r?.Labels)}}export function normalizeDockerVolumeInspect(e){const t=a(e);return!t||typeof t.Name!="string"||!t.Name?null:{name:t.Name,driver:l(t.Driver)||"",mountpoint:l(t.Mountpoint)||"",labels:h(t.Labels),createdAt:l(t.CreatedAt)}}function m(e,t,r){let n;try{n=JSON.parse(e.stdout)}catch(i){throw g(t,r,e,i)}const o=Array.isArray(n)?n:null,c=o?a(o[0]):null;if(o?.length!==1||!c||typeof c[r]!="string"||c[r].length===0)throw g(t,r,e);return c}function h(e){const t={},r=a(e);if(!r)return t;for(const[n,o]of Object.entries(r))typeof o=="string"&&(t[n]=o);return t}function x(e,t){const r=Object.entries(e).sort(([o],[c])=>o.localeCompare(c)),n=Object.entries(t).sort(([o],[c])=>o.localeCompare(c));return r.length===n.length&&r.every(([o,c],i)=>n[i]?.[0]===o&&n[i]?.[1]===c)}function a(e){return k(e)?e:null}function k(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function l(e){return typeof e=="string"&&e?e:null}function L(e,t){return k(e)&&e.code===t}function A(e){const t=C.resolve(e||process.cwd());try{return D.realpathSync.native(t)}catch(r){if(L(r,"ENOENT"))return t;throw r}}function O(e,t=24){return b.createHash("sha256").update(d(e)).digest("hex").slice(0,t)}export async function runDockerCommand(e,t,r,n){const o=await w({args:e,cwd:process.cwd(),displayLabel:t,env:process.env,executable:"docker",signal:n,timeoutMs:r}),c=T(t,o);if(c)throw c;return o}function p(e){const t=`${e.stderr}
|
|
2
|
+
${e.stdout}`.toLowerCase();return/\bno such (?:container|object)\b/u.test(t)}function E(e){const t=`${e.stderr}
|
|
3
|
+
${e.stdout}`.toLowerCase();return/\bno such (?:object|volume)\b/u.test(t)}function s(e,t){const r=[t.stderr,t.stdout].filter(Boolean).join(`
|
|
4
|
+
`).trim(),n=r?`
|
|
5
|
+
${r.slice(-I)}`:"",o=new Error(`${e} exited with code ${String(t.exitCode)}${n}`);return Object.defineProperty(o,"result",{enumerable:!1,value:Object.freeze({...t})}),o}function g(e,t,r,n){const o=new Error(`${e} returned malformed Docker inspect output; expected exactly one record with a non-empty ${t}`,n===void 0?void 0:{cause:n});return Object.defineProperty(o,"result",{enumerable:!1,value:Object.freeze({...r})}),o}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
type UnknownRecord = Record<string, unknown>;
|
|
2
|
+
export interface DrizzleConfigOptions {
|
|
3
|
+
consumer?: string;
|
|
4
|
+
cwd?: string;
|
|
5
|
+
env?: NodeJS.ProcessEnv;
|
|
6
|
+
files?: string[];
|
|
7
|
+
onlyWhenAllowed?: boolean;
|
|
8
|
+
override?: boolean;
|
|
9
|
+
requireLocalDatabase?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare function defineConfig(): Record<string, never>;
|
|
12
|
+
export declare function defineConfig<TConfig extends UnknownRecord>(config: TConfig, options?: DrizzleConfigOptions): TConfig;
|
|
13
|
+
export {};
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{assertLocalDatabaseUrl as l,loadDotenvFiles as a}from"../../config/runtime/env/index.js";export function defineConfig(r={},e={}){return a({cwd:e.cwd,env:e.env,files:e.files,onlyWhenAllowed:e.onlyWhenAllowed,override:e.override}),e.requireLocalDatabase!==!1&&l(e.env??process.env,e.consumer??"drizzle.config.ts"),r}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { type NormalizedDatabaseConfig } from "../config/loader/index.js";
|
|
2
|
+
import { type SourceSchemaServiceConfig, type SourceSchemaState } from "./schema-source.js";
|
|
3
|
+
export type TemplateFingerprintConfig = Omit<SourceSchemaServiceConfig, "testkit"> & {
|
|
4
|
+
testkit: SourceSchemaServiceConfig["testkit"] & {
|
|
5
|
+
database: NonNullable<SourceSchemaServiceConfig["testkit"]["database"]> & Pick<NormalizedDatabaseConfig, "image" | "user" | "roles">;
|
|
6
|
+
envFiles?: readonly string[];
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
export interface TemplateFingerprintOptions {
|
|
10
|
+
sourceSchemaState?: SourceSchemaState | null;
|
|
11
|
+
}
|
|
12
|
+
export declare function computeTemplateFingerprint(config: Readonly<TemplateFingerprintConfig>, options?: Readonly<TemplateFingerprintOptions>): Promise<string>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import a from"crypto";import{resolveServiceCwd as i}from"../config/loader/index.js";import{appendFileToHash as n,appendFingerprintPathToHash as m,normalizeFingerprintPolicy as c}from"../repo/fingerprint-policy.js";import{collectTemplateInputs as l}from"./template-steps.js";import{appendSourceSchemaCacheToHash as u}from"./schema-source.js";const d="pgvector/pgvector:pg16",h="testkit";export async function computeTemplateFingerprint(t,s={}){const e=a.createHash("sha256"),r=t.testkit.database,p=c(t.testkit.fingerprints);e.update(JSON.stringify({image:r.image||d,user:r.user||h,roles:r.roles,template:r.template||null}));for(const o of t.testkit.envFiles||[])n(e,t.productDir,i(t.productDir,o),p);for(const o of l(t.productDir,r.template||{}))m(e,t.productDir,o,p);return await u(e,t,s.sourceSchemaState||null),e.digest("hex")}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { type NormalizedDatabaseConfig } from "../config/loader/index.js";
|
|
2
|
+
import { type SourceSchemaServiceConfig } from "./schema-source.js";
|
|
3
|
+
import { type UserHostLocalPostgresActivityOptions } from "./activity-gate.js";
|
|
4
|
+
import { type LocalPostgresCleanupOptions, type LocalPostgresCleanupResult } from "./cleanup.js";
|
|
5
|
+
import { type TerminalRunDatabaseCleanupAuthority } from "../process/runs/ownership.js";
|
|
6
|
+
import type { DatabaseProgress } from "./progress.js";
|
|
7
|
+
import { type ProductLifecycleFence } from "../process/lifecycle-fence.js";
|
|
8
|
+
export { dropDatabaseWithForceOrDrain, isTransientAdminQueryConnectionError, waitForDatabaseConnectionsToDrain, } from "./admin.js";
|
|
9
|
+
export { readDatabaseInfo, readDatabaseUrl, type DatabaseInfo } from "./state.js";
|
|
10
|
+
export type { DatabaseProgress } from "./progress.js";
|
|
11
|
+
export { refreshDatabaseSchema, verifyDatabaseSchema, type DatabaseSchemaOperationContext, type ResolvedSchemaOperationPlan, type SchemaOperationConfigResolver, type VerifyDatabaseSchemaOptions, } from "./schema-operations.js";
|
|
12
|
+
export type DatabaseRuntimeConfig = Omit<SourceSchemaServiceConfig, "stateDir" | "testkit"> & {
|
|
13
|
+
stateDir: string;
|
|
14
|
+
testkit: SourceSchemaServiceConfig["testkit"] & {
|
|
15
|
+
database?: NormalizedDatabaseConfig | null;
|
|
16
|
+
};
|
|
17
|
+
};
|
|
18
|
+
export interface RuntimeDatabaseStateLocation {
|
|
19
|
+
productDir: string;
|
|
20
|
+
stateDir: string;
|
|
21
|
+
}
|
|
22
|
+
export type DatabaseCleanupOptions = Pick<LocalPostgresCleanupOptions, "dryRun" | "stopIdle">;
|
|
23
|
+
export interface ProvisionDatabaseOptions {
|
|
24
|
+
progress?: DatabaseProgress | null;
|
|
25
|
+
signal?: AbortSignal;
|
|
26
|
+
skipSchemaSourceVerify?: boolean;
|
|
27
|
+
}
|
|
28
|
+
export interface ReadyDatabase {
|
|
29
|
+
container: string;
|
|
30
|
+
databaseName: string;
|
|
31
|
+
templateFingerprint: string;
|
|
32
|
+
url: string;
|
|
33
|
+
}
|
|
34
|
+
export declare function provisionDatabase(config: Readonly<DatabaseRuntimeConfig>, options?: Readonly<ProvisionDatabaseOptions>): Promise<ReadyDatabase | null>;
|
|
35
|
+
export declare function destroyRuntimeDatabase({ productDir, stateDir }: Readonly<RuntimeDatabaseStateLocation>, activityOptions?: Readonly<UserHostLocalPostgresActivityOptions>): Promise<void>;
|
|
36
|
+
export declare function destroyServiceDatabaseCache(productDir: string, serviceName: string, activityOptions?: Readonly<UserHostLocalPostgresActivityOptions>): Promise<void>;
|
|
37
|
+
export declare function cleanupOrphanedLocalInfrastructure(productDir: string, activityOptions?: Readonly<UserHostLocalPostgresActivityOptions>): Promise<LocalPostgresCleanupResult>;
|
|
38
|
+
export declare function cleanupTerminalRunLocalInfrastructure(fence: Readonly<ProductLifecycleFence>, terminalRunAuthority: Readonly<TerminalRunDatabaseCleanupAuthority>, activityOptions?: Readonly<UserHostLocalPostgresActivityOptions>): Promise<LocalPostgresCleanupResult>;
|
|
39
|
+
export declare function destroyOwnedLocalDatabaseResources(fence: Readonly<ProductLifecycleFence>, options?: Readonly<DatabaseCleanupOptions>): Promise<LocalPostgresCleanupResult>;
|
|
40
|
+
export declare function cleanupOwnedLocalDatabaseResources(productDir: string, options?: Readonly<DatabaseCleanupOptions>): Promise<LocalPostgresCleanupResult>;
|
|
41
|
+
export declare function isDatabaseStateDir(dir: string): boolean;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import d from"fs";import m from"path";import{computeTemplateFingerprint as O}from"./fingerprint.js";import{buildDatabaseUrl as v,buildRuntimeDatabaseName as E,buildTemplateDatabaseName as q,hashString as A}from"./naming.js";import{getLocalInfraDir as C,getLocalLocksDir as N,getLocalServiceCacheDir as j,hasRemainingLocalArtifacts as R,requireContainedDatabaseStateDirectory as T,readStateValue as h}from"./state.js";import{runTemplateStage as V,runTemplateStep as B}from"./template-steps.js";import{materializeDatabaseConfig as U}from"../config/loader/index.js";import{applySourceSchemaCache as W,createSourceSchemaMismatchError as z,forceRefreshSourceSchemaCache as H,prepareSourceSchemaCache as Q,verifyLocalSchemaMatchesSource as G}from"./schema-source.js";import{cloneDatabaseFromTemplate as J,createEmptyDatabase as K,databaseExists as k,dropDatabaseIfExists as b}from"./admin.js";import{withUserHostLocalPostgresActivity as y}from"./activity-gate.js";import{ensureLocalContainer as X,loadExistingLocalContainer as P}from"./local-postgres.js";import{writeCacheState as F,writeStateValue as f}from"./state-files.js";import{withProcessLock as _}from"../process/locks.js";import{ensureDatabaseRoles as Y}from"./roles.js";import{assertTerminalRunDatabaseCleanupAuthority as Z,cleanupLocalPostgresDockerResources as ee,cleanupTerminalRunLocalPostgresDockerResources as te,destroyLocalPostgresDockerResources as ae,hasActiveProductRuntime as re}from"./cleanup.js";import"../process/runs/ownership.js";import{requireProductLifecycleFenceProductDir as w}from"../process/lifecycle-fence.js";export{dropDatabaseWithForceOrDrain,isTransientAdminQueryConnectionError,waitForDatabaseConnectionsToDrain}from"./admin.js";export{readDatabaseInfo,readDatabaseUrl}from"./state.js";export{refreshDatabaseSchema,verifyDatabaseSchema}from"./schema-operations.js";export async function provisionDatabase(e,t={}){const r=e.testkit.database;if(!r)return null;const s=U(r),a={...e,stateDir:T(e.productDir,e.stateDir,`Service "${e.name}" database runtime state directory`),testkit:{...e.testkit,database:s}},n={reporter:t.progress?.reporter||null,setupRegistry:t.progress?.setupRegistry||null,signal:t.signal,skipSchemaSourceVerify:t.skipSchemaSourceVerify};return y(a.productDir,async()=>(d.mkdirSync(a.stateDir,{recursive:!0}),ne(a,n)),{signal:t.signal})}export async function destroyRuntimeDatabase({productDir:e,stateDir:t},r={}){const s=T(e,t,"Runtime database state directory");await y(e,async()=>{await le(e,s)},r)}export async function destroyServiceDatabaseCache(e,t,r={}){await y(e,()=>se(e,t),r)}async function se(e,t){const r=j(e,t);if(!d.existsSync(r))return;const s=N(e);d.mkdirSync(s,{recursive:!0}),await _(m.join(s,`template-${t}.lock`),async()=>{const a=await P(e);if(!a){d.rmSync(r,{recursive:!0,force:!0});return}const n=h(m.join(r,"template_database_name"));n&&await b(a,n),d.rmSync(r,{recursive:!0,force:!0})})}export async function cleanupOrphanedLocalInfrastructure(e,t={}){const r=C(e);return g(e,r)?y(e,async()=>{if(!g(e,r)||re(e))return D();const s=await I(e,{stopIdle:!0});return R(e)||d.rmSync(r,{recursive:!0,force:!0}),s},t):D()}export async function cleanupTerminalRunLocalInfrastructure(e,t,r={}){const s=w(e),a=C(s);return g(s,a)?y(s,async()=>{if(w(e),!g(s,a))return D();const n=await te(e,t,{stopIdle:!0});return R(s)||(Z(e,t),d.rmSync(a,{recursive:!0,force:!0})),n},r):D()}function g(e,t){return d.existsSync(t)||R(e)}function D(){return{kept:[],removed:[],skipped:[],stopped:[],targets:[]}}export async function destroyOwnedLocalDatabaseResources(e,t={}){const r=w(e);return y(r,()=>(w(e),ae(e,t)))}export async function cleanupOwnedLocalDatabaseResources(e,t={}){return y(e,()=>I(e,t))}async function I(e,t){return ee({productDir:e,dryRun:!!t.dryRun,stopIdle:t.stopIdle!==!1})}export function isDatabaseStateDir(e){return d.existsSync(e)?d.existsSync(m.join(e,"database_backend")):!1}async function ne(e,t={}){const r=e.testkit.database,s=e.productDir,a=e.name,n=me(e),c=N(s),i=j(s,a);d.mkdirSync(c,{recursive:!0}),d.mkdirSync(i,{recursive:!0});const u=await X(s,r,{signal:t.signal}),p=await _(m.join(c,`template-${a}.lock`),async()=>{const l=await Q(e,t),S=await M(e,{sourceSchemaState:l});return await Y(e,u,t),ie(e,u,i,S,{...t,sourceSchemaState:l})},{signal:t.signal,timeoutMs:null}),o=await _(m.join(c,`runtime-${a}-${A(n,10)}.lock`),()=>ue(e,u,i,p,n,t.signal),{signal:t.signal,timeoutMs:null});return{container:u.containerName,databaseName:o.databaseName,templateFingerprint:o.templateFingerprint,url:v(u,o.databaseName)}}async function ie(e,t,r,s,a={}){const n=e.name;let c=s,i=a.sourceSchemaState||null,u=!1;for(;;){const p=h(m.join(r,"template_fingerprint")),o=h(m.join(r,"template_database_name")),l=q(n,c);if(p===c&&o&&await k(t,o,{signal:a.signal}))return a.setupRegistry?.recordCached({config:e,stage:"template",kind:"database-template",summary:"template cache hit"}),F(r,t,o,c),c;o&&o!==l&&await b(t,o,{signal:a.signal}),await k(t,l,{signal:a.signal})&&await b(t,l,{signal:a.signal});const S=v(t,l);if(await K(t,l,{signal:a.signal}),(await ce(e,t,l,S,{...a,sourceSchemaState:i,refreshedSourceAfterMismatch:u})).refreshSourceSchema){await b(t,l,{signal:a.signal}),i=await H(e,i,a),u=!0,c=await M(e,{sourceSchemaState:i});continue}return F(r,t,l,c),c}}async function ce(e,t,r,s,a={}){const n=a.setupRegistry?.start({config:e,stage:"template",kind:"database-template",summary:"template rebuild",recordLog:!1}),c={ownedContainer:{containerId:t.containerId,containerPort:t.containerPort},parentOperation:n,reporter:a.reporter||null,setupRegistry:a.setupRegistry||null,signal:a.signal};try{await W(e,s,a.sourceSchemaState,c);const i=async()=>{const o=await G(e,s,a.sourceSchemaState,{...c,skipSchemaSourceVerify:a.skipSchemaSourceVerify});if(o.status!=="mismatch")return null;if(a.refreshedSourceAfterMismatch)throw z(e,de(a.sourceSchemaState),o);return o},u=async o=>{const S=e.testkit.database?.template?.[o]||[];for(const[x,$]of S.entries())if(await B(e,o,$,x,s,c),await i())return!0;return!1};return await u("migrate")||await u("seed")||!!await i()?(L(n,a,{status:"passed",summary:"source schema refresh requested"}),{refreshSourceSchema:!0}):(await V(e,"verify",s,c),L(n,a,{status:"passed",summary:"template rebuild"}),{refreshSourceSchema:!1})}catch(i){throw L(n,a,{status:"failed",summary:"template rebuild",error:pe(i)||i}),await b(t,r),i}}function L(e,t,r){const s=e&&t.setupRegistry?t.setupRegistry.finish(e,r):null;s&&t.reporter?.setupOperationFinished?.(s)}async function ue(e,t,r,s,a,n){const c=e.name,i=h(m.join(r,"template_database_name"));if(!i)throw new Error(`Missing template database for service "${c}"`);const u=E(c,a,s),p=h(m.join(e.stateDir,"local_database_name")),o=h(m.join(e.stateDir,"local_template_fingerprint")),l=be(e.testkit.database.reset)||o!==s||p!==u||!await k(t,u,{signal:n});return p&&p!==u&&await b(t,p,{signal:n}),l&&(await b(t,u,{signal:n}),await J(t,u,i,{signal:n})),d.mkdirSync(e.stateDir,{recursive:!0}),oe(e,t,{bindingKey:a,databaseName:u,templateFingerprint:s,templateDbName:i}),{bindingKey:a,databaseName:u,templateFingerprint:s,templateDbName:i}}function oe(e,t,r){f(m.join(e.stateDir,"database_backend"),""),f(m.join(e.stateDir,"database_url"),v(t,r.databaseName)),f(m.join(e.stateDir,"local_database_name"),r.databaseName),f(m.join(e.stateDir,"local_template_fingerprint"),r.templateFingerprint),f(m.join(e.stateDir,"local_template_database_name"),r.templateDbName),f(m.join(e.stateDir,"local_container_name"),t.containerName),t.volumeName&&f(m.join(e.stateDir,"volume_name"),t.volumeName),t.volumeMountPath&&f(m.join(e.stateDir,"volume_mount_path"),t.volumeMountPath)}function me(e){return fe(e.testkit.database.binding)==="shared"?`${e.name}:shared`:e.runtimeId?`${e.name}:${String(e.runtimeId)}`:`${e.name}:${e.stateDir}`}async function le(e,t){const r=h(m.join(t,"local_database_name"));if(!r)return;const s=await P(e);s&&await b(s,r)}function M(e,t={}){return O(e,t)}function de(e){if(!e?.active)throw new Error("Source schema mismatch requires active source schema state");return e}function pe(e){return typeof e!="object"&&typeof e!="function"||e===null?void 0:Reflect.get(e,"message")}function be(e){return e!==!1}function fe(e){return e||"per-runtime"}function Fe(e){return e}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { type DockerLabels } from "./docker.js";
|
|
2
|
+
import type { DatabaseMaterializationInput } from "../config/loader/index.js";
|
|
3
|
+
import { type LocalPostgresState } from "./state-files.js";
|
|
4
|
+
export declare const LOCAL_POSTGRES_DOCKER_TIMEOUTS_MS: Readonly<{
|
|
5
|
+
inspect: 30000;
|
|
6
|
+
readinessAttempt: 10000;
|
|
7
|
+
remove: 120000;
|
|
8
|
+
run: number;
|
|
9
|
+
start: 120000;
|
|
10
|
+
volumeCreate: 120000;
|
|
11
|
+
}>;
|
|
12
|
+
interface DockerRunOptions {
|
|
13
|
+
containerName: string;
|
|
14
|
+
image: string;
|
|
15
|
+
labels: DockerLabels;
|
|
16
|
+
maxConnections: number;
|
|
17
|
+
password: string;
|
|
18
|
+
user: string;
|
|
19
|
+
volumeMountPath: string;
|
|
20
|
+
volumeName: string;
|
|
21
|
+
}
|
|
22
|
+
interface LocalPostgresContainerReuseOptions {
|
|
23
|
+
image: string;
|
|
24
|
+
maxConnections: number;
|
|
25
|
+
volumeMountPath: string;
|
|
26
|
+
volumeName: string;
|
|
27
|
+
}
|
|
28
|
+
export interface LocalPostgresOperationOptions {
|
|
29
|
+
signal?: AbortSignal;
|
|
30
|
+
}
|
|
31
|
+
interface DockerContainerConfig {
|
|
32
|
+
Cmd?: string[] | null;
|
|
33
|
+
Image?: string | null;
|
|
34
|
+
Labels?: DockerLabels | null;
|
|
35
|
+
}
|
|
36
|
+
interface DockerContainerHostConfig {
|
|
37
|
+
NetworkMode?: string | null;
|
|
38
|
+
}
|
|
39
|
+
interface DockerContainerMount {
|
|
40
|
+
Destination?: string | null;
|
|
41
|
+
Name?: string | null;
|
|
42
|
+
Type?: string | null;
|
|
43
|
+
}
|
|
44
|
+
interface DockerContainerPortBinding {
|
|
45
|
+
HostPort?: string | null;
|
|
46
|
+
}
|
|
47
|
+
export interface DockerContainerInspect {
|
|
48
|
+
Config?: DockerContainerConfig | null;
|
|
49
|
+
HostConfig?: DockerContainerHostConfig | null;
|
|
50
|
+
Id?: string | null;
|
|
51
|
+
Mounts?: (DockerContainerMount | null | undefined)[] | null;
|
|
52
|
+
NetworkSettings?: {
|
|
53
|
+
Ports?: Record<string, DockerContainerPortBinding[] | null> | null;
|
|
54
|
+
} | null;
|
|
55
|
+
State?: {
|
|
56
|
+
Running?: boolean | null;
|
|
57
|
+
} | null;
|
|
58
|
+
}
|
|
59
|
+
export type InspectedDockerContainer = DockerContainerInspect & {
|
|
60
|
+
Id: string;
|
|
61
|
+
};
|
|
62
|
+
export declare function ensureLocalContainer(productDir: string, database?: Readonly<DatabaseMaterializationInput>, options?: Readonly<LocalPostgresOperationOptions>): Promise<LocalPostgresState>;
|
|
63
|
+
export declare function buildDockerRunArgs({ containerName, labels, volumeName, volumeMountPath, user, password, image, maxConnections, }: Readonly<DockerRunOptions>): string[];
|
|
64
|
+
export declare function loadExistingLocalContainer(productDir: string, options?: Readonly<LocalPostgresOperationOptions>): Promise<LocalPostgresState | null>;
|
|
65
|
+
export declare function isReusableLocalPostgresContainer(inspect: Readonly<DockerContainerInspect>, options: Readonly<LocalPostgresContainerReuseOptions>): boolean;
|
|
66
|
+
export declare function inspectContainer(containerName: string, options?: Readonly<LocalPostgresOperationOptions>): Promise<InspectedDockerContainer | null>;
|
|
67
|
+
export declare function normalizeLocalPostgresContainerInspect(value: unknown): DockerContainerInspect | null;
|
|
68
|
+
export declare function stopAndRemoveContainer(containerRef: string, displayName?: string, options?: Readonly<LocalPostgresOperationOptions>): Promise<void>;
|
|
69
|
+
export declare function matchesStableDockerLabels(existingLabels: Readonly<Record<string, unknown>>, expectedLabels: Readonly<Record<string, unknown>>): boolean;
|
|
70
|
+
export declare function resolveLocalPostgresVolumeTarget(image: unknown): string;
|
|
71
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import{randomUUID as C}from"node:crypto";import ne from"fs";import u from"path";import{LOCAL_ADMIN_DB as D,LOCAL_IMAGE as M,LOCAL_MAX_CONNECTIONS as N,LOCAL_PASSWORD as R,LOCAL_POLL_INTERVAL_MS as te,LOCAL_READY_TIMEOUT_MS as $,LOCAL_USER as j}from"./constants.js";import{buildContainerName as re,buildVolumeName as S}from"./naming.js";import{getLocalInfraDir as V,readStateValue as l}from"./state.js";import{TESTKIT_CREATED_AT_LABEL as U,TESTKIT_RESOURCE_GENERATION_LABEL as z,buildDockerResourceLabels as G,dockerLabelArgs as v,inspectDockerVolume as L,normalizeDockerVolumeInspect as E,removeDockerVolume as oe,runDockerCommand as h}from"./docker.js";import{writeLocalInfraState as ie}from"./state-files.js";const se="/var/lib/postgresql/data",ae="/var/lib/postgresql",A=String;export const LOCAL_POSTGRES_DOCKER_TIMEOUTS_MS=Object.freeze({inspect:3e4,readinessAttempt:1e4,remove:12e4,run:10*6e4,start:12e4,volumeCreate:12e4});export async function ensureLocalContainer(e,n={},t={}){const o=V(e);ne.mkdirSync(o,{recursive:!0});const r=l(u.join(o,"container_name"))||re(e),i=l(u.join(o,"volume_name")),s=n.image||l(u.join(o,"image"))||M,f=l(u.join(o,"image")),c=resolveLocalPostgresVolumeTarget(s),w=n.user||l(u.join(o,"user"))||j,b=n.password||l(u.join(o,"password"))||R,_=q(n.maxConnections||l(u.join(o,"max_connections"))||N);let a=await inspectContainer(r,t);a&&p(a,e,r);let d=K(a,c)||i||S(e,C());a&&await F(e,d,t);const O=a?.Config?.Image||f||null;if(a&&!isReusableLocalPostgresContainer(a,{image:s,maxConnections:_,volumeMountPath:c,volumeName:d})&&(await stopAndRemoveContainer(a.Id,r,t),O&&O!==s&&(await me(e,d,t),d=S(e,C())),a=null),a)a.State?.Running||(await k(["start",a.Id],`Docker local Postgres container start for ${r}`,LOCAL_POSTGRES_DOCKER_TIMEOUTS_MS.start,t.signal),a=await inspectContainer(r,t),a&&p(a,e,r));else{d=await le(e,d,t);const ee=Y(e,r,C());await k(buildDockerRunArgs({containerName:r,labels:ee,volumeName:d,volumeMountPath:c,user:w,password:b,image:s,maxConnections:_}),`Docker local Postgres container creation for ${r}`,LOCAL_POSTGRES_DOCKER_TIMEOUTS_MS.run,t.signal),a=await inspectContainer(r,t),a&&p(a,e,r)}const I=B(a);if(!a||!I)throw new Error(`Could not determine host port for local database container ${r}`);const x={containerName:r,containerId:a.Id,volumeName:d,volumeMountPath:c,image:s,user:w,password:b,maxConnections:_,host:"127.0.0.1",port:Number(I),containerPort:5432};return await W(x,t),ie(o,x),x}export function buildDockerRunArgs({containerName:e,labels:n,volumeName:t,volumeMountPath:o,user:r,password:i,image:s,maxConnections:f}){return["run","-d","--name",e,...v(n),"-p","127.0.0.1::5432","--mount",`type=volume,source=${t},target=${o}`,"-e",`POSTGRES_USER=${r}`,"-e",`POSTGRES_PASSWORD=${i}`,"-e",`POSTGRES_DB=${D}`,s,"postgres","-c",`max_connections=${String(f)}`]}export async function loadExistingLocalContainer(e,n={}){const t=V(e),o=l(u.join(t,"container_name"));if(!o)return null;const r=await inspectContainer(o,n);if(!r)return null;p(r,e,o);const i=r.Config?.Image||l(u.join(t,"image"))||M,s=l(u.join(t,"volume_mount_path"))||resolveLocalPostgresVolumeTarget(i),f=K(r,s)||l(u.join(t,"volume_name"));if(!f)return null;await F(e,f,n),r.State?.Running||await k(["start",r.Id],`Docker local Postgres container start for ${o}`,LOCAL_POSTGRES_DOCKER_TIMEOUTS_MS.start,n.signal);const c=await inspectContainer(o,n);c&&p(c,e,o);const w=B(c);if(!c||!w)return null;const b={containerName:o,containerId:c.Id,volumeName:f,volumeMountPath:s,image:i,user:l(u.join(t,"user"))||j,password:l(u.join(t,"password"))||R,maxConnections:q(l(u.join(t,"max_connections"))||N),host:"127.0.0.1",port:Number(w),containerPort:H(c)==="host"?Number(w):5432};return await W(b,n),b}function ce(e,n){const t=e.Config?.Cmd;return Array.isArray(t)?t.includes("-c")&&t.includes(`max_connections=${String(n)}`):!1}function ue(e,n,t){return(Array.isArray(e.Mounts)?e.Mounts:[]).some(r=>r?.Type==="volume"&&r.Name===n&&r.Destination===t)}export function isReusableLocalPostgresContainer(e,n){return e.Config?.Image===n.image&&ce(e,n.maxConnections)&&ue(e,n.volumeName,n.volumeMountPath)&&H(e)==="bridge"}function H(e){return e.HostConfig?.NetworkMode==="host"?"host":"bridge"}function B(e){return e?.NetworkSettings?.Ports?.["5432/tcp"]?.[0]?.HostPort||null}function q(e){const n=Number(e);if(!Number.isInteger(n)||n<10)throw new Error("database.maxConnections must be an integer greater than or equal to 10");return n}export async function inspectContainer(e,n={}){const t=`Docker local Postgres container inspect for ${e}`,o=await h(["inspect",e],t,LOCAL_POSTGRES_DOCKER_TIMEOUTS_MS.inspect,n.signal);if(o.exitCode!==0){if(Z(o))return null;throw T(t,o)}let r;try{r=JSON.parse(o.stdout)}catch(s){throw Q(t,o,s)}const i=P(r)&&r.length===1?normalizeLocalPostgresContainerInspect(r[0]):null;if(!i?.Id)throw Q(t,o);return{...i,Id:i.Id}}export function normalizeLocalPostgresContainerInspect(e){return m(e)?{Config:we(e.Config),HostConfig:pe(e.HostConfig),Id:g(e.Id),Mounts:Ce(e.Mounts),NetworkSettings:Le(e.NetworkSettings),State:he(e.State)}:null}export async function stopAndRemoveContainer(e,n=e,t={}){const o=`Docker local Postgres container removal for ${n}`,r=await h(["rm","-f","-v",e],o,LOCAL_POSTGRES_DOCKER_TIMEOUTS_MS.remove,t.signal);if(!(r.exitCode===0||Z(r)))throw T(o,r)}async function le(e,n,t={}){const o=y(e,n,"existing-generation"),r=await L(n,t);if(r){if(!matchesStableDockerLabels(X(r)||{},o))throw new Error(`Docker volume ${n} already exists but is not owned by this Testkit product. Remove or rename it before running Testkit.`);return n}const i=C(),s=S(e,i),f=y(e,s,i);await k(["volume","create",...v(f),s],`Docker local Postgres volume creation for ${s}`,LOCAL_POSTGRES_DOCKER_TIMEOUTS_MS.volumeCreate,t.signal);const c=E(await L(s,t));if(c===null||!fe(c.labels,f))throw new Error(`Docker volume ${s} was not published with the expected Testkit generation identity`);return s}async function F(e,n,t){const o=y(e,n,"existing-generation"),r=E(await L(n,t));if(r===null||!matchesStableDockerLabels(r.labels,o))throw new Error(`Docker volume ${n} is missing or is not owned by this Testkit product`);return r}export function matchesStableDockerLabels(e,n){const t=e[U],o=e[z];return typeof t=="string"&&t.length>0&&typeof o=="string"&&o.length>0&&Object.entries(n).every(([r,i])=>r===U||r===z||e[r]===A(i))}function fe(e,n){const t=Object.entries(e).sort(([r],[i])=>r.localeCompare(i)),o=Object.entries(n).map(([r,i])=>[r,A(i)]).sort(([r],[i])=>r.localeCompare(i));return t.length===o.length&&t.every(([r,i],s)=>o[s]?.[0]===r&&o[s]?.[1]===i)}async function me(e,n,t={}){const o=y(e,n,"existing-generation"),r=await L(n,t);if(!r)return;const i=X(r)||{};if(!matchesStableDockerLabels(i,o))return;const f=E(r);f!==null&&await oe(n,f,t)}function K(e,n){return(Array.isArray(e?.Mounts)?e.Mounts:[]).find(r=>r?.Type==="volume"&&typeof r.Name=="string"&&r.Name.length>0&&r.Destination===n)?.Name||null}function p(e,n,t){const o=Y(n,t);if(!matchesStableDockerLabels(e.Config?.Labels||{},o))throw new Error(`Docker container ${t} already exists but is not owned by this Testkit product. Remove or rename it before running Testkit.`)}export function resolveLocalPostgresVolumeTarget(e){return de(e)>=18?ae:se}function de(e){const t=A(e||"").match(/(?:^|[:@/-])(?:pg|postgres)?(\d{2})(?:\D|$)/i);return t?Number(t[1]):16}async function W(e,n={}){const t=Date.now();for(;Date.now()-t<$;){const o=Math.max(1,$-(Date.now()-t));if((await h(["exec",e.containerId,"pg_isready","-U",e.user,"-d",D,"-p",String(e.containerPort||5432)],`Docker local Postgres readiness probe for ${e.containerName}`,Math.min(LOCAL_POSTGRES_DOCKER_TIMEOUTS_MS.readinessAttempt,o),n.signal)).exitCode===0)return;await ge(Math.min(te,o),n.signal)}throw new Error(`Timed out waiting for local database container ${e.containerName}`)}function Y(e,n,t="existing-generation"){return G(e,{generation:t,kind:"postgres-container",name:n,scope:"local-postgres",cachePolicy:"product-cache"})}function y(e,n,t){return G(e,{generation:t,kind:"postgres-volume",name:n,scope:"local-postgres",cachePolicy:"product-cache"})}function ge(e,n){return new Promise((t,o)=>{if(n?.aborted){o(J(n));return}const r=setTimeout(i,e);n?.addEventListener("abort",s,{once:!0});function i(){n?.removeEventListener("abort",s),t()}function s(){clearTimeout(r),o(n?J(n):new Error("Local Postgres operation aborted"))}})}function J(e){return e.reason instanceof Error?e.reason:new Error("Local Postgres operation aborted",{cause:e.reason})}function X(e){if(!m(e))return null;const n=e.Labels;return m(n)?n:null}function we(e){if(e===null)return null;if(m(e))return{Cmd:ye(e.Cmd),Image:g(e.Image),Labels:be(e.Labels)}}function be(e){if(!m(e))return null;const n={};for(const[t,o]of Object.entries(e))typeof o=="string"&&(n[t]=o);return n}function pe(e){if(e===null)return null;if(m(e))return{NetworkMode:g(e.NetworkMode)}}function Ce(e){if(e===null)return null;if(P(e))return e.flatMap(n=>m(n)?[{Destination:g(n.Destination),Name:g(n.Name),Type:g(n.Type)}]:[])}function Le(e){if(e===null)return null;if(!m(e))return;const n=e.Ports;if(n===null)return{Ports:null};if(!m(n))return{};const t={};for(const[o,r]of Object.entries(n)){if(r===null){t[o]=null;continue}P(r)&&(t[o]=r.flatMap(i=>{if(!m(i))return[];const s=g(i.HostPort);return i.HostPort!==void 0&&s===void 0?[]:[{HostPort:s}]}))}return{Ports:t}}function he(e){if(e===null)return null;if(m(e))return{Running:e.Running===null||typeof e.Running=="boolean"?e.Running:void 0}}function g(e){if(e===null||typeof e=="string")return e}function m(e){return typeof e=="object"&&e!==null&&!Array.isArray(e)}function P(e){return Array.isArray(e)}function ye(e){if(e===null)return null;if(P(e))return e.filter(n=>typeof n=="string")}async function k(e,n,t,o){const r=await h(e,n,t,o);if(r.exitCode===0)return r;throw T(n,r)}function T(e,n){const t=n.stderr.trim()||n.stdout.trim(),o=new Error(`${e} failed with exit code ${String(n.exitCode)}${t?`: ${t}`:""}`);return Object.defineProperty(o,"result",{enumerable:!1,value:Object.freeze({...n})}),o}function Q(e,n,t){const o=new Error(`${e} returned malformed Docker inspect output; expected exactly one container record with a non-empty Id`,t===void 0?void 0:{cause:t});return Object.defineProperty(o,"result",{enumerable:!1,value:Object.freeze({...n})}),o}function Z(e){return/\bno such (?:container|object)\b/iu.test(`${e.stderr}
|
|
2
|
+
${e.stdout}`)}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
export interface DatabaseConnection {
|
|
2
|
+
host: string;
|
|
3
|
+
password: string;
|
|
4
|
+
port: number;
|
|
5
|
+
sslMode?: string | null;
|
|
6
|
+
user: string;
|
|
7
|
+
}
|
|
8
|
+
export declare function buildDatabaseUrl(infra: Readonly<DatabaseConnection>, dbName: string): string;
|
|
9
|
+
export declare function buildContainerName(productDir: string): string;
|
|
10
|
+
export declare function buildVolumeName(productDir: string, generation: string): string;
|
|
11
|
+
export declare function buildTemplateDatabaseName(serviceName: string, fingerprint: string): string;
|
|
12
|
+
export declare function buildRuntimeDatabaseName(serviceName: string, bindingKey: string, fingerprint: string): string;
|
|
13
|
+
export declare function hashString(value: string, length?: number): string;
|
|
14
|
+
export declare function slugSegment(value: string): string;
|
|
15
|
+
export declare function limitIdentifier(value: string, maxLength: number): string;
|
|
16
|
+
export declare function escapeIdentifier(value: unknown): string;
|
|
17
|
+
export declare function escapeSqlLiteral(value: unknown): string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import p from"crypto";import f from"fs";import l from"path";export function buildDatabaseUrl(e,t){const n=e.sslMode||"disable";return`postgresql://${encodeURIComponent(e.user)}:${encodeURIComponent(e.password)}@${e.host}:${String(e.port)}/${t}?sslmode=${encodeURIComponent(n)}`}export function buildContainerName(e){const t=u(e);return i("testkit_pg",l.basename(t),[hashString(t,10)],63)}export function buildVolumeName(e,t){const n=u(e);if(!t)throw new Error("Local Postgres volume generation must be non-empty");return i("testkit_pgdata",l.basename(n),[hashString(n,10),hashString(t,32)],128)}export function buildTemplateDatabaseName(e,t){return i("tk_tpl",e,[t.slice(0,16)],63)}export function buildRuntimeDatabaseName(e,t,n){return i("tk",e,[hashString(t,10),n.slice(0,12)],63)}function i(e,t,n,a){const c=`${e}_`,s=slugSegment(t);let r=`_${n.join("_")}`,o=a-c.length-r.length;if(s.length>o&&(r=`_${hashString(t,10)}${r}`,o=a-c.length-r.length),o<1)throw new Error(`Cannot retain the identity suffix within a ${String(a)}-character identifier`);const d=limitIdentifier(s,o);return`${c}${d}${r}`}function u(e){const t=l.resolve(e);try{return f.realpathSync.native(t)}catch(n){if(m(n,"ENOENT"))return t;throw n}}function m(e,t){return typeof e=="object"&&e!==null&&"code"in e&&Reflect.get(e,"code")===t}export function hashString(e,t=12){return p.createHash("sha256").update(e).digest("hex").slice(0,t)}export function slugSegment(e){return e.toLowerCase().replace(/[^a-z0-9]+/g,"_").replace(/^_+|_+$/g,"")||"db"}export function limitIdentifier(e,t){return e.length<=t?e:e.slice(0,t)}export function escapeIdentifier(e){return String(e).replace(/"/g,'""')}export function escapeSqlLiteral(e){return String(e).replace(/'/g,"''")}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import type { Readable } from "node:stream";
|
|
2
|
+
import type { OwnedPostgresContainerRoute } from "../../domain/postgres-route.js";
|
|
3
|
+
export declare const POSTGRES_CLIENT_CONTAINER_LABEL = "com.elench.testkit.postgres-client.container";
|
|
4
|
+
export declare const POSTGRES_CLIENT_TIMEOUT_MS: number;
|
|
5
|
+
export interface PostgresConnectionInput {
|
|
6
|
+
database?: string | null;
|
|
7
|
+
host?: string | null;
|
|
8
|
+
password?: string | null;
|
|
9
|
+
port?: number | string | null;
|
|
10
|
+
rawUrl?: unknown;
|
|
11
|
+
sslMode?: string | null;
|
|
12
|
+
user?: string | null;
|
|
13
|
+
}
|
|
14
|
+
export interface PostgresConnection extends PostgresConnectionInput {
|
|
15
|
+
database: string;
|
|
16
|
+
host: string;
|
|
17
|
+
port: number | string;
|
|
18
|
+
user: string;
|
|
19
|
+
}
|
|
20
|
+
export interface DockerPsqlOptions {
|
|
21
|
+
args?: readonly unknown[];
|
|
22
|
+
connection?: PostgresConnectionInput | null;
|
|
23
|
+
cwd?: string;
|
|
24
|
+
databaseUrl?: string | null;
|
|
25
|
+
env?: NodeJS.ProcessEnv;
|
|
26
|
+
image?: string | null;
|
|
27
|
+
ownedContainer?: OwnedPostgresContainerRoute | null;
|
|
28
|
+
signal?: AbortSignal;
|
|
29
|
+
timeoutMs?: number;
|
|
30
|
+
}
|
|
31
|
+
export interface DockerPostgresClientOptions extends DockerPsqlOptions {
|
|
32
|
+
clientCommand?: string | null;
|
|
33
|
+
}
|
|
34
|
+
export interface BuildDockerPostgresClientArgsOptions {
|
|
35
|
+
args?: readonly unknown[];
|
|
36
|
+
clientCommand: string;
|
|
37
|
+
connection: PostgresConnection;
|
|
38
|
+
cwd?: string;
|
|
39
|
+
env?: NodeJS.ProcessEnv;
|
|
40
|
+
image?: string;
|
|
41
|
+
ownedContainer?: OwnedPostgresContainerRoute | null;
|
|
42
|
+
}
|
|
43
|
+
export interface PostgresCommandResult {
|
|
44
|
+
command: string;
|
|
45
|
+
escapedCommand: string;
|
|
46
|
+
exitCode: number | null;
|
|
47
|
+
failed: boolean;
|
|
48
|
+
shortMessage?: string;
|
|
49
|
+
signal: NodeJS.Signals | null;
|
|
50
|
+
stderr: string;
|
|
51
|
+
stdout: string;
|
|
52
|
+
}
|
|
53
|
+
export interface PostgresClientProcess extends Promise<PostgresCommandResult> {
|
|
54
|
+
pid: number | undefined;
|
|
55
|
+
stderr: Readable | null;
|
|
56
|
+
stop(): boolean;
|
|
57
|
+
stdout: Readable | null;
|
|
58
|
+
}
|
|
59
|
+
interface RewritePostgresFileArgsResult {
|
|
60
|
+
args: string[];
|
|
61
|
+
mountArgs: string[];
|
|
62
|
+
}
|
|
63
|
+
export declare function postgresClientImage(env?: NodeJS.ProcessEnv): string;
|
|
64
|
+
export declare function runDockerPsql(options: DockerPsqlOptions): Promise<PostgresCommandResult>;
|
|
65
|
+
export declare function startDockerPgDump(options: DockerPsqlOptions): PostgresClientProcess;
|
|
66
|
+
export declare function runDockerPostgresClient(options?: DockerPostgresClientOptions): Promise<PostgresCommandResult>;
|
|
67
|
+
export declare function startDockerPostgresClient({ clientCommand, args, cwd, env, connection, databaseUrl, image, ownedContainer, signal, timeoutMs, }?: DockerPostgresClientOptions): PostgresClientProcess;
|
|
68
|
+
export declare function buildDockerPostgresClientArgs(options: BuildDockerPostgresClientArgsOptions): string[];
|
|
69
|
+
export declare function rewritePostgresFileArgsForDocker(args: readonly string[], cwd?: string): RewritePostgresFileArgsResult;
|
|
70
|
+
export declare function connectionFromDatabaseUrl(rawUrl: unknown): PostgresConnection | null;
|
|
71
|
+
export {};
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import P from"node:path";import{randomUUID as k}from"node:crypto";import{errorMessage as D}from"../../kernel/error-serialization.js";import{dockerHostAddress as x,shouldUseDockerHostNetwork as T}from"../../process/host/platform.js";import{managedHostProcessInfrastructureError as A,runManagedHostProcess as h,startManagedHostProcess as N}from"../../process/index.js";export const POSTGRES_CLIENT_CONTAINER_LABEL="com.elench.testkit.postgres-client.container";const I="postgres:16",w="postgres";export const POSTGRES_CLIENT_TIMEOUT_MS=30*6e4;const M=["-h","--host","-p","--port","-U","--username","-d","--dbname"],O=/^(?:--host|--port|--username|--dbname)=/,f=String;export function postgresClientImage(e=process.env){return e.TESTKIT_POSTGRES_CLIENT_IMAGE||I}export function runDockerPsql(e){return runDockerPostgresClient({...e,clientCommand:"psql"})}export function startDockerPgDump(e){return startDockerPostgresClient({...e,clientCommand:"pg_dump"})}export async function runDockerPostgresClient(e={}){try{return await startDockerPostgresClient(e)}catch(t){throw b(t)}}export function startDockerPostgresClient({clientCommand:e,args:t=[],cwd:r,env:n=process.env,connection:c=null,databaseUrl:u=null,image:s=null,ownedContainer:i=null,signal:o,timeoutMs:p=POSTGRES_CLIENT_TIMEOUT_MS}={}){const l=v({args:t,connection:c,databaseUrl:u});if(!z(l))throw new Error(`Dockerized ${e||"Postgres client"} requires a Postgres connection URL or connection object`);if(!e)throw new Error("buildDockerPostgresClientArgs requires clientCommand");const m=buildDockerPostgresClientArgs({clientCommand:e,args:t,connection:l,cwd:r,env:n,image:s||postgresClientImage(n),ownedContainer:i}),a=`testkit-postgres-client-${k()}`;return m.splice(1,0,"--name",a),y("docker",m,{containerName:a,cwd:r,env:C(n,l),signal:o,timeoutMs:R(p)})}function b(e){return _(e)&&e.code==="ENOENT"||e instanceof Error&&e.message.includes('managed host executable "docker"')?new Error("Docker is required for Testkit Postgres client operations, but the docker command was not found."):e}function _(e){return e instanceof Error&&"code"in e}function y(e,t,r){let n;try{n=N({args:t,cwd:r.cwd||process.cwd(),displayLabel:"Dockerized Postgres client",env:r.env,executable:e,outputMode:"bounded-capture",signal:r.signal,timeoutMs:r.timeoutMs})}catch(o){throw b(o)}let c=!1,u=!1;const s=n.completion.then(async o=>{const p=u&&G(o)?null:A("Dockerized Postgres client",o);if(o.cancelled||o.timedOut||o.outputLimitExceeded||u){const l={executable:"docker",cwd:r.cwd||process.cwd(),env:r.env,displayLabel:"Postgres client container cleanup"},m=async()=>{const a=await h({...l,args:["rm","--force",r.containerName],timeoutMs:3e4}),d=A("Postgres client container cleanup",a);if(d)throw d;if(a.exitCode!==0)throw new Error(`Postgres client container cleanup failed: ${a.stderr}`)};try{try{(await h({...l,args:["kill","--signal=SIGINT",r.containerName],timeoutMs:5e3})).exitCode===0&&await h({...l,args:["wait",r.containerName],timeoutMs:2e3})}finally{await m()}}catch(a){const d=p||(o.exitCode!==0?new Error(`Dockerized Postgres client failed with exit code ${String(o.exitCode)}`):null);if(!d)throw a;const g=new AggregateError([d,a],[d.message,o.stderr.trim(),o.stdout.trim(),D(a)].filter(Boolean).join(`
|
|
2
|
+
`),{cause:d});throw Object.defineProperty(g,"result",{enumerable:!1,value:Object.freeze({...o})}),g}}if(p)throw b(p);return{command:e,escapedCommand:[e,...t].join(" "),exitCode:o.exitCode,failed:o.exitCode!==0,signal:o.exitSignal,stderr:o.stderr,stdout:o.stdout}});s.then(()=>{c=!0},()=>{c=!0});const i=s;return Object.defineProperties(i,{pid:{enumerable:!0,get:()=>n.pid},stdout:{enumerable:!0,value:n.stdout},stderr:{enumerable:!0,value:n.stderr},stop:{enumerable:!0,value:()=>c?!1:(u=!0,n.stop(),!0)}}),i}function G(e){return e.error===null&&e.terminationError===null&&!e.timedOut&&!e.cancelled&&!e.outputLimitExceeded}function R(e){if(!Number.isSafeInteger(e)||Number(e)<=0)throw new TypeError("Dockerized Postgres client timeoutMs must be a positive safe integer");return Number(e)}export function buildDockerPostgresClientArgs({clientCommand:e,args:t=[],connection:r,cwd:n,env:c=process.env,image:u=postgresClientImage(c),ownedContainer:s=null}={}){if(!e)throw new Error("buildDockerPostgresClientArgs requires clientCommand");if(!r)throw new TypeError("buildDockerPostgresClientArgs requires connection");const i=$(t,r),{args:o,mountArgs:p}=rewritePostgresFileArgsForDocker(i,n),[l,m,a]=U(r,s),d=C(c,r),g=["PGPASSWORD","PGSSLMODE","PGAPPNAME"].filter(E=>d[E]!=null).flatMap(E=>["-e",E]);return["run","--rm",...l,...s?["--label",`${POSTGRES_CLIENT_CONTAINER_LABEL}=${s.containerId}`]:[],...g,...p,u,e,"-h",m,"-p",a,"-U",r.user,"-d",r.database||w,...o]}function U(e,t){if(!t)return[T()?["--network","host"]:[],f(x(e.host)),f(e.port||5432)];if(!t.containerId)throw new TypeError("ownedContainer.containerId must be a container id");return[["--network",`container:${t.containerId}`],"127.0.0.1",f(t.containerPort||5432)]}export function rewritePostgresFileArgsForDocker(e,t){const r=[],n=[];let c=0;const u=s=>{const i=P.resolve(t||process.cwd(),s),o=`/testkit-postgres-files-${String(c)}`;return c+=1,n.push("--mount",`type=bind,source=${P.dirname(i)},target=${o},readonly`),`${o}/${P.basename(i)}`};for(let s=0;s<e.length;s+=1){const i=e[s],o=e[s+1];if((i==="-f"||i==="--file")&&o){r.push(i,u(o)),s+=1;continue}if(i.startsWith("--file=")){r.push(`--file=${u(i.slice(7))}`);continue}r.push(i)}return{args:r,mountArgs:n}}function v({args:e,connection:t,databaseUrl:r}){return t?{...t,port:t.port||5432,database:t.database||w}:connectionFromDatabaseUrl(r||L(e))}function L(e){const t=e[0];return S(t)?t:null}function $(e,t){const r=t?.rawUrl,n=r&&e[0]===r||S(e[0])?e.slice(1):e;return q(n).map(c=>f(c))}function q(e){const t=[];for(let r=0;r<e.length;r+=1){const n=e[r];if(typeof n=="string"&&M.includes(n)){r+=1;continue}O.test(f(n))||t.push(n)}return t}function C(e,t){return{...e,PGPASSWORD:t.password||"",...t.sslMode?{PGSSLMODE:t.sslMode}:{},...e.PGAPPNAME?{PGAPPNAME:e.PGAPPNAME}:{}}}function S(e){return/^postgres(?:ql)?:\/\//i.test(f(e||""))}function z(e){return!!(e?.host&&e.user)}export function connectionFromDatabaseUrl(e){if(!e)return null;let t;try{t=new URL(f(e))}catch{return null}return["postgres:","postgresql:"].includes(t.protocol)?{rawUrl:e,host:t.hostname,port:t.port||"5432",database:decodeURIComponent(t.pathname.replace(/^\//,""))||w,user:decodeURIComponent(t.username||""),password:decodeURIComponent(t.password||""),sslMode:t.searchParams.get("sslmode")||void 0}:null}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import type { ConfiguredStepReporter } from "../steps/index.js";
|
|
2
|
+
import type { SetupOperationRegistry } from "../evidence/setup-progress.js";
|
|
3
|
+
export interface DatabaseProgress {
|
|
4
|
+
reporter?: ConfiguredStepReporter | null;
|
|
5
|
+
setupRegistry?: SetupOperationRegistry | null;
|
|
6
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export{};
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { NormalizedDatabaseConfig } from "../config/loader/index.js";
|
|
2
|
+
import type { StepServiceIdentity } from "../evidence/setup-progress.js";
|
|
3
|
+
import type { LocalPostgresState } from "./state-files.js";
|
|
4
|
+
import type { DatabaseTemplateStepOptions } from "./template-steps.js";
|
|
5
|
+
export declare const DATABASE_ROLES_LOCK: readonly [1952805748, 1919904869];
|
|
6
|
+
type DatabaseRoleConfig = NormalizedDatabaseConfig["roles"][number];
|
|
7
|
+
interface DatabaseRoleServiceConfig extends StepServiceIdentity {
|
|
8
|
+
productDir: string;
|
|
9
|
+
testkit: {
|
|
10
|
+
database: {
|
|
11
|
+
roles: readonly DatabaseRoleConfig[];
|
|
12
|
+
};
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
interface DatabaseRoleOptions extends Pick<DatabaseTemplateStepOptions, "reporter" | "setupRegistry" | "signal"> {
|
|
16
|
+
timeoutMs?: number;
|
|
17
|
+
}
|
|
18
|
+
export declare function ensureDatabaseRoles(config: Readonly<DatabaseRoleServiceConfig>, infra: Readonly<LocalPostgresState>, options?: Readonly<DatabaseRoleOptions>): Promise<void>;
|
|
19
|
+
export {};
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import{errorMessage as d}from"../kernel/error-serialization.js";import{awaitCapturedResult as R,writeCapturedLine as l}from"../evidence/step-output.js";import{LOCAL_ADMIN_DB as c}from"./constants.js";import{escapeSqlLiteral as S}from"./naming.js";import{runDockerPsql as A}from"./postgres/index.js";export const DATABASE_ROLES_LOCK=[1952805748,1919904869];const T=6e4;export async function ensureDatabaseRoles(t,i,e={}){const o=t.testkit.database.roles;if(o.length===0)return;const s=e.setupRegistry?.start({config:t,kind:"database-prerequisites",stage:"database-prerequisites",summary:"ensure declared PostgreSQL roles"}),n=s?._logRecord||null;try{e.signal?.throwIfAborted();const r=e.timeoutMs??T;if(!Number.isSafeInteger(r)||r<=0)throw new Error("PostgreSQL role setup timeout must be a positive integer");if(o.some(O=>O.name===i.user))throw new Error("A declared PostgreSQL role cannot be the owned bootstrap user");const E=await A({args:["-X","-v","ON_ERROR_STOP=1","-c",L(o,r)],connection:{...i,database:c},ownedContainer:{containerId:i.containerId,containerPort:i.containerPort},cwd:t.productDir,env:{...process.env,PGAPPNAME:"testkit:database-prerequisites"},signal:e.signal,timeoutMs:r});R(E,{logRecord:n});const a=s&&e.setupRegistry?.finish(s,{status:"passed",summary:"declared PostgreSQL roles ready"});a&&e.reporter?.setupOperationFinished?.(a)}catch(r){const E=e.signal?.aborted?e.signal.reason:r;E!==r&&l(n,"stderr",d(r)),l(n,"stderr",d(E));const a=s&&e.setupRegistry?.finish(s,{status:e.signal?.aborted?"cancelled":"failed",error:d(E)});throw a&&e.reporter?.setupOperationFinished?.(a),E}}function L(t,i){const e=t.map(s=>N(s.name)).join(", "),o=`DECLARE
|
|
2
|
+
desired text;
|
|
3
|
+
existing pg_authid%ROWTYPE;
|
|
4
|
+
conflicts text[];
|
|
5
|
+
created text[] := ARRAY[]::text[];
|
|
6
|
+
reused text[] := ARRAY[]::text[];
|
|
7
|
+
BEGIN
|
|
8
|
+
PERFORM pg_advisory_xact_lock(${DATABASE_ROLES_LOCK.join(", ")});
|
|
9
|
+
FOREACH desired IN ARRAY ARRAY[${e}]::text[] LOOP
|
|
10
|
+
SELECT * INTO existing FROM pg_authid WHERE rolname = desired;
|
|
11
|
+
IF NOT FOUND THEN
|
|
12
|
+
EXECUTE format('CREATE ROLE %I WITH NOLOGIN INHERIT NOSUPERUSER NOCREATEDB NOCREATEROLE NOREPLICATION NOBYPASSRLS CONNECTION LIMIT -1 PASSWORD NULL', desired);
|
|
13
|
+
created := array_append(created, desired);
|
|
14
|
+
ELSE
|
|
15
|
+
conflicts := array_remove(ARRAY[
|
|
16
|
+
CASE WHEN existing.rolcanlogin THEN 'LOGIN' END,
|
|
17
|
+
CASE WHEN existing.rolsuper THEN 'SUPERUSER' END,
|
|
18
|
+
CASE WHEN existing.rolcreatedb THEN 'CREATEDB' END,
|
|
19
|
+
CASE WHEN existing.rolcreaterole THEN 'CREATEROLE' END,
|
|
20
|
+
CASE WHEN existing.rolreplication THEN 'REPLICATION' END,
|
|
21
|
+
CASE WHEN existing.rolbypassrls THEN 'BYPASSRLS' END,
|
|
22
|
+
CASE WHEN NOT existing.rolinherit THEN 'NOINHERIT' END,
|
|
23
|
+
CASE WHEN existing.rolconnlimit <> -1 THEN 'CONNECTION LIMIT' END,
|
|
24
|
+
CASE WHEN existing.rolpassword IS NOT NULL THEN 'PASSWORD' END,
|
|
25
|
+
CASE WHEN existing.rolvaliduntil IS NOT NULL THEN 'VALID UNTIL' END,
|
|
26
|
+
CASE WHEN EXISTS (SELECT FROM pg_auth_members WHERE roleid = existing.oid OR member = existing.oid) THEN 'memberships' END,
|
|
27
|
+
CASE WHEN EXISTS (SELECT FROM pg_db_role_setting WHERE setrole = existing.oid) THEN 'role settings' END
|
|
28
|
+
], NULL);
|
|
29
|
+
IF cardinality(conflicts) > 0 THEN
|
|
30
|
+
RAISE EXCEPTION 'PostgreSQL role "%" conflicts with declared NOLOGIN role: %', desired, array_to_string(conflicts, ', ');
|
|
31
|
+
END IF;
|
|
32
|
+
reused := array_append(reused, desired);
|
|
33
|
+
END IF;
|
|
34
|
+
END LOOP;
|
|
35
|
+
FOREACH desired IN ARRAY created LOOP
|
|
36
|
+
RAISE NOTICE 'Created declared PostgreSQL role "%"', desired;
|
|
37
|
+
END LOOP;
|
|
38
|
+
FOREACH desired IN ARRAY reused LOOP
|
|
39
|
+
RAISE NOTICE 'Reused declared PostgreSQL role "%"', desired;
|
|
40
|
+
END LOOP;
|
|
41
|
+
END`;return`BEGIN; SET LOCAL statement_timeout = ${N(String(i))}; DO ${N(o)}; COMMIT;`}function N(t){return`E'${S(t).replaceAll("\\","\\\\")}'`}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type NormalizedDatabaseConfig, type NormalizedDatabaseTemplateConfig, type NormalizedSourceSchemaConfig } from "../config/loader/index.js";
|
|
2
|
+
import { type TemplateResolutionContext } from "../steps/index.js";
|
|
3
|
+
export declare function finalizeRuntimeDatabaseConfig(database: NormalizedDatabaseConfig | null | undefined, context: TemplateResolutionContext): import("../config/loader/database-materialization.js").MaterializedDatabaseConfig<{
|
|
4
|
+
sourceSchema: NormalizedSourceSchemaConfig | null;
|
|
5
|
+
template: NormalizedDatabaseTemplateConfig;
|
|
6
|
+
image?: string | undefined;
|
|
7
|
+
password?: string | undefined;
|
|
8
|
+
user?: string | undefined;
|
|
9
|
+
binding: import("../config/loader/execution-model.js").DatabaseBinding;
|
|
10
|
+
maxConnections: number | undefined;
|
|
11
|
+
reservedConnections: number | undefined;
|
|
12
|
+
reset: boolean;
|
|
13
|
+
roles: import("../config/authoring/index.js").DatabaseRoleConfig[];
|
|
14
|
+
runtimeConnections: number | undefined;
|
|
15
|
+
serviceName: string;
|
|
16
|
+
}> | undefined;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{materializeDatabaseConfig as u}from"../config/loader/index.js";import{finalizeConfiguredInputs as t,finalizeConfiguredSteps as f}from"../steps/configured-steps.js";import{finalizeString as r}from"../steps/index.js";export function finalizeRuntimeDatabaseConfig(i,n){return i?u({...i,sourceSchema:a(i.sourceSchema,n),template:o(i.template,n)}):void 0}function o(i,n){return i?{inputs:t(i.inputs,e=>r(e,n)),migrate:f(i.migrate,e=>r(e,n)),seed:f(i.seed,e=>r(e,n)),verify:f(i.verify,e=>r(e,n))}:{inputs:[],migrate:[],seed:[],verify:[]}}function a(i,n){return i?{...i,..."env"in i&&typeof i.env=="string"?{env:r(i.env,n)}:{}}:null}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { type DatabaseMaterializationInput } from "../config/loader/index.js";
|
|
2
|
+
export interface DatabaseReservationService {
|
|
3
|
+
name: string;
|
|
4
|
+
testkit: {
|
|
5
|
+
database?: DatabaseMaterializationInput | null;
|
|
6
|
+
};
|
|
7
|
+
}
|
|
8
|
+
export interface RuntimeDatabaseReservation {
|
|
9
|
+
available: number;
|
|
10
|
+
capacity: number;
|
|
11
|
+
key: string;
|
|
12
|
+
kind: "postgres";
|
|
13
|
+
perRuntime: number;
|
|
14
|
+
reserved: number;
|
|
15
|
+
resourceName: "local";
|
|
16
|
+
scope: "local";
|
|
17
|
+
services: string[];
|
|
18
|
+
}
|
|
19
|
+
export declare function buildGraphResourceReservations(runtimeConfigs: readonly DatabaseReservationService[]): RuntimeDatabaseReservation[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import{materializeDatabaseConfig as r}from"../config/loader/index.js";export function buildGraphResourceReservations(c){const n=new Map;for(const e of c){const t=e.testkit.database,a=t?r(t):void 0;if(!a)continue;const o="postgres:local",s=n.get(o)||{key:o,kind:"postgres",scope:"local",resourceName:"local",capacity:a.maxConnections,reserved:a.reservedConnections||0,perRuntime:0,services:[]};s.capacity=Math.max(s.capacity||0,a.maxConnections||0),s.reserved=Math.max(s.reserved||0,a.reservedConnections||0),s.perRuntime+=a.runtimeConnections||1,s.services.push(e.name),n.set(o,s)}return[...n.values()].map(e=>({...e,available:Math.max(0,(e.capacity||0)-(e.reserved||0)),services:[...new Set(e.services)].sort()})).sort((e,t)=>e.key.localeCompare(t.key))}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { type DatabaseRuntimeConfig } from "./index.js";
|
|
2
|
+
import type { DatabaseProgress } from "./progress.js";
|
|
3
|
+
import { type RefreshedSourceSchemaState } from "./schema-source.js";
|
|
4
|
+
export interface ResolvedSchemaOperationPlan {
|
|
5
|
+
/** Configs in provisioning order; dependencies before dependents. */
|
|
6
|
+
configs: readonly DatabaseRuntimeConfig[];
|
|
7
|
+
target: DatabaseRuntimeConfig;
|
|
8
|
+
}
|
|
9
|
+
export type SchemaOperationConfigResolver = (runtimeRootDir: string) => ResolvedSchemaOperationPlan;
|
|
10
|
+
export interface DatabaseSchemaOperationContext {
|
|
11
|
+
progress?: DatabaseProgress | null;
|
|
12
|
+
signal?: AbortSignal;
|
|
13
|
+
}
|
|
14
|
+
export interface VerifyDatabaseSchemaOptions extends DatabaseSchemaOperationContext {
|
|
15
|
+
skipSchemaSourceVerify?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function verifyDatabaseSchema(productDir: string, resolveConfigs: SchemaOperationConfigResolver, options?: Readonly<VerifyDatabaseSchemaOptions>): Promise<void>;
|
|
18
|
+
export declare function refreshDatabaseSchema(productDir: string, resolveConfigs: SchemaOperationConfigResolver, options?: Readonly<DatabaseSchemaOperationContext>): Promise<RefreshedSourceSchemaState>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
import u from"fs";import{resolveContainedTestkitStateDirectory as f}from"../process/runs/product-state.js";import{makeTempDir as p,removeTempDir as h}from"../process/files/temp-dir.js";import{cleanupOrphanedLocalInfrastructure as y,destroyRuntimeDatabase as l,provisionDatabase as g}from"./index.js";import{forceRefreshSourceSchemaCache as S}from"./schema-source.js";export async function verifyDatabaseSchema(r,o,t={}){await m(r,"verify",o,t,async(e,s)=>{for(const a of e.configs)await s(a)})}export async function refreshDatabaseSchema(r,o,t={}){return m(r,"refresh",o,t,async(e,s)=>{for(const a of e.configs){if(a.name===e.target.name)break;await s(a)}return S(e.target,null,{reporter:t.progress?.reporter||null,setupRegistry:t.progress?.setupRegistry||null,signal:t.signal})})}async function m(r,o,t,e,s){const a=v(r,o),c=[];try{const n=t(a.path);return await s(n,async i=>{i.testkit.database&&(c.push(i.stateDir),await g(i,{progress:e.progress,signal:e.signal,skipSchemaSourceVerify:e.skipSchemaSourceVerify}))})}finally{for(const n of c.reverse())await l({productDir:r,stateDir:n}).catch(()=>{});await y(r).catch(()=>{}),a.remove()}}function v(r,o){const t=f(r);u.mkdirSync(t,{recursive:!0});const e=f(r),s=p(`_schema-${o}-`,{parentDir:e});let a=!1;return{path:s,remove(){a||(a=!0,h(s))}}}
|