@warlock.js/core 5.30.0 → 5.32.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +165 -36
- package/README.md +28 -23
- package/bin/source-load-hook.mjs +63 -0
- package/bin/warlock.js +102 -42
- package/esm/application/app.d.mts +3 -3
- package/esm/application/app.d.mts.map +1 -1
- package/esm/application/application-config-types.d.mts +1 -2
- package/esm/application/application-config-types.d.mts.map +1 -1
- package/esm/application/application.d.mts +5 -7
- package/esm/application/application.d.mts.map +1 -1
- package/esm/application/application.mjs +3 -1
- package/esm/application/application.mjs.map +1 -1
- package/esm/application/boot-signal.d.mts +14 -12
- package/esm/application/boot-signal.d.mts.map +1 -1
- package/esm/application/index.d.mts +2 -1
- package/esm/application/index.mjs +1 -1
- package/esm/application/public-url.d.mts +1 -2
- package/esm/application/public-url.d.mts.map +1 -1
- package/esm/application/roles.d.mts +10 -11
- package/esm/application/roles.d.mts.map +1 -1
- package/esm/benchmark/benchmark-snapshots.d.mts +1 -3
- package/esm/benchmark/benchmark-snapshots.d.mts.map +1 -1
- package/esm/benchmark/benchmark.d.mts +1 -3
- package/esm/benchmark/benchmark.d.mts.map +1 -1
- package/esm/benchmark/channels/console.channel.d.mts +1 -3
- package/esm/benchmark/channels/console.channel.d.mts.map +1 -1
- package/esm/benchmark/channels/noop.channel.d.mts +1 -3
- package/esm/benchmark/channels/noop.channel.d.mts.map +1 -1
- package/esm/benchmark/index.mjs +1 -1
- package/esm/benchmark/profiler.d.mts +1 -3
- package/esm/benchmark/profiler.d.mts.map +1 -1
- package/esm/benchmark/profiler.mjs +2 -1
- package/esm/benchmark/profiler.mjs.map +1 -1
- package/esm/benchmark/types.d.mts +22 -17
- package/esm/benchmark/types.d.mts.map +1 -1
- package/esm/bootstrap/setup.d.mts +1 -2
- package/esm/bootstrap/setup.d.mts.map +1 -1
- package/esm/bootstrap.d.mts +1 -2
- package/esm/bootstrap.d.mts.map +1 -1
- package/esm/cache/database-cache-driver.d.mts +3 -5
- package/esm/cache/database-cache-driver.d.mts.map +1 -1
- package/esm/cache/database-cache-driver.mjs +1 -1
- package/esm/cache/index.d.mts +2 -1
- package/esm/cache/index.mjs +1 -1
- package/esm/cli/cli-commands.manager.mjs +6 -3
- package/esm/cli/cli-commands.manager.mjs.map +1 -1
- package/esm/cli/commands/add.command.mjs +4 -2
- package/esm/cli/commands/add.command.mjs.map +1 -1
- package/esm/cli/commands/agents-md/agents-md-command.action.mjs +70 -0
- package/esm/cli/commands/agents-md/agents-md-command.action.mjs.map +1 -0
- package/esm/cli/commands/agents-md.command.mjs +38 -0
- package/esm/cli/commands/agents-md.command.mjs.map +1 -0
- package/esm/cli/commands/board/board-command.action.mjs +279 -0
- package/esm/cli/commands/board/board-command.action.mjs.map +1 -0
- package/esm/cli/commands/board.command.mjs +78 -0
- package/esm/cli/commands/board.command.mjs.map +1 -0
- package/esm/cli/commands/build.command.mjs +6 -1
- package/esm/cli/commands/build.command.mjs.map +1 -1
- package/esm/cli/commands/check/check-command.action.mjs +57 -0
- package/esm/cli/commands/check/check-command.action.mjs.map +1 -0
- package/esm/cli/commands/check/child-typecheck.mjs +66 -0
- package/esm/cli/commands/check/child-typecheck.mjs.map +1 -0
- package/esm/cli/commands/check/format-problems.mjs +43 -0
- package/esm/cli/commands/check/format-problems.mjs.map +1 -0
- package/esm/cli/commands/check/typecheck-command.action.mjs +61 -0
- package/esm/cli/commands/check/typecheck-command.action.mjs.map +1 -0
- package/esm/cli/commands/check.command.mjs +50 -0
- package/esm/cli/commands/check.command.mjs.map +1 -0
- package/esm/cli/commands/dev-server.command.mjs +12 -3
- package/esm/cli/commands/dev-server.command.mjs.map +1 -1
- package/esm/cli/commands/doctor/boot-for-diagnostics.mjs +8 -3
- package/esm/cli/commands/doctor/boot-for-diagnostics.mjs.map +1 -1
- package/esm/cli/commands/doctor/check.types.d.mts +89 -0
- package/esm/cli/commands/doctor/check.types.d.mts.map +1 -0
- package/esm/cli/commands/doctor/checks/config.check.mjs +1 -0
- package/esm/cli/commands/doctor/checks/config.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/connectors.check.mjs +2 -0
- package/esm/cli/commands/doctor/checks/connectors.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/handler-signature.check.mjs +1 -0
- package/esm/cli/commands/doctor/checks/handler-signature.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/health.check.mjs +3 -0
- package/esm/cli/commands/doctor/checks/health.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/jwt-secret.check.mjs +1 -0
- package/esm/cli/commands/doctor/checks/jwt-secret.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/locales-ts-deprecated.check.mjs +23 -27
- package/esm/cli/commands/doctor/checks/locales-ts-deprecated.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/optional-peers.check.mjs +1 -0
- package/esm/cli/commands/doctor/checks/optional-peers.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs +4 -0
- package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/routes.check.mjs +3 -0
- package/esm/cli/commands/doctor/checks/routes.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/doctor-command.action.mjs +15 -6
- package/esm/cli/commands/doctor/doctor-command.action.mjs.map +1 -1
- package/esm/cli/commands/doctor/format-report.mjs +30 -2
- package/esm/cli/commands/doctor/format-report.mjs.map +1 -1
- package/esm/cli/commands/doctor.command.mjs +4 -0
- package/esm/cli/commands/doctor.command.mjs.map +1 -1
- package/esm/cli/commands/explain/explain-command.action.mjs +64 -0
- package/esm/cli/commands/explain/explain-command.action.mjs.map +1 -0
- package/esm/cli/commands/explain.command.mjs +23 -0
- package/esm/cli/commands/explain.command.mjs.map +1 -0
- package/esm/cli/commands/generate/generate.command.mjs +124 -124
- package/esm/cli/commands/generate/generate.command.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/controller.generator.mjs +5 -2
- package/esm/cli/commands/generate/generators/controller.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/endpoint.generator.mjs +313 -0
- package/esm/cli/commands/generate/generators/endpoint.generator.mjs.map +1 -0
- package/esm/cli/commands/generate/generators/migration.generator.mjs +1 -1
- package/esm/cli/commands/generate/generators/migration.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/model.generator.mjs +4 -3
- package/esm/cli/commands/generate/generators/model.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/repository.generator.mjs +3 -1
- package/esm/cli/commands/generate/generators/repository.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/resource.generator.mjs +3 -1
- package/esm/cli/commands/generate/generators/resource.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/service.generator.mjs +3 -1
- package/esm/cli/commands/generate/generators/service.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/templates/endpoint-stubs.mjs +341 -0
- package/esm/cli/commands/generate/templates/endpoint-stubs.mjs.map +1 -0
- package/esm/cli/commands/generate/templates/stubs.mjs +19 -6
- package/esm/cli/commands/generate/templates/stubs.mjs.map +1 -1
- package/esm/cli/commands/generate/utils/endpoint-schema.mjs +136 -0
- package/esm/cli/commands/generate/utils/endpoint-schema.mjs.map +1 -0
- package/esm/cli/commands/generate/utils/name-parser.mjs +2 -2
- package/esm/cli/commands/generate/utils/name-parser.mjs.map +1 -1
- package/esm/cli/commands/generate/utils/path-resolver.mjs +1 -1
- package/esm/cli/commands/generate/utils/prompt.mjs.map +1 -1
- package/esm/cli/commands/generate/utils/writer.mjs +38 -13
- package/esm/cli/commands/generate/utils/writer.mjs.map +1 -1
- package/esm/cli/commands/inspect/inspect-command.action.mjs +73 -0
- package/esm/cli/commands/inspect/inspect-command.action.mjs.map +1 -0
- package/esm/cli/commands/inspect.command.mjs +39 -0
- package/esm/cli/commands/inspect.command.mjs.map +1 -0
- package/esm/cli/commands/issue/collect-environment.mjs +187 -0
- package/esm/cli/commands/issue/collect-environment.mjs.map +1 -0
- package/esm/cli/commands/issue/issue-command.action.mjs +70 -0
- package/esm/cli/commands/issue/issue-command.action.mjs.map +1 -0
- package/esm/cli/commands/issue.command.mjs +31 -0
- package/esm/cli/commands/issue.command.mjs.map +1 -0
- package/esm/cli/commands/mcp/mcp-command.action.mjs +104 -0
- package/esm/cli/commands/mcp/mcp-command.action.mjs.map +1 -0
- package/esm/cli/commands/mcp.command.mjs +76 -0
- package/esm/cli/commands/mcp.command.mjs.map +1 -0
- package/esm/cli/commands/openapi-generator.action.mjs +1 -1
- package/esm/cli/commands/openapi-generator.action.mjs.map +1 -1
- package/esm/cli/commands/openapi-generator.command.mjs.map +1 -1
- package/esm/cli/commands/postman-generator.action.mjs +1 -1
- package/esm/cli/commands/postman-generator.action.mjs.map +1 -1
- package/esm/cli/commands/postman-generator.command.mjs.map +1 -1
- package/esm/cli/commands/routes/format-routes-table.mjs +1 -1
- package/esm/cli/commands/routes/route-row.mjs +1 -1
- package/esm/cli/commands/routes/routes-diff.action.mjs +3 -3
- package/esm/cli/commands/routes/routes-diff.action.mjs.map +1 -1
- package/esm/cli/commands/test.command.mjs +131 -0
- package/esm/cli/commands/test.command.mjs.map +1 -0
- package/esm/cli/commands/trace/trace-command.action.mjs +145 -0
- package/esm/cli/commands/trace/trace-command.action.mjs.map +1 -0
- package/esm/cli/commands/trace.command.mjs +60 -0
- package/esm/cli/commands/trace.command.mjs.map +1 -0
- package/esm/cli/commands/typecheck.command.mjs +40 -0
- package/esm/cli/commands/typecheck.command.mjs.map +1 -0
- package/esm/cli/commands/upgrade.command.mjs +46 -0
- package/esm/cli/commands/upgrade.command.mjs.map +1 -0
- package/esm/cli/commands-loader.mjs +1 -1
- package/esm/cli/flush-and-exit.mjs +34 -0
- package/esm/cli/flush-and-exit.mjs.map +1 -0
- package/esm/cli/framework-cli-commands.mjs +25 -1
- package/esm/cli/framework-cli-commands.mjs.map +1 -1
- package/esm/cli/parse-cli-args.mjs +3 -2
- package/esm/cli/parse-cli-args.mjs.map +1 -1
- package/esm/cli/start.d.mts +1 -1
- package/esm/cli/string-similarity.mjs +1 -1
- package/esm/commands/cli-command.d.mts +2 -4
- package/esm/commands/cli-command.d.mts.map +1 -1
- package/esm/commands/index.d.mts +2 -1
- package/esm/commands/index.mjs +1 -1
- package/esm/commands/types.d.mts +8 -8
- package/esm/commands/types.d.mts.map +1 -1
- package/esm/config/config-getter.d.mts +2 -3
- package/esm/config/config-getter.d.mts.map +1 -1
- package/esm/config/config-getter.mjs +5 -5
- package/esm/config/config-getter.mjs.map +1 -1
- package/esm/config/config-handlers.d.mts +1 -3
- package/esm/config/config-handlers.d.mts.map +1 -1
- package/esm/config/config-loader.d.mts +1 -2
- package/esm/config/config-loader.d.mts.map +1 -1
- package/esm/config/config-loader.mjs +35 -14
- package/esm/config/config-loader.mjs.map +1 -1
- package/esm/config/config-manager.mjs +1 -1
- package/esm/config/config-schema.d.mts +70 -0
- package/esm/config/config-schema.d.mts.map +1 -0
- package/esm/config/config-schema.mjs +77 -0
- package/esm/config/config-schema.mjs.map +1 -0
- package/esm/config/config-setter.d.mts +2 -4
- package/esm/config/config-setter.d.mts.map +1 -1
- package/esm/config/config-setter.mjs +2 -2
- package/esm/config/config-setter.mjs.map +1 -1
- package/esm/config/config-special-handlers.d.mts +2 -4
- package/esm/config/config-special-handlers.d.mts.map +1 -1
- package/esm/config/index.d.mts +7 -0
- package/esm/config/index.mjs +2 -1
- package/esm/config/types.d.mts +4 -5
- package/esm/config/types.d.mts.map +1 -1
- package/esm/connectors/access-connector.d.mts +1 -3
- package/esm/connectors/access-connector.d.mts.map +1 -1
- package/esm/connectors/access-connector.mjs +2 -2
- package/esm/connectors/access-connector.mjs.map +1 -1
- package/esm/connectors/ai-connector.d.mts +1 -3
- package/esm/connectors/ai-connector.d.mts.map +1 -1
- package/esm/connectors/ai-connector.mjs +2 -2
- package/esm/connectors/ai-connector.mjs.map +1 -1
- package/esm/connectors/assert-no-reserved-connector-names.d.mts +1 -3
- package/esm/connectors/assert-no-reserved-connector-names.d.mts.map +1 -1
- package/esm/connectors/assert-no-reserved-connector-names.mjs +2 -1
- package/esm/connectors/assert-no-reserved-connector-names.mjs.map +1 -1
- package/esm/connectors/assert-unique-connector-names.d.mts +1 -3
- package/esm/connectors/assert-unique-connector-names.d.mts.map +1 -1
- package/esm/connectors/assert-unique-connector-names.mjs +26 -1
- package/esm/connectors/assert-unique-connector-names.mjs.map +1 -1
- package/esm/connectors/base-connector.d.mts +1 -3
- package/esm/connectors/base-connector.d.mts.map +1 -1
- package/esm/connectors/cache-connector.d.mts +1 -3
- package/esm/connectors/cache-connector.d.mts.map +1 -1
- package/esm/connectors/cache-connector.mjs +3 -3
- package/esm/connectors/cache-connector.mjs.map +1 -1
- package/esm/connectors/connectors-manager.d.mts +2 -4
- package/esm/connectors/connectors-manager.d.mts.map +1 -1
- package/esm/connectors/connectors-manager.mjs +2 -2
- package/esm/connectors/connectors-manager.mjs.map +1 -1
- package/esm/connectors/database-connector.d.mts +1 -3
- package/esm/connectors/database-connector.d.mts.map +1 -1
- package/esm/connectors/database-connector.mjs +2 -2
- package/esm/connectors/database-connector.mjs.map +1 -1
- package/esm/connectors/describe-server-address.mjs +4 -4
- package/esm/connectors/describe-server-address.mjs.map +1 -1
- package/esm/connectors/herald-connector.d.mts +1 -3
- package/esm/connectors/herald-connector.d.mts.map +1 -1
- package/esm/connectors/herald-connector.mjs +2 -2
- package/esm/connectors/herald-connector.mjs.map +1 -1
- package/esm/connectors/http-connector.d.mts +1 -3
- package/esm/connectors/http-connector.d.mts.map +1 -1
- package/esm/connectors/http-connector.mjs +11 -9
- package/esm/connectors/http-connector.mjs.map +1 -1
- package/esm/connectors/index.d.mts +2 -1
- package/esm/connectors/index.mjs +1 -1
- package/esm/connectors/logger-connector.d.mts +1 -3
- package/esm/connectors/logger-connector.d.mts.map +1 -1
- package/esm/connectors/logger-connector.mjs +2 -2
- package/esm/connectors/logger-connector.mjs.map +1 -1
- package/esm/connectors/mail-connector.d.mts +1 -3
- package/esm/connectors/mail-connector.d.mts.map +1 -1
- package/esm/connectors/mail-connector.mjs +2 -2
- package/esm/connectors/mail-connector.mjs.map +1 -1
- package/esm/connectors/notifications-connector.d.mts +1 -3
- package/esm/connectors/notifications-connector.d.mts.map +1 -1
- package/esm/connectors/notifications-connector.mjs +2 -2
- package/esm/connectors/notifications-connector.mjs.map +1 -1
- package/esm/connectors/register-configured-connectors.d.mts +2 -4
- package/esm/connectors/register-configured-connectors.d.mts.map +1 -1
- package/esm/connectors/single-server-warnings.mjs.map +1 -1
- package/esm/connectors/socket-connector.d.mts +1 -3
- package/esm/connectors/socket-connector.d.mts.map +1 -1
- package/esm/connectors/socket-connector.mjs +12 -10
- package/esm/connectors/socket-connector.mjs.map +1 -1
- package/esm/connectors/storage.connector.d.mts +1 -3
- package/esm/connectors/storage.connector.d.mts.map +1 -1
- package/esm/connectors/storage.connector.mjs +2 -2
- package/esm/connectors/storage.connector.mjs.map +1 -1
- package/esm/connectors/types.d.mts +17 -14
- package/esm/connectors/types.d.mts.map +1 -1
- package/esm/container/container-instance-registry.mjs.map +1 -1
- package/esm/container/development-app-modules.d.mts +7 -5
- package/esm/container/development-app-modules.d.mts.map +1 -1
- package/esm/container/development-model-modules.d.mts +6 -5
- package/esm/container/development-model-modules.d.mts.map +1 -1
- package/esm/container/index.d.mts +4 -4
- package/esm/container/index.d.mts.map +1 -1
- package/esm/container/index.mjs.map +1 -1
- package/esm/database/index.d.mts +3 -1
- package/esm/database/index.mjs +1 -1
- package/esm/database/migrate-action.mjs +1 -1
- package/esm/database/migrate-action.mjs.map +1 -1
- package/esm/database/models/database-log/database-log.d.mts +2 -31
- package/esm/database/models/database-log/database-log.d.mts.map +1 -1
- package/esm/database/models/database-log/index.d.mts +2 -1
- package/esm/database/models/database-log/index.mjs +1 -1
- package/esm/database/seed-command-action.mjs +1 -1
- package/esm/database/seeds/seeder.d.mts +2 -4
- package/esm/database/seeds/seeder.d.mts.map +1 -1
- package/esm/database/seeds/seeder.errors.d.mts +6 -3
- package/esm/database/seeds/seeder.errors.d.mts.map +1 -1
- package/esm/database/seeds/seeder.errors.mjs +2 -0
- package/esm/database/seeds/seeder.errors.mjs.map +1 -1
- package/esm/database/seeds/seeders.manager.mjs +2 -1
- package/esm/database/seeds/seeders.manager.mjs.map +1 -1
- package/esm/database/seeds/types.d.mts +7 -8
- package/esm/database/seeds/types.d.mts.map +1 -1
- package/esm/database/utils.d.mts +4 -5
- package/esm/database/utils.d.mts.map +1 -1
- package/esm/dev-server/app-module-registry.mjs +1 -1
- package/esm/dev-server/boot-precondition-error.mjs +1 -0
- package/esm/dev-server/boot-precondition-error.mjs.map +1 -1
- package/esm/dev-server/create-worker.mjs +17 -9
- package/esm/dev-server/create-worker.mjs.map +1 -1
- package/esm/dev-server/dependency-graph.d.mts +1 -3
- package/esm/dev-server/dependency-graph.d.mts.map +1 -1
- package/esm/dev-server/dependency-graph.mjs +1 -1
- package/esm/dev-server/dependency-graph.mjs.map +1 -1
- package/esm/dev-server/dev-agent-tooling.mjs +135 -0
- package/esm/dev-server/dev-agent-tooling.mjs.map +1 -0
- package/esm/dev-server/dev-logger.mjs.map +1 -1
- package/esm/dev-server/development-server.mjs +8 -0
- package/esm/dev-server/development-server.mjs.map +1 -1
- package/esm/dev-server/extract-translation-keys.mjs +16 -17
- package/esm/dev-server/extract-translation-keys.mjs.map +1 -1
- package/esm/dev-server/file-manager.d.mts +3 -7
- package/esm/dev-server/file-manager.d.mts.map +1 -1
- package/esm/dev-server/file-operations.d.mts +1 -3
- package/esm/dev-server/file-operations.d.mts.map +1 -1
- package/esm/dev-server/files-orchestrator.mjs +4 -5
- package/esm/dev-server/files-orchestrator.mjs.map +1 -1
- package/esm/dev-server/files-watcher.mjs +12 -11
- package/esm/dev-server/files-watcher.mjs.map +1 -1
- package/esm/dev-server/health-checker/checkers/eslint-health-checker.mjs +2 -3
- package/esm/dev-server/health-checker/checkers/eslint-health-checker.mjs.map +1 -1
- package/esm/dev-server/health-checker/checkers/oxlint-health-checker.mjs +33 -0
- package/esm/dev-server/health-checker/checkers/oxlint-health-checker.mjs.map +1 -0
- package/esm/dev-server/health-checker/checkers/typescript-health-checker.mjs +36 -115
- package/esm/dev-server/health-checker/checkers/typescript-health-checker.mjs.map +1 -1
- package/esm/dev-server/health-checker/default-health-checkers.mjs +31 -0
- package/esm/dev-server/health-checker/default-health-checkers.mjs.map +1 -0
- package/esm/dev-server/health-checker/file-health-checker.contract.d.mts +12 -6
- package/esm/dev-server/health-checker/file-health-checker.contract.d.mts.map +1 -1
- package/esm/dev-server/health-checker/file-health-result.d.mts +2 -2
- package/esm/dev-server/health-checker/file-health-result.d.mts.map +1 -1
- package/esm/dev-server/health-checker/files-healthcare.manager.mjs +16 -4
- package/esm/dev-server/health-checker/files-healthcare.manager.mjs.map +1 -1
- package/esm/dev-server/health-checker/oxlint-runner.mjs +303 -0
- package/esm/dev-server/health-checker/oxlint-runner.mjs.map +1 -0
- package/esm/dev-server/health-checker/workers/eslint-health.worker.d.mts +1 -1
- package/esm/dev-server/health-checker/workers/oxlint-health.worker.d.mts +1 -0
- package/esm/dev-server/health-checker/workers/oxlint-health.worker.mjs +42 -0
- package/esm/dev-server/health-checker/workers/oxlint-health.worker.mjs.map +1 -0
- package/esm/dev-server/health-checker/workers/ts-health.worker.d.mts +1 -1
- package/esm/dev-server/health-checker/workers/ts-health.worker.mjs +40 -174
- package/esm/dev-server/health-checker/workers/ts-health.worker.mjs.map +1 -1
- package/esm/dev-server/loader/hook-thread.d.mts +4 -8
- package/esm/dev-server/loader/hook-thread.d.mts.map +1 -1
- package/esm/dev-server/loader/load-hook.d.mts +10 -6
- package/esm/dev-server/loader/load-hook.d.mts.map +1 -1
- package/esm/dev-server/loader/load-hook.mjs +4 -3
- package/esm/dev-server/loader/load-hook.mjs.map +1 -1
- package/esm/dev-server/loader/loader-port-acks.mjs +1 -1
- package/esm/dev-server/loader/loader-port-acks.mjs.map +1 -1
- package/esm/dev-server/loader/own-resolver.mjs +1 -1
- package/esm/dev-server/loader/register-loader.mjs +4 -3
- package/esm/dev-server/loader/register-loader.mjs.map +1 -1
- package/esm/dev-server/loader/resolve-hook.d.mts +2 -2
- package/esm/dev-server/loader/resolve-hook.d.mts.map +1 -1
- package/esm/dev-server/loader/resolve-hook.mjs +3 -2
- package/esm/dev-server/loader/resolve-hook.mjs.map +1 -1
- package/esm/dev-server/loader/transpile-cache.mjs +3 -2
- package/esm/dev-server/loader/transpile-cache.mjs.map +1 -1
- package/esm/dev-server/manifest-manager.d.mts +1 -3
- package/esm/dev-server/manifest-manager.d.mts.map +1 -1
- package/esm/dev-server/model-module-registry.mjs +3 -3
- package/esm/dev-server/model-module-registry.mjs.map +1 -1
- package/esm/dev-server/model-resource-typings.mjs +40 -47
- package/esm/dev-server/model-resource-typings.mjs.map +1 -1
- package/esm/dev-server/module-loader.mjs +3 -2
- package/esm/dev-server/module-loader.mjs.map +1 -1
- package/esm/dev-server/package-json-manager.mjs +1 -1
- package/esm/dev-server/parse-imports.mjs +7 -39
- package/esm/dev-server/parse-imports.mjs.map +1 -1
- package/esm/dev-server/read-config-ast.mjs +3 -33
- package/esm/dev-server/read-config-ast.mjs.map +1 -1
- package/esm/dev-server/ready-block.mjs +1 -1
- package/esm/dev-server/route-types-publisher.mjs +1 -1
- package/esm/dev-server/shortcuts.mjs +1 -1
- package/esm/dev-server/special-files-collector.d.mts +2 -4
- package/esm/dev-server/special-files-collector.d.mts.map +1 -1
- package/esm/dev-server/start-development-server.mjs.map +1 -1
- package/esm/dev-server/supervisor.mjs +1 -1
- package/esm/dev-server/translation-keys-sources.mjs +1 -1
- package/esm/dev-server/translation-keys-sources.mjs.map +1 -1
- package/esm/dev-server/tsconfig-manager.mjs +3 -3
- package/esm/dev-server/tsconfig-manager.mjs.map +1 -1
- package/esm/dev-server/type-generator.mjs +31 -38
- package/esm/dev-server/type-generator.mjs.map +1 -1
- package/esm/dev-server/types.d.mts +3 -4
- package/esm/dev-server/types.d.mts.map +1 -1
- package/esm/dev-server/update-check-cache.mjs +2 -2
- package/esm/dev-server/update-check-cache.mjs.map +1 -1
- package/esm/encryption/encrypt.d.mts +2 -3
- package/esm/encryption/encrypt.d.mts.map +1 -1
- package/esm/encryption/hash.d.mts +1 -2
- package/esm/encryption/hash.d.mts.map +1 -1
- package/esm/encryption/index.mjs +1 -1
- package/esm/encryption/password.d.mts +2 -3
- package/esm/encryption/password.d.mts.map +1 -1
- package/esm/encryption/types.d.mts +2 -3
- package/esm/encryption/types.d.mts.map +1 -1
- package/esm/errors/container-key-missing-error.mjs +1 -0
- package/esm/errors/container-key-missing-error.mjs.map +1 -1
- package/esm/errors/error-codes.d.mts +660 -0
- package/esm/errors/error-codes.d.mts.map +1 -0
- package/esm/errors/error-codes.mjs +634 -0
- package/esm/errors/error-codes.mjs.map +1 -0
- package/esm/errors/esbuild-binary-missing-error.mjs +1 -0
- package/esm/errors/esbuild-binary-missing-error.mjs.map +1 -1
- package/esm/errors/index.d.mts +3 -1
- package/esm/errors/index.mjs +3 -1
- package/esm/errors/unknown-locale-error.mjs +1 -0
- package/esm/errors/unknown-locale-error.mjs.map +1 -1
- package/esm/errors/warlock-error.d.mts +21 -0
- package/esm/errors/warlock-error.d.mts.map +1 -0
- package/esm/errors/warlock-error.mjs +22 -0
- package/esm/errors/warlock-error.mjs.map +1 -0
- package/esm/generations/add-command.action.mjs +22 -5
- package/esm/generations/add-command.action.mjs.map +1 -1
- package/esm/generations/features/access.feature.mjs +1 -1
- package/esm/generations/features/access.feature.mjs.map +1 -1
- package/esm/generations/features/bull-board.feature.mjs +3 -2
- package/esm/generations/features/bull-board.feature.mjs.map +1 -1
- package/esm/generations/features/mysql.feature.mjs.map +1 -1
- package/esm/generations/features/notifications.feature.mjs +7 -3
- package/esm/generations/features/notifications.feature.mjs.map +1 -1
- package/esm/generations/features/queue.feature.mjs +1 -1
- package/esm/generations/features/queue.feature.mjs.map +1 -1
- package/esm/generations/features/react-email.feature.mjs +1 -1
- package/esm/generations/features/react-email.feature.mjs.map +1 -1
- package/esm/generations/features/shadcn.feature.mjs +1 -1
- package/esm/generations/features/shadcn.feature.mjs.map +1 -1
- package/esm/generations/features/shared/link-ai-package-import.mjs +1 -1
- package/esm/generations/features/shared/link-ai-package-import.mjs.map +1 -1
- package/esm/generations/features/shared/merge-web-sitemap-config.mjs +16 -23
- package/esm/generations/features/shared/merge-web-sitemap-config.mjs.map +1 -1
- package/esm/generations/features/shared/patch-tsconfig-include.mjs +2 -2
- package/esm/generations/features/shared/patch-tsconfig-include.mjs.map +1 -1
- package/esm/generations/features/shared/relocate-conflicting-home-route.mjs +2 -2
- package/esm/generations/features/shared/relocate-conflicting-home-route.mjs.map +1 -1
- package/esm/generations/features/sitemap.feature.mjs +3 -2
- package/esm/generations/features/sitemap.feature.mjs.map +1 -1
- package/esm/generations/features/tailwind.feature.mjs +1 -1
- package/esm/generations/features/tailwind.feature.mjs.map +1 -1
- package/esm/generations/features/test.feature.mjs +11 -6
- package/esm/generations/features/test.feature.mjs.map +1 -1
- package/esm/generations/features/web.feature.mjs +1 -1
- package/esm/generations/features/web.feature.mjs.map +1 -1
- package/esm/generations/generation-fs.mjs +73 -0
- package/esm/generations/generation-fs.mjs.map +1 -0
- package/esm/generations/generation-run.mjs +185 -0
- package/esm/generations/generation-run.mjs.map +1 -0
- package/esm/generations/stubs.mjs +156 -14
- package/esm/generations/stubs.mjs.map +1 -1
- package/esm/http/boot-port-preflight.d.mts +4 -5
- package/esm/http/boot-port-preflight.d.mts.map +1 -1
- package/esm/http/boot-port-preflight.mjs +2 -2
- package/esm/http/boot-port-preflight.mjs.map +1 -1
- package/esm/http/bounded-stream-queue.d.mts +10 -0
- package/esm/http/bounded-stream-queue.d.mts.map +1 -0
- package/esm/http/bounded-stream-queue.mjs +97 -0
- package/esm/http/bounded-stream-queue.mjs.map +1 -0
- package/esm/http/build-cors-options.mjs +2 -2
- package/esm/http/build-cors-options.mjs.map +1 -1
- package/esm/http/build-rate-limit-options.d.mts +15 -3
- package/esm/http/build-rate-limit-options.d.mts.map +1 -1
- package/esm/http/build-rate-limit-options.mjs +1 -1
- package/esm/http/build-rate-limit-options.mjs.map +1 -1
- package/esm/http/conditional-request.d.mts +87 -0
- package/esm/http/conditional-request.d.mts.map +1 -0
- package/esm/http/conditional-request.mjs +121 -0
- package/esm/http/conditional-request.mjs.map +1 -0
- package/esm/http/config.d.mts +2 -4
- package/esm/http/config.d.mts.map +1 -1
- package/esm/http/config.mjs +2 -2
- package/esm/http/config.mjs.map +1 -1
- package/esm/http/context/request-context.d.mts +6 -7
- package/esm/http/context/request-context.d.mts.map +1 -1
- package/esm/http/context/request-memo.d.mts +1 -2
- package/esm/http/context/request-memo.d.mts.map +1 -1
- package/esm/http/createHttpApplication.d.mts +2 -3
- package/esm/http/createHttpApplication.d.mts.map +1 -1
- package/esm/http/createHttpApplication.mjs +2 -2
- package/esm/http/createHttpApplication.mjs.map +1 -1
- package/esm/http/csp.d.mts +12 -12
- package/esm/http/csp.d.mts.map +1 -1
- package/esm/http/csp.mjs +3 -2
- package/esm/http/csp.mjs.map +1 -1
- package/esm/http/csrf-default-guard.d.mts +2 -4
- package/esm/http/csrf-default-guard.d.mts.map +1 -1
- package/esm/http/csrf-default-guard.mjs +1 -1
- package/esm/http/csrf-default-guard.mjs.map +1 -1
- package/esm/http/csrf-origin-policy.d.mts +7 -9
- package/esm/http/csrf-origin-policy.d.mts.map +1 -1
- package/esm/http/csrf-origin-policy.mjs +2 -2
- package/esm/http/csrf-origin-policy.mjs.map +1 -1
- package/esm/http/database/RequestLog.d.mts +26 -87
- package/esm/http/database/RequestLog.d.mts.map +1 -1
- package/esm/http/error-codes.d.mts +1 -2
- package/esm/http/error-codes.d.mts.map +1 -1
- package/esm/http/error-mapper.d.mts +2 -4
- package/esm/http/error-mapper.d.mts.map +1 -1
- package/esm/http/error-mapper.mjs +2 -2
- package/esm/http/error-mapper.mjs.map +1 -1
- package/esm/http/errors/errors.d.mts +30 -29
- package/esm/http/errors/errors.d.mts.map +1 -1
- package/esm/http/errors/errors.mjs +1 -0
- package/esm/http/errors/errors.mjs.map +1 -1
- package/esm/http/escape-header-value.d.mts +17 -0
- package/esm/http/escape-header-value.d.mts.map +1 -0
- package/esm/http/escape-header-value.mjs +27 -0
- package/esm/http/escape-header-value.mjs.map +1 -0
- package/esm/http/events.d.mts +2 -4
- package/esm/http/events.d.mts.map +1 -1
- package/esm/http/flush-pending-cookies.mjs.map +1 -1
- package/esm/http/health.d.mts +4 -4
- package/esm/http/health.d.mts.map +1 -1
- package/esm/http/index.d.mts +9 -3
- package/esm/http/index.mjs +5 -2
- package/esm/http/lazy-static.mjs +194 -0
- package/esm/http/lazy-static.mjs.map +1 -0
- package/esm/http/middleware/cache-response-middleware.d.mts +2 -4
- package/esm/http/middleware/cache-response-middleware.d.mts.map +1 -1
- package/esm/http/middleware/concurrency-limit.middleware.d.mts +3 -3
- package/esm/http/middleware/concurrency-limit.middleware.d.mts.map +1 -1
- package/esm/http/middleware/idempotency.middleware.d.mts +3 -3
- package/esm/http/middleware/idempotency.middleware.d.mts.map +1 -1
- package/esm/http/middleware/idempotency.middleware.mjs +6 -6
- package/esm/http/middleware/idempotency.middleware.mjs.map +1 -1
- package/esm/http/middleware/index.d.mts +3 -1
- package/esm/http/middleware/index.mjs +1 -1
- package/esm/http/middleware/inject-request-context.d.mts +2 -4
- package/esm/http/middleware/inject-request-context.d.mts.map +1 -1
- package/esm/http/middleware/inject-request-context.mjs +3 -3
- package/esm/http/middleware/inject-request-context.mjs.map +1 -1
- package/esm/http/middleware/ip-filter.middleware.d.mts +3 -3
- package/esm/http/middleware/ip-filter.middleware.d.mts.map +1 -1
- package/esm/http/middleware/maintenance.middleware.d.mts +3 -3
- package/esm/http/middleware/maintenance.middleware.d.mts.map +1 -1
- package/esm/http/middleware/maintenance.middleware.mjs +4 -4
- package/esm/http/middleware/maintenance.middleware.mjs.map +1 -1
- package/esm/http/middleware/max-body-size.middleware.d.mts +2 -2
- package/esm/http/middleware/max-body-size.middleware.d.mts.map +1 -1
- package/esm/http/middleware/middleware-list.d.mts +1 -3
- package/esm/http/middleware/middleware-list.d.mts.map +1 -1
- package/esm/http/middleware/rate-limit.middleware.d.mts +3 -3
- package/esm/http/middleware/rate-limit.middleware.d.mts.map +1 -1
- package/esm/http/middleware/rate-limit.middleware.mjs +2 -2
- package/esm/http/middleware/rate-limit.middleware.mjs.map +1 -1
- package/esm/http/middleware/utils/cidr-match.d.mts +2 -3
- package/esm/http/middleware/utils/cidr-match.d.mts.map +1 -1
- package/esm/http/middleware/utils/idempotency-key.d.mts +3 -5
- package/esm/http/middleware/utils/idempotency-key.d.mts.map +1 -1
- package/esm/http/middleware/utils/index.d.mts +2 -1
- package/esm/http/middleware/utils/parse-size.d.mts +1 -2
- package/esm/http/middleware/utils/parse-size.d.mts.map +1 -1
- package/esm/http/middleware/utils/parse-size.mjs +2 -2
- package/esm/http/middleware/utils/parse-size.mjs.map +1 -1
- package/esm/http/plugins.d.mts +2 -4
- package/esm/http/plugins.d.mts.map +1 -1
- package/esm/http/plugins.mjs +17 -14
- package/esm/http/plugins.mjs.map +1 -1
- package/esm/http/port-preflight.d.mts +3 -4
- package/esm/http/port-preflight.d.mts.map +1 -1
- package/esm/http/rate-limit-cache-store.mjs +6 -4
- package/esm/http/rate-limit-cache-store.mjs.map +1 -1
- package/esm/http/ready-report.d.mts +15 -10
- package/esm/http/ready-report.d.mts.map +1 -1
- package/esm/http/request-controller.d.mts +1 -3
- package/esm/http/request-controller.d.mts.map +1 -1
- package/esm/http/request-log-snapshot.d.mts +26 -15
- package/esm/http/request-log-snapshot.d.mts.map +1 -1
- package/esm/http/request-log-snapshot.mjs +85 -6
- package/esm/http/request-log-snapshot.mjs.map +1 -1
- package/esm/http/request.d.mts +6 -5
- package/esm/http/request.d.mts.map +1 -1
- package/esm/http/request.mjs +13 -11
- package/esm/http/request.mjs.map +1 -1
- package/esm/http/response.d.mts +23 -12
- package/esm/http/response.d.mts.map +1 -1
- package/esm/http/response.mjs +169 -81
- package/esm/http/response.mjs.map +1 -1
- package/esm/http/safe-redirect.d.mts +50 -0
- package/esm/http/safe-redirect.d.mts.map +1 -0
- package/esm/http/safe-redirect.mjs +80 -0
- package/esm/http/safe-redirect.mjs.map +1 -0
- package/esm/http/serialized.d.mts +12 -13
- package/esm/http/serialized.d.mts.map +1 -1
- package/esm/http/server-rebuilt.d.mts +3 -5
- package/esm/http/server-rebuilt.d.mts.map +1 -1
- package/esm/http/server.d.mts +11 -9
- package/esm/http/server.d.mts.map +1 -1
- package/esm/http/server.mjs +17 -7
- package/esm/http/server.mjs.map +1 -1
- package/esm/http/stream-react-response.d.mts +7 -7
- package/esm/http/stream-react-response.d.mts.map +1 -1
- package/esm/http/stream-transport.mjs +4 -2
- package/esm/http/stream-transport.mjs.map +1 -1
- package/esm/http/tracing/index.mjs +1 -1
- package/esm/http/tracing/trace-id.d.mts +2 -3
- package/esm/http/tracing/trace-id.d.mts.map +1 -1
- package/esm/http/tracing/tracing-dispatcher.d.mts +10 -11
- package/esm/http/tracing/tracing-dispatcher.d.mts.map +1 -1
- package/esm/http/tracing/tracing-dispatcher.mjs +2 -2
- package/esm/http/tracing/tracing-dispatcher.mjs.map +1 -1
- package/esm/http/tracing/tracing.type.d.mts +11 -9
- package/esm/http/tracing/tracing.type.d.mts.map +1 -1
- package/esm/http/types.d.mts +78 -39
- package/esm/http/types.d.mts.map +1 -1
- package/esm/http/uploaded-file.d.mts +6 -5
- package/esm/http/uploaded-file.d.mts.map +1 -1
- package/esm/http/uploads/generate-image-variant.mjs +1 -1
- package/esm/http/uploads/generate-image-variants.d.mts +13 -10
- package/esm/http/uploads/generate-image-variants.d.mts.map +1 -1
- package/esm/http/uploads/generate-image-variants.mjs +62 -25
- package/esm/http/uploads/generate-image-variants.mjs.map +1 -1
- package/esm/http/uploads/image-variant-cache-entries.mjs +78 -0
- package/esm/http/uploads/image-variant-cache-entries.mjs.map +1 -0
- package/esm/http/uploads/image-variant-cache.mjs +72 -30
- package/esm/http/uploads/image-variant-cache.mjs.map +1 -1
- package/esm/http/uploads/image-variant-types.d.mts +9 -9
- package/esm/http/uploads/image-variant-types.d.mts.map +1 -1
- package/esm/http/uploads/image-variants-config-error.d.mts +4 -3
- package/esm/http/uploads/image-variants-config-error.d.mts.map +1 -1
- package/esm/http/uploads/image-variants-config-error.mjs +3 -2
- package/esm/http/uploads/image-variants-config-error.mjs.map +1 -1
- package/esm/http/uploads/index.d.mts +2 -1
- package/esm/http/uploads/index.mjs +1 -1
- package/esm/http/uploads/load-variant-source.mjs +1 -1
- package/esm/http/uploads/load-variant-source.mjs.map +1 -1
- package/esm/http/uploads/parse-uploaded-file-query.mjs +1 -1
- package/esm/http/uploads/parse-uploaded-file-query.mjs.map +1 -1
- package/esm/http/uploads/purge-image-variants.d.mts +9 -6
- package/esm/http/uploads/purge-image-variants.d.mts.map +1 -1
- package/esm/http/uploads/purge-image-variants.mjs +16 -16
- package/esm/http/uploads/purge-image-variants.mjs.map +1 -1
- package/esm/http/uploads/remote-variant-source.mjs +115 -0
- package/esm/http/uploads/remote-variant-source.mjs.map +1 -0
- package/esm/http/uploads/resolve-image-variant.d.mts +6 -9
- package/esm/http/uploads/resolve-image-variant.d.mts.map +1 -1
- package/esm/http/uploads/resolve-image-variant.mjs +10 -18
- package/esm/http/uploads/resolve-image-variant.mjs.map +1 -1
- package/esm/http/uploads/resolve-image-variants-config.mjs +7 -5
- package/esm/http/uploads/resolve-image-variants-config.mjs.map +1 -1
- package/esm/http/uploads/resolve-original-content-type.mjs +1 -1
- package/esm/http/uploads/resolve-original-content-type.mjs.map +1 -1
- package/esm/http/uploads/resolve-remote-image-variant.mjs +89 -0
- package/esm/http/uploads/resolve-remote-image-variant.mjs.map +1 -0
- package/esm/http/uploads/trim-image-variant-cache.mjs +193 -0
- package/esm/http/uploads/trim-image-variant-cache.mjs.map +1 -0
- package/esm/http/uploads/uploaded-file.controller.d.mts +9 -6
- package/esm/http/uploads/uploaded-file.controller.d.mts.map +1 -1
- package/esm/http/uploads/uploaded-file.controller.mjs +18 -9
- package/esm/http/uploads/uploaded-file.controller.mjs.map +1 -1
- package/esm/http/uploads/variant-cache-key.mjs +2 -2
- package/esm/http/uploads-config.d.mts +2 -4
- package/esm/http/uploads-config.d.mts.map +1 -1
- package/esm/http/uploads-types.d.mts +22 -16
- package/esm/http/uploads-types.d.mts.map +1 -1
- package/esm/http/xmlable.d.mts +1 -2
- package/esm/http/xmlable.d.mts.map +1 -1
- package/esm/image/image.d.mts +6 -7
- package/esm/image/image.d.mts.map +1 -1
- package/esm/image/image.mjs.map +1 -1
- package/esm/image/index.d.mts +2 -1
- package/esm/image/index.mjs +1 -1
- package/esm/index.d.mts +38 -6
- package/esm/index.mjs +14 -3
- package/esm/loader/app-module-importer.d.mts +1 -2
- package/esm/loader/app-module-importer.d.mts.map +1 -1
- package/esm/localization/index.mjs +1 -1
- package/esm/localization/parse-locale-dictionary.d.mts +6 -5
- package/esm/localization/parse-locale-dictionary.d.mts.map +1 -1
- package/esm/localization/parse-locale-dictionary.mjs +2 -1
- package/esm/localization/parse-locale-dictionary.mjs.map +1 -1
- package/esm/localization/register-locale-dictionary.d.mts +3 -4
- package/esm/localization/register-locale-dictionary.d.mts.map +1 -1
- package/esm/localization/register-locale-dictionary.mjs +2 -2
- package/esm/localization/register-locale-dictionary.mjs.map +1 -1
- package/esm/logger/fatal-visibility.d.mts +1 -2
- package/esm/logger/fatal-visibility.d.mts.map +1 -1
- package/esm/logger/index.d.mts +2 -1
- package/esm/logger/index.mjs +1 -1
- package/esm/logger/logger.d.mts +1 -3
- package/esm/logger/logger.d.mts.map +1 -1
- package/esm/logger/types.d.mts +2 -3
- package/esm/logger/types.d.mts.map +1 -1
- package/esm/mail/config.d.mts +21 -12
- package/esm/mail/config.d.mts.map +1 -1
- package/esm/mail/config.mjs +16 -1
- package/esm/mail/config.mjs.map +1 -1
- package/esm/mail/events.d.mts +4 -6
- package/esm/mail/events.d.mts.map +1 -1
- package/esm/mail/index.d.mts +3 -2
- package/esm/mail/index.mjs +2 -2
- package/esm/mail/mail.d.mts +1 -3
- package/esm/mail/mail.d.mts.map +1 -1
- package/esm/mail/mailer-pool.d.mts +5 -7
- package/esm/mail/mailer-pool.d.mts.map +1 -1
- package/esm/mail/react-mail.d.mts +1 -3
- package/esm/mail/react-mail.d.mts.map +1 -1
- package/esm/mail/send-mail.d.mts +1 -3
- package/esm/mail/send-mail.d.mts.map +1 -1
- package/esm/mail/send-mail.mjs +2 -1
- package/esm/mail/send-mail.mjs.map +1 -1
- package/esm/mail/test-mailbox.d.mts +11 -13
- package/esm/mail/test-mailbox.d.mts.map +1 -1
- package/esm/mail/types.d.mts +17 -18
- package/esm/mail/types.d.mts.map +1 -1
- package/esm/manifest/manifest-manager.mjs +1 -1
- package/esm/net/index.d.mts +2 -0
- package/esm/net/index.mjs +3 -0
- package/esm/openapi/build-openapi-document.d.mts +2 -4
- package/esm/openapi/build-openapi-document.d.mts.map +1 -1
- package/esm/openapi/build-openapi-document.mjs +8 -5
- package/esm/openapi/build-openapi-document.mjs.map +1 -1
- package/esm/openapi/cast-schema.mjs +1 -1
- package/esm/openapi/development-openapi-provider.d.mts +5 -6
- package/esm/openapi/development-openapi-provider.d.mts.map +1 -1
- package/esm/openapi/error-responses.mjs +28 -2
- package/esm/openapi/error-responses.mjs.map +1 -1
- package/esm/openapi/index.d.mts +3 -1
- package/esm/openapi/index.mjs +1 -1
- package/esm/openapi/openapi-child-output.mjs +2 -2
- package/esm/openapi/openapi-child-output.mjs.map +1 -1
- package/esm/openapi/postman/build-request-body.mjs.map +1 -1
- package/esm/openapi/postman/build-request-url.mjs +1 -1
- package/esm/openapi/postman/build-request-url.mjs.map +1 -1
- package/esm/openapi/postman/build-saved-responses.mjs.map +1 -1
- package/esm/openapi/postman/example-from-schema.d.mts +1 -3
- package/esm/openapi/postman/example-from-schema.d.mts.map +1 -1
- package/esm/openapi/postman/example-from-schema.mjs.map +1 -1
- package/esm/openapi/postman/index.d.mts +2 -1
- package/esm/openapi/postman/openapi-to-postman-collection.d.mts +3 -5
- package/esm/openapi/postman/openapi-to-postman-collection.d.mts.map +1 -1
- package/esm/openapi/postman/openapi-to-postman-collection.mjs.map +1 -1
- package/esm/openapi/postman/postman-types.d.mts +19 -18
- package/esm/openapi/postman/postman-types.d.mts.map +1 -1
- package/esm/openapi/postman/schema-refs.d.mts +1 -3
- package/esm/openapi/postman/schema-refs.d.mts.map +1 -1
- package/esm/openapi/postman/schema-refs.mjs.map +1 -1
- package/esm/openapi/postman/uuid-v5.mjs +1 -1
- package/esm/openapi/postman/uuid-v5.mjs.map +1 -1
- package/esm/openapi/request-schemas.mjs.map +1 -1
- package/esm/openapi/response-schemas.mjs.map +1 -1
- package/esm/openapi/schema-registry.d.mts +1 -0
- package/esm/openapi/schema-registry.mjs.map +1 -1
- package/esm/openapi/security.mjs +1 -1
- package/esm/openapi/security.mjs.map +1 -1
- package/esm/openapi/types.d.mts +23 -20
- package/esm/openapi/types.d.mts.map +1 -1
- package/esm/production/assert-generated-imports.mjs +2 -1
- package/esm/production/assert-generated-imports.mjs.map +1 -1
- package/esm/production/build-contributions.mjs +1 -1
- package/esm/production/bundle-framework-dependencies.mjs +1 -1
- package/esm/production/dist-build-manifest.mjs +1 -1
- package/esm/production/esbuild-plugins.mjs.map +1 -1
- package/esm/production/esbuild-preflight.mjs +1 -1
- package/esm/production/production-builder.mjs +14 -5
- package/esm/production/production-builder.mjs.map +1 -1
- package/esm/production/production-supervisor.mjs +1 -1
- package/esm/production/registration-child-runner.mjs +4 -3
- package/esm/production/registration-child-runner.mjs.map +1 -1
- package/esm/production/resolve-build-config.d.mts +4 -4
- package/esm/production/resolve-build-config.d.mts.map +1 -1
- package/esm/production/resolve-build-config.mjs +2 -1
- package/esm/production/resolve-build-config.mjs.map +1 -1
- package/esm/production/route-registration-child.d.mts +1 -1
- package/esm/production/route-registration-child.mjs +8 -7
- package/esm/production/route-registration-child.mjs.map +1 -1
- package/esm/production/route-registration-snapshot.mjs.map +1 -1
- package/esm/production/tsconfig-path-aliases.mjs +1 -1
- package/esm/react/index.d.mts +1 -3
- package/esm/react/index.d.mts.map +1 -1
- package/esm/react/index.mjs.map +1 -1
- package/esm/repositories/adapters/cascade/cascade-adapter.d.mts +3 -4
- package/esm/repositories/adapters/cascade/cascade-adapter.d.mts.map +1 -1
- package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts +2 -3
- package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts.map +1 -1
- package/esm/repositories/adapters/cascade/filter-applicator.mjs +10 -9
- package/esm/repositories/adapters/cascade/filter-applicator.mjs.map +1 -1
- package/esm/repositories/adapters/cascade/index.d.mts +2 -1
- package/esm/repositories/adapters/cascade/index.mjs +1 -1
- package/esm/repositories/contracts/index.d.mts +2 -1
- package/esm/repositories/contracts/query-builder.contract.d.mts +4 -6
- package/esm/repositories/contracts/query-builder.contract.d.mts.map +1 -1
- package/esm/repositories/contracts/repository-adapter.contract.d.mts +1 -3
- package/esm/repositories/contracts/repository-adapter.contract.d.mts.map +1 -1
- package/esm/repositories/contracts/types.d.mts +23 -25
- package/esm/repositories/contracts/types.d.mts.map +1 -1
- package/esm/repositories/index.d.mts +4 -1
- package/esm/repositories/index.mjs +1 -1
- package/esm/repositories/repository.manager.d.mts +2 -3
- package/esm/repositories/repository.manager.d.mts.map +1 -1
- package/esm/repositories/repository.manager.mjs +2 -2
- package/esm/repositories/repository.manager.mjs.map +1 -1
- package/esm/resource/define-resource.d.mts +3 -5
- package/esm/resource/define-resource.d.mts.map +1 -1
- package/esm/resource/index.d.mts +2 -1
- package/esm/resource/index.mjs +1 -1
- package/esm/resource/nullable-resource.d.mts +5 -7
- package/esm/resource/nullable-resource.d.mts.map +1 -1
- package/esm/resource/register-resource.d.mts +1 -3
- package/esm/resource/register-resource.d.mts.map +1 -1
- package/esm/resource/resource-field-builder.d.mts +1 -3
- package/esm/resource/resource-field-builder.d.mts.map +1 -1
- package/esm/resource/resource.d.mts +3 -5
- package/esm/resource/resource.d.mts.map +1 -1
- package/esm/resource/resource.mjs +4 -2
- package/esm/resource/resource.mjs.map +1 -1
- package/esm/resource/types.d.mts +21 -21
- package/esm/resource/types.d.mts.map +1 -1
- package/esm/restful/index.d.mts +2 -1
- package/esm/restful/index.mjs +1 -1
- package/esm/restful/restful.d.mts +11 -31
- package/esm/restful/restful.d.mts.map +1 -1
- package/esm/restful/restful.mjs.map +1 -1
- package/esm/router/build-route-rate-limit.mjs.map +1 -1
- package/esm/router/dev-dispatch.mjs +31 -12
- package/esm/router/dev-dispatch.mjs.map +1 -1
- package/esm/router/index.d.mts +5 -2
- package/esm/router/index.mjs +3 -1
- package/esm/router/log-request-lifecycle.mjs.map +1 -1
- package/esm/router/named-api-routes-with-responses.mjs +2 -1
- package/esm/router/named-api-routes-with-responses.mjs.map +1 -1
- package/esm/router/normalize-request-path.d.mts +1 -2
- package/esm/router/normalize-request-path.d.mts.map +1 -1
- package/esm/router/normalize-route-path.d.mts +1 -2
- package/esm/router/normalize-route-path.d.mts.map +1 -1
- package/esm/router/positional-handler-diagnostics.d.mts +15 -13
- package/esm/router/positional-handler-diagnostics.d.mts.map +1 -1
- package/esm/router/positional-handler-diagnostics.mjs.map +1 -1
- package/esm/router/resolve-route-rate-limit.mjs +47 -0
- package/esm/router/resolve-route-rate-limit.mjs.map +1 -0
- package/esm/router/resolve-route-validation.mjs +19 -0
- package/esm/router/resolve-route-validation.mjs.map +1 -0
- package/esm/router/route-builder.d.mts +1 -3
- package/esm/router/route-builder.d.mts.map +1 -1
- package/esm/router/route-guard-names.mjs +30 -0
- package/esm/router/route-guard-names.mjs.map +1 -0
- package/esm/router/route-name-method-suffix.d.mts +2 -3
- package/esm/router/route-name-method-suffix.d.mts.map +1 -1
- package/esm/router/route-name-taken-error.d.mts +12 -0
- package/esm/router/route-name-taken-error.d.mts.map +1 -0
- package/esm/router/route-name-taken-error.mjs +18 -0
- package/esm/router/route-name-taken-error.mjs.map +1 -0
- package/esm/router/route-registry.d.mts +1 -3
- package/esm/router/route-registry.d.mts.map +1 -1
- package/esm/router/router.d.mts +34 -17
- package/esm/router/router.d.mts.map +1 -1
- package/esm/router/router.mjs +74 -39
- package/esm/router/router.mjs.map +1 -1
- package/esm/router/types.d.mts +156 -37
- package/esm/router/types.d.mts.map +1 -1
- package/esm/router/unguarded-route-diagnostics.d.mts +38 -0
- package/esm/router/unguarded-route-diagnostics.d.mts.map +1 -0
- package/esm/router/unguarded-route-diagnostics.mjs +95 -0
- package/esm/router/unguarded-route-diagnostics.mjs.map +1 -0
- package/esm/socket/index.d.mts +2 -1
- package/esm/socket/index.mjs +1 -1
- package/esm/socket/types.d.mts +2 -4
- package/esm/socket/types.d.mts.map +1 -1
- package/esm/socket/utils.d.mts +1 -3
- package/esm/socket/utils.d.mts.map +1 -1
- package/esm/storage/config.d.mts +4 -6
- package/esm/storage/config.d.mts.map +1 -1
- package/esm/storage/context/storage-driver-context.d.mts +3 -4
- package/esm/storage/context/storage-driver-context.d.mts.map +1 -1
- package/esm/storage/drivers/cloud-driver.d.mts +2 -4
- package/esm/storage/drivers/cloud-driver.d.mts.map +1 -1
- package/esm/storage/drivers/cloud-driver.mjs.map +1 -1
- package/esm/storage/drivers/do-spaces-driver.d.mts +1 -3
- package/esm/storage/drivers/do-spaces-driver.d.mts.map +1 -1
- package/esm/storage/drivers/local-driver.d.mts +2 -3
- package/esm/storage/drivers/local-driver.d.mts.map +1 -1
- package/esm/storage/drivers/local-driver.mjs +8 -3
- package/esm/storage/drivers/local-driver.mjs.map +1 -1
- package/esm/storage/drivers/r2-driver.d.mts +1 -3
- package/esm/storage/drivers/r2-driver.d.mts.map +1 -1
- package/esm/storage/drivers/s3-driver.d.mts +1 -3
- package/esm/storage/drivers/s3-driver.d.mts.map +1 -1
- package/esm/storage/index.d.mts +2 -1
- package/esm/storage/index.mjs +1 -1
- package/esm/storage/local-disk-roots.mjs +24 -0
- package/esm/storage/local-disk-roots.mjs.map +1 -0
- package/esm/storage/scoped-storage.d.mts +2 -3
- package/esm/storage/scoped-storage.d.mts.map +1 -1
- package/esm/storage/storage-file.d.mts +1 -3
- package/esm/storage/storage-file.d.mts.map +1 -1
- package/esm/storage/storage.d.mts +17 -4
- package/esm/storage/storage.d.mts.map +1 -1
- package/esm/storage/storage.mjs +22 -0
- package/esm/storage/storage.mjs.map +1 -1
- package/esm/storage/types.d.mts +36 -36
- package/esm/storage/types.d.mts.map +1 -1
- package/esm/storage/utils/classify-ip-address.d.mts +1 -2
- package/esm/storage/utils/classify-ip-address.d.mts.map +1 -1
- package/esm/storage/utils/contain-path.d.mts +1 -2
- package/esm/storage/utils/contain-path.d.mts.map +1 -1
- package/esm/storage/utils/mime.d.mts +2 -3
- package/esm/storage/utils/mime.d.mts.map +1 -1
- package/esm/storage/utils/safe-fetch.d.mts +6 -6
- package/esm/storage/utils/safe-fetch.d.mts.map +1 -1
- package/esm/storage/utils/safe-fetch.mjs +3 -3
- package/esm/storage/utils/safe-fetch.mjs.map +1 -1
- package/esm/storage/utils/storage-capability-error.d.mts +1 -3
- package/esm/storage/utils/storage-capability-error.d.mts.map +1 -1
- package/esm/storage/utils/storage-error.d.mts +2 -3
- package/esm/storage/utils/storage-error.d.mts.map +1 -1
- package/esm/storage/utils/storage-not-initialized-error.d.mts +3 -2
- package/esm/storage/utils/storage-not-initialized-error.d.mts.map +1 -1
- package/esm/storage/utils/storage-not-initialized-error.mjs +1 -0
- package/esm/storage/utils/storage-not-initialized-error.mjs.map +1 -1
- package/esm/tests/authenticated-test-client.d.mts +31 -0
- package/esm/tests/authenticated-test-client.d.mts.map +1 -0
- package/esm/tests/authenticated-test-client.mjs +40 -0
- package/esm/tests/authenticated-test-client.mjs.map +1 -0
- package/esm/tests/factories.d.mts +74 -0
- package/esm/tests/factories.d.mts.map +1 -0
- package/esm/tests/factories.mjs +105 -0
- package/esm/tests/factories.mjs.map +1 -0
- package/esm/tests/fakes/cache-fake.d.mts +34 -0
- package/esm/tests/fakes/cache-fake.d.mts.map +1 -0
- package/esm/tests/fakes/cache-fake.mjs +79 -0
- package/esm/tests/fakes/cache-fake.mjs.map +1 -0
- package/esm/tests/fakes/clock-fake.d.mts +37 -0
- package/esm/tests/fakes/clock-fake.d.mts.map +1 -0
- package/esm/tests/fakes/clock-fake.mjs +69 -0
- package/esm/tests/fakes/clock-fake.mjs.map +1 -0
- package/esm/tests/fakes/fake-assertion-error.d.mts +12 -0
- package/esm/tests/fakes/fake-assertion-error.d.mts.map +1 -0
- package/esm/tests/fakes/fake-assertion-error.mjs +20 -0
- package/esm/tests/fakes/fake-assertion-error.mjs.map +1 -0
- package/esm/tests/fakes/ids-fake.d.mts +23 -0
- package/esm/tests/fakes/ids-fake.d.mts.map +1 -0
- package/esm/tests/fakes/ids-fake.mjs +57 -0
- package/esm/tests/fakes/ids-fake.mjs.map +1 -0
- package/esm/tests/fakes/index.d.mts +9 -0
- package/esm/tests/fakes/index.mjs +10 -0
- package/esm/tests/fakes/mail-fake.d.mts +49 -0
- package/esm/tests/fakes/mail-fake.d.mts.map +1 -0
- package/esm/tests/fakes/mail-fake.mjs +111 -0
- package/esm/tests/fakes/mail-fake.mjs.map +1 -0
- package/esm/tests/fakes/queue-fake.d.mts +56 -0
- package/esm/tests/fakes/queue-fake.d.mts.map +1 -0
- package/esm/tests/fakes/queue-fake.mjs +134 -0
- package/esm/tests/fakes/queue-fake.mjs.map +1 -0
- package/esm/tests/fakes/storage-fake.d.mts +35 -0
- package/esm/tests/fakes/storage-fake.d.mts.map +1 -0
- package/esm/tests/fakes/storage-fake.mjs +122 -0
- package/esm/tests/fakes/storage-fake.mjs.map +1 -0
- package/esm/tests/fakes/test-fakes.d.mts +38 -0
- package/esm/tests/fakes/test-fakes.d.mts.map +1 -0
- package/esm/tests/fakes/test-fakes.mjs +90 -0
- package/esm/tests/fakes/test-fakes.mjs.map +1 -0
- package/esm/tests/index.d.mts +15 -2
- package/esm/tests/index.mjs +15 -2
- package/esm/tests/snapshot-response.d.mts +33 -0
- package/esm/tests/snapshot-response.d.mts.map +1 -0
- package/esm/tests/snapshot-response.mjs +42 -0
- package/esm/tests/snapshot-response.mjs.map +1 -0
- package/esm/tests/start-http-development-server.d.mts +25 -5
- package/esm/tests/start-http-development-server.d.mts.map +1 -1
- package/esm/tests/start-http-development-server.mjs +41 -8
- package/esm/tests/start-http-development-server.mjs.map +1 -1
- package/esm/tests/test-connectors-selection.d.mts +2 -2
- package/esm/tests/test-connectors-selection.d.mts.map +1 -1
- package/esm/tests/test-connectors-selection.mjs +1 -1
- package/esm/tests/test-helpers.d.mts +28 -10
- package/esm/tests/test-helpers.d.mts.map +1 -1
- package/esm/tests/test-helpers.mjs +40 -27
- package/esm/tests/test-helpers.mjs.map +1 -1
- package/esm/tests/test-http-server.d.mts +66 -0
- package/esm/tests/test-http-server.d.mts.map +1 -0
- package/esm/tests/test-http-server.mjs +119 -0
- package/esm/tests/test-http-server.mjs.map +1 -0
- package/esm/tests/test-lifecycle-state.mjs +1 -1
- package/esm/tests/vitest-setup.d.mts +17 -7
- package/esm/tests/vitest-setup.d.mts.map +1 -1
- package/esm/tests/vitest-setup.mjs +12 -4
- package/esm/tests/vitest-setup.mjs.map +1 -1
- package/esm/tooling/agents-md/agents-md-markers.d.mts +26 -0
- package/esm/tooling/agents-md/agents-md-markers.d.mts.map +1 -0
- package/esm/tooling/agents-md/agents-md-markers.mjs +60 -0
- package/esm/tooling/agents-md/agents-md-markers.mjs.map +1 -0
- package/esm/tooling/agents-md/agents-md-refresher.d.mts +43 -0
- package/esm/tooling/agents-md/agents-md-refresher.d.mts.map +1 -0
- package/esm/tooling/agents-md/agents-md-refresher.mjs +72 -0
- package/esm/tooling/agents-md/agents-md-refresher.mjs.map +1 -0
- package/esm/tooling/agents-md/index.mjs +7 -0
- package/esm/tooling/agents-md/installed-skills.d.mts +34 -0
- package/esm/tooling/agents-md/installed-skills.d.mts.map +1 -0
- package/esm/tooling/agents-md/installed-skills.mjs +74 -0
- package/esm/tooling/agents-md/installed-skills.mjs.map +1 -0
- package/esm/tooling/agents-md/render-agents-md.d.mts +34 -0
- package/esm/tooling/agents-md/render-agents-md.d.mts.map +1 -0
- package/esm/tooling/agents-md/render-agents-md.mjs +195 -0
- package/esm/tooling/agents-md/render-agents-md.mjs.map +1 -0
- package/esm/tooling/agents-md/write-agents-md.d.mts +38 -0
- package/esm/tooling/agents-md/write-agents-md.d.mts.map +1 -0
- package/esm/tooling/agents-md/write-agents-md.mjs +49 -0
- package/esm/tooling/agents-md/write-agents-md.mjs.map +1 -0
- package/esm/tooling/board/board-message.d.mts +29 -0
- package/esm/tooling/board/board-message.d.mts.map +1 -0
- package/esm/tooling/board/board-message.mjs +86 -0
- package/esm/tooling/board/board-message.mjs.map +1 -0
- package/esm/tooling/board/board.d.mts +121 -0
- package/esm/tooling/board/board.d.mts.map +1 -0
- package/esm/tooling/board/board.mjs +407 -0
- package/esm/tooling/board/board.mjs.map +1 -0
- package/esm/tooling/board/board.types.d.mts +81 -0
- package/esm/tooling/board/board.types.d.mts.map +1 -0
- package/esm/tooling/board/board.types.mjs +54 -0
- package/esm/tooling/board/board.types.mjs.map +1 -0
- package/esm/tooling/check/changed-files.d.mts +31 -0
- package/esm/tooling/check/changed-files.d.mts.map +1 -0
- package/esm/tooling/check/changed-files.mjs +73 -0
- package/esm/tooling/check/changed-files.mjs.map +1 -0
- package/esm/tooling/check/check-report.types.d.mts +67 -0
- package/esm/tooling/check/check-report.types.d.mts.map +1 -0
- package/esm/tooling/check/check-report.types.mjs +37 -0
- package/esm/tooling/check/check-report.types.mjs.map +1 -0
- package/esm/tooling/check/code-style-conventions.mjs +106 -0
- package/esm/tooling/check/code-style-conventions.mjs.map +1 -0
- package/esm/tooling/check/conventions-step.d.mts +32 -0
- package/esm/tooling/check/conventions-step.d.mts.map +1 -0
- package/esm/tooling/check/conventions-step.mjs +173 -0
- package/esm/tooling/check/conventions-step.mjs.map +1 -0
- package/esm/tooling/check/environment-step.d.mts +16 -0
- package/esm/tooling/check/environment-step.d.mts.map +1 -0
- package/esm/tooling/check/environment-step.mjs +78 -0
- package/esm/tooling/check/environment-step.mjs.map +1 -0
- package/esm/tooling/check/index.mjs +10 -0
- package/esm/tooling/check/lint-step.d.mts +18 -0
- package/esm/tooling/check/lint-step.d.mts.map +1 -0
- package/esm/tooling/check/lint-step.mjs +112 -0
- package/esm/tooling/check/lint-step.mjs.map +1 -0
- package/esm/tooling/check/request-input.mjs +132 -0
- package/esm/tooling/check/request-input.mjs.map +1 -0
- package/esm/tooling/check/run-check.d.mts +43 -0
- package/esm/tooling/check/run-check.d.mts.map +1 -0
- package/esm/tooling/check/run-check.mjs +192 -0
- package/esm/tooling/check/run-check.mjs.map +1 -0
- package/esm/tooling/check/run-tests.d.mts +55 -0
- package/esm/tooling/check/run-tests.d.mts.map +1 -0
- package/esm/tooling/check/run-tests.mjs +93 -0
- package/esm/tooling/check/run-tests.mjs.map +1 -0
- package/esm/tooling/check/security-conventions.mjs +650 -0
- package/esm/tooling/check/security-conventions.mjs.map +1 -0
- package/esm/tooling/check/source-ast.mjs +155 -0
- package/esm/tooling/check/source-ast.mjs.map +1 -0
- package/esm/tooling/check/source-files.mjs +27 -0
- package/esm/tooling/check/source-files.mjs.map +1 -0
- package/esm/tooling/check/tests-step.d.mts +33 -0
- package/esm/tooling/check/tests-step.d.mts.map +1 -0
- package/esm/tooling/check/tests-step.mjs +177 -0
- package/esm/tooling/check/tests-step.mjs.map +1 -0
- package/esm/tooling/dev-state/dev-server-state.d.mts +43 -0
- package/esm/tooling/dev-state/dev-server-state.d.mts.map +1 -0
- package/esm/tooling/dev-state/dev-server-state.mjs +67 -0
- package/esm/tooling/dev-state/dev-server-state.mjs.map +1 -0
- package/esm/tooling/devtools/devtools-client.d.mts +100 -0
- package/esm/tooling/devtools/devtools-client.d.mts.map +1 -0
- package/esm/tooling/devtools/devtools-client.mjs +155 -0
- package/esm/tooling/devtools/devtools-client.mjs.map +1 -0
- package/esm/tooling/generate/generation.d.mts +90 -0
- package/esm/tooling/generate/generation.d.mts.map +1 -0
- package/esm/tooling/generate/generation.mjs +127 -0
- package/esm/tooling/generate/generation.mjs.map +1 -0
- package/esm/tooling/generate/generator-spec.d.mts +57 -0
- package/esm/tooling/generate/generator-spec.d.mts.map +1 -0
- package/esm/tooling/generate/generator-spec.mjs +102 -0
- package/esm/tooling/generate/generator-spec.mjs.map +1 -0
- package/esm/tooling/generate/index.mjs +6 -0
- package/esm/tooling/generate/project-files.mjs +121 -0
- package/esm/tooling/generate/project-files.mjs.map +1 -0
- package/esm/tooling/generate/run-cli.d.mts +43 -0
- package/esm/tooling/generate/run-cli.d.mts.map +1 -0
- package/esm/tooling/generate/run-cli.mjs +93 -0
- package/esm/tooling/generate/run-cli.mjs.map +1 -0
- package/esm/tooling/generate/unified-diff.d.mts +40 -0
- package/esm/tooling/generate/unified-diff.d.mts.map +1 -0
- package/esm/tooling/generate/unified-diff.mjs +161 -0
- package/esm/tooling/generate/unified-diff.mjs.map +1 -0
- package/esm/tooling/index.d.mts +42 -0
- package/esm/tooling/index.mjs +45 -0
- package/esm/tooling/inspect/boot-for-inspect.d.mts +23 -0
- package/esm/tooling/inspect/boot-for-inspect.d.mts.map +1 -0
- package/esm/tooling/inspect/boot-for-inspect.mjs +63 -0
- package/esm/tooling/inspect/boot-for-inspect.mjs.map +1 -0
- package/esm/tooling/inspect/collect-config.mjs +77 -0
- package/esm/tooling/inspect/collect-config.mjs.map +1 -0
- package/esm/tooling/inspect/collect-models.d.mts +10 -0
- package/esm/tooling/inspect/collect-models.d.mts.map +1 -0
- package/esm/tooling/inspect/collect-models.mjs +154 -0
- package/esm/tooling/inspect/collect-models.mjs.map +1 -0
- package/esm/tooling/inspect/collect-packages.d.mts +9 -0
- package/esm/tooling/inspect/collect-packages.d.mts.map +1 -0
- package/esm/tooling/inspect/collect-packages.mjs +157 -0
- package/esm/tooling/inspect/collect-packages.mjs.map +1 -0
- package/esm/tooling/inspect/collect-pages.mjs +108 -0
- package/esm/tooling/inspect/collect-pages.mjs.map +1 -0
- package/esm/tooling/inspect/collect-routes.mjs +168 -0
- package/esm/tooling/inspect/collect-routes.mjs.map +1 -0
- package/esm/tooling/inspect/event-recorder.d.mts +37 -0
- package/esm/tooling/inspect/event-recorder.d.mts.map +1 -0
- package/esm/tooling/inspect/event-recorder.mjs +91 -0
- package/esm/tooling/inspect/event-recorder.mjs.map +1 -0
- package/esm/tooling/inspect/index.d.mts +8 -0
- package/esm/tooling/inspect/index.mjs +7 -0
- package/esm/tooling/inspect/inspect-app.d.mts +62 -0
- package/esm/tooling/inspect/inspect-app.d.mts.map +1 -0
- package/esm/tooling/inspect/inspect-app.mjs +92 -0
- package/esm/tooling/inspect/inspect-app.mjs.map +1 -0
- package/esm/tooling/inspect/inspect-report.schema.d.mts +14 -0
- package/esm/tooling/inspect/inspect-report.schema.d.mts.map +1 -0
- package/esm/tooling/inspect/inspect-report.schema.mjs +463 -0
- package/esm/tooling/inspect/inspect-report.schema.mjs.map +1 -0
- package/esm/tooling/inspect/inspect-report.types.d.mts +228 -0
- package/esm/tooling/inspect/inspect-report.types.d.mts.map +1 -0
- package/esm/tooling/inspect/inspect-report.types.mjs +33 -0
- package/esm/tooling/inspect/inspect-report.types.mjs.map +1 -0
- package/esm/tooling/mcp/create-mcp-context.d.mts +29 -0
- package/esm/tooling/mcp/create-mcp-context.d.mts.map +1 -0
- package/esm/tooling/mcp/create-mcp-context.mjs +75 -0
- package/esm/tooling/mcp/create-mcp-context.mjs.map +1 -0
- package/esm/tooling/mcp/db-schema.d.mts +50 -0
- package/esm/tooling/mcp/db-schema.d.mts.map +1 -0
- package/esm/tooling/mcp/db-schema.mjs +56 -0
- package/esm/tooling/mcp/db-schema.mjs.map +1 -0
- package/esm/tooling/mcp/docs-search.d.mts +77 -0
- package/esm/tooling/mcp/docs-search.d.mts.map +1 -0
- package/esm/tooling/mcp/docs-search.mjs +178 -0
- package/esm/tooling/mcp/docs-search.mjs.map +1 -0
- package/esm/tooling/mcp/index.mjs +9 -0
- package/esm/tooling/mcp/load-ai-tools.d.mts +61 -0
- package/esm/tooling/mcp/load-ai-tools.d.mts.map +1 -0
- package/esm/tooling/mcp/load-ai-tools.mjs +45 -0
- package/esm/tooling/mcp/load-ai-tools.mjs.map +1 -0
- package/esm/tooling/mcp/mcp-tools.d.mts +70 -0
- package/esm/tooling/mcp/mcp-tools.d.mts.map +1 -0
- package/esm/tooling/mcp/mcp-tools.mjs +514 -0
- package/esm/tooling/mcp/mcp-tools.mjs.map +1 -0
- package/esm/tooling/mcp/start-mcp-server.d.mts +63 -0
- package/esm/tooling/mcp/start-mcp-server.d.mts.map +1 -0
- package/esm/tooling/mcp/start-mcp-server.mjs +126 -0
- package/esm/tooling/mcp/start-mcp-server.mjs.map +1 -0
- package/esm/tooling/mcp/tool-input.d.mts +75 -0
- package/esm/tooling/mcp/tool-input.d.mts.map +1 -0
- package/esm/tooling/mcp/tool-input.mjs +72 -0
- package/esm/tooling/mcp/tool-input.mjs.map +1 -0
- package/esm/tooling/problem.d.mts +55 -0
- package/esm/tooling/problem.d.mts.map +1 -0
- package/esm/tooling/problem.mjs +28 -0
- package/esm/tooling/problem.mjs.map +1 -0
- package/esm/tooling/syntax/ast.mjs +230 -0
- package/esm/tooling/syntax/ast.mjs.map +1 -0
- package/esm/tooling/syntax/imports.mjs +34 -0
- package/esm/tooling/syntax/imports.mjs.map +1 -0
- package/esm/tooling/trace/trace-report.types.d.mts +85 -0
- package/esm/tooling/trace/trace-report.types.d.mts.map +1 -0
- package/esm/tooling/trace/trace-report.types.mjs +7 -0
- package/esm/tooling/trace/trace-report.types.mjs.map +1 -0
- package/esm/tooling/trace/trace-request.d.mts +90 -0
- package/esm/tooling/trace/trace-request.d.mts.map +1 -0
- package/esm/tooling/trace/trace-request.mjs +241 -0
- package/esm/tooling/trace/trace-request.mjs.map +1 -0
- package/esm/tooling/typecheck/index.mjs +3 -0
- package/esm/tooling/typecheck/run-typecheck.d.mts +26 -0
- package/esm/tooling/typecheck/run-typecheck.d.mts.map +1 -0
- package/esm/tooling/typecheck/run-typecheck.mjs +90 -0
- package/esm/tooling/typecheck/run-typecheck.mjs.map +1 -0
- package/esm/tooling/typescript/compiler.d.mts +31 -0
- package/esm/tooling/typescript/compiler.d.mts.map +1 -0
- package/esm/tooling/typescript/compiler.mjs +120 -0
- package/esm/tooling/typescript/compiler.mjs.map +1 -0
- package/esm/updater/update-warlock-packages.mjs +3 -2
- package/esm/updater/update-warlock-packages.mjs.map +1 -1
- package/esm/upgrade/codemods/head-viewport.mjs +46 -0
- package/esm/upgrade/codemods/head-viewport.mjs.map +1 -0
- package/esm/upgrade/codemods/helpers.mjs +81 -0
- package/esm/upgrade/codemods/helpers.mjs.map +1 -0
- package/esm/upgrade/codemods/index.mjs +34 -0
- package/esm/upgrade/codemods/index.mjs.map +1 -0
- package/esm/upgrade/codemods/logger-sync-calls.mjs +57 -0
- package/esm/upgrade/codemods/logger-sync-calls.mjs.map +1 -0
- package/esm/upgrade/codemods/package-json.mjs +122 -0
- package/esm/upgrade/codemods/package-json.mjs.map +1 -0
- package/esm/upgrade/codemods/request-log-snapshot.mjs +82 -0
- package/esm/upgrade/codemods/request-log-snapshot.mjs.map +1 -0
- package/esm/upgrade/codemods/review-sites.mjs +262 -0
- package/esm/upgrade/codemods/review-sites.mjs.map +1 -0
- package/esm/upgrade/diff.mjs +119 -0
- package/esm/upgrade/diff.mjs.map +1 -0
- package/esm/upgrade/format-upgrade-report.mjs +32 -0
- package/esm/upgrade/format-upgrade-report.mjs.map +1 -0
- package/esm/upgrade/load-ts-morph.mjs +49 -0
- package/esm/upgrade/load-ts-morph.mjs.map +1 -0
- package/esm/upgrade/notes.mjs +16 -0
- package/esm/upgrade/notes.mjs.map +1 -0
- package/esm/upgrade/run-upgrade.mjs +246 -0
- package/esm/upgrade/run-upgrade.mjs.map +1 -0
- package/esm/upgrade/upgrade-command.action.mjs +37 -0
- package/esm/upgrade/upgrade-command.action.mjs.map +1 -0
- package/esm/upgrade/version.mjs +39 -0
- package/esm/upgrade/version.mjs.map +1 -0
- package/esm/use-cases/index.d.mts +2 -1
- package/esm/use-cases/index.mjs +1 -1
- package/esm/use-cases/types.d.mts +116 -63
- package/esm/use-cases/types.d.mts.map +1 -1
- package/esm/use-cases/use-case-broadcast.d.mts +1 -3
- package/esm/use-cases/use-case-broadcast.d.mts.map +1 -1
- package/esm/use-cases/use-case-events.d.mts +3 -5
- package/esm/use-cases/use-case-events.d.mts.map +1 -1
- package/esm/use-cases/use-case-pipeline.d.mts +6 -6
- package/esm/use-cases/use-case-pipeline.d.mts.map +1 -1
- package/esm/use-cases/use-case.d.mts +2 -4
- package/esm/use-cases/use-case.d.mts.map +1 -1
- package/esm/use-cases/use-case.errors.d.mts +1 -3
- package/esm/use-cases/use-case.errors.d.mts.map +1 -1
- package/esm/use-cases/use-cases-registry.d.mts +8 -10
- package/esm/use-cases/use-cases-registry.d.mts.map +1 -1
- package/esm/use-cases/use-cases-registry.mjs.map +1 -1
- package/esm/utils/app-log.d.mts +1 -2
- package/esm/utils/app-log.d.mts.map +1 -1
- package/esm/utils/clock.d.mts +35 -0
- package/esm/utils/clock.d.mts.map +1 -0
- package/esm/utils/clock.mjs +27 -0
- package/esm/utils/clock.mjs.map +1 -0
- package/esm/utils/database-log.d.mts +3 -4
- package/esm/utils/database-log.d.mts.map +1 -1
- package/esm/utils/environment.d.mts +4 -5
- package/esm/utils/environment.d.mts.map +1 -1
- package/esm/utils/framework-vesion.mjs +1 -1
- package/esm/utils/framework-vesion.mjs.map +1 -1
- package/esm/utils/get-localized.d.mts +2 -3
- package/esm/utils/get-localized.d.mts.map +1 -1
- package/esm/utils/ids.d.mts +35 -0
- package/esm/utils/ids.d.mts.map +1 -0
- package/esm/utils/ids.mjs +33 -0
- package/esm/utils/ids.mjs.map +1 -0
- package/esm/utils/index.d.mts +5 -1
- package/esm/utils/index.mjs +4 -1
- package/esm/utils/normalized-path.d.mts +1 -2
- package/esm/utils/normalized-path.d.mts.map +1 -1
- package/esm/utils/npm-registry.d.mts +1 -2
- package/esm/utils/npm-registry.d.mts.map +1 -1
- package/esm/utils/paths.d.mts +13 -14
- package/esm/utils/paths.d.mts.map +1 -1
- package/esm/utils/paths.mjs +2 -2
- package/esm/utils/paths.mjs.map +1 -1
- package/esm/utils/promise-all-object.d.mts +1 -2
- package/esm/utils/promise-all-object.d.mts.map +1 -1
- package/esm/utils/queue.d.mts +1 -2
- package/esm/utils/queue.d.mts.map +1 -1
- package/esm/utils/runtime.d.mts +60 -0
- package/esm/utils/runtime.d.mts.map +1 -0
- package/esm/utils/runtime.mjs +85 -0
- package/esm/utils/runtime.mjs.map +1 -0
- package/esm/utils/sleep.d.mts +1 -2
- package/esm/utils/sleep.d.mts.map +1 -1
- package/esm/utils/sluggable.d.mts +1 -3
- package/esm/utils/sluggable.d.mts.map +1 -1
- package/esm/utils/to-json.d.mts +1 -2
- package/esm/utils/to-json.d.mts.map +1 -1
- package/esm/utils/types.d.mts +1 -2
- package/esm/utils/types.d.mts.map +1 -1
- package/esm/utils/urls.d.mts +5 -6
- package/esm/utils/urls.d.mts.map +1 -1
- package/esm/utils/version-compare.d.mts +1 -2
- package/esm/utils/version-compare.d.mts.map +1 -1
- package/esm/validation/database/exists-except-current-id.d.mts +2 -3
- package/esm/validation/database/exists-except-current-id.d.mts.map +1 -1
- package/esm/validation/database/exists-except-current-user.d.mts +2 -3
- package/esm/validation/database/exists-except-current-user.d.mts.map +1 -1
- package/esm/validation/database/index.d.mts +2 -1
- package/esm/validation/database/index.mjs +1 -1
- package/esm/validation/database/types.d.mts +14 -10
- package/esm/validation/database/types.d.mts.map +1 -1
- package/esm/validation/database/unique-except-current-id.d.mts +2 -3
- package/esm/validation/database/unique-except-current-id.d.mts.map +1 -1
- package/esm/validation/database/unique-except-current-user.d.mts +2 -3
- package/esm/validation/database/unique-except-current-user.d.mts.map +1 -1
- package/esm/validation/file/file.d.mts +4 -6
- package/esm/validation/file/file.d.mts.map +1 -1
- package/esm/validation/file/index.d.mts +2 -1
- package/esm/validation/file/index.mjs +1 -1
- package/esm/validation/index.d.mts +6 -2
- package/esm/validation/index.mjs +1 -1
- package/esm/validation/plugins/index.mjs +1 -1
- package/esm/validation/types.d.mts +61 -4
- package/esm/validation/types.d.mts.map +1 -1
- package/esm/validation/validateAll.mjs +21 -4
- package/esm/validation/validateAll.mjs.map +1 -1
- package/esm/validation/validation-failure-status.mjs +15 -0
- package/esm/validation/validation-failure-status.mjs.map +1 -0
- package/esm/validation/validators/file-validator.d.mts +2 -20
- package/esm/validation/validators/file-validator.d.mts.map +1 -1
- package/esm/validation/validators/index.d.mts +2 -1
- package/esm/validation/validators/index.mjs +1 -1
- package/esm/vite/lower-stage3-decorators.d.mts +2 -3
- package/esm/vite/lower-stage3-decorators.d.mts.map +1 -1
- package/esm/warlock-config/bundle-config.mjs +1 -1
- package/esm/warlock-config/define-config.d.mts +1 -3
- package/esm/warlock-config/define-config.d.mts.map +1 -1
- package/esm/warlock-config/define-config.mjs +3 -2
- package/esm/warlock-config/define-config.mjs.map +1 -1
- package/esm/warlock-config/index.d.mts +2 -1
- package/esm/warlock-config/index.mjs +1 -1
- package/esm/warlock-config/types.d.mts +31 -6
- package/esm/warlock-config/types.d.mts.map +1 -1
- package/esm/warlock-config/warlock-config.manager.d.mts +5 -7
- package/esm/warlock-config/warlock-config.manager.d.mts.map +1 -1
- package/esm/warlock-config/warlock-config.manager.mjs +2 -1
- package/esm/warlock-config/warlock-config.manager.mjs.map +1 -1
- package/esm/warlock-config/warn-deprecated-config.mjs +1 -1
- package/llms-full.txt +3211 -731
- package/llms.txt +16 -6
- package/package.json +47 -15
- package/schemas/inspect-report.schema.json +554 -0
- package/skills/README.md +9 -0
- package/skills/add-connector/SKILL.md +26 -38
- package/skills/benchmark-code/SKILL.md +30 -24
- package/skills/build-restful/SKILL.md +14 -14
- package/skills/build-url/SKILL.md +18 -18
- package/skills/configure-app/SKILL.md +107 -14
- package/skills/create-controller/SKILL.md +25 -12
- package/skills/create-module/SKILL.md +10 -3
- package/skills/define-resource/SKILL.md +32 -29
- package/skills/encrypt-data/SKILL.md +21 -19
- package/skills/generate-openapi/SKILL.md +50 -24
- package/skills/hash-password/SKILL.md +2 -2
- package/skills/health-checks/SKILL.md +24 -7
- package/skills/index.md +11 -4
- package/skills/lower-stage3-decorators/SKILL.md +4 -4
- package/skills/make-endpoint/SKILL.md +110 -0
- package/skills/model-factories/SKILL.md +92 -0
- package/skills/process-image/SKILL.md +32 -30
- package/skills/register-route/SKILL.md +109 -10
- package/skills/report-framework-issue.md +154 -0
- package/skills/request-memo/SKILL.md +1 -1
- package/skills/request-tracing/SKILL.md +4 -1
- package/skills/resolve-path/SKILL.md +45 -44
- package/skills/retry-operation/SKILL.md +20 -11
- package/skills/run-app/SKILL.md +107 -22
- package/skills/send-response/SKILL.md +179 -14
- package/skills/store-file/SKILL.md +93 -53
- package/skills/test-fakes/SKILL.md +123 -0
- package/skills/test-http/SKILL.md +125 -21
- package/skills/test-service/SKILL.md +41 -1
- package/skills/update-packages/SKILL.md +29 -18
- package/skills/upgrade-from-5-29/SKILL.md +454 -0
- package/skills/upload-file/SKILL.md +31 -33
- package/skills/use-app-context/SKILL.md +38 -31
- package/skills/use-middleware/SKILL.md +45 -25
- package/skills/use-model-transformers/SKILL.md +37 -28
- package/skills/use-repository/SKILL.md +2 -2
- package/skills/validate-input/SKILL.md +72 -28
- package/skills/warlock-agents-md/SKILL.md +96 -0
- package/skills/warlock-board/SKILL.md +123 -0
- package/skills/warlock-check/SKILL.md +133 -0
- package/skills/warlock-conventions/SKILL.md +115 -0
- package/skills/warlock-doctor/SKILL.md +55 -22
- package/skills/warlock-inspect/SKILL.md +134 -0
- package/skills/warlock-mcp/SKILL.md +120 -0
- package/skills/warlock-routes/SKILL.md +18 -11
- package/skills/warlock-trace/SKILL.md +81 -0
- package/skills/wire-socket/SKILL.md +8 -8
- package/skills/write-seeder/SKILL.md +46 -32
- package/skills/write-use-case/SKILL.md +40 -27
- package/esm/http/uploads/matches-if-none-match.mjs +0 -13
- package/esm/http/uploads/matches-if-none-match.mjs.map +0 -1
|
@@ -0,0 +1,303 @@
|
|
|
1
|
+
import { createRequire } from "node:module";
|
|
2
|
+
import path from "node:path";
|
|
3
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
4
|
+
import { execFile } from "node:child_process";
|
|
5
|
+
|
|
6
|
+
//#region ../../packages/core/src/dev-server/health-checker/oxlint-runner.ts
|
|
7
|
+
const CONFIG_FILES = [
|
|
8
|
+
".oxlintrc.json",
|
|
9
|
+
".oxlintrc.jsonc",
|
|
10
|
+
"oxlint.config.ts",
|
|
11
|
+
"oxlint.config.mts"
|
|
12
|
+
];
|
|
13
|
+
/** Whether the app has an oxlint config file at its root. */
|
|
14
|
+
function hasOxlintConfig(cwd) {
|
|
15
|
+
return CONFIG_FILES.some((name) => existsSync(path.join(cwd, name)));
|
|
16
|
+
}
|
|
17
|
+
/** Resolve the app's optional CLI package, without using global PATH binaries. */
|
|
18
|
+
function findOxlint(cwd) {
|
|
19
|
+
if (!hasOxlintConfig(cwd)) return void 0;
|
|
20
|
+
try {
|
|
21
|
+
const packagePath = createRequire(path.join(cwd, "package.json")).resolve("oxlint/package.json");
|
|
22
|
+
const manifest = JSON.parse(readFileSync(packagePath, "utf8"));
|
|
23
|
+
const bin = typeof manifest.bin === "string" ? manifest.bin : manifest.bin?.oxlint;
|
|
24
|
+
if (typeof bin !== "string") return void 0;
|
|
25
|
+
const binaryPath = path.resolve(path.dirname(packagePath), bin);
|
|
26
|
+
return existsSync(binaryPath) ? binaryPath : void 0;
|
|
27
|
+
} catch {
|
|
28
|
+
return;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
function record(value) {
|
|
32
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
33
|
+
}
|
|
34
|
+
function coordinate(value) {
|
|
35
|
+
return typeof value === "number" && Number.isFinite(value) ? Math.max(1, Math.trunc(value)) : 1;
|
|
36
|
+
}
|
|
37
|
+
var OxlintOutputParseError = class extends Error {};
|
|
38
|
+
function outputDetail(stdout, stderr) {
|
|
39
|
+
return [stderr.trim(), stdout.trim()].filter(Boolean).join("\n").slice(0, 2e3);
|
|
40
|
+
}
|
|
41
|
+
/** Most output one CLI run may write before Node stops it. */
|
|
42
|
+
const MAX_OUTPUT_BYTES = 8388608;
|
|
43
|
+
/**
|
|
44
|
+
* Most files passed to one CLI run. An 8 MiB report holds roughly 16,000
|
|
45
|
+
* diagnostics, so a batch of thousands of files with several diagnostics each
|
|
46
|
+
* could overflow it; a batch that still overflows is split in half and retried.
|
|
47
|
+
*/
|
|
48
|
+
const MAX_FILES_PER_BATCH = 500;
|
|
49
|
+
/**
|
|
50
|
+
* How long `shutdown()` waits after SIGTERM before sending SIGKILL. Below the
|
|
51
|
+
* health-check manager's 500 ms wait for its workers, so a child that ignores
|
|
52
|
+
* SIGTERM is still reaped before the worker is terminated.
|
|
53
|
+
*/
|
|
54
|
+
const SHUTDOWN_KILL_GRACE_MS = 250;
|
|
55
|
+
const MAX_BUFFER_CODE = "ERR_CHILD_PROCESS_STDIO_MAXBUFFER";
|
|
56
|
+
/** The OS refused the command line: too long overall, or one argument too long. */
|
|
57
|
+
const COMMAND_TOO_LONG_CODES = /* @__PURE__ */ new Set(["E2BIG", "ENAMETOOLONG"]);
|
|
58
|
+
/** A failed CLI run; `code` keeps the process or spawn error code (`E2BIG`, maxBuffer, …). */
|
|
59
|
+
var OxlintCommandError = class extends Error {
|
|
60
|
+
constructor(message, code) {
|
|
61
|
+
super(message);
|
|
62
|
+
this.code = code;
|
|
63
|
+
this.name = "OxlintCommandError";
|
|
64
|
+
}
|
|
65
|
+
};
|
|
66
|
+
/** A check stopped because the runner is shutting down; not a lint or tool failure. */
|
|
67
|
+
var OxlintCheckCancelledError = class extends Error {
|
|
68
|
+
constructor() {
|
|
69
|
+
super("Oxlint check cancelled: the development server is shutting down.");
|
|
70
|
+
this.name = "OxlintCheckCancelledError";
|
|
71
|
+
}
|
|
72
|
+
};
|
|
73
|
+
function errorCodeOf(error) {
|
|
74
|
+
const code = error?.code;
|
|
75
|
+
return typeof code === "string" ? code : void 0;
|
|
76
|
+
}
|
|
77
|
+
function oxlintCommandError(error, stdout, stderr) {
|
|
78
|
+
const status = error.code === MAX_BUFFER_CODE ? `produced more than ${MAX_OUTPUT_BYTES / 1048576} MiB of output` : error.killed ? "timed out or terminated (30s limit)" : `failed (code ${String(error.code ?? "unknown")}${error.signal ? `, signal ${error.signal}` : ""})`;
|
|
79
|
+
return new OxlintCommandError(`Oxlint could not check changed files: ${status}${outputDetail(stdout, stderr) ? `\n${outputDetail(stdout, stderr)}` : ""}`, typeof error.code === "string" ? error.code : void 0);
|
|
80
|
+
}
|
|
81
|
+
function parseOxlintResults(output, files, cwd) {
|
|
82
|
+
let report;
|
|
83
|
+
try {
|
|
84
|
+
report = JSON.parse(output);
|
|
85
|
+
} catch {
|
|
86
|
+
throw new OxlintOutputParseError(`Oxlint could not check changed files: ${output.trim().slice(0, 2e3) || "empty diagnostics report"}`);
|
|
87
|
+
}
|
|
88
|
+
if (!record(report) || !Array.isArray(report.diagnostics)) throw new Error("Oxlint returned an invalid JSON diagnostics report.");
|
|
89
|
+
const results = files.map((file) => ({
|
|
90
|
+
path: file.path,
|
|
91
|
+
relativePath: file.relativePath,
|
|
92
|
+
healthy: true,
|
|
93
|
+
errors: [],
|
|
94
|
+
warnings: []
|
|
95
|
+
}));
|
|
96
|
+
const byPath = new Map(results.map((result) => [path.resolve(result.path), result]));
|
|
97
|
+
for (const diagnostic of report.diagnostics) {
|
|
98
|
+
if (!record(diagnostic) || typeof diagnostic.message !== "string") continue;
|
|
99
|
+
if (diagnostic.severity !== "error" && diagnostic.severity !== "warning") continue;
|
|
100
|
+
const target = typeof diagnostic.filename === "string" ? byPath.get(path.resolve(cwd, diagnostic.filename)) : void 0;
|
|
101
|
+
if (!target) throw new Error(`Oxlint: ${diagnostic.message}`);
|
|
102
|
+
const label = Array.isArray(diagnostic.labels) ? diagnostic.labels.find(record) : void 0;
|
|
103
|
+
const span = record(label) && record(label.span) ? label.span : {};
|
|
104
|
+
const message = {
|
|
105
|
+
type: diagnostic.severity,
|
|
106
|
+
message: diagnostic.message,
|
|
107
|
+
lineNumber: coordinate(span.line),
|
|
108
|
+
columnNumber: coordinate(span.column),
|
|
109
|
+
length: coordinate(span.length),
|
|
110
|
+
filePath: target.path,
|
|
111
|
+
relativePath: target.relativePath,
|
|
112
|
+
...typeof diagnostic.code === "string" ? { ruleId: diagnostic.code } : {}
|
|
113
|
+
};
|
|
114
|
+
target.healthy = false;
|
|
115
|
+
(message.type === "error" ? target.errors : target.warnings).push(message);
|
|
116
|
+
}
|
|
117
|
+
return results;
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* The share of the command-line budget one argument uses. Windows counts
|
|
121
|
+
* UTF-16 characters plus quoting and a separator. POSIX `execve` counts the
|
|
122
|
+
* argument's bytes, its NUL terminator and its slot in the `argv` pointer
|
|
123
|
+
* array (8 bytes on 64-bit systems), all against `ARG_MAX`.
|
|
124
|
+
*/
|
|
125
|
+
function oxlintArgumentSize(argument, platform) {
|
|
126
|
+
return platform === "win32" ? argument.length + 3 : Buffer.byteLength(argument) + 1 + 8;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* The command-line budget per platform, well below the real limits: Linux's
|
|
130
|
+
* `ARG_MAX` is about 2 MB (512 KiB here), Windows allows 32,767 characters
|
|
131
|
+
* (24 KiB here) and other systems get 128 KiB.
|
|
132
|
+
*/
|
|
133
|
+
function commandLineLimit(platform) {
|
|
134
|
+
return platform === "win32" ? 24576 : platform === "linux" ? 524288 : 131072;
|
|
135
|
+
}
|
|
136
|
+
function uncheckedResult(file, code) {
|
|
137
|
+
return {
|
|
138
|
+
path: file.path,
|
|
139
|
+
relativePath: file.relativePath,
|
|
140
|
+
healthy: false,
|
|
141
|
+
errors: [],
|
|
142
|
+
warnings: [{
|
|
143
|
+
type: "warning",
|
|
144
|
+
message: `Oxlint could not check this file: its path is too long for one command line (${code}).`,
|
|
145
|
+
lineNumber: 1,
|
|
146
|
+
columnNumber: 1,
|
|
147
|
+
length: 1,
|
|
148
|
+
filePath: file.path,
|
|
149
|
+
relativePath: file.relativePath
|
|
150
|
+
}]
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
const OXLINT_FLAGS = [
|
|
154
|
+
"--format=json",
|
|
155
|
+
"--threads=1",
|
|
156
|
+
"--no-error-on-unmatched-pattern",
|
|
157
|
+
"--"
|
|
158
|
+
];
|
|
159
|
+
function healthy(file) {
|
|
160
|
+
return {
|
|
161
|
+
path: file.path,
|
|
162
|
+
relativePath: file.relativePath,
|
|
163
|
+
healthy: true,
|
|
164
|
+
errors: [],
|
|
165
|
+
warnings: []
|
|
166
|
+
};
|
|
167
|
+
}
|
|
168
|
+
/** Invoked in a dedicated worker during development; lints only the supplied disk files. */
|
|
169
|
+
var OxlintRunner = class {
|
|
170
|
+
constructor(dependencies = {}) {
|
|
171
|
+
this.dependencies = dependencies;
|
|
172
|
+
this.cwd = process.cwd();
|
|
173
|
+
this.children = /* @__PURE__ */ new Set();
|
|
174
|
+
this.shuttingDown = false;
|
|
175
|
+
}
|
|
176
|
+
initialize(cwd) {
|
|
177
|
+
this.cwd = cwd;
|
|
178
|
+
this.binaryPath = findOxlint(cwd);
|
|
179
|
+
this.shuttingDown = false;
|
|
180
|
+
return {
|
|
181
|
+
success: true,
|
|
182
|
+
hasConfig: this.binaryPath !== void 0
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
/**
|
|
186
|
+
* Stop every running CLI child: SIGTERM first, then SIGKILL after
|
|
187
|
+
* {@link SHUTDOWN_KILL_GRACE_MS} for a child that ignores it. Pending checks
|
|
188
|
+
* reject with {@link OxlintCheckCancelledError}.
|
|
189
|
+
*/
|
|
190
|
+
async shutdown() {
|
|
191
|
+
this.shuttingDown = true;
|
|
192
|
+
await Promise.all([...this.children].map((child) => new Promise((resolve) => {
|
|
193
|
+
if (child.exitCode !== null || child.signalCode !== null) {
|
|
194
|
+
resolve();
|
|
195
|
+
return;
|
|
196
|
+
}
|
|
197
|
+
const timer = setTimeout(() => child.kill("SIGKILL"), 250);
|
|
198
|
+
child.once("close", () => {
|
|
199
|
+
clearTimeout(timer);
|
|
200
|
+
resolve();
|
|
201
|
+
});
|
|
202
|
+
child.kill("SIGTERM");
|
|
203
|
+
})));
|
|
204
|
+
this.children.clear();
|
|
205
|
+
}
|
|
206
|
+
execute(binaryPath, args, cwd) {
|
|
207
|
+
if (this.dependencies.execute) return this.dependencies.execute(binaryPath, args, cwd);
|
|
208
|
+
return new Promise((resolve, reject) => {
|
|
209
|
+
const child = execFile(process.execPath, [binaryPath, ...args], {
|
|
210
|
+
cwd,
|
|
211
|
+
encoding: "utf8",
|
|
212
|
+
windowsHide: true,
|
|
213
|
+
timeout: 3e4,
|
|
214
|
+
maxBuffer: MAX_OUTPUT_BYTES
|
|
215
|
+
}, (error, stdout, stderr) => {
|
|
216
|
+
this.children.delete(child);
|
|
217
|
+
if (error && this.shuttingDown) {
|
|
218
|
+
reject(new OxlintCheckCancelledError());
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
if (error && (error.code !== 1 || error.killed)) {
|
|
222
|
+
reject(oxlintCommandError(error, stdout, stderr));
|
|
223
|
+
return;
|
|
224
|
+
}
|
|
225
|
+
resolve({
|
|
226
|
+
stdout,
|
|
227
|
+
stderr
|
|
228
|
+
});
|
|
229
|
+
});
|
|
230
|
+
this.children.add(child);
|
|
231
|
+
});
|
|
232
|
+
}
|
|
233
|
+
/**
|
|
234
|
+
* Lint one batch. A batch whose report overflows the output buffer is split
|
|
235
|
+
* in half and retried, down to single files; a single file whose path the OS
|
|
236
|
+
* refuses as too long is reported as unchecked instead of failing the check.
|
|
237
|
+
*/
|
|
238
|
+
async checkBatch(binaryPath, filesInBatch) {
|
|
239
|
+
if (this.shuttingDown) throw new OxlintCheckCancelledError();
|
|
240
|
+
let output;
|
|
241
|
+
try {
|
|
242
|
+
output = await this.execute(binaryPath, [...OXLINT_FLAGS, ...filesInBatch.map((file) => path.relative(this.cwd, file.path))], this.cwd);
|
|
243
|
+
} catch (error) {
|
|
244
|
+
if (this.shuttingDown) throw new OxlintCheckCancelledError();
|
|
245
|
+
const code = errorCodeOf(error);
|
|
246
|
+
if (code === MAX_BUFFER_CODE && filesInBatch.length > 1) {
|
|
247
|
+
const middle = Math.ceil(filesInBatch.length / 2);
|
|
248
|
+
return [...await this.checkBatch(binaryPath, filesInBatch.slice(0, middle)), ...await this.checkBatch(binaryPath, filesInBatch.slice(middle))];
|
|
249
|
+
}
|
|
250
|
+
const [only] = filesInBatch;
|
|
251
|
+
if (code && COMMAND_TOO_LONG_CODES.has(code) && only && filesInBatch.length === 1) return [uncheckedResult(only, code)];
|
|
252
|
+
throw error;
|
|
253
|
+
}
|
|
254
|
+
try {
|
|
255
|
+
return parseOxlintResults(output.stdout, filesInBatch, this.cwd);
|
|
256
|
+
} catch (error) {
|
|
257
|
+
if (!(error instanceof OxlintOutputParseError)) throw error;
|
|
258
|
+
const detail = outputDetail(output.stdout, output.stderr) || "empty diagnostics report";
|
|
259
|
+
throw new Error(`Oxlint could not check changed files: ${detail}`, { cause: error });
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
async checkFiles(files) {
|
|
263
|
+
const exists = this.dependencies.exists ?? existsSync;
|
|
264
|
+
const lintable = files.filter((file) => /\.[cm]?[jt]sx?$/i.test(file.path) && exists(file.path));
|
|
265
|
+
const binaryPath = this.binaryPath;
|
|
266
|
+
if (!binaryPath || lintable.length === 0) return files.map(healthy);
|
|
267
|
+
const platform = this.dependencies.platform ?? process.platform;
|
|
268
|
+
const limit = this.dependencies.commandLineLimit ?? commandLineLimit(platform);
|
|
269
|
+
const size = (arg) => oxlintArgumentSize(arg, platform);
|
|
270
|
+
const baseSize = [
|
|
271
|
+
process.execPath,
|
|
272
|
+
binaryPath,
|
|
273
|
+
...OXLINT_FLAGS
|
|
274
|
+
].reduce((sum, arg) => sum + size(arg), 0);
|
|
275
|
+
const batches = [];
|
|
276
|
+
let batch = [];
|
|
277
|
+
let batchSize = baseSize;
|
|
278
|
+
const flush = () => {
|
|
279
|
+
if (batch.length) batches.push(batch);
|
|
280
|
+
batch = [];
|
|
281
|
+
batchSize = baseSize;
|
|
282
|
+
};
|
|
283
|
+
for (const file of lintable) {
|
|
284
|
+
const argumentSize = size(path.relative(this.cwd, file.path));
|
|
285
|
+
if (baseSize + argumentSize > limit) {
|
|
286
|
+
flush();
|
|
287
|
+
batches.push([file]);
|
|
288
|
+
continue;
|
|
289
|
+
}
|
|
290
|
+
if (batch.length >= 500 || batchSize + argumentSize > limit) flush();
|
|
291
|
+
batch.push(file);
|
|
292
|
+
batchSize += argumentSize;
|
|
293
|
+
}
|
|
294
|
+
flush();
|
|
295
|
+
const results = new Map(files.map((file) => [file.path, healthy(file)]));
|
|
296
|
+
for (const filesInBatch of batches) for (const result of await this.checkBatch(binaryPath, filesInBatch)) results.set(result.path, result);
|
|
297
|
+
return files.map((file) => results.get(file.path) ?? healthy(file));
|
|
298
|
+
}
|
|
299
|
+
};
|
|
300
|
+
|
|
301
|
+
//#endregion
|
|
302
|
+
export { OxlintCheckCancelledError, OxlintCommandError, OxlintRunner, findOxlint, hasOxlintConfig, oxlintArgumentSize, oxlintCommandError, parseOxlintResults };
|
|
303
|
+
//# sourceMappingURL=oxlint-runner.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oxlint-runner.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/dev-server/health-checker/oxlint-runner.ts"],"sourcesContent":["import { execFile, type ChildProcess } from \"node:child_process\";\nimport { existsSync, readFileSync } from \"node:fs\";\nimport { createRequire } from \"node:module\";\nimport path from \"node:path\";\n\nexport type OxlintFile = { path: string; relativePath: string };\nexport type OxlintMessage = {\n type: \"error\" | \"warning\";\n message: string;\n lineNumber: number;\n columnNumber: number;\n length: number;\n filePath: string;\n relativePath: string;\n ruleId?: string;\n};\nexport type OxlintFileResult = OxlintFile & {\n healthy: boolean;\n errors: OxlintMessage[];\n warnings: OxlintMessage[];\n};\n\nconst CONFIG_FILES = [\".oxlintrc.json\", \".oxlintrc.jsonc\", \"oxlint.config.ts\", \"oxlint.config.mts\"];\n\n/** Whether the app has an oxlint config file at its root. */\nexport function hasOxlintConfig(cwd: string): boolean {\n return CONFIG_FILES.some((name) => existsSync(path.join(cwd, name)));\n}\n\n/** Resolve the app's optional CLI package, without using global PATH binaries. */\nexport function findOxlint(cwd: string): string | undefined {\n if (!hasOxlintConfig(cwd)) return undefined;\n try {\n const require = createRequire(path.join(cwd, \"package.json\"));\n const packagePath = require.resolve(\"oxlint/package.json\");\n const manifest = JSON.parse(readFileSync(packagePath, \"utf8\")) as {\n bin?: { oxlint?: unknown } | string;\n };\n const bin = typeof manifest.bin === \"string\" ? manifest.bin : manifest.bin?.oxlint;\n if (typeof bin !== \"string\") return undefined;\n const binaryPath = path.resolve(path.dirname(packagePath), bin);\n return existsSync(binaryPath) ? binaryPath : undefined;\n } catch {\n return undefined;\n }\n}\n\nfunction record(value: unknown): value is Record<string, unknown> {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction coordinate(value: unknown): number {\n return typeof value === \"number\" && Number.isFinite(value) ? Math.max(1, Math.trunc(value)) : 1;\n}\n\nclass OxlintOutputParseError extends Error {}\n\nfunction outputDetail(stdout: string, stderr: string): string {\n return [stderr.trim(), stdout.trim()].filter(Boolean).join(\"\\n\").slice(0, 2000);\n}\n\n/** Most output one CLI run may write before Node stops it. */\nconst MAX_OUTPUT_BYTES = 8 * 1024 * 1024;\n\n/**\n * Most files passed to one CLI run. An 8 MiB report holds roughly 16,000\n * diagnostics, so a batch of thousands of files with several diagnostics each\n * could overflow it; a batch that still overflows is split in half and retried.\n */\nexport const MAX_FILES_PER_BATCH = 500;\n\n/**\n * How long `shutdown()` waits after SIGTERM before sending SIGKILL. Below the\n * health-check manager's 500 ms wait for its workers, so a child that ignores\n * SIGTERM is still reaped before the worker is terminated.\n */\nexport const SHUTDOWN_KILL_GRACE_MS = 250;\n\nconst MAX_BUFFER_CODE = \"ERR_CHILD_PROCESS_STDIO_MAXBUFFER\";\n/** The OS refused the command line: too long overall, or one argument too long. */\nconst COMMAND_TOO_LONG_CODES = new Set([\"E2BIG\", \"ENAMETOOLONG\"]);\n\n/** A failed CLI run; `code` keeps the process or spawn error code (`E2BIG`, maxBuffer, …). */\nexport class OxlintCommandError extends Error {\n public constructor(\n message: string,\n public readonly code?: string,\n ) {\n super(message);\n this.name = \"OxlintCommandError\";\n }\n}\n\n/** A check stopped because the runner is shutting down; not a lint or tool failure. */\nexport class OxlintCheckCancelledError extends Error {\n public constructor() {\n super(\"Oxlint check cancelled: the development server is shutting down.\");\n this.name = \"OxlintCheckCancelledError\";\n }\n}\n\nfunction errorCodeOf(error: unknown): string | undefined {\n const code = (error as { code?: unknown } | null)?.code;\n return typeof code === \"string\" ? code : undefined;\n}\n\nexport function oxlintCommandError(\n error: { code?: unknown; signal?: string | null; killed?: boolean },\n stdout: string,\n stderr: string,\n): OxlintCommandError {\n const status =\n error.code === MAX_BUFFER_CODE\n ? `produced more than ${MAX_OUTPUT_BYTES / (1024 * 1024)} MiB of output`\n : error.killed\n ? \"timed out or terminated (30s limit)\"\n : `failed (code ${String(error.code ?? \"unknown\")}${error.signal ? `, signal ${error.signal}` : \"\"})`;\n return new OxlintCommandError(\n `Oxlint could not check changed files: ${status}${outputDetail(stdout, stderr) ? `\\n${outputDetail(stdout, stderr)}` : \"\"}`,\n typeof error.code === \"string\" ? error.code : undefined,\n );\n}\n\nexport function parseOxlintResults(\n output: string,\n files: OxlintFile[],\n cwd: string,\n): OxlintFileResult[] {\n let report: unknown;\n try {\n report = JSON.parse(output);\n } catch {\n throw new OxlintOutputParseError(\n `Oxlint could not check changed files: ${output.trim().slice(0, 2000) || \"empty diagnostics report\"}`,\n );\n }\n if (!record(report) || !Array.isArray(report.diagnostics)) {\n throw new Error(\"Oxlint returned an invalid JSON diagnostics report.\");\n }\n const results = files.map((file): OxlintFileResult => ({\n path: file.path,\n relativePath: file.relativePath,\n healthy: true,\n errors: [],\n warnings: [],\n }));\n const byPath = new Map(results.map((result) => [path.resolve(result.path), result]));\n for (const diagnostic of report.diagnostics) {\n if (!record(diagnostic) || typeof diagnostic.message !== \"string\") continue;\n if (diagnostic.severity !== \"error\" && diagnostic.severity !== \"warning\") continue;\n const target =\n typeof diagnostic.filename === \"string\"\n ? byPath.get(path.resolve(cwd, diagnostic.filename))\n : undefined;\n if (!target) {\n throw new Error(`Oxlint: ${diagnostic.message}`);\n }\n const label = Array.isArray(diagnostic.labels) ? diagnostic.labels.find(record) : undefined;\n const span = record(label) && record(label.span) ? label.span : {};\n const message: OxlintMessage = {\n type: diagnostic.severity,\n message: diagnostic.message,\n lineNumber: coordinate(span.line),\n columnNumber: coordinate(span.column),\n length: coordinate(span.length),\n filePath: target.path,\n relativePath: target.relativePath,\n ...(typeof diagnostic.code === \"string\" ? { ruleId: diagnostic.code } : {}),\n };\n target.healthy = false;\n (message.type === \"error\" ? target.errors : target.warnings).push(message);\n }\n return results;\n}\n\ntype OxlintCommandOutput = { stdout: string; stderr: string };\ntype OxlintRunnerDependencies = {\n execute?: (binaryPath: string, args: string[], cwd: string) => Promise<OxlintCommandOutput>;\n exists?: (file: string) => boolean;\n platform?: NodeJS.Platform;\n /** Overrides the per-platform command-line budget, in the units of {@link oxlintArgumentSize}. */\n commandLineLimit?: number;\n};\n\n/**\n * The share of the command-line budget one argument uses. Windows counts\n * UTF-16 characters plus quoting and a separator. POSIX `execve` counts the\n * argument's bytes, its NUL terminator and its slot in the `argv` pointer\n * array (8 bytes on 64-bit systems), all against `ARG_MAX`.\n */\nexport function oxlintArgumentSize(argument: string, platform: NodeJS.Platform): number {\n return platform === \"win32\" ? argument.length + 3 : Buffer.byteLength(argument) + 1 + 8;\n}\n\n/**\n * The command-line budget per platform, well below the real limits: Linux's\n * `ARG_MAX` is about 2 MB (512 KiB here), Windows allows 32,767 characters\n * (24 KiB here) and other systems get 128 KiB.\n */\nfunction commandLineLimit(platform: NodeJS.Platform): number {\n return platform === \"win32\" ? 24 * 1024 : platform === \"linux\" ? 512 * 1024 : 128 * 1024;\n}\n\nfunction uncheckedResult(file: OxlintFile, code: string): OxlintFileResult {\n return {\n path: file.path,\n relativePath: file.relativePath,\n healthy: false,\n errors: [],\n warnings: [\n {\n type: \"warning\",\n message: `Oxlint could not check this file: its path is too long for one command line (${code}).`,\n lineNumber: 1,\n columnNumber: 1,\n length: 1,\n filePath: file.path,\n relativePath: file.relativePath,\n },\n ],\n };\n}\n\nconst OXLINT_FLAGS = [\"--format=json\", \"--threads=1\", \"--no-error-on-unmatched-pattern\", \"--\"];\n\nfunction healthy(file: OxlintFile): OxlintFileResult {\n return {\n path: file.path,\n relativePath: file.relativePath,\n healthy: true,\n errors: [],\n warnings: [],\n };\n}\n\n/** Invoked in a dedicated worker during development; lints only the supplied disk files. */\nexport class OxlintRunner {\n private binaryPath?: string;\n private cwd = process.cwd();\n private readonly children = new Set<ChildProcess>();\n private shuttingDown = false;\n\n public constructor(private readonly dependencies: OxlintRunnerDependencies = {}) {}\n\n public initialize(cwd: string): { success: boolean; hasConfig: boolean } {\n this.cwd = cwd;\n this.binaryPath = findOxlint(cwd);\n this.shuttingDown = false;\n return { success: true, hasConfig: this.binaryPath !== undefined };\n }\n\n /**\n * Stop every running CLI child: SIGTERM first, then SIGKILL after\n * {@link SHUTDOWN_KILL_GRACE_MS} for a child that ignores it. Pending checks\n * reject with {@link OxlintCheckCancelledError}.\n */\n public async shutdown(): Promise<void> {\n this.shuttingDown = true;\n await Promise.all(\n [...this.children].map(\n (child) =>\n new Promise<void>((resolve) => {\n if (child.exitCode !== null || child.signalCode !== null) {\n resolve();\n return;\n }\n const timer = setTimeout(() => child.kill(\"SIGKILL\"), SHUTDOWN_KILL_GRACE_MS);\n child.once(\"close\", () => {\n clearTimeout(timer);\n resolve();\n });\n child.kill(\"SIGTERM\");\n }),\n ),\n );\n this.children.clear();\n }\n\n private execute(binaryPath: string, args: string[], cwd: string): Promise<OxlintCommandOutput> {\n if (this.dependencies.execute) return this.dependencies.execute(binaryPath, args, cwd);\n return new Promise((resolve, reject) => {\n const child = execFile(\n process.execPath,\n [binaryPath, ...args],\n {\n cwd,\n encoding: \"utf8\",\n windowsHide: true,\n timeout: 30_000,\n maxBuffer: MAX_OUTPUT_BYTES,\n },\n (error, stdout, stderr) => {\n this.children.delete(child);\n if (error && this.shuttingDown) {\n reject(new OxlintCheckCancelledError());\n return;\n }\n // Exit 1 with a JSON report is the normal result for lint errors.\n if (error && (error.code !== 1 || error.killed)) {\n reject(oxlintCommandError(error, stdout, stderr));\n return;\n }\n resolve({ stdout, stderr });\n },\n );\n this.children.add(child);\n });\n }\n\n /**\n * Lint one batch. A batch whose report overflows the output buffer is split\n * in half and retried, down to single files; a single file whose path the OS\n * refuses as too long is reported as unchecked instead of failing the check.\n */\n private async checkBatch(\n binaryPath: string,\n filesInBatch: OxlintFile[],\n ): Promise<OxlintFileResult[]> {\n if (this.shuttingDown) throw new OxlintCheckCancelledError();\n let output: OxlintCommandOutput;\n try {\n output = await this.execute(\n binaryPath,\n [...OXLINT_FLAGS, ...filesInBatch.map((file) => path.relative(this.cwd, file.path))],\n this.cwd,\n );\n } catch (error) {\n if (this.shuttingDown) throw new OxlintCheckCancelledError();\n const code = errorCodeOf(error);\n if (code === MAX_BUFFER_CODE && filesInBatch.length > 1) {\n const middle = Math.ceil(filesInBatch.length / 2);\n return [\n ...(await this.checkBatch(binaryPath, filesInBatch.slice(0, middle))),\n ...(await this.checkBatch(binaryPath, filesInBatch.slice(middle))),\n ];\n }\n const [only] = filesInBatch;\n if (code && COMMAND_TOO_LONG_CODES.has(code) && only && filesInBatch.length === 1) {\n return [uncheckedResult(only, code)];\n }\n throw error;\n }\n try {\n return parseOxlintResults(output.stdout, filesInBatch, this.cwd);\n } catch (error) {\n if (!(error instanceof OxlintOutputParseError)) throw error;\n const detail = outputDetail(output.stdout, output.stderr) || \"empty diagnostics report\";\n throw new Error(`Oxlint could not check changed files: ${detail}`, { cause: error });\n }\n }\n\n public async checkFiles(files: OxlintFile[]): Promise<OxlintFileResult[]> {\n const exists = this.dependencies.exists ?? existsSync;\n const lintable = files.filter(\n (file) => /\\.[cm]?[jt]sx?$/i.test(file.path) && exists(file.path),\n );\n const binaryPath = this.binaryPath;\n if (!binaryPath || lintable.length === 0) return files.map(healthy);\n const platform = this.dependencies.platform ?? process.platform;\n const limit = this.dependencies.commandLineLimit ?? commandLineLimit(platform);\n const size = (arg: string) => oxlintArgumentSize(arg, platform);\n const baseSize = [process.execPath, binaryPath, ...OXLINT_FLAGS].reduce(\n (sum, arg) => sum + size(arg),\n 0,\n );\n const batches: OxlintFile[][] = [];\n let batch: OxlintFile[] = [];\n let batchSize = baseSize;\n const flush = () => {\n if (batch.length) batches.push(batch);\n batch = [];\n batchSize = baseSize;\n };\n for (const file of lintable) {\n const argumentSize = size(path.relative(this.cwd, file.path));\n if (baseSize + argumentSize > limit) {\n // Over the conservative budget on its own: run it alone, since the\n // real limit is usually far higher.\n flush();\n batches.push([file]);\n continue;\n }\n if (batch.length >= MAX_FILES_PER_BATCH || batchSize + argumentSize > limit) flush();\n batch.push(file);\n batchSize += argumentSize;\n }\n flush();\n const results = new Map(files.map((file) => [file.path, healthy(file)]));\n for (const filesInBatch of batches) {\n for (const result of await this.checkBatch(binaryPath, filesInBatch)) {\n results.set(result.path, result);\n }\n }\n return files.map((file) => results.get(file.path) ?? healthy(file));\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export {}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { OxlintCheckCancelledError, OxlintRunner } from "../oxlint-runner.mjs";
|
|
2
|
+
import { parentPort, workerData } from "node:worker_threads";
|
|
3
|
+
|
|
4
|
+
//#region ../../packages/core/src/dev-server/health-checker/workers/oxlint-health.worker.ts
|
|
5
|
+
const runner = new OxlintRunner();
|
|
6
|
+
process.once("exit", () => runner.shutdown());
|
|
7
|
+
parentPort?.once("close", () => runner.shutdown());
|
|
8
|
+
parentPort?.on("message", async (message) => {
|
|
9
|
+
try {
|
|
10
|
+
switch (message.type) {
|
|
11
|
+
case "init":
|
|
12
|
+
parentPort?.postMessage({
|
|
13
|
+
type: "initialized",
|
|
14
|
+
...runner.initialize(message.config.cwd)
|
|
15
|
+
});
|
|
16
|
+
break;
|
|
17
|
+
case "check":
|
|
18
|
+
parentPort?.postMessage({
|
|
19
|
+
type: "results",
|
|
20
|
+
results: await runner.checkFiles(message.files)
|
|
21
|
+
});
|
|
22
|
+
break;
|
|
23
|
+
case "filesDeleted": break;
|
|
24
|
+
case "shutdown":
|
|
25
|
+
await runner.shutdown();
|
|
26
|
+
process.exit(0);
|
|
27
|
+
}
|
|
28
|
+
} catch (error) {
|
|
29
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
30
|
+
if (!(error instanceof OxlintCheckCancelledError)) console.warn("Oxlint Health Checker:", detail);
|
|
31
|
+
parentPort?.postMessage({
|
|
32
|
+
type: "error",
|
|
33
|
+
message: detail
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
});
|
|
37
|
+
const data = workerData;
|
|
38
|
+
if (data?.autoInit) runner.initialize(data.cwd ?? process.cwd());
|
|
39
|
+
|
|
40
|
+
//#endregion
|
|
41
|
+
export { };
|
|
42
|
+
//# sourceMappingURL=oxlint-health.worker.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"oxlint-health.worker.mjs","names":[],"sources":["../../../../../../../../../../packages/core/src/dev-server/health-checker/workers/oxlint-health.worker.ts"],"sourcesContent":["import { parentPort, workerData } from \"node:worker_threads\";\nimport { OxlintCheckCancelledError, OxlintRunner, type OxlintFile } from \"../oxlint-runner\";\n\ntype WorkerMessage =\n | { type: \"init\"; config: { cwd: string } }\n | { type: \"check\"; files: OxlintFile[] }\n | { type: \"filesDeleted\"; files: OxlintFile[] }\n | { type: \"shutdown\" };\n\nconst runner = new OxlintRunner();\nprocess.once(\"exit\", () => runner.shutdown());\nparentPort?.once(\"close\", () => runner.shutdown());\nparentPort?.on(\"message\", async (message: WorkerMessage) => {\n try {\n switch (message.type) {\n case \"init\":\n parentPort?.postMessage({ type: \"initialized\", ...runner.initialize(message.config.cwd) });\n break;\n case \"check\":\n parentPort?.postMessage({\n type: \"results\",\n results: await runner.checkFiles(message.files),\n });\n break;\n case \"filesDeleted\":\n // The CLI reads current disk contents and holds no persistent file cache.\n break;\n case \"shutdown\":\n await runner.shutdown();\n process.exit(0);\n }\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n // A check cut short by shutdown is expected; only real failures are printed.\n if (!(error instanceof OxlintCheckCancelledError))\n console.warn(\"Oxlint Health Checker:\", detail);\n parentPort?.postMessage({ type: \"error\", message: detail });\n }\n});\n\nconst data = workerData as { autoInit?: boolean; cwd?: string } | undefined;\nif (data?.autoInit) runner.initialize(data.cwd ?? process.cwd());\n"],"mappings":";;;;AASA,MAAM,SAAS,IAAI,aAAa;AAChC,QAAQ,KAAK,cAAc,OAAO,SAAS,CAAC;AAC5C,YAAY,KAAK,eAAe,OAAO,SAAS,CAAC;AACjD,YAAY,GAAG,WAAW,OAAO,YAA2B;CAC1D,IAAI;EACF,QAAQ,QAAQ,MAAhB;GACE,KAAK;IACH,YAAY,YAAY;KAAE,MAAM;KAAe,GAAG,OAAO,WAAW,QAAQ,OAAO,GAAG;IAAE,CAAC;IACzF;GACF,KAAK;IACH,YAAY,YAAY;KACtB,MAAM;KACN,SAAS,MAAM,OAAO,WAAW,QAAQ,KAAK;IAChD,CAAC;IACD;GACF,KAAK,gBAEH;GACF,KAAK;IACH,MAAM,OAAO,SAAS;IACtB,QAAQ,KAAK,CAAC;EAClB;CACF,SAAS,OAAO;EACd,MAAM,SAAS,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK;EAEpE,IAAI,EAAE,iBAAiB,4BACrB,QAAQ,KAAK,0BAA0B,MAAM;EAC/C,YAAY,YAAY;GAAE,MAAM;GAAS,SAAS;EAAO,CAAC;CAC5D;AACF,CAAC;AAED,MAAM,OAAO;AACb,IAAI,MAAM,UAAU,OAAO,WAAW,KAAK,OAAO,QAAQ,IAAI,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export {}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
+
import { CompilerSession } from "../../../tooling/typescript/compiler.mjs";
|
|
1
2
|
import path from "node:path";
|
|
2
|
-
import
|
|
3
|
+
import { existsSync } from "node:fs";
|
|
3
4
|
import { parentPort, workerData } from "worker_threads";
|
|
4
5
|
|
|
5
6
|
//#region ../../packages/core/src/dev-server/health-checker/workers/ts-health.worker.ts
|
|
@@ -8,194 +9,56 @@ import { parentPort, workerData } from "worker_threads";
|
|
|
8
9
|
*
|
|
9
10
|
* This worker runs in a dedicated thread to perform TypeScript type checking
|
|
10
11
|
* without blocking the main dev server thread. It maintains a persistent
|
|
11
|
-
*
|
|
12
|
+
* native compiler session for fast incremental type checking.
|
|
12
13
|
*
|
|
13
14
|
* Communication:
|
|
14
15
|
* - Receives: { type: 'init' | 'check' | 'fileChanges' | 'shutdown', ... }
|
|
15
16
|
* - Sends: { type: 'results' | 'initialized' | 'error', ... }
|
|
16
17
|
*/
|
|
17
|
-
/**
|
|
18
|
-
* TypeScript Health Worker class
|
|
19
|
-
* Maintains persistent ts.Program for incremental type checking
|
|
20
|
-
*/
|
|
18
|
+
/** The session owns one native compiler child and closes it on shutdown. */
|
|
21
19
|
var TypeScriptHealthWorker = class {
|
|
22
20
|
constructor() {
|
|
23
|
-
this.
|
|
24
|
-
this.parsedConfig = null;
|
|
25
|
-
this.fileContents = /* @__PURE__ */ new Map();
|
|
26
|
-
this.deletedRootPaths = /* @__PURE__ */ new Set();
|
|
27
|
-
this.initialized = false;
|
|
28
|
-
this.cwd = process.cwd();
|
|
21
|
+
this.session = null;
|
|
29
22
|
}
|
|
30
|
-
/**
|
|
31
|
-
* Initialize the worker with TypeScript configuration
|
|
32
|
-
*/
|
|
33
23
|
initialize(config) {
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
return true;
|
|
40
|
-
}
|
|
41
|
-
const configFile = ts.readConfigFile(tsconfigPath, ts.sys.readFile);
|
|
42
|
-
if (configFile.error) {
|
|
43
|
-
console.warn("TypeScript Worker: Error reading tsconfig:", configFile.error);
|
|
44
|
-
this.initialized = true;
|
|
45
|
-
return true;
|
|
46
|
-
}
|
|
47
|
-
this.parsedConfig = ts.parseJsonConfigFileContent(configFile.config, ts.sys, this.cwd);
|
|
48
|
-
if (this.parsedConfig.errors.length > 0) console.warn("TypeScript Worker: tsconfig has errors:", this.parsedConfig.errors);
|
|
49
|
-
this.initialized = true;
|
|
50
|
-
return true;
|
|
51
|
-
} catch (error) {
|
|
52
|
-
console.error("TypeScript Worker: Failed to initialize:", error);
|
|
53
|
-
this.initialized = true;
|
|
54
|
-
return false;
|
|
55
|
-
}
|
|
24
|
+
this.close();
|
|
25
|
+
const cwd = config.cwd || process.cwd();
|
|
26
|
+
const configPath = path.resolve(cwd, config.tsconfigPath ?? "tsconfig.json");
|
|
27
|
+
if (existsSync(configPath)) this.session = new CompilerSession(cwd, configPath);
|
|
28
|
+
return true;
|
|
56
29
|
}
|
|
57
|
-
/**
|
|
58
|
-
* Check files for TypeScript errors
|
|
59
|
-
*/
|
|
60
30
|
checkFiles(files) {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
31
|
+
this.session?.update(files);
|
|
32
|
+
return files.map((file) => {
|
|
33
|
+
const messages = (this.session?.diagnostics(file.path) ?? []).map((diagnostic) => ({
|
|
34
|
+
type: diagnostic.severity,
|
|
35
|
+
message: diagnostic.message,
|
|
36
|
+
lineNumber: diagnostic.line,
|
|
37
|
+
columnNumber: diagnostic.column,
|
|
38
|
+
length: diagnostic.length,
|
|
39
|
+
filePath: file.path,
|
|
40
|
+
relativePath: file.relativePath
|
|
41
|
+
}));
|
|
42
|
+
const errors = messages.filter((message) => message.type === "error");
|
|
43
|
+
const warnings = messages.filter((message) => message.type === "warning");
|
|
44
|
+
return {
|
|
45
|
+
path: file.path,
|
|
46
|
+
relativePath: file.relativePath,
|
|
47
|
+
healthy: errors.length === 0 && warnings.length === 0,
|
|
48
|
+
errors,
|
|
49
|
+
warnings
|
|
50
|
+
};
|
|
51
|
+
});
|
|
79
52
|
}
|
|
80
|
-
/**
|
|
81
|
-
* Handle file changes (update program incrementally)
|
|
82
|
-
*/
|
|
83
53
|
handleFileChanges(files) {
|
|
84
|
-
|
|
85
|
-
this.fileContents.set(file.path, file.content);
|
|
86
|
-
this.deletedRootPaths.delete(this.getPathIdentity(file.path));
|
|
87
|
-
}
|
|
88
|
-
if (this.parsedConfig && this.program) this.program = ts.createProgram(this.getProgramRootNames(), this.parsedConfig.options, this.createCompilerHost(), this.program || void 0);
|
|
54
|
+
this.session?.update(files);
|
|
89
55
|
}
|
|
90
|
-
/**
|
|
91
|
-
* Handle deleted files (remove from cache)
|
|
92
|
-
*/
|
|
93
56
|
handleFilesDeleted(files) {
|
|
94
|
-
|
|
95
|
-
for (const file of files) {
|
|
96
|
-
const identity = this.getPathIdentity(file.path);
|
|
97
|
-
const cachedPath = Array.from(this.fileContents.keys()).find((candidate) => this.getPathIdentity(candidate) === identity);
|
|
98
|
-
if (cachedPath) {
|
|
99
|
-
this.fileContents.delete(cachedPath);
|
|
100
|
-
hasChanges = true;
|
|
101
|
-
}
|
|
102
|
-
if (!this.deletedRootPaths.has(identity)) hasChanges = true;
|
|
103
|
-
this.deletedRootPaths.add(identity);
|
|
104
|
-
}
|
|
105
|
-
if (hasChanges && this.parsedConfig) this.program = ts.createProgram(this.getProgramRootNames(), this.parsedConfig.options, this.createCompilerHost(), this.program || void 0);
|
|
106
|
-
}
|
|
107
|
-
/**
|
|
108
|
-
* Check a single file for diagnostics
|
|
109
|
-
*/
|
|
110
|
-
checkSingleFile(file) {
|
|
111
|
-
if (!this.program) return {
|
|
112
|
-
path: file.path,
|
|
113
|
-
relativePath: file.relativePath,
|
|
114
|
-
healthy: true,
|
|
115
|
-
errors: [],
|
|
116
|
-
warnings: []
|
|
117
|
-
};
|
|
118
|
-
const sourceFile = this.program.getSourceFile(file.path);
|
|
119
|
-
if (!sourceFile) return {
|
|
120
|
-
path: file.path,
|
|
121
|
-
relativePath: file.relativePath,
|
|
122
|
-
healthy: true,
|
|
123
|
-
errors: [],
|
|
124
|
-
warnings: []
|
|
125
|
-
};
|
|
126
|
-
const syntacticDiagnostics = this.program.getSyntacticDiagnostics(sourceFile);
|
|
127
|
-
const semanticDiagnostics = this.program.getSemanticDiagnostics(sourceFile);
|
|
128
|
-
const allDiagnostics = [...syntacticDiagnostics, ...semanticDiagnostics];
|
|
129
|
-
const errors = [];
|
|
130
|
-
const warnings = [];
|
|
131
|
-
for (const diagnostic of allDiagnostics) {
|
|
132
|
-
const message = this.formatDiagnostic(diagnostic, file);
|
|
133
|
-
if (diagnostic.category === ts.DiagnosticCategory.Error) errors.push(message);
|
|
134
|
-
else if (diagnostic.category === ts.DiagnosticCategory.Warning) warnings.push(message);
|
|
135
|
-
}
|
|
136
|
-
return {
|
|
137
|
-
path: file.path,
|
|
138
|
-
relativePath: file.relativePath,
|
|
139
|
-
healthy: errors.length === 0 && warnings.length === 0,
|
|
140
|
-
errors,
|
|
141
|
-
warnings
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
/**
|
|
145
|
-
* Format a TypeScript diagnostic into our message format
|
|
146
|
-
*/
|
|
147
|
-
formatDiagnostic(diagnostic, file) {
|
|
148
|
-
let lineNumber = 1;
|
|
149
|
-
let columnNumber = 1;
|
|
150
|
-
let length = 1;
|
|
151
|
-
if (diagnostic.file && diagnostic.start !== void 0) {
|
|
152
|
-
const pos = diagnostic.file.getLineAndCharacterOfPosition(diagnostic.start);
|
|
153
|
-
lineNumber = pos.line + 1;
|
|
154
|
-
columnNumber = pos.character + 1;
|
|
155
|
-
length = diagnostic.length || 1;
|
|
156
|
-
}
|
|
157
|
-
const messageText = typeof diagnostic.messageText === "string" ? diagnostic.messageText : diagnostic.messageText.messageText;
|
|
158
|
-
return {
|
|
159
|
-
type: diagnostic.category === ts.DiagnosticCategory.Error ? "error" : "warning",
|
|
160
|
-
message: messageText,
|
|
161
|
-
lineNumber,
|
|
162
|
-
columnNumber,
|
|
163
|
-
length,
|
|
164
|
-
filePath: file.path,
|
|
165
|
-
relativePath: file.relativePath
|
|
166
|
-
};
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Create a custom compiler host that reads from in-memory cache
|
|
170
|
-
*/
|
|
171
|
-
createCompilerHost() {
|
|
172
|
-
const defaultHost = ts.createCompilerHost(this.parsedConfig?.options || {});
|
|
173
|
-
return {
|
|
174
|
-
...defaultHost,
|
|
175
|
-
readFile: (fileName) => {
|
|
176
|
-
if (this.fileContents.has(fileName)) return this.fileContents.get(fileName);
|
|
177
|
-
return defaultHost.readFile(fileName);
|
|
178
|
-
},
|
|
179
|
-
fileExists: (fileName) => {
|
|
180
|
-
if (this.fileContents.has(fileName)) return true;
|
|
181
|
-
return defaultHost.fileExists(fileName);
|
|
182
|
-
}
|
|
183
|
-
};
|
|
184
|
-
}
|
|
185
|
-
/** Keep tsconfig-selected declarations in every incremental program. */
|
|
186
|
-
getProgramRootNames() {
|
|
187
|
-
const configuredRoots = this.parsedConfig?.fileNames || [];
|
|
188
|
-
const rootsByIdentity = /* @__PURE__ */ new Map();
|
|
189
|
-
for (const filePath of [...configuredRoots, ...this.fileContents.keys()]) {
|
|
190
|
-
const identity = this.getPathIdentity(filePath);
|
|
191
|
-
if (!this.deletedRootPaths.has(identity)) rootsByIdentity.set(identity, filePath);
|
|
192
|
-
}
|
|
193
|
-
return [...rootsByIdentity.values()];
|
|
57
|
+
this.session?.update([], files.map((file) => file.path));
|
|
194
58
|
}
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
return ts.sys.useCaseSensitiveFileNames ? normalized : normalized.toLowerCase();
|
|
59
|
+
close() {
|
|
60
|
+
this.session?.close();
|
|
61
|
+
this.session = null;
|
|
199
62
|
}
|
|
200
63
|
};
|
|
201
64
|
const worker = new TypeScriptHealthWorker();
|
|
@@ -224,7 +87,9 @@ parentPort?.on("message", (message) => {
|
|
|
224
87
|
case "filesDeleted":
|
|
225
88
|
worker.handleFilesDeleted(message.files);
|
|
226
89
|
break;
|
|
227
|
-
case "shutdown":
|
|
90
|
+
case "shutdown":
|
|
91
|
+
worker.close();
|
|
92
|
+
process.exit(0);
|
|
228
93
|
}
|
|
229
94
|
} catch (error) {
|
|
230
95
|
const response = {
|
|
@@ -235,6 +100,7 @@ parentPort?.on("message", (message) => {
|
|
|
235
100
|
}
|
|
236
101
|
});
|
|
237
102
|
if (workerData?.autoInit) worker.initialize({ cwd: workerData.cwd || process.cwd() });
|
|
103
|
+
parentPort?.on("close", () => worker.close());
|
|
238
104
|
|
|
239
105
|
//#endregion
|
|
240
106
|
export { };
|