@warlock.js/core 5.29.0 → 5.31.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 +168 -4
- 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 +1 -1
- package/esm/application/app.d.mts.map +1 -1
- package/esm/application/app.mjs +1 -1
- package/esm/application/app.mjs.map +1 -1
- package/esm/application/application-config-types.d.mts +1 -1
- package/esm/application/application-config-types.d.mts.map +1 -1
- package/esm/application/application.d.mts +1 -1
- package/esm/application/application.d.mts.map +1 -1
- package/esm/application/application.mjs +1 -1
- package/esm/application/application.mjs.map +1 -1
- package/esm/application/boot-signal.d.mts +1 -1
- package/esm/application/boot-signal.d.mts.map +1 -1
- package/esm/application/boot-signal.mjs +1 -1
- package/esm/application/boot-signal.mjs.map +1 -1
- package/esm/application/public-url.d.mts +1 -1
- package/esm/application/public-url.d.mts.map +1 -1
- package/esm/application/public-url.mjs +1 -1
- package/esm/application/public-url.mjs.map +1 -1
- package/esm/application/roles.d.mts +1 -1
- package/esm/application/roles.d.mts.map +1 -1
- package/esm/application/roles.mjs +1 -1
- package/esm/application/roles.mjs.map +1 -1
- package/esm/benchmark/benchmark-snapshots.d.mts +1 -1
- package/esm/benchmark/benchmark-snapshots.d.mts.map +1 -1
- package/esm/benchmark/benchmark-snapshots.mjs +1 -1
- package/esm/benchmark/benchmark-snapshots.mjs.map +1 -1
- package/esm/benchmark/benchmark.d.mts +1 -1
- package/esm/benchmark/benchmark.d.mts.map +1 -1
- package/esm/benchmark/benchmark.mjs +1 -1
- package/esm/benchmark/benchmark.mjs.map +1 -1
- package/esm/benchmark/channels/console.channel.d.mts +1 -1
- package/esm/benchmark/channels/console.channel.d.mts.map +1 -1
- package/esm/benchmark/channels/console.channel.mjs +1 -1
- package/esm/benchmark/channels/console.channel.mjs.map +1 -1
- package/esm/benchmark/channels/noop.channel.d.mts +1 -1
- package/esm/benchmark/channels/noop.channel.d.mts.map +1 -1
- package/esm/benchmark/channels/noop.channel.mjs +1 -1
- package/esm/benchmark/channels/noop.channel.mjs.map +1 -1
- package/esm/benchmark/profiler.d.mts +1 -1
- package/esm/benchmark/profiler.d.mts.map +1 -1
- package/esm/benchmark/profiler.mjs +1 -1
- package/esm/benchmark/profiler.mjs.map +1 -1
- package/esm/benchmark/types.d.mts +1 -1
- package/esm/benchmark/types.d.mts.map +1 -1
- package/esm/bootstrap/setup.d.mts +1 -1
- package/esm/bootstrap/setup.d.mts.map +1 -1
- package/esm/bootstrap/setup.mjs +1 -1
- package/esm/bootstrap/setup.mjs.map +1 -1
- package/esm/bootstrap.d.mts +1 -1
- package/esm/bootstrap.d.mts.map +1 -1
- package/esm/bootstrap.mjs +1 -1
- package/esm/bootstrap.mjs.map +1 -1
- package/esm/cache/database-cache-driver.d.mts +1 -1
- package/esm/cache/database-cache-driver.d.mts.map +1 -1
- package/esm/cache/database-cache-driver.mjs +1 -1
- package/esm/cache/database-cache-driver.mjs.map +1 -1
- package/esm/cache/index.mjs +1 -1
- package/esm/cache/index.mjs.map +1 -1
- package/esm/cli/cli-commands.manager.mjs +1 -1
- package/esm/cli/cli-commands.manager.mjs.map +1 -1
- package/esm/cli/cli-commands.utils.mjs +1 -1
- package/esm/cli/cli-commands.utils.mjs.map +1 -1
- package/esm/cli/commands/add.command.mjs +5 -3
- package/esm/cli/commands/add.command.mjs.map +1 -1
- package/esm/cli/commands/agents-md/agents-md-command.action.mjs +69 -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 +7 -2
- 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/create-database.command.mjs +1 -1
- package/esm/cli/commands/create-database.command.mjs.map +1 -1
- package/esm/cli/commands/dev-server.command.mjs +10 -2
- package/esm/cli/commands/dev-server.command.mjs.map +1 -1
- package/esm/cli/commands/doctor/boot-for-diagnostics.mjs +9 -4
- package/esm/cli/commands/doctor/boot-for-diagnostics.mjs.map +1 -1
- package/esm/cli/commands/doctor/check.types.d.mts +76 -0
- package/esm/cli/commands/doctor/check.types.d.mts.map +1 -0
- package/esm/cli/commands/doctor/checks/config.check.mjs +2 -1
- package/esm/cli/commands/doctor/checks/config.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/connectors.check.mjs +3 -1
- package/esm/cli/commands/doctor/checks/connectors.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/handler-signature.check.mjs +2 -1
- package/esm/cli/commands/doctor/checks/handler-signature.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/health.check.mjs +4 -1
- package/esm/cli/commands/doctor/checks/health.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/index.mjs +1 -1
- package/esm/cli/commands/doctor/checks/index.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/jwt-secret.check.mjs +2 -1
- package/esm/cli/commands/doctor/checks/jwt-secret.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/locales-ts-deprecated.check.mjs +2 -1
- package/esm/cli/commands/doctor/checks/locales-ts-deprecated.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/optional-peers.check.mjs +2 -1
- package/esm/cli/commands/doctor/checks/optional-peers.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs +5 -1
- package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/routes.check.mjs +4 -1
- package/esm/cli/commands/doctor/checks/routes.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/doctor-command.action.mjs +15 -7
- package/esm/cli/commands/doctor/doctor-command.action.mjs.map +1 -1
- package/esm/cli/commands/doctor/format-report.mjs +31 -3
- package/esm/cli/commands/doctor/format-report.mjs.map +1 -1
- package/esm/cli/commands/doctor/run-checks.mjs +1 -1
- package/esm/cli/commands/doctor/run-checks.mjs.map +1 -1
- package/esm/cli/commands/doctor.command.mjs +5 -1
- package/esm/cli/commands/doctor.command.mjs.map +1 -1
- package/esm/cli/commands/drop-tables.command.mjs +1 -1
- package/esm/cli/commands/drop-tables.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 +125 -125
- package/esm/cli/commands/generate/generate.command.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/column-dsl-parser.mjs +1 -1
- package/esm/cli/commands/generate/generators/column-dsl-parser.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/controller.generator.mjs +1 -1
- package/esm/cli/commands/generate/generators/controller.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/endpoint.generator.mjs +311 -0
- package/esm/cli/commands/generate/generators/endpoint.generator.mjs.map +1 -0
- package/esm/cli/commands/generate/generators/migration.generator.mjs +2 -2
- package/esm/cli/commands/generate/generators/migration.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/model.generator.mjs +2 -2
- package/esm/cli/commands/generate/generators/model.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/module.generator.mjs +1 -1
- package/esm/cli/commands/generate/generators/module.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/repository.generator.mjs +1 -1
- package/esm/cli/commands/generate/generators/repository.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/resource.generator.mjs +1 -1
- package/esm/cli/commands/generate/generators/resource.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/service.generator.mjs +1 -1
- package/esm/cli/commands/generate/generators/service.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/use-case.generator.mjs +1 -1
- package/esm/cli/commands/generate/generators/use-case.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 +20 -7
- package/esm/cli/commands/generate/templates/stubs.mjs.map +1 -1
- package/esm/cli/commands/generate/utils/endpoint-schema.mjs +137 -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/path-resolver.mjs.map +1 -1
- package/esm/cli/commands/generate/utils/prompt.mjs +1 -1
- package/esm/cli/commands/generate/utils/prompt.mjs.map +1 -1
- package/esm/cli/commands/generate/utils/writer.mjs +39 -14
- package/esm/cli/commands/generate/utils/writer.mjs.map +1 -1
- package/esm/cli/commands/inspect/inspect-command.action.mjs +72 -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/mcp/mcp-command.action.mjs +103 -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/migrate.command.mjs +1 -1
- package/esm/cli/commands/migrate.command.mjs.map +1 -1
- 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 +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 +1 -1
- package/esm/cli/commands/postman-generator.command.mjs.map +1 -1
- package/esm/cli/commands/routes/diff-page-routes.mjs +1 -1
- package/esm/cli/commands/routes/diff-page-routes.mjs.map +1 -1
- package/esm/cli/commands/routes/format-routes-table.mjs +1 -1
- package/esm/cli/commands/routes/format-routes-table.mjs.map +1 -1
- package/esm/cli/commands/routes/route-row.mjs +1 -1
- package/esm/cli/commands/routes/route-row.mjs.map +1 -1
- package/esm/cli/commands/routes/routes-command.action.mjs +1 -1
- package/esm/cli/commands/routes/routes-command.action.mjs.map +1 -1
- package/esm/cli/commands/routes/routes-diff.action.mjs +2 -2
- package/esm/cli/commands/routes/routes-diff.action.mjs.map +1 -1
- package/esm/cli/commands/routes/with-console-on-stderr.mjs +1 -1
- package/esm/cli/commands/routes/with-console-on-stderr.mjs.map +1 -1
- package/esm/cli/commands/routes.command.mjs +1 -1
- package/esm/cli/commands/routes.command.mjs.map +1 -1
- package/esm/cli/commands/seed.command.mjs +1 -1
- package/esm/cli/commands/seed.command.mjs.map +1 -1
- package/esm/cli/commands/start-production.command.mjs +1 -1
- package/esm/cli/commands/start-production.command.mjs.map +1 -1
- package/esm/cli/commands/storage-put.action.mjs +1 -1
- package/esm/cli/commands/storage-put.action.mjs.map +1 -1
- package/esm/cli/commands/storage-put.command.mjs +1 -1
- package/esm/cli/commands/storage-put.command.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/typings-generator.command.mjs +1 -1
- package/esm/cli/commands/typings-generator.command.mjs.map +1 -1
- package/esm/cli/commands/update.command.mjs +1 -1
- package/esm/cli/commands/update.command.mjs.map +1 -1
- 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/commands-loader.mjs.map +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 +24 -2
- package/esm/cli/framework-cli-commands.mjs.map +1 -1
- package/esm/cli/parse-cli-args.mjs +2 -1
- package/esm/cli/parse-cli-args.mjs.map +1 -1
- package/esm/cli/start.mjs +1 -1
- package/esm/cli/start.mjs.map +1 -1
- package/esm/cli/string-similarity.mjs +1 -1
- package/esm/cli/string-similarity.mjs.map +1 -1
- package/esm/commands/cli-command.d.mts +1 -1
- package/esm/commands/cli-command.d.mts.map +1 -1
- package/esm/commands/cli-command.mjs +1 -1
- package/esm/commands/cli-command.mjs.map +1 -1
- package/esm/commands/types.d.mts +1 -1
- package/esm/commands/types.d.mts.map +1 -1
- package/esm/config/config-getter.d.mts +1 -1
- package/esm/config/config-getter.d.mts.map +1 -1
- package/esm/config/config-getter.mjs +1 -1
- package/esm/config/config-getter.mjs.map +1 -1
- package/esm/config/config-handlers.d.mts +1 -1
- package/esm/config/config-handlers.d.mts.map +1 -1
- package/esm/config/config-handlers.mjs +1 -1
- package/esm/config/config-handlers.mjs.map +1 -1
- package/esm/config/config-key-from-path.mjs +1 -1
- package/esm/config/config-key-from-path.mjs.map +1 -1
- package/esm/config/config-loader.d.mts +1 -1
- 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-manager.mjs.map +1 -1
- package/esm/config/config-schema.d.mts +67 -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 +1 -1
- package/esm/config/config-setter.d.mts.map +1 -1
- package/esm/config/config-setter.mjs +1 -1
- package/esm/config/config-setter.mjs.map +1 -1
- package/esm/config/config-special-handlers.d.mts +1 -1
- package/esm/config/config-special-handlers.d.mts.map +1 -1
- package/esm/config/config-special-handlers.mjs +1 -1
- package/esm/config/config-special-handlers.mjs.map +1 -1
- package/esm/config/index.d.mts +6 -0
- package/esm/config/index.mjs +1 -0
- package/esm/config/load-config-files.mjs +1 -1
- package/esm/config/load-config-files.mjs.map +1 -1
- package/esm/config/locale-configuration.mjs +1 -1
- package/esm/config/locale-configuration.mjs.map +1 -1
- package/esm/config/types.d.mts +1 -1
- package/esm/config/types.d.mts.map +1 -1
- package/esm/connectors/access-connector.d.mts +1 -1
- package/esm/connectors/access-connector.d.mts.map +1 -1
- package/esm/connectors/access-connector.mjs +1 -1
- package/esm/connectors/access-connector.mjs.map +1 -1
- package/esm/connectors/ai-connector.d.mts +1 -1
- package/esm/connectors/ai-connector.d.mts.map +1 -1
- package/esm/connectors/ai-connector.mjs +1 -1
- package/esm/connectors/ai-connector.mjs.map +1 -1
- package/esm/connectors/assert-no-reserved-connector-names.d.mts +1 -1
- package/esm/connectors/assert-no-reserved-connector-names.d.mts.map +1 -1
- package/esm/connectors/assert-no-reserved-connector-names.mjs +3 -2
- package/esm/connectors/assert-no-reserved-connector-names.mjs.map +1 -1
- package/esm/connectors/assert-unique-connector-names.d.mts +1 -1
- package/esm/connectors/assert-unique-connector-names.d.mts.map +1 -1
- package/esm/connectors/assert-unique-connector-names.mjs +27 -3
- package/esm/connectors/assert-unique-connector-names.mjs.map +1 -1
- package/esm/connectors/base-connector.d.mts +1 -1
- package/esm/connectors/base-connector.d.mts.map +1 -1
- package/esm/connectors/base-connector.mjs +1 -1
- package/esm/connectors/base-connector.mjs.map +1 -1
- package/esm/connectors/cache-connector.d.mts +1 -1
- package/esm/connectors/cache-connector.d.mts.map +1 -1
- package/esm/connectors/cache-connector.mjs +1 -1
- package/esm/connectors/cache-connector.mjs.map +1 -1
- package/esm/connectors/connectors-manager.d.mts +1 -1
- 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 -1
- package/esm/connectors/database-connector.d.mts.map +1 -1
- package/esm/connectors/database-connector.mjs +1 -1
- package/esm/connectors/database-connector.mjs.map +1 -1
- package/esm/connectors/describe-server-address.mjs +1 -1
- package/esm/connectors/describe-server-address.mjs.map +1 -1
- package/esm/connectors/herald-connector.d.mts +1 -1
- package/esm/connectors/herald-connector.d.mts.map +1 -1
- package/esm/connectors/herald-connector.mjs +1 -1
- package/esm/connectors/herald-connector.mjs.map +1 -1
- package/esm/connectors/http-connector.d.mts +1 -1
- package/esm/connectors/http-connector.d.mts.map +1 -1
- package/esm/connectors/http-connector.mjs +4 -3
- package/esm/connectors/http-connector.mjs.map +1 -1
- package/esm/connectors/logger-connector.d.mts +1 -1
- package/esm/connectors/logger-connector.d.mts.map +1 -1
- package/esm/connectors/logger-connector.mjs +1 -1
- package/esm/connectors/logger-connector.mjs.map +1 -1
- package/esm/connectors/mail-connector.d.mts +1 -1
- package/esm/connectors/mail-connector.d.mts.map +1 -1
- package/esm/connectors/mail-connector.mjs +1 -1
- package/esm/connectors/mail-connector.mjs.map +1 -1
- package/esm/connectors/notifications-connector.d.mts +1 -1
- package/esm/connectors/notifications-connector.d.mts.map +1 -1
- package/esm/connectors/notifications-connector.mjs +1 -1
- package/esm/connectors/notifications-connector.mjs.map +1 -1
- package/esm/connectors/read-bound-port.mjs +1 -1
- package/esm/connectors/read-bound-port.mjs.map +1 -1
- package/esm/connectors/register-configured-connectors.d.mts +1 -1
- package/esm/connectors/register-configured-connectors.d.mts.map +1 -1
- package/esm/connectors/register-configured-connectors.mjs +1 -1
- package/esm/connectors/register-configured-connectors.mjs.map +1 -1
- package/esm/connectors/single-server-warnings.mjs +1 -1
- package/esm/connectors/single-server-warnings.mjs.map +1 -1
- package/esm/connectors/socket-connector.d.mts +1 -1
- package/esm/connectors/socket-connector.d.mts.map +1 -1
- package/esm/connectors/socket-connector.mjs +1 -1
- package/esm/connectors/socket-connector.mjs.map +1 -1
- package/esm/connectors/storage.connector.d.mts +1 -1
- package/esm/connectors/storage.connector.d.mts.map +1 -1
- package/esm/connectors/storage.connector.mjs +1 -1
- package/esm/connectors/storage.connector.mjs.map +1 -1
- package/esm/connectors/types.d.mts +1 -1
- package/esm/connectors/types.d.mts.map +1 -1
- package/esm/connectors/types.mjs +1 -1
- package/esm/connectors/types.mjs.map +1 -1
- package/esm/container/container-instance-registry.mjs +1 -1
- package/esm/container/container-instance-registry.mjs.map +1 -1
- package/esm/container/development-app-modules.d.mts +1 -1
- package/esm/container/development-app-modules.d.mts.map +1 -1
- package/esm/container/development-model-modules.d.mts +1 -1
- package/esm/container/development-model-modules.d.mts.map +1 -1
- package/esm/container/index.d.mts +1 -1
- package/esm/container/index.d.mts.map +1 -1
- package/esm/container/index.mjs +1 -1
- package/esm/container/index.mjs.map +1 -1
- package/esm/database/create-database-action.mjs +1 -1
- package/esm/database/create-database-action.mjs.map +1 -1
- package/esm/database/drop-tables-action.mjs +1 -1
- package/esm/database/drop-tables-action.mjs.map +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 +3 -39
- package/esm/database/models/database-log/database-log.d.mts.map +1 -1
- package/esm/database/models/database-log/database-log.mjs +1 -1
- package/esm/database/models/database-log/database-log.mjs.map +1 -1
- package/esm/database/pending-exit-code.mjs +1 -1
- package/esm/database/pending-exit-code.mjs.map +1 -1
- package/esm/database/resolve-pending-migrations.mjs +1 -1
- package/esm/database/resolve-pending-migrations.mjs.map +1 -1
- package/esm/database/seed-command-action.mjs +1 -1
- package/esm/database/seed-command-action.mjs.map +1 -1
- package/esm/database/seeds/seed-records-table-migration.mjs +1 -1
- package/esm/database/seeds/seed-records-table-migration.mjs.map +1 -1
- package/esm/database/seeds/seeder.d.mts +1 -1
- package/esm/database/seeds/seeder.d.mts.map +1 -1
- package/esm/database/seeds/seeder.errors.d.mts +5 -1
- package/esm/database/seeds/seeder.errors.d.mts.map +1 -1
- package/esm/database/seeds/seeder.errors.mjs +3 -1
- package/esm/database/seeds/seeder.errors.mjs.map +1 -1
- package/esm/database/seeds/seeder.mjs +1 -1
- package/esm/database/seeds/seeder.mjs.map +1 -1
- package/esm/database/seeds/seeders.manager.mjs +1 -1
- package/esm/database/seeds/seeders.manager.mjs.map +1 -1
- package/esm/database/seeds/seeds-table-migration.mjs +1 -1
- package/esm/database/seeds/seeds-table-migration.mjs.map +1 -1
- package/esm/database/seeds/types.d.mts +1 -1
- package/esm/database/seeds/types.d.mts.map +1 -1
- package/esm/database/seeds/utils.mjs +1 -1
- package/esm/database/seeds/utils.mjs.map +1 -1
- package/esm/database/utils.d.mts +1 -1
- package/esm/database/utils.d.mts.map +1 -1
- package/esm/database/utils.mjs +1 -1
- package/esm/database/utils.mjs.map +1 -1
- package/esm/dev-server/app-module-registry.mjs +1 -1
- package/esm/dev-server/app-module-registry.mjs.map +1 -1
- package/esm/dev-server/boot-precondition-error.mjs +2 -1
- package/esm/dev-server/boot-precondition-error.mjs.map +1 -1
- package/esm/dev-server/build-development-openapi-document.mjs +1 -1
- package/esm/dev-server/build-development-openapi-document.mjs.map +1 -1
- package/esm/dev-server/check-for-updates.mjs +1 -1
- package/esm/dev-server/check-for-updates.mjs.map +1 -1
- package/esm/dev-server/collect-development-api-routes.mjs +1 -1
- package/esm/dev-server/collect-development-api-routes.mjs.map +1 -1
- package/esm/dev-server/create-worker.mjs +16 -10
- package/esm/dev-server/create-worker.mjs.map +1 -1
- package/esm/dev-server/dependency-graph.d.mts +1 -1
- 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 +1 -1
- package/esm/dev-server/dev-logger.mjs.map +1 -1
- package/esm/dev-server/development-server.mjs +9 -1
- package/esm/dev-server/development-server.mjs.map +1 -1
- package/esm/dev-server/events.mjs +1 -1
- package/esm/dev-server/events.mjs.map +1 -1
- package/esm/dev-server/extract-translation-keys.mjs +1 -1
- package/esm/dev-server/extract-translation-keys.mjs.map +1 -1
- package/esm/dev-server/file-event-handler.mjs +1 -1
- package/esm/dev-server/file-event-handler.mjs.map +1 -1
- package/esm/dev-server/file-manager.d.mts +1 -1
- package/esm/dev-server/file-manager.d.mts.map +1 -1
- package/esm/dev-server/file-manager.mjs +1 -1
- package/esm/dev-server/file-manager.mjs.map +1 -1
- package/esm/dev-server/file-operations.d.mts +1 -1
- package/esm/dev-server/file-operations.d.mts.map +1 -1
- package/esm/dev-server/file-operations.mjs +1 -1
- package/esm/dev-server/file-operations.mjs.map +1 -1
- package/esm/dev-server/files-orchestrator.mjs +22 -20
- package/esm/dev-server/files-orchestrator.mjs.map +1 -1
- package/esm/dev-server/files-watcher.mjs +2 -2
- package/esm/dev-server/files-watcher.mjs.map +1 -1
- package/esm/dev-server/flags.mjs +1 -1
- package/esm/dev-server/flags.mjs.map +1 -1
- package/esm/dev-server/health-checker/checkers/base-health-checker.mjs +1 -1
- package/esm/dev-server/health-checker/checkers/base-health-checker.mjs.map +1 -1
- package/esm/dev-server/health-checker/checkers/eslint-health-checker.mjs +3 -4
- 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 +1 -1
- 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 +10 -4
- 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 +1 -1
- package/esm/dev-server/health-checker/file-health-result.d.mts.map +1 -1
- package/esm/dev-server/health-checker/file-health-result.mjs +1 -1
- package/esm/dev-server/health-checker/file-health-result.mjs.map +1 -1
- package/esm/dev-server/health-checker/files-healthcare.manager.mjs +16 -5
- package/esm/dev-server/health-checker/files-healthcare.manager.mjs.map +1 -1
- package/esm/dev-server/health-checker/oxlint-runner.mjs +302 -0
- package/esm/dev-server/health-checker/oxlint-runner.mjs.map +1 -0
- package/esm/dev-server/health-checker/workers/eslint-health.worker.mjs +1 -1
- package/esm/dev-server/health-checker/workers/eslint-health.worker.mjs.map +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.mjs +1 -1
- package/esm/dev-server/health-checker/workers/ts-health.worker.mjs.map +1 -1
- package/esm/dev-server/layer-executor.mjs +1 -1
- package/esm/dev-server/layer-executor.mjs.map +1 -1
- package/esm/dev-server/legacy-locales-warning.mjs +1 -1
- package/esm/dev-server/legacy-locales-warning.mjs.map +1 -1
- package/esm/dev-server/loader/build-transpile-init.mjs +1 -1
- package/esm/dev-server/loader/build-transpile-init.mjs.map +1 -1
- package/esm/dev-server/loader/hook-thread.d.mts +1 -1
- package/esm/dev-server/loader/hook-thread.d.mts.map +1 -1
- package/esm/dev-server/loader/hook-thread.mjs +1 -1
- package/esm/dev-server/loader/hook-thread.mjs.map +1 -1
- package/esm/dev-server/loader/load-hook.d.mts +1 -1
- package/esm/dev-server/loader/load-hook.d.mts.map +1 -1
- package/esm/dev-server/loader/load-hook.mjs +1 -1
- package/esm/dev-server/loader/load-hook.mjs.map +1 -1
- package/esm/dev-server/loader/loader-port-acks.mjs +34 -0
- package/esm/dev-server/loader/loader-port-acks.mjs.map +1 -0
- package/esm/dev-server/loader/own-resolver.mjs +1 -1
- package/esm/dev-server/loader/own-resolver.mjs.map +1 -1
- package/esm/dev-server/loader/register-loader.mjs +2 -2
- package/esm/dev-server/loader/register-loader.mjs.map +1 -1
- package/esm/dev-server/loader/resolve-capture.mjs +1 -1
- package/esm/dev-server/loader/resolve-capture.mjs.map +1 -1
- package/esm/dev-server/loader/resolve-hook.d.mts +1 -1
- package/esm/dev-server/loader/resolve-hook.d.mts.map +1 -1
- package/esm/dev-server/loader/resolve-hook.mjs +1 -1
- package/esm/dev-server/loader/resolve-hook.mjs.map +1 -1
- package/esm/dev-server/loader/source-slug.mjs +1 -1
- package/esm/dev-server/loader/source-slug.mjs.map +1 -1
- package/esm/dev-server/loader/transpile-cache.mjs +2 -2
- package/esm/dev-server/loader/transpile-cache.mjs.map +1 -1
- package/esm/dev-server/loader/version-registry.mjs +1 -1
- package/esm/dev-server/loader/version-registry.mjs.map +1 -1
- package/esm/dev-server/manifest-manager.d.mts +1 -1
- package/esm/dev-server/manifest-manager.d.mts.map +1 -1
- package/esm/dev-server/manifest-manager.mjs +1 -1
- package/esm/dev-server/manifest-manager.mjs.map +1 -1
- package/esm/dev-server/model-module-registry.mjs +1 -1
- package/esm/dev-server/model-module-registry.mjs.map +1 -1
- package/esm/dev-server/model-resource-typings.mjs +1 -1
- package/esm/dev-server/model-resource-typings.mjs.map +1 -1
- package/esm/dev-server/module-loader.mjs +2 -1
- package/esm/dev-server/module-loader.mjs.map +1 -1
- package/esm/dev-server/package-json-manager.mjs +1 -1
- package/esm/dev-server/package-json-manager.mjs.map +1 -1
- package/esm/dev-server/parse-imports.mjs +74 -7
- package/esm/dev-server/parse-imports.mjs.map +1 -1
- package/esm/dev-server/read-config-ast.mjs +1 -1
- package/esm/dev-server/read-config-ast.mjs.map +1 -1
- package/esm/dev-server/ready-block.mjs +1 -1
- package/esm/dev-server/ready-block.mjs.map +1 -1
- package/esm/dev-server/register-dev-shortcuts.mjs +1 -1
- package/esm/dev-server/register-dev-shortcuts.mjs.map +1 -1
- package/esm/dev-server/register-installed-devtools.mjs +1 -1
- package/esm/dev-server/register-installed-devtools.mjs.map +1 -1
- package/esm/dev-server/restart-dev-server.mjs +1 -1
- package/esm/dev-server/restart-dev-server.mjs.map +1 -1
- package/esm/dev-server/route-types-publisher.mjs +2 -2
- package/esm/dev-server/route-types-publisher.mjs.map +1 -1
- package/esm/dev-server/run-connector-typings.mjs +1 -1
- package/esm/dev-server/run-connector-typings.mjs.map +1 -1
- package/esm/dev-server/run-typings-generation.mjs +1 -1
- package/esm/dev-server/run-typings-generation.mjs.map +1 -1
- package/esm/dev-server/shortcuts.mjs +1 -1
- package/esm/dev-server/shortcuts.mjs.map +1 -1
- package/esm/dev-server/special-file-patterns.mjs +1 -1
- package/esm/dev-server/special-file-patterns.mjs.map +1 -1
- package/esm/dev-server/special-files-collector.d.mts +1 -1
- package/esm/dev-server/special-files-collector.d.mts.map +1 -1
- package/esm/dev-server/special-files-collector.mjs +1 -1
- package/esm/dev-server/special-files-collector.mjs.map +1 -1
- package/esm/dev-server/start-development-server.mjs +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/supervisor.mjs.map +1 -1
- package/esm/dev-server/translation-keys-sources.mjs +2 -2
- package/esm/dev-server/translation-keys-sources.mjs.map +1 -1
- package/esm/dev-server/tsconfig-manager.mjs +1 -1
- package/esm/dev-server/tsconfig-manager.mjs.map +1 -1
- package/esm/dev-server/type-generator.mjs +33 -12
- package/esm/dev-server/type-generator.mjs.map +1 -1
- package/esm/dev-server/types.d.mts +1 -1
- package/esm/dev-server/types.d.mts.map +1 -1
- package/esm/dev-server/update-check-cache.mjs +1 -1
- package/esm/dev-server/update-check-cache.mjs.map +1 -1
- package/esm/dev-server/utils.mjs +1 -1
- package/esm/dev-server/utils.mjs.map +1 -1
- package/esm/encryption/encrypt.d.mts +1 -1
- package/esm/encryption/encrypt.d.mts.map +1 -1
- package/esm/encryption/encrypt.mjs +1 -1
- package/esm/encryption/encrypt.mjs.map +1 -1
- package/esm/encryption/hash.d.mts +1 -1
- package/esm/encryption/hash.d.mts.map +1 -1
- package/esm/encryption/hash.mjs +1 -1
- package/esm/encryption/hash.mjs.map +1 -1
- package/esm/encryption/password.d.mts +1 -1
- package/esm/encryption/password.d.mts.map +1 -1
- package/esm/encryption/password.mjs +1 -1
- package/esm/encryption/password.mjs.map +1 -1
- package/esm/encryption/types.d.mts +1 -1
- package/esm/encryption/types.d.mts.map +1 -1
- package/esm/errors/container-key-missing-error.mjs +2 -1
- package/esm/errors/container-key-missing-error.mjs.map +1 -1
- package/esm/errors/error-codes.d.mts +653 -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 +2 -1
- package/esm/errors/esbuild-binary-missing-error.mjs.map +1 -1
- package/esm/errors/index.d.mts +4 -0
- package/esm/errors/index.mjs +5 -0
- package/esm/errors/unknown-locale-error.mjs +2 -1
- package/esm/errors/unknown-locale-error.mjs.map +1 -1
- package/esm/errors/warlock-error.d.mts +23 -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 +48 -9
- package/esm/generations/add-command.action.mjs.map +1 -1
- package/esm/generations/features/access.feature.mjs +2 -2
- package/esm/generations/features/access.feature.mjs.map +1 -1
- package/esm/generations/features/ai-anthropic.feature.mjs +1 -1
- package/esm/generations/features/ai-anthropic.feature.mjs.map +1 -1
- package/esm/generations/features/ai-bedrock.feature.mjs +1 -1
- package/esm/generations/features/ai-bedrock.feature.mjs.map +1 -1
- package/esm/generations/features/ai-google.feature.mjs +1 -1
- package/esm/generations/features/ai-google.feature.mjs.map +1 -1
- package/esm/generations/features/ai-ollama.feature.mjs +1 -1
- package/esm/generations/features/ai-ollama.feature.mjs.map +1 -1
- package/esm/generations/features/ai-openai.feature.mjs +1 -1
- package/esm/generations/features/ai-openai.feature.mjs.map +1 -1
- package/esm/generations/features/ai-panoptic.feature.mjs +1 -1
- package/esm/generations/features/ai-panoptic.feature.mjs.map +1 -1
- package/esm/generations/features/ai-tools.feature.mjs +1 -1
- package/esm/generations/features/ai-tools.feature.mjs.map +1 -1
- package/esm/generations/features/ai-workspace.feature.mjs +1 -1
- package/esm/generations/features/ai-workspace.feature.mjs.map +1 -1
- package/esm/generations/features/ai.feature.mjs +1 -1
- package/esm/generations/features/ai.feature.mjs.map +1 -1
- package/esm/generations/features/auth-google.feature.mjs +1 -1
- package/esm/generations/features/auth-google.feature.mjs.map +1 -1
- package/esm/generations/features/auth-passkeys.feature.mjs +1 -1
- package/esm/generations/features/auth-passkeys.feature.mjs.map +1 -1
- package/esm/generations/features/bull-board.feature.mjs +2 -2
- package/esm/generations/features/bull-board.feature.mjs.map +1 -1
- package/esm/generations/features/devtools.feature.mjs +1 -1
- package/esm/generations/features/devtools.feature.mjs.map +1 -1
- package/esm/generations/features/herald.feature.mjs +1 -1
- package/esm/generations/features/herald.feature.mjs.map +1 -1
- package/esm/generations/features/image.feature.mjs +1 -1
- package/esm/generations/features/image.feature.mjs.map +1 -1
- package/esm/generations/features/index.mjs +1 -1
- package/esm/generations/features/index.mjs.map +1 -1
- package/esm/generations/features/mail.feature.mjs +1 -1
- package/esm/generations/features/mail.feature.mjs.map +1 -1
- package/esm/generations/features/mongodb.feature.mjs +1 -1
- package/esm/generations/features/mongodb.feature.mjs.map +1 -1
- package/esm/generations/features/mysql.feature.mjs +1 -1
- package/esm/generations/features/mysql.feature.mjs.map +1 -1
- package/esm/generations/features/notifications.feature.mjs +124 -17
- package/esm/generations/features/notifications.feature.mjs.map +1 -1
- package/esm/generations/features/postgres.feature.mjs +1 -1
- package/esm/generations/features/postgres.feature.mjs.map +1 -1
- package/esm/generations/features/queue.feature.mjs +2 -2
- package/esm/generations/features/queue.feature.mjs.map +1 -1
- package/esm/generations/features/react-email.feature.mjs +2 -2
- package/esm/generations/features/react-email.feature.mjs.map +1 -1
- package/esm/generations/features/react.feature.mjs +1 -1
- package/esm/generations/features/react.feature.mjs.map +1 -1
- package/esm/generations/features/redis.feature.mjs +1 -1
- package/esm/generations/features/redis.feature.mjs.map +1 -1
- package/esm/generations/features/s3.feature.mjs +1 -1
- package/esm/generations/features/s3.feature.mjs.map +1 -1
- package/esm/generations/features/scheduler.feature.mjs +1 -1
- package/esm/generations/features/scheduler.feature.mjs.map +1 -1
- package/esm/generations/features/ses.feature.mjs +1 -1
- package/esm/generations/features/ses.feature.mjs.map +1 -1
- package/esm/generations/features/shadcn.feature.mjs +2 -2
- package/esm/generations/features/shadcn.feature.mjs.map +1 -1
- package/esm/generations/features/shared/insert-connector-entry.mjs +1 -1
- package/esm/generations/features/shared/insert-connector-entry.mjs.map +1 -1
- package/esm/generations/features/shared/insert-queue-dashboard-block.mjs +1 -1
- package/esm/generations/features/shared/insert-queue-dashboard-block.mjs.map +1 -1
- package/esm/generations/features/shared/link-ai-package-import.mjs +2 -2
- package/esm/generations/features/shared/link-ai-package-import.mjs.map +1 -1
- package/esm/generations/features/shared/merge-web-sitemap-config.mjs +1 -1
- package/esm/generations/features/shared/merge-web-sitemap-config.mjs.map +1 -1
- package/esm/generations/features/shared/migration-timestamp.mjs +1 -1
- package/esm/generations/features/shared/migration-timestamp.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/shared/resolve-contact-scaffold.mjs +1 -1
- package/esm/generations/features/shared/resolve-contact-scaffold.mjs.map +1 -1
- package/esm/generations/features/sitemap.feature.mjs +2 -2
- package/esm/generations/features/sitemap.feature.mjs.map +1 -1
- package/esm/generations/features/socket.feature.mjs +1 -1
- package/esm/generations/features/socket.feature.mjs.map +1 -1
- package/esm/generations/features/tailwind.feature.mjs +2 -2
- package/esm/generations/features/tailwind.feature.mjs.map +1 -1
- package/esm/generations/features/test.feature.mjs +12 -7
- package/esm/generations/features/test.feature.mjs.map +1 -1
- package/esm/generations/features/types.mjs +1 -1
- package/esm/generations/features/types.mjs.map +1 -1
- package/esm/generations/features/web.feature.mjs +2 -2
- 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/pnpm-build-approvals.mjs +89 -3
- package/esm/generations/pnpm-build-approvals.mjs.map +1 -1
- package/esm/generations/stubs.mjs +327 -79
- package/esm/generations/stubs.mjs.map +1 -1
- package/esm/http/boot-port-preflight.d.mts +1 -1
- package/esm/http/boot-port-preflight.d.mts.map +1 -1
- package/esm/http/boot-port-preflight.mjs +1 -1
- 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 +1 -1
- package/esm/http/build-cors-options.mjs.map +1 -1
- package/esm/http/build-rate-limit-options.d.mts +35 -1
- package/esm/http/build-rate-limit-options.d.mts.map +1 -1
- package/esm/http/build-rate-limit-options.mjs +7 -1
- package/esm/http/build-rate-limit-options.mjs.map +1 -1
- package/esm/http/conditional-request.d.mts +86 -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 +1 -1
- package/esm/http/config.d.mts.map +1 -1
- package/esm/http/config.mjs +1 -1
- package/esm/http/config.mjs.map +1 -1
- package/esm/http/context/request-context.d.mts +1 -1
- package/esm/http/context/request-context.d.mts.map +1 -1
- package/esm/http/context/request-context.mjs +1 -1
- package/esm/http/context/request-context.mjs.map +1 -1
- package/esm/http/context/request-memo.d.mts +1 -1
- package/esm/http/context/request-memo.d.mts.map +1 -1
- package/esm/http/context/request-memo.mjs +1 -1
- package/esm/http/context/request-memo.mjs.map +1 -1
- package/esm/http/createHttpApplication.d.mts +1 -1
- package/esm/http/createHttpApplication.d.mts.map +1 -1
- package/esm/http/createHttpApplication.mjs +1 -1
- package/esm/http/createHttpApplication.mjs.map +1 -1
- package/esm/http/csp.d.mts +3 -1
- package/esm/http/csp.d.mts.map +1 -1
- package/esm/http/csp.mjs +2 -1
- package/esm/http/csp.mjs.map +1 -1
- package/esm/http/csrf-default-guard.d.mts +1 -1
- 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 +1 -1
- package/esm/http/csrf-origin-policy.d.mts.map +1 -1
- package/esm/http/csrf-origin-policy.mjs +1 -1
- package/esm/http/csrf-origin-policy.mjs.map +1 -1
- package/esm/http/database/RequestLog.d.mts +27 -135
- package/esm/http/database/RequestLog.d.mts.map +1 -1
- package/esm/http/database/RequestLog.mjs +1 -1
- package/esm/http/database/RequestLog.mjs.map +1 -1
- package/esm/http/error-codes.d.mts +1 -1
- package/esm/http/error-codes.d.mts.map +1 -1
- package/esm/http/error-codes.mjs +1 -1
- package/esm/http/error-codes.mjs.map +1 -1
- package/esm/http/error-mapper.d.mts +48 -0
- package/esm/http/error-mapper.d.mts.map +1 -0
- package/esm/http/error-mapper.mjs +48 -0
- package/esm/http/error-mapper.mjs.map +1 -0
- package/esm/http/errors/errors.d.mts +3 -1
- package/esm/http/errors/errors.d.mts.map +1 -1
- package/esm/http/errors/errors.mjs +2 -1
- package/esm/http/errors/errors.mjs.map +1 -1
- package/esm/http/escape-header-value.d.mts +18 -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 +1 -1
- package/esm/http/events.d.mts.map +1 -1
- package/esm/http/events.mjs +1 -1
- package/esm/http/events.mjs.map +1 -1
- package/esm/http/flush-pending-cookies.mjs +1 -1
- package/esm/http/flush-pending-cookies.mjs.map +1 -1
- package/esm/http/health.d.mts +1 -1
- package/esm/http/health.d.mts.map +1 -1
- package/esm/http/health.mjs +1 -1
- package/esm/http/health.mjs.map +1 -1
- package/esm/http/index.d.mts +13 -6
- package/esm/http/index.mjs +12 -6
- 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 +1 -1
- package/esm/http/middleware/cache-response-middleware.d.mts.map +1 -1
- package/esm/http/middleware/cache-response-middleware.mjs +1 -1
- package/esm/http/middleware/cache-response-middleware.mjs.map +1 -1
- package/esm/http/middleware/concurrency-limit.middleware.d.mts +1 -1
- package/esm/http/middleware/concurrency-limit.middleware.d.mts.map +1 -1
- package/esm/http/middleware/concurrency-limit.middleware.mjs +1 -1
- package/esm/http/middleware/concurrency-limit.middleware.mjs.map +1 -1
- package/esm/http/middleware/idempotency.middleware.d.mts +1 -1
- package/esm/http/middleware/idempotency.middleware.d.mts.map +1 -1
- package/esm/http/middleware/idempotency.middleware.mjs +1 -1
- package/esm/http/middleware/idempotency.middleware.mjs.map +1 -1
- package/esm/http/middleware/inject-request-context.d.mts +1 -1
- package/esm/http/middleware/inject-request-context.d.mts.map +1 -1
- package/esm/http/middleware/inject-request-context.mjs +4 -2
- package/esm/http/middleware/inject-request-context.mjs.map +1 -1
- package/esm/http/middleware/ip-filter.middleware.d.mts +1 -1
- package/esm/http/middleware/ip-filter.middleware.d.mts.map +1 -1
- package/esm/http/middleware/ip-filter.middleware.mjs +1 -1
- package/esm/http/middleware/ip-filter.middleware.mjs.map +1 -1
- package/esm/http/middleware/maintenance.middleware.d.mts +1 -1
- package/esm/http/middleware/maintenance.middleware.d.mts.map +1 -1
- package/esm/http/middleware/maintenance.middleware.mjs +1 -1
- package/esm/http/middleware/maintenance.middleware.mjs.map +1 -1
- package/esm/http/middleware/max-body-size.middleware.d.mts +1 -1
- package/esm/http/middleware/max-body-size.middleware.d.mts.map +1 -1
- package/esm/http/middleware/max-body-size.middleware.mjs +1 -1
- package/esm/http/middleware/max-body-size.middleware.mjs.map +1 -1
- package/esm/http/middleware/middleware-list.d.mts +1 -1
- package/esm/http/middleware/middleware-list.d.mts.map +1 -1
- package/esm/http/middleware/middleware-list.mjs +1 -1
- package/esm/http/middleware/middleware-list.mjs.map +1 -1
- package/esm/http/middleware/rate-limit.middleware.d.mts +20 -5
- package/esm/http/middleware/rate-limit.middleware.d.mts.map +1 -1
- package/esm/http/middleware/rate-limit.middleware.mjs +34 -12
- package/esm/http/middleware/rate-limit.middleware.mjs.map +1 -1
- package/esm/http/middleware/utils/cidr-match.d.mts +1 -1
- package/esm/http/middleware/utils/cidr-match.d.mts.map +1 -1
- package/esm/http/middleware/utils/cidr-match.mjs +1 -1
- package/esm/http/middleware/utils/cidr-match.mjs.map +1 -1
- package/esm/http/middleware/utils/idempotency-key.d.mts +1 -1
- package/esm/http/middleware/utils/idempotency-key.d.mts.map +1 -1
- package/esm/http/middleware/utils/idempotency-key.mjs +1 -1
- package/esm/http/middleware/utils/idempotency-key.mjs.map +1 -1
- package/esm/http/middleware/utils/parse-size.d.mts +1 -1
- package/esm/http/middleware/utils/parse-size.d.mts.map +1 -1
- package/esm/http/middleware/utils/parse-size.mjs +1 -1
- package/esm/http/middleware/utils/parse-size.mjs.map +1 -1
- package/esm/http/parse-urlencoded-body.mjs +1 -1
- package/esm/http/parse-urlencoded-body.mjs.map +1 -1
- package/esm/http/plugins.d.mts +9 -2
- package/esm/http/plugins.d.mts.map +1 -1
- package/esm/http/plugins.mjs +23 -6
- package/esm/http/plugins.mjs.map +1 -1
- package/esm/http/port-preflight.d.mts +1 -1
- package/esm/http/port-preflight.d.mts.map +1 -1
- package/esm/http/port-preflight.mjs +1 -1
- package/esm/http/port-preflight.mjs.map +1 -1
- package/esm/http/rate-limit-cache-store.mjs +156 -0
- package/esm/http/rate-limit-cache-store.mjs.map +1 -0
- package/esm/http/ready-report.d.mts +1 -1
- package/esm/http/ready-report.d.mts.map +1 -1
- package/esm/http/ready-report.mjs +1 -1
- package/esm/http/ready-report.mjs.map +1 -1
- package/esm/http/request-controller.d.mts +1 -1
- package/esm/http/request-controller.d.mts.map +1 -1
- package/esm/http/request-controller.mjs +1 -1
- package/esm/http/request-controller.mjs.map +1 -1
- package/esm/http/request-log-snapshot.d.mts +130 -0
- package/esm/http/request-log-snapshot.d.mts.map +1 -0
- package/esm/http/request-log-snapshot.mjs +220 -0
- package/esm/http/request-log-snapshot.mjs.map +1 -0
- package/esm/http/request.d.mts +43 -4
- package/esm/http/request.d.mts.map +1 -1
- package/esm/http/request.mjs +70 -6
- package/esm/http/request.mjs.map +1 -1
- package/esm/http/resolve-bind-port.mjs +1 -1
- package/esm/http/resolve-bind-port.mjs.map +1 -1
- package/esm/http/response.d.mts +51 -9
- package/esm/http/response.d.mts.map +1 -1
- package/esm/http/response.mjs +301 -101
- package/esm/http/response.mjs.map +1 -1
- package/esm/http/safe-redirect.d.mts +51 -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 +1 -1
- package/esm/http/serialized.d.mts.map +1 -1
- package/esm/http/server-rebuilt.d.mts +1 -1
- package/esm/http/server-rebuilt.d.mts.map +1 -1
- package/esm/http/server-rebuilt.mjs +1 -1
- package/esm/http/server-rebuilt.mjs.map +1 -1
- package/esm/http/server.d.mts +36 -6
- package/esm/http/server.d.mts.map +1 -1
- package/esm/http/server.mjs +80 -5
- package/esm/http/server.mjs.map +1 -1
- package/esm/http/stream-react-response.d.mts +1 -1
- package/esm/http/stream-react-response.d.mts.map +1 -1
- package/esm/http/stream-react-response.mjs +1 -1
- package/esm/http/stream-react-response.mjs.map +1 -1
- package/esm/http/stream-transport.mjs +77 -0
- package/esm/http/stream-transport.mjs.map +1 -0
- package/esm/http/tracing/trace-id.d.mts +1 -1
- package/esm/http/tracing/trace-id.d.mts.map +1 -1
- package/esm/http/tracing/trace-id.mjs +1 -1
- package/esm/http/tracing/trace-id.mjs.map +1 -1
- package/esm/http/tracing/tracing-dispatcher.d.mts +1 -1
- package/esm/http/tracing/tracing-dispatcher.d.mts.map +1 -1
- package/esm/http/tracing/tracing-dispatcher.mjs +1 -1
- package/esm/http/tracing/tracing-dispatcher.mjs.map +1 -1
- package/esm/http/tracing/tracing.type.d.mts +1 -1
- package/esm/http/tracing/tracing.type.d.mts.map +1 -1
- package/esm/http/types.d.mts +165 -7
- package/esm/http/types.d.mts.map +1 -1
- package/esm/http/uploaded-file.d.mts +2 -2
- package/esm/http/uploaded-file.d.mts.map +1 -1
- package/esm/http/uploaded-file.mjs +2 -2
- package/esm/http/uploaded-file.mjs.map +1 -1
- package/esm/http/uploads/detect-image-format.mjs +1 -1
- package/esm/http/uploads/detect-image-format.mjs.map +1 -1
- package/esm/http/uploads/generate-image-variant.mjs +2 -2
- package/esm/http/uploads/generate-image-variant.mjs.map +1 -1
- package/esm/http/uploads/generate-image-variants.d.mts +11 -8
- package/esm/http/uploads/generate-image-variants.d.mts.map +1 -1
- package/esm/http/uploads/generate-image-variants.mjs +75 -30
- 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 +185 -0
- package/esm/http/uploads/image-variant-cache.mjs.map +1 -0
- package/esm/http/uploads/image-variant-types.d.mts +3 -1
- package/esm/http/uploads/image-variant-types.d.mts.map +1 -1
- package/esm/http/uploads/image-variants-config-error.d.mts +4 -2
- package/esm/http/uploads/image-variants-config-error.d.mts.map +1 -1
- package/esm/http/uploads/image-variants-config-error.mjs +4 -3
- package/esm/http/uploads/image-variants-config-error.mjs.map +1 -1
- package/esm/http/uploads/index.d.mts +3 -1
- package/esm/http/uploads/index.mjs +3 -1
- package/esm/http/uploads/is-path-inside.mjs +1 -1
- package/esm/http/uploads/is-path-inside.mjs.map +1 -1
- package/esm/http/uploads/load-variant-source.mjs +2 -2
- package/esm/http/uploads/load-variant-source.mjs.map +1 -1
- package/esm/http/uploads/local-disk-root.mjs +24 -0
- package/esm/http/uploads/local-disk-root.mjs.map +1 -0
- 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 +37 -0
- package/esm/http/uploads/purge-image-variants.d.mts.map +1 -0
- package/esm/http/uploads/purge-image-variants.mjs +46 -0
- package/esm/http/uploads/purge-image-variants.mjs.map +1 -0
- package/esm/http/uploads/read-file-head.mjs +1 -1
- package/esm/http/uploads/read-file-head.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 +72 -0
- package/esm/http/uploads/resolve-image-variant.d.mts.map +1 -0
- package/esm/http/uploads/resolve-image-variant.mjs +99 -0
- package/esm/http/uploads/resolve-image-variant.mjs.map +1 -0
- package/esm/http/uploads/resolve-image-variants-config.mjs +6 -4
- package/esm/http/uploads/resolve-image-variants-config.mjs.map +1 -1
- package/esm/http/uploads/resolve-inline-image-content-type.mjs +1 -1
- package/esm/http/uploads/resolve-inline-image-content-type.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/resolve-upload-path.mjs +3 -2
- package/esm/http/uploads/resolve-upload-path.mjs.map +1 -1
- package/esm/http/uploads/resolve-variant-candidate.mjs +1 -1
- package/esm/http/uploads/resolve-variant-candidate.mjs.map +1 -1
- package/esm/http/uploads/single-flight.mjs +1 -1
- package/esm/http/uploads/single-flight.mjs.map +1 -1
- 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 +27 -7
- package/esm/http/uploads/uploaded-file.controller.d.mts.map +1 -1
- package/esm/http/uploads/uploaded-file.controller.mjs +72 -92
- package/esm/http/uploads/uploaded-file.controller.mjs.map +1 -1
- package/esm/http/uploads/variant-cache-key.mjs +31 -6
- package/esm/http/uploads/variant-cache-key.mjs.map +1 -1
- package/esm/http/uploads/variant-generations.mjs +1 -1
- package/esm/http/uploads/variant-generations.mjs.map +1 -1
- package/esm/http/uploads-config.d.mts +1 -1
- package/esm/http/uploads-config.d.mts.map +1 -1
- package/esm/http/uploads-config.mjs +1 -1
- package/esm/http/uploads-config.mjs.map +1 -1
- package/esm/http/uploads-types.d.mts +7 -3
- package/esm/http/uploads-types.d.mts.map +1 -1
- package/esm/http/xmlable.d.mts +1 -1
- package/esm/http/xmlable.d.mts.map +1 -1
- package/esm/image/image.d.mts +1 -1
- package/esm/image/image.d.mts.map +1 -1
- package/esm/image/image.mjs +1 -1
- package/esm/image/image.mjs.map +1 -1
- package/esm/index.d.mts +27 -12
- package/esm/index.mjs +23 -9
- package/esm/loader/app-module-importer.d.mts +1 -1
- package/esm/loader/app-module-importer.d.mts.map +1 -1
- package/esm/loader/app-module-importer.mjs +1 -1
- package/esm/loader/app-module-importer.mjs.map +1 -1
- package/esm/localization/parse-locale-dictionary.d.mts +3 -1
- 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 +1 -1
- package/esm/localization/register-locale-dictionary.d.mts.map +1 -1
- package/esm/localization/register-locale-dictionary.mjs +1 -1
- package/esm/localization/register-locale-dictionary.mjs.map +1 -1
- package/esm/logger/fatal-visibility.d.mts +1 -1
- package/esm/logger/fatal-visibility.d.mts.map +1 -1
- package/esm/logger/fatal-visibility.mjs +1 -1
- package/esm/logger/fatal-visibility.mjs.map +1 -1
- package/esm/logger/logger.d.mts +1 -1
- package/esm/logger/logger.d.mts.map +1 -1
- package/esm/logger/logger.mjs +1 -1
- package/esm/logger/logger.mjs.map +1 -1
- package/esm/logger/types.d.mts +1 -1
- package/esm/logger/types.d.mts.map +1 -1
- package/esm/mail/config.d.mts +13 -2
- package/esm/mail/config.d.mts.map +1 -1
- package/esm/mail/config.mjs +17 -2
- package/esm/mail/config.mjs.map +1 -1
- package/esm/mail/events.d.mts +1 -1
- package/esm/mail/events.d.mts.map +1 -1
- package/esm/mail/events.mjs +1 -1
- package/esm/mail/events.mjs.map +1 -1
- package/esm/mail/index.d.mts +1 -1
- package/esm/mail/index.mjs +1 -1
- package/esm/mail/mail.d.mts +1 -1
- package/esm/mail/mail.d.mts.map +1 -1
- package/esm/mail/mail.mjs +1 -1
- package/esm/mail/mail.mjs.map +1 -1
- package/esm/mail/mailer-pool.d.mts +1 -1
- package/esm/mail/mailer-pool.d.mts.map +1 -1
- package/esm/mail/mailer-pool.mjs +1 -1
- package/esm/mail/mailer-pool.mjs.map +1 -1
- package/esm/mail/react-mail.d.mts +1 -1
- package/esm/mail/react-mail.d.mts.map +1 -1
- package/esm/mail/react-mail.mjs +1 -1
- package/esm/mail/react-mail.mjs.map +1 -1
- package/esm/mail/send-mail.d.mts +1 -1
- package/esm/mail/send-mail.d.mts.map +1 -1
- package/esm/mail/send-mail.mjs +7 -7
- package/esm/mail/send-mail.mjs.map +1 -1
- package/esm/mail/test-mailbox.d.mts +1 -1
- package/esm/mail/test-mailbox.d.mts.map +1 -1
- package/esm/mail/test-mailbox.mjs +1 -1
- package/esm/mail/test-mailbox.mjs.map +1 -1
- package/esm/mail/types.d.mts +1 -1
- package/esm/mail/types.d.mts.map +1 -1
- package/esm/mail/types.mjs +1 -1
- package/esm/mail/types.mjs.map +1 -1
- package/esm/manifest/manifest-manager.mjs +1 -1
- package/esm/manifest/manifest-manager.mjs.map +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 +1 -1
- package/esm/openapi/build-openapi-document.d.mts.map +1 -1
- package/esm/openapi/build-openapi-document.mjs +9 -6
- package/esm/openapi/build-openapi-document.mjs.map +1 -1
- package/esm/openapi/cast-schema.mjs +1 -1
- package/esm/openapi/cast-schema.mjs.map +1 -1
- package/esm/openapi/collect-openapi-document.mjs +1 -1
- package/esm/openapi/collect-openapi-document.mjs.map +1 -1
- package/esm/openapi/development-openapi-provider.d.mts +1 -1
- package/esm/openapi/development-openapi-provider.d.mts.map +1 -1
- package/esm/openapi/development-openapi-provider.mjs +1 -1
- package/esm/openapi/development-openapi-provider.mjs.map +1 -1
- package/esm/openapi/error-responses.mjs +29 -3
- package/esm/openapi/error-responses.mjs.map +1 -1
- package/esm/openapi/openapi-child-output.mjs +1 -1
- package/esm/openapi/openapi-child-output.mjs.map +1 -1
- package/esm/openapi/openapi-protocol.mjs +1 -1
- package/esm/openapi/openapi-protocol.mjs.map +1 -1
- package/esm/openapi/paths.mjs +1 -1
- package/esm/openapi/paths.mjs.map +1 -1
- package/esm/openapi/postman/build-request-body.mjs +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 +1 -1
- package/esm/openapi/postman/build-saved-responses.mjs.map +1 -1
- package/esm/openapi/postman/example-from-schema.d.mts +1 -1
- package/esm/openapi/postman/example-from-schema.d.mts.map +1 -1
- package/esm/openapi/postman/example-from-schema.mjs +1 -1
- package/esm/openapi/postman/example-from-schema.mjs.map +1 -1
- package/esm/openapi/postman/http-status-text.mjs +1 -1
- package/esm/openapi/postman/http-status-text.mjs.map +1 -1
- package/esm/openapi/postman/openapi-to-postman-collection.d.mts +1 -1
- package/esm/openapi/postman/openapi-to-postman-collection.d.mts.map +1 -1
- package/esm/openapi/postman/openapi-to-postman-collection.mjs +1 -1
- package/esm/openapi/postman/openapi-to-postman-collection.mjs.map +1 -1
- package/esm/openapi/postman/postman-types.d.mts +1 -1
- package/esm/openapi/postman/postman-types.d.mts.map +1 -1
- package/esm/openapi/postman/resolve-operation-auth.mjs +1 -1
- package/esm/openapi/postman/resolve-operation-auth.mjs.map +1 -1
- package/esm/openapi/postman/schema-refs.d.mts +1 -1
- package/esm/openapi/postman/schema-refs.d.mts.map +1 -1
- package/esm/openapi/postman/schema-refs.mjs +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 +1 -1
- package/esm/openapi/request-schemas.mjs.map +1 -1
- package/esm/openapi/response-schemas.mjs +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 +1 -1
- 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 +4 -3
- package/esm/openapi/types.d.mts.map +1 -1
- package/esm/production/assert-dist-ready-to-start.mjs +1 -1
- package/esm/production/assert-dist-ready-to-start.mjs.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-app-production.mjs +1 -1
- package/esm/production/build-app-production.mjs.map +1 -1
- package/esm/production/build-contributions.mjs +1 -1
- package/esm/production/build-contributions.mjs.map +1 -1
- package/esm/production/bundle-framework-dependencies.mjs +1 -1
- package/esm/production/bundle-framework-dependencies.mjs.map +1 -1
- package/esm/production/dist-build-manifest.mjs +1 -1
- package/esm/production/dist-build-manifest.mjs.map +1 -1
- package/esm/production/esbuild-plugins.mjs +1 -1
- package/esm/production/esbuild-plugins.mjs.map +1 -1
- package/esm/production/esbuild-preflight.mjs +1 -1
- package/esm/production/esbuild-preflight.mjs.map +1 -1
- package/esm/production/production-builder.mjs +13 -5
- package/esm/production/production-builder.mjs.map +1 -1
- package/esm/production/production-supervisor.mjs +1 -1
- package/esm/production/production-supervisor.mjs.map +1 -1
- package/esm/production/promote-dist.mjs +1 -1
- package/esm/production/promote-dist.mjs.map +1 -1
- package/esm/production/registration-child-runner.mjs +1 -1
- package/esm/production/registration-child-runner.mjs.map +1 -1
- package/esm/production/resolve-build-config.d.mts +1 -1
- 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.mjs +1 -1
- package/esm/production/route-registration-child.mjs.map +1 -1
- package/esm/production/route-registration-snapshot.mjs +1 -1
- package/esm/production/route-registration-snapshot.mjs.map +1 -1
- package/esm/production/tsconfig-path-aliases.mjs +1 -1
- package/esm/production/tsconfig-path-aliases.mjs.map +1 -1
- package/esm/react/index.d.mts +1 -1
- package/esm/react/index.d.mts.map +1 -1
- package/esm/react/index.mjs +1 -1
- package/esm/react/index.mjs.map +1 -1
- package/esm/repositories/adapters/cascade/cascade-adapter.d.mts +1 -1
- package/esm/repositories/adapters/cascade/cascade-adapter.d.mts.map +1 -1
- package/esm/repositories/adapters/cascade/cascade-adapter.mjs +1 -1
- package/esm/repositories/adapters/cascade/cascade-adapter.mjs.map +1 -1
- package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts +1 -1
- package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts.map +1 -1
- package/esm/repositories/adapters/cascade/cascade-query-builder.mjs +1 -1
- package/esm/repositories/adapters/cascade/cascade-query-builder.mjs.map +1 -1
- package/esm/repositories/adapters/cascade/filter-applicator.mjs +1 -1
- package/esm/repositories/adapters/cascade/filter-applicator.mjs.map +1 -1
- package/esm/repositories/contracts/query-builder.contract.d.mts +1 -1
- package/esm/repositories/contracts/query-builder.contract.d.mts.map +1 -1
- package/esm/repositories/contracts/repository-adapter.contract.d.mts +1 -1
- package/esm/repositories/contracts/repository-adapter.contract.d.mts.map +1 -1
- package/esm/repositories/contracts/types.d.mts +1 -1
- package/esm/repositories/contracts/types.d.mts.map +1 -1
- package/esm/repositories/repository.manager.d.mts +1 -1
- package/esm/repositories/repository.manager.d.mts.map +1 -1
- package/esm/repositories/repository.manager.mjs +1 -1
- package/esm/repositories/repository.manager.mjs.map +1 -1
- package/esm/resource/define-resource.d.mts +1 -1
- package/esm/resource/define-resource.d.mts.map +1 -1
- package/esm/resource/define-resource.mjs +1 -1
- package/esm/resource/define-resource.mjs.map +1 -1
- package/esm/resource/nullable-resource.d.mts +1 -1
- package/esm/resource/nullable-resource.d.mts.map +1 -1
- package/esm/resource/nullable-resource.mjs +1 -1
- package/esm/resource/nullable-resource.mjs.map +1 -1
- package/esm/resource/register-resource.d.mts +1 -1
- package/esm/resource/register-resource.d.mts.map +1 -1
- package/esm/resource/register-resource.mjs +1 -1
- package/esm/resource/register-resource.mjs.map +1 -1
- package/esm/resource/resource-field-builder.d.mts +1 -1
- package/esm/resource/resource-field-builder.d.mts.map +1 -1
- package/esm/resource/resource-field-builder.mjs +1 -1
- package/esm/resource/resource-field-builder.mjs.map +1 -1
- package/esm/resource/resource.d.mts +1 -1
- package/esm/resource/resource.d.mts.map +1 -1
- package/esm/resource/resource.mjs +1 -1
- package/esm/resource/resource.mjs.map +1 -1
- package/esm/resource/types.d.mts +1 -1
- package/esm/resource/types.d.mts.map +1 -1
- package/esm/restful/restful.d.mts +6 -6
- package/esm/restful/restful.d.mts.map +1 -1
- package/esm/restful/restful.mjs +1 -1
- package/esm/restful/restful.mjs.map +1 -1
- package/esm/router/build-route-rate-limit.mjs +1 -1
- package/esm/router/build-route-rate-limit.mjs.map +1 -1
- package/esm/router/describe-route-for-log.mjs +1 -1
- package/esm/router/describe-route-for-log.mjs.map +1 -1
- package/esm/router/dev-dispatch.mjs +32 -13
- package/esm/router/dev-dispatch.mjs.map +1 -1
- package/esm/router/index.d.mts +4 -2
- package/esm/router/index.mjs +2 -0
- package/esm/router/log-request-lifecycle.mjs +1 -1
- package/esm/router/log-request-lifecycle.mjs.map +1 -1
- package/esm/router/named-api-routes-with-responses.mjs +1 -1
- package/esm/router/named-api-routes-with-responses.mjs.map +1 -1
- package/esm/router/normalize-request-path.d.mts +1 -1
- package/esm/router/normalize-request-path.d.mts.map +1 -1
- package/esm/router/normalize-request-path.mjs +1 -1
- package/esm/router/normalize-request-path.mjs.map +1 -1
- package/esm/router/normalize-route-path.d.mts +1 -1
- package/esm/router/normalize-route-path.d.mts.map +1 -1
- package/esm/router/normalize-route-path.mjs +1 -1
- package/esm/router/normalize-route-path.mjs.map +1 -1
- package/esm/router/positional-handler-diagnostics.d.mts +1 -1
- package/esm/router/positional-handler-diagnostics.d.mts.map +1 -1
- package/esm/router/positional-handler-diagnostics.mjs +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/response-schema-types.mjs +1 -1
- package/esm/router/response-schema-types.mjs.map +1 -1
- package/esm/router/route-builder.d.mts +1 -1
- package/esm/router/route-builder.d.mts.map +1 -1
- package/esm/router/route-builder.mjs +1 -1
- package/esm/router/route-builder.mjs.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 +1 -1
- package/esm/router/route-name-method-suffix.d.mts.map +1 -1
- package/esm/router/route-name-method-suffix.mjs +1 -1
- package/esm/router/route-name-method-suffix.mjs.map +1 -1
- package/esm/router/route-name-taken-error.d.mts +14 -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 -1
- package/esm/router/route-registry.d.mts.map +1 -1
- package/esm/router/route-registry.mjs +1 -1
- package/esm/router/route-registry.mjs.map +1 -1
- package/esm/router/router.d.mts +35 -9
- package/esm/router/router.d.mts.map +1 -1
- package/esm/router/router.mjs +78 -40
- package/esm/router/router.mjs.map +1 -1
- package/esm/router/types.d.mts +150 -18
- package/esm/router/types.d.mts.map +1 -1
- package/esm/router/unguarded-route-diagnostics.d.mts +40 -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/types.d.mts +1 -1
- package/esm/socket/types.d.mts.map +1 -1
- package/esm/socket/utils.d.mts +1 -1
- package/esm/socket/utils.d.mts.map +1 -1
- package/esm/socket/utils.mjs +1 -1
- package/esm/socket/utils.mjs.map +1 -1
- package/esm/storage/config.d.mts +1 -1
- package/esm/storage/config.d.mts.map +1 -1
- package/esm/storage/config.mjs +1 -1
- package/esm/storage/config.mjs.map +1 -1
- package/esm/storage/context/storage-driver-context.d.mts +1 -1
- package/esm/storage/context/storage-driver-context.d.mts.map +1 -1
- package/esm/storage/context/storage-driver-context.mjs +1 -1
- package/esm/storage/context/storage-driver-context.mjs.map +1 -1
- package/esm/storage/drivers/cloud-driver.d.mts +1 -1
- package/esm/storage/drivers/cloud-driver.d.mts.map +1 -1
- package/esm/storage/drivers/cloud-driver.mjs +1 -1
- package/esm/storage/drivers/cloud-driver.mjs.map +1 -1
- package/esm/storage/drivers/do-spaces-driver.d.mts +1 -1
- package/esm/storage/drivers/do-spaces-driver.d.mts.map +1 -1
- package/esm/storage/drivers/do-spaces-driver.mjs +1 -1
- package/esm/storage/drivers/do-spaces-driver.mjs.map +1 -1
- package/esm/storage/drivers/local-driver.d.mts +12 -1
- package/esm/storage/drivers/local-driver.d.mts.map +1 -1
- package/esm/storage/drivers/local-driver.mjs +33 -1
- package/esm/storage/drivers/local-driver.mjs.map +1 -1
- package/esm/storage/drivers/r2-driver.d.mts +1 -1
- package/esm/storage/drivers/r2-driver.d.mts.map +1 -1
- package/esm/storage/drivers/r2-driver.mjs +1 -1
- package/esm/storage/drivers/r2-driver.mjs.map +1 -1
- package/esm/storage/drivers/s3-driver.d.mts +1 -1
- package/esm/storage/drivers/s3-driver.d.mts.map +1 -1
- package/esm/storage/drivers/s3-driver.mjs +1 -1
- package/esm/storage/drivers/s3-driver.mjs.map +1 -1
- package/esm/storage/index.d.mts +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 +1 -1
- package/esm/storage/scoped-storage.d.mts.map +1 -1
- package/esm/storage/scoped-storage.mjs +1 -1
- package/esm/storage/scoped-storage.mjs.map +1 -1
- package/esm/storage/storage-file.d.mts +1 -1
- package/esm/storage/storage-file.d.mts.map +1 -1
- package/esm/storage/storage-file.mjs +1 -1
- package/esm/storage/storage-file.mjs.map +1 -1
- package/esm/storage/storage.d.mts +17 -3
- package/esm/storage/storage.d.mts.map +1 -1
- package/esm/storage/storage.mjs +23 -1
- package/esm/storage/storage.mjs.map +1 -1
- package/esm/storage/types.d.mts +3 -2
- package/esm/storage/types.d.mts.map +1 -1
- package/esm/storage/utils/classify-ip-address.d.mts +1 -1
- package/esm/storage/utils/classify-ip-address.d.mts.map +1 -1
- package/esm/storage/utils/classify-ip-address.mjs +1 -1
- package/esm/storage/utils/classify-ip-address.mjs.map +1 -1
- package/esm/storage/utils/contain-path.d.mts +1 -1
- package/esm/storage/utils/contain-path.d.mts.map +1 -1
- package/esm/storage/utils/contain-path.mjs +1 -1
- package/esm/storage/utils/contain-path.mjs.map +1 -1
- package/esm/storage/utils/mime.d.mts +1 -1
- package/esm/storage/utils/mime.d.mts.map +1 -1
- package/esm/storage/utils/mime.mjs +1 -1
- package/esm/storage/utils/mime.mjs.map +1 -1
- package/esm/storage/utils/safe-fetch.d.mts +1 -1
- package/esm/storage/utils/safe-fetch.d.mts.map +1 -1
- package/esm/storage/utils/safe-fetch.mjs +1 -1
- package/esm/storage/utils/safe-fetch.mjs.map +1 -1
- package/esm/storage/utils/storage-capability-error.d.mts +1 -1
- package/esm/storage/utils/storage-capability-error.d.mts.map +1 -1
- package/esm/storage/utils/storage-capability-error.mjs +1 -1
- package/esm/storage/utils/storage-capability-error.mjs.map +1 -1
- package/esm/storage/utils/storage-error.d.mts +1 -1
- package/esm/storage/utils/storage-error.d.mts.map +1 -1
- package/esm/storage/utils/storage-error.mjs +1 -1
- package/esm/storage/utils/storage-error.mjs.map +1 -1
- package/esm/storage/utils/storage-not-initialized-error.d.mts +3 -1
- package/esm/storage/utils/storage-not-initialized-error.d.mts.map +1 -1
- package/esm/storage/utils/storage-not-initialized-error.mjs +2 -1
- package/esm/storage/utils/storage-not-initialized-error.mjs.map +1 -1
- package/esm/tests/authenticated-test-client.d.mts +32 -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 +59 -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 +29 -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 +32 -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 +13 -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 +22 -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 +8 -0
- package/esm/tests/fakes/index.mjs +10 -0
- package/esm/tests/fakes/mail-fake.d.mts +41 -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 +48 -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 +31 -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 +39 -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 +14 -2
- package/esm/tests/index.mjs +15 -2
- package/esm/tests/snapshot-response.d.mts +34 -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 +23 -1
- package/esm/tests/start-http-development-server.d.mts.map +1 -1
- package/esm/tests/start-http-development-server.mjs +37 -4
- package/esm/tests/start-http-development-server.mjs.map +1 -1
- package/esm/tests/test-connectors-selection.d.mts +1 -1
- package/esm/tests/test-connectors-selection.d.mts.map +1 -1
- package/esm/tests/test-connectors-selection.mjs +1 -1
- package/esm/tests/test-connectors-selection.mjs.map +1 -1
- package/esm/tests/test-helpers.d.mts +21 -2
- package/esm/tests/test-helpers.d.mts.map +1 -1
- package/esm/tests/test-helpers.mjs +41 -28
- package/esm/tests/test-helpers.mjs.map +1 -1
- package/esm/tests/test-http-server.d.mts +62 -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/test-lifecycle-state.mjs.map +1 -1
- package/esm/tests/test-server-port-channel.mjs +1 -1
- package/esm/tests/test-server-port-channel.mjs.map +1 -1
- package/esm/tests/test-setup-timeout.mjs +1 -1
- package/esm/tests/test-setup-timeout.mjs.map +1 -1
- package/esm/tests/vitest-setup.d.mts +12 -1
- package/esm/tests/vitest-setup.d.mts.map +1 -1
- package/esm/tests/vitest-setup.mjs +13 -5
- package/esm/tests/vitest-setup.mjs.map +1 -1
- package/esm/tooling/agents-md/agents-md-markers.d.mts +27 -0
- package/esm/tooling/agents-md/agents-md-markers.d.mts.map +1 -0
- package/esm/tooling/agents-md/agents-md-markers.mjs +59 -0
- package/esm/tooling/agents-md/agents-md-markers.mjs.map +1 -0
- package/esm/tooling/agents-md/agents-md-refresher.d.mts +36 -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 +30 -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 +33 -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 +33 -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 +31 -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 +109 -0
- package/esm/tooling/board/board.d.mts.map +1 -0
- package/esm/tooling/board/board.mjs +406 -0
- package/esm/tooling/board/board.mjs.map +1 -0
- package/esm/tooling/board/board.types.d.mts +72 -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 +33 -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 +62 -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 +34 -0
- package/esm/tooling/check/conventions-step.d.mts.map +1 -0
- package/esm/tooling/check/conventions-step.mjs +184 -0
- package/esm/tooling/check/conventions-step.mjs.map +1 -0
- package/esm/tooling/check/environment-step.d.mts +18 -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.d.mts +8 -0
- package/esm/tooling/check/index.mjs +10 -0
- package/esm/tooling/check/lint-step.d.mts +19 -0
- package/esm/tooling/check/lint-step.d.mts.map +1 -0
- package/esm/tooling/check/lint-step.mjs +111 -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 +35 -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 +48 -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 +648 -0
- package/esm/tooling/check/security-conventions.mjs.map +1 -0
- package/esm/tooling/check/source-ast.mjs +195 -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 +34 -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 +39 -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 +91 -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 +78 -0
- package/esm/tooling/generate/generation.d.mts.map +1 -0
- package/esm/tooling/generate/generation.mjs +123 -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 +40 -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 +37 -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 +41 -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 +9 -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 +10 -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 +7 -0
- package/esm/tooling/inspect/index.mjs +7 -0
- package/esm/tooling/inspect/inspect-app.d.mts +53 -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 +15 -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 +196 -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 +26 -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 +49 -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 +72 -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 +62 -0
- package/esm/tooling/mcp/load-ai-tools.d.mts.map +1 -0
- package/esm/tooling/mcp/load-ai-tools.mjs +44 -0
- package/esm/tooling/mcp/load-ai-tools.mjs.map +1 -0
- package/esm/tooling/mcp/mcp-tools.d.mts +60 -0
- package/esm/tooling/mcp/mcp-tools.d.mts.map +1 -0
- package/esm/tooling/mcp/mcp-tools.mjs +513 -0
- package/esm/tooling/mcp/mcp-tools.mjs.map +1 -0
- package/esm/tooling/mcp/start-mcp-server.d.mts +56 -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 +45 -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/trace/trace-report.types.d.mts +71 -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 +83 -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.d.mts +1 -0
- package/esm/tooling/typecheck/index.mjs +3 -0
- package/esm/tooling/typecheck/run-typecheck.d.mts +59 -0
- package/esm/tooling/typecheck/run-typecheck.d.mts.map +1 -0
- package/esm/tooling/typecheck/run-typecheck.mjs +153 -0
- package/esm/tooling/typecheck/run-typecheck.mjs.map +1 -0
- package/esm/updater/package-manager.mjs +1 -1
- package/esm/updater/package-manager.mjs.map +1 -1
- package/esm/updater/update-warlock-packages.mjs +1 -1
- 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 +48 -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/types.d.mts +1 -1
- package/esm/use-cases/types.d.mts.map +1 -1
- package/esm/use-cases/use-case-broadcast.d.mts +1 -1
- package/esm/use-cases/use-case-broadcast.d.mts.map +1 -1
- package/esm/use-cases/use-case-broadcast.mjs +1 -1
- package/esm/use-cases/use-case-broadcast.mjs.map +1 -1
- package/esm/use-cases/use-case-events.d.mts +1 -1
- package/esm/use-cases/use-case-events.d.mts.map +1 -1
- package/esm/use-cases/use-case-events.mjs +1 -1
- package/esm/use-cases/use-case-events.mjs.map +1 -1
- package/esm/use-cases/use-case-pipeline.d.mts +1 -1
- package/esm/use-cases/use-case-pipeline.d.mts.map +1 -1
- package/esm/use-cases/use-case-pipeline.mjs +1 -1
- package/esm/use-cases/use-case-pipeline.mjs.map +1 -1
- package/esm/use-cases/use-case.d.mts +1 -1
- package/esm/use-cases/use-case.d.mts.map +1 -1
- package/esm/use-cases/use-case.errors.d.mts +1 -1
- package/esm/use-cases/use-case.errors.d.mts.map +1 -1
- package/esm/use-cases/use-case.errors.mjs +1 -1
- package/esm/use-cases/use-case.errors.mjs.map +1 -1
- package/esm/use-cases/use-case.mjs +1 -1
- package/esm/use-cases/use-case.mjs.map +1 -1
- package/esm/use-cases/use-cases-registry.d.mts +1 -1
- package/esm/use-cases/use-cases-registry.d.mts.map +1 -1
- package/esm/use-cases/use-cases-registry.mjs +1 -1
- package/esm/use-cases/use-cases-registry.mjs.map +1 -1
- package/esm/utils/app-log.d.mts +6 -6
- package/esm/utils/app-log.d.mts.map +1 -1
- package/esm/utils/app-log.mjs +1 -1
- package/esm/utils/app-log.mjs.map +1 -1
- package/esm/utils/clock.d.mts +33 -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 +1 -1
- package/esm/utils/database-log.d.mts.map +1 -1
- package/esm/utils/database-log.mjs +1 -1
- package/esm/utils/database-log.mjs.map +1 -1
- package/esm/utils/detect-environment-overrides.mjs +1 -1
- package/esm/utils/detect-environment-overrides.mjs.map +1 -1
- package/esm/utils/environment.d.mts +1 -1
- package/esm/utils/environment.d.mts.map +1 -1
- package/esm/utils/environment.mjs +1 -1
- package/esm/utils/environment.mjs.map +1 -1
- package/esm/utils/framework-vesion.mjs +2 -2
- package/esm/utils/framework-vesion.mjs.map +1 -1
- package/esm/utils/get-localized.d.mts +1 -1
- package/esm/utils/get-localized.d.mts.map +1 -1
- package/esm/utils/get-localized.mjs +1 -1
- package/esm/utils/get-localized.mjs.map +1 -1
- package/esm/utils/ids.d.mts +32 -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 +3 -0
- package/esm/utils/index.mjs +3 -0
- package/esm/utils/is-test-file.mjs +1 -1
- package/esm/utils/is-test-file.mjs.map +1 -1
- package/esm/utils/load-environment.mjs +1 -1
- package/esm/utils/load-environment.mjs.map +1 -1
- package/esm/utils/normalized-path.d.mts +1 -1
- package/esm/utils/normalized-path.d.mts.map +1 -1
- package/esm/utils/normalized-path.mjs +1 -1
- package/esm/utils/normalized-path.mjs.map +1 -1
- package/esm/utils/npm-registry.d.mts +1 -1
- package/esm/utils/npm-registry.d.mts.map +1 -1
- package/esm/utils/npm-registry.mjs +1 -1
- package/esm/utils/npm-registry.mjs.map +1 -1
- package/esm/utils/paths.d.mts +1 -1
- package/esm/utils/paths.d.mts.map +1 -1
- package/esm/utils/paths.mjs +1 -1
- package/esm/utils/paths.mjs.map +1 -1
- package/esm/utils/promise-all-object.d.mts +1 -1
- package/esm/utils/promise-all-object.d.mts.map +1 -1
- package/esm/utils/promise-all-object.mjs +1 -1
- package/esm/utils/promise-all-object.mjs.map +1 -1
- package/esm/utils/queue.d.mts +1 -1
- package/esm/utils/queue.d.mts.map +1 -1
- package/esm/utils/queue.mjs +1 -1
- package/esm/utils/queue.mjs.map +1 -1
- package/esm/utils/recorded-environment-overrides.mjs +1 -1
- package/esm/utils/recorded-environment-overrides.mjs.map +1 -1
- package/esm/utils/report-environment-overrides.mjs +1 -1
- package/esm/utils/report-environment-overrides.mjs.map +1 -1
- package/esm/utils/runtime.d.mts +59 -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 -1
- package/esm/utils/sleep.d.mts.map +1 -1
- package/esm/utils/sleep.mjs +1 -1
- package/esm/utils/sleep.mjs.map +1 -1
- package/esm/utils/sluggable.d.mts +1 -1
- package/esm/utils/sluggable.d.mts.map +1 -1
- package/esm/utils/sluggable.mjs +1 -1
- package/esm/utils/sluggable.mjs.map +1 -1
- package/esm/utils/to-json.d.mts +1 -1
- package/esm/utils/to-json.d.mts.map +1 -1
- package/esm/utils/to-json.mjs +1 -1
- package/esm/utils/to-json.mjs.map +1 -1
- package/esm/utils/types.d.mts +1 -1
- package/esm/utils/types.d.mts.map +1 -1
- package/esm/utils/urls.d.mts +1 -1
- package/esm/utils/urls.d.mts.map +1 -1
- package/esm/utils/urls.mjs +1 -1
- package/esm/utils/urls.mjs.map +1 -1
- package/esm/utils/version-compare.d.mts +1 -1
- package/esm/utils/version-compare.d.mts.map +1 -1
- package/esm/utils/version-compare.mjs +1 -1
- package/esm/utils/version-compare.mjs.map +1 -1
- package/esm/validation/database/exists-except-current-id.d.mts +1 -1
- package/esm/validation/database/exists-except-current-id.d.mts.map +1 -1
- package/esm/validation/database/exists-except-current-id.mjs +1 -1
- package/esm/validation/database/exists-except-current-id.mjs.map +1 -1
- package/esm/validation/database/exists-except-current-user.d.mts +1 -1
- package/esm/validation/database/exists-except-current-user.d.mts.map +1 -1
- package/esm/validation/database/exists-except-current-user.mjs +1 -1
- package/esm/validation/database/exists-except-current-user.mjs.map +1 -1
- package/esm/validation/database/types.d.mts +1 -1
- package/esm/validation/database/types.d.mts.map +1 -1
- package/esm/validation/database/unique-except-current-id.d.mts +1 -1
- package/esm/validation/database/unique-except-current-id.d.mts.map +1 -1
- package/esm/validation/database/unique-except-current-id.mjs +1 -1
- package/esm/validation/database/unique-except-current-id.mjs.map +1 -1
- package/esm/validation/database/unique-except-current-user.d.mts +1 -1
- package/esm/validation/database/unique-except-current-user.d.mts.map +1 -1
- package/esm/validation/database/unique-except-current-user.mjs +1 -1
- package/esm/validation/database/unique-except-current-user.mjs.map +1 -1
- package/esm/validation/file/file.d.mts +1 -1
- package/esm/validation/file/file.d.mts.map +1 -1
- package/esm/validation/file/file.mjs +1 -1
- package/esm/validation/file/file.mjs.map +1 -1
- package/esm/validation/index.d.mts +1 -1
- package/esm/validation/init.mjs +1 -1
- package/esm/validation/init.mjs.map +1 -1
- package/esm/validation/plugins/database-plugin.mjs +1 -1
- package/esm/validation/plugins/database-plugin.mjs.map +1 -1
- package/esm/validation/plugins/file-plugin.mjs +1 -1
- package/esm/validation/plugins/file-plugin.mjs.map +1 -1
- package/esm/validation/plugins/localized-plugin.mjs +1 -1
- package/esm/validation/plugins/localized-plugin.mjs.map +1 -1
- package/esm/validation/types.d.mts +58 -3
- package/esm/validation/types.d.mts.map +1 -1
- package/esm/validation/validateAll.mjs +20 -3
- 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 +28 -41
- package/esm/validation/validators/file-validator.d.mts.map +1 -1
- package/esm/validation/validators/file-validator.mjs +4 -1
- package/esm/validation/validators/file-validator.mjs.map +1 -1
- package/esm/vite/lower-stage3-decorators.d.mts +1 -1
- package/esm/vite/lower-stage3-decorators.d.mts.map +1 -1
- package/esm/vite/lower-stage3-decorators.mjs +1 -1
- package/esm/vite/lower-stage3-decorators.mjs.map +1 -1
- package/esm/warlock-config/bundle-config.mjs +148 -0
- package/esm/warlock-config/bundle-config.mjs.map +1 -0
- package/esm/warlock-config/default-configurations.mjs +1 -1
- package/esm/warlock-config/default-configurations.mjs.map +1 -1
- package/esm/warlock-config/define-config.d.mts +1 -1
- package/esm/warlock-config/define-config.d.mts.map +1 -1
- package/esm/warlock-config/define-config.mjs +1 -1
- package/esm/warlock-config/define-config.mjs.map +1 -1
- package/esm/warlock-config/index.d.mts +1 -1
- package/esm/warlock-config/index.mjs +1 -1
- package/esm/warlock-config/normalize-build-config.mjs +1 -1
- package/esm/warlock-config/normalize-build-config.mjs.map +1 -1
- package/esm/warlock-config/types.d.mts +28 -4
- package/esm/warlock-config/types.d.mts.map +1 -1
- package/esm/warlock-config/warlock-config.manager.d.mts +32 -7
- package/esm/warlock-config/warlock-config.manager.d.mts.map +1 -1
- package/esm/warlock-config/warlock-config.manager.mjs +94 -18
- package/esm/warlock-config/warlock-config.manager.mjs.map +1 -1
- package/esm/warlock-config/warn-deprecated-config.mjs +1 -1
- package/esm/warlock-config/warn-deprecated-config.mjs.map +1 -1
- package/llms-full.txt +3271 -784
- package/llms.txt +16 -6
- package/package.json +51 -14
- 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 +129 -14
- package/skills/create-controller/SKILL.md +29 -12
- package/skills/create-module/SKILL.md +3 -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 +26 -7
- package/skills/index.md +9 -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 +119 -10
- 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 +111 -20
- package/skills/send-response/SKILL.md +189 -16
- package/skills/store-file/SKILL.md +97 -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 +413 -0
- package/skills/upload-file/SKILL.md +31 -33
- package/skills/use-app-context/SKILL.md +38 -31
- package/skills/use-middleware/SKILL.md +46 -26
- package/skills/use-model-transformers/SKILL.md +37 -28
- package/skills/use-repository/SKILL.md +2 -2
- package/skills/validate-input/SKILL.md +73 -29
- package/skills/warlock-agents-md/SKILL.md +96 -0
- package/skills/warlock-board/SKILL.md +123 -0
- package/skills/warlock-check/SKILL.md +132 -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 @@
|
|
|
1
|
+
{"version":3,"file":"board.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/tooling/board/board.ts"],"sourcesContent":["import {\n existsSync,\n mkdirSync,\n readdirSync,\n readFileSync,\n renameSync,\n writeFileSync,\n} from \"node:fs\";\nimport path from \"node:path\";\nimport { WarlockError } from \"../../errors/warlock-error\";\nimport { formatBoardMessage, parseBoardMessage } from \"./board-message\";\nimport {\n BOARD_DIRECTORY,\n BOARD_TRANSITIONS,\n type BoardInbox,\n type BoardItem,\n type BoardMessage,\n type BoardState,\n type BoardStatus,\n type BoardVerdict,\n isBoardState,\n} from \"./board.types\";\n\n/** Agent names: lower-case letters, digits and dashes, starting with a letter or digit. */\nconst AGENT_NAME = /^[a-z0-9][a-z0-9-]*$/;\n\n/** How many sequence numbers a writer tries before giving up on a contended slot. */\nconst MAX_ALLOCATION_ATTEMPTS = 1000;\n\n/** The marker file `init` writes; its presence is what \"initialized\" means. */\nconst BOARD_FILE = \"board.json\";\n\n/** What `initBoard` did. */\nexport type InitBoardResult = {\n /** The board directory, relative to the project root. */\n directory: string;\n /** `false` when the board already existed. */\n created: boolean;\n /** Whether `.warlock/board/` was added to `.gitignore` by this call. */\n gitignoreUpdated: boolean;\n};\n\n/** Inputs of {@link addBoardItem}. */\nexport type AddBoardItemInput = {\n title: string;\n assignee?: string | null;\n reviewer?: string | null;\n /** The agent creating it, recorded in the history. */\n by?: string | null;\n /** Clock, for tests. */\n now?: () => Date;\n};\n\n/** Inputs of {@link moveBoardItem}. */\nexport type MoveBoardItemOptions = {\n by?: string | null;\n note?: string | null;\n now?: () => Date;\n};\n\n/** Inputs of {@link sendBoardMessage}. */\nexport type SendBoardMessageInput = {\n to: string;\n from: string;\n subject: string;\n body?: string;\n /** The item the message is about. */\n item?: number | null;\n /** A review verdict; with `item`, also moves the item to that state. */\n verdict?: BoardVerdict | null;\n now?: () => Date;\n};\n\n/** What {@link sendBoardMessage} wrote. */\nexport type SendBoardMessageResult = {\n message: BoardMessage;\n /** The item after the verdict moved it, when the message carried one. */\n item: BoardItem | null;\n};\n\n/** Inputs of {@link watchBoard}. */\nexport type WatchBoardOptions = {\n agent: string;\n /** Return messages numbered above this. Default: the agent's cursor. */\n since?: number;\n /** Give up after this long; throws `WL7404`. Default: 10 minutes. */\n timeoutMs?: number;\n /** Poll interval. Default: 250 ms. */\n intervalMs?: number;\n /** Stop early (resolves with no messages). */\n signal?: AbortSignal;\n};\n\n/** What {@link watchBoard} returned. */\nexport type WatchBoardResult = {\n agent: string;\n /** The new messages, oldest first. */\n messages: BoardMessage[];\n /** The agent's cursor after the call. */\n cursor: number;\n};\n\nfunction boardRoot(cwd: string): string {\n return path.join(cwd, BOARD_DIRECTORY);\n}\n\nfunction toPosix(value: string): string {\n return value.split(path.sep).join(\"/\");\n}\n\nfunction pad(value: number): string {\n return String(value).padStart(4, \"0\");\n}\n\n/** A file-name slug: lower-case, dashes, at most 48 characters. */\nexport function boardSlug(value: string, fallback: string): string {\n const slug = value\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\")\n .slice(0, 48)\n .replace(/-+$/g, \"\");\n\n return slug.length > 0 ? slug : fallback;\n}\n\n/** Throw unless `name` is a valid agent name. */\nexport function assertAgentName(name: string, label = \"agent\"): void {\n if (!AGENT_NAME.test(name)) {\n throw new Error(\n `Invalid ${label} name ${JSON.stringify(name)}: use lower-case letters, digits and dashes (e.g. \"reviewer\").`,\n );\n }\n}\n\nfunction isErrnoException(error: unknown): error is NodeJS.ErrnoException {\n return error instanceof Error && \"code\" in error;\n}\n\n/** Write a file through a temp file and a rename, so a reader never sees half of it. */\nfunction writeAtomic(file: string, content: string): void {\n const temporary = `${file}.${process.pid}.${Date.now()}.tmp`;\n\n writeFileSync(temporary, content, \"utf8\");\n renameSync(temporary, file);\n}\n\n/** The `NNNN` numbers of the files in a directory named `NNNN-…`. */\nfunction numberedEntries(directory: string, extension: string): { number: number; name: string }[] {\n if (!existsSync(directory)) return [];\n\n return readdirSync(directory)\n .filter((name) => !name.startsWith(\".\") && name.endsWith(extension))\n .flatMap((name) => {\n const match = /^(\\d+)-/.exec(name);\n return match?.[1] ? [{ number: Number.parseInt(match[1], 10), name }] : [];\n })\n .sort((first, second) => first.number - second.number);\n}\n\n/**\n * Reserve the next free sequence number in `directory` by creating\n * `.seq/NNNN` exclusively (`wx`). Two writers racing for the same number:\n * one gets `EEXIST` and moves on to the next, so numbers are never shared.\n */\nfunction reserveNumber(directory: string, start: number): number {\n const sequence = path.join(directory, \".seq\");\n\n mkdirSync(sequence, { recursive: true });\n\n for (let number = start, attempt = 0; attempt < MAX_ALLOCATION_ATTEMPTS; number++, attempt++) {\n try {\n writeFileSync(path.join(sequence, pad(number)), \"\", { flag: \"wx\" });\n return number;\n } catch (error) {\n if (isErrnoException(error) && error.code === \"EEXIST\") continue;\n throw error;\n }\n }\n\n throw new Error(`Could not allocate a sequence number in ${directory}.`);\n}\n\nfunction nextNumber(directory: string, extension: string): number {\n const entries = numberedEntries(directory, extension);\n const highest = entries[entries.length - 1]?.number ?? 0;\n\n return reserveNumber(directory, highest + 1);\n}\n\n/** Throw `WL7401` unless the board exists. */\nfunction assertInitialized(cwd: string): string {\n const root = boardRoot(cwd);\n\n if (!existsSync(path.join(root, BOARD_FILE))) {\n throw new WarlockError(\n \"WL7401\",\n `No agent board in ${BOARD_DIRECTORY}. Run \\`warlock board init\\` at the project root.`,\n );\n }\n\n return root;\n}\n\n/** Whether a `.gitignore` already ignores the board folder (or `.warlock` as a whole). */\nexport function gitignoreCoversBoard(content: string): boolean {\n const covering = new Set([\n \".warlock\",\n \".warlock/\",\n \"/.warlock\",\n \"/.warlock/\",\n \".warlock/*\",\n \"/.warlock/*\",\n \".warlock/board\",\n \".warlock/board/\",\n \"/.warlock/board\",\n \"/.warlock/board/\",\n ]);\n\n return content.split(/\\r?\\n/).some((line) => covering.has(line.trim()));\n}\n\n/**\n * Create the board (idempotent): `.warlock/board/` with its `board.json`\n * marker, `items/`, and `.warlock/board/` in `.gitignore` unless the project\n * already ignores it. A `.gitignore` is created when there is none.\n */\nexport function initBoard(\n cwd = process.cwd(),\n now: () => Date = () => new Date(),\n): InitBoardResult {\n const root = boardRoot(cwd);\n const marker = path.join(root, BOARD_FILE);\n const created = !existsSync(marker);\n\n mkdirSync(path.join(root, \"items\"), { recursive: true });\n mkdirSync(path.join(root, \"cursors\"), { recursive: true });\n\n if (created) {\n writeAtomic(\n marker,\n `${JSON.stringify({ schemaVersion: 1, createdAt: now().toISOString() }, null, 2)}\\n`,\n );\n }\n\n const gitignore = path.join(cwd, \".gitignore\");\n const current = existsSync(gitignore) ? readFileSync(gitignore, \"utf8\") : \"\";\n let gitignoreUpdated = false;\n\n if (!gitignoreCoversBoard(current)) {\n const separator = current.length === 0 || current.endsWith(\"\\n\") ? \"\" : \"\\n\";\n\n writeFileSync(\n gitignore,\n `${current}${separator}${current.length > 0 ? \"\\n\" : \"\"}# Agent board (warlock board)\\n${BOARD_DIRECTORY}/\\n`,\n \"utf8\",\n );\n gitignoreUpdated = true;\n }\n\n return { directory: BOARD_DIRECTORY, created, gitignoreUpdated };\n}\n\nfunction parseItem(value: unknown): BoardItem | undefined {\n if (typeof value !== \"object\" || value === null) return undefined;\n\n const id = Reflect.get(value, \"id\");\n const title = Reflect.get(value, \"title\");\n const state = Reflect.get(value, \"state\");\n\n if (typeof id !== \"number\" || typeof title !== \"string\") return undefined;\n if (typeof state !== \"string\" || !isBoardState(state)) return undefined;\n\n const text = (key: string): string | null => {\n const field = Reflect.get(value, key);\n return typeof field === \"string\" ? field : null;\n };\n const history = Reflect.get(value, \"history\");\n\n return {\n id,\n title,\n state,\n assignee: text(\"assignee\"),\n reviewer: text(\"reviewer\"),\n createdAt: text(\"createdAt\") ?? \"\",\n updatedAt: text(\"updatedAt\") ?? \"\",\n history: Array.isArray(history)\n ? history.flatMap((entry: unknown) => {\n if (typeof entry !== \"object\" || entry === null) return [];\n\n const from = Reflect.get(entry, \"from\");\n const to = Reflect.get(entry, \"to\");\n const by = Reflect.get(entry, \"by\");\n const at = Reflect.get(entry, \"at\");\n const note = Reflect.get(entry, \"note\");\n\n if (typeof to !== \"string\" || !isBoardState(to)) return [];\n\n return [\n {\n from: typeof from === \"string\" && isBoardState(from) ? from : null,\n to,\n by: typeof by === \"string\" ? by : null,\n at: typeof at === \"string\" ? at : \"\",\n note: typeof note === \"string\" ? note : null,\n },\n ];\n })\n : [],\n };\n}\n\nfunction itemFile(root: string, id: number): string | undefined {\n const entry = numberedEntries(path.join(root, \"items\"), \".json\").find(\n (candidate) => candidate.number === id,\n );\n\n return entry ? path.join(root, \"items\", entry.name) : undefined;\n}\n\n/** Every item, by id. Throws `WL7401` when the board does not exist. */\nexport function listBoardItems(cwd = process.cwd()): BoardItem[] {\n const root = assertInitialized(cwd);\n const directory = path.join(root, \"items\");\n\n return numberedEntries(directory, \".json\").flatMap(({ name }) => {\n try {\n const item = parseItem(JSON.parse(readFileSync(path.join(directory, name), \"utf8\")));\n return item ? [item] : [];\n } catch {\n return [];\n }\n });\n}\n\n/** One item. Throws `WL7402` for an unknown id. */\nexport function readBoardItem(id: number, cwd = process.cwd()): BoardItem {\n const root = assertInitialized(cwd);\n const file = itemFile(root, id);\n const item = file ? parseItem(JSON.parse(readFileSync(file, \"utf8\"))) : undefined;\n\n if (!item) {\n throw new WarlockError(\n \"WL7402\",\n `Board item ${id} does not exist. Run \\`warlock board status\\` to list the items.`,\n );\n }\n\n return item;\n}\n\n/** Add an item in state `todo`, with a fresh id no other writer can take. */\nexport function addBoardItem(input: AddBoardItemInput, cwd = process.cwd()): BoardItem {\n const root = assertInitialized(cwd);\n const title = input.title.replace(/[\\r\\n]+/g, \" \").trim();\n\n if (title.length === 0) throw new Error(\"A board item needs a title.\");\n\n for (const [label, name] of [\n [\"assignee\", input.assignee],\n [\"reviewer\", input.reviewer],\n [\"by\", input.by],\n ] as const) {\n if (name) assertAgentName(name, label);\n }\n\n const directory = path.join(root, \"items\");\n const id = nextNumber(directory, \".json\");\n const at = (input.now ?? (() => new Date()))().toISOString();\n const item: BoardItem = {\n id,\n title,\n state: \"todo\",\n assignee: input.assignee ?? null,\n reviewer: input.reviewer ?? null,\n createdAt: at,\n updatedAt: at,\n history: [{ from: null, to: \"todo\", by: input.by ?? null, at, note: null }],\n };\n\n writeAtomic(\n path.join(directory, `${pad(id)}-${boardSlug(title, \"item\")}.json`),\n `${JSON.stringify(item, null, 2)}\\n`,\n );\n\n return item;\n}\n\n/** The states an item in `state` may move to. */\nexport function nextBoardStates(state: BoardState): readonly BoardState[] {\n return BOARD_TRANSITIONS[state];\n}\n\n/** Throw `WL7403` unless `from → to` is in {@link BOARD_TRANSITIONS}. */\nexport function assertBoardTransition(id: number, from: BoardState, to: BoardState): void {\n if (!BOARD_TRANSITIONS[from].includes(to)) {\n throw new WarlockError(\n \"WL7403\",\n `Board item ${id} is \"${from}\" and cannot move to \"${to}\". Allowed next states: ${BOARD_TRANSITIONS[from].join(\", \")}.`,\n );\n }\n}\n\n/**\n * Move an item to another state, recording who moved it and why. Throws\n * `WL7402` for an unknown id and `WL7403` for a move the state machine does\n * not allow.\n */\nexport function moveBoardItem(\n id: number,\n to: BoardState,\n options: MoveBoardItemOptions = {},\n cwd = process.cwd(),\n): BoardItem {\n const root = assertInitialized(cwd);\n const item = readBoardItem(id, cwd);\n const file = itemFile(root, id);\n\n if (options.by) assertAgentName(options.by, \"by\");\n\n assertBoardTransition(id, item.state, to);\n\n const at = (options.now ?? (() => new Date()))().toISOString();\n const moved: BoardItem = {\n ...item,\n state: to,\n updatedAt: at,\n history: [\n ...item.history,\n { from: item.state, to, by: options.by ?? null, at, note: options.note ?? null },\n ],\n };\n\n if (file) writeAtomic(file, `${JSON.stringify(moved, null, 2)}\\n`);\n\n return moved;\n}\n\nfunction inboxDirectory(root: string, agent: string): string {\n return path.join(root, `to-${agent}`);\n}\n\n/**\n * Write a message to `to-<agent>/NNNN-<slug>.md`. Messages are append-only:\n * the number is reserved exclusively and the file is created with `wx`, so it\n * is never rewritten. A verdict with an `item` also moves the item to\n * `approved` / `changes-requested` — before the message is written, so a\n * refused move (`WL7403`) leaves no message behind.\n */\nexport function sendBoardMessage(\n input: SendBoardMessageInput,\n cwd = process.cwd(),\n): SendBoardMessageResult {\n const root = assertInitialized(cwd);\n\n assertAgentName(input.to, \"recipient\");\n assertAgentName(input.from, \"sender\");\n\n const subject = input.subject.replace(/[\\r\\n]+/g, \" \").trim();\n\n if (subject.length === 0) throw new Error(\"A board message needs a subject.\");\n\n const itemId = input.item ?? null;\n const verdict = input.verdict ?? null;\n const now = input.now ?? (() => new Date());\n\n if (itemId !== null) readBoardItem(itemId, cwd);\n\n const item =\n itemId !== null && verdict !== null\n ? moveBoardItem(itemId, verdict, { by: input.from, note: subject, now }, cwd)\n : null;\n\n const directory = inboxDirectory(root, input.to);\n\n mkdirSync(directory, { recursive: true });\n\n const number = nextNumber(directory, \".md\");\n const at = now().toISOString();\n const name = `${pad(number)}-${boardSlug(subject, \"message\")}.md`;\n const file = path.join(directory, name);\n\n writeFileSync(\n file,\n formatBoardMessage(\n { from: input.from, to: input.to, item: itemId, subject, at },\n input.body ?? \"\",\n verdict,\n ),\n { encoding: \"utf8\", flag: \"wx\" },\n );\n\n return {\n message: {\n number,\n file: toPosix(path.relative(cwd, file)),\n from: input.from,\n to: input.to,\n item: itemId,\n subject,\n at,\n body: (input.body ?? \"\").replace(/\\s+$/, \"\"),\n verdict,\n },\n item,\n };\n}\n\n/** The messages in an agent's inbox numbered above `since`, oldest first. */\nexport function listBoardMessages(\n agent: string,\n options: { since?: number } = {},\n cwd = process.cwd(),\n): BoardMessage[] {\n const root = assertInitialized(cwd);\n\n assertAgentName(agent);\n\n const directory = inboxDirectory(root, agent);\n const since = options.since ?? 0;\n\n return numberedEntries(directory, \".md\")\n .filter((entry) => entry.number > since)\n .map(({ number, name }) => {\n const file = path.join(directory, name);\n const parsed = parseBoardMessage(readFileSync(file, \"utf8\"));\n\n return {\n number,\n file: toPosix(path.relative(cwd, file)),\n from: parsed.from,\n to: parsed.to || agent,\n item: parsed.item,\n subject: parsed.subject,\n at: parsed.at,\n body: parsed.body,\n verdict: parsed.verdict,\n };\n });\n}\n\n/** The highest message number `watch` has returned to `agent` (0 when none). */\nexport function readBoardCursor(agent: string, cwd = process.cwd()): number {\n const root = assertInitialized(cwd);\n\n assertAgentName(agent);\n\n const file = path.join(root, \"cursors\", agent);\n\n if (!existsSync(file)) return 0;\n\n const value = Number.parseInt(readFileSync(file, \"utf8\").trim(), 10);\n\n return Number.isInteger(value) && value > 0 ? value : 0;\n}\n\n/** Record that `agent` has seen messages up to `number`. Never moves the cursor back. */\nexport function writeBoardCursor(agent: string, number: number, cwd = process.cwd()): number {\n const root = assertInitialized(cwd);\n const current = readBoardCursor(agent, cwd);\n const next = Math.max(current, number);\n\n if (next !== current) {\n mkdirSync(path.join(root, \"cursors\"), { recursive: true });\n writeAtomic(path.join(root, \"cursors\", agent), `${next}\\n`);\n }\n\n return next;\n}\n\n/** Every item and every inbox with its message count, cursor and unread count. */\nexport function readBoardStatus(cwd = process.cwd()): BoardStatus {\n const root = assertInitialized(cwd);\n const inboxes: BoardInbox[] = readdirSync(root, { withFileTypes: true })\n .filter((entry) => entry.isDirectory() && entry.name.startsWith(\"to-\"))\n .map((entry) => entry.name.slice(3))\n .filter((agent) => /^[a-z0-9][a-z0-9-]*$/.test(agent))\n .sort()\n .map((agent) => {\n const numbers = numberedEntries(inboxDirectory(root, agent), \".md\").map(\n (entry) => entry.number,\n );\n const cursor = readBoardCursor(agent, cwd);\n\n return {\n agent,\n messages: numbers.length,\n cursor,\n unread: numbers.filter((number) => number > cursor).length,\n };\n });\n\n return { schemaVersion: 1, items: listBoardItems(cwd), inboxes };\n}\n\n/**\n * Block until `agent` has a message numbered above `since` (default: its\n * cursor), then return every such message and advance the cursor past them.\n *\n * Polls the inbox every `intervalMs`; throws `WL7404` when `timeoutMs` passes\n * first. An aborted `signal` resolves with no messages.\n */\nexport async function watchBoard(\n options: WatchBoardOptions,\n cwd = process.cwd(),\n): Promise<WatchBoardResult> {\n assertInitialized(cwd);\n assertAgentName(options.agent);\n\n const since = options.since ?? readBoardCursor(options.agent, cwd);\n const timeoutMs = options.timeoutMs ?? 10 * 60 * 1000;\n const intervalMs = options.intervalMs ?? 250;\n const deadline = Date.now() + timeoutMs;\n\n for (;;) {\n const messages = listBoardMessages(options.agent, { since }, cwd);\n\n if (messages.length > 0) {\n const newest = messages[messages.length - 1]?.number ?? since;\n\n return {\n agent: options.agent,\n messages,\n cursor: writeBoardCursor(options.agent, newest, cwd),\n };\n }\n\n if (options.signal?.aborted) {\n return { agent: options.agent, messages: [], cursor: readBoardCursor(options.agent, cwd) };\n }\n\n const remaining = deadline - Date.now();\n\n if (remaining <= 0) {\n throw new WarlockError(\n \"WL7404\",\n `No new message for \"${options.agent}\" after ${Math.round(timeoutMs / 1000)}s (watching messages above #${since}).`,\n );\n }\n\n await new Promise((resolve) => setTimeout(resolve, Math.min(intervalMs, remaining)));\n }\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
//#region ../../packages/core/src/tooling/board/board.types.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* Types and the state machine of the agent board (`warlock board`): a
|
|
4
|
+
* git-ignored folder two coding agents — usually an implementer and a
|
|
5
|
+
* reviewer — share to track work items and exchange append-only messages.
|
|
6
|
+
*/
|
|
7
|
+
/** Where the board lives, under the project root. */
|
|
8
|
+
declare const BOARD_DIRECTORY = ".warlock/board";
|
|
9
|
+
/** Every state an item can be in. */
|
|
10
|
+
declare const BOARD_STATES: readonly ["todo", "in-progress", "ready-for-review", "changes-requested", "approved", "blocked"];
|
|
11
|
+
/** One item state. */
|
|
12
|
+
type BoardState = (typeof BOARD_STATES)[number];
|
|
13
|
+
/**
|
|
14
|
+
* The allowed moves: an item in the key state may move to any listed state,
|
|
15
|
+
* and nowhere else. `approved` may only be reopened (`in-progress`).
|
|
16
|
+
*/
|
|
17
|
+
declare const BOARD_TRANSITIONS: Readonly<Record<BoardState, readonly BoardState[]>>;
|
|
18
|
+
/** A review verdict a message can carry. */
|
|
19
|
+
type BoardVerdict = "approved" | "changes-requested";
|
|
20
|
+
/** The exact final line each verdict is written as. */
|
|
21
|
+
declare const BOARD_VERDICT_LINES: Readonly<Record<BoardVerdict, string>>;
|
|
22
|
+
/** One recorded state change of an item. */
|
|
23
|
+
type BoardHistoryEntry = {
|
|
24
|
+
/** `null` for the creation entry. */from: BoardState | null;
|
|
25
|
+
to: BoardState; /** The agent that made the move, or `null` when not given. */
|
|
26
|
+
by: string | null; /** ISO time. */
|
|
27
|
+
at: string;
|
|
28
|
+
note: string | null;
|
|
29
|
+
};
|
|
30
|
+
/** One work item, stored as `items/NNNN-<slug>.json`. */
|
|
31
|
+
type BoardItem = {
|
|
32
|
+
id: number;
|
|
33
|
+
title: string;
|
|
34
|
+
state: BoardState;
|
|
35
|
+
assignee: string | null;
|
|
36
|
+
reviewer: string | null;
|
|
37
|
+
createdAt: string;
|
|
38
|
+
updatedAt: string;
|
|
39
|
+
history: BoardHistoryEntry[];
|
|
40
|
+
};
|
|
41
|
+
/** One message, stored as `to-<agent>/NNNN-<slug>.md`. */
|
|
42
|
+
type BoardMessage = {
|
|
43
|
+
/** The per-recipient sequence number (`NNNN`). */number: number; /** Path relative to the project root, POSIX separators. */
|
|
44
|
+
file: string;
|
|
45
|
+
from: string;
|
|
46
|
+
to: string; /** The item the message is about, or `null`. */
|
|
47
|
+
item: number | null;
|
|
48
|
+
subject: string; /** ISO time. */
|
|
49
|
+
at: string;
|
|
50
|
+
body: string;
|
|
51
|
+
verdict: BoardVerdict | null;
|
|
52
|
+
};
|
|
53
|
+
/** One recipient's inbox, as `readBoardStatus` reports it. */
|
|
54
|
+
type BoardInbox = {
|
|
55
|
+
agent: string; /** Messages in the inbox. */
|
|
56
|
+
messages: number; /** The highest message number `watch` has returned to this agent (0 = none). */
|
|
57
|
+
cursor: number; /** Messages numbered above the cursor. */
|
|
58
|
+
unread: number;
|
|
59
|
+
};
|
|
60
|
+
/** What `warlock board status --json` prints without an item id. */
|
|
61
|
+
type BoardStatus = {
|
|
62
|
+
schemaVersion: 1;
|
|
63
|
+
items: BoardItem[];
|
|
64
|
+
inboxes: BoardInbox[];
|
|
65
|
+
};
|
|
66
|
+
/** Whether a string is a board state. */
|
|
67
|
+
declare function isBoardState(value: string): value is BoardState;
|
|
68
|
+
/** Whether a string is a verdict. */
|
|
69
|
+
declare function isBoardVerdict(value: string): value is BoardVerdict;
|
|
70
|
+
//#endregion
|
|
71
|
+
export { BOARD_DIRECTORY, BOARD_STATES, BOARD_TRANSITIONS, BOARD_VERDICT_LINES, BoardHistoryEntry, BoardInbox, BoardItem, BoardMessage, BoardState, BoardStatus, BoardVerdict, isBoardState, isBoardVerdict };
|
|
72
|
+
//# sourceMappingURL=board.types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board.types.d.mts","names":[],"sources":["../../../../../../../../../packages/core/src/tooling/board/board.types.ts"],"mappings":";;AAOA;;;;AAA4B;AAAA,cAAf,eAAA;;cAGA,YAAA;;KAUD,UAAA,WAAqB,YAAY;AAA7C;;;;AAAA,cAMa,iBAAA,EAAmB,QAAA,CAAS,MAAA,CAAO,UAAA,WAAqB,UAAA;AAArE;AAAA,KAUY,YAAA;;cAGC,mBAAA,EAAqB,QAAA,CAAS,MAAA,CAAO,YAAA;;KAMtC,iBAAA;EAnBoB,qCAqB9B,IAAA,EAAM,UAAA;EACN,EAAA,EAAI,UAAU,EAtBgB;EAwB9B,EAAA,iBAxB8C;EA0B9C,EAAA;EACA,IAAA;AAAA;AAjBF;AAAA,KAqBY,SAAA;EACV,EAAA;EACA,KAAA;EACA,KAAA,EAAO,UAAA;EACP,QAAA;EACA,QAAA;EACA,SAAA;EACA,SAAA;EACA,OAAA,EAAS,iBAAiB;AAAA;;KAIhB,YAAA;EA9BsB,kDAgChC,MAAA,UAhCgD;EAkChD,IAAA;EACA,IAAA;EACA,EAAA,UA9B2B;EAgC3B,IAAA;EACA,OAAA,UA/BA;EAiCA,EAAA;EACA,IAAA;EACA,OAAA,EAAS,YAAY;AAAA;;KAIX,UAAA;EACV,KAAA,UAlCI;EAoCJ,QAAA,UAhCmB;EAkCnB,MAAA,UA1B0B;EA4B1B,MAAA;AAAA;;KAIU,WAAA;EACV,aAAA;EACA,KAAA,EAAO,SAAA;EACP,OAAA,EAAS,UAAU;AAAA;;iBAIL,YAAA,CAAa,KAAA,WAAgB,KAAA,IAAS,UAAU;;iBAKhD,cAAA,CAAe,KAAA,WAAgB,KAAA,IAAS,YAAY"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
//#region ../../packages/core/src/tooling/board/board.types.ts
|
|
2
|
+
/**
|
|
3
|
+
* Types and the state machine of the agent board (`warlock board`): a
|
|
4
|
+
* git-ignored folder two coding agents — usually an implementer and a
|
|
5
|
+
* reviewer — share to track work items and exchange append-only messages.
|
|
6
|
+
*/
|
|
7
|
+
/** Where the board lives, under the project root. */
|
|
8
|
+
const BOARD_DIRECTORY = ".warlock/board";
|
|
9
|
+
/** Every state an item can be in. */
|
|
10
|
+
const BOARD_STATES = [
|
|
11
|
+
"todo",
|
|
12
|
+
"in-progress",
|
|
13
|
+
"ready-for-review",
|
|
14
|
+
"changes-requested",
|
|
15
|
+
"approved",
|
|
16
|
+
"blocked"
|
|
17
|
+
];
|
|
18
|
+
/**
|
|
19
|
+
* The allowed moves: an item in the key state may move to any listed state,
|
|
20
|
+
* and nowhere else. `approved` may only be reopened (`in-progress`).
|
|
21
|
+
*/
|
|
22
|
+
const BOARD_TRANSITIONS = {
|
|
23
|
+
todo: ["in-progress", "blocked"],
|
|
24
|
+
"in-progress": [
|
|
25
|
+
"ready-for-review",
|
|
26
|
+
"blocked",
|
|
27
|
+
"todo"
|
|
28
|
+
],
|
|
29
|
+
"ready-for-review": [
|
|
30
|
+
"approved",
|
|
31
|
+
"changes-requested",
|
|
32
|
+
"in-progress"
|
|
33
|
+
],
|
|
34
|
+
"changes-requested": ["in-progress", "blocked"],
|
|
35
|
+
approved: ["in-progress"],
|
|
36
|
+
blocked: ["todo", "in-progress"]
|
|
37
|
+
};
|
|
38
|
+
/** The exact final line each verdict is written as. */
|
|
39
|
+
const BOARD_VERDICT_LINES = {
|
|
40
|
+
approved: "VERDICT: APPROVED",
|
|
41
|
+
"changes-requested": "VERDICT: CHANGES REQUESTED"
|
|
42
|
+
};
|
|
43
|
+
/** Whether a string is a board state. */
|
|
44
|
+
function isBoardState(value) {
|
|
45
|
+
return BOARD_STATES.includes(value);
|
|
46
|
+
}
|
|
47
|
+
/** Whether a string is a verdict. */
|
|
48
|
+
function isBoardVerdict(value) {
|
|
49
|
+
return value === "approved" || value === "changes-requested";
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
//#endregion
|
|
53
|
+
export { BOARD_DIRECTORY, BOARD_STATES, BOARD_TRANSITIONS, BOARD_VERDICT_LINES, isBoardState, isBoardVerdict };
|
|
54
|
+
//# sourceMappingURL=board.types.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"board.types.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/tooling/board/board.types.ts"],"sourcesContent":["/**\n * Types and the state machine of the agent board (`warlock board`): a\n * git-ignored folder two coding agents — usually an implementer and a\n * reviewer — share to track work items and exchange append-only messages.\n */\n\n/** Where the board lives, under the project root. */\nexport const BOARD_DIRECTORY = \".warlock/board\";\n\n/** Every state an item can be in. */\nexport const BOARD_STATES = [\n \"todo\",\n \"in-progress\",\n \"ready-for-review\",\n \"changes-requested\",\n \"approved\",\n \"blocked\",\n] as const;\n\n/** One item state. */\nexport type BoardState = (typeof BOARD_STATES)[number];\n\n/**\n * The allowed moves: an item in the key state may move to any listed state,\n * and nowhere else. `approved` may only be reopened (`in-progress`).\n */\nexport const BOARD_TRANSITIONS: Readonly<Record<BoardState, readonly BoardState[]>> = {\n todo: [\"in-progress\", \"blocked\"],\n \"in-progress\": [\"ready-for-review\", \"blocked\", \"todo\"],\n \"ready-for-review\": [\"approved\", \"changes-requested\", \"in-progress\"],\n \"changes-requested\": [\"in-progress\", \"blocked\"],\n approved: [\"in-progress\"],\n blocked: [\"todo\", \"in-progress\"],\n};\n\n/** A review verdict a message can carry. */\nexport type BoardVerdict = \"approved\" | \"changes-requested\";\n\n/** The exact final line each verdict is written as. */\nexport const BOARD_VERDICT_LINES: Readonly<Record<BoardVerdict, string>> = {\n approved: \"VERDICT: APPROVED\",\n \"changes-requested\": \"VERDICT: CHANGES REQUESTED\",\n};\n\n/** One recorded state change of an item. */\nexport type BoardHistoryEntry = {\n /** `null` for the creation entry. */\n from: BoardState | null;\n to: BoardState;\n /** The agent that made the move, or `null` when not given. */\n by: string | null;\n /** ISO time. */\n at: string;\n note: string | null;\n};\n\n/** One work item, stored as `items/NNNN-<slug>.json`. */\nexport type BoardItem = {\n id: number;\n title: string;\n state: BoardState;\n assignee: string | null;\n reviewer: string | null;\n createdAt: string;\n updatedAt: string;\n history: BoardHistoryEntry[];\n};\n\n/** One message, stored as `to-<agent>/NNNN-<slug>.md`. */\nexport type BoardMessage = {\n /** The per-recipient sequence number (`NNNN`). */\n number: number;\n /** Path relative to the project root, POSIX separators. */\n file: string;\n from: string;\n to: string;\n /** The item the message is about, or `null`. */\n item: number | null;\n subject: string;\n /** ISO time. */\n at: string;\n body: string;\n verdict: BoardVerdict | null;\n};\n\n/** One recipient's inbox, as `readBoardStatus` reports it. */\nexport type BoardInbox = {\n agent: string;\n /** Messages in the inbox. */\n messages: number;\n /** The highest message number `watch` has returned to this agent (0 = none). */\n cursor: number;\n /** Messages numbered above the cursor. */\n unread: number;\n};\n\n/** What `warlock board status --json` prints without an item id. */\nexport type BoardStatus = {\n schemaVersion: 1;\n items: BoardItem[];\n inboxes: BoardInbox[];\n};\n\n/** Whether a string is a board state. */\nexport function isBoardState(value: string): value is BoardState {\n return (BOARD_STATES as readonly string[]).includes(value);\n}\n\n/** Whether a string is a verdict. */\nexport function isBoardVerdict(value: string): value is BoardVerdict {\n return value === \"approved\" || value === \"changes-requested\";\n}\n"],"mappings":";;;;;;;AAOA,MAAa,kBAAkB;;AAG/B,MAAa,eAAe;CAC1B;CACA;CACA;CACA;CACA;CACA;AACF;;;;;AASA,MAAa,oBAAyE;CACpF,MAAM,CAAC,eAAe,SAAS;CAC/B,eAAe;EAAC;EAAoB;EAAW;CAAM;CACrD,oBAAoB;EAAC;EAAY;EAAqB;CAAa;CACnE,qBAAqB,CAAC,eAAe,SAAS;CAC9C,UAAU,CAAC,aAAa;CACxB,SAAS,CAAC,QAAQ,aAAa;AACjC;;AAMA,MAAa,sBAA8D;CACzE,UAAU;CACV,qBAAqB;AACvB;;AA8DA,SAAgB,aAAa,OAAoC;CAC/D,OAAQ,aAAmC,SAAS,KAAK;AAC3D;;AAGA,SAAgB,eAAe,OAAsC;CACnE,OAAO,UAAU,cAAc,UAAU;AAC3C"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import { ToolingProblem } from "../problem.mjs";
|
|
2
|
+
|
|
3
|
+
//#region ../../packages/core/src/tooling/check/changed-files.d.ts
|
|
4
|
+
/** The result of one git invocation. */
|
|
5
|
+
type GitResult = {
|
|
6
|
+
code: number;
|
|
7
|
+
stdout: string;
|
|
8
|
+
stderr: string;
|
|
9
|
+
};
|
|
10
|
+
/** Runs `git <args>` in `cwd`. Injectable so tests need no repository. */
|
|
11
|
+
type GitRunner = (args: readonly string[], cwd: string) => Promise<GitResult>;
|
|
12
|
+
/** The default {@link GitRunner}: the `git` on PATH. */
|
|
13
|
+
declare const runGit: GitRunner;
|
|
14
|
+
/**
|
|
15
|
+
* The source files changed in the working tree — tracked changes against
|
|
16
|
+
* `base` (or HEAD) plus untracked files — relative to `cwd`, existing only.
|
|
17
|
+
*
|
|
18
|
+
* With `base`, the comparison point is `git merge-base <base> HEAD`, so a
|
|
19
|
+
* branch is compared with where it left `base` rather than with `base`'s tip.
|
|
20
|
+
* A git failure is a `WL8006` environment problem.
|
|
21
|
+
*/
|
|
22
|
+
declare function listChangedFiles(options: {
|
|
23
|
+
cwd: string;
|
|
24
|
+
base?: string;
|
|
25
|
+
git?: GitRunner;
|
|
26
|
+
}): Promise<{
|
|
27
|
+
files: string[];
|
|
28
|
+
} | {
|
|
29
|
+
problem: ToolingProblem;
|
|
30
|
+
}>;
|
|
31
|
+
//#endregion
|
|
32
|
+
export { GitResult, GitRunner, listChangedFiles, runGit };
|
|
33
|
+
//# sourceMappingURL=changed-files.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changed-files.d.mts","names":[],"sources":["../../../../../../../../../packages/core/src/tooling/check/changed-files.ts"],"mappings":";;;;KAMY,SAAA;EAAc,IAAA;EAAc,MAAA;EAAgB,MAAA;AAAA;;KAG5C,SAAA,IAAa,IAAA,qBAAyB,GAAA,aAAgB,OAAO,CAAC,SAAA;;cAG7D,MAAA,EAAQ,SAYjB;AAlB0D;AAG9D;;;;;;;AAH8D,iBA0CxC,gBAAA,CAAiB,OAAA;EACrC,GAAA;EACA,IAAA;EACA,GAAA,GAAM,SAAA;AAAA,IACJ,OAAA;EAAU,KAAA;AAAA;EAAsB,OAAA,EAAS,cAAA;AAAA"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import { createProblem } from "../problem.mjs";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
4
|
+
import { execFile } from "node:child_process";
|
|
5
|
+
|
|
6
|
+
//#region ../../packages/core/src/tooling/check/changed-files.ts
|
|
7
|
+
/** The default {@link GitRunner}: the `git` on PATH. */
|
|
8
|
+
const runGit = (args, cwd) => new Promise((resolve) => {
|
|
9
|
+
execFile("git", [...args], {
|
|
10
|
+
cwd,
|
|
11
|
+
encoding: "utf8",
|
|
12
|
+
windowsHide: true,
|
|
13
|
+
maxBuffer: 16 * 1024 * 1024
|
|
14
|
+
}, (error, stdout, stderr) => {
|
|
15
|
+
resolve({
|
|
16
|
+
code: error === null ? 0 : typeof error.code === "number" ? error.code : 127,
|
|
17
|
+
stdout,
|
|
18
|
+
stderr: stderr || (error?.message ?? "")
|
|
19
|
+
});
|
|
20
|
+
});
|
|
21
|
+
});
|
|
22
|
+
/** Files `warlock check --changed` considers: JavaScript and TypeScript sources. */
|
|
23
|
+
const SOURCE_FILE = /\.(?:[cm]?[jt]sx?)$/i;
|
|
24
|
+
function lines(output) {
|
|
25
|
+
return output.split(/\r?\n/).map((line) => line.trim()).filter((line) => line.length > 0);
|
|
26
|
+
}
|
|
27
|
+
function gitProblem(message) {
|
|
28
|
+
return createProblem({
|
|
29
|
+
code: "WL8006",
|
|
30
|
+
source: "environment",
|
|
31
|
+
message
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* The source files changed in the working tree — tracked changes against
|
|
36
|
+
* `base` (or HEAD) plus untracked files — relative to `cwd`, existing only.
|
|
37
|
+
*
|
|
38
|
+
* With `base`, the comparison point is `git merge-base <base> HEAD`, so a
|
|
39
|
+
* branch is compared with where it left `base` rather than with `base`'s tip.
|
|
40
|
+
* A git failure is a `WL8006` environment problem.
|
|
41
|
+
*/
|
|
42
|
+
async function listChangedFiles(options) {
|
|
43
|
+
const git = options.git ?? runGit;
|
|
44
|
+
let ref = "HEAD";
|
|
45
|
+
if (options.base) {
|
|
46
|
+
const mergeBase = await git([
|
|
47
|
+
"merge-base",
|
|
48
|
+
options.base,
|
|
49
|
+
"HEAD"
|
|
50
|
+
], options.cwd);
|
|
51
|
+
if (mergeBase.code !== 0) return { problem: gitProblem(`git merge-base ${options.base} HEAD failed: ${mergeBase.stderr.trim() || `exit ${mergeBase.code}`}`) };
|
|
52
|
+
ref = mergeBase.stdout.trim();
|
|
53
|
+
}
|
|
54
|
+
const diff = await git([
|
|
55
|
+
"diff",
|
|
56
|
+
"--name-only",
|
|
57
|
+
"--relative",
|
|
58
|
+
"--diff-filter=ACMR",
|
|
59
|
+
ref
|
|
60
|
+
], options.cwd);
|
|
61
|
+
if (diff.code !== 0) return { problem: gitProblem(`git diff against ${ref} failed: ${diff.stderr.trim() || `exit ${diff.code}`}`) };
|
|
62
|
+
const untracked = await git([
|
|
63
|
+
"ls-files",
|
|
64
|
+
"--others",
|
|
65
|
+
"--exclude-standard"
|
|
66
|
+
], options.cwd);
|
|
67
|
+
if (untracked.code !== 0) return { problem: gitProblem(`git ls-files failed: ${untracked.stderr.trim() || `exit ${untracked.code}`}`) };
|
|
68
|
+
return { files: [...new Set([...lines(diff.stdout), ...lines(untracked.stdout)])].map((file) => file.split(path.sep).join("/")).filter((file) => SOURCE_FILE.test(file) && existsSync(path.join(options.cwd, file))).sort() };
|
|
69
|
+
}
|
|
70
|
+
|
|
71
|
+
//#endregion
|
|
72
|
+
export { listChangedFiles, runGit };
|
|
73
|
+
//# sourceMappingURL=changed-files.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"changed-files.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/tooling/check/changed-files.ts"],"sourcesContent":["import { execFile } from \"node:child_process\";\nimport { existsSync } from \"node:fs\";\nimport path from \"node:path\";\nimport { createProblem, type ToolingProblem } from \"../problem\";\n\n/** The result of one git invocation. */\nexport type GitResult = { code: number; stdout: string; stderr: string };\n\n/** Runs `git <args>` in `cwd`. Injectable so tests need no repository. */\nexport type GitRunner = (args: readonly string[], cwd: string) => Promise<GitResult>;\n\n/** The default {@link GitRunner}: the `git` on PATH. */\nexport const runGit: GitRunner = (args, cwd) =>\n new Promise((resolve) => {\n execFile(\n \"git\",\n [...args],\n { cwd, encoding: \"utf8\", windowsHide: true, maxBuffer: 16 * 1024 * 1024 },\n (error, stdout, stderr) => {\n const code = error === null ? 0 : typeof error.code === \"number\" ? error.code : 127;\n\n resolve({ code, stdout, stderr: stderr || (error?.message ?? \"\") });\n },\n );\n });\n\n/** Files `warlock check --changed` considers: JavaScript and TypeScript sources. */\nconst SOURCE_FILE = /\\.(?:[cm]?[jt]sx?)$/i;\n\nfunction lines(output: string): string[] {\n return output\n .split(/\\r?\\n/)\n .map((line) => line.trim())\n .filter((line) => line.length > 0);\n}\n\nfunction gitProblem(message: string): ToolingProblem {\n return createProblem({ code: \"WL8006\", source: \"environment\", message });\n}\n\n/**\n * The source files changed in the working tree — tracked changes against\n * `base` (or HEAD) plus untracked files — relative to `cwd`, existing only.\n *\n * With `base`, the comparison point is `git merge-base <base> HEAD`, so a\n * branch is compared with where it left `base` rather than with `base`'s tip.\n * A git failure is a `WL8006` environment problem.\n */\nexport async function listChangedFiles(options: {\n cwd: string;\n base?: string;\n git?: GitRunner;\n}): Promise<{ files: string[] } | { problem: ToolingProblem }> {\n const git = options.git ?? runGit;\n let ref = \"HEAD\";\n\n if (options.base) {\n const mergeBase = await git([\"merge-base\", options.base, \"HEAD\"], options.cwd);\n\n if (mergeBase.code !== 0) {\n return {\n problem: gitProblem(\n `git merge-base ${options.base} HEAD failed: ${mergeBase.stderr.trim() || `exit ${mergeBase.code}`}`,\n ),\n };\n }\n\n ref = mergeBase.stdout.trim();\n }\n\n // `--relative` makes the paths relative to cwd and limits them to it.\n const diff = await git(\n [\"diff\", \"--name-only\", \"--relative\", \"--diff-filter=ACMR\", ref],\n options.cwd,\n );\n\n if (diff.code !== 0) {\n return {\n problem: gitProblem(\n `git diff against ${ref} failed: ${diff.stderr.trim() || `exit ${diff.code}`}`,\n ),\n };\n }\n\n const untracked = await git([\"ls-files\", \"--others\", \"--exclude-standard\"], options.cwd);\n\n if (untracked.code !== 0) {\n return {\n problem: gitProblem(\n `git ls-files failed: ${untracked.stderr.trim() || `exit ${untracked.code}`}`,\n ),\n };\n }\n\n const files = [...new Set([...lines(diff.stdout), ...lines(untracked.stdout)])]\n .map((file) => file.split(path.sep).join(\"/\"))\n .filter((file) => SOURCE_FILE.test(file) && existsSync(path.join(options.cwd, file)))\n .sort();\n\n return { files };\n}\n"],"mappings":";;;;;;;AAYA,MAAa,UAAqB,MAAM,QACtC,IAAI,SAAS,YAAY;CACvB,SACE,OACA,CAAC,GAAG,IAAI,GACR;EAAE;EAAK,UAAU;EAAQ,aAAa;EAAM,WAAW,KAAK,OAAO;CAAK,IACvE,OAAO,QAAQ,WAAW;EAGzB,QAAQ;GAAE,MAFG,UAAU,OAAO,IAAI,OAAO,MAAM,SAAS,WAAW,MAAM,OAAO;GAEhE;GAAQ,QAAQ,WAAW,OAAO,WAAW;EAAI,CAAC;CACpE,CACF;AACF,CAAC;;AAGH,MAAM,cAAc;AAEpB,SAAS,MAAM,QAA0B;CACvC,OAAO,OACJ,MAAM,OAAO,CAAC,CACd,KAAK,SAAS,KAAK,KAAK,CAAC,CAAC,CAC1B,QAAQ,SAAS,KAAK,SAAS,CAAC;AACrC;AAEA,SAAS,WAAW,SAAiC;CACnD,OAAO,cAAc;EAAE,MAAM;EAAU,QAAQ;EAAe;CAAQ,CAAC;AACzE;;;;;;;;;AAUA,eAAsB,iBAAiB,SAIwB;CAC7D,MAAM,MAAM,QAAQ,OAAO;CAC3B,IAAI,MAAM;CAEV,IAAI,QAAQ,MAAM;EAChB,MAAM,YAAY,MAAM,IAAI;GAAC;GAAc,QAAQ;GAAM;EAAM,GAAG,QAAQ,GAAG;EAE7E,IAAI,UAAU,SAAS,GACrB,OAAO,EACL,SAAS,WACP,kBAAkB,QAAQ,KAAK,gBAAgB,UAAU,OAAO,KAAK,KAAK,QAAQ,UAAU,QAC9F,EACF;EAGF,MAAM,UAAU,OAAO,KAAK;CAC9B;CAGA,MAAM,OAAO,MAAM,IACjB;EAAC;EAAQ;EAAe;EAAc;EAAsB;CAAG,GAC/D,QAAQ,GACV;CAEA,IAAI,KAAK,SAAS,GAChB,OAAO,EACL,SAAS,WACP,oBAAoB,IAAI,WAAW,KAAK,OAAO,KAAK,KAAK,QAAQ,KAAK,QACxE,EACF;CAGF,MAAM,YAAY,MAAM,IAAI;EAAC;EAAY;EAAY;CAAoB,GAAG,QAAQ,GAAG;CAEvF,IAAI,UAAU,SAAS,GACrB,OAAO,EACL,SAAS,WACP,wBAAwB,UAAU,OAAO,KAAK,KAAK,QAAQ,UAAU,QACvE,EACF;CAQF,OAAO,EAAE,OALK,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,MAAM,KAAK,MAAM,GAAG,GAAG,MAAM,UAAU,MAAM,CAAC,CAAC,CAAC,CAAC,CAC5E,KAAK,SAAS,KAAK,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAC7C,QAAQ,SAAS,YAAY,KAAK,IAAI,KAAK,WAAW,KAAK,KAAK,QAAQ,KAAK,IAAI,CAAC,CAAC,CAAC,CACpF,KAEU,EAAE;AACjB"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { ToolingProblem } from "../problem.mjs";
|
|
2
|
+
|
|
3
|
+
//#region ../../packages/core/src/tooling/check/check-report.types.d.ts
|
|
4
|
+
/** The steps `warlock check` runs, in order. */
|
|
5
|
+
declare const CHECK_STEPS: readonly ["environment", "typecheck", "lint", "tests", "conventions"];
|
|
6
|
+
/** One step name. */
|
|
7
|
+
type CheckStepName = (typeof CHECK_STEPS)[number];
|
|
8
|
+
/**
|
|
9
|
+
* - `passed`: ran and found no error.
|
|
10
|
+
* - `failed`: ran and found at least one error-severity problem.
|
|
11
|
+
* - `skipped`: does not apply (no lint config, no tests, nothing changed, `--skip`).
|
|
12
|
+
* - `blocked`: could not run because of this machine; an environment problem says why.
|
|
13
|
+
*/
|
|
14
|
+
type CheckStepStatus = "passed" | "failed" | "skipped" | "blocked";
|
|
15
|
+
/** One step of the report. */
|
|
16
|
+
type CheckStep = {
|
|
17
|
+
name: CheckStepName;
|
|
18
|
+
status: CheckStepStatus;
|
|
19
|
+
durationMs: number; /** One line on what the step did or why it did not run, or `null`. */
|
|
20
|
+
detail: string | null;
|
|
21
|
+
};
|
|
22
|
+
/**
|
|
23
|
+
* Exit codes of `warlock check` and `warlock typecheck`:
|
|
24
|
+
*
|
|
25
|
+
* | Code | Meaning |
|
|
26
|
+
* | ---- | -------------------------------------------------------------------------- |
|
|
27
|
+
* | 0 | no error-severity problem (warnings are allowed) |
|
|
28
|
+
* | 1 | problems in your code only: type, lint, test or convention errors |
|
|
29
|
+
* | 2 | this machine: Node version, missing tool, unreachable service, busy port, |
|
|
30
|
+
* | | git unavailable, a tool that crashed — the run is incomplete |
|
|
31
|
+
*
|
|
32
|
+
* 2 wins over 1: when the machine kept a step from running, the run did not
|
|
33
|
+
* check everything, so "only your code is wrong" cannot be claimed.
|
|
34
|
+
*/
|
|
35
|
+
declare const CHECK_EXIT_CODES: {
|
|
36
|
+
readonly ok: 0;
|
|
37
|
+
readonly code: 1;
|
|
38
|
+
readonly environment: 2;
|
|
39
|
+
};
|
|
40
|
+
/** One of {@link CHECK_EXIT_CODES}. */
|
|
41
|
+
type CheckExitCode = (typeof CHECK_EXIT_CODES)[keyof typeof CHECK_EXIT_CODES];
|
|
42
|
+
/** The exit code for a set of problems; see {@link CHECK_EXIT_CODES}. */
|
|
43
|
+
declare function checkExitCode(problems: readonly ToolingProblem[]): CheckExitCode;
|
|
44
|
+
/** What `warlock check --json` prints. */
|
|
45
|
+
type CheckReport = {
|
|
46
|
+
schemaVersion: 1; /** `true` when the exit code is 0. */
|
|
47
|
+
ok: boolean;
|
|
48
|
+
exitCode: CheckExitCode; /** Whether the run was limited to changed files. */
|
|
49
|
+
changed: boolean; /** The changed files the run was limited to (project-relative), or `null` for a full run. */
|
|
50
|
+
files: string[] | null;
|
|
51
|
+
steps: CheckStep[]; /** One entry per problem, in step order. */
|
|
52
|
+
problems: ToolingProblem[];
|
|
53
|
+
summary: {
|
|
54
|
+
errors: number;
|
|
55
|
+
warnings: number; /** Error-severity problems in the code. */
|
|
56
|
+
code: number; /** Error-severity problems with the machine. */
|
|
57
|
+
environment: number;
|
|
58
|
+
};
|
|
59
|
+
};
|
|
60
|
+
//#endregion
|
|
61
|
+
export { CHECK_EXIT_CODES, CHECK_STEPS, CheckExitCode, CheckReport, CheckStep, CheckStepName, CheckStepStatus, checkExitCode };
|
|
62
|
+
//# sourceMappingURL=check-report.types.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-report.types.d.mts","names":[],"sources":["../../../../../../../../../packages/core/src/tooling/check/check-report.types.ts"],"mappings":";;;;cAGa,WAAA;AAAb;AAAA,KAGY,aAAA,WAAwB,WAAW;;;AAHiD;AAGhG;;;KAQY,eAAA;AARmC;AAAA,KAWnC,SAAA;EACV,IAAA,EAAM,aAAA;EACN,MAAA,EAAQ,eAAe;EACvB,UAAA,UANyB;EAQzB,MAAA;AAAA;;;;;;;;;;AAAM;AAgBR;;;cAAa,gBAAA;EAAA;;;;;KAOD,aAAA,WAAwB,gBAAA,eAA+B,gBAAgB;;iBAGnE,aAAA,CAAc,QAAA,WAAmB,cAAA,KAAmB,aAAa;;KAWrE,WAAA;EACV,aAAA,KAZ2B;EAc3B,EAAA;EACA,QAAA,EAAU,aAAA,EAfqC;EAiB/C,OAAA,WAjBkE;EAmBlE,KAAA;EACA,KAAA,EAAO,SAAA,IATG;EAWV,QAAA,EAAU,cAAA;EACV,OAAA;IACE,MAAA;IACA,QAAA,UAHQ;IAKR,IAAA,UALsB;IAOtB,WAAA;EAAA;AAAA"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
//#region ../../packages/core/src/tooling/check/check-report.types.ts
|
|
2
|
+
/** The steps `warlock check` runs, in order. */
|
|
3
|
+
const CHECK_STEPS = [
|
|
4
|
+
"environment",
|
|
5
|
+
"typecheck",
|
|
6
|
+
"lint",
|
|
7
|
+
"tests",
|
|
8
|
+
"conventions"
|
|
9
|
+
];
|
|
10
|
+
/**
|
|
11
|
+
* Exit codes of `warlock check` and `warlock typecheck`:
|
|
12
|
+
*
|
|
13
|
+
* | Code | Meaning |
|
|
14
|
+
* | ---- | -------------------------------------------------------------------------- |
|
|
15
|
+
* | 0 | no error-severity problem (warnings are allowed) |
|
|
16
|
+
* | 1 | problems in your code only: type, lint, test or convention errors |
|
|
17
|
+
* | 2 | this machine: Node version, missing tool, unreachable service, busy port, |
|
|
18
|
+
* | | git unavailable, a tool that crashed — the run is incomplete |
|
|
19
|
+
*
|
|
20
|
+
* 2 wins over 1: when the machine kept a step from running, the run did not
|
|
21
|
+
* check everything, so "only your code is wrong" cannot be claimed.
|
|
22
|
+
*/
|
|
23
|
+
const CHECK_EXIT_CODES = {
|
|
24
|
+
ok: 0,
|
|
25
|
+
code: 1,
|
|
26
|
+
environment: 2
|
|
27
|
+
};
|
|
28
|
+
/** The exit code for a set of problems; see {@link CHECK_EXIT_CODES}. */
|
|
29
|
+
function checkExitCode(problems) {
|
|
30
|
+
const errors = problems.filter((problem) => problem.severity === "error");
|
|
31
|
+
if (errors.some((problem) => problem.category === "environment")) return CHECK_EXIT_CODES.environment;
|
|
32
|
+
return errors.length > 0 ? CHECK_EXIT_CODES.code : CHECK_EXIT_CODES.ok;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
//#endregion
|
|
36
|
+
export { CHECK_EXIT_CODES, CHECK_STEPS, checkExitCode };
|
|
37
|
+
//# sourceMappingURL=check-report.types.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"check-report.types.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/tooling/check/check-report.types.ts"],"sourcesContent":["import type { ToolingProblem } from \"../problem\";\n\n/** The steps `warlock check` runs, in order. */\nexport const CHECK_STEPS = [\"environment\", \"typecheck\", \"lint\", \"tests\", \"conventions\"] as const;\n\n/** One step name. */\nexport type CheckStepName = (typeof CHECK_STEPS)[number];\n\n/**\n * - `passed`: ran and found no error.\n * - `failed`: ran and found at least one error-severity problem.\n * - `skipped`: does not apply (no lint config, no tests, nothing changed, `--skip`).\n * - `blocked`: could not run because of this machine; an environment problem says why.\n */\nexport type CheckStepStatus = \"passed\" | \"failed\" | \"skipped\" | \"blocked\";\n\n/** One step of the report. */\nexport type CheckStep = {\n name: CheckStepName;\n status: CheckStepStatus;\n durationMs: number;\n /** One line on what the step did or why it did not run, or `null`. */\n detail: string | null;\n};\n\n/**\n * Exit codes of `warlock check` and `warlock typecheck`:\n *\n * | Code | Meaning |\n * | ---- | -------------------------------------------------------------------------- |\n * | 0 | no error-severity problem (warnings are allowed) |\n * | 1 | problems in your code only: type, lint, test or convention errors |\n * | 2 | this machine: Node version, missing tool, unreachable service, busy port, |\n * | | git unavailable, a tool that crashed — the run is incomplete |\n *\n * 2 wins over 1: when the machine kept a step from running, the run did not\n * check everything, so \"only your code is wrong\" cannot be claimed.\n */\nexport const CHECK_EXIT_CODES = {\n ok: 0,\n code: 1,\n environment: 2,\n} as const;\n\n/** One of {@link CHECK_EXIT_CODES}. */\nexport type CheckExitCode = (typeof CHECK_EXIT_CODES)[keyof typeof CHECK_EXIT_CODES];\n\n/** The exit code for a set of problems; see {@link CHECK_EXIT_CODES}. */\nexport function checkExitCode(problems: readonly ToolingProblem[]): CheckExitCode {\n const errors = problems.filter((problem) => problem.severity === \"error\");\n\n if (errors.some((problem) => problem.category === \"environment\")) {\n return CHECK_EXIT_CODES.environment;\n }\n\n return errors.length > 0 ? CHECK_EXIT_CODES.code : CHECK_EXIT_CODES.ok;\n}\n\n/** What `warlock check --json` prints. */\nexport type CheckReport = {\n schemaVersion: 1;\n /** `true` when the exit code is 0. */\n ok: boolean;\n exitCode: CheckExitCode;\n /** Whether the run was limited to changed files. */\n changed: boolean;\n /** The changed files the run was limited to (project-relative), or `null` for a full run. */\n files: string[] | null;\n steps: CheckStep[];\n /** One entry per problem, in step order. */\n problems: ToolingProblem[];\n summary: {\n errors: number;\n warnings: number;\n /** Error-severity problems in the code. */\n code: number;\n /** Error-severity problems with the machine. */\n environment: number;\n };\n};\n"],"mappings":";;AAGA,MAAa,cAAc;CAAC;CAAe;CAAa;CAAQ;CAAS;AAAa;;;;;;;;;;;;;;AAmCtF,MAAa,mBAAmB;CAC9B,IAAI;CACJ,MAAM;CACN,aAAa;AACf;;AAMA,SAAgB,cAAc,UAAoD;CAChF,MAAM,SAAS,SAAS,QAAQ,YAAY,QAAQ,aAAa,OAAO;CAExE,IAAI,OAAO,MAAM,YAAY,QAAQ,aAAa,aAAa,GAC7D,OAAO,iBAAiB;CAG1B,OAAO,OAAO,SAAS,IAAI,iBAAiB,OAAO,iBAAiB;AACtE"}
|
|
@@ -0,0 +1,106 @@
|
|
|
1
|
+
import { isMemberAccess, keyName, memberName, unwrap } from "./source-ast.mjs";
|
|
2
|
+
import ts from "typescript";
|
|
3
|
+
|
|
4
|
+
//#region ../../packages/core/src/tooling/check/code-style-conventions.ts
|
|
5
|
+
const AWAITED_LOGGER_NAMES = new Set(["log", "logger"]);
|
|
6
|
+
/** Logger methods that return the logger synchronously since 5.30. */
|
|
7
|
+
const SYNC_LOG_METHODS = new Set([
|
|
8
|
+
"info",
|
|
9
|
+
"warn",
|
|
10
|
+
"error",
|
|
11
|
+
"debug",
|
|
12
|
+
"success",
|
|
13
|
+
"fatal",
|
|
14
|
+
"log",
|
|
15
|
+
"assert"
|
|
16
|
+
]);
|
|
17
|
+
function checkAwaitLog(node, findings) {
|
|
18
|
+
if (!ts.isAwaitExpression(node)) return;
|
|
19
|
+
const argument = unwrap(node.expression);
|
|
20
|
+
if (!ts.isCallExpression(argument)) return;
|
|
21
|
+
const callee = unwrap(argument.expression);
|
|
22
|
+
if (!isMemberAccess(callee)) return;
|
|
23
|
+
const owner = unwrap(callee.expression);
|
|
24
|
+
if (!ts.isIdentifier(owner) || !AWAITED_LOGGER_NAMES.has(owner.text)) return;
|
|
25
|
+
const method = memberName(callee);
|
|
26
|
+
if (!method || !SYNC_LOG_METHODS.has(method)) return;
|
|
27
|
+
findings.push({
|
|
28
|
+
code: "WL9010",
|
|
29
|
+
severity: "warning",
|
|
30
|
+
node,
|
|
31
|
+
message: `\`${owner.text}.${method}()\` returns the logger synchronously; \`await\` does nothing here. Remove it (use \`await log.flush()\` to wait for delivery).`
|
|
32
|
+
});
|
|
33
|
+
}
|
|
34
|
+
/** Handler type annotations that mark a constant as a controller. */
|
|
35
|
+
const HANDLER_TYPE_PATTERN = /RequestHandler$/;
|
|
36
|
+
const CONTROLLER_NAME_PATTERN = /Controller$/;
|
|
37
|
+
function hasHandlerType(declaration) {
|
|
38
|
+
const type = declaration.type;
|
|
39
|
+
return type !== void 0 && ts.isTypeReferenceNode(type) && ts.isIdentifier(type.typeName) && HANDLER_TYPE_PATTERN.test(type.typeName.text);
|
|
40
|
+
}
|
|
41
|
+
function controllerIdentifiers(statement) {
|
|
42
|
+
if (ts.isFunctionDeclaration(statement) || ts.isClassDeclaration(statement)) return statement.name && CONTROLLER_NAME_PATTERN.test(statement.name.text) ? [statement.name] : [];
|
|
43
|
+
if (!ts.isVariableStatement(statement)) return [];
|
|
44
|
+
const found = [];
|
|
45
|
+
for (const declaration of statement.declarationList.declarations) {
|
|
46
|
+
if (!ts.isIdentifier(declaration.name)) continue;
|
|
47
|
+
if (CONTROLLER_NAME_PATTERN.test(declaration.name.text) || hasHandlerType(declaration)) found.push(declaration.name);
|
|
48
|
+
}
|
|
49
|
+
return found;
|
|
50
|
+
}
|
|
51
|
+
function ordinal(position) {
|
|
52
|
+
if (position === 2) return "2nd";
|
|
53
|
+
if (position === 3) return "3rd";
|
|
54
|
+
return `${position}th`;
|
|
55
|
+
}
|
|
56
|
+
function checkOneControllerPerFile(sourceFile, findings) {
|
|
57
|
+
const controllers = sourceFile.statements.flatMap(controllerIdentifiers);
|
|
58
|
+
const first = controllers[0];
|
|
59
|
+
if (!first) return;
|
|
60
|
+
controllers.slice(1).forEach((identifier, index) => {
|
|
61
|
+
findings.push({
|
|
62
|
+
code: "WL9011",
|
|
63
|
+
severity: "warning",
|
|
64
|
+
node: identifier,
|
|
65
|
+
message: `\`${identifier.text}\` is the ${ordinal(index + 2)} controller in this file (after \`${first.text}\`). Move it to its own \`*.controller.ts\` file.`
|
|
66
|
+
});
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
/** A string/number literal type, or a union made only of them. */
|
|
70
|
+
function isLiteralType(node) {
|
|
71
|
+
if (!node) return false;
|
|
72
|
+
if (ts.isLiteralTypeNode(node)) return true;
|
|
73
|
+
return ts.isUnionTypeNode(node) && node.types.every((member) => ts.isLiteralTypeNode(member));
|
|
74
|
+
}
|
|
75
|
+
function checkKindDiscriminator(node, findings) {
|
|
76
|
+
if (!ts.isPropertySignature(node) || ts.isComputedPropertyName(node.name)) return;
|
|
77
|
+
if (keyName(node.name) !== "kind" || !isLiteralType(node.type)) return;
|
|
78
|
+
findings.push({
|
|
79
|
+
code: "WL9012",
|
|
80
|
+
severity: "warning",
|
|
81
|
+
node: node.name,
|
|
82
|
+
message: "Name this discriminator `type`, not `kind` (the framework's convention for tagged unions)."
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The code-style conventions in one parsed file, all reported as warnings:
|
|
87
|
+
*
|
|
88
|
+
* - `WL9010` `await` on a synchronous `log.*()` call;
|
|
89
|
+
* - `WL9011` a second (third, …) controller in one file;
|
|
90
|
+
* - `WL9012` a tagged union whose discriminator is `kind` instead of `type`.
|
|
91
|
+
*/
|
|
92
|
+
function codeStyleFindings(sourceFile) {
|
|
93
|
+
const findings = [];
|
|
94
|
+
checkOneControllerPerFile(sourceFile, findings);
|
|
95
|
+
const visit = (node) => {
|
|
96
|
+
checkAwaitLog(node, findings);
|
|
97
|
+
checkKindDiscriminator(node, findings);
|
|
98
|
+
ts.forEachChild(node, visit);
|
|
99
|
+
};
|
|
100
|
+
visit(sourceFile);
|
|
101
|
+
return findings;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
//#endregion
|
|
105
|
+
export { codeStyleFindings };
|
|
106
|
+
//# sourceMappingURL=code-style-conventions.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"code-style-conventions.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/tooling/check/code-style-conventions.ts"],"sourcesContent":["import ts from \"typescript\";\nimport { isMemberAccess, keyName, memberName, type SourceFinding, unwrap } from \"./source-ast\";\n\n// ── WL9010: await on a synchronous log call ─────────────────────────────────\n\nconst AWAITED_LOGGER_NAMES: ReadonlySet<string> = new Set([\"log\", \"logger\"]);\n\n/** Logger methods that return the logger synchronously since 5.30. */\nconst SYNC_LOG_METHODS: ReadonlySet<string> = new Set([\n \"info\",\n \"warn\",\n \"error\",\n \"debug\",\n \"success\",\n \"fatal\",\n \"log\",\n \"assert\",\n]);\n\nfunction checkAwaitLog(node: ts.Node, findings: SourceFinding[]): void {\n if (!ts.isAwaitExpression(node)) return;\n\n const argument = unwrap(node.expression);\n\n if (!ts.isCallExpression(argument)) return;\n\n const callee = unwrap(argument.expression);\n\n if (!isMemberAccess(callee)) return;\n\n const owner = unwrap(callee.expression);\n\n if (!ts.isIdentifier(owner) || !AWAITED_LOGGER_NAMES.has(owner.text)) return;\n\n const method = memberName(callee);\n\n if (!method || !SYNC_LOG_METHODS.has(method)) return;\n\n findings.push({\n code: \"WL9010\",\n severity: \"warning\",\n node,\n message: `\\`${owner.text}.${method}()\\` returns the logger synchronously; \\`await\\` does nothing here. Remove it (use \\`await log.flush()\\` to wait for delivery).`,\n });\n}\n\n// ── WL9011: more than one controller in a file ──────────────────────────────\n\n/** Handler type annotations that mark a constant as a controller. */\nconst HANDLER_TYPE_PATTERN = /RequestHandler$/;\n\nconst CONTROLLER_NAME_PATTERN = /Controller$/;\n\nfunction hasHandlerType(declaration: ts.VariableDeclaration): boolean {\n const type = declaration.type;\n\n return (\n type !== undefined &&\n ts.isTypeReferenceNode(type) &&\n ts.isIdentifier(type.typeName) &&\n HANDLER_TYPE_PATTERN.test(type.typeName.text)\n );\n}\n\nfunction controllerIdentifiers(statement: ts.Statement): ts.Identifier[] {\n if (ts.isFunctionDeclaration(statement) || ts.isClassDeclaration(statement)) {\n return statement.name && CONTROLLER_NAME_PATTERN.test(statement.name.text)\n ? [statement.name]\n : [];\n }\n\n if (!ts.isVariableStatement(statement)) return [];\n\n const found: ts.Identifier[] = [];\n\n for (const declaration of statement.declarationList.declarations) {\n if (!ts.isIdentifier(declaration.name)) continue;\n\n if (CONTROLLER_NAME_PATTERN.test(declaration.name.text) || hasHandlerType(declaration)) {\n found.push(declaration.name);\n }\n }\n\n return found;\n}\n\nfunction ordinal(position: number): string {\n if (position === 2) return \"2nd\";\n if (position === 3) return \"3rd\";\n\n return `${position}th`;\n}\n\nfunction checkOneControllerPerFile(sourceFile: ts.SourceFile, findings: SourceFinding[]): void {\n const controllers = sourceFile.statements.flatMap(controllerIdentifiers);\n const first = controllers[0];\n\n if (!first) return;\n\n controllers.slice(1).forEach((identifier, index) => {\n findings.push({\n code: \"WL9011\",\n severity: \"warning\",\n node: identifier,\n message: `\\`${identifier.text}\\` is the ${ordinal(index + 2)} controller in this file (after \\`${first.text}\\`). Move it to its own \\`*.controller.ts\\` file.`,\n });\n });\n}\n\n// ── WL9012: a union discriminator named `kind` ──────────────────────────────\n\n/** A string/number literal type, or a union made only of them. */\nfunction isLiteralType(node: ts.TypeNode | undefined): boolean {\n if (!node) return false;\n if (ts.isLiteralTypeNode(node)) return true;\n\n return ts.isUnionTypeNode(node) && node.types.every((member) => ts.isLiteralTypeNode(member));\n}\n\nfunction checkKindDiscriminator(node: ts.Node, findings: SourceFinding[]): void {\n if (!ts.isPropertySignature(node) || ts.isComputedPropertyName(node.name)) return;\n if (keyName(node.name) !== \"kind\" || !isLiteralType(node.type)) return;\n\n findings.push({\n code: \"WL9012\",\n severity: \"warning\",\n node: node.name,\n message:\n \"Name this discriminator `type`, not `kind` (the framework's convention for tagged unions).\",\n });\n}\n\n/**\n * The code-style conventions in one parsed file, all reported as warnings:\n *\n * - `WL9010` `await` on a synchronous `log.*()` call;\n * - `WL9011` a second (third, …) controller in one file;\n * - `WL9012` a tagged union whose discriminator is `kind` instead of `type`.\n */\nexport function codeStyleFindings(sourceFile: ts.SourceFile): SourceFinding[] {\n const findings: SourceFinding[] = [];\n\n checkOneControllerPerFile(sourceFile, findings);\n\n // Every node, type nodes included: discriminators live in type literals and interfaces.\n const visit = (node: ts.Node): void => {\n checkAwaitLog(node, findings);\n checkKindDiscriminator(node, findings);\n ts.forEachChild(node, visit);\n };\n\n visit(sourceFile);\n\n return findings;\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { ToolingProblem } from "../problem.mjs";
|
|
2
|
+
|
|
3
|
+
//#region ../../packages/core/src/tooling/check/conventions-step.d.ts
|
|
4
|
+
/** Matches a project-relative path of a file the framework loads by itself. */
|
|
5
|
+
declare function isAutoLoadedFile(relativePath: string): boolean;
|
|
6
|
+
/**
|
|
7
|
+
* The convention problems in one source file, in source order:
|
|
8
|
+
*
|
|
9
|
+
* - `WL9001` an import of a file the framework loads by itself (`routes.ts`,
|
|
10
|
+
* `main.ts`, `worker.ts`, `events/*`) — importing it registers it twice;
|
|
11
|
+
* - `WL9002` a relative import ending in `.js`;
|
|
12
|
+
* - `WL9003` a relative import from one `src/app/<module>` into another, which
|
|
13
|
+
* should use the `app/<module>/...` alias;
|
|
14
|
+
* - `WL9005`–`WL9009` the security conventions (see `securityFindings`):
|
|
15
|
+
* `request.all()` into a query or service, a mutating route with no guard
|
|
16
|
+
* and no `public: true`, a redirect target from request input, sensitive
|
|
17
|
+
* values in logs, unbounded regexes on request input;
|
|
18
|
+
* - `WL9010`–`WL9012` warnings: `await log.*()`, a second controller in one
|
|
19
|
+
* file, a `kind` discriminator.
|
|
20
|
+
*
|
|
21
|
+
* A `// warlock-check-ignore WL9006` comment on the problem's line or the line
|
|
22
|
+
* above silences that code there; without codes it silences every one.
|
|
23
|
+
*/
|
|
24
|
+
declare function checkFileConventions(relativePath: string, source: string, cwd: string): ToolingProblem[];
|
|
25
|
+
/** `WL9004` when the project tsconfig turns on legacy decorators. */
|
|
26
|
+
declare function checkTsconfigConventions(cwd: string, project?: string): ToolingProblem[];
|
|
27
|
+
/**
|
|
28
|
+
* Run every convention check over `files` (project-relative) plus the
|
|
29
|
+
* project tsconfig.
|
|
30
|
+
*/
|
|
31
|
+
declare function runConventions(cwd: string, files: readonly string[], project?: string): ToolingProblem[];
|
|
32
|
+
//#endregion
|
|
33
|
+
export { checkFileConventions, checkTsconfigConventions, isAutoLoadedFile, runConventions };
|
|
34
|
+
//# sourceMappingURL=conventions-step.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"conventions-step.d.mts","names":[],"sources":["../../../../../../../../../packages/core/src/tooling/check/conventions-step.ts"],"mappings":";;;;iBAegB,gBAAA,CAAiB,YAAoB;AAArD;;;;AAAqD;AAwLrD;;;;;;;;;AAIiB;AAmBjB;;;AA/MA,iBAwLgB,oBAAA,CACd,YAAA,UACA,MAAA,UACA,GAAA,WACC,cAAc;;iBAmBD,wBAAA,CAAyB,GAAA,UAAa,OAAA,YAA4B,cAAc;;;AAAA;AAyChG;iBAAgB,cAAA,CACd,GAAA,UACA,KAAA,qBACA,OAAA,YACC,cAAc"}
|