@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
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
import path from "node:path";
|
|
2
|
+
import { existsSync, readFileSync, readdirSync } from "node:fs";
|
|
3
|
+
import { parseSync } from "oxc-parser";
|
|
4
|
+
import { spawnSync } from "node:child_process";
|
|
5
|
+
import os from "node:os";
|
|
6
|
+
|
|
7
|
+
//#region ../../packages/core/src/cli/commands/issue/collect-environment.ts
|
|
8
|
+
function readJson(file) {
|
|
9
|
+
try {
|
|
10
|
+
return JSON.parse(readFileSync(file, "utf8"));
|
|
11
|
+
} catch {
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
function field(value, key) {
|
|
16
|
+
return typeof value === "object" && value !== null ? Reflect.get(value, key) : void 0;
|
|
17
|
+
}
|
|
18
|
+
function versionOf(value) {
|
|
19
|
+
return typeof value === "string" && /^\d+\.\d+\.\d+(?:[-+][\w.+-]+)?$/.test(value) ? value : null;
|
|
20
|
+
}
|
|
21
|
+
function moduleDirectories(cwd) {
|
|
22
|
+
const directories = [];
|
|
23
|
+
for (let current = path.resolve(cwd);; current = path.dirname(current)) {
|
|
24
|
+
directories.push(path.join(current, "node_modules"));
|
|
25
|
+
if (path.dirname(current) === current) return directories;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
function installedVersion(directories, name) {
|
|
29
|
+
for (const directory of directories) {
|
|
30
|
+
const file = path.join(directory, name, "package.json");
|
|
31
|
+
if (existsSync(file)) return versionOf(field(readJson(file), "version"));
|
|
32
|
+
}
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
function installedPackages(directories) {
|
|
36
|
+
const names = /* @__PURE__ */ new Set();
|
|
37
|
+
for (const directory of directories) try {
|
|
38
|
+
for (const name of readdirSync(path.join(directory, "@warlock.js"))) if (/^[a-z0-9][a-z0-9-]*$/.test(name)) names.add(`@warlock.js/${name}`);
|
|
39
|
+
} catch {}
|
|
40
|
+
const packages = {};
|
|
41
|
+
for (const name of [...names].sort()) {
|
|
42
|
+
const version = installedVersion(directories, name);
|
|
43
|
+
if (version) packages[name] = version;
|
|
44
|
+
}
|
|
45
|
+
return packages;
|
|
46
|
+
}
|
|
47
|
+
function packageManager(cwd, userAgent) {
|
|
48
|
+
const agent = /^(npm|pnpm|yarn|bun)\/(\d+\.\d+\.\d+(?:[-+][\w.+-]+)?)(?:\s|$)/.exec(userAgent ?? "");
|
|
49
|
+
if (agent?.[1] && agent[2]) return {
|
|
50
|
+
name: agent[1],
|
|
51
|
+
version: agent[2]
|
|
52
|
+
};
|
|
53
|
+
const declared = field(readJson(path.join(cwd, "package.json")), "packageManager");
|
|
54
|
+
const detected = (typeof declared === "string" ? /^(npm|pnpm|yarn|bun)@/.exec(declared)?.[1] : void 0) ?? [
|
|
55
|
+
["pnpm-lock.yaml", "pnpm"],
|
|
56
|
+
["yarn.lock", "yarn"],
|
|
57
|
+
["bun.lock", "bun"],
|
|
58
|
+
["bun.lockb", "bun"],
|
|
59
|
+
["package-lock.json", "npm"]
|
|
60
|
+
].find(([file]) => existsSync(path.join(cwd, file)))?.[1];
|
|
61
|
+
if (!detected) return null;
|
|
62
|
+
const child = spawnSync(detected, ["--version"], {
|
|
63
|
+
cwd: path.parse(path.resolve(cwd)).root,
|
|
64
|
+
encoding: "utf8",
|
|
65
|
+
timeout: 3e3,
|
|
66
|
+
maxBuffer: 4096,
|
|
67
|
+
env: {
|
|
68
|
+
...process.env,
|
|
69
|
+
COREPACK_ENABLE_NETWORK: "0",
|
|
70
|
+
COREPACK_ENABLE_AUTO_PIN: "0"
|
|
71
|
+
},
|
|
72
|
+
stdio: [
|
|
73
|
+
"ignore",
|
|
74
|
+
"pipe",
|
|
75
|
+
"pipe"
|
|
76
|
+
],
|
|
77
|
+
windowsHide: true
|
|
78
|
+
});
|
|
79
|
+
return {
|
|
80
|
+
name: detected,
|
|
81
|
+
version: child.status === 0 ? versionOf(child.stdout.trim()) : null
|
|
82
|
+
};
|
|
83
|
+
}
|
|
84
|
+
function unwrap(node) {
|
|
85
|
+
if (node.type === "TSAsExpression" || node.type === "TSSatisfiesExpression" || node.type === "ParenthesizedExpression" || node.type === "TSTypeAssertion") return unwrap(node.expression);
|
|
86
|
+
return node;
|
|
87
|
+
}
|
|
88
|
+
function property(object, name) {
|
|
89
|
+
for (const item of [...object.properties].reverse()) {
|
|
90
|
+
if (item.type !== "Property" || item.computed || item.method) continue;
|
|
91
|
+
if ((item.key.type === "Identifier" ? item.key.name : item.key.type === "Literal" ? item.key.value : void 0) === name) return unwrap(item.value);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/** Parse syntax only; never import config, .env, connectors or app modules. */
|
|
95
|
+
function collectIssueConfig(cwd) {
|
|
96
|
+
const summary = {
|
|
97
|
+
status: "missing",
|
|
98
|
+
sections: [],
|
|
99
|
+
buildFlags: {},
|
|
100
|
+
connectors: null,
|
|
101
|
+
customCommands: null,
|
|
102
|
+
dynamic: false
|
|
103
|
+
};
|
|
104
|
+
const file = path.join(cwd, "warlock.config.ts");
|
|
105
|
+
if (!existsSync(file)) return summary;
|
|
106
|
+
let source;
|
|
107
|
+
try {
|
|
108
|
+
source = readFileSync(file, "utf8");
|
|
109
|
+
} catch {
|
|
110
|
+
return {
|
|
111
|
+
...summary,
|
|
112
|
+
status: "unreadable"
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
try {
|
|
116
|
+
const parsed = parseSync("warlock.config.ts", source);
|
|
117
|
+
if (parsed.errors.length) return {
|
|
118
|
+
...summary,
|
|
119
|
+
status: "unparsed",
|
|
120
|
+
dynamic: true
|
|
121
|
+
};
|
|
122
|
+
const exported = parsed.program.body.find((node) => node.type === "ExportDefaultDeclaration");
|
|
123
|
+
let value = exported ? unwrap(exported.declaration) : void 0;
|
|
124
|
+
if (value?.type === "CallExpression" && value.callee.type === "Identifier" && value.callee.name === "defineConfig") value = value.arguments[0];
|
|
125
|
+
if (value) value = unwrap(value);
|
|
126
|
+
if (value?.type !== "ObjectExpression") return {
|
|
127
|
+
...summary,
|
|
128
|
+
status: "unparsed",
|
|
129
|
+
dynamic: true
|
|
130
|
+
};
|
|
131
|
+
const object = value;
|
|
132
|
+
summary.status = "static";
|
|
133
|
+
summary.sections = [
|
|
134
|
+
"server",
|
|
135
|
+
"build",
|
|
136
|
+
"connectors",
|
|
137
|
+
"cli",
|
|
138
|
+
"devServer",
|
|
139
|
+
"database",
|
|
140
|
+
"testing"
|
|
141
|
+
].filter((name) => property(object, name) !== void 0);
|
|
142
|
+
summary.dynamic = object.properties.some((item) => item.type === "SpreadElement" || item.computed);
|
|
143
|
+
const build = property(object, "build");
|
|
144
|
+
if (build?.type === "ObjectExpression") for (const key of [
|
|
145
|
+
"minify",
|
|
146
|
+
"sourcemap",
|
|
147
|
+
"singleBundle",
|
|
148
|
+
"esmShim",
|
|
149
|
+
"splitting"
|
|
150
|
+
]) {
|
|
151
|
+
const flag = property(build, key);
|
|
152
|
+
if (flag?.type === "Literal" && typeof flag.value === "boolean") summary.buildFlags[key] = flag.value;
|
|
153
|
+
}
|
|
154
|
+
const connectors = property(object, "connectors");
|
|
155
|
+
if (connectors?.type === "ArrayExpression" && !connectors.elements.some((item) => item?.type === "SpreadElement")) summary.connectors = connectors.elements.length;
|
|
156
|
+
const cli = property(object, "cli");
|
|
157
|
+
const commands = cli?.type === "ObjectExpression" ? property(cli, "commands") : void 0;
|
|
158
|
+
if (commands?.type === "ArrayExpression" && !commands.elements.some((item) => item?.type === "SpreadElement")) summary.customCommands = commands.elements.length;
|
|
159
|
+
return summary;
|
|
160
|
+
} catch {
|
|
161
|
+
return {
|
|
162
|
+
...summary,
|
|
163
|
+
status: "unparsed",
|
|
164
|
+
dynamic: true
|
|
165
|
+
};
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
/** Collect installed metadata without starting the app or reading private values. */
|
|
169
|
+
function collectIssueEnvironment(cwd = process.cwd(), userAgent = process.env.npm_config_user_agent) {
|
|
170
|
+
const directories = moduleDirectories(cwd);
|
|
171
|
+
return {
|
|
172
|
+
packages: installedPackages(directories),
|
|
173
|
+
node: process.version,
|
|
174
|
+
packageManager: packageManager(cwd, userAgent),
|
|
175
|
+
os: {
|
|
176
|
+
platform: os.platform(),
|
|
177
|
+
release: os.release(),
|
|
178
|
+
arch: os.arch()
|
|
179
|
+
},
|
|
180
|
+
typescript: installedVersion(directories, "typescript"),
|
|
181
|
+
config: collectIssueConfig(cwd)
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
//#endregion
|
|
186
|
+
export { collectIssueConfig, collectIssueEnvironment };
|
|
187
|
+
//# sourceMappingURL=collect-environment.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"collect-environment.mjs","names":[],"sources":["../../../../../../../../../../packages/core/src/cli/commands/issue/collect-environment.ts"],"sourcesContent":["import { spawnSync } from \"node:child_process\";\nimport { existsSync, readdirSync, readFileSync } from \"node:fs\";\nimport os from \"node:os\";\nimport path from \"node:path\";\nimport { parseSync, type Node, type ObjectExpression } from \"oxc-parser\";\n\nexport type IssueConfigSummary = {\n status: \"missing\" | \"unreadable\" | \"unparsed\" | \"static\";\n sections: string[];\n buildFlags: Record<string, boolean>;\n connectors: number | null;\n customCommands: number | null;\n dynamic: boolean;\n};\n\nexport type IssueEnvironment = {\n packages: Record<string, string>;\n node: string;\n packageManager: { name: string; version: string | null } | null;\n os: { platform: string; release: string; arch: string };\n typescript: string | null;\n config: IssueConfigSummary;\n};\n\nfunction readJson(file: string): unknown {\n try {\n return JSON.parse(readFileSync(file, \"utf8\"));\n } catch {\n return undefined;\n }\n}\n\nfunction field(value: unknown, key: string): unknown {\n return typeof value === \"object\" && value !== null ? Reflect.get(value, key) : undefined;\n}\n\n// Version metadata only: never copy arbitrary manifest strings into a public report.\nfunction versionOf(value: unknown): string | null {\n return typeof value === \"string\" && /^\\d+\\.\\d+\\.\\d+(?:[-+][\\w.+-]+)?$/.test(value) ? value : null;\n}\n\nfunction moduleDirectories(cwd: string): string[] {\n const directories: string[] = [];\n for (let current = path.resolve(cwd); ; current = path.dirname(current)) {\n directories.push(path.join(current, \"node_modules\"));\n if (path.dirname(current) === current) return directories;\n }\n}\n\nfunction installedVersion(directories: string[], name: string): string | null {\n for (const directory of directories) {\n const file = path.join(directory, name, \"package.json\");\n if (existsSync(file)) return versionOf(field(readJson(file), \"version\"));\n }\n return null;\n}\n\nfunction installedPackages(directories: string[]): Record<string, string> {\n const names = new Set<string>();\n for (const directory of directories) {\n try {\n for (const name of readdirSync(path.join(directory, \"@warlock.js\"))) {\n if (/^[a-z0-9][a-z0-9-]*$/.test(name)) names.add(`@warlock.js/${name}`);\n }\n } catch {\n // Missing node_modules is useful information, not a reason to require a boot.\n }\n }\n const packages: Record<string, string> = {};\n for (const name of [...names].sort()) {\n const version = installedVersion(directories, name);\n if (version) packages[name] = version;\n }\n return packages;\n}\n\nfunction packageManager(\n cwd: string,\n userAgent: string | undefined,\n): IssueEnvironment[\"packageManager\"] {\n const agent = /^(npm|pnpm|yarn|bun)\\/(\\d+\\.\\d+\\.\\d+(?:[-+][\\w.+-]+)?)(?:\\s|$)/.exec(\n userAgent ?? \"\",\n );\n if (agent?.[1] && agent[2]) return { name: agent[1], version: agent[2] };\n\n const declared = field(readJson(path.join(cwd, \"package.json\")), \"packageManager\");\n const name =\n typeof declared === \"string\" ? /^(npm|pnpm|yarn|bun)@/.exec(declared)?.[1] : undefined;\n const detected =\n name ??\n (\n [\n [\"pnpm-lock.yaml\", \"pnpm\"],\n [\"yarn.lock\", \"yarn\"],\n [\"bun.lock\", \"bun\"],\n [\"bun.lockb\", \"bun\"],\n [\"package-lock.json\", \"npm\"],\n ] as const\n ).find(([file]) => existsSync(path.join(cwd, file)))?.[1];\n if (!detected) return null;\n\n // Only a known executable and --version, never app scripts or npm_execpath.\n // Probe outside the app so manager shims cannot select/install an app-pinned\n // version or load project plugins. The result records our child's PID;\n // timeout targets only that child.\n const child = spawnSync(detected, [\"--version\"], {\n cwd: path.parse(path.resolve(cwd)).root,\n encoding: \"utf8\",\n timeout: 3_000,\n maxBuffer: 4_096,\n env: { ...process.env, COREPACK_ENABLE_NETWORK: \"0\", COREPACK_ENABLE_AUTO_PIN: \"0\" },\n stdio: [\"ignore\", \"pipe\", \"pipe\"],\n windowsHide: true,\n });\n return { name: detected, version: child.status === 0 ? versionOf(child.stdout.trim()) : null };\n}\n\nfunction unwrap(node: Node): Node {\n if (\n node.type === \"TSAsExpression\" ||\n node.type === \"TSSatisfiesExpression\" ||\n node.type === \"ParenthesizedExpression\" ||\n node.type === \"TSTypeAssertion\"\n )\n return unwrap(node.expression);\n return node;\n}\n\nfunction property(object: ObjectExpression, name: string): Node | undefined {\n for (const item of [...object.properties].reverse()) {\n if (item.type !== \"Property\" || item.computed || item.method) continue;\n const key =\n item.key.type === \"Identifier\"\n ? item.key.name\n : item.key.type === \"Literal\"\n ? item.key.value\n : undefined;\n if (key === name) return unwrap(item.value);\n }\n return undefined;\n}\n\n/** Parse syntax only; never import config, .env, connectors or app modules. */\nexport function collectIssueConfig(cwd: string): IssueConfigSummary {\n const summary: IssueConfigSummary = {\n status: \"missing\",\n sections: [],\n buildFlags: {},\n connectors: null,\n customCommands: null,\n dynamic: false,\n };\n const file = path.join(cwd, \"warlock.config.ts\");\n if (!existsSync(file)) return summary;\n let source: string;\n try {\n source = readFileSync(file, \"utf8\");\n } catch {\n return { ...summary, status: \"unreadable\" };\n }\n try {\n const parsed = parseSync(\"warlock.config.ts\", source);\n if (parsed.errors.length) return { ...summary, status: \"unparsed\", dynamic: true };\n const exported = parsed.program.body.find((node) => node.type === \"ExportDefaultDeclaration\");\n let value: Node | undefined = exported ? unwrap(exported.declaration) : undefined;\n if (\n value?.type === \"CallExpression\" &&\n value.callee.type === \"Identifier\" &&\n value.callee.name === \"defineConfig\"\n ) {\n value = value.arguments[0];\n }\n if (value) value = unwrap(value);\n if (value?.type !== \"ObjectExpression\")\n return { ...summary, status: \"unparsed\", dynamic: true };\n\n const object = value;\n summary.status = \"static\";\n // Fixed allowlist excludes custom keys, paths, names and all string values.\n summary.sections = [\n \"server\",\n \"build\",\n \"connectors\",\n \"cli\",\n \"devServer\",\n \"database\",\n \"testing\",\n ].filter((name) => property(object, name) !== undefined);\n summary.dynamic = object.properties.some(\n (item) => item.type === \"SpreadElement\" || item.computed,\n );\n const build = property(object, \"build\");\n if (build?.type === \"ObjectExpression\") {\n for (const key of [\"minify\", \"sourcemap\", \"singleBundle\", \"esmShim\", \"splitting\"]) {\n const flag = property(build, key);\n if (flag?.type === \"Literal\" && typeof flag.value === \"boolean\")\n summary.buildFlags[key] = flag.value;\n }\n }\n const connectors = property(object, \"connectors\");\n if (\n connectors?.type === \"ArrayExpression\" &&\n !connectors.elements.some((item) => item?.type === \"SpreadElement\")\n ) {\n summary.connectors = connectors.elements.length;\n }\n const cli = property(object, \"cli\");\n const commands = cli?.type === \"ObjectExpression\" ? property(cli, \"commands\") : undefined;\n if (\n commands?.type === \"ArrayExpression\" &&\n !commands.elements.some((item) => item?.type === \"SpreadElement\")\n ) {\n summary.customCommands = commands.elements.length;\n }\n return summary;\n } catch {\n return { ...summary, status: \"unparsed\", dynamic: true };\n }\n}\n\n/** Collect installed metadata without starting the app or reading private values. */\nexport function collectIssueEnvironment(\n cwd = process.cwd(),\n userAgent = process.env.npm_config_user_agent,\n): IssueEnvironment {\n const directories = moduleDirectories(cwd);\n return {\n packages: installedPackages(directories),\n node: process.version,\n packageManager: packageManager(cwd, userAgent),\n os: { platform: os.platform(), release: os.release(), arch: os.arch() },\n typescript: installedVersion(directories, \"typescript\"),\n config: collectIssueConfig(cwd),\n };\n}\n"],"mappings":";;;;;;;AAwBA,SAAS,SAAS,MAAuB;CACvC,IAAI;EACF,OAAO,KAAK,MAAM,aAAa,MAAM,MAAM,CAAC;CAC9C,QAAQ;EACN;CACF;AACF;AAEA,SAAS,MAAM,OAAgB,KAAsB;CACnD,OAAO,OAAO,UAAU,YAAY,UAAU,OAAO,QAAQ,IAAI,OAAO,GAAG,IAAI;AACjF;AAGA,SAAS,UAAU,OAA+B;CAChD,OAAO,OAAO,UAAU,YAAY,mCAAmC,KAAK,KAAK,IAAI,QAAQ;AAC/F;AAEA,SAAS,kBAAkB,KAAuB;CAChD,MAAM,cAAwB,CAAC;CAC/B,KAAK,IAAI,UAAU,KAAK,QAAQ,GAAG,IAAK,UAAU,KAAK,QAAQ,OAAO,GAAG;EACvE,YAAY,KAAK,KAAK,KAAK,SAAS,cAAc,CAAC;EACnD,IAAI,KAAK,QAAQ,OAAO,MAAM,SAAS,OAAO;CAChD;AACF;AAEA,SAAS,iBAAiB,aAAuB,MAA6B;CAC5E,KAAK,MAAM,aAAa,aAAa;EACnC,MAAM,OAAO,KAAK,KAAK,WAAW,MAAM,cAAc;EACtD,IAAI,WAAW,IAAI,GAAG,OAAO,UAAU,MAAM,SAAS,IAAI,GAAG,SAAS,CAAC;CACzE;CACA,OAAO;AACT;AAEA,SAAS,kBAAkB,aAA+C;CACxE,MAAM,wBAAQ,IAAI,IAAY;CAC9B,KAAK,MAAM,aAAa,aACtB,IAAI;EACF,KAAK,MAAM,QAAQ,YAAY,KAAK,KAAK,WAAW,aAAa,CAAC,GAChE,IAAI,uBAAuB,KAAK,IAAI,GAAG,MAAM,IAAI,eAAe,MAAM;CAE1E,QAAQ,CAER;CAEF,MAAM,WAAmC,CAAC;CAC1C,KAAK,MAAM,QAAQ,CAAC,GAAG,KAAK,CAAC,CAAC,KAAK,GAAG;EACpC,MAAM,UAAU,iBAAiB,aAAa,IAAI;EAClD,IAAI,SAAS,SAAS,QAAQ;CAChC;CACA,OAAO;AACT;AAEA,SAAS,eACP,KACA,WACoC;CACpC,MAAM,QAAQ,iEAAiE,KAC7E,aAAa,EACf;CACA,IAAI,QAAQ,MAAM,MAAM,IAAI,OAAO;EAAE,MAAM,MAAM;EAAI,SAAS,MAAM;CAAG;CAEvE,MAAM,WAAW,MAAM,SAAS,KAAK,KAAK,KAAK,cAAc,CAAC,GAAG,gBAAgB;CAGjF,MAAM,YADJ,OAAO,aAAa,WAAW,wBAAwB,KAAK,QAAQ,CAAC,GAAG,KAAK,WAI3E;EACE,CAAC,kBAAkB,MAAM;EACzB,CAAC,aAAa,MAAM;EACpB,CAAC,YAAY,KAAK;EAClB,CAAC,aAAa,KAAK;EACnB,CAAC,qBAAqB,KAAK;CAC7B,CAAC,CACD,MAAM,CAAC,UAAU,WAAW,KAAK,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,GAAG;CACzD,IAAI,CAAC,UAAU,OAAO;CAMtB,MAAM,QAAQ,UAAU,UAAU,CAAC,WAAW,GAAG;EAC/C,KAAK,KAAK,MAAM,KAAK,QAAQ,GAAG,CAAC,CAAC,CAAC;EACnC,UAAU;EACV,SAAS;EACT,WAAW;EACX,KAAK;GAAE,GAAG,QAAQ;GAAK,yBAAyB;GAAK,0BAA0B;EAAI;EACnF,OAAO;GAAC;GAAU;GAAQ;EAAM;EAChC,aAAa;CACf,CAAC;CACD,OAAO;EAAE,MAAM;EAAU,SAAS,MAAM,WAAW,IAAI,UAAU,MAAM,OAAO,KAAK,CAAC,IAAI;CAAK;AAC/F;AAEA,SAAS,OAAO,MAAkB;CAChC,IACE,KAAK,SAAS,oBACd,KAAK,SAAS,2BACd,KAAK,SAAS,6BACd,KAAK,SAAS,mBAEd,OAAO,OAAO,KAAK,UAAU;CAC/B,OAAO;AACT;AAEA,SAAS,SAAS,QAA0B,MAAgC;CAC1E,KAAK,MAAM,QAAQ,CAAC,GAAG,OAAO,UAAU,CAAC,CAAC,QAAQ,GAAG;EACnD,IAAI,KAAK,SAAS,cAAc,KAAK,YAAY,KAAK,QAAQ;EAO9D,KALE,KAAK,IAAI,SAAS,eACd,KAAK,IAAI,OACT,KAAK,IAAI,SAAS,YAChB,KAAK,IAAI,QACT,YACI,MAAM,OAAO,OAAO,KAAK,KAAK;CAC5C;AAEF;;AAGA,SAAgB,mBAAmB,KAAiC;CAClE,MAAM,UAA8B;EAClC,QAAQ;EACR,UAAU,CAAC;EACX,YAAY,CAAC;EACb,YAAY;EACZ,gBAAgB;EAChB,SAAS;CACX;CACA,MAAM,OAAO,KAAK,KAAK,KAAK,mBAAmB;CAC/C,IAAI,CAAC,WAAW,IAAI,GAAG,OAAO;CAC9B,IAAI;CACJ,IAAI;EACF,SAAS,aAAa,MAAM,MAAM;CACpC,QAAQ;EACN,OAAO;GAAE,GAAG;GAAS,QAAQ;EAAa;CAC5C;CACA,IAAI;EACF,MAAM,SAAS,UAAU,qBAAqB,MAAM;EACpD,IAAI,OAAO,OAAO,QAAQ,OAAO;GAAE,GAAG;GAAS,QAAQ;GAAY,SAAS;EAAK;EACjF,MAAM,WAAW,OAAO,QAAQ,KAAK,MAAM,SAAS,KAAK,SAAS,0BAA0B;EAC5F,IAAI,QAA0B,WAAW,OAAO,SAAS,WAAW,IAAI;EACxE,IACE,OAAO,SAAS,oBAChB,MAAM,OAAO,SAAS,gBACtB,MAAM,OAAO,SAAS,gBAEtB,QAAQ,MAAM,UAAU;EAE1B,IAAI,OAAO,QAAQ,OAAO,KAAK;EAC/B,IAAI,OAAO,SAAS,oBAClB,OAAO;GAAE,GAAG;GAAS,QAAQ;GAAY,SAAS;EAAK;EAEzD,MAAM,SAAS;EACf,QAAQ,SAAS;EAEjB,QAAQ,WAAW;GACjB;GACA;GACA;GACA;GACA;GACA;GACA;EACF,CAAC,CAAC,QAAQ,SAAS,SAAS,QAAQ,IAAI,MAAM,MAAS;EACvD,QAAQ,UAAU,OAAO,WAAW,MACjC,SAAS,KAAK,SAAS,mBAAmB,KAAK,QAClD;EACA,MAAM,QAAQ,SAAS,QAAQ,OAAO;EACtC,IAAI,OAAO,SAAS,oBAClB,KAAK,MAAM,OAAO;GAAC;GAAU;GAAa;GAAgB;GAAW;EAAW,GAAG;GACjF,MAAM,OAAO,SAAS,OAAO,GAAG;GAChC,IAAI,MAAM,SAAS,aAAa,OAAO,KAAK,UAAU,WACpD,QAAQ,WAAW,OAAO,KAAK;EACnC;EAEF,MAAM,aAAa,SAAS,QAAQ,YAAY;EAChD,IACE,YAAY,SAAS,qBACrB,CAAC,WAAW,SAAS,MAAM,SAAS,MAAM,SAAS,eAAe,GAElE,QAAQ,aAAa,WAAW,SAAS;EAE3C,MAAM,MAAM,SAAS,QAAQ,KAAK;EAClC,MAAM,WAAW,KAAK,SAAS,qBAAqB,SAAS,KAAK,UAAU,IAAI;EAChF,IACE,UAAU,SAAS,qBACnB,CAAC,SAAS,SAAS,MAAM,SAAS,MAAM,SAAS,eAAe,GAEhE,QAAQ,iBAAiB,SAAS,SAAS;EAE7C,OAAO;CACT,QAAQ;EACN,OAAO;GAAE,GAAG;GAAS,QAAQ;GAAY,SAAS;EAAK;CACzD;AACF;;AAGA,SAAgB,wBACd,MAAM,QAAQ,IAAI,GAClB,YAAY,QAAQ,IAAI,uBACN;CAClB,MAAM,cAAc,kBAAkB,GAAG;CACzC,OAAO;EACL,UAAU,kBAAkB,WAAW;EACvC,MAAM,QAAQ;EACd,gBAAgB,eAAe,KAAK,SAAS;EAC7C,IAAI;GAAE,UAAU,GAAG,SAAS;GAAG,SAAS,GAAG,QAAQ;GAAG,MAAM,GAAG,KAAK;EAAE;EACtE,YAAY,iBAAiB,aAAa,YAAY;EACtD,QAAQ,mBAAmB,GAAG;CAChC;AACF"}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import { collectIssueEnvironment } from "./collect-environment.mjs";
|
|
2
|
+
|
|
3
|
+
//#region ../../packages/core/src/cli/commands/issue/issue-command.action.ts
|
|
4
|
+
const ISSUE_URL_MAX_LENGTH = 7500;
|
|
5
|
+
const TRUNCATION_NOTE = "\n\n[Truncated for URL length. Paste the remaining reviewed warlock issue output here.]";
|
|
6
|
+
function formatIssueEnvironment(environment) {
|
|
7
|
+
return JSON.stringify(environment, null, 2);
|
|
8
|
+
}
|
|
9
|
+
/** A draft only: the reporter must replace prompts and review before filing. */
|
|
10
|
+
function frameworkIssueBody(type, environment) {
|
|
11
|
+
return [
|
|
12
|
+
type === "bug" ? "### Summary\nDescribe the framework bug." : "### Problem / use case\nDescribe the missing framework capability.",
|
|
13
|
+
`### Environment / warlock issue output\n\n\`\`\`json\n${formatIssueEnvironment(environment)}\n\`\`\``,
|
|
14
|
+
"### Minimal reproduction\nProvide public, minimal code and exact steps (a capability example for a feature).",
|
|
15
|
+
type === "bug" ? "### Expected behavior\nWhat should happen?" : "### Proposed behavior\nWhat should the framework support?",
|
|
16
|
+
"### Actual / current behavior\nWhat happens today?",
|
|
17
|
+
...type === "feature" ? ["### Alternatives considered\nDescribe workarounds and their limitations."] : [],
|
|
18
|
+
"### Sanitized logs / doctor output\nPaste relevant logs and warlock doctor --json output, or explain why unavailable / not applicable.",
|
|
19
|
+
"### Checks\n- [ ] Searched existing issues and checked installed-version CHANGELOG and skills.\n- [ ] Removed secrets, tokens, .env, customer data, proprietary code and private app names.\n- [ ] User reviewed this complete draft and approved filing."
|
|
20
|
+
].join("\n\n");
|
|
21
|
+
}
|
|
22
|
+
/** Encode all text, cap the entire ASCII URL and preserve Unicode code points. */
|
|
23
|
+
function createFrameworkIssueUrl(type, title, environment) {
|
|
24
|
+
const body = Array.from(frameworkIssueBody(type, environment));
|
|
25
|
+
const environmentText = Array.from(formatIssueEnvironment(environment));
|
|
26
|
+
const makeUrl = (length) => {
|
|
27
|
+
const shorten = (text) => text.length > length ? text.slice(0, length).join("") + TRUNCATION_NOTE : text.join("");
|
|
28
|
+
const url = new URL("https://github.com/warlockjs/framework/issues/new");
|
|
29
|
+
url.search = new URLSearchParams({
|
|
30
|
+
template: `${type}.yml`,
|
|
31
|
+
title: Array.from(title).slice(0, 256).join(""),
|
|
32
|
+
body: shorten(body),
|
|
33
|
+
environment: shorten(environmentText)
|
|
34
|
+
}).toString();
|
|
35
|
+
return url.href;
|
|
36
|
+
};
|
|
37
|
+
let low = 0;
|
|
38
|
+
let high = Math.max(body.length, environmentText.length);
|
|
39
|
+
if (makeUrl(high).length <= 7500) return makeUrl(high);
|
|
40
|
+
while (low < high) {
|
|
41
|
+
const middle = Math.ceil((low + high) / 2);
|
|
42
|
+
if (makeUrl(middle).length <= 7500) low = middle;
|
|
43
|
+
else high = middle - 1;
|
|
44
|
+
}
|
|
45
|
+
return makeUrl(low);
|
|
46
|
+
}
|
|
47
|
+
async function issueCommandAction({ options }) {
|
|
48
|
+
const type = options.type ?? "bug";
|
|
49
|
+
if (type !== "bug" && type !== "feature") throw new Error("--type must be bug or feature.");
|
|
50
|
+
if (options.title !== void 0 && typeof options.title !== "string") throw new Error("--title must be a string.");
|
|
51
|
+
const title = options.title ?? (type === "bug" ? "[Bug] " : "[Feature] ");
|
|
52
|
+
const environment = collectIssueEnvironment();
|
|
53
|
+
const report = {
|
|
54
|
+
schemaVersion: 1,
|
|
55
|
+
environment,
|
|
56
|
+
url: createFrameworkIssueUrl(type, title, environment)
|
|
57
|
+
};
|
|
58
|
+
if (options.json === true) {
|
|
59
|
+
console.log(JSON.stringify(report, null, 2));
|
|
60
|
+
return;
|
|
61
|
+
}
|
|
62
|
+
console.log("Environment (review before sharing):");
|
|
63
|
+
console.log(formatIssueEnvironment(environment));
|
|
64
|
+
console.log("\nReview the draft, remove private information and ask the user before filing. Nothing has been sent.");
|
|
65
|
+
console.log(report.url);
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
//#endregion
|
|
69
|
+
export { ISSUE_URL_MAX_LENGTH, createFrameworkIssueUrl, formatIssueEnvironment, frameworkIssueBody, issueCommandAction };
|
|
70
|
+
//# sourceMappingURL=issue-command.action.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue-command.action.mjs","names":[],"sources":["../../../../../../../../../../packages/core/src/cli/commands/issue/issue-command.action.ts"],"sourcesContent":["import type { CommandActionData } from \"../../../commands/types\";\nimport { collectIssueEnvironment, type IssueEnvironment } from \"./collect-environment\";\n\nexport type FrameworkIssueType = \"bug\" | \"feature\";\nexport type IssueReport = { schemaVersion: 1; environment: IssueEnvironment; url: string };\n\n// A conservative budget, not a promised GitHub limit. GitHub documents 414\n// responses for oversized URLs, and form prefills use field IDs:\n// https://docs.github.com/en/issues/tracking-your-work-with-issues/using-issues/creating-an-issue\n// https://docs.github.com/en/communities/using-templates-to-encourage-useful-issues-and-pull-requests/syntax-for-githubs-form-schema\nexport const ISSUE_URL_MAX_LENGTH = 7_500;\nconst TRUNCATION_NOTE =\n \"\\n\\n[Truncated for URL length. Paste the remaining reviewed warlock issue output here.]\";\n\nexport function formatIssueEnvironment(environment: IssueEnvironment): string {\n return JSON.stringify(environment, null, 2);\n}\n\n/** A draft only: the reporter must replace prompts and review before filing. */\nexport function frameworkIssueBody(\n type: FrameworkIssueType,\n environment: IssueEnvironment,\n): string {\n return [\n type === \"bug\"\n ? \"### Summary\\nDescribe the framework bug.\"\n : \"### Problem / use case\\nDescribe the missing framework capability.\",\n `### Environment / warlock issue output\\n\\n\\`\\`\\`json\\n${formatIssueEnvironment(environment)}\\n\\`\\`\\``,\n \"### Minimal reproduction\\nProvide public, minimal code and exact steps (a capability example for a feature).\",\n type === \"bug\"\n ? \"### Expected behavior\\nWhat should happen?\"\n : \"### Proposed behavior\\nWhat should the framework support?\",\n \"### Actual / current behavior\\nWhat happens today?\",\n ...(type === \"feature\"\n ? [\"### Alternatives considered\\nDescribe workarounds and their limitations.\"]\n : []),\n \"### Sanitized logs / doctor output\\nPaste relevant logs and warlock doctor --json output, or explain why unavailable / not applicable.\",\n \"### Checks\\n- [ ] Searched existing issues and checked installed-version CHANGELOG and skills.\\n- [ ] Removed secrets, tokens, .env, customer data, proprietary code and private app names.\\n- [ ] User reviewed this complete draft and approved filing.\",\n ].join(\"\\n\\n\");\n}\n\n/** Encode all text, cap the entire ASCII URL and preserve Unicode code points. */\nexport function createFrameworkIssueUrl(\n type: FrameworkIssueType,\n title: string,\n environment: IssueEnvironment,\n): string {\n const body = Array.from(frameworkIssueBody(type, environment));\n const environmentText = Array.from(formatIssueEnvironment(environment));\n const makeUrl = (length: number): string => {\n const shorten = (text: string[]): string =>\n text.length > length ? text.slice(0, length).join(\"\") + TRUNCATION_NOTE : text.join(\"\");\n const url = new URL(\"https://github.com/warlockjs/framework/issues/new\");\n url.search = new URLSearchParams({\n template: `${type}.yml`,\n title: Array.from(title).slice(0, 256).join(\"\"),\n body: shorten(body),\n // YAML issue forms prefill by field ID, rather than the Markdown body.\n environment: shorten(environmentText),\n }).toString();\n return url.href;\n };\n let low = 0;\n let high = Math.max(body.length, environmentText.length);\n if (makeUrl(high).length <= ISSUE_URL_MAX_LENGTH) return makeUrl(high);\n while (low < high) {\n const middle = Math.ceil((low + high) / 2);\n if (makeUrl(middle).length <= ISSUE_URL_MAX_LENGTH) low = middle;\n else high = middle - 1;\n }\n return makeUrl(low);\n}\n\nexport async function issueCommandAction({ options }: CommandActionData): Promise<void> {\n const type = options.type ?? \"bug\";\n if (type !== \"bug\" && type !== \"feature\") throw new Error(\"--type must be bug or feature.\");\n if (options.title !== undefined && typeof options.title !== \"string\")\n throw new Error(\"--title must be a string.\");\n const title = options.title ?? (type === \"bug\" ? \"[Bug] \" : \"[Feature] \");\n const environment = collectIssueEnvironment();\n const report: IssueReport = {\n schemaVersion: 1,\n environment,\n url: createFrameworkIssueUrl(type, title, environment),\n };\n if (options.json === true) {\n console.log(JSON.stringify(report, null, 2));\n return;\n }\n console.log(\"Environment (review before sharing):\");\n console.log(formatIssueEnvironment(environment));\n console.log(\n \"\\nReview the draft, remove private information and ask the user before filing. Nothing has been sent.\",\n );\n console.log(report.url);\n}\n"],"mappings":";;;AAUA,MAAa,uBAAuB;AACpC,MAAM,kBACJ;AAEF,SAAgB,uBAAuB,aAAuC;CAC5E,OAAO,KAAK,UAAU,aAAa,MAAM,CAAC;AAC5C;;AAGA,SAAgB,mBACd,MACA,aACQ;CACR,OAAO;EACL,SAAS,QACL,6CACA;EACJ,yDAAyD,uBAAuB,WAAW,EAAE;EAC7F;EACA,SAAS,QACL,+CACA;EACJ;EACA,GAAI,SAAS,YACT,CAAC,0EAA0E,IAC3E,CAAC;EACL;EACA;CACF,CAAC,CAAC,KAAK,MAAM;AACf;;AAGA,SAAgB,wBACd,MACA,OACA,aACQ;CACR,MAAM,OAAO,MAAM,KAAK,mBAAmB,MAAM,WAAW,CAAC;CAC7D,MAAM,kBAAkB,MAAM,KAAK,uBAAuB,WAAW,CAAC;CACtE,MAAM,WAAW,WAA2B;EAC1C,MAAM,WAAW,SACf,KAAK,SAAS,SAAS,KAAK,MAAM,GAAG,MAAM,CAAC,CAAC,KAAK,EAAE,IAAI,kBAAkB,KAAK,KAAK,EAAE;EACxF,MAAM,MAAM,IAAI,IAAI,mDAAmD;EACvE,IAAI,SAAS,IAAI,gBAAgB;GAC/B,UAAU,GAAG,KAAK;GAClB,OAAO,MAAM,KAAK,KAAK,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE;GAC9C,MAAM,QAAQ,IAAI;GAElB,aAAa,QAAQ,eAAe;EACtC,CAAC,CAAC,CAAC,SAAS;EACZ,OAAO,IAAI;CACb;CACA,IAAI,MAAM;CACV,IAAI,OAAO,KAAK,IAAI,KAAK,QAAQ,gBAAgB,MAAM;CACvD,IAAI,QAAQ,IAAI,CAAC,CAAC,gBAAgC,OAAO,QAAQ,IAAI;CACrE,OAAO,MAAM,MAAM;EACjB,MAAM,SAAS,KAAK,MAAM,MAAM,QAAQ,CAAC;EACzC,IAAI,QAAQ,MAAM,CAAC,CAAC,gBAAgC,MAAM;OACrD,OAAO,SAAS;CACvB;CACA,OAAO,QAAQ,GAAG;AACpB;AAEA,eAAsB,mBAAmB,EAAE,WAA6C;CACtF,MAAM,OAAO,QAAQ,QAAQ;CAC7B,IAAI,SAAS,SAAS,SAAS,WAAW,MAAM,IAAI,MAAM,gCAAgC;CAC1F,IAAI,QAAQ,UAAU,UAAa,OAAO,QAAQ,UAAU,UAC1D,MAAM,IAAI,MAAM,2BAA2B;CAC7C,MAAM,QAAQ,QAAQ,UAAU,SAAS,QAAQ,WAAW;CAC5D,MAAM,cAAc,wBAAwB;CAC5C,MAAM,SAAsB;EAC1B,eAAe;EACf;EACA,KAAK,wBAAwB,MAAM,OAAO,WAAW;CACvD;CACA,IAAI,QAAQ,SAAS,MAAM;EACzB,QAAQ,IAAI,KAAK,UAAU,QAAQ,MAAM,CAAC,CAAC;EAC3C;CACF;CACA,QAAQ,IAAI,sCAAsC;CAClD,QAAQ,IAAI,uBAAuB,WAAW,CAAC;CAC/C,QAAQ,IACN,uGACF;CACA,QAAQ,IAAI,OAAO,GAAG;AACxB"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { command } from "../../commands/cli-command.mjs";
|
|
2
|
+
import { issueCommandAction } from "./issue/issue-command.action.mjs";
|
|
3
|
+
|
|
4
|
+
//#region ../../packages/core/src/cli/commands/issue.command.ts
|
|
5
|
+
/** Prepare a public issue locally, even when the app cannot boot. No preload. */
|
|
6
|
+
const issueCommand = command({
|
|
7
|
+
name: "issue",
|
|
8
|
+
description: "Collect a safe environment summary and prepare a framework issue URL (never submits)",
|
|
9
|
+
action: issueCommandAction,
|
|
10
|
+
options: [
|
|
11
|
+
{
|
|
12
|
+
text: "--type",
|
|
13
|
+
description: "Issue type: bug (default) or feature",
|
|
14
|
+
type: "string"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
text: "--title",
|
|
18
|
+
description: "Public issue title",
|
|
19
|
+
type: "string"
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
text: "--json, -j",
|
|
23
|
+
description: "Print environment and URL as JSON",
|
|
24
|
+
type: "boolean"
|
|
25
|
+
}
|
|
26
|
+
]
|
|
27
|
+
});
|
|
28
|
+
|
|
29
|
+
//#endregion
|
|
30
|
+
export { issueCommand };
|
|
31
|
+
//# sourceMappingURL=issue.command.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"issue.command.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/cli/commands/issue.command.ts"],"sourcesContent":["import { command } from \"../../commands/cli-command\";\nimport { issueCommandAction } from \"./issue/issue-command.action\";\n\n/** Prepare a public issue locally, even when the app cannot boot. No preload. */\nexport const issueCommand = command({\n name: \"issue\",\n description:\n \"Collect a safe environment summary and prepare a framework issue URL (never submits)\",\n action: issueCommandAction,\n options: [\n { text: \"--type\", description: \"Issue type: bug (default) or feature\", type: \"string\" },\n { text: \"--title\", description: \"Public issue title\", type: \"string\" },\n { text: \"--json, -j\", description: \"Print environment and URL as JSON\", type: \"boolean\" },\n ],\n});\n"],"mappings":";;;;;AAIA,MAAa,eAAe,QAAQ;CAClC,MAAM;CACN,aACE;CACF,QAAQ;CACR,SAAS;EACP;GAAE,MAAM;GAAU,aAAa;GAAwC,MAAM;EAAS;EACtF;GAAE,MAAM;GAAW,aAAa;GAAsB,MAAM;EAAS;EACrE;GAAE,MAAM;GAAc,aAAa;GAAqC,MAAM;EAAU;CAC1F;AACF,CAAC"}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
import { getWarlockVersion } from "../../../utils/framework-vesion.mjs";
|
|
2
|
+
import { featuresMap } from "../../../generations/features/index.mjs";
|
|
3
|
+
import { bootForInspect, inspectOptionsFromBoot } from "../../../tooling/inspect/boot-for-inspect.mjs";
|
|
4
|
+
import { inspectApp } from "../../../tooling/inspect/inspect-app.mjs";
|
|
5
|
+
import { flushAndExit } from "../../flush-and-exit.mjs";
|
|
6
|
+
import { createMcpContext } from "../../../tooling/mcp/create-mcp-context.mjs";
|
|
7
|
+
import { resolveMcpTransport, startWarlockMcpServer } from "../../../tooling/mcp/start-mcp-server.mjs";
|
|
8
|
+
|
|
9
|
+
//#region ../../packages/core/src/cli/commands/mcp/mcp-command.action.ts
|
|
10
|
+
function stringOption(value) {
|
|
11
|
+
if (typeof value === "number") return String(value);
|
|
12
|
+
return typeof value === "string" && value.trim().length > 0 ? value.trim() : void 0;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* The transport `warlock mcp` options describe: stdio by default, HTTP with
|
|
16
|
+
* `--http` (and `--host`, `--port`, `--path`, `--token` / `WARLOCK_MCP_TOKEN`).
|
|
17
|
+
* Throws on a port that is not a number.
|
|
18
|
+
*/
|
|
19
|
+
function mcpTransportFromOptions(options, env = process.env) {
|
|
20
|
+
if (!(options.http === true || stringOption(options.host) !== void 0 || options.port !== void 0)) return { type: "stdio" };
|
|
21
|
+
const portText = stringOption(options.port);
|
|
22
|
+
const port = portText === void 0 ? 0 : Number(portText);
|
|
23
|
+
if (!Number.isInteger(port) || port < 0 || port > 65535) throw new Error(`--port must be a number from 0 to 65535, got ${JSON.stringify(portText)}.`);
|
|
24
|
+
return {
|
|
25
|
+
type: "http",
|
|
26
|
+
host: stringOption(options.host) ?? "127.0.0.1",
|
|
27
|
+
port,
|
|
28
|
+
path: stringOption(options.path) ?? "/mcp",
|
|
29
|
+
token: stringOption(options.token) ?? stringOption(env.WARLOCK_MCP_TOKEN)
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Send `console.log` / `console.info` / `console.debug` to stderr for the rest
|
|
34
|
+
* of the process: over stdio, stdout carries only JSON-RPC, so a stray log
|
|
35
|
+
* line from the app (or the framework's logger) would corrupt the stream.
|
|
36
|
+
*/
|
|
37
|
+
function routeConsoleToStderr() {
|
|
38
|
+
const { log, info, debug } = console;
|
|
39
|
+
const toStderr = (...args) => console.error(...args);
|
|
40
|
+
console.log = toStderr;
|
|
41
|
+
console.info = toStderr;
|
|
42
|
+
console.debug = toStderr;
|
|
43
|
+
return () => {
|
|
44
|
+
console.log = log;
|
|
45
|
+
console.info = info;
|
|
46
|
+
console.debug = debug;
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/** The read-only boot, run once on the first tool call that needs the app. */
|
|
50
|
+
function lazyInspectOptions() {
|
|
51
|
+
let boot;
|
|
52
|
+
return () => {
|
|
53
|
+
boot ??= bootForInspect().then(inspectOptionsFromBoot);
|
|
54
|
+
return boot;
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Action behind `warlock mcp`.
|
|
59
|
+
*
|
|
60
|
+
* Serves the app's tools over MCP. The app is booted the `warlock inspect`
|
|
61
|
+
* way — connectors booted, none started, no connection, no port — on the
|
|
62
|
+
* first call that needs it, so the server answers `initialize` at once.
|
|
63
|
+
* Runs until stdin closes (stdio) or SIGINT/SIGTERM.
|
|
64
|
+
*/
|
|
65
|
+
async function mcpCommandAction({ options }) {
|
|
66
|
+
const transport = mcpTransportFromOptions(options);
|
|
67
|
+
resolveMcpTransport(transport);
|
|
68
|
+
if (transport.type === "stdio") routeConsoleToStderr();
|
|
69
|
+
const allowWrites = options.allowWrites === true;
|
|
70
|
+
const inspectOptions = lazyInspectOptions();
|
|
71
|
+
const context = createMcpContext({
|
|
72
|
+
allowWrites,
|
|
73
|
+
inspect: async (sections) => inspectApp({
|
|
74
|
+
...await inspectOptions(),
|
|
75
|
+
sections
|
|
76
|
+
}),
|
|
77
|
+
...process.argv[1] ? { cliEntry: process.argv[1] } : {},
|
|
78
|
+
devtools: {
|
|
79
|
+
...stringOption(options.url) ? { url: stringOption(options.url) } : {},
|
|
80
|
+
...stringOption(options.devtoolsPath) ? { devtoolsPath: stringOption(options.devtoolsPath) } : {}
|
|
81
|
+
},
|
|
82
|
+
features: Object.keys(featuresMap)
|
|
83
|
+
});
|
|
84
|
+
const server = await startWarlockMcpServer({
|
|
85
|
+
context,
|
|
86
|
+
transport,
|
|
87
|
+
version: await getWarlockVersion()
|
|
88
|
+
});
|
|
89
|
+
console.error(`warlock mcp: ${server.tools.length} tools on ${server.url ?? "stdio"} (${allowWrites ? "writes allowed" : "read-only"})`);
|
|
90
|
+
let closing = false;
|
|
91
|
+
const stop = async () => {
|
|
92
|
+
if (closing) return;
|
|
93
|
+
closing = true;
|
|
94
|
+
await server.close();
|
|
95
|
+
await flushAndExit(0);
|
|
96
|
+
};
|
|
97
|
+
process.once("SIGINT", () => void stop());
|
|
98
|
+
process.once("SIGTERM", () => void stop());
|
|
99
|
+
if (transport.type === "stdio") process.stdin.once("end", () => void stop());
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
//#endregion
|
|
103
|
+
export { mcpCommandAction, mcpTransportFromOptions, routeConsoleToStderr };
|
|
104
|
+
//# sourceMappingURL=mcp-command.action.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-command.action.mjs","names":[],"sources":["../../../../../../../../../../packages/core/src/cli/commands/mcp/mcp-command.action.ts"],"sourcesContent":["import type { CommandActionData } from \"../../../commands/types\";\nimport { featuresMap } from \"../../../generations/features\";\nimport { bootForInspect, inspectOptionsFromBoot } from \"../../../tooling/inspect/boot-for-inspect\";\nimport { inspectApp, type InspectOptions } from \"../../../tooling/inspect/inspect-app\";\nimport { createMcpContext } from \"../../../tooling/mcp/create-mcp-context\";\nimport {\n resolveMcpTransport,\n startWarlockMcpServer,\n type WarlockMcpTransport,\n} from \"../../../tooling/mcp/start-mcp-server\";\nimport { getWarlockVersion } from \"../../../utils/framework-vesion\";\nimport { flushAndExit } from \"../../flush-and-exit\";\n\nfunction stringOption(value: string | number | boolean | undefined): string | undefined {\n if (typeof value === \"number\") return String(value);\n\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : undefined;\n}\n\n/**\n * The transport `warlock mcp` options describe: stdio by default, HTTP with\n * `--http` (and `--host`, `--port`, `--path`, `--token` / `WARLOCK_MCP_TOKEN`).\n * Throws on a port that is not a number.\n */\nexport function mcpTransportFromOptions(\n options: CommandActionData[\"options\"],\n env: NodeJS.ProcessEnv = process.env,\n): WarlockMcpTransport {\n const http =\n options.http === true || stringOption(options.host) !== undefined || options.port !== undefined;\n\n if (!http) return { type: \"stdio\" };\n\n const portText = stringOption(options.port);\n const port = portText === undefined ? 0 : Number(portText);\n\n if (!Number.isInteger(port) || port < 0 || port > 65_535) {\n throw new Error(`--port must be a number from 0 to 65535, got ${JSON.stringify(portText)}.`);\n }\n\n return {\n type: \"http\",\n host: stringOption(options.host) ?? \"127.0.0.1\",\n port,\n path: stringOption(options.path) ?? \"/mcp\",\n token: stringOption(options.token) ?? stringOption(env.WARLOCK_MCP_TOKEN),\n };\n}\n\n/**\n * Send `console.log` / `console.info` / `console.debug` to stderr for the rest\n * of the process: over stdio, stdout carries only JSON-RPC, so a stray log\n * line from the app (or the framework's logger) would corrupt the stream.\n */\nexport function routeConsoleToStderr(): () => void {\n const { log, info, debug } = console;\n const toStderr = (...args: unknown[]) => console.error(...args);\n\n console.log = toStderr;\n console.info = toStderr;\n console.debug = toStderr;\n\n return () => {\n console.log = log;\n console.info = info;\n console.debug = debug;\n };\n}\n\n/** The read-only boot, run once on the first tool call that needs the app. */\nfunction lazyInspectOptions(): () => Promise<InspectOptions> {\n let boot: Promise<InspectOptions> | undefined;\n\n return () => {\n boot ??= bootForInspect().then(inspectOptionsFromBoot);\n\n return boot;\n };\n}\n\n/**\n * Action behind `warlock mcp`.\n *\n * Serves the app's tools over MCP. The app is booted the `warlock inspect`\n * way — connectors booted, none started, no connection, no port — on the\n * first call that needs it, so the server answers `initialize` at once.\n * Runs until stdin closes (stdio) or SIGINT/SIGTERM.\n */\nexport async function mcpCommandAction({ options }: CommandActionData): Promise<void> {\n const transport = mcpTransportFromOptions(options);\n\n // Refuse an unsafe bind before anything boots.\n resolveMcpTransport(transport);\n\n if (transport.type === \"stdio\") routeConsoleToStderr();\n\n const allowWrites = options.allowWrites === true;\n const inspectOptions = lazyInspectOptions();\n const context = createMcpContext({\n allowWrites,\n inspect: async (sections) => inspectApp({ ...(await inspectOptions()), sections }),\n ...(process.argv[1] ? { cliEntry: process.argv[1] } : {}),\n devtools: {\n ...(stringOption(options.url) ? { url: stringOption(options.url) } : {}),\n ...(stringOption(options.devtoolsPath)\n ? { devtoolsPath: stringOption(options.devtoolsPath) }\n : {}),\n },\n features: Object.keys(featuresMap),\n });\n\n const server = await startWarlockMcpServer({\n context,\n transport,\n version: await getWarlockVersion(),\n });\n\n console.error(\n `warlock mcp: ${server.tools.length} tools on ${server.url ?? \"stdio\"} (${allowWrites ? \"writes allowed\" : \"read-only\"})`,\n );\n\n let closing = false;\n\n const stop = async () => {\n if (closing) return;\n closing = true;\n await server.close();\n await flushAndExit(0);\n };\n\n process.once(\"SIGINT\", () => void stop());\n process.once(\"SIGTERM\", () => void stop());\n\n if (transport.type === \"stdio\") {\n process.stdin.once(\"end\", () => void stop());\n }\n}\n"],"mappings":";;;;;;;;;AAaA,SAAS,aAAa,OAAkE;CACtF,IAAI,OAAO,UAAU,UAAU,OAAO,OAAO,KAAK;CAElD,OAAO,OAAO,UAAU,YAAY,MAAM,KAAK,CAAC,CAAC,SAAS,IAAI,MAAM,KAAK,IAAI;AAC/E;;;;;;AAOA,SAAgB,wBACd,SACA,MAAyB,QAAQ,KACZ;CAIrB,IAAI,EAFF,QAAQ,SAAS,QAAQ,aAAa,QAAQ,IAAI,MAAM,UAAa,QAAQ,SAAS,SAE7E,OAAO,EAAE,MAAM,QAAQ;CAElC,MAAM,WAAW,aAAa,QAAQ,IAAI;CAC1C,MAAM,OAAO,aAAa,SAAY,IAAI,OAAO,QAAQ;CAEzD,IAAI,CAAC,OAAO,UAAU,IAAI,KAAK,OAAO,KAAK,OAAO,OAChD,MAAM,IAAI,MAAM,gDAAgD,KAAK,UAAU,QAAQ,EAAE,EAAE;CAG7F,OAAO;EACL,MAAM;EACN,MAAM,aAAa,QAAQ,IAAI,KAAK;EACpC;EACA,MAAM,aAAa,QAAQ,IAAI,KAAK;EACpC,OAAO,aAAa,QAAQ,KAAK,KAAK,aAAa,IAAI,iBAAiB;CAC1E;AACF;;;;;;AAOA,SAAgB,uBAAmC;CACjD,MAAM,EAAE,KAAK,MAAM,UAAU;CAC7B,MAAM,YAAY,GAAG,SAAoB,QAAQ,MAAM,GAAG,IAAI;CAE9D,QAAQ,MAAM;CACd,QAAQ,OAAO;CACf,QAAQ,QAAQ;CAEhB,aAAa;EACX,QAAQ,MAAM;EACd,QAAQ,OAAO;EACf,QAAQ,QAAQ;CAClB;AACF;;AAGA,SAAS,qBAAoD;CAC3D,IAAI;CAEJ,aAAa;EACX,SAAS,eAAe,CAAC,CAAC,KAAK,sBAAsB;EAErD,OAAO;CACT;AACF;;;;;;;;;AAUA,eAAsB,iBAAiB,EAAE,WAA6C;CACpF,MAAM,YAAY,wBAAwB,OAAO;CAGjD,oBAAoB,SAAS;CAE7B,IAAI,UAAU,SAAS,SAAS,qBAAqB;CAErD,MAAM,cAAc,QAAQ,gBAAgB;CAC5C,MAAM,iBAAiB,mBAAmB;CAC1C,MAAM,UAAU,iBAAiB;EAC/B;EACA,SAAS,OAAO,aAAa,WAAW;GAAE,GAAI,MAAM,eAAe;GAAI;EAAS,CAAC;EACjF,GAAI,QAAQ,KAAK,KAAK,EAAE,UAAU,QAAQ,KAAK,GAAG,IAAI,CAAC;EACvD,UAAU;GACR,GAAI,aAAa,QAAQ,GAAG,IAAI,EAAE,KAAK,aAAa,QAAQ,GAAG,EAAE,IAAI,CAAC;GACtE,GAAI,aAAa,QAAQ,YAAY,IACjC,EAAE,cAAc,aAAa,QAAQ,YAAY,EAAE,IACnD,CAAC;EACP;EACA,UAAU,OAAO,KAAK,WAAW;CACnC,CAAC;CAED,MAAM,SAAS,MAAM,sBAAsB;EACzC;EACA;EACA,SAAS,MAAM,kBAAkB;CACnC,CAAC;CAED,QAAQ,MACN,gBAAgB,OAAO,MAAM,OAAO,YAAY,OAAO,OAAO,QAAQ,IAAI,cAAc,mBAAmB,YAAY,EACzH;CAEA,IAAI,UAAU;CAEd,MAAM,OAAO,YAAY;EACvB,IAAI,SAAS;EACb,UAAU;EACV,MAAM,OAAO,MAAM;EACnB,MAAM,aAAa,CAAC;CACtB;CAEA,QAAQ,KAAK,gBAAgB,KAAK,KAAK,CAAC;CACxC,QAAQ,KAAK,iBAAiB,KAAK,KAAK,CAAC;CAEzC,IAAI,UAAU,SAAS,SACrB,QAAQ,MAAM,KAAK,aAAa,KAAK,KAAK,CAAC;AAE/C"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { command } from "../../commands/cli-command.mjs";
|
|
2
|
+
import { mcpCommandAction, routeConsoleToStderr } from "./mcp/mcp-command.action.mjs";
|
|
3
|
+
|
|
4
|
+
//#region ../../packages/core/src/cli/commands/mcp.command.ts
|
|
5
|
+
/**
|
|
6
|
+
* `warlock mcp` — serve the app to coding agents over the Model Context
|
|
7
|
+
* Protocol: `inspect_*` (routes, models, config keys, events, pages, jobs…),
|
|
8
|
+
* `db_schema`, `docs_search` / `docs_read` (installed skills and docs only,
|
|
9
|
+
* offline), `explain`, `check_run`, `test_run`, `requests_recent` (from
|
|
10
|
+
* devtools) and `generate_make` / `generate_add` (a diff by default).
|
|
11
|
+
*
|
|
12
|
+
* stdio by default; `--http` serves Streamable HTTP on loopback (a token is
|
|
13
|
+
* required off loopback). Read-only unless `--allow-writes`. Needs
|
|
14
|
+
* `@warlock.js/ai-tools` (optional peer). Boots like `warlock inspect` — no
|
|
15
|
+
* database connection, no port bound for the app — on the first tool call.
|
|
16
|
+
*/
|
|
17
|
+
const mcpCommand = command({
|
|
18
|
+
name: "mcp",
|
|
19
|
+
description: "Serve the app to coding agents over MCP (stdio, or --http): inspect, db schema, installed docs, check, tests, devtools requests, generator diffs; read-only unless --allow-writes",
|
|
20
|
+
action: mcpCommandAction,
|
|
21
|
+
persistent: true,
|
|
22
|
+
preAction: async (data) => {
|
|
23
|
+
if (!(data.options.http === true || data.options.host !== void 0 || data.options.port !== void 0)) routeConsoleToStderr();
|
|
24
|
+
},
|
|
25
|
+
preload: {
|
|
26
|
+
runtimeStrategy: "development",
|
|
27
|
+
config: true,
|
|
28
|
+
bootstrap: true
|
|
29
|
+
},
|
|
30
|
+
options: [
|
|
31
|
+
{
|
|
32
|
+
text: "--http",
|
|
33
|
+
description: "Serve MCP Streamable HTTP instead of stdio (loopback, a free port unless --port)",
|
|
34
|
+
type: "boolean"
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
text: "--host",
|
|
38
|
+
description: "HTTP bind address (default 127.0.0.1); anything but loopback requires --token",
|
|
39
|
+
type: "string"
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
text: "--port",
|
|
43
|
+
description: "HTTP port (default 0: a free port, printed on stderr)",
|
|
44
|
+
type: "string"
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
text: "--path",
|
|
48
|
+
description: "HTTP endpoint path (default /mcp)",
|
|
49
|
+
type: "string"
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
text: "--token",
|
|
53
|
+
description: "Bearer token HTTP clients must send (or WARLOCK_MCP_TOKEN)",
|
|
54
|
+
type: "string"
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
text: "--allow-writes",
|
|
58
|
+
description: "Let generate_make / generate_add write into the project (default: diff only)",
|
|
59
|
+
type: "boolean"
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
text: "--url",
|
|
63
|
+
description: "The dev server origin for requests_recent (default: read from .warlock/dev-server.json)",
|
|
64
|
+
type: "string"
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
text: "--devtools-path",
|
|
68
|
+
description: "The devtools mount for requests_recent (default /__warlock)",
|
|
69
|
+
type: "string"
|
|
70
|
+
}
|
|
71
|
+
]
|
|
72
|
+
});
|
|
73
|
+
|
|
74
|
+
//#endregion
|
|
75
|
+
export { mcpCommand };
|
|
76
|
+
//# sourceMappingURL=mcp.command.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.command.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/cli/commands/mcp.command.ts"],"sourcesContent":["import { command } from \"../../commands/cli-command\";\nimport { mcpCommandAction, routeConsoleToStderr } from \"./mcp/mcp-command.action\";\n\n/**\n * `warlock mcp` — serve the app to coding agents over the Model Context\n * Protocol: `inspect_*` (routes, models, config keys, events, pages, jobs…),\n * `db_schema`, `docs_search` / `docs_read` (installed skills and docs only,\n * offline), `explain`, `check_run`, `test_run`, `requests_recent` (from\n * devtools) and `generate_make` / `generate_add` (a diff by default).\n *\n * stdio by default; `--http` serves Streamable HTTP on loopback (a token is\n * required off loopback). Read-only unless `--allow-writes`. Needs\n * `@warlock.js/ai-tools` (optional peer). Boots like `warlock inspect` — no\n * database connection, no port bound for the app — on the first tool call.\n */\nexport const mcpCommand = command({\n name: \"mcp\",\n description:\n \"Serve the app to coding agents over MCP (stdio, or --http): inspect, db schema, installed docs, check, tests, devtools requests, generator diffs; read-only unless --allow-writes\",\n action: mcpCommandAction,\n persistent: true,\n preAction: async (data) => {\n // Before the preloaders: over stdio, anything printed while config loads\n // would corrupt the JSON-RPC stream on stdout.\n const http =\n data.options.http === true ||\n data.options.host !== undefined ||\n data.options.port !== undefined;\n\n if (!http) routeConsoleToStderr();\n },\n preload: {\n runtimeStrategy: \"development\",\n config: true,\n bootstrap: true,\n },\n options: [\n {\n text: \"--http\",\n description:\n \"Serve MCP Streamable HTTP instead of stdio (loopback, a free port unless --port)\",\n type: \"boolean\",\n },\n {\n text: \"--host\",\n description: \"HTTP bind address (default 127.0.0.1); anything but loopback requires --token\",\n type: \"string\",\n },\n {\n text: \"--port\",\n description: \"HTTP port (default 0: a free port, printed on stderr)\",\n type: \"string\",\n },\n {\n text: \"--path\",\n description: \"HTTP endpoint path (default /mcp)\",\n type: \"string\",\n },\n {\n text: \"--token\",\n description: \"Bearer token HTTP clients must send (or WARLOCK_MCP_TOKEN)\",\n type: \"string\",\n },\n {\n text: \"--allow-writes\",\n description: \"Let generate_make / generate_add write into the project (default: diff only)\",\n type: \"boolean\",\n },\n {\n text: \"--url\",\n description:\n \"The dev server origin for requests_recent (default: read from .warlock/dev-server.json)\",\n type: \"string\",\n },\n {\n text: \"--devtools-path\",\n description: \"The devtools mount for requests_recent (default /__warlock)\",\n type: \"string\",\n },\n ],\n});\n"],"mappings":";;;;;;;;;;;;;;;;AAeA,MAAa,aAAa,QAAQ;CAChC,MAAM;CACN,aACE;CACF,QAAQ;CACR,YAAY;CACZ,WAAW,OAAO,SAAS;EAQzB,IAAI,EAJF,KAAK,QAAQ,SAAS,QACtB,KAAK,QAAQ,SAAS,UACtB,KAAK,QAAQ,SAAS,SAEb,qBAAqB;CAClC;CACA,SAAS;EACP,iBAAiB;EACjB,QAAQ;EACR,WAAW;CACb;CACA,SAAS;EACP;GACE,MAAM;GACN,aACE;GACF,MAAM;EACR;EACA;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;EACA;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;EACA;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;EACA;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;EACA;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;EACA;GACE,MAAM;GACN,aACE;GACF,MAAM;EACR;EACA;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;CACF;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi-generator.action.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/cli/commands/openapi-generator.action.ts"],"sourcesContent":["import { mkdir, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { colors } from \"@mongez/copper\";\nimport type { CommandActionData } from \"../../commands/types\";\nimport { collectOpenApiDocument } from \"../../openapi/collect-openapi-document\";\nimport { resolveBuildConfig } from \"../../production/resolve-build-config\";\nimport { rootPath } from \"../../utils/paths\";\n\n/** Where the document goes unless `--out` says otherwise. */\nexport const DEFAULT_OPENAPI_OUTPUT = \"storage/openapi/openapi.json\";\n\ntype OptionValue = CommandActionData[\"options\"][string];\n\nexport function stringOption(value: OptionValue | undefined): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : undefined;\n}\n\n/**\n * Action behind `warlock generate.openapi`.\n *\n * Builds the OpenAPI 3.1 document in a fresh registration child (no connectors are booted),\n * writes it as pretty JSON to `--out` (default `storage/openapi/openapi.json`) and prints the\n * per-route gaps it found as warnings. A child failure is fatal and rejects; gaps never are.\n */\nexport async function generateOpenApiAction({ options }: CommandActionData): Promise<void> {\n const cwd = rootPath();\n const output = path.resolve(cwd, stringOption(options.out) ?? DEFAULT_OPENAPI_OUTPUT);\n\n const { document, warnings } = await collectOpenApiDocument({\n cwd,\n timeoutMs: resolveBuildConfig().routeRegistrationTimeoutMs,\n title: stringOption(options.title),\n server: stringOption(options.server),\n includePages: options.includePages === true,\n });\n\n await mkdir(path.dirname(output), { recursive: true });\n await writeFile(output, `${JSON.stringify(document, null, 2)}\\n`, \"utf8\");\n\n const operations = Object.values(document.paths).reduce(\n (total, item) => total + Object.keys(item).length,\n 0,\n );\n\n console.log(\n colors.greenBright(\n `OpenAPI ${document.openapi} written to ${output} (${Object.keys(document.paths).length} paths, ${operations} operations).`,\n ),\n );\n\n if (warnings.length > 0) {\n console.warn(colors.yellowBright(`\\n${warnings.length} warning${warnings.length === 1 ? \"\" : \"s\"}:`));\n\n for (const warning of warnings) {\n console.warn(` - ${warning}`);\n }\n }\n}\n"],"mappings":";;;;;;;;;AASA,MAAa,yBAAyB;AAItC,SAAgB,aAAa,OAAoD;CAC/E,OAAO,OAAO,UAAU,YAAY,MAAM,KAAK,CAAC,CAAC,SAAS,IAAI,MAAM,KAAK,IAAI;AAC/E;;;;;;;;AASA,eAAsB,sBAAsB,EAAE,WAA6C;CACzF,MAAM,MAAM,SAAS;CACrB,MAAM,SAAS,KAAK,QAAQ,KAAK,aAAa,QAAQ,GAAG,mCAA2B;CAEpF,MAAM,EAAE,UAAU,aAAa,MAAM,uBAAuB;EAC1D;EACA,WAAW,mBAAmB,CAAC,CAAC;EAChC,OAAO,aAAa,QAAQ,KAAK;EACjC,QAAQ,aAAa,QAAQ,MAAM;EACnC,cAAc,QAAQ,iBAAiB;CACzC,CAAC;CAED,MAAM,MAAM,KAAK,QAAQ,MAAM,GAAG,EAAE,WAAW,KAAK,CAAC;CACrD,MAAM,UAAU,QAAQ,GAAG,KAAK,UAAU,UAAU,MAAM,CAAC,EAAE,KAAK,MAAM;CAExE,MAAM,aAAa,OAAO,OAAO,SAAS,KAAK,CAAC,CAAC,QAC9C,OAAO,SAAS,QAAQ,OAAO,KAAK,IAAI,CAAC,CAAC,QAC3C,CACF;CAEA,QAAQ,IACN,OAAO,YACL,WAAW,SAAS,QAAQ,cAAc,OAAO,IAAI,OAAO,KAAK,SAAS,KAAK,CAAC,CAAC,OAAO,UAAU,WAAW,cAC/G,CACF;CAEA,IAAI,SAAS,SAAS,GAAG;EACvB,QAAQ,
|
|
1
|
+
{"version":3,"file":"openapi-generator.action.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/cli/commands/openapi-generator.action.ts"],"sourcesContent":["import { mkdir, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { colors } from \"@mongez/copper\";\nimport type { CommandActionData } from \"../../commands/types\";\nimport { collectOpenApiDocument } from \"../../openapi/collect-openapi-document\";\nimport { resolveBuildConfig } from \"../../production/resolve-build-config\";\nimport { rootPath } from \"../../utils/paths\";\n\n/** Where the document goes unless `--out` says otherwise. */\nexport const DEFAULT_OPENAPI_OUTPUT = \"storage/openapi/openapi.json\";\n\ntype OptionValue = CommandActionData[\"options\"][string];\n\nexport function stringOption(value: OptionValue | undefined): string | undefined {\n return typeof value === \"string\" && value.trim().length > 0 ? value.trim() : undefined;\n}\n\n/**\n * Action behind `warlock generate.openapi`.\n *\n * Builds the OpenAPI 3.1 document in a fresh registration child (no connectors are booted),\n * writes it as pretty JSON to `--out` (default `storage/openapi/openapi.json`) and prints the\n * per-route gaps it found as warnings. A child failure is fatal and rejects; gaps never are.\n */\nexport async function generateOpenApiAction({ options }: CommandActionData): Promise<void> {\n const cwd = rootPath();\n const output = path.resolve(cwd, stringOption(options.out) ?? DEFAULT_OPENAPI_OUTPUT);\n\n const { document, warnings } = await collectOpenApiDocument({\n cwd,\n timeoutMs: resolveBuildConfig().routeRegistrationTimeoutMs,\n title: stringOption(options.title),\n server: stringOption(options.server),\n includePages: options.includePages === true,\n });\n\n await mkdir(path.dirname(output), { recursive: true });\n await writeFile(output, `${JSON.stringify(document, null, 2)}\\n`, \"utf8\");\n\n const operations = Object.values(document.paths).reduce(\n (total, item) => total + Object.keys(item).length,\n 0,\n );\n\n console.log(\n colors.greenBright(\n `OpenAPI ${document.openapi} written to ${output} (${Object.keys(document.paths).length} paths, ${operations} operations).`,\n ),\n );\n\n if (warnings.length > 0) {\n console.warn(\n colors.yellowBright(`\\n${warnings.length} warning${warnings.length === 1 ? \"\" : \"s\"}:`),\n );\n\n for (const warning of warnings) {\n console.warn(` - ${warning}`);\n }\n }\n}\n"],"mappings":";;;;;;;;;AASA,MAAa,yBAAyB;AAItC,SAAgB,aAAa,OAAoD;CAC/E,OAAO,OAAO,UAAU,YAAY,MAAM,KAAK,CAAC,CAAC,SAAS,IAAI,MAAM,KAAK,IAAI;AAC/E;;;;;;;;AASA,eAAsB,sBAAsB,EAAE,WAA6C;CACzF,MAAM,MAAM,SAAS;CACrB,MAAM,SAAS,KAAK,QAAQ,KAAK,aAAa,QAAQ,GAAG,mCAA2B;CAEpF,MAAM,EAAE,UAAU,aAAa,MAAM,uBAAuB;EAC1D;EACA,WAAW,mBAAmB,CAAC,CAAC;EAChC,OAAO,aAAa,QAAQ,KAAK;EACjC,QAAQ,aAAa,QAAQ,MAAM;EACnC,cAAc,QAAQ,iBAAiB;CACzC,CAAC;CAED,MAAM,MAAM,KAAK,QAAQ,MAAM,GAAG,EAAE,WAAW,KAAK,CAAC;CACrD,MAAM,UAAU,QAAQ,GAAG,KAAK,UAAU,UAAU,MAAM,CAAC,EAAE,KAAK,MAAM;CAExE,MAAM,aAAa,OAAO,OAAO,SAAS,KAAK,CAAC,CAAC,QAC9C,OAAO,SAAS,QAAQ,OAAO,KAAK,IAAI,CAAC,CAAC,QAC3C,CACF;CAEA,QAAQ,IACN,OAAO,YACL,WAAW,SAAS,QAAQ,cAAc,OAAO,IAAI,OAAO,KAAK,SAAS,KAAK,CAAC,CAAC,OAAO,UAAU,WAAW,cAC/G,CACF;CAEA,IAAI,SAAS,SAAS,GAAG;EACvB,QAAQ,KACN,OAAO,aAAa,KAAK,SAAS,OAAO,UAAU,SAAS,WAAW,IAAI,KAAK,IAAI,EAAE,CACxF;EAEA,KAAK,MAAM,WAAW,UACpB,QAAQ,KAAK,OAAO,SAAS;CAEjC;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi-generator.command.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/cli/commands/openapi-generator.command.ts"],"sourcesContent":["import { command } from \"../../commands/cli-command\";\nimport { generateOpenApiAction } from \"./openapi-generator.action\";\n\n/**\n * `warlock generate.openapi` — write an OpenAPI 3.1 document derived from the registered\n * routes, handler validation, declared `responseSchema` and auth middleware.\n *\n * Named with a dot like `generate.typings`; the `generate` command itself is the scaffolder.\n * Routes are read in the same isolated child process `warlock build` uses, so no connector\n * is started and the app keeps running untouched.\n */\nexport const openApiGeneratorCommand = command({\n name: \"generate.openapi\",\n description: \"Generate an OpenAPI 3.1 document (storage/openapi/openapi.json) from the routes\",\n action: generateOpenApiAction,\n preload: {\n warlockConfig: true,\n },\n options: [\n {\n text: \"--out, -o\",\n description
|
|
1
|
+
{"version":3,"file":"openapi-generator.command.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/cli/commands/openapi-generator.command.ts"],"sourcesContent":["import { command } from \"../../commands/cli-command\";\nimport { generateOpenApiAction } from \"./openapi-generator.action\";\n\n/**\n * `warlock generate.openapi` — write an OpenAPI 3.1 document derived from the registered\n * routes, handler validation, declared `responseSchema` and auth middleware.\n *\n * Named with a dot like `generate.typings`; the `generate` command itself is the scaffolder.\n * Routes are read in the same isolated child process `warlock build` uses, so no connector\n * is started and the app keeps running untouched.\n */\nexport const openApiGeneratorCommand = command({\n name: \"generate.openapi\",\n description: \"Generate an OpenAPI 3.1 document (storage/openapi/openapi.json) from the routes\",\n action: generateOpenApiAction,\n preload: {\n warlockConfig: true,\n },\n options: [\n {\n text: \"--out, -o\",\n description:\n \"Output file, relative to the project root (default storage/openapi/openapi.json)\",\n type: \"string\",\n },\n {\n text: \"--title\",\n description: \"info.title (default: the name in package.json)\",\n type: \"string\",\n },\n {\n text: \"--server\",\n description: \"servers[0].url (default: built from the http config)\",\n type: \"string\",\n },\n {\n text: \"--include-pages\",\n description: \"Also document page (SSR) routes\",\n type: \"boolean\",\n },\n ],\n});\n"],"mappings":";;;;;;;;;;;;AAWA,MAAa,0BAA0B,QAAQ;CAC7C,MAAM;CACN,aAAa;CACb,QAAQ;CACR,SAAS,EACP,eAAe,KACjB;CACA,SAAS;EACP;GACE,MAAM;GACN,aACE;GACF,MAAM;EACR;EACA;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;EACA;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;EACA;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;CACF;AACF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postman-generator.action.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/cli/commands/postman-generator.action.ts"],"sourcesContent":["import { mkdir, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { colors } from \"@mongez/copper\";\nimport type { CommandActionData } from \"../../commands/types\";\nimport { collectOpenApiDocument } from \"../../openapi/collect-openapi-document\";\nimport { openApiToPostmanCollection } from \"../../openapi/postman/openapi-to-postman-collection\";\nimport type { PostmanItem } from \"../../openapi/postman/postman-types\";\nimport { resolveBuildConfig } from \"../../production/resolve-build-config\";\nimport { rootPath } from \"../../utils/paths\";\nimport { stringOption } from \"./openapi-generator.action\";\n\n/** Where the collection goes unless `--out` says otherwise. */\nexport const DEFAULT_POSTMAN_OUTPUT = \"storage/postman/collection.json\";\n\nfunction countRequests(items: readonly PostmanItem[]): number {\n return items.reduce((total, item) => total + (\"item\" in item ? countRequests(item.item) : 1), 0);\n}\n\n/**\n * Action behind `warlock generate.postman`.\n *\n * Gets the OpenAPI document exactly as `generate.openapi` does (same registration child, same\n * options), converts it to a Postman Collection v2.1.0 in this process and writes it as\n * pretty JSON to `--out` (default `storage/postman/collection.json`). The per-route gaps the\n * document builder found are printed as warnings. A child failure is fatal and rejects.\n */\nexport async function generatePostmanAction({ options }: CommandActionData): Promise<void> {\n const cwd = rootPath();\n const output = path.resolve(cwd, stringOption(options.out) ?? DEFAULT_POSTMAN_OUTPUT);\n\n const { document, warnings } = await collectOpenApiDocument({\n cwd,\n timeoutMs: resolveBuildConfig().routeRegistrationTimeoutMs,\n title: stringOption(options.title),\n server: stringOption(options.server),\n includePages: options.includePages === true,\n });\n\n const collection = openApiToPostmanCollection(document);\n\n await mkdir(path.dirname(output), { recursive: true });\n await writeFile(output, `${JSON.stringify(collection, null, 2)}\\n`, \"utf8\");\n\n const folders = collection.item.filter((item) => \"item\" in item).length;\n\n console.log(\n colors.greenBright(\n `Postman collection written to ${output} (${folders} folder${folders === 1 ? \"\" : \"s\"}, ${countRequests(collection.item)} requests). Import it in Postman and set the {{token}} variable.`,\n ),\n );\n\n if (warnings.length > 0) {\n console.warn(colors.yellowBright(`\\n${warnings.length} warning${warnings.length === 1 ? \"\" : \"s\"}:`));\n\n for (const warning of warnings) {\n console.warn(` - ${warning}`);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;AAYA,MAAa,yBAAyB;AAEtC,SAAS,cAAc,OAAuC;CAC5D,OAAO,MAAM,QAAQ,OAAO,SAAS,SAAS,UAAU,OAAO,cAAc,KAAK,IAAI,IAAI,IAAI,CAAC;AACjG;;;;;;;;;AAUA,eAAsB,sBAAsB,EAAE,WAA6C;CACzF,MAAM,MAAM,SAAS;CACrB,MAAM,SAAS,KAAK,QAAQ,KAAK,aAAa,QAAQ,GAAG,sCAA2B;CAEpF,MAAM,EAAE,UAAU,aAAa,MAAM,uBAAuB;EAC1D;EACA,WAAW,mBAAmB,CAAC,CAAC;EAChC,OAAO,aAAa,QAAQ,KAAK;EACjC,QAAQ,aAAa,QAAQ,MAAM;EACnC,cAAc,QAAQ,iBAAiB;CACzC,CAAC;CAED,MAAM,aAAa,2BAA2B,QAAQ;CAEtD,MAAM,MAAM,KAAK,QAAQ,MAAM,GAAG,EAAE,WAAW,KAAK,CAAC;CACrD,MAAM,UAAU,QAAQ,GAAG,KAAK,UAAU,YAAY,MAAM,CAAC,EAAE,KAAK,MAAM;CAE1E,MAAM,UAAU,WAAW,KAAK,QAAQ,SAAS,UAAU,IAAI,CAAC,CAAC;CAEjE,QAAQ,IACN,OAAO,YACL,iCAAiC,OAAO,IAAI,QAAQ,SAAS,YAAY,IAAI,KAAK,IAAI,IAAI,cAAc,WAAW,IAAI,EAAE,iEAC3H,CACF;CAEA,IAAI,SAAS,SAAS,GAAG;EACvB,QAAQ,
|
|
1
|
+
{"version":3,"file":"postman-generator.action.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/cli/commands/postman-generator.action.ts"],"sourcesContent":["import { mkdir, writeFile } from \"node:fs/promises\";\nimport path from \"node:path\";\nimport { colors } from \"@mongez/copper\";\nimport type { CommandActionData } from \"../../commands/types\";\nimport { collectOpenApiDocument } from \"../../openapi/collect-openapi-document\";\nimport { openApiToPostmanCollection } from \"../../openapi/postman/openapi-to-postman-collection\";\nimport type { PostmanItem } from \"../../openapi/postman/postman-types\";\nimport { resolveBuildConfig } from \"../../production/resolve-build-config\";\nimport { rootPath } from \"../../utils/paths\";\nimport { stringOption } from \"./openapi-generator.action\";\n\n/** Where the collection goes unless `--out` says otherwise. */\nexport const DEFAULT_POSTMAN_OUTPUT = \"storage/postman/collection.json\";\n\nfunction countRequests(items: readonly PostmanItem[]): number {\n return items.reduce((total, item) => total + (\"item\" in item ? countRequests(item.item) : 1), 0);\n}\n\n/**\n * Action behind `warlock generate.postman`.\n *\n * Gets the OpenAPI document exactly as `generate.openapi` does (same registration child, same\n * options), converts it to a Postman Collection v2.1.0 in this process and writes it as\n * pretty JSON to `--out` (default `storage/postman/collection.json`). The per-route gaps the\n * document builder found are printed as warnings. A child failure is fatal and rejects.\n */\nexport async function generatePostmanAction({ options }: CommandActionData): Promise<void> {\n const cwd = rootPath();\n const output = path.resolve(cwd, stringOption(options.out) ?? DEFAULT_POSTMAN_OUTPUT);\n\n const { document, warnings } = await collectOpenApiDocument({\n cwd,\n timeoutMs: resolveBuildConfig().routeRegistrationTimeoutMs,\n title: stringOption(options.title),\n server: stringOption(options.server),\n includePages: options.includePages === true,\n });\n\n const collection = openApiToPostmanCollection(document);\n\n await mkdir(path.dirname(output), { recursive: true });\n await writeFile(output, `${JSON.stringify(collection, null, 2)}\\n`, \"utf8\");\n\n const folders = collection.item.filter((item) => \"item\" in item).length;\n\n console.log(\n colors.greenBright(\n `Postman collection written to ${output} (${folders} folder${folders === 1 ? \"\" : \"s\"}, ${countRequests(collection.item)} requests). Import it in Postman and set the {{token}} variable.`,\n ),\n );\n\n if (warnings.length > 0) {\n console.warn(\n colors.yellowBright(`\\n${warnings.length} warning${warnings.length === 1 ? \"\" : \"s\"}:`),\n );\n\n for (const warning of warnings) {\n console.warn(` - ${warning}`);\n }\n }\n}\n"],"mappings":";;;;;;;;;;;AAYA,MAAa,yBAAyB;AAEtC,SAAS,cAAc,OAAuC;CAC5D,OAAO,MAAM,QAAQ,OAAO,SAAS,SAAS,UAAU,OAAO,cAAc,KAAK,IAAI,IAAI,IAAI,CAAC;AACjG;;;;;;;;;AAUA,eAAsB,sBAAsB,EAAE,WAA6C;CACzF,MAAM,MAAM,SAAS;CACrB,MAAM,SAAS,KAAK,QAAQ,KAAK,aAAa,QAAQ,GAAG,sCAA2B;CAEpF,MAAM,EAAE,UAAU,aAAa,MAAM,uBAAuB;EAC1D;EACA,WAAW,mBAAmB,CAAC,CAAC;EAChC,OAAO,aAAa,QAAQ,KAAK;EACjC,QAAQ,aAAa,QAAQ,MAAM;EACnC,cAAc,QAAQ,iBAAiB;CACzC,CAAC;CAED,MAAM,aAAa,2BAA2B,QAAQ;CAEtD,MAAM,MAAM,KAAK,QAAQ,MAAM,GAAG,EAAE,WAAW,KAAK,CAAC;CACrD,MAAM,UAAU,QAAQ,GAAG,KAAK,UAAU,YAAY,MAAM,CAAC,EAAE,KAAK,MAAM;CAE1E,MAAM,UAAU,WAAW,KAAK,QAAQ,SAAS,UAAU,IAAI,CAAC,CAAC;CAEjE,QAAQ,IACN,OAAO,YACL,iCAAiC,OAAO,IAAI,QAAQ,SAAS,YAAY,IAAI,KAAK,IAAI,IAAI,cAAc,WAAW,IAAI,EAAE,iEAC3H,CACF;CAEA,IAAI,SAAS,SAAS,GAAG;EACvB,QAAQ,KACN,OAAO,aAAa,KAAK,SAAS,OAAO,UAAU,SAAS,WAAW,IAAI,KAAK,IAAI,EAAE,CACxF;EAEA,KAAK,MAAM,WAAW,UACpB,QAAQ,KAAK,OAAO,SAAS;CAEjC;AACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postman-generator.command.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/cli/commands/postman-generator.command.ts"],"sourcesContent":["import { command } from \"../../commands/cli-command\";\nimport { generatePostmanAction } from \"./postman-generator.action\";\n\n/**\n * `warlock generate.postman` — write a Postman Collection v2.1.0 derived from the same\n * OpenAPI document `generate.openapi` produces, so the two never disagree.\n *\n * Routes are read in the same isolated child process `warlock build` uses; the conversion\n * itself is pure and runs in the CLI process.\n */\nexport const postmanGeneratorCommand = command({\n name: \"generate.postman\",\n description: \"Generate a Postman collection (storage/postman/collection.json) from the routes\",\n action: generatePostmanAction,\n preload: {\n warlockConfig: true,\n },\n options: [\n {\n text: \"--out, -o\",\n description
|
|
1
|
+
{"version":3,"file":"postman-generator.command.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/cli/commands/postman-generator.command.ts"],"sourcesContent":["import { command } from \"../../commands/cli-command\";\nimport { generatePostmanAction } from \"./postman-generator.action\";\n\n/**\n * `warlock generate.postman` — write a Postman Collection v2.1.0 derived from the same\n * OpenAPI document `generate.openapi` produces, so the two never disagree.\n *\n * Routes are read in the same isolated child process `warlock build` uses; the conversion\n * itself is pure and runs in the CLI process.\n */\nexport const postmanGeneratorCommand = command({\n name: \"generate.postman\",\n description: \"Generate a Postman collection (storage/postman/collection.json) from the routes\",\n action: generatePostmanAction,\n preload: {\n warlockConfig: true,\n },\n options: [\n {\n text: \"--out, -o\",\n description:\n \"Output file, relative to the project root (default storage/postman/collection.json)\",\n type: \"string\",\n },\n {\n text: \"--title\",\n description: \"Collection name (default: the name in package.json)\",\n type: \"string\",\n },\n {\n text: \"--server\",\n description: \"Value of {{baseUrl}} (default: built from the http config)\",\n type: \"string\",\n },\n {\n text: \"--include-pages\",\n description: \"Also include page (SSR) routes\",\n type: \"boolean\",\n },\n ],\n});\n"],"mappings":";;;;;;;;;;;AAUA,MAAa,0BAA0B,QAAQ;CAC7C,MAAM;CACN,aAAa;CACb,QAAQ;CACR,SAAS,EACP,eAAe,KACjB;CACA,SAAS;EACP;GACE,MAAM;GACN,aACE;GACF,MAAM;EACR;EACA;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;EACA;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;EACA;GACE,MAAM;GACN,aAAa;GACb,MAAM;EACR;CACF;AACF,CAAC"}
|