@warlock.js/core 5.30.0 → 5.32.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/CHANGELOG.md +165 -36
- package/README.md +28 -23
- package/bin/source-load-hook.mjs +63 -0
- package/bin/warlock.js +102 -42
- package/esm/application/app.d.mts +3 -3
- package/esm/application/app.d.mts.map +1 -1
- package/esm/application/application-config-types.d.mts +1 -2
- package/esm/application/application-config-types.d.mts.map +1 -1
- package/esm/application/application.d.mts +5 -7
- package/esm/application/application.d.mts.map +1 -1
- package/esm/application/application.mjs +3 -1
- package/esm/application/application.mjs.map +1 -1
- package/esm/application/boot-signal.d.mts +14 -12
- package/esm/application/boot-signal.d.mts.map +1 -1
- package/esm/application/index.d.mts +2 -1
- package/esm/application/index.mjs +1 -1
- package/esm/application/public-url.d.mts +1 -2
- package/esm/application/public-url.d.mts.map +1 -1
- package/esm/application/roles.d.mts +10 -11
- package/esm/application/roles.d.mts.map +1 -1
- package/esm/benchmark/benchmark-snapshots.d.mts +1 -3
- package/esm/benchmark/benchmark-snapshots.d.mts.map +1 -1
- package/esm/benchmark/benchmark.d.mts +1 -3
- package/esm/benchmark/benchmark.d.mts.map +1 -1
- package/esm/benchmark/channels/console.channel.d.mts +1 -3
- package/esm/benchmark/channels/console.channel.d.mts.map +1 -1
- package/esm/benchmark/channels/noop.channel.d.mts +1 -3
- package/esm/benchmark/channels/noop.channel.d.mts.map +1 -1
- package/esm/benchmark/index.mjs +1 -1
- package/esm/benchmark/profiler.d.mts +1 -3
- package/esm/benchmark/profiler.d.mts.map +1 -1
- package/esm/benchmark/profiler.mjs +2 -1
- package/esm/benchmark/profiler.mjs.map +1 -1
- package/esm/benchmark/types.d.mts +22 -17
- package/esm/benchmark/types.d.mts.map +1 -1
- package/esm/bootstrap/setup.d.mts +1 -2
- package/esm/bootstrap/setup.d.mts.map +1 -1
- package/esm/bootstrap.d.mts +1 -2
- package/esm/bootstrap.d.mts.map +1 -1
- package/esm/cache/database-cache-driver.d.mts +3 -5
- package/esm/cache/database-cache-driver.d.mts.map +1 -1
- package/esm/cache/database-cache-driver.mjs +1 -1
- package/esm/cache/index.d.mts +2 -1
- package/esm/cache/index.mjs +1 -1
- package/esm/cli/cli-commands.manager.mjs +6 -3
- package/esm/cli/cli-commands.manager.mjs.map +1 -1
- package/esm/cli/commands/add.command.mjs +4 -2
- package/esm/cli/commands/add.command.mjs.map +1 -1
- package/esm/cli/commands/agents-md/agents-md-command.action.mjs +70 -0
- package/esm/cli/commands/agents-md/agents-md-command.action.mjs.map +1 -0
- package/esm/cli/commands/agents-md.command.mjs +38 -0
- package/esm/cli/commands/agents-md.command.mjs.map +1 -0
- package/esm/cli/commands/board/board-command.action.mjs +279 -0
- package/esm/cli/commands/board/board-command.action.mjs.map +1 -0
- package/esm/cli/commands/board.command.mjs +78 -0
- package/esm/cli/commands/board.command.mjs.map +1 -0
- package/esm/cli/commands/build.command.mjs +6 -1
- package/esm/cli/commands/build.command.mjs.map +1 -1
- package/esm/cli/commands/check/check-command.action.mjs +57 -0
- package/esm/cli/commands/check/check-command.action.mjs.map +1 -0
- package/esm/cli/commands/check/child-typecheck.mjs +66 -0
- package/esm/cli/commands/check/child-typecheck.mjs.map +1 -0
- package/esm/cli/commands/check/format-problems.mjs +43 -0
- package/esm/cli/commands/check/format-problems.mjs.map +1 -0
- package/esm/cli/commands/check/typecheck-command.action.mjs +61 -0
- package/esm/cli/commands/check/typecheck-command.action.mjs.map +1 -0
- package/esm/cli/commands/check.command.mjs +50 -0
- package/esm/cli/commands/check.command.mjs.map +1 -0
- package/esm/cli/commands/dev-server.command.mjs +12 -3
- package/esm/cli/commands/dev-server.command.mjs.map +1 -1
- package/esm/cli/commands/doctor/boot-for-diagnostics.mjs +8 -3
- package/esm/cli/commands/doctor/boot-for-diagnostics.mjs.map +1 -1
- package/esm/cli/commands/doctor/check.types.d.mts +89 -0
- package/esm/cli/commands/doctor/check.types.d.mts.map +1 -0
- package/esm/cli/commands/doctor/checks/config.check.mjs +1 -0
- package/esm/cli/commands/doctor/checks/config.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/connectors.check.mjs +2 -0
- package/esm/cli/commands/doctor/checks/connectors.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/handler-signature.check.mjs +1 -0
- package/esm/cli/commands/doctor/checks/handler-signature.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/health.check.mjs +3 -0
- package/esm/cli/commands/doctor/checks/health.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/jwt-secret.check.mjs +1 -0
- package/esm/cli/commands/doctor/checks/jwt-secret.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/locales-ts-deprecated.check.mjs +23 -27
- package/esm/cli/commands/doctor/checks/locales-ts-deprecated.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/optional-peers.check.mjs +1 -0
- package/esm/cli/commands/doctor/checks/optional-peers.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs +4 -0
- package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/routes.check.mjs +3 -0
- package/esm/cli/commands/doctor/checks/routes.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/doctor-command.action.mjs +15 -6
- package/esm/cli/commands/doctor/doctor-command.action.mjs.map +1 -1
- package/esm/cli/commands/doctor/format-report.mjs +30 -2
- package/esm/cli/commands/doctor/format-report.mjs.map +1 -1
- package/esm/cli/commands/doctor.command.mjs +4 -0
- package/esm/cli/commands/doctor.command.mjs.map +1 -1
- package/esm/cli/commands/explain/explain-command.action.mjs +64 -0
- package/esm/cli/commands/explain/explain-command.action.mjs.map +1 -0
- package/esm/cli/commands/explain.command.mjs +23 -0
- package/esm/cli/commands/explain.command.mjs.map +1 -0
- package/esm/cli/commands/generate/generate.command.mjs +124 -124
- package/esm/cli/commands/generate/generate.command.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/controller.generator.mjs +5 -2
- package/esm/cli/commands/generate/generators/controller.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/endpoint.generator.mjs +313 -0
- package/esm/cli/commands/generate/generators/endpoint.generator.mjs.map +1 -0
- package/esm/cli/commands/generate/generators/migration.generator.mjs +1 -1
- package/esm/cli/commands/generate/generators/migration.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/model.generator.mjs +4 -3
- package/esm/cli/commands/generate/generators/model.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/repository.generator.mjs +3 -1
- package/esm/cli/commands/generate/generators/repository.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/resource.generator.mjs +3 -1
- package/esm/cli/commands/generate/generators/resource.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/service.generator.mjs +3 -1
- package/esm/cli/commands/generate/generators/service.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/templates/endpoint-stubs.mjs +341 -0
- package/esm/cli/commands/generate/templates/endpoint-stubs.mjs.map +1 -0
- package/esm/cli/commands/generate/templates/stubs.mjs +19 -6
- package/esm/cli/commands/generate/templates/stubs.mjs.map +1 -1
- package/esm/cli/commands/generate/utils/endpoint-schema.mjs +136 -0
- package/esm/cli/commands/generate/utils/endpoint-schema.mjs.map +1 -0
- package/esm/cli/commands/generate/utils/name-parser.mjs +2 -2
- package/esm/cli/commands/generate/utils/name-parser.mjs.map +1 -1
- package/esm/cli/commands/generate/utils/path-resolver.mjs +1 -1
- package/esm/cli/commands/generate/utils/prompt.mjs.map +1 -1
- package/esm/cli/commands/generate/utils/writer.mjs +38 -13
- package/esm/cli/commands/generate/utils/writer.mjs.map +1 -1
- package/esm/cli/commands/inspect/inspect-command.action.mjs +73 -0
- package/esm/cli/commands/inspect/inspect-command.action.mjs.map +1 -0
- package/esm/cli/commands/inspect.command.mjs +39 -0
- package/esm/cli/commands/inspect.command.mjs.map +1 -0
- package/esm/cli/commands/issue/collect-environment.mjs +187 -0
- package/esm/cli/commands/issue/collect-environment.mjs.map +1 -0
- package/esm/cli/commands/issue/issue-command.action.mjs +70 -0
- package/esm/cli/commands/issue/issue-command.action.mjs.map +1 -0
- package/esm/cli/commands/issue.command.mjs +31 -0
- package/esm/cli/commands/issue.command.mjs.map +1 -0
- package/esm/cli/commands/mcp/mcp-command.action.mjs +104 -0
- package/esm/cli/commands/mcp/mcp-command.action.mjs.map +1 -0
- package/esm/cli/commands/mcp.command.mjs +76 -0
- package/esm/cli/commands/mcp.command.mjs.map +1 -0
- package/esm/cli/commands/openapi-generator.action.mjs +1 -1
- package/esm/cli/commands/openapi-generator.action.mjs.map +1 -1
- package/esm/cli/commands/openapi-generator.command.mjs.map +1 -1
- package/esm/cli/commands/postman-generator.action.mjs +1 -1
- package/esm/cli/commands/postman-generator.action.mjs.map +1 -1
- package/esm/cli/commands/postman-generator.command.mjs.map +1 -1
- package/esm/cli/commands/routes/format-routes-table.mjs +1 -1
- package/esm/cli/commands/routes/route-row.mjs +1 -1
- package/esm/cli/commands/routes/routes-diff.action.mjs +3 -3
- package/esm/cli/commands/routes/routes-diff.action.mjs.map +1 -1
- package/esm/cli/commands/test.command.mjs +131 -0
- package/esm/cli/commands/test.command.mjs.map +1 -0
- package/esm/cli/commands/trace/trace-command.action.mjs +145 -0
- package/esm/cli/commands/trace/trace-command.action.mjs.map +1 -0
- package/esm/cli/commands/trace.command.mjs +60 -0
- package/esm/cli/commands/trace.command.mjs.map +1 -0
- package/esm/cli/commands/typecheck.command.mjs +40 -0
- package/esm/cli/commands/typecheck.command.mjs.map +1 -0
- package/esm/cli/commands/upgrade.command.mjs +46 -0
- package/esm/cli/commands/upgrade.command.mjs.map +1 -0
- package/esm/cli/commands-loader.mjs +1 -1
- package/esm/cli/flush-and-exit.mjs +34 -0
- package/esm/cli/flush-and-exit.mjs.map +1 -0
- package/esm/cli/framework-cli-commands.mjs +25 -1
- package/esm/cli/framework-cli-commands.mjs.map +1 -1
- package/esm/cli/parse-cli-args.mjs +3 -2
- package/esm/cli/parse-cli-args.mjs.map +1 -1
- package/esm/cli/start.d.mts +1 -1
- package/esm/cli/string-similarity.mjs +1 -1
- package/esm/commands/cli-command.d.mts +2 -4
- package/esm/commands/cli-command.d.mts.map +1 -1
- package/esm/commands/index.d.mts +2 -1
- package/esm/commands/index.mjs +1 -1
- package/esm/commands/types.d.mts +8 -8
- package/esm/commands/types.d.mts.map +1 -1
- package/esm/config/config-getter.d.mts +2 -3
- package/esm/config/config-getter.d.mts.map +1 -1
- package/esm/config/config-getter.mjs +5 -5
- package/esm/config/config-getter.mjs.map +1 -1
- package/esm/config/config-handlers.d.mts +1 -3
- package/esm/config/config-handlers.d.mts.map +1 -1
- package/esm/config/config-loader.d.mts +1 -2
- package/esm/config/config-loader.d.mts.map +1 -1
- package/esm/config/config-loader.mjs +35 -14
- package/esm/config/config-loader.mjs.map +1 -1
- package/esm/config/config-manager.mjs +1 -1
- package/esm/config/config-schema.d.mts +70 -0
- package/esm/config/config-schema.d.mts.map +1 -0
- package/esm/config/config-schema.mjs +77 -0
- package/esm/config/config-schema.mjs.map +1 -0
- package/esm/config/config-setter.d.mts +2 -4
- package/esm/config/config-setter.d.mts.map +1 -1
- package/esm/config/config-setter.mjs +2 -2
- package/esm/config/config-setter.mjs.map +1 -1
- package/esm/config/config-special-handlers.d.mts +2 -4
- package/esm/config/config-special-handlers.d.mts.map +1 -1
- package/esm/config/index.d.mts +7 -0
- package/esm/config/index.mjs +2 -1
- package/esm/config/types.d.mts +4 -5
- package/esm/config/types.d.mts.map +1 -1
- package/esm/connectors/access-connector.d.mts +1 -3
- package/esm/connectors/access-connector.d.mts.map +1 -1
- package/esm/connectors/access-connector.mjs +2 -2
- package/esm/connectors/access-connector.mjs.map +1 -1
- package/esm/connectors/ai-connector.d.mts +1 -3
- package/esm/connectors/ai-connector.d.mts.map +1 -1
- package/esm/connectors/ai-connector.mjs +2 -2
- package/esm/connectors/ai-connector.mjs.map +1 -1
- package/esm/connectors/assert-no-reserved-connector-names.d.mts +1 -3
- package/esm/connectors/assert-no-reserved-connector-names.d.mts.map +1 -1
- package/esm/connectors/assert-no-reserved-connector-names.mjs +2 -1
- package/esm/connectors/assert-no-reserved-connector-names.mjs.map +1 -1
- package/esm/connectors/assert-unique-connector-names.d.mts +1 -3
- package/esm/connectors/assert-unique-connector-names.d.mts.map +1 -1
- package/esm/connectors/assert-unique-connector-names.mjs +26 -1
- package/esm/connectors/assert-unique-connector-names.mjs.map +1 -1
- package/esm/connectors/base-connector.d.mts +1 -3
- package/esm/connectors/base-connector.d.mts.map +1 -1
- package/esm/connectors/cache-connector.d.mts +1 -3
- package/esm/connectors/cache-connector.d.mts.map +1 -1
- package/esm/connectors/cache-connector.mjs +3 -3
- package/esm/connectors/cache-connector.mjs.map +1 -1
- package/esm/connectors/connectors-manager.d.mts +2 -4
- package/esm/connectors/connectors-manager.d.mts.map +1 -1
- package/esm/connectors/connectors-manager.mjs +2 -2
- package/esm/connectors/connectors-manager.mjs.map +1 -1
- package/esm/connectors/database-connector.d.mts +1 -3
- package/esm/connectors/database-connector.d.mts.map +1 -1
- package/esm/connectors/database-connector.mjs +2 -2
- package/esm/connectors/database-connector.mjs.map +1 -1
- package/esm/connectors/describe-server-address.mjs +4 -4
- package/esm/connectors/describe-server-address.mjs.map +1 -1
- package/esm/connectors/herald-connector.d.mts +1 -3
- package/esm/connectors/herald-connector.d.mts.map +1 -1
- package/esm/connectors/herald-connector.mjs +2 -2
- package/esm/connectors/herald-connector.mjs.map +1 -1
- package/esm/connectors/http-connector.d.mts +1 -3
- package/esm/connectors/http-connector.d.mts.map +1 -1
- package/esm/connectors/http-connector.mjs +11 -9
- package/esm/connectors/http-connector.mjs.map +1 -1
- package/esm/connectors/index.d.mts +2 -1
- package/esm/connectors/index.mjs +1 -1
- package/esm/connectors/logger-connector.d.mts +1 -3
- package/esm/connectors/logger-connector.d.mts.map +1 -1
- package/esm/connectors/logger-connector.mjs +2 -2
- package/esm/connectors/logger-connector.mjs.map +1 -1
- package/esm/connectors/mail-connector.d.mts +1 -3
- package/esm/connectors/mail-connector.d.mts.map +1 -1
- package/esm/connectors/mail-connector.mjs +2 -2
- package/esm/connectors/mail-connector.mjs.map +1 -1
- package/esm/connectors/notifications-connector.d.mts +1 -3
- package/esm/connectors/notifications-connector.d.mts.map +1 -1
- package/esm/connectors/notifications-connector.mjs +2 -2
- package/esm/connectors/notifications-connector.mjs.map +1 -1
- package/esm/connectors/register-configured-connectors.d.mts +2 -4
- package/esm/connectors/register-configured-connectors.d.mts.map +1 -1
- package/esm/connectors/single-server-warnings.mjs.map +1 -1
- package/esm/connectors/socket-connector.d.mts +1 -3
- package/esm/connectors/socket-connector.d.mts.map +1 -1
- package/esm/connectors/socket-connector.mjs +12 -10
- package/esm/connectors/socket-connector.mjs.map +1 -1
- package/esm/connectors/storage.connector.d.mts +1 -3
- package/esm/connectors/storage.connector.d.mts.map +1 -1
- package/esm/connectors/storage.connector.mjs +2 -2
- package/esm/connectors/storage.connector.mjs.map +1 -1
- package/esm/connectors/types.d.mts +17 -14
- package/esm/connectors/types.d.mts.map +1 -1
- package/esm/container/container-instance-registry.mjs.map +1 -1
- package/esm/container/development-app-modules.d.mts +7 -5
- package/esm/container/development-app-modules.d.mts.map +1 -1
- package/esm/container/development-model-modules.d.mts +6 -5
- package/esm/container/development-model-modules.d.mts.map +1 -1
- package/esm/container/index.d.mts +4 -4
- package/esm/container/index.d.mts.map +1 -1
- package/esm/container/index.mjs.map +1 -1
- package/esm/database/index.d.mts +3 -1
- package/esm/database/index.mjs +1 -1
- package/esm/database/migrate-action.mjs +1 -1
- package/esm/database/migrate-action.mjs.map +1 -1
- package/esm/database/models/database-log/database-log.d.mts +2 -31
- package/esm/database/models/database-log/database-log.d.mts.map +1 -1
- package/esm/database/models/database-log/index.d.mts +2 -1
- package/esm/database/models/database-log/index.mjs +1 -1
- package/esm/database/seed-command-action.mjs +1 -1
- package/esm/database/seeds/seeder.d.mts +2 -4
- package/esm/database/seeds/seeder.d.mts.map +1 -1
- package/esm/database/seeds/seeder.errors.d.mts +6 -3
- package/esm/database/seeds/seeder.errors.d.mts.map +1 -1
- package/esm/database/seeds/seeder.errors.mjs +2 -0
- package/esm/database/seeds/seeder.errors.mjs.map +1 -1
- package/esm/database/seeds/seeders.manager.mjs +2 -1
- package/esm/database/seeds/seeders.manager.mjs.map +1 -1
- package/esm/database/seeds/types.d.mts +7 -8
- package/esm/database/seeds/types.d.mts.map +1 -1
- package/esm/database/utils.d.mts +4 -5
- package/esm/database/utils.d.mts.map +1 -1
- package/esm/dev-server/app-module-registry.mjs +1 -1
- package/esm/dev-server/boot-precondition-error.mjs +1 -0
- package/esm/dev-server/boot-precondition-error.mjs.map +1 -1
- package/esm/dev-server/create-worker.mjs +17 -9
- package/esm/dev-server/create-worker.mjs.map +1 -1
- package/esm/dev-server/dependency-graph.d.mts +1 -3
- package/esm/dev-server/dependency-graph.d.mts.map +1 -1
- package/esm/dev-server/dependency-graph.mjs +1 -1
- package/esm/dev-server/dependency-graph.mjs.map +1 -1
- package/esm/dev-server/dev-agent-tooling.mjs +135 -0
- package/esm/dev-server/dev-agent-tooling.mjs.map +1 -0
- package/esm/dev-server/dev-logger.mjs.map +1 -1
- package/esm/dev-server/development-server.mjs +8 -0
- package/esm/dev-server/development-server.mjs.map +1 -1
- package/esm/dev-server/extract-translation-keys.mjs +16 -17
- package/esm/dev-server/extract-translation-keys.mjs.map +1 -1
- package/esm/dev-server/file-manager.d.mts +3 -7
- package/esm/dev-server/file-manager.d.mts.map +1 -1
- package/esm/dev-server/file-operations.d.mts +1 -3
- package/esm/dev-server/file-operations.d.mts.map +1 -1
- package/esm/dev-server/files-orchestrator.mjs +4 -5
- package/esm/dev-server/files-orchestrator.mjs.map +1 -1
- package/esm/dev-server/files-watcher.mjs +12 -11
- package/esm/dev-server/files-watcher.mjs.map +1 -1
- package/esm/dev-server/health-checker/checkers/eslint-health-checker.mjs +2 -3
- package/esm/dev-server/health-checker/checkers/eslint-health-checker.mjs.map +1 -1
- package/esm/dev-server/health-checker/checkers/oxlint-health-checker.mjs +33 -0
- package/esm/dev-server/health-checker/checkers/oxlint-health-checker.mjs.map +1 -0
- package/esm/dev-server/health-checker/checkers/typescript-health-checker.mjs +36 -115
- package/esm/dev-server/health-checker/checkers/typescript-health-checker.mjs.map +1 -1
- package/esm/dev-server/health-checker/default-health-checkers.mjs +31 -0
- package/esm/dev-server/health-checker/default-health-checkers.mjs.map +1 -0
- package/esm/dev-server/health-checker/file-health-checker.contract.d.mts +12 -6
- package/esm/dev-server/health-checker/file-health-checker.contract.d.mts.map +1 -1
- package/esm/dev-server/health-checker/file-health-result.d.mts +2 -2
- package/esm/dev-server/health-checker/file-health-result.d.mts.map +1 -1
- package/esm/dev-server/health-checker/files-healthcare.manager.mjs +16 -4
- package/esm/dev-server/health-checker/files-healthcare.manager.mjs.map +1 -1
- package/esm/dev-server/health-checker/oxlint-runner.mjs +303 -0
- package/esm/dev-server/health-checker/oxlint-runner.mjs.map +1 -0
- package/esm/dev-server/health-checker/workers/eslint-health.worker.d.mts +1 -1
- package/esm/dev-server/health-checker/workers/oxlint-health.worker.d.mts +1 -0
- package/esm/dev-server/health-checker/workers/oxlint-health.worker.mjs +42 -0
- package/esm/dev-server/health-checker/workers/oxlint-health.worker.mjs.map +1 -0
- package/esm/dev-server/health-checker/workers/ts-health.worker.d.mts +1 -1
- package/esm/dev-server/health-checker/workers/ts-health.worker.mjs +40 -174
- package/esm/dev-server/health-checker/workers/ts-health.worker.mjs.map +1 -1
- package/esm/dev-server/loader/hook-thread.d.mts +4 -8
- package/esm/dev-server/loader/hook-thread.d.mts.map +1 -1
- package/esm/dev-server/loader/load-hook.d.mts +10 -6
- package/esm/dev-server/loader/load-hook.d.mts.map +1 -1
- package/esm/dev-server/loader/load-hook.mjs +4 -3
- package/esm/dev-server/loader/load-hook.mjs.map +1 -1
- package/esm/dev-server/loader/loader-port-acks.mjs +1 -1
- package/esm/dev-server/loader/loader-port-acks.mjs.map +1 -1
- package/esm/dev-server/loader/own-resolver.mjs +1 -1
- package/esm/dev-server/loader/register-loader.mjs +4 -3
- package/esm/dev-server/loader/register-loader.mjs.map +1 -1
- package/esm/dev-server/loader/resolve-hook.d.mts +2 -2
- package/esm/dev-server/loader/resolve-hook.d.mts.map +1 -1
- package/esm/dev-server/loader/resolve-hook.mjs +3 -2
- package/esm/dev-server/loader/resolve-hook.mjs.map +1 -1
- package/esm/dev-server/loader/transpile-cache.mjs +3 -2
- package/esm/dev-server/loader/transpile-cache.mjs.map +1 -1
- package/esm/dev-server/manifest-manager.d.mts +1 -3
- package/esm/dev-server/manifest-manager.d.mts.map +1 -1
- package/esm/dev-server/model-module-registry.mjs +3 -3
- package/esm/dev-server/model-module-registry.mjs.map +1 -1
- package/esm/dev-server/model-resource-typings.mjs +40 -47
- package/esm/dev-server/model-resource-typings.mjs.map +1 -1
- package/esm/dev-server/module-loader.mjs +3 -2
- package/esm/dev-server/module-loader.mjs.map +1 -1
- package/esm/dev-server/package-json-manager.mjs +1 -1
- package/esm/dev-server/parse-imports.mjs +7 -39
- package/esm/dev-server/parse-imports.mjs.map +1 -1
- package/esm/dev-server/read-config-ast.mjs +3 -33
- package/esm/dev-server/read-config-ast.mjs.map +1 -1
- package/esm/dev-server/ready-block.mjs +1 -1
- package/esm/dev-server/route-types-publisher.mjs +1 -1
- package/esm/dev-server/shortcuts.mjs +1 -1
- package/esm/dev-server/special-files-collector.d.mts +2 -4
- package/esm/dev-server/special-files-collector.d.mts.map +1 -1
- package/esm/dev-server/start-development-server.mjs.map +1 -1
- package/esm/dev-server/supervisor.mjs +1 -1
- package/esm/dev-server/translation-keys-sources.mjs +1 -1
- package/esm/dev-server/translation-keys-sources.mjs.map +1 -1
- package/esm/dev-server/tsconfig-manager.mjs +3 -3
- package/esm/dev-server/tsconfig-manager.mjs.map +1 -1
- package/esm/dev-server/type-generator.mjs +31 -38
- package/esm/dev-server/type-generator.mjs.map +1 -1
- package/esm/dev-server/types.d.mts +3 -4
- package/esm/dev-server/types.d.mts.map +1 -1
- package/esm/dev-server/update-check-cache.mjs +2 -2
- package/esm/dev-server/update-check-cache.mjs.map +1 -1
- package/esm/encryption/encrypt.d.mts +2 -3
- package/esm/encryption/encrypt.d.mts.map +1 -1
- package/esm/encryption/hash.d.mts +1 -2
- package/esm/encryption/hash.d.mts.map +1 -1
- package/esm/encryption/index.mjs +1 -1
- package/esm/encryption/password.d.mts +2 -3
- package/esm/encryption/password.d.mts.map +1 -1
- package/esm/encryption/types.d.mts +2 -3
- package/esm/encryption/types.d.mts.map +1 -1
- package/esm/errors/container-key-missing-error.mjs +1 -0
- package/esm/errors/container-key-missing-error.mjs.map +1 -1
- package/esm/errors/error-codes.d.mts +660 -0
- package/esm/errors/error-codes.d.mts.map +1 -0
- package/esm/errors/error-codes.mjs +634 -0
- package/esm/errors/error-codes.mjs.map +1 -0
- package/esm/errors/esbuild-binary-missing-error.mjs +1 -0
- package/esm/errors/esbuild-binary-missing-error.mjs.map +1 -1
- package/esm/errors/index.d.mts +3 -1
- package/esm/errors/index.mjs +3 -1
- package/esm/errors/unknown-locale-error.mjs +1 -0
- package/esm/errors/unknown-locale-error.mjs.map +1 -1
- package/esm/errors/warlock-error.d.mts +21 -0
- package/esm/errors/warlock-error.d.mts.map +1 -0
- package/esm/errors/warlock-error.mjs +22 -0
- package/esm/errors/warlock-error.mjs.map +1 -0
- package/esm/generations/add-command.action.mjs +22 -5
- package/esm/generations/add-command.action.mjs.map +1 -1
- package/esm/generations/features/access.feature.mjs +1 -1
- package/esm/generations/features/access.feature.mjs.map +1 -1
- package/esm/generations/features/bull-board.feature.mjs +3 -2
- package/esm/generations/features/bull-board.feature.mjs.map +1 -1
- package/esm/generations/features/mysql.feature.mjs.map +1 -1
- package/esm/generations/features/notifications.feature.mjs +7 -3
- package/esm/generations/features/notifications.feature.mjs.map +1 -1
- package/esm/generations/features/queue.feature.mjs +1 -1
- package/esm/generations/features/queue.feature.mjs.map +1 -1
- package/esm/generations/features/react-email.feature.mjs +1 -1
- package/esm/generations/features/react-email.feature.mjs.map +1 -1
- package/esm/generations/features/shadcn.feature.mjs +1 -1
- package/esm/generations/features/shadcn.feature.mjs.map +1 -1
- package/esm/generations/features/shared/link-ai-package-import.mjs +1 -1
- package/esm/generations/features/shared/link-ai-package-import.mjs.map +1 -1
- package/esm/generations/features/shared/merge-web-sitemap-config.mjs +16 -23
- package/esm/generations/features/shared/merge-web-sitemap-config.mjs.map +1 -1
- package/esm/generations/features/shared/patch-tsconfig-include.mjs +2 -2
- package/esm/generations/features/shared/patch-tsconfig-include.mjs.map +1 -1
- package/esm/generations/features/shared/relocate-conflicting-home-route.mjs +2 -2
- package/esm/generations/features/shared/relocate-conflicting-home-route.mjs.map +1 -1
- package/esm/generations/features/sitemap.feature.mjs +3 -2
- package/esm/generations/features/sitemap.feature.mjs.map +1 -1
- package/esm/generations/features/tailwind.feature.mjs +1 -1
- package/esm/generations/features/tailwind.feature.mjs.map +1 -1
- package/esm/generations/features/test.feature.mjs +11 -6
- package/esm/generations/features/test.feature.mjs.map +1 -1
- package/esm/generations/features/web.feature.mjs +1 -1
- package/esm/generations/features/web.feature.mjs.map +1 -1
- package/esm/generations/generation-fs.mjs +73 -0
- package/esm/generations/generation-fs.mjs.map +1 -0
- package/esm/generations/generation-run.mjs +185 -0
- package/esm/generations/generation-run.mjs.map +1 -0
- package/esm/generations/stubs.mjs +156 -14
- package/esm/generations/stubs.mjs.map +1 -1
- package/esm/http/boot-port-preflight.d.mts +4 -5
- package/esm/http/boot-port-preflight.d.mts.map +1 -1
- package/esm/http/boot-port-preflight.mjs +2 -2
- package/esm/http/boot-port-preflight.mjs.map +1 -1
- package/esm/http/bounded-stream-queue.d.mts +10 -0
- package/esm/http/bounded-stream-queue.d.mts.map +1 -0
- package/esm/http/bounded-stream-queue.mjs +97 -0
- package/esm/http/bounded-stream-queue.mjs.map +1 -0
- package/esm/http/build-cors-options.mjs +2 -2
- package/esm/http/build-cors-options.mjs.map +1 -1
- package/esm/http/build-rate-limit-options.d.mts +15 -3
- package/esm/http/build-rate-limit-options.d.mts.map +1 -1
- package/esm/http/build-rate-limit-options.mjs +1 -1
- package/esm/http/build-rate-limit-options.mjs.map +1 -1
- package/esm/http/conditional-request.d.mts +87 -0
- package/esm/http/conditional-request.d.mts.map +1 -0
- package/esm/http/conditional-request.mjs +121 -0
- package/esm/http/conditional-request.mjs.map +1 -0
- package/esm/http/config.d.mts +2 -4
- package/esm/http/config.d.mts.map +1 -1
- package/esm/http/config.mjs +2 -2
- package/esm/http/config.mjs.map +1 -1
- package/esm/http/context/request-context.d.mts +6 -7
- package/esm/http/context/request-context.d.mts.map +1 -1
- package/esm/http/context/request-memo.d.mts +1 -2
- package/esm/http/context/request-memo.d.mts.map +1 -1
- package/esm/http/createHttpApplication.d.mts +2 -3
- package/esm/http/createHttpApplication.d.mts.map +1 -1
- package/esm/http/createHttpApplication.mjs +2 -2
- package/esm/http/createHttpApplication.mjs.map +1 -1
- package/esm/http/csp.d.mts +12 -12
- package/esm/http/csp.d.mts.map +1 -1
- package/esm/http/csp.mjs +3 -2
- package/esm/http/csp.mjs.map +1 -1
- package/esm/http/csrf-default-guard.d.mts +2 -4
- package/esm/http/csrf-default-guard.d.mts.map +1 -1
- package/esm/http/csrf-default-guard.mjs +1 -1
- package/esm/http/csrf-default-guard.mjs.map +1 -1
- package/esm/http/csrf-origin-policy.d.mts +7 -9
- package/esm/http/csrf-origin-policy.d.mts.map +1 -1
- package/esm/http/csrf-origin-policy.mjs +2 -2
- package/esm/http/csrf-origin-policy.mjs.map +1 -1
- package/esm/http/database/RequestLog.d.mts +26 -87
- package/esm/http/database/RequestLog.d.mts.map +1 -1
- package/esm/http/error-codes.d.mts +1 -2
- package/esm/http/error-codes.d.mts.map +1 -1
- package/esm/http/error-mapper.d.mts +2 -4
- package/esm/http/error-mapper.d.mts.map +1 -1
- package/esm/http/error-mapper.mjs +2 -2
- package/esm/http/error-mapper.mjs.map +1 -1
- package/esm/http/errors/errors.d.mts +30 -29
- package/esm/http/errors/errors.d.mts.map +1 -1
- package/esm/http/errors/errors.mjs +1 -0
- package/esm/http/errors/errors.mjs.map +1 -1
- package/esm/http/escape-header-value.d.mts +17 -0
- package/esm/http/escape-header-value.d.mts.map +1 -0
- package/esm/http/escape-header-value.mjs +27 -0
- package/esm/http/escape-header-value.mjs.map +1 -0
- package/esm/http/events.d.mts +2 -4
- package/esm/http/events.d.mts.map +1 -1
- package/esm/http/flush-pending-cookies.mjs.map +1 -1
- package/esm/http/health.d.mts +4 -4
- package/esm/http/health.d.mts.map +1 -1
- package/esm/http/index.d.mts +9 -3
- package/esm/http/index.mjs +5 -2
- package/esm/http/lazy-static.mjs +194 -0
- package/esm/http/lazy-static.mjs.map +1 -0
- package/esm/http/middleware/cache-response-middleware.d.mts +2 -4
- package/esm/http/middleware/cache-response-middleware.d.mts.map +1 -1
- package/esm/http/middleware/concurrency-limit.middleware.d.mts +3 -3
- package/esm/http/middleware/concurrency-limit.middleware.d.mts.map +1 -1
- package/esm/http/middleware/idempotency.middleware.d.mts +3 -3
- package/esm/http/middleware/idempotency.middleware.d.mts.map +1 -1
- package/esm/http/middleware/idempotency.middleware.mjs +6 -6
- package/esm/http/middleware/idempotency.middleware.mjs.map +1 -1
- package/esm/http/middleware/index.d.mts +3 -1
- package/esm/http/middleware/index.mjs +1 -1
- package/esm/http/middleware/inject-request-context.d.mts +2 -4
- package/esm/http/middleware/inject-request-context.d.mts.map +1 -1
- package/esm/http/middleware/inject-request-context.mjs +3 -3
- package/esm/http/middleware/inject-request-context.mjs.map +1 -1
- package/esm/http/middleware/ip-filter.middleware.d.mts +3 -3
- package/esm/http/middleware/ip-filter.middleware.d.mts.map +1 -1
- package/esm/http/middleware/maintenance.middleware.d.mts +3 -3
- package/esm/http/middleware/maintenance.middleware.d.mts.map +1 -1
- package/esm/http/middleware/maintenance.middleware.mjs +4 -4
- package/esm/http/middleware/maintenance.middleware.mjs.map +1 -1
- package/esm/http/middleware/max-body-size.middleware.d.mts +2 -2
- package/esm/http/middleware/max-body-size.middleware.d.mts.map +1 -1
- package/esm/http/middleware/middleware-list.d.mts +1 -3
- package/esm/http/middleware/middleware-list.d.mts.map +1 -1
- package/esm/http/middleware/rate-limit.middleware.d.mts +3 -3
- package/esm/http/middleware/rate-limit.middleware.d.mts.map +1 -1
- package/esm/http/middleware/rate-limit.middleware.mjs +2 -2
- package/esm/http/middleware/rate-limit.middleware.mjs.map +1 -1
- package/esm/http/middleware/utils/cidr-match.d.mts +2 -3
- package/esm/http/middleware/utils/cidr-match.d.mts.map +1 -1
- package/esm/http/middleware/utils/idempotency-key.d.mts +3 -5
- package/esm/http/middleware/utils/idempotency-key.d.mts.map +1 -1
- package/esm/http/middleware/utils/index.d.mts +2 -1
- package/esm/http/middleware/utils/parse-size.d.mts +1 -2
- package/esm/http/middleware/utils/parse-size.d.mts.map +1 -1
- package/esm/http/middleware/utils/parse-size.mjs +2 -2
- package/esm/http/middleware/utils/parse-size.mjs.map +1 -1
- package/esm/http/plugins.d.mts +2 -4
- package/esm/http/plugins.d.mts.map +1 -1
- package/esm/http/plugins.mjs +17 -14
- package/esm/http/plugins.mjs.map +1 -1
- package/esm/http/port-preflight.d.mts +3 -4
- package/esm/http/port-preflight.d.mts.map +1 -1
- package/esm/http/rate-limit-cache-store.mjs +6 -4
- package/esm/http/rate-limit-cache-store.mjs.map +1 -1
- package/esm/http/ready-report.d.mts +15 -10
- package/esm/http/ready-report.d.mts.map +1 -1
- package/esm/http/request-controller.d.mts +1 -3
- package/esm/http/request-controller.d.mts.map +1 -1
- package/esm/http/request-log-snapshot.d.mts +26 -15
- package/esm/http/request-log-snapshot.d.mts.map +1 -1
- package/esm/http/request-log-snapshot.mjs +85 -6
- package/esm/http/request-log-snapshot.mjs.map +1 -1
- package/esm/http/request.d.mts +6 -5
- package/esm/http/request.d.mts.map +1 -1
- package/esm/http/request.mjs +13 -11
- package/esm/http/request.mjs.map +1 -1
- package/esm/http/response.d.mts +23 -12
- package/esm/http/response.d.mts.map +1 -1
- package/esm/http/response.mjs +169 -81
- package/esm/http/response.mjs.map +1 -1
- package/esm/http/safe-redirect.d.mts +50 -0
- package/esm/http/safe-redirect.d.mts.map +1 -0
- package/esm/http/safe-redirect.mjs +80 -0
- package/esm/http/safe-redirect.mjs.map +1 -0
- package/esm/http/serialized.d.mts +12 -13
- package/esm/http/serialized.d.mts.map +1 -1
- package/esm/http/server-rebuilt.d.mts +3 -5
- package/esm/http/server-rebuilt.d.mts.map +1 -1
- package/esm/http/server.d.mts +11 -9
- package/esm/http/server.d.mts.map +1 -1
- package/esm/http/server.mjs +17 -7
- package/esm/http/server.mjs.map +1 -1
- package/esm/http/stream-react-response.d.mts +7 -7
- package/esm/http/stream-react-response.d.mts.map +1 -1
- package/esm/http/stream-transport.mjs +4 -2
- package/esm/http/stream-transport.mjs.map +1 -1
- package/esm/http/tracing/index.mjs +1 -1
- package/esm/http/tracing/trace-id.d.mts +2 -3
- package/esm/http/tracing/trace-id.d.mts.map +1 -1
- package/esm/http/tracing/tracing-dispatcher.d.mts +10 -11
- package/esm/http/tracing/tracing-dispatcher.d.mts.map +1 -1
- package/esm/http/tracing/tracing-dispatcher.mjs +2 -2
- package/esm/http/tracing/tracing-dispatcher.mjs.map +1 -1
- package/esm/http/tracing/tracing.type.d.mts +11 -9
- package/esm/http/tracing/tracing.type.d.mts.map +1 -1
- package/esm/http/types.d.mts +78 -39
- package/esm/http/types.d.mts.map +1 -1
- package/esm/http/uploaded-file.d.mts +6 -5
- package/esm/http/uploaded-file.d.mts.map +1 -1
- package/esm/http/uploads/generate-image-variant.mjs +1 -1
- package/esm/http/uploads/generate-image-variants.d.mts +13 -10
- package/esm/http/uploads/generate-image-variants.d.mts.map +1 -1
- package/esm/http/uploads/generate-image-variants.mjs +62 -25
- package/esm/http/uploads/generate-image-variants.mjs.map +1 -1
- package/esm/http/uploads/image-variant-cache-entries.mjs +78 -0
- package/esm/http/uploads/image-variant-cache-entries.mjs.map +1 -0
- package/esm/http/uploads/image-variant-cache.mjs +72 -30
- package/esm/http/uploads/image-variant-cache.mjs.map +1 -1
- package/esm/http/uploads/image-variant-types.d.mts +9 -9
- package/esm/http/uploads/image-variant-types.d.mts.map +1 -1
- package/esm/http/uploads/image-variants-config-error.d.mts +4 -3
- package/esm/http/uploads/image-variants-config-error.d.mts.map +1 -1
- package/esm/http/uploads/image-variants-config-error.mjs +3 -2
- package/esm/http/uploads/image-variants-config-error.mjs.map +1 -1
- package/esm/http/uploads/index.d.mts +2 -1
- package/esm/http/uploads/index.mjs +1 -1
- package/esm/http/uploads/load-variant-source.mjs +1 -1
- package/esm/http/uploads/load-variant-source.mjs.map +1 -1
- package/esm/http/uploads/parse-uploaded-file-query.mjs +1 -1
- package/esm/http/uploads/parse-uploaded-file-query.mjs.map +1 -1
- package/esm/http/uploads/purge-image-variants.d.mts +9 -6
- package/esm/http/uploads/purge-image-variants.d.mts.map +1 -1
- package/esm/http/uploads/purge-image-variants.mjs +16 -16
- package/esm/http/uploads/purge-image-variants.mjs.map +1 -1
- package/esm/http/uploads/remote-variant-source.mjs +115 -0
- package/esm/http/uploads/remote-variant-source.mjs.map +1 -0
- package/esm/http/uploads/resolve-image-variant.d.mts +6 -9
- package/esm/http/uploads/resolve-image-variant.d.mts.map +1 -1
- package/esm/http/uploads/resolve-image-variant.mjs +10 -18
- package/esm/http/uploads/resolve-image-variant.mjs.map +1 -1
- package/esm/http/uploads/resolve-image-variants-config.mjs +7 -5
- package/esm/http/uploads/resolve-image-variants-config.mjs.map +1 -1
- package/esm/http/uploads/resolve-original-content-type.mjs +1 -1
- package/esm/http/uploads/resolve-original-content-type.mjs.map +1 -1
- package/esm/http/uploads/resolve-remote-image-variant.mjs +89 -0
- package/esm/http/uploads/resolve-remote-image-variant.mjs.map +1 -0
- package/esm/http/uploads/trim-image-variant-cache.mjs +193 -0
- package/esm/http/uploads/trim-image-variant-cache.mjs.map +1 -0
- package/esm/http/uploads/uploaded-file.controller.d.mts +9 -6
- package/esm/http/uploads/uploaded-file.controller.d.mts.map +1 -1
- package/esm/http/uploads/uploaded-file.controller.mjs +18 -9
- package/esm/http/uploads/uploaded-file.controller.mjs.map +1 -1
- package/esm/http/uploads/variant-cache-key.mjs +2 -2
- package/esm/http/uploads-config.d.mts +2 -4
- package/esm/http/uploads-config.d.mts.map +1 -1
- package/esm/http/uploads-types.d.mts +22 -16
- package/esm/http/uploads-types.d.mts.map +1 -1
- package/esm/http/xmlable.d.mts +1 -2
- package/esm/http/xmlable.d.mts.map +1 -1
- package/esm/image/image.d.mts +6 -7
- package/esm/image/image.d.mts.map +1 -1
- package/esm/image/image.mjs.map +1 -1
- package/esm/image/index.d.mts +2 -1
- package/esm/image/index.mjs +1 -1
- package/esm/index.d.mts +38 -6
- package/esm/index.mjs +14 -3
- package/esm/loader/app-module-importer.d.mts +1 -2
- package/esm/loader/app-module-importer.d.mts.map +1 -1
- package/esm/localization/index.mjs +1 -1
- package/esm/localization/parse-locale-dictionary.d.mts +6 -5
- package/esm/localization/parse-locale-dictionary.d.mts.map +1 -1
- package/esm/localization/parse-locale-dictionary.mjs +2 -1
- package/esm/localization/parse-locale-dictionary.mjs.map +1 -1
- package/esm/localization/register-locale-dictionary.d.mts +3 -4
- package/esm/localization/register-locale-dictionary.d.mts.map +1 -1
- package/esm/localization/register-locale-dictionary.mjs +2 -2
- package/esm/localization/register-locale-dictionary.mjs.map +1 -1
- package/esm/logger/fatal-visibility.d.mts +1 -2
- package/esm/logger/fatal-visibility.d.mts.map +1 -1
- package/esm/logger/index.d.mts +2 -1
- package/esm/logger/index.mjs +1 -1
- package/esm/logger/logger.d.mts +1 -3
- package/esm/logger/logger.d.mts.map +1 -1
- package/esm/logger/types.d.mts +2 -3
- package/esm/logger/types.d.mts.map +1 -1
- package/esm/mail/config.d.mts +21 -12
- package/esm/mail/config.d.mts.map +1 -1
- package/esm/mail/config.mjs +16 -1
- package/esm/mail/config.mjs.map +1 -1
- package/esm/mail/events.d.mts +4 -6
- package/esm/mail/events.d.mts.map +1 -1
- package/esm/mail/index.d.mts +3 -2
- package/esm/mail/index.mjs +2 -2
- package/esm/mail/mail.d.mts +1 -3
- package/esm/mail/mail.d.mts.map +1 -1
- package/esm/mail/mailer-pool.d.mts +5 -7
- package/esm/mail/mailer-pool.d.mts.map +1 -1
- package/esm/mail/react-mail.d.mts +1 -3
- package/esm/mail/react-mail.d.mts.map +1 -1
- package/esm/mail/send-mail.d.mts +1 -3
- package/esm/mail/send-mail.d.mts.map +1 -1
- package/esm/mail/send-mail.mjs +2 -1
- package/esm/mail/send-mail.mjs.map +1 -1
- package/esm/mail/test-mailbox.d.mts +11 -13
- package/esm/mail/test-mailbox.d.mts.map +1 -1
- package/esm/mail/types.d.mts +17 -18
- package/esm/mail/types.d.mts.map +1 -1
- package/esm/manifest/manifest-manager.mjs +1 -1
- package/esm/net/index.d.mts +2 -0
- package/esm/net/index.mjs +3 -0
- package/esm/openapi/build-openapi-document.d.mts +2 -4
- package/esm/openapi/build-openapi-document.d.mts.map +1 -1
- package/esm/openapi/build-openapi-document.mjs +8 -5
- package/esm/openapi/build-openapi-document.mjs.map +1 -1
- package/esm/openapi/cast-schema.mjs +1 -1
- package/esm/openapi/development-openapi-provider.d.mts +5 -6
- package/esm/openapi/development-openapi-provider.d.mts.map +1 -1
- package/esm/openapi/error-responses.mjs +28 -2
- package/esm/openapi/error-responses.mjs.map +1 -1
- package/esm/openapi/index.d.mts +3 -1
- package/esm/openapi/index.mjs +1 -1
- package/esm/openapi/openapi-child-output.mjs +2 -2
- package/esm/openapi/openapi-child-output.mjs.map +1 -1
- package/esm/openapi/postman/build-request-body.mjs.map +1 -1
- package/esm/openapi/postman/build-request-url.mjs +1 -1
- package/esm/openapi/postman/build-request-url.mjs.map +1 -1
- package/esm/openapi/postman/build-saved-responses.mjs.map +1 -1
- package/esm/openapi/postman/example-from-schema.d.mts +1 -3
- package/esm/openapi/postman/example-from-schema.d.mts.map +1 -1
- package/esm/openapi/postman/example-from-schema.mjs.map +1 -1
- package/esm/openapi/postman/index.d.mts +2 -1
- package/esm/openapi/postman/openapi-to-postman-collection.d.mts +3 -5
- package/esm/openapi/postman/openapi-to-postman-collection.d.mts.map +1 -1
- package/esm/openapi/postman/openapi-to-postman-collection.mjs.map +1 -1
- package/esm/openapi/postman/postman-types.d.mts +19 -18
- package/esm/openapi/postman/postman-types.d.mts.map +1 -1
- package/esm/openapi/postman/schema-refs.d.mts +1 -3
- package/esm/openapi/postman/schema-refs.d.mts.map +1 -1
- package/esm/openapi/postman/schema-refs.mjs.map +1 -1
- package/esm/openapi/postman/uuid-v5.mjs +1 -1
- package/esm/openapi/postman/uuid-v5.mjs.map +1 -1
- package/esm/openapi/request-schemas.mjs.map +1 -1
- package/esm/openapi/response-schemas.mjs.map +1 -1
- package/esm/openapi/schema-registry.d.mts +1 -0
- package/esm/openapi/schema-registry.mjs.map +1 -1
- package/esm/openapi/security.mjs +1 -1
- package/esm/openapi/security.mjs.map +1 -1
- package/esm/openapi/types.d.mts +23 -20
- package/esm/openapi/types.d.mts.map +1 -1
- package/esm/production/assert-generated-imports.mjs +2 -1
- package/esm/production/assert-generated-imports.mjs.map +1 -1
- package/esm/production/build-contributions.mjs +1 -1
- package/esm/production/bundle-framework-dependencies.mjs +1 -1
- package/esm/production/dist-build-manifest.mjs +1 -1
- package/esm/production/esbuild-plugins.mjs.map +1 -1
- package/esm/production/esbuild-preflight.mjs +1 -1
- package/esm/production/production-builder.mjs +14 -5
- package/esm/production/production-builder.mjs.map +1 -1
- package/esm/production/production-supervisor.mjs +1 -1
- package/esm/production/registration-child-runner.mjs +4 -3
- package/esm/production/registration-child-runner.mjs.map +1 -1
- package/esm/production/resolve-build-config.d.mts +4 -4
- package/esm/production/resolve-build-config.d.mts.map +1 -1
- package/esm/production/resolve-build-config.mjs +2 -1
- package/esm/production/resolve-build-config.mjs.map +1 -1
- package/esm/production/route-registration-child.d.mts +1 -1
- package/esm/production/route-registration-child.mjs +8 -7
- package/esm/production/route-registration-child.mjs.map +1 -1
- package/esm/production/route-registration-snapshot.mjs.map +1 -1
- package/esm/production/tsconfig-path-aliases.mjs +1 -1
- package/esm/react/index.d.mts +1 -3
- package/esm/react/index.d.mts.map +1 -1
- package/esm/react/index.mjs.map +1 -1
- package/esm/repositories/adapters/cascade/cascade-adapter.d.mts +3 -4
- package/esm/repositories/adapters/cascade/cascade-adapter.d.mts.map +1 -1
- package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts +2 -3
- package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts.map +1 -1
- package/esm/repositories/adapters/cascade/filter-applicator.mjs +10 -9
- package/esm/repositories/adapters/cascade/filter-applicator.mjs.map +1 -1
- package/esm/repositories/adapters/cascade/index.d.mts +2 -1
- package/esm/repositories/adapters/cascade/index.mjs +1 -1
- package/esm/repositories/contracts/index.d.mts +2 -1
- package/esm/repositories/contracts/query-builder.contract.d.mts +4 -6
- package/esm/repositories/contracts/query-builder.contract.d.mts.map +1 -1
- package/esm/repositories/contracts/repository-adapter.contract.d.mts +1 -3
- package/esm/repositories/contracts/repository-adapter.contract.d.mts.map +1 -1
- package/esm/repositories/contracts/types.d.mts +23 -25
- package/esm/repositories/contracts/types.d.mts.map +1 -1
- package/esm/repositories/index.d.mts +4 -1
- package/esm/repositories/index.mjs +1 -1
- package/esm/repositories/repository.manager.d.mts +2 -3
- package/esm/repositories/repository.manager.d.mts.map +1 -1
- package/esm/repositories/repository.manager.mjs +2 -2
- package/esm/repositories/repository.manager.mjs.map +1 -1
- package/esm/resource/define-resource.d.mts +3 -5
- package/esm/resource/define-resource.d.mts.map +1 -1
- package/esm/resource/index.d.mts +2 -1
- package/esm/resource/index.mjs +1 -1
- package/esm/resource/nullable-resource.d.mts +5 -7
- package/esm/resource/nullable-resource.d.mts.map +1 -1
- package/esm/resource/register-resource.d.mts +1 -3
- package/esm/resource/register-resource.d.mts.map +1 -1
- package/esm/resource/resource-field-builder.d.mts +1 -3
- package/esm/resource/resource-field-builder.d.mts.map +1 -1
- package/esm/resource/resource.d.mts +3 -5
- package/esm/resource/resource.d.mts.map +1 -1
- package/esm/resource/resource.mjs +4 -2
- package/esm/resource/resource.mjs.map +1 -1
- package/esm/resource/types.d.mts +21 -21
- package/esm/resource/types.d.mts.map +1 -1
- package/esm/restful/index.d.mts +2 -1
- package/esm/restful/index.mjs +1 -1
- package/esm/restful/restful.d.mts +11 -31
- package/esm/restful/restful.d.mts.map +1 -1
- package/esm/restful/restful.mjs.map +1 -1
- package/esm/router/build-route-rate-limit.mjs.map +1 -1
- package/esm/router/dev-dispatch.mjs +31 -12
- package/esm/router/dev-dispatch.mjs.map +1 -1
- package/esm/router/index.d.mts +5 -2
- package/esm/router/index.mjs +3 -1
- package/esm/router/log-request-lifecycle.mjs.map +1 -1
- package/esm/router/named-api-routes-with-responses.mjs +2 -1
- package/esm/router/named-api-routes-with-responses.mjs.map +1 -1
- package/esm/router/normalize-request-path.d.mts +1 -2
- package/esm/router/normalize-request-path.d.mts.map +1 -1
- package/esm/router/normalize-route-path.d.mts +1 -2
- package/esm/router/normalize-route-path.d.mts.map +1 -1
- package/esm/router/positional-handler-diagnostics.d.mts +15 -13
- package/esm/router/positional-handler-diagnostics.d.mts.map +1 -1
- package/esm/router/positional-handler-diagnostics.mjs.map +1 -1
- package/esm/router/resolve-route-rate-limit.mjs +47 -0
- package/esm/router/resolve-route-rate-limit.mjs.map +1 -0
- package/esm/router/resolve-route-validation.mjs +19 -0
- package/esm/router/resolve-route-validation.mjs.map +1 -0
- package/esm/router/route-builder.d.mts +1 -3
- package/esm/router/route-builder.d.mts.map +1 -1
- package/esm/router/route-guard-names.mjs +30 -0
- package/esm/router/route-guard-names.mjs.map +1 -0
- package/esm/router/route-name-method-suffix.d.mts +2 -3
- package/esm/router/route-name-method-suffix.d.mts.map +1 -1
- package/esm/router/route-name-taken-error.d.mts +12 -0
- package/esm/router/route-name-taken-error.d.mts.map +1 -0
- package/esm/router/route-name-taken-error.mjs +18 -0
- package/esm/router/route-name-taken-error.mjs.map +1 -0
- package/esm/router/route-registry.d.mts +1 -3
- package/esm/router/route-registry.d.mts.map +1 -1
- package/esm/router/router.d.mts +34 -17
- package/esm/router/router.d.mts.map +1 -1
- package/esm/router/router.mjs +74 -39
- package/esm/router/router.mjs.map +1 -1
- package/esm/router/types.d.mts +156 -37
- package/esm/router/types.d.mts.map +1 -1
- package/esm/router/unguarded-route-diagnostics.d.mts +38 -0
- package/esm/router/unguarded-route-diagnostics.d.mts.map +1 -0
- package/esm/router/unguarded-route-diagnostics.mjs +95 -0
- package/esm/router/unguarded-route-diagnostics.mjs.map +1 -0
- package/esm/socket/index.d.mts +2 -1
- package/esm/socket/index.mjs +1 -1
- package/esm/socket/types.d.mts +2 -4
- package/esm/socket/types.d.mts.map +1 -1
- package/esm/socket/utils.d.mts +1 -3
- package/esm/socket/utils.d.mts.map +1 -1
- package/esm/storage/config.d.mts +4 -6
- package/esm/storage/config.d.mts.map +1 -1
- package/esm/storage/context/storage-driver-context.d.mts +3 -4
- package/esm/storage/context/storage-driver-context.d.mts.map +1 -1
- package/esm/storage/drivers/cloud-driver.d.mts +2 -4
- package/esm/storage/drivers/cloud-driver.d.mts.map +1 -1
- package/esm/storage/drivers/cloud-driver.mjs.map +1 -1
- package/esm/storage/drivers/do-spaces-driver.d.mts +1 -3
- package/esm/storage/drivers/do-spaces-driver.d.mts.map +1 -1
- package/esm/storage/drivers/local-driver.d.mts +2 -3
- package/esm/storage/drivers/local-driver.d.mts.map +1 -1
- package/esm/storage/drivers/local-driver.mjs +8 -3
- package/esm/storage/drivers/local-driver.mjs.map +1 -1
- package/esm/storage/drivers/r2-driver.d.mts +1 -3
- package/esm/storage/drivers/r2-driver.d.mts.map +1 -1
- package/esm/storage/drivers/s3-driver.d.mts +1 -3
- package/esm/storage/drivers/s3-driver.d.mts.map +1 -1
- package/esm/storage/index.d.mts +2 -1
- package/esm/storage/index.mjs +1 -1
- package/esm/storage/local-disk-roots.mjs +24 -0
- package/esm/storage/local-disk-roots.mjs.map +1 -0
- package/esm/storage/scoped-storage.d.mts +2 -3
- package/esm/storage/scoped-storage.d.mts.map +1 -1
- package/esm/storage/storage-file.d.mts +1 -3
- package/esm/storage/storage-file.d.mts.map +1 -1
- package/esm/storage/storage.d.mts +17 -4
- package/esm/storage/storage.d.mts.map +1 -1
- package/esm/storage/storage.mjs +22 -0
- package/esm/storage/storage.mjs.map +1 -1
- package/esm/storage/types.d.mts +36 -36
- package/esm/storage/types.d.mts.map +1 -1
- package/esm/storage/utils/classify-ip-address.d.mts +1 -2
- package/esm/storage/utils/classify-ip-address.d.mts.map +1 -1
- package/esm/storage/utils/contain-path.d.mts +1 -2
- package/esm/storage/utils/contain-path.d.mts.map +1 -1
- package/esm/storage/utils/mime.d.mts +2 -3
- package/esm/storage/utils/mime.d.mts.map +1 -1
- package/esm/storage/utils/safe-fetch.d.mts +6 -6
- package/esm/storage/utils/safe-fetch.d.mts.map +1 -1
- package/esm/storage/utils/safe-fetch.mjs +3 -3
- package/esm/storage/utils/safe-fetch.mjs.map +1 -1
- package/esm/storage/utils/storage-capability-error.d.mts +1 -3
- package/esm/storage/utils/storage-capability-error.d.mts.map +1 -1
- package/esm/storage/utils/storage-error.d.mts +2 -3
- package/esm/storage/utils/storage-error.d.mts.map +1 -1
- package/esm/storage/utils/storage-not-initialized-error.d.mts +3 -2
- package/esm/storage/utils/storage-not-initialized-error.d.mts.map +1 -1
- package/esm/storage/utils/storage-not-initialized-error.mjs +1 -0
- package/esm/storage/utils/storage-not-initialized-error.mjs.map +1 -1
- package/esm/tests/authenticated-test-client.d.mts +31 -0
- package/esm/tests/authenticated-test-client.d.mts.map +1 -0
- package/esm/tests/authenticated-test-client.mjs +40 -0
- package/esm/tests/authenticated-test-client.mjs.map +1 -0
- package/esm/tests/factories.d.mts +74 -0
- package/esm/tests/factories.d.mts.map +1 -0
- package/esm/tests/factories.mjs +105 -0
- package/esm/tests/factories.mjs.map +1 -0
- package/esm/tests/fakes/cache-fake.d.mts +34 -0
- package/esm/tests/fakes/cache-fake.d.mts.map +1 -0
- package/esm/tests/fakes/cache-fake.mjs +79 -0
- package/esm/tests/fakes/cache-fake.mjs.map +1 -0
- package/esm/tests/fakes/clock-fake.d.mts +37 -0
- package/esm/tests/fakes/clock-fake.d.mts.map +1 -0
- package/esm/tests/fakes/clock-fake.mjs +69 -0
- package/esm/tests/fakes/clock-fake.mjs.map +1 -0
- package/esm/tests/fakes/fake-assertion-error.d.mts +12 -0
- package/esm/tests/fakes/fake-assertion-error.d.mts.map +1 -0
- package/esm/tests/fakes/fake-assertion-error.mjs +20 -0
- package/esm/tests/fakes/fake-assertion-error.mjs.map +1 -0
- package/esm/tests/fakes/ids-fake.d.mts +23 -0
- package/esm/tests/fakes/ids-fake.d.mts.map +1 -0
- package/esm/tests/fakes/ids-fake.mjs +57 -0
- package/esm/tests/fakes/ids-fake.mjs.map +1 -0
- package/esm/tests/fakes/index.d.mts +9 -0
- package/esm/tests/fakes/index.mjs +10 -0
- package/esm/tests/fakes/mail-fake.d.mts +49 -0
- package/esm/tests/fakes/mail-fake.d.mts.map +1 -0
- package/esm/tests/fakes/mail-fake.mjs +111 -0
- package/esm/tests/fakes/mail-fake.mjs.map +1 -0
- package/esm/tests/fakes/queue-fake.d.mts +56 -0
- package/esm/tests/fakes/queue-fake.d.mts.map +1 -0
- package/esm/tests/fakes/queue-fake.mjs +134 -0
- package/esm/tests/fakes/queue-fake.mjs.map +1 -0
- package/esm/tests/fakes/storage-fake.d.mts +35 -0
- package/esm/tests/fakes/storage-fake.d.mts.map +1 -0
- package/esm/tests/fakes/storage-fake.mjs +122 -0
- package/esm/tests/fakes/storage-fake.mjs.map +1 -0
- package/esm/tests/fakes/test-fakes.d.mts +38 -0
- package/esm/tests/fakes/test-fakes.d.mts.map +1 -0
- package/esm/tests/fakes/test-fakes.mjs +90 -0
- package/esm/tests/fakes/test-fakes.mjs.map +1 -0
- package/esm/tests/index.d.mts +15 -2
- package/esm/tests/index.mjs +15 -2
- package/esm/tests/snapshot-response.d.mts +33 -0
- package/esm/tests/snapshot-response.d.mts.map +1 -0
- package/esm/tests/snapshot-response.mjs +42 -0
- package/esm/tests/snapshot-response.mjs.map +1 -0
- package/esm/tests/start-http-development-server.d.mts +25 -5
- package/esm/tests/start-http-development-server.d.mts.map +1 -1
- package/esm/tests/start-http-development-server.mjs +41 -8
- package/esm/tests/start-http-development-server.mjs.map +1 -1
- package/esm/tests/test-connectors-selection.d.mts +2 -2
- package/esm/tests/test-connectors-selection.d.mts.map +1 -1
- package/esm/tests/test-connectors-selection.mjs +1 -1
- package/esm/tests/test-helpers.d.mts +28 -10
- package/esm/tests/test-helpers.d.mts.map +1 -1
- package/esm/tests/test-helpers.mjs +40 -27
- package/esm/tests/test-helpers.mjs.map +1 -1
- package/esm/tests/test-http-server.d.mts +66 -0
- package/esm/tests/test-http-server.d.mts.map +1 -0
- package/esm/tests/test-http-server.mjs +119 -0
- package/esm/tests/test-http-server.mjs.map +1 -0
- package/esm/tests/test-lifecycle-state.mjs +1 -1
- package/esm/tests/vitest-setup.d.mts +17 -7
- package/esm/tests/vitest-setup.d.mts.map +1 -1
- package/esm/tests/vitest-setup.mjs +12 -4
- package/esm/tests/vitest-setup.mjs.map +1 -1
- package/esm/tooling/agents-md/agents-md-markers.d.mts +26 -0
- package/esm/tooling/agents-md/agents-md-markers.d.mts.map +1 -0
- package/esm/tooling/agents-md/agents-md-markers.mjs +60 -0
- package/esm/tooling/agents-md/agents-md-markers.mjs.map +1 -0
- package/esm/tooling/agents-md/agents-md-refresher.d.mts +43 -0
- package/esm/tooling/agents-md/agents-md-refresher.d.mts.map +1 -0
- package/esm/tooling/agents-md/agents-md-refresher.mjs +72 -0
- package/esm/tooling/agents-md/agents-md-refresher.mjs.map +1 -0
- package/esm/tooling/agents-md/index.mjs +7 -0
- package/esm/tooling/agents-md/installed-skills.d.mts +34 -0
- package/esm/tooling/agents-md/installed-skills.d.mts.map +1 -0
- package/esm/tooling/agents-md/installed-skills.mjs +74 -0
- package/esm/tooling/agents-md/installed-skills.mjs.map +1 -0
- package/esm/tooling/agents-md/render-agents-md.d.mts +34 -0
- package/esm/tooling/agents-md/render-agents-md.d.mts.map +1 -0
- package/esm/tooling/agents-md/render-agents-md.mjs +195 -0
- package/esm/tooling/agents-md/render-agents-md.mjs.map +1 -0
- package/esm/tooling/agents-md/write-agents-md.d.mts +38 -0
- package/esm/tooling/agents-md/write-agents-md.d.mts.map +1 -0
- package/esm/tooling/agents-md/write-agents-md.mjs +49 -0
- package/esm/tooling/agents-md/write-agents-md.mjs.map +1 -0
- package/esm/tooling/board/board-message.d.mts +29 -0
- package/esm/tooling/board/board-message.d.mts.map +1 -0
- package/esm/tooling/board/board-message.mjs +86 -0
- package/esm/tooling/board/board-message.mjs.map +1 -0
- package/esm/tooling/board/board.d.mts +121 -0
- package/esm/tooling/board/board.d.mts.map +1 -0
- package/esm/tooling/board/board.mjs +407 -0
- package/esm/tooling/board/board.mjs.map +1 -0
- package/esm/tooling/board/board.types.d.mts +81 -0
- package/esm/tooling/board/board.types.d.mts.map +1 -0
- package/esm/tooling/board/board.types.mjs +54 -0
- package/esm/tooling/board/board.types.mjs.map +1 -0
- package/esm/tooling/check/changed-files.d.mts +31 -0
- package/esm/tooling/check/changed-files.d.mts.map +1 -0
- package/esm/tooling/check/changed-files.mjs +73 -0
- package/esm/tooling/check/changed-files.mjs.map +1 -0
- package/esm/tooling/check/check-report.types.d.mts +67 -0
- package/esm/tooling/check/check-report.types.d.mts.map +1 -0
- package/esm/tooling/check/check-report.types.mjs +37 -0
- package/esm/tooling/check/check-report.types.mjs.map +1 -0
- package/esm/tooling/check/code-style-conventions.mjs +106 -0
- package/esm/tooling/check/code-style-conventions.mjs.map +1 -0
- package/esm/tooling/check/conventions-step.d.mts +32 -0
- package/esm/tooling/check/conventions-step.d.mts.map +1 -0
- package/esm/tooling/check/conventions-step.mjs +173 -0
- package/esm/tooling/check/conventions-step.mjs.map +1 -0
- package/esm/tooling/check/environment-step.d.mts +16 -0
- package/esm/tooling/check/environment-step.d.mts.map +1 -0
- package/esm/tooling/check/environment-step.mjs +78 -0
- package/esm/tooling/check/environment-step.mjs.map +1 -0
- package/esm/tooling/check/index.mjs +10 -0
- package/esm/tooling/check/lint-step.d.mts +18 -0
- package/esm/tooling/check/lint-step.d.mts.map +1 -0
- package/esm/tooling/check/lint-step.mjs +112 -0
- package/esm/tooling/check/lint-step.mjs.map +1 -0
- package/esm/tooling/check/request-input.mjs +132 -0
- package/esm/tooling/check/request-input.mjs.map +1 -0
- package/esm/tooling/check/run-check.d.mts +43 -0
- package/esm/tooling/check/run-check.d.mts.map +1 -0
- package/esm/tooling/check/run-check.mjs +192 -0
- package/esm/tooling/check/run-check.mjs.map +1 -0
- package/esm/tooling/check/run-tests.d.mts +55 -0
- package/esm/tooling/check/run-tests.d.mts.map +1 -0
- package/esm/tooling/check/run-tests.mjs +93 -0
- package/esm/tooling/check/run-tests.mjs.map +1 -0
- package/esm/tooling/check/security-conventions.mjs +650 -0
- package/esm/tooling/check/security-conventions.mjs.map +1 -0
- package/esm/tooling/check/source-ast.mjs +155 -0
- package/esm/tooling/check/source-ast.mjs.map +1 -0
- package/esm/tooling/check/source-files.mjs +27 -0
- package/esm/tooling/check/source-files.mjs.map +1 -0
- package/esm/tooling/check/tests-step.d.mts +33 -0
- package/esm/tooling/check/tests-step.d.mts.map +1 -0
- package/esm/tooling/check/tests-step.mjs +177 -0
- package/esm/tooling/check/tests-step.mjs.map +1 -0
- package/esm/tooling/dev-state/dev-server-state.d.mts +43 -0
- package/esm/tooling/dev-state/dev-server-state.d.mts.map +1 -0
- package/esm/tooling/dev-state/dev-server-state.mjs +67 -0
- package/esm/tooling/dev-state/dev-server-state.mjs.map +1 -0
- package/esm/tooling/devtools/devtools-client.d.mts +100 -0
- package/esm/tooling/devtools/devtools-client.d.mts.map +1 -0
- package/esm/tooling/devtools/devtools-client.mjs +155 -0
- package/esm/tooling/devtools/devtools-client.mjs.map +1 -0
- package/esm/tooling/generate/generation.d.mts +90 -0
- package/esm/tooling/generate/generation.d.mts.map +1 -0
- package/esm/tooling/generate/generation.mjs +127 -0
- package/esm/tooling/generate/generation.mjs.map +1 -0
- package/esm/tooling/generate/generator-spec.d.mts +57 -0
- package/esm/tooling/generate/generator-spec.d.mts.map +1 -0
- package/esm/tooling/generate/generator-spec.mjs +102 -0
- package/esm/tooling/generate/generator-spec.mjs.map +1 -0
- package/esm/tooling/generate/index.mjs +6 -0
- package/esm/tooling/generate/project-files.mjs +121 -0
- package/esm/tooling/generate/project-files.mjs.map +1 -0
- package/esm/tooling/generate/run-cli.d.mts +43 -0
- package/esm/tooling/generate/run-cli.d.mts.map +1 -0
- package/esm/tooling/generate/run-cli.mjs +93 -0
- package/esm/tooling/generate/run-cli.mjs.map +1 -0
- package/esm/tooling/generate/unified-diff.d.mts +40 -0
- package/esm/tooling/generate/unified-diff.d.mts.map +1 -0
- package/esm/tooling/generate/unified-diff.mjs +161 -0
- package/esm/tooling/generate/unified-diff.mjs.map +1 -0
- package/esm/tooling/index.d.mts +42 -0
- package/esm/tooling/index.mjs +45 -0
- package/esm/tooling/inspect/boot-for-inspect.d.mts +23 -0
- package/esm/tooling/inspect/boot-for-inspect.d.mts.map +1 -0
- package/esm/tooling/inspect/boot-for-inspect.mjs +63 -0
- package/esm/tooling/inspect/boot-for-inspect.mjs.map +1 -0
- package/esm/tooling/inspect/collect-config.mjs +77 -0
- package/esm/tooling/inspect/collect-config.mjs.map +1 -0
- package/esm/tooling/inspect/collect-models.d.mts +10 -0
- package/esm/tooling/inspect/collect-models.d.mts.map +1 -0
- package/esm/tooling/inspect/collect-models.mjs +154 -0
- package/esm/tooling/inspect/collect-models.mjs.map +1 -0
- package/esm/tooling/inspect/collect-packages.d.mts +9 -0
- package/esm/tooling/inspect/collect-packages.d.mts.map +1 -0
- package/esm/tooling/inspect/collect-packages.mjs +157 -0
- package/esm/tooling/inspect/collect-packages.mjs.map +1 -0
- package/esm/tooling/inspect/collect-pages.mjs +108 -0
- package/esm/tooling/inspect/collect-pages.mjs.map +1 -0
- package/esm/tooling/inspect/collect-routes.mjs +168 -0
- package/esm/tooling/inspect/collect-routes.mjs.map +1 -0
- package/esm/tooling/inspect/event-recorder.d.mts +37 -0
- package/esm/tooling/inspect/event-recorder.d.mts.map +1 -0
- package/esm/tooling/inspect/event-recorder.mjs +91 -0
- package/esm/tooling/inspect/event-recorder.mjs.map +1 -0
- package/esm/tooling/inspect/index.d.mts +8 -0
- package/esm/tooling/inspect/index.mjs +7 -0
- package/esm/tooling/inspect/inspect-app.d.mts +62 -0
- package/esm/tooling/inspect/inspect-app.d.mts.map +1 -0
- package/esm/tooling/inspect/inspect-app.mjs +92 -0
- package/esm/tooling/inspect/inspect-app.mjs.map +1 -0
- package/esm/tooling/inspect/inspect-report.schema.d.mts +14 -0
- package/esm/tooling/inspect/inspect-report.schema.d.mts.map +1 -0
- package/esm/tooling/inspect/inspect-report.schema.mjs +463 -0
- package/esm/tooling/inspect/inspect-report.schema.mjs.map +1 -0
- package/esm/tooling/inspect/inspect-report.types.d.mts +228 -0
- package/esm/tooling/inspect/inspect-report.types.d.mts.map +1 -0
- package/esm/tooling/inspect/inspect-report.types.mjs +33 -0
- package/esm/tooling/inspect/inspect-report.types.mjs.map +1 -0
- package/esm/tooling/mcp/create-mcp-context.d.mts +29 -0
- package/esm/tooling/mcp/create-mcp-context.d.mts.map +1 -0
- package/esm/tooling/mcp/create-mcp-context.mjs +75 -0
- package/esm/tooling/mcp/create-mcp-context.mjs.map +1 -0
- package/esm/tooling/mcp/db-schema.d.mts +50 -0
- package/esm/tooling/mcp/db-schema.d.mts.map +1 -0
- package/esm/tooling/mcp/db-schema.mjs +56 -0
- package/esm/tooling/mcp/db-schema.mjs.map +1 -0
- package/esm/tooling/mcp/docs-search.d.mts +77 -0
- package/esm/tooling/mcp/docs-search.d.mts.map +1 -0
- package/esm/tooling/mcp/docs-search.mjs +178 -0
- package/esm/tooling/mcp/docs-search.mjs.map +1 -0
- package/esm/tooling/mcp/index.mjs +9 -0
- package/esm/tooling/mcp/load-ai-tools.d.mts +61 -0
- package/esm/tooling/mcp/load-ai-tools.d.mts.map +1 -0
- package/esm/tooling/mcp/load-ai-tools.mjs +45 -0
- package/esm/tooling/mcp/load-ai-tools.mjs.map +1 -0
- package/esm/tooling/mcp/mcp-tools.d.mts +70 -0
- package/esm/tooling/mcp/mcp-tools.d.mts.map +1 -0
- package/esm/tooling/mcp/mcp-tools.mjs +514 -0
- package/esm/tooling/mcp/mcp-tools.mjs.map +1 -0
- package/esm/tooling/mcp/start-mcp-server.d.mts +63 -0
- package/esm/tooling/mcp/start-mcp-server.d.mts.map +1 -0
- package/esm/tooling/mcp/start-mcp-server.mjs +126 -0
- package/esm/tooling/mcp/start-mcp-server.mjs.map +1 -0
- package/esm/tooling/mcp/tool-input.d.mts +75 -0
- package/esm/tooling/mcp/tool-input.d.mts.map +1 -0
- package/esm/tooling/mcp/tool-input.mjs +72 -0
- package/esm/tooling/mcp/tool-input.mjs.map +1 -0
- package/esm/tooling/problem.d.mts +55 -0
- package/esm/tooling/problem.d.mts.map +1 -0
- package/esm/tooling/problem.mjs +28 -0
- package/esm/tooling/problem.mjs.map +1 -0
- package/esm/tooling/syntax/ast.mjs +230 -0
- package/esm/tooling/syntax/ast.mjs.map +1 -0
- package/esm/tooling/syntax/imports.mjs +34 -0
- package/esm/tooling/syntax/imports.mjs.map +1 -0
- package/esm/tooling/trace/trace-report.types.d.mts +85 -0
- package/esm/tooling/trace/trace-report.types.d.mts.map +1 -0
- package/esm/tooling/trace/trace-report.types.mjs +7 -0
- package/esm/tooling/trace/trace-report.types.mjs.map +1 -0
- package/esm/tooling/trace/trace-request.d.mts +90 -0
- package/esm/tooling/trace/trace-request.d.mts.map +1 -0
- package/esm/tooling/trace/trace-request.mjs +241 -0
- package/esm/tooling/trace/trace-request.mjs.map +1 -0
- package/esm/tooling/typecheck/index.mjs +3 -0
- package/esm/tooling/typecheck/run-typecheck.d.mts +26 -0
- package/esm/tooling/typecheck/run-typecheck.d.mts.map +1 -0
- package/esm/tooling/typecheck/run-typecheck.mjs +90 -0
- package/esm/tooling/typecheck/run-typecheck.mjs.map +1 -0
- package/esm/tooling/typescript/compiler.d.mts +31 -0
- package/esm/tooling/typescript/compiler.d.mts.map +1 -0
- package/esm/tooling/typescript/compiler.mjs +120 -0
- package/esm/tooling/typescript/compiler.mjs.map +1 -0
- package/esm/updater/update-warlock-packages.mjs +3 -2
- package/esm/updater/update-warlock-packages.mjs.map +1 -1
- package/esm/upgrade/codemods/head-viewport.mjs +46 -0
- package/esm/upgrade/codemods/head-viewport.mjs.map +1 -0
- package/esm/upgrade/codemods/helpers.mjs +81 -0
- package/esm/upgrade/codemods/helpers.mjs.map +1 -0
- package/esm/upgrade/codemods/index.mjs +34 -0
- package/esm/upgrade/codemods/index.mjs.map +1 -0
- package/esm/upgrade/codemods/logger-sync-calls.mjs +57 -0
- package/esm/upgrade/codemods/logger-sync-calls.mjs.map +1 -0
- package/esm/upgrade/codemods/package-json.mjs +122 -0
- package/esm/upgrade/codemods/package-json.mjs.map +1 -0
- package/esm/upgrade/codemods/request-log-snapshot.mjs +82 -0
- package/esm/upgrade/codemods/request-log-snapshot.mjs.map +1 -0
- package/esm/upgrade/codemods/review-sites.mjs +262 -0
- package/esm/upgrade/codemods/review-sites.mjs.map +1 -0
- package/esm/upgrade/diff.mjs +119 -0
- package/esm/upgrade/diff.mjs.map +1 -0
- package/esm/upgrade/format-upgrade-report.mjs +32 -0
- package/esm/upgrade/format-upgrade-report.mjs.map +1 -0
- package/esm/upgrade/load-ts-morph.mjs +49 -0
- package/esm/upgrade/load-ts-morph.mjs.map +1 -0
- package/esm/upgrade/notes.mjs +16 -0
- package/esm/upgrade/notes.mjs.map +1 -0
- package/esm/upgrade/run-upgrade.mjs +246 -0
- package/esm/upgrade/run-upgrade.mjs.map +1 -0
- package/esm/upgrade/upgrade-command.action.mjs +37 -0
- package/esm/upgrade/upgrade-command.action.mjs.map +1 -0
- package/esm/upgrade/version.mjs +39 -0
- package/esm/upgrade/version.mjs.map +1 -0
- package/esm/use-cases/index.d.mts +2 -1
- package/esm/use-cases/index.mjs +1 -1
- package/esm/use-cases/types.d.mts +116 -63
- package/esm/use-cases/types.d.mts.map +1 -1
- package/esm/use-cases/use-case-broadcast.d.mts +1 -3
- package/esm/use-cases/use-case-broadcast.d.mts.map +1 -1
- package/esm/use-cases/use-case-events.d.mts +3 -5
- package/esm/use-cases/use-case-events.d.mts.map +1 -1
- package/esm/use-cases/use-case-pipeline.d.mts +6 -6
- package/esm/use-cases/use-case-pipeline.d.mts.map +1 -1
- package/esm/use-cases/use-case.d.mts +2 -4
- package/esm/use-cases/use-case.d.mts.map +1 -1
- package/esm/use-cases/use-case.errors.d.mts +1 -3
- package/esm/use-cases/use-case.errors.d.mts.map +1 -1
- package/esm/use-cases/use-cases-registry.d.mts +8 -10
- package/esm/use-cases/use-cases-registry.d.mts.map +1 -1
- package/esm/use-cases/use-cases-registry.mjs.map +1 -1
- package/esm/utils/app-log.d.mts +1 -2
- package/esm/utils/app-log.d.mts.map +1 -1
- package/esm/utils/clock.d.mts +35 -0
- package/esm/utils/clock.d.mts.map +1 -0
- package/esm/utils/clock.mjs +27 -0
- package/esm/utils/clock.mjs.map +1 -0
- package/esm/utils/database-log.d.mts +3 -4
- package/esm/utils/database-log.d.mts.map +1 -1
- package/esm/utils/environment.d.mts +4 -5
- package/esm/utils/environment.d.mts.map +1 -1
- package/esm/utils/framework-vesion.mjs +1 -1
- package/esm/utils/framework-vesion.mjs.map +1 -1
- package/esm/utils/get-localized.d.mts +2 -3
- package/esm/utils/get-localized.d.mts.map +1 -1
- package/esm/utils/ids.d.mts +35 -0
- package/esm/utils/ids.d.mts.map +1 -0
- package/esm/utils/ids.mjs +33 -0
- package/esm/utils/ids.mjs.map +1 -0
- package/esm/utils/index.d.mts +5 -1
- package/esm/utils/index.mjs +4 -1
- package/esm/utils/normalized-path.d.mts +1 -2
- package/esm/utils/normalized-path.d.mts.map +1 -1
- package/esm/utils/npm-registry.d.mts +1 -2
- package/esm/utils/npm-registry.d.mts.map +1 -1
- package/esm/utils/paths.d.mts +13 -14
- package/esm/utils/paths.d.mts.map +1 -1
- package/esm/utils/paths.mjs +2 -2
- package/esm/utils/paths.mjs.map +1 -1
- package/esm/utils/promise-all-object.d.mts +1 -2
- package/esm/utils/promise-all-object.d.mts.map +1 -1
- package/esm/utils/queue.d.mts +1 -2
- package/esm/utils/queue.d.mts.map +1 -1
- package/esm/utils/runtime.d.mts +60 -0
- package/esm/utils/runtime.d.mts.map +1 -0
- package/esm/utils/runtime.mjs +85 -0
- package/esm/utils/runtime.mjs.map +1 -0
- package/esm/utils/sleep.d.mts +1 -2
- package/esm/utils/sleep.d.mts.map +1 -1
- package/esm/utils/sluggable.d.mts +1 -3
- package/esm/utils/sluggable.d.mts.map +1 -1
- package/esm/utils/to-json.d.mts +1 -2
- package/esm/utils/to-json.d.mts.map +1 -1
- package/esm/utils/types.d.mts +1 -2
- package/esm/utils/types.d.mts.map +1 -1
- package/esm/utils/urls.d.mts +5 -6
- package/esm/utils/urls.d.mts.map +1 -1
- package/esm/utils/version-compare.d.mts +1 -2
- package/esm/utils/version-compare.d.mts.map +1 -1
- package/esm/validation/database/exists-except-current-id.d.mts +2 -3
- package/esm/validation/database/exists-except-current-id.d.mts.map +1 -1
- package/esm/validation/database/exists-except-current-user.d.mts +2 -3
- package/esm/validation/database/exists-except-current-user.d.mts.map +1 -1
- package/esm/validation/database/index.d.mts +2 -1
- package/esm/validation/database/index.mjs +1 -1
- package/esm/validation/database/types.d.mts +14 -10
- package/esm/validation/database/types.d.mts.map +1 -1
- package/esm/validation/database/unique-except-current-id.d.mts +2 -3
- package/esm/validation/database/unique-except-current-id.d.mts.map +1 -1
- package/esm/validation/database/unique-except-current-user.d.mts +2 -3
- package/esm/validation/database/unique-except-current-user.d.mts.map +1 -1
- package/esm/validation/file/file.d.mts +4 -6
- package/esm/validation/file/file.d.mts.map +1 -1
- package/esm/validation/file/index.d.mts +2 -1
- package/esm/validation/file/index.mjs +1 -1
- package/esm/validation/index.d.mts +6 -2
- package/esm/validation/index.mjs +1 -1
- package/esm/validation/plugins/index.mjs +1 -1
- package/esm/validation/types.d.mts +61 -4
- package/esm/validation/types.d.mts.map +1 -1
- package/esm/validation/validateAll.mjs +21 -4
- package/esm/validation/validateAll.mjs.map +1 -1
- package/esm/validation/validation-failure-status.mjs +15 -0
- package/esm/validation/validation-failure-status.mjs.map +1 -0
- package/esm/validation/validators/file-validator.d.mts +2 -20
- package/esm/validation/validators/file-validator.d.mts.map +1 -1
- package/esm/validation/validators/index.d.mts +2 -1
- package/esm/validation/validators/index.mjs +1 -1
- package/esm/vite/lower-stage3-decorators.d.mts +2 -3
- package/esm/vite/lower-stage3-decorators.d.mts.map +1 -1
- package/esm/warlock-config/bundle-config.mjs +1 -1
- package/esm/warlock-config/define-config.d.mts +1 -3
- package/esm/warlock-config/define-config.d.mts.map +1 -1
- package/esm/warlock-config/define-config.mjs +3 -2
- package/esm/warlock-config/define-config.mjs.map +1 -1
- package/esm/warlock-config/index.d.mts +2 -1
- package/esm/warlock-config/index.mjs +1 -1
- package/esm/warlock-config/types.d.mts +31 -6
- package/esm/warlock-config/types.d.mts.map +1 -1
- package/esm/warlock-config/warlock-config.manager.d.mts +5 -7
- package/esm/warlock-config/warlock-config.manager.d.mts.map +1 -1
- package/esm/warlock-config/warlock-config.manager.mjs +2 -1
- package/esm/warlock-config/warlock-config.manager.mjs.map +1 -1
- package/esm/warlock-config/warn-deprecated-config.mjs +1 -1
- package/llms-full.txt +3211 -731
- package/llms.txt +16 -6
- package/package.json +47 -15
- package/schemas/inspect-report.schema.json +554 -0
- package/skills/README.md +9 -0
- package/skills/add-connector/SKILL.md +26 -38
- package/skills/benchmark-code/SKILL.md +30 -24
- package/skills/build-restful/SKILL.md +14 -14
- package/skills/build-url/SKILL.md +18 -18
- package/skills/configure-app/SKILL.md +107 -14
- package/skills/create-controller/SKILL.md +25 -12
- package/skills/create-module/SKILL.md +10 -3
- package/skills/define-resource/SKILL.md +32 -29
- package/skills/encrypt-data/SKILL.md +21 -19
- package/skills/generate-openapi/SKILL.md +50 -24
- package/skills/hash-password/SKILL.md +2 -2
- package/skills/health-checks/SKILL.md +24 -7
- package/skills/index.md +11 -4
- package/skills/lower-stage3-decorators/SKILL.md +4 -4
- package/skills/make-endpoint/SKILL.md +110 -0
- package/skills/model-factories/SKILL.md +92 -0
- package/skills/process-image/SKILL.md +32 -30
- package/skills/register-route/SKILL.md +109 -10
- package/skills/report-framework-issue.md +154 -0
- package/skills/request-memo/SKILL.md +1 -1
- package/skills/request-tracing/SKILL.md +4 -1
- package/skills/resolve-path/SKILL.md +45 -44
- package/skills/retry-operation/SKILL.md +20 -11
- package/skills/run-app/SKILL.md +107 -22
- package/skills/send-response/SKILL.md +179 -14
- package/skills/store-file/SKILL.md +93 -53
- package/skills/test-fakes/SKILL.md +123 -0
- package/skills/test-http/SKILL.md +125 -21
- package/skills/test-service/SKILL.md +41 -1
- package/skills/update-packages/SKILL.md +29 -18
- package/skills/upgrade-from-5-29/SKILL.md +454 -0
- package/skills/upload-file/SKILL.md +31 -33
- package/skills/use-app-context/SKILL.md +38 -31
- package/skills/use-middleware/SKILL.md +45 -25
- package/skills/use-model-transformers/SKILL.md +37 -28
- package/skills/use-repository/SKILL.md +2 -2
- package/skills/validate-input/SKILL.md +72 -28
- package/skills/warlock-agents-md/SKILL.md +96 -0
- package/skills/warlock-board/SKILL.md +123 -0
- package/skills/warlock-check/SKILL.md +133 -0
- package/skills/warlock-conventions/SKILL.md +115 -0
- package/skills/warlock-doctor/SKILL.md +55 -22
- package/skills/warlock-inspect/SKILL.md +134 -0
- package/skills/warlock-mcp/SKILL.md +120 -0
- package/skills/warlock-routes/SKILL.md +18 -11
- package/skills/warlock-trace/SKILL.md +81 -0
- package/skills/wire-socket/SKILL.md +8 -8
- package/skills/write-seeder/SKILL.md +46 -32
- package/skills/write-use-case/SKILL.md +40 -27
- package/esm/http/uploads/matches-if-none-match.mjs +0 -13
- package/esm/http/uploads/matches-if-none-match.mjs.map +0 -1
|
@@ -7,40 +7,58 @@
|
|
|
7
7
|
/**
|
|
8
8
|
* Get the test server base URL
|
|
9
9
|
*/
|
|
10
|
-
declare function getTestServerUrl(): string;
|
|
10
|
+
export declare function getTestServerUrl(): string;
|
|
11
11
|
/**
|
|
12
12
|
* Simple HTTP request helper for test server
|
|
13
13
|
* Uses native fetch - lightweight, no extra dependencies
|
|
14
14
|
*/
|
|
15
|
-
declare function testRequest(path: string, options?: RequestInit): Promise<Response>;
|
|
15
|
+
export declare function testRequest(path: string, options?: RequestInit): Promise<Response>;
|
|
16
|
+
/** The request helpers, bound to one server. */
|
|
17
|
+
export type TestRequestClient = {
|
|
18
|
+
request(path: string, options?: RequestInit): Promise<Response>;
|
|
19
|
+
get(path: string, options?: RequestInit): Promise<Response>;
|
|
20
|
+
post(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
|
|
21
|
+
put(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
|
|
22
|
+
patch(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
|
|
23
|
+
delete(path: string, options?: RequestInit): Promise<Response>;
|
|
24
|
+
};
|
|
25
|
+
/**
|
|
26
|
+
* Request helpers bound to `baseUrl` (a string, or a function read on every
|
|
27
|
+
* request). `testGet()` and friends are this, bound to the shared test server;
|
|
28
|
+
* `createTestHttpServer()` returns one bound to its own port.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* const client = createTestRequestClient("http://127.0.0.1:4100");
|
|
32
|
+
* await client.post("/posts", { title: "Hello" });
|
|
33
|
+
*/
|
|
34
|
+
export declare function createTestRequestClient(baseUrl: string | (() => string)): TestRequestClient;
|
|
16
35
|
/**
|
|
17
36
|
* GET request helper
|
|
18
37
|
*/
|
|
19
|
-
declare function testGet(path: string, options?: RequestInit): Promise<Response>;
|
|
38
|
+
export declare function testGet(path: string, options?: RequestInit): Promise<Response>;
|
|
20
39
|
/**
|
|
21
40
|
* POST request helper
|
|
22
41
|
*/
|
|
23
|
-
declare function testPost(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
|
|
42
|
+
export declare function testPost(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
|
|
24
43
|
/**
|
|
25
44
|
* PUT request helper
|
|
26
45
|
*/
|
|
27
|
-
declare function testPut(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
|
|
46
|
+
export declare function testPut(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
|
|
28
47
|
/**
|
|
29
48
|
* DELETE request helper
|
|
30
49
|
*/
|
|
31
|
-
declare function testDelete(path: string, options?: RequestInit): Promise<Response>;
|
|
50
|
+
export declare function testDelete(path: string, options?: RequestInit): Promise<Response>;
|
|
32
51
|
/**
|
|
33
52
|
* PATCH request helper
|
|
34
53
|
*/
|
|
35
|
-
declare function testPatch(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
|
|
54
|
+
export declare function testPatch(path: string, body?: unknown, options?: RequestInit): Promise<Response>;
|
|
36
55
|
/**
|
|
37
56
|
* Parse JSON response with type safety
|
|
38
57
|
*/
|
|
39
|
-
declare function parseJsonResponse<T>(response: Response): Promise<T>;
|
|
58
|
+
export declare function parseJsonResponse<T>(response: Response): Promise<T>;
|
|
40
59
|
/**
|
|
41
60
|
* Assert response status and return parsed JSON
|
|
42
61
|
*/
|
|
43
|
-
declare function expectJson<T>(response: Response, expectedStatus?: number): Promise<T>;
|
|
62
|
+
export declare function expectJson<T>(response: Response, expectedStatus?: number): Promise<T>;
|
|
44
63
|
//#endregion
|
|
45
|
-
export { expectJson, getTestServerUrl, parseJsonResponse, testDelete, testGet, testPatch, testPost, testPut, testRequest };
|
|
46
64
|
//# sourceMappingURL=test-helpers.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-helpers.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/tests/test-helpers.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"test-helpers.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/tests/test-helpers.ts"],"mappings":";;;;;;;;;wBAagB;;;;;wBA6BM,YAAY,cAAc,UAAS,cAAmB,QAAQ;;YA8CxE;EACV,QAAQ,cAAc,UAAU,cAAc,QAAQ;EACtD,IAAI,cAAc,UAAU,cAAc,QAAQ;EAClD,KAAK,cAAc,gBAAgB,UAAU,cAAc,QAAQ;EACnE,IAAI,cAAc,gBAAgB,UAAU,cAAc,QAAQ;EAClE,MAAM,cAAc,gBAAgB,UAAU,cAAc,QAAQ;EACpE,OAAO,cAAc,UAAU,cAAc,QAAQ;;;;;;;;;;;wBAYvC,wBAAwB,mCAAmC;;;;wBAqBrD,QAAQ,cAAc,UAAS,cAAmB,QAAQ;;;;wBAO1D,SACpB,cACA,gBACA,UAAS,cACR,QAAQ;;;;wBAOW,QACpB,cACA,gBACA,UAAS,cACR,QAAQ;;;;wBAOW,WAAW,cAAc,UAAS,cAAmB,QAAQ;;;;wBAO7D,UACpB,cACA,gBACA,UAAS,cACR,QAAQ;;;;wBAOW,kBAAkB,GAAG,UAAU,WAAW,QAAQ;;;;wBAOlD,WAAW,GAAG,UAAU,UAAU,0BAAuB,QAAQ"}
|
|
@@ -23,7 +23,7 @@ function getTestServerUrl() {
|
|
|
23
23
|
* Uses native fetch - lightweight, no extra dependencies
|
|
24
24
|
*/
|
|
25
25
|
async function testRequest(path, options = {}) {
|
|
26
|
-
return sendRequest(path, options, false);
|
|
26
|
+
return sendRequest(getTestServerUrl(), path, options, false);
|
|
27
27
|
}
|
|
28
28
|
/**
|
|
29
29
|
* The single place a request is actually built.
|
|
@@ -33,8 +33,7 @@ async function testRequest(path, options = {}) {
|
|
|
33
33
|
* a `FormData` body carries a multipart boundary the runtime generates, and
|
|
34
34
|
* labelling it `application/json` produces a request no server can parse.
|
|
35
35
|
*/
|
|
36
|
-
async function sendRequest(path, options, serializedJson) {
|
|
37
|
-
const baseUrl = getTestServerUrl();
|
|
36
|
+
async function sendRequest(baseUrl, path, options, serializedJson) {
|
|
38
37
|
const url = path.startsWith("/") ? `${baseUrl}${path}` : `${baseUrl}/${path}`;
|
|
39
38
|
const headers = new Headers(options.headers);
|
|
40
39
|
if (serializedJson && !headers.has("content-type")) headers.set("content-type", "application/json");
|
|
@@ -55,52 +54,66 @@ function jsonBody(body) {
|
|
|
55
54
|
return body === void 0 ? void 0 : JSON.stringify(body);
|
|
56
55
|
}
|
|
57
56
|
/**
|
|
57
|
+
* Request helpers bound to `baseUrl` (a string, or a function read on every
|
|
58
|
+
* request). `testGet()` and friends are this, bound to the shared test server;
|
|
59
|
+
* `createTestHttpServer()` returns one bound to its own port.
|
|
60
|
+
*
|
|
61
|
+
* @example
|
|
62
|
+
* const client = createTestRequestClient("http://127.0.0.1:4100");
|
|
63
|
+
* await client.post("/posts", { title: "Hello" });
|
|
64
|
+
*/
|
|
65
|
+
function createTestRequestClient(baseUrl) {
|
|
66
|
+
const base = () => typeof baseUrl === "function" ? baseUrl() : baseUrl;
|
|
67
|
+
const send = (method, path, body, options = {}) => sendRequest(base(), path, {
|
|
68
|
+
...options,
|
|
69
|
+
method,
|
|
70
|
+
body: jsonBody(body)
|
|
71
|
+
}, body !== void 0);
|
|
72
|
+
return {
|
|
73
|
+
request: (path, options = {}) => sendRequest(base(), path, options, false),
|
|
74
|
+
get: (path, options = {}) => sendRequest(base(), path, {
|
|
75
|
+
...options,
|
|
76
|
+
method: "GET"
|
|
77
|
+
}, false),
|
|
78
|
+
post: (path, body, options) => send("POST", path, body, options),
|
|
79
|
+
put: (path, body, options) => send("PUT", path, body, options),
|
|
80
|
+
patch: (path, body, options) => send("PATCH", path, body, options),
|
|
81
|
+
delete: (path, options = {}) => sendRequest(base(), path, {
|
|
82
|
+
...options,
|
|
83
|
+
method: "DELETE"
|
|
84
|
+
}, false)
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
const sharedServer = createTestRequestClient(getTestServerUrl);
|
|
88
|
+
/**
|
|
58
89
|
* GET request helper
|
|
59
90
|
*/
|
|
60
91
|
async function testGet(path, options = {}) {
|
|
61
|
-
return
|
|
62
|
-
...options,
|
|
63
|
-
method: "GET"
|
|
64
|
-
});
|
|
92
|
+
return sharedServer.get(path, options);
|
|
65
93
|
}
|
|
66
94
|
/**
|
|
67
95
|
* POST request helper
|
|
68
96
|
*/
|
|
69
97
|
async function testPost(path, body, options = {}) {
|
|
70
|
-
return
|
|
71
|
-
...options,
|
|
72
|
-
method: "POST",
|
|
73
|
-
body: jsonBody(body)
|
|
74
|
-
}, body !== void 0);
|
|
98
|
+
return sharedServer.post(path, body, options);
|
|
75
99
|
}
|
|
76
100
|
/**
|
|
77
101
|
* PUT request helper
|
|
78
102
|
*/
|
|
79
103
|
async function testPut(path, body, options = {}) {
|
|
80
|
-
return
|
|
81
|
-
...options,
|
|
82
|
-
method: "PUT",
|
|
83
|
-
body: jsonBody(body)
|
|
84
|
-
}, body !== void 0);
|
|
104
|
+
return sharedServer.put(path, body, options);
|
|
85
105
|
}
|
|
86
106
|
/**
|
|
87
107
|
* DELETE request helper
|
|
88
108
|
*/
|
|
89
109
|
async function testDelete(path, options = {}) {
|
|
90
|
-
return
|
|
91
|
-
...options,
|
|
92
|
-
method: "DELETE"
|
|
93
|
-
});
|
|
110
|
+
return sharedServer.delete(path, options);
|
|
94
111
|
}
|
|
95
112
|
/**
|
|
96
113
|
* PATCH request helper
|
|
97
114
|
*/
|
|
98
115
|
async function testPatch(path, body, options = {}) {
|
|
99
|
-
return
|
|
100
|
-
...options,
|
|
101
|
-
method: "PATCH",
|
|
102
|
-
body: jsonBody(body)
|
|
103
|
-
}, body !== void 0);
|
|
116
|
+
return sharedServer.patch(path, body, options);
|
|
104
117
|
}
|
|
105
118
|
/**
|
|
106
119
|
* Parse JSON response with type safety
|
|
@@ -120,5 +133,5 @@ async function expectJson(response, expectedStatus = 200) {
|
|
|
120
133
|
}
|
|
121
134
|
|
|
122
135
|
//#endregion
|
|
123
|
-
export { expectJson, getTestServerUrl, parseJsonResponse, testDelete, testGet, testPatch, testPost, testPut, testRequest };
|
|
136
|
+
export { createTestRequestClient, expectJson, getTestServerUrl, parseJsonResponse, testDelete, testGet, testPatch, testPost, testPut, testRequest };
|
|
124
137
|
//# sourceMappingURL=test-helpers.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"test-helpers.mjs","names":[],"sources":["../../../../../../../../packages/core/src/tests/test-helpers.ts"],"sourcesContent":["/**\n * Warlock.js Test Helpers\n *\n * Utilities for testing Warlock.js applications.\n */\n\nimport { config } from \"../config\";\nimport { getHttpReadyReport } from \"../http/ready-report\";\nimport { TEST_SERVER_PORT_ENV_KEY } from \"./test-server-port-channel\";\n\n/**\n * Get the test server base URL\n */\nexport function getTestServerUrl(): string {\n // `startHttpTestServer` publishes the port it actually bound. Test workers are\n // separate processes whose own config resolves `http.port` from `.env`, so\n // without this a suite started on an explicit port would send every request to\n // the `.env` port instead of the one the server is listening on.\n const publishedPort = process.env[TEST_SERVER_PORT_ENV_KEY];\n\n // Same-process fallback: a test that boots the HTTP connector directly\n // (rather than through `startHttpTestServer`'s cross-process channel) never\n // writes `TEST_SERVER_PORT_ENV_KEY`, so without this the next fallback —\n // `config.key(\"http.port\", 2031)` — was the only source left, and it holds\n // the CONFIGURED port, not the bound one. For `http.port: 0` that is `0`,\n // producing `http://host:0` even though `HttpConnector.start()` had already\n // recorded the real bound port right here in `ready-report.ts`.\n const boundPort = getHttpReadyReport()?.port;\n\n // `config.key`'s default only substitutes for `undefined` — `0` is a\n // defined configured value, not an absent one — so it cannot be trusted to\n // paper over an unresolved port 0 either. `boundPort` is read first for\n // that exact reason.\n const port = publishedPort || boundPort || config.key(\"http.port\", 2031);\n const host = config.key(\"http.host\", \"localhost\");\n return `http://${host}:${port}`;\n}\n\n/**\n * Simple HTTP request helper for test server\n * Uses native fetch - lightweight, no extra dependencies\n */\nexport async function testRequest(path: string, options: RequestInit = {}): Promise<Response> {\n return sendRequest(path, options, false);\n}\n\n/**\n * The single place a request is actually built.\n *\n * `serializedJson` says whether THIS module turned the caller's value into a\n * JSON string. It is the only thing that justifies setting a JSON content type:\n * a `FormData` body carries a multipart boundary the runtime generates, and\n * labelling it `application/json` produces a request no server can parse.\n */\nasync function sendRequest(\n path: string,\n options: RequestInit,\n serializedJson: boolean,\n): Promise<Response> {\n const
|
|
1
|
+
{"version":3,"file":"test-helpers.mjs","names":[],"sources":["../../../../../../../../packages/core/src/tests/test-helpers.ts"],"sourcesContent":["/**\n * Warlock.js Test Helpers\n *\n * Utilities for testing Warlock.js applications.\n */\n\nimport { config } from \"../config\";\nimport { getHttpReadyReport } from \"../http/ready-report\";\nimport { TEST_SERVER_PORT_ENV_KEY } from \"./test-server-port-channel\";\n\n/**\n * Get the test server base URL\n */\nexport function getTestServerUrl(): string {\n // `startHttpTestServer` publishes the port it actually bound. Test workers are\n // separate processes whose own config resolves `http.port` from `.env`, so\n // without this a suite started on an explicit port would send every request to\n // the `.env` port instead of the one the server is listening on.\n const publishedPort = process.env[TEST_SERVER_PORT_ENV_KEY];\n\n // Same-process fallback: a test that boots the HTTP connector directly\n // (rather than through `startHttpTestServer`'s cross-process channel) never\n // writes `TEST_SERVER_PORT_ENV_KEY`, so without this the next fallback —\n // `config.key(\"http.port\", 2031)` — was the only source left, and it holds\n // the CONFIGURED port, not the bound one. For `http.port: 0` that is `0`,\n // producing `http://host:0` even though `HttpConnector.start()` had already\n // recorded the real bound port right here in `ready-report.ts`.\n const boundPort = getHttpReadyReport()?.port;\n\n // `config.key`'s default only substitutes for `undefined` — `0` is a\n // defined configured value, not an absent one — so it cannot be trusted to\n // paper over an unresolved port 0 either. `boundPort` is read first for\n // that exact reason.\n const port = publishedPort || boundPort || config.key(\"http.port\", 2031);\n const host = config.key(\"http.host\", \"localhost\");\n return `http://${host}:${port}`;\n}\n\n/**\n * Simple HTTP request helper for test server\n * Uses native fetch - lightweight, no extra dependencies\n */\nexport async function testRequest(path: string, options: RequestInit = {}): Promise<Response> {\n return sendRequest(getTestServerUrl(), path, options, false);\n}\n\n/**\n * The single place a request is actually built.\n *\n * `serializedJson` says whether THIS module turned the caller's value into a\n * JSON string. It is the only thing that justifies setting a JSON content type:\n * a `FormData` body carries a multipart boundary the runtime generates, and\n * labelling it `application/json` produces a request no server can parse.\n */\nasync function sendRequest(\n baseUrl: string,\n path: string,\n options: RequestInit,\n serializedJson: boolean,\n): Promise<Response> {\n const url = path.startsWith(\"/\") ? `${baseUrl}${path}` : `${baseUrl}/${path}`;\n\n // Normalised through `Headers` rather than object-spread: `RequestInit.headers`\n // may be a record, a `Headers` instance, or a list of `[name, value]` tuples,\n // and spreading the last two silently produces an object with numeric keys —\n // the header is simply lost, with no error anywhere.\n const headers = new Headers(options.headers);\n\n if (serializedJson && !headers.has(\"content-type\")) {\n headers.set(\"content-type\", \"application/json\");\n }\n\n return fetch(url, { ...options, headers });\n}\n\n/**\n * Serialize a body for a JSON request.\n *\n * `undefined` means the caller omitted the argument; every other value —\n * including `false`, `0`, `\"\"` and `null` — is a legal JSON document and must\n * be sent. The old check was `body ? JSON.stringify(body) : undefined`, which\n * dropped all four.\n */\nfunction jsonBody(body: unknown): string | undefined {\n return body === undefined ? undefined : JSON.stringify(body);\n}\n\n/** The request helpers, bound to one server. */\nexport type TestRequestClient = {\n request(path: string, options?: RequestInit): Promise<Response>;\n get(path: string, options?: RequestInit): Promise<Response>;\n post(path: string, body?: unknown, options?: RequestInit): Promise<Response>;\n put(path: string, body?: unknown, options?: RequestInit): Promise<Response>;\n patch(path: string, body?: unknown, options?: RequestInit): Promise<Response>;\n delete(path: string, options?: RequestInit): Promise<Response>;\n};\n\n/**\n * Request helpers bound to `baseUrl` (a string, or a function read on every\n * request). `testGet()` and friends are this, bound to the shared test server;\n * `createTestHttpServer()` returns one bound to its own port.\n *\n * @example\n * const client = createTestRequestClient(\"http://127.0.0.1:4100\");\n * await client.post(\"/posts\", { title: \"Hello\" });\n */\nexport function createTestRequestClient(baseUrl: string | (() => string)): TestRequestClient {\n const base = () => (typeof baseUrl === \"function\" ? baseUrl() : baseUrl);\n const send = (method: string, path: string, body: unknown, options: RequestInit = {}) =>\n sendRequest(base(), path, { ...options, method, body: jsonBody(body) }, body !== undefined);\n\n return {\n request: (path, options = {}) => sendRequest(base(), path, options, false),\n get: (path, options = {}) => sendRequest(base(), path, { ...options, method: \"GET\" }, false),\n post: (path, body, options) => send(\"POST\", path, body, options),\n put: (path, body, options) => send(\"PUT\", path, body, options),\n patch: (path, body, options) => send(\"PATCH\", path, body, options),\n delete: (path, options = {}) =>\n sendRequest(base(), path, { ...options, method: \"DELETE\" }, false),\n };\n}\n\nconst sharedServer = createTestRequestClient(getTestServerUrl);\n\n/**\n * GET request helper\n */\nexport async function testGet(path: string, options: RequestInit = {}): Promise<Response> {\n return sharedServer.get(path, options);\n}\n\n/**\n * POST request helper\n */\nexport async function testPost(\n path: string,\n body?: unknown,\n options: RequestInit = {},\n): Promise<Response> {\n return sharedServer.post(path, body, options);\n}\n\n/**\n * PUT request helper\n */\nexport async function testPut(\n path: string,\n body?: unknown,\n options: RequestInit = {},\n): Promise<Response> {\n return sharedServer.put(path, body, options);\n}\n\n/**\n * DELETE request helper\n */\nexport async function testDelete(path: string, options: RequestInit = {}): Promise<Response> {\n return sharedServer.delete(path, options);\n}\n\n/**\n * PATCH request helper\n */\nexport async function testPatch(\n path: string,\n body?: unknown,\n options: RequestInit = {},\n): Promise<Response> {\n return sharedServer.patch(path, body, options);\n}\n\n/**\n * Parse JSON response with type safety\n */\nexport async function parseJsonResponse<T>(response: Response): Promise<T> {\n return response.json() as Promise<T>;\n}\n\n/**\n * Assert response status and return parsed JSON\n */\nexport async function expectJson<T>(response: Response, expectedStatus = 200): Promise<T> {\n if (response.status !== expectedStatus) {\n const text = await response.text();\n throw new Error(`Expected status ${expectedStatus}, got ${response.status}. Body: ${text}`);\n }\n return parseJsonResponse<T>(response);\n}\n"],"mappings":";;;;;;;;;;;;;;AAaA,SAAgB,mBAA2B;CAKzC,MAAM,gBAAgB,QAAQ,IAAI;CASlC,MAAM,YAAY,mBAAmB,CAAC,EAAE;CAMxC,MAAM,OAAO,iBAAiB,aAAa,OAAO,IAAI,aAAa,IAAI;CAEvE,OAAO,UADM,OAAO,IAAI,aAAa,WACjB,EAAE,GAAG;AAC3B;;;;;AAMA,eAAsB,YAAY,MAAc,UAAuB,CAAC,GAAsB;CAC5F,OAAO,YAAY,iBAAiB,GAAG,MAAM,SAAS,KAAK;AAC7D;;;;;;;;;AAUA,eAAe,YACb,SACA,MACA,SACA,gBACmB;CACnB,MAAM,MAAM,KAAK,WAAW,GAAG,IAAI,GAAG,UAAU,SAAS,GAAG,QAAQ,GAAG;CAMvE,MAAM,UAAU,IAAI,QAAQ,QAAQ,OAAO;CAE3C,IAAI,kBAAkB,CAAC,QAAQ,IAAI,cAAc,GAC/C,QAAQ,IAAI,gBAAgB,kBAAkB;CAGhD,OAAO,MAAM,KAAK;EAAE,GAAG;EAAS;CAAQ,CAAC;AAC3C;;;;;;;;;AAUA,SAAS,SAAS,MAAmC;CACnD,OAAO,SAAS,SAAY,SAAY,KAAK,UAAU,IAAI;AAC7D;;;;;;;;;;AAqBA,SAAgB,wBAAwB,SAAqD;CAC3F,MAAM,aAAc,OAAO,YAAY,aAAa,QAAQ,IAAI;CAChE,MAAM,QAAQ,QAAgB,MAAc,MAAe,UAAuB,CAAC,MACjF,YAAY,KAAK,GAAG,MAAM;EAAE,GAAG;EAAS;EAAQ,MAAM,SAAS,IAAI;CAAE,GAAG,SAAS,MAAS;CAE5F,OAAO;EACL,UAAU,MAAM,UAAU,CAAC,MAAM,YAAY,KAAK,GAAG,MAAM,SAAS,KAAK;EACzE,MAAM,MAAM,UAAU,CAAC,MAAM,YAAY,KAAK,GAAG,MAAM;GAAE,GAAG;GAAS,QAAQ;EAAM,GAAG,KAAK;EAC3F,OAAO,MAAM,MAAM,YAAY,KAAK,QAAQ,MAAM,MAAM,OAAO;EAC/D,MAAM,MAAM,MAAM,YAAY,KAAK,OAAO,MAAM,MAAM,OAAO;EAC7D,QAAQ,MAAM,MAAM,YAAY,KAAK,SAAS,MAAM,MAAM,OAAO;EACjE,SAAS,MAAM,UAAU,CAAC,MACxB,YAAY,KAAK,GAAG,MAAM;GAAE,GAAG;GAAS,QAAQ;EAAS,GAAG,KAAK;CACrE;AACF;AAEA,MAAM,eAAe,wBAAwB,gBAAgB;;;;AAK7D,eAAsB,QAAQ,MAAc,UAAuB,CAAC,GAAsB;CACxF,OAAO,aAAa,IAAI,MAAM,OAAO;AACvC;;;;AAKA,eAAsB,SACpB,MACA,MACA,UAAuB,CAAC,GACL;CACnB,OAAO,aAAa,KAAK,MAAM,MAAM,OAAO;AAC9C;;;;AAKA,eAAsB,QACpB,MACA,MACA,UAAuB,CAAC,GACL;CACnB,OAAO,aAAa,IAAI,MAAM,MAAM,OAAO;AAC7C;;;;AAKA,eAAsB,WAAW,MAAc,UAAuB,CAAC,GAAsB;CAC3F,OAAO,aAAa,OAAO,MAAM,OAAO;AAC1C;;;;AAKA,eAAsB,UACpB,MACA,MACA,UAAuB,CAAC,GACL;CACnB,OAAO,aAAa,MAAM,MAAM,MAAM,OAAO;AAC/C;;;;AAKA,eAAsB,kBAAqB,UAAgC;CACzE,OAAO,SAAS,KAAK;AACvB;;;;AAKA,eAAsB,WAAc,UAAoB,iBAAiB,KAAiB;CACxF,IAAI,SAAS,WAAW,gBAAgB;EACtC,MAAM,OAAO,MAAM,SAAS,KAAK;EACjC,MAAM,IAAI,MAAM,mBAAmB,eAAe,QAAQ,SAAS,OAAO,UAAU,MAAM;CAC5F;CACA,OAAO,kBAAqB,QAAQ;AACtC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { FastifyInstance } from "../http/server.mjs";
|
|
2
|
+
import { Router } from "../router/router.mjs";
|
|
3
|
+
import { TestRequestClient } from "./test-helpers.mjs";
|
|
4
|
+
import { AuthenticatedTestClient, TestAuthenticableUser } from "./authenticated-test-client.mjs";
|
|
5
|
+
import { AppModuleImporter } from "../loader/app-module-importer.mjs";
|
|
6
|
+
//#region ../../packages/core/src/tests/test-http-server.d.ts
|
|
7
|
+
export type CreateTestHttpServerOptions = {
|
|
8
|
+
/**
|
|
9
|
+
* Register routes for this server, exactly as a `routes.ts` would. They are
|
|
10
|
+
* tagged with a source of their own and removed again by `close()`.
|
|
11
|
+
*/
|
|
12
|
+
routes?: (router: Router) => unknown;
|
|
13
|
+
/**
|
|
14
|
+
* Load the application's modules (`routes.ts`, `main.ts`, events, ...) first,
|
|
15
|
+
* so the server answers every app route. Needs `setupTest()` to have run in
|
|
16
|
+
* this worker. Modules load once per process; later servers reuse them.
|
|
17
|
+
*/
|
|
18
|
+
loadAppModules?: boolean;
|
|
19
|
+
/**
|
|
20
|
+
* How app modules are imported when `loadAppModules` is set. Pass
|
|
21
|
+
* `(file) => import(file)` from the test file, as `setupTest()` takes it, so
|
|
22
|
+
* app classes are the same ones the test imports.
|
|
23
|
+
*/
|
|
24
|
+
importModule?: AppModuleImporter;
|
|
25
|
+
/** Interface to bind. Defaults to `127.0.0.1`. */
|
|
26
|
+
host?: string;
|
|
27
|
+
};
|
|
28
|
+
export type TestHttpServer = TestRequestClient & {
|
|
29
|
+
/** `http://127.0.0.1:<port>` */
|
|
30
|
+
readonly url: string;
|
|
31
|
+
/** The port the OS assigned. */
|
|
32
|
+
readonly port: number;
|
|
33
|
+
/** The Fastify instance, for `inject()` or anything else Fastify offers. */
|
|
34
|
+
readonly server: FastifyInstance;
|
|
35
|
+
/** A client for this server, signed in as `user` with a real access token. */
|
|
36
|
+
actingAs(user: TestAuthenticableUser): Promise<AuthenticatedTestClient>;
|
|
37
|
+
/** Stop listening and remove the routes `routes` registered. */
|
|
38
|
+
close(): Promise<void>;
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Start an in-process HTTP server with the production plugins, on a free port.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* const app = await createTestHttpServer({
|
|
45
|
+
* routes: (router) => router.post("/echo", ({ request, response }) =>
|
|
46
|
+
* response.success({ body: request.all() })),
|
|
47
|
+
* });
|
|
48
|
+
*
|
|
49
|
+
* const response = await app.post("/echo", { name: "Ada" });
|
|
50
|
+
* expect(response.status).toBe(200);
|
|
51
|
+
*
|
|
52
|
+
* await app.close();
|
|
53
|
+
*
|
|
54
|
+
* @example
|
|
55
|
+
* // every app route, with the fakes seeing what the controller did
|
|
56
|
+
* const app = await createTestHttpServer({
|
|
57
|
+
* loadAppModules: true,
|
|
58
|
+
* importModule: (file) => import(file),
|
|
59
|
+
* });
|
|
60
|
+
*
|
|
61
|
+
* await app.post("/contact", { email: "ada@example.test", message: "Hi" });
|
|
62
|
+
* mailFake.assertSent({ to: "support@example.test" });
|
|
63
|
+
*/
|
|
64
|
+
export declare function createTestHttpServer(options?: CreateTestHttpServerOptions): Promise<TestHttpServer>;
|
|
65
|
+
//#endregion
|
|
66
|
+
//# sourceMappingURL=test-http-server.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-http-server.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/tests/test-http-server.ts"],"mappings":";;;;;;YA+BY;;;;;EAKV,UAAU,QAAQ;;;;;;EAMlB;;;;;;EAMA,eAAe;;EAEf;;YAGU,iBAAiB;;WAElB;;WAEA;;WAEA,QAAQ;;EAEjB,SAAS,MAAM,wBAAwB,QAAQ;;EAE/C,SAAS;;;;;;;;;;;;;;;;;;;;;;;;;;wBAmEW,qBACpB,UAAS,8BACR,QAAQ"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
import { validateCspConfigAtBoot } from "../http/csp.mjs";
|
|
2
|
+
import { router } from "../router/router.mjs";
|
|
3
|
+
import { registerHttpPlugins } from "../http/plugins.mjs";
|
|
4
|
+
import { startHttpServer } from "../http/server.mjs";
|
|
5
|
+
import { setAppModuleImporter } from "../loader/app-module-importer.mjs";
|
|
6
|
+
import { createTestRequestClient } from "./test-helpers.mjs";
|
|
7
|
+
import { actingAs } from "./authenticated-test-client.mjs";
|
|
8
|
+
|
|
9
|
+
//#region ../../packages/core/src/tests/test-http-server.ts
|
|
10
|
+
/**
|
|
11
|
+
* An HTTP server inside the test process, built the way production builds it.
|
|
12
|
+
*
|
|
13
|
+
* `startHttpTestServer()` runs one server for the whole run, in Vitest's main
|
|
14
|
+
* process. This is the other shape: a server per test file (or per test) in the
|
|
15
|
+
* worker itself, on an OS-assigned port. Two things follow from living in the
|
|
16
|
+
* worker:
|
|
17
|
+
*
|
|
18
|
+
* - Requests run through the REAL stack: the Fastify instance `startHttpServer`
|
|
19
|
+
* creates, every plugin `registerHttpPlugins` registers in production (rate
|
|
20
|
+
* limit, CORS, multipart, cookies, ...), and the router's real route
|
|
21
|
+
* registration. A test cannot pass against a request shape production never
|
|
22
|
+
* produces, and the plugins' own behaviour (what the rate-limit store is
|
|
23
|
+
* handed, how a cookie is parsed) is what runs.
|
|
24
|
+
* - The test fakes see everything the request did: mail sent and jobs pushed
|
|
25
|
+
* by the controller land in this process's `mailFake` / `queueFake`.
|
|
26
|
+
*/
|
|
27
|
+
const APP_MODULES_LOADED_KEY = Symbol.for("warlock.core.testAppModulesLoaded");
|
|
28
|
+
let serverCounter = 0;
|
|
29
|
+
async function loadAppModulesOnce(importModule) {
|
|
30
|
+
const holder = globalThis;
|
|
31
|
+
holder[APP_MODULES_LOADED_KEY] ??= (async () => {
|
|
32
|
+
const { filesOrchestrator } = await import("../dev-server/files-orchestrator.mjs");
|
|
33
|
+
setAppModuleImporter(importModule);
|
|
34
|
+
try {
|
|
35
|
+
await filesOrchestrator.init();
|
|
36
|
+
await filesOrchestrator.initializeAll();
|
|
37
|
+
await filesOrchestrator.moduleLoader.loadAll();
|
|
38
|
+
} finally {
|
|
39
|
+
setAppModuleImporter(void 0);
|
|
40
|
+
}
|
|
41
|
+
})().catch((error) => {
|
|
42
|
+
holder[APP_MODULES_LOADED_KEY] = void 0;
|
|
43
|
+
throw error;
|
|
44
|
+
});
|
|
45
|
+
await holder[APP_MODULES_LOADED_KEY];
|
|
46
|
+
}
|
|
47
|
+
function boundPort(server) {
|
|
48
|
+
const address = server.server.address();
|
|
49
|
+
if (address === null || typeof address === "string") throw new Error("createTestHttpServer(): the server did not report a TCP port after listen().");
|
|
50
|
+
return address.port;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Start an in-process HTTP server with the production plugins, on a free port.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* const app = await createTestHttpServer({
|
|
57
|
+
* routes: (router) => router.post("/echo", ({ request, response }) =>
|
|
58
|
+
* response.success({ body: request.all() })),
|
|
59
|
+
* });
|
|
60
|
+
*
|
|
61
|
+
* const response = await app.post("/echo", { name: "Ada" });
|
|
62
|
+
* expect(response.status).toBe(200);
|
|
63
|
+
*
|
|
64
|
+
* await app.close();
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* // every app route, with the fakes seeing what the controller did
|
|
68
|
+
* const app = await createTestHttpServer({
|
|
69
|
+
* loadAppModules: true,
|
|
70
|
+
* importModule: (file) => import(file),
|
|
71
|
+
* });
|
|
72
|
+
*
|
|
73
|
+
* await app.post("/contact", { email: "ada@example.test", message: "Hi" });
|
|
74
|
+
* mailFake.assertSent({ to: "support@example.test" });
|
|
75
|
+
*/
|
|
76
|
+
async function createTestHttpServer(options = {}) {
|
|
77
|
+
const host = options.host ?? "127.0.0.1";
|
|
78
|
+
const sourceFile = `test-http-server-${++serverCounter}`;
|
|
79
|
+
if (options.loadAppModules) await loadAppModulesOnce(options.importModule);
|
|
80
|
+
if (options.routes) {
|
|
81
|
+
const register = options.routes;
|
|
82
|
+
await router.withSourceFile(sourceFile, () => register(router));
|
|
83
|
+
}
|
|
84
|
+
validateCspConfigAtBoot();
|
|
85
|
+
const server = startHttpServer();
|
|
86
|
+
try {
|
|
87
|
+
await registerHttpPlugins(server);
|
|
88
|
+
router.scan(server);
|
|
89
|
+
await server.listen({
|
|
90
|
+
port: 0,
|
|
91
|
+
host
|
|
92
|
+
});
|
|
93
|
+
} catch (error) {
|
|
94
|
+
router.removeRoutesBySourceFile(sourceFile);
|
|
95
|
+
await server.close().catch(() => void 0);
|
|
96
|
+
throw error;
|
|
97
|
+
}
|
|
98
|
+
const port = boundPort(server);
|
|
99
|
+
const url = `http://${host.includes(":") ? `[${host}]` : host}:${port}`;
|
|
100
|
+
const client = createTestRequestClient(url);
|
|
101
|
+
let closed = false;
|
|
102
|
+
return {
|
|
103
|
+
...client,
|
|
104
|
+
url,
|
|
105
|
+
port,
|
|
106
|
+
server,
|
|
107
|
+
actingAs: (user) => actingAs(user, client),
|
|
108
|
+
close: async () => {
|
|
109
|
+
if (closed) return;
|
|
110
|
+
closed = true;
|
|
111
|
+
router.removeRoutesBySourceFile(sourceFile);
|
|
112
|
+
await server.close();
|
|
113
|
+
}
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
|
|
117
|
+
//#endregion
|
|
118
|
+
export { createTestHttpServer };
|
|
119
|
+
//# sourceMappingURL=test-http-server.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"test-http-server.mjs","names":[],"sources":["../../../../../../../../packages/core/src/tests/test-http-server.ts"],"sourcesContent":["/**\n * An HTTP server inside the test process, built the way production builds it.\n *\n * `startHttpTestServer()` runs one server for the whole run, in Vitest's main\n * process. This is the other shape: a server per test file (or per test) in the\n * worker itself, on an OS-assigned port. Two things follow from living in the\n * worker:\n *\n * - Requests run through the REAL stack: the Fastify instance `startHttpServer`\n * creates, every plugin `registerHttpPlugins` registers in production (rate\n * limit, CORS, multipart, cookies, ...), and the router's real route\n * registration. A test cannot pass against a request shape production never\n * produces, and the plugins' own behaviour (what the rate-limit store is\n * handed, how a cookie is parsed) is what runs.\n * - The test fakes see everything the request did: mail sent and jobs pushed\n * by the controller land in this process's `mailFake` / `queueFake`.\n */\nimport { router } from \"../router/router\";\nimport type { Router } from \"../router/router\";\nimport type { AppModuleImporter } from \"../loader/app-module-importer\";\nimport { setAppModuleImporter } from \"../loader/app-module-importer\";\nimport { validateCspConfigAtBoot } from \"../http/csp\";\nimport { registerHttpPlugins } from \"../http/plugins\";\nimport { type FastifyInstance, startHttpServer } from \"../http/server\";\nimport {\n type AuthenticatedTestClient,\n type TestAuthenticableUser,\n actingAs,\n} from \"./authenticated-test-client\";\nimport { type TestRequestClient, createTestRequestClient } from \"./test-helpers\";\n\nexport type CreateTestHttpServerOptions = {\n /**\n * Register routes for this server, exactly as a `routes.ts` would. They are\n * tagged with a source of their own and removed again by `close()`.\n */\n routes?: (router: Router) => unknown;\n /**\n * Load the application's modules (`routes.ts`, `main.ts`, events, ...) first,\n * so the server answers every app route. Needs `setupTest()` to have run in\n * this worker. Modules load once per process; later servers reuse them.\n */\n loadAppModules?: boolean;\n /**\n * How app modules are imported when `loadAppModules` is set. Pass\n * `(file) => import(file)` from the test file, as `setupTest()` takes it, so\n * app classes are the same ones the test imports.\n */\n importModule?: AppModuleImporter;\n /** Interface to bind. Defaults to `127.0.0.1`. */\n host?: string;\n};\n\nexport type TestHttpServer = TestRequestClient & {\n /** `http://127.0.0.1:<port>` */\n readonly url: string;\n /** The port the OS assigned. */\n readonly port: number;\n /** The Fastify instance, for `inject()` or anything else Fastify offers. */\n readonly server: FastifyInstance;\n /** A client for this server, signed in as `user` with a real access token. */\n actingAs(user: TestAuthenticableUser): Promise<AuthenticatedTestClient>;\n /** Stop listening and remove the routes `routes` registered. */\n close(): Promise<void>;\n};\n\nconst APP_MODULES_LOADED_KEY = Symbol.for(\"warlock.core.testAppModulesLoaded\");\n\ntype LoadedHolder = { [APP_MODULES_LOADED_KEY]?: Promise<void> };\n\nlet serverCounter = 0;\n\nasync function loadAppModulesOnce(importModule: AppModuleImporter | undefined): Promise<void> {\n const holder = globalThis as LoadedHolder;\n\n holder[APP_MODULES_LOADED_KEY] ??= (async () => {\n const { filesOrchestrator } = await import(\"../dev-server/files-orchestrator\");\n\n setAppModuleImporter(importModule);\n\n try {\n await filesOrchestrator.init();\n await filesOrchestrator.initializeAll();\n await filesOrchestrator.moduleLoader.loadAll();\n } finally {\n setAppModuleImporter(undefined);\n }\n })().catch((error: unknown) => {\n // A failed load may be retried by the next server.\n holder[APP_MODULES_LOADED_KEY] = undefined;\n throw error;\n });\n\n await holder[APP_MODULES_LOADED_KEY];\n}\n\nfunction boundPort(server: FastifyInstance): number {\n const address = server.server.address();\n\n if (address === null || typeof address === \"string\") {\n throw new Error(\"createTestHttpServer(): the server did not report a TCP port after listen().\");\n }\n\n return address.port;\n}\n\n/**\n * Start an in-process HTTP server with the production plugins, on a free port.\n *\n * @example\n * const app = await createTestHttpServer({\n * routes: (router) => router.post(\"/echo\", ({ request, response }) =>\n * response.success({ body: request.all() })),\n * });\n *\n * const response = await app.post(\"/echo\", { name: \"Ada\" });\n * expect(response.status).toBe(200);\n *\n * await app.close();\n *\n * @example\n * // every app route, with the fakes seeing what the controller did\n * const app = await createTestHttpServer({\n * loadAppModules: true,\n * importModule: (file) => import(file),\n * });\n *\n * await app.post(\"/contact\", { email: \"ada@example.test\", message: \"Hi\" });\n * mailFake.assertSent({ to: \"support@example.test\" });\n */\nexport async function createTestHttpServer(\n options: CreateTestHttpServerOptions = {},\n): Promise<TestHttpServer> {\n const host = options.host ?? \"127.0.0.1\";\n const sourceFile = `test-http-server-${++serverCounter}`;\n\n if (options.loadAppModules) {\n await loadAppModulesOnce(options.importModule);\n }\n\n if (options.routes) {\n const register = options.routes;\n\n await router.withSourceFile(sourceFile, () => register(router));\n }\n\n validateCspConfigAtBoot();\n\n const server = startHttpServer();\n\n try {\n await registerHttpPlugins(server);\n router.scan(server);\n await server.listen({ port: 0, host });\n } catch (error) {\n router.removeRoutesBySourceFile(sourceFile);\n await server.close().catch(() => undefined);\n throw error;\n }\n\n const port = boundPort(server);\n const url = `http://${host.includes(\":\") ? `[${host}]` : host}:${port}`;\n const client = createTestRequestClient(url);\n let closed = false;\n\n return {\n ...client,\n url,\n port,\n server,\n actingAs: (user) => actingAs(user, client),\n close: async () => {\n if (closed) return;\n\n closed = true;\n router.removeRoutesBySourceFile(sourceFile);\n await server.close();\n },\n };\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAkEA,MAAM,yBAAyB,OAAO,IAAI,mCAAmC;AAI7E,IAAI,gBAAgB;AAEpB,eAAe,mBAAmB,cAA4D;CAC5F,MAAM,SAAS;CAEf,OAAO,6BAA6B,YAAY;EAC9C,MAAM,EAAE,sBAAsB,MAAM,OAAO;EAE3C,qBAAqB,YAAY;EAEjC,IAAI;GACF,MAAM,kBAAkB,KAAK;GAC7B,MAAM,kBAAkB,cAAc;GACtC,MAAM,kBAAkB,aAAa,QAAQ;EAC/C,UAAU;GACR,qBAAqB,MAAS;EAChC;CACF,EAAC,CAAE,CAAC,CAAC,OAAO,UAAmB;EAE7B,OAAO,0BAA0B;EACjC,MAAM;CACR,CAAC;CAED,MAAM,OAAO;AACf;AAEA,SAAS,UAAU,QAAiC;CAClD,MAAM,UAAU,OAAO,OAAO,QAAQ;CAEtC,IAAI,YAAY,QAAQ,OAAO,YAAY,UACzC,MAAM,IAAI,MAAM,8EAA8E;CAGhG,OAAO,QAAQ;AACjB;;;;;;;;;;;;;;;;;;;;;;;;;AA0BA,eAAsB,qBACpB,UAAuC,CAAC,GACf;CACzB,MAAM,OAAO,QAAQ,QAAQ;CAC7B,MAAM,aAAa,oBAAoB,EAAE;CAEzC,IAAI,QAAQ,gBACV,MAAM,mBAAmB,QAAQ,YAAY;CAG/C,IAAI,QAAQ,QAAQ;EAClB,MAAM,WAAW,QAAQ;EAEzB,MAAM,OAAO,eAAe,kBAAkB,SAAS,MAAM,CAAC;CAChE;CAEA,wBAAwB;CAExB,MAAM,SAAS,gBAAgB;CAE/B,IAAI;EACF,MAAM,oBAAoB,MAAM;EAChC,OAAO,KAAK,MAAM;EAClB,MAAM,OAAO,OAAO;GAAE,MAAM;GAAG;EAAK,CAAC;CACvC,SAAS,OAAO;EACd,OAAO,yBAAyB,UAAU;EAC1C,MAAM,OAAO,MAAM,CAAC,CAAC,YAAY,MAAS;EAC1C,MAAM;CACR;CAEA,MAAM,OAAO,UAAU,MAAM;CAC7B,MAAM,MAAM,UAAU,KAAK,SAAS,GAAG,IAAI,IAAI,KAAK,KAAK,KAAK,GAAG;CACjE,MAAM,SAAS,wBAAwB,GAAG;CAC1C,IAAI,SAAS;CAEb,OAAO;EACL,GAAG;EACH;EACA;EACA;EACA,WAAW,SAAS,SAAS,MAAM,MAAM;EACzC,OAAO,YAAY;GACjB,IAAI,QAAQ;GAEZ,SAAS;GACT,OAAO,yBAAyB,UAAU;GAC1C,MAAM,OAAO,MAAM;EACrB;CACF;AACF"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
+
import { TestFakesSelection } from "./fakes/test-fakes.mjs";
|
|
1
2
|
import { AppModuleImporter } from "../loader/app-module-importer.mjs";
|
|
2
3
|
import { TestConnectorsSelection } from "./test-connectors-selection.mjs";
|
|
3
|
-
|
|
4
4
|
//#region ../../packages/core/src/tests/vitest-setup.d.ts
|
|
5
|
-
type TestSetupOptions = {
|
|
5
|
+
export type TestSetupOptions = {
|
|
6
6
|
/**
|
|
7
7
|
* Which connectors to start.
|
|
8
8
|
*
|
|
@@ -22,16 +22,26 @@ type TestSetupOptions = {
|
|
|
22
22
|
* fails. Defaults to native import.
|
|
23
23
|
*/
|
|
24
24
|
importModule?: AppModuleImporter;
|
|
25
|
+
/**
|
|
26
|
+
* Which test fakes to install once the connectors are up: mail, queue,
|
|
27
|
+
* cache, storage, clock and ids (see `installTestFakes`).
|
|
28
|
+
*
|
|
29
|
+
* Precedence is `explicit option > tests.fakes config > true`, so every fake
|
|
30
|
+
* is on unless the project or this call opts out. `false` keeps the real
|
|
31
|
+
* drivers; `{ cache: false }` keeps only the real cache. Teardown restores
|
|
32
|
+
* them.
|
|
33
|
+
*/
|
|
34
|
+
fakes?: TestFakesSelection;
|
|
25
35
|
};
|
|
26
36
|
/**
|
|
27
37
|
* Warn — once per process — that app modules are loaded outside Vitest's graph.
|
|
28
38
|
*/
|
|
29
|
-
declare function warnMissingImportModule(importModule: AppModuleImporter | undefined): void;
|
|
39
|
+
export declare function warnMissingImportModule(importModule: AppModuleImporter | undefined): void;
|
|
30
40
|
/**
|
|
31
41
|
* Raised by the lifecycle itself, never by the runtime it manages — a conflict
|
|
32
42
|
* between two calls, or a refusal to reuse a runtime that did not close.
|
|
33
43
|
*/
|
|
34
|
-
declare class TestLifecycleError extends Error {
|
|
44
|
+
export declare class TestLifecycleError extends Error {
|
|
35
45
|
constructor(message: string);
|
|
36
46
|
}
|
|
37
47
|
/**
|
|
@@ -61,7 +71,7 @@ declare class TestLifecycleError extends Error {
|
|
|
61
71
|
* // bootstrap only — no connectors, whatever config says
|
|
62
72
|
* await setupTest({ connectors: false });
|
|
63
73
|
*/
|
|
64
|
-
declare function setupTest(options?: TestSetupOptions): Promise<void>;
|
|
74
|
+
export declare function setupTest(options?: TestSetupOptions): Promise<void>;
|
|
65
75
|
/**
|
|
66
76
|
* Shut the test runtime down and release the lifecycle.
|
|
67
77
|
*
|
|
@@ -79,7 +89,7 @@ declare function setupTest(options?: TestSetupOptions): Promise<void>;
|
|
|
79
89
|
* `connectorsManager.shutdown()`, so they never reach this function and never
|
|
80
90
|
* poison anything. This lifecycle can only surface what that layer reports.
|
|
81
91
|
*/
|
|
82
|
-
declare function teardownTest(): Promise<void>;
|
|
92
|
+
export declare function teardownTest(): Promise<void>;
|
|
83
93
|
//#endregion
|
|
84
|
-
export {
|
|
94
|
+
export type { TestConnectorsSelection };
|
|
85
95
|
//# sourceMappingURL=vitest-setup.d.mts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vitest-setup.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/tests/vitest-setup.ts"],"mappings":";;;;
|
|
1
|
+
{"version":3,"file":"vitest-setup.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/tests/vitest-setup.ts"],"mappings":";;;;YAqDY;;;;;;;;;EASV,aAAa;;;;;;;;;;EAUb,eAAe;;;;;;;;;;EAUf,QAAQ;;;;;wBAQM,wBAAwB,cAAc;;;;;qBAkBzC,2BAA2B;EACtC,YAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wBAqCC,UAAU,UAAU,mBAAmB;;;;;;;;;;;;;;;;;;wBA0DvC,gBAAgB"}
|
|
@@ -6,6 +6,7 @@ import "../connectors/index.mjs";
|
|
|
6
6
|
import { setAppModuleImporter } from "../loader/app-module-importer.mjs";
|
|
7
7
|
import { filesOrchestrator } from "../dev-server/files-orchestrator.mjs";
|
|
8
8
|
import { loadConfigFiles } from "../config/load-config-files.mjs";
|
|
9
|
+
import { installTestFakes, restoreTestFakes } from "./fakes/test-fakes.mjs";
|
|
9
10
|
import { describeConnectorsSelection, isSameConnectorsSelection, normalizeConnectorNames, readRequestedConnectors, resolveEffectiveConnectors } from "./test-connectors-selection.mjs";
|
|
10
11
|
import { getTestLifecycleRegistry } from "./test-lifecycle-state.mjs";
|
|
11
12
|
import { DEFAULT_TEST_SETUP_TIMEOUT, describeExpiredSetup, readConfiguredSetupTimeout, scheduleRealTimeout } from "./test-setup-timeout.mjs";
|
|
@@ -103,7 +104,7 @@ async function setupTest(options) {
|
|
|
103
104
|
}
|
|
104
105
|
setAppModuleImporter(options?.importModule);
|
|
105
106
|
try {
|
|
106
|
-
return await startTestRuntime(requested);
|
|
107
|
+
return await startTestRuntime(requested, options?.fakes);
|
|
107
108
|
} finally {
|
|
108
109
|
setAppModuleImporter(void 0);
|
|
109
110
|
}
|
|
@@ -214,7 +215,7 @@ async function awaitSetupWithinBound(attempt, bound, registry) {
|
|
|
214
215
|
/**
|
|
215
216
|
* Open a new setup attempt and publish it before it runs.
|
|
216
217
|
*/
|
|
217
|
-
function startTestRuntime(requested) {
|
|
218
|
+
function startTestRuntime(requested, fakes) {
|
|
218
219
|
const registry = getTestLifecycleRegistry();
|
|
219
220
|
let publishEffectiveSelection = () => void 0;
|
|
220
221
|
let failEffectiveSelection = () => void 0;
|
|
@@ -224,7 +225,7 @@ function startTestRuntime(requested) {
|
|
|
224
225
|
});
|
|
225
226
|
effectiveSelection.catch(() => void 0);
|
|
226
227
|
const bound = armSetupBound(registry);
|
|
227
|
-
const attempt = Promise.resolve().then(() => runTestRuntimeStartup(requested, publishEffectiveSelection, failEffectiveSelection, bound));
|
|
228
|
+
const attempt = Promise.resolve().then(() => runTestRuntimeStartup(requested, publishEffectiveSelection, failEffectiveSelection, bound, fakes));
|
|
228
229
|
attempt.catch(() => void 0);
|
|
229
230
|
const completion = awaitSetupWithinBound(attempt, bound, registry);
|
|
230
231
|
registry.state = "starting";
|
|
@@ -242,7 +243,7 @@ function startTestRuntime(requested) {
|
|
|
242
243
|
* unchanged. A cleanup failure is a secondary diagnostic and never replaces the
|
|
243
244
|
* cause the caller needs to read.
|
|
244
245
|
*/
|
|
245
|
-
async function runTestRuntimeStartup(requested, publishEffectiveSelection, failEffectiveSelection, bound) {
|
|
246
|
+
async function runTestRuntimeStartup(requested, publishEffectiveSelection, failEffectiveSelection, bound, fakes) {
|
|
246
247
|
const registry = getTestLifecycleRegistry();
|
|
247
248
|
try {
|
|
248
249
|
Application.setEnvironment("test");
|
|
@@ -256,6 +257,7 @@ async function runTestRuntimeStartup(requested, publishEffectiveSelection, failE
|
|
|
256
257
|
if (!bound.hasExpired()) registry.activeSelection = effectiveSelection;
|
|
257
258
|
publishEffectiveSelection(effectiveSelection);
|
|
258
259
|
await startSelectedConnectors(effectiveSelection);
|
|
260
|
+
await installTestFakes(fakes);
|
|
259
261
|
if (!bound.hasExpired()) {
|
|
260
262
|
registry.state = "ready";
|
|
261
263
|
registry.setupAttempt = void 0;
|
|
@@ -292,6 +294,7 @@ async function startSelectedConnectors(selection) {
|
|
|
292
294
|
* step is attempted independently.
|
|
293
295
|
*/
|
|
294
296
|
async function unwindPartialStartup() {
|
|
297
|
+
await attemptCleanupStep("test fakes", () => restoreTestFakes());
|
|
295
298
|
await attemptCleanupStep("application shutdown hooks", () => Application.runShutdownHooks());
|
|
296
299
|
await attemptCleanupStep("connectors shutdown", () => connectorsManager.shutdown());
|
|
297
300
|
}
|
|
@@ -312,6 +315,11 @@ async function runTestRuntimeShutdown() {
|
|
|
312
315
|
const registry = getTestLifecycleRegistry();
|
|
313
316
|
let shutdownSucceeded = false;
|
|
314
317
|
try {
|
|
318
|
+
try {
|
|
319
|
+
await restoreTestFakes();
|
|
320
|
+
} catch (error) {
|
|
321
|
+
console.error("[vitest-setup] Restoring the test fakes did not complete:", error);
|
|
322
|
+
}
|
|
315
323
|
await connectorsManager.shutdown();
|
|
316
324
|
shutdownSucceeded = true;
|
|
317
325
|
} finally {
|