@warlock.js/core 5.29.0 → 5.30.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 +58 -0
- package/esm/application/app.d.mts +1 -1
- package/esm/application/app.d.mts.map +1 -1
- package/esm/application/app.mjs +1 -1
- package/esm/application/app.mjs.map +1 -1
- package/esm/application/application-config-types.d.mts +1 -1
- package/esm/application/application-config-types.d.mts.map +1 -1
- package/esm/application/application.d.mts +1 -1
- package/esm/application/application.d.mts.map +1 -1
- package/esm/application/application.mjs +1 -1
- package/esm/application/application.mjs.map +1 -1
- package/esm/application/boot-signal.d.mts +1 -1
- package/esm/application/boot-signal.d.mts.map +1 -1
- package/esm/application/boot-signal.mjs +1 -1
- package/esm/application/boot-signal.mjs.map +1 -1
- package/esm/application/public-url.d.mts +1 -1
- package/esm/application/public-url.d.mts.map +1 -1
- package/esm/application/public-url.mjs +1 -1
- package/esm/application/public-url.mjs.map +1 -1
- package/esm/application/roles.d.mts +1 -1
- package/esm/application/roles.d.mts.map +1 -1
- package/esm/application/roles.mjs +1 -1
- package/esm/application/roles.mjs.map +1 -1
- package/esm/benchmark/benchmark-snapshots.d.mts +1 -1
- package/esm/benchmark/benchmark-snapshots.d.mts.map +1 -1
- package/esm/benchmark/benchmark-snapshots.mjs +1 -1
- package/esm/benchmark/benchmark-snapshots.mjs.map +1 -1
- package/esm/benchmark/benchmark.d.mts +1 -1
- package/esm/benchmark/benchmark.d.mts.map +1 -1
- package/esm/benchmark/benchmark.mjs +1 -1
- package/esm/benchmark/benchmark.mjs.map +1 -1
- package/esm/benchmark/channels/console.channel.d.mts +1 -1
- package/esm/benchmark/channels/console.channel.d.mts.map +1 -1
- package/esm/benchmark/channels/console.channel.mjs +1 -1
- package/esm/benchmark/channels/console.channel.mjs.map +1 -1
- package/esm/benchmark/channels/noop.channel.d.mts +1 -1
- package/esm/benchmark/channels/noop.channel.d.mts.map +1 -1
- package/esm/benchmark/channels/noop.channel.mjs +1 -1
- package/esm/benchmark/channels/noop.channel.mjs.map +1 -1
- package/esm/benchmark/profiler.d.mts +1 -1
- package/esm/benchmark/profiler.d.mts.map +1 -1
- package/esm/benchmark/profiler.mjs +1 -1
- package/esm/benchmark/profiler.mjs.map +1 -1
- package/esm/benchmark/types.d.mts +1 -1
- package/esm/benchmark/types.d.mts.map +1 -1
- package/esm/bootstrap/setup.d.mts +1 -1
- package/esm/bootstrap/setup.d.mts.map +1 -1
- package/esm/bootstrap/setup.mjs +1 -1
- package/esm/bootstrap/setup.mjs.map +1 -1
- package/esm/bootstrap.d.mts +1 -1
- package/esm/bootstrap.d.mts.map +1 -1
- package/esm/bootstrap.mjs +1 -1
- package/esm/bootstrap.mjs.map +1 -1
- package/esm/cache/database-cache-driver.d.mts +1 -1
- package/esm/cache/database-cache-driver.d.mts.map +1 -1
- package/esm/cache/database-cache-driver.mjs +1 -1
- package/esm/cache/database-cache-driver.mjs.map +1 -1
- package/esm/cache/index.mjs +1 -1
- package/esm/cache/index.mjs.map +1 -1
- package/esm/cli/cli-commands.manager.mjs +1 -1
- package/esm/cli/cli-commands.manager.mjs.map +1 -1
- package/esm/cli/cli-commands.utils.mjs +1 -1
- package/esm/cli/cli-commands.utils.mjs.map +1 -1
- package/esm/cli/commands/add.command.mjs +1 -1
- package/esm/cli/commands/add.command.mjs.map +1 -1
- package/esm/cli/commands/build.command.mjs +1 -1
- package/esm/cli/commands/build.command.mjs.map +1 -1
- package/esm/cli/commands/create-database.command.mjs +1 -1
- package/esm/cli/commands/create-database.command.mjs.map +1 -1
- package/esm/cli/commands/dev-server.command.mjs +1 -1
- package/esm/cli/commands/dev-server.command.mjs.map +1 -1
- package/esm/cli/commands/doctor/boot-for-diagnostics.mjs +1 -1
- package/esm/cli/commands/doctor/boot-for-diagnostics.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/config.check.mjs +1 -1
- package/esm/cli/commands/doctor/checks/config.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/connectors.check.mjs +1 -1
- package/esm/cli/commands/doctor/checks/connectors.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/handler-signature.check.mjs +1 -1
- package/esm/cli/commands/doctor/checks/handler-signature.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/health.check.mjs +1 -1
- package/esm/cli/commands/doctor/checks/health.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/index.mjs +1 -1
- package/esm/cli/commands/doctor/checks/index.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/jwt-secret.check.mjs +1 -1
- package/esm/cli/commands/doctor/checks/jwt-secret.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/locales-ts-deprecated.check.mjs +1 -1
- package/esm/cli/commands/doctor/checks/locales-ts-deprecated.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/optional-peers.check.mjs +1 -1
- package/esm/cli/commands/doctor/checks/optional-peers.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs +1 -1
- package/esm/cli/commands/doctor/checks/release-hygiene.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/checks/routes.check.mjs +1 -1
- package/esm/cli/commands/doctor/checks/routes.check.mjs.map +1 -1
- package/esm/cli/commands/doctor/doctor-command.action.mjs +1 -1
- package/esm/cli/commands/doctor/doctor-command.action.mjs.map +1 -1
- package/esm/cli/commands/doctor/format-report.mjs +1 -1
- package/esm/cli/commands/doctor/format-report.mjs.map +1 -1
- package/esm/cli/commands/doctor/run-checks.mjs +1 -1
- package/esm/cli/commands/doctor/run-checks.mjs.map +1 -1
- package/esm/cli/commands/doctor.command.mjs +1 -1
- package/esm/cli/commands/doctor.command.mjs.map +1 -1
- package/esm/cli/commands/drop-tables.command.mjs +1 -1
- package/esm/cli/commands/drop-tables.command.mjs.map +1 -1
- package/esm/cli/commands/generate/generate.command.mjs +1 -1
- package/esm/cli/commands/generate/generate.command.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/column-dsl-parser.mjs +1 -1
- package/esm/cli/commands/generate/generators/column-dsl-parser.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/controller.generator.mjs +1 -1
- package/esm/cli/commands/generate/generators/controller.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/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 +1 -1
- package/esm/cli/commands/generate/generators/model.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/module.generator.mjs +1 -1
- package/esm/cli/commands/generate/generators/module.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/repository.generator.mjs +1 -1
- package/esm/cli/commands/generate/generators/repository.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/resource.generator.mjs +1 -1
- package/esm/cli/commands/generate/generators/resource.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/service.generator.mjs +1 -1
- package/esm/cli/commands/generate/generators/service.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/generators/use-case.generator.mjs +1 -1
- package/esm/cli/commands/generate/generators/use-case.generator.mjs.map +1 -1
- package/esm/cli/commands/generate/templates/stubs.mjs +1 -1
- package/esm/cli/commands/generate/templates/stubs.mjs.map +1 -1
- package/esm/cli/commands/generate/utils/name-parser.mjs +1 -1
- package/esm/cli/commands/generate/utils/name-parser.mjs.map +1 -1
- package/esm/cli/commands/generate/utils/path-resolver.mjs +1 -1
- package/esm/cli/commands/generate/utils/path-resolver.mjs.map +1 -1
- package/esm/cli/commands/generate/utils/prompt.mjs +1 -1
- package/esm/cli/commands/generate/utils/prompt.mjs.map +1 -1
- package/esm/cli/commands/generate/utils/writer.mjs +1 -1
- package/esm/cli/commands/generate/utils/writer.mjs.map +1 -1
- package/esm/cli/commands/migrate.command.mjs +1 -1
- package/esm/cli/commands/migrate.command.mjs.map +1 -1
- package/esm/cli/commands/openapi-generator.action.mjs +1 -1
- package/esm/cli/commands/openapi-generator.action.mjs.map +1 -1
- package/esm/cli/commands/openapi-generator.command.mjs +1 -1
- package/esm/cli/commands/openapi-generator.command.mjs.map +1 -1
- package/esm/cli/commands/postman-generator.action.mjs +1 -1
- package/esm/cli/commands/postman-generator.action.mjs.map +1 -1
- package/esm/cli/commands/postman-generator.command.mjs +1 -1
- package/esm/cli/commands/postman-generator.command.mjs.map +1 -1
- package/esm/cli/commands/routes/diff-page-routes.mjs +1 -1
- package/esm/cli/commands/routes/diff-page-routes.mjs.map +1 -1
- package/esm/cli/commands/routes/format-routes-table.mjs +1 -1
- package/esm/cli/commands/routes/format-routes-table.mjs.map +1 -1
- package/esm/cli/commands/routes/route-row.mjs +1 -1
- package/esm/cli/commands/routes/route-row.mjs.map +1 -1
- package/esm/cli/commands/routes/routes-command.action.mjs +1 -1
- package/esm/cli/commands/routes/routes-command.action.mjs.map +1 -1
- package/esm/cli/commands/routes/routes-diff.action.mjs +1 -1
- package/esm/cli/commands/routes/routes-diff.action.mjs.map +1 -1
- package/esm/cli/commands/routes/with-console-on-stderr.mjs +1 -1
- package/esm/cli/commands/routes/with-console-on-stderr.mjs.map +1 -1
- package/esm/cli/commands/routes.command.mjs +1 -1
- package/esm/cli/commands/routes.command.mjs.map +1 -1
- package/esm/cli/commands/seed.command.mjs +1 -1
- package/esm/cli/commands/seed.command.mjs.map +1 -1
- package/esm/cli/commands/start-production.command.mjs +1 -1
- package/esm/cli/commands/start-production.command.mjs.map +1 -1
- package/esm/cli/commands/storage-put.action.mjs +1 -1
- package/esm/cli/commands/storage-put.action.mjs.map +1 -1
- package/esm/cli/commands/storage-put.command.mjs +1 -1
- package/esm/cli/commands/storage-put.command.mjs.map +1 -1
- package/esm/cli/commands/typings-generator.command.mjs +1 -1
- package/esm/cli/commands/typings-generator.command.mjs.map +1 -1
- package/esm/cli/commands/update.command.mjs +1 -1
- package/esm/cli/commands/update.command.mjs.map +1 -1
- package/esm/cli/commands-loader.mjs +1 -1
- package/esm/cli/commands-loader.mjs.map +1 -1
- package/esm/cli/framework-cli-commands.mjs +1 -1
- package/esm/cli/framework-cli-commands.mjs.map +1 -1
- package/esm/cli/parse-cli-args.mjs +1 -1
- package/esm/cli/parse-cli-args.mjs.map +1 -1
- package/esm/cli/start.mjs +1 -1
- package/esm/cli/start.mjs.map +1 -1
- package/esm/cli/string-similarity.mjs +1 -1
- package/esm/cli/string-similarity.mjs.map +1 -1
- package/esm/commands/cli-command.d.mts +1 -1
- package/esm/commands/cli-command.d.mts.map +1 -1
- package/esm/commands/cli-command.mjs +1 -1
- package/esm/commands/cli-command.mjs.map +1 -1
- package/esm/commands/types.d.mts +1 -1
- package/esm/commands/types.d.mts.map +1 -1
- package/esm/config/config-getter.d.mts +1 -1
- package/esm/config/config-getter.d.mts.map +1 -1
- package/esm/config/config-getter.mjs +1 -1
- package/esm/config/config-getter.mjs.map +1 -1
- package/esm/config/config-handlers.d.mts +1 -1
- package/esm/config/config-handlers.d.mts.map +1 -1
- package/esm/config/config-handlers.mjs +1 -1
- package/esm/config/config-handlers.mjs.map +1 -1
- package/esm/config/config-key-from-path.mjs +1 -1
- package/esm/config/config-key-from-path.mjs.map +1 -1
- package/esm/config/config-loader.d.mts +1 -1
- package/esm/config/config-loader.d.mts.map +1 -1
- package/esm/config/config-loader.mjs +1 -1
- package/esm/config/config-loader.mjs.map +1 -1
- package/esm/config/config-manager.mjs +1 -1
- package/esm/config/config-manager.mjs.map +1 -1
- package/esm/config/config-setter.d.mts +1 -1
- package/esm/config/config-setter.d.mts.map +1 -1
- package/esm/config/config-setter.mjs +1 -1
- package/esm/config/config-setter.mjs.map +1 -1
- package/esm/config/config-special-handlers.d.mts +1 -1
- package/esm/config/config-special-handlers.d.mts.map +1 -1
- package/esm/config/config-special-handlers.mjs +1 -1
- package/esm/config/config-special-handlers.mjs.map +1 -1
- package/esm/config/load-config-files.mjs +1 -1
- package/esm/config/load-config-files.mjs.map +1 -1
- package/esm/config/locale-configuration.mjs +1 -1
- package/esm/config/locale-configuration.mjs.map +1 -1
- package/esm/config/types.d.mts +1 -1
- package/esm/config/types.d.mts.map +1 -1
- package/esm/connectors/access-connector.d.mts +1 -1
- package/esm/connectors/access-connector.d.mts.map +1 -1
- package/esm/connectors/access-connector.mjs +1 -1
- package/esm/connectors/access-connector.mjs.map +1 -1
- package/esm/connectors/ai-connector.d.mts +1 -1
- package/esm/connectors/ai-connector.d.mts.map +1 -1
- package/esm/connectors/ai-connector.mjs +1 -1
- package/esm/connectors/ai-connector.mjs.map +1 -1
- package/esm/connectors/assert-no-reserved-connector-names.d.mts +1 -1
- package/esm/connectors/assert-no-reserved-connector-names.d.mts.map +1 -1
- package/esm/connectors/assert-no-reserved-connector-names.mjs +1 -1
- package/esm/connectors/assert-no-reserved-connector-names.mjs.map +1 -1
- package/esm/connectors/assert-unique-connector-names.d.mts +1 -1
- package/esm/connectors/assert-unique-connector-names.d.mts.map +1 -1
- package/esm/connectors/assert-unique-connector-names.mjs +1 -1
- package/esm/connectors/assert-unique-connector-names.mjs.map +1 -1
- package/esm/connectors/base-connector.d.mts +1 -1
- package/esm/connectors/base-connector.d.mts.map +1 -1
- package/esm/connectors/base-connector.mjs +1 -1
- package/esm/connectors/base-connector.mjs.map +1 -1
- package/esm/connectors/cache-connector.d.mts +1 -1
- package/esm/connectors/cache-connector.d.mts.map +1 -1
- package/esm/connectors/cache-connector.mjs +1 -1
- package/esm/connectors/cache-connector.mjs.map +1 -1
- package/esm/connectors/connectors-manager.d.mts +1 -1
- package/esm/connectors/connectors-manager.d.mts.map +1 -1
- package/esm/connectors/connectors-manager.mjs +2 -2
- package/esm/connectors/connectors-manager.mjs.map +1 -1
- package/esm/connectors/database-connector.d.mts +1 -1
- package/esm/connectors/database-connector.d.mts.map +1 -1
- package/esm/connectors/database-connector.mjs +1 -1
- package/esm/connectors/database-connector.mjs.map +1 -1
- package/esm/connectors/describe-server-address.mjs +1 -1
- package/esm/connectors/describe-server-address.mjs.map +1 -1
- package/esm/connectors/herald-connector.d.mts +1 -1
- package/esm/connectors/herald-connector.d.mts.map +1 -1
- package/esm/connectors/herald-connector.mjs +1 -1
- package/esm/connectors/herald-connector.mjs.map +1 -1
- package/esm/connectors/http-connector.d.mts +1 -1
- package/esm/connectors/http-connector.d.mts.map +1 -1
- package/esm/connectors/http-connector.mjs +1 -1
- package/esm/connectors/http-connector.mjs.map +1 -1
- package/esm/connectors/logger-connector.d.mts +1 -1
- package/esm/connectors/logger-connector.d.mts.map +1 -1
- package/esm/connectors/logger-connector.mjs +1 -1
- package/esm/connectors/logger-connector.mjs.map +1 -1
- package/esm/connectors/mail-connector.d.mts +1 -1
- package/esm/connectors/mail-connector.d.mts.map +1 -1
- package/esm/connectors/mail-connector.mjs +1 -1
- package/esm/connectors/mail-connector.mjs.map +1 -1
- package/esm/connectors/notifications-connector.d.mts +1 -1
- package/esm/connectors/notifications-connector.d.mts.map +1 -1
- package/esm/connectors/notifications-connector.mjs +1 -1
- package/esm/connectors/notifications-connector.mjs.map +1 -1
- package/esm/connectors/read-bound-port.mjs +1 -1
- package/esm/connectors/read-bound-port.mjs.map +1 -1
- package/esm/connectors/register-configured-connectors.d.mts +1 -1
- package/esm/connectors/register-configured-connectors.d.mts.map +1 -1
- package/esm/connectors/register-configured-connectors.mjs +1 -1
- package/esm/connectors/register-configured-connectors.mjs.map +1 -1
- package/esm/connectors/single-server-warnings.mjs +1 -1
- package/esm/connectors/single-server-warnings.mjs.map +1 -1
- package/esm/connectors/socket-connector.d.mts +1 -1
- package/esm/connectors/socket-connector.d.mts.map +1 -1
- package/esm/connectors/socket-connector.mjs +1 -1
- package/esm/connectors/socket-connector.mjs.map +1 -1
- package/esm/connectors/storage.connector.d.mts +1 -1
- package/esm/connectors/storage.connector.d.mts.map +1 -1
- package/esm/connectors/storage.connector.mjs +1 -1
- package/esm/connectors/storage.connector.mjs.map +1 -1
- package/esm/connectors/types.d.mts +1 -1
- package/esm/connectors/types.d.mts.map +1 -1
- package/esm/connectors/types.mjs +1 -1
- package/esm/connectors/types.mjs.map +1 -1
- package/esm/container/container-instance-registry.mjs +1 -1
- package/esm/container/container-instance-registry.mjs.map +1 -1
- package/esm/container/development-app-modules.d.mts +1 -1
- package/esm/container/development-app-modules.d.mts.map +1 -1
- package/esm/container/development-model-modules.d.mts +1 -1
- package/esm/container/development-model-modules.d.mts.map +1 -1
- package/esm/container/index.d.mts +1 -1
- package/esm/container/index.d.mts.map +1 -1
- package/esm/container/index.mjs +1 -1
- package/esm/container/index.mjs.map +1 -1
- package/esm/database/create-database-action.mjs +1 -1
- package/esm/database/create-database-action.mjs.map +1 -1
- package/esm/database/drop-tables-action.mjs +1 -1
- package/esm/database/drop-tables-action.mjs.map +1 -1
- package/esm/database/migrate-action.mjs +1 -1
- package/esm/database/migrate-action.mjs.map +1 -1
- package/esm/database/models/database-log/database-log.d.mts +31 -39
- package/esm/database/models/database-log/database-log.d.mts.map +1 -1
- package/esm/database/models/database-log/database-log.mjs +1 -1
- package/esm/database/models/database-log/database-log.mjs.map +1 -1
- package/esm/database/pending-exit-code.mjs +1 -1
- package/esm/database/pending-exit-code.mjs.map +1 -1
- package/esm/database/resolve-pending-migrations.mjs +1 -1
- package/esm/database/resolve-pending-migrations.mjs.map +1 -1
- package/esm/database/seed-command-action.mjs +1 -1
- package/esm/database/seed-command-action.mjs.map +1 -1
- package/esm/database/seeds/seed-records-table-migration.mjs +1 -1
- package/esm/database/seeds/seed-records-table-migration.mjs.map +1 -1
- package/esm/database/seeds/seeder.d.mts +1 -1
- package/esm/database/seeds/seeder.d.mts.map +1 -1
- package/esm/database/seeds/seeder.errors.d.mts +1 -1
- package/esm/database/seeds/seeder.errors.d.mts.map +1 -1
- package/esm/database/seeds/seeder.errors.mjs +1 -1
- package/esm/database/seeds/seeder.errors.mjs.map +1 -1
- package/esm/database/seeds/seeder.mjs +1 -1
- package/esm/database/seeds/seeder.mjs.map +1 -1
- package/esm/database/seeds/seeders.manager.mjs +1 -1
- package/esm/database/seeds/seeders.manager.mjs.map +1 -1
- package/esm/database/seeds/seeds-table-migration.mjs +1 -1
- package/esm/database/seeds/seeds-table-migration.mjs.map +1 -1
- package/esm/database/seeds/types.d.mts +1 -1
- package/esm/database/seeds/types.d.mts.map +1 -1
- package/esm/database/seeds/utils.mjs +1 -1
- package/esm/database/seeds/utils.mjs.map +1 -1
- package/esm/database/utils.d.mts +1 -1
- package/esm/database/utils.d.mts.map +1 -1
- package/esm/database/utils.mjs +1 -1
- package/esm/database/utils.mjs.map +1 -1
- package/esm/dev-server/app-module-registry.mjs +1 -1
- package/esm/dev-server/app-module-registry.mjs.map +1 -1
- package/esm/dev-server/boot-precondition-error.mjs +1 -1
- package/esm/dev-server/boot-precondition-error.mjs.map +1 -1
- package/esm/dev-server/build-development-openapi-document.mjs +1 -1
- package/esm/dev-server/build-development-openapi-document.mjs.map +1 -1
- package/esm/dev-server/check-for-updates.mjs +1 -1
- package/esm/dev-server/check-for-updates.mjs.map +1 -1
- package/esm/dev-server/collect-development-api-routes.mjs +1 -1
- package/esm/dev-server/collect-development-api-routes.mjs.map +1 -1
- package/esm/dev-server/create-worker.mjs +1 -1
- package/esm/dev-server/create-worker.mjs.map +1 -1
- package/esm/dev-server/dependency-graph.d.mts +1 -1
- package/esm/dev-server/dependency-graph.d.mts.map +1 -1
- package/esm/dev-server/dependency-graph.mjs +1 -1
- package/esm/dev-server/dependency-graph.mjs.map +1 -1
- package/esm/dev-server/dev-logger.mjs +1 -1
- package/esm/dev-server/dev-logger.mjs.map +1 -1
- package/esm/dev-server/development-server.mjs +1 -1
- package/esm/dev-server/development-server.mjs.map +1 -1
- package/esm/dev-server/events.mjs +1 -1
- package/esm/dev-server/events.mjs.map +1 -1
- package/esm/dev-server/extract-translation-keys.mjs +1 -1
- package/esm/dev-server/extract-translation-keys.mjs.map +1 -1
- package/esm/dev-server/file-event-handler.mjs +1 -1
- package/esm/dev-server/file-event-handler.mjs.map +1 -1
- package/esm/dev-server/file-manager.d.mts +1 -1
- package/esm/dev-server/file-manager.d.mts.map +1 -1
- package/esm/dev-server/file-manager.mjs +1 -1
- package/esm/dev-server/file-manager.mjs.map +1 -1
- package/esm/dev-server/file-operations.d.mts +1 -1
- package/esm/dev-server/file-operations.d.mts.map +1 -1
- package/esm/dev-server/file-operations.mjs +1 -1
- package/esm/dev-server/file-operations.mjs.map +1 -1
- package/esm/dev-server/files-orchestrator.mjs +20 -17
- package/esm/dev-server/files-orchestrator.mjs.map +1 -1
- package/esm/dev-server/files-watcher.mjs +1 -1
- package/esm/dev-server/files-watcher.mjs.map +1 -1
- package/esm/dev-server/flags.mjs +1 -1
- package/esm/dev-server/flags.mjs.map +1 -1
- package/esm/dev-server/health-checker/checkers/base-health-checker.mjs +1 -1
- package/esm/dev-server/health-checker/checkers/base-health-checker.mjs.map +1 -1
- package/esm/dev-server/health-checker/checkers/eslint-health-checker.mjs +1 -1
- package/esm/dev-server/health-checker/checkers/eslint-health-checker.mjs.map +1 -1
- package/esm/dev-server/health-checker/checkers/typescript-health-checker.mjs +1 -1
- package/esm/dev-server/health-checker/checkers/typescript-health-checker.mjs.map +1 -1
- package/esm/dev-server/health-checker/file-health-checker.contract.d.mts +1 -1
- package/esm/dev-server/health-checker/file-health-checker.contract.d.mts.map +1 -1
- package/esm/dev-server/health-checker/file-health-result.d.mts +1 -1
- package/esm/dev-server/health-checker/file-health-result.d.mts.map +1 -1
- package/esm/dev-server/health-checker/file-health-result.mjs +1 -1
- package/esm/dev-server/health-checker/file-health-result.mjs.map +1 -1
- package/esm/dev-server/health-checker/files-healthcare.manager.mjs +1 -1
- package/esm/dev-server/health-checker/files-healthcare.manager.mjs.map +1 -1
- package/esm/dev-server/health-checker/workers/eslint-health.worker.mjs +1 -1
- package/esm/dev-server/health-checker/workers/eslint-health.worker.mjs.map +1 -1
- package/esm/dev-server/health-checker/workers/ts-health.worker.mjs +1 -1
- package/esm/dev-server/health-checker/workers/ts-health.worker.mjs.map +1 -1
- package/esm/dev-server/layer-executor.mjs +1 -1
- package/esm/dev-server/layer-executor.mjs.map +1 -1
- package/esm/dev-server/legacy-locales-warning.mjs +1 -1
- package/esm/dev-server/legacy-locales-warning.mjs.map +1 -1
- package/esm/dev-server/loader/build-transpile-init.mjs +1 -1
- package/esm/dev-server/loader/build-transpile-init.mjs.map +1 -1
- package/esm/dev-server/loader/hook-thread.d.mts +1 -1
- package/esm/dev-server/loader/hook-thread.d.mts.map +1 -1
- package/esm/dev-server/loader/hook-thread.mjs +1 -1
- package/esm/dev-server/loader/hook-thread.mjs.map +1 -1
- package/esm/dev-server/loader/load-hook.d.mts +1 -1
- package/esm/dev-server/loader/load-hook.d.mts.map +1 -1
- package/esm/dev-server/loader/load-hook.mjs +1 -1
- package/esm/dev-server/loader/load-hook.mjs.map +1 -1
- package/esm/dev-server/loader/loader-port-acks.mjs +34 -0
- package/esm/dev-server/loader/loader-port-acks.mjs.map +1 -0
- package/esm/dev-server/loader/own-resolver.mjs +1 -1
- package/esm/dev-server/loader/own-resolver.mjs.map +1 -1
- package/esm/dev-server/loader/register-loader.mjs +1 -1
- package/esm/dev-server/loader/register-loader.mjs.map +1 -1
- package/esm/dev-server/loader/resolve-capture.mjs +1 -1
- package/esm/dev-server/loader/resolve-capture.mjs.map +1 -1
- package/esm/dev-server/loader/resolve-hook.d.mts +1 -1
- package/esm/dev-server/loader/resolve-hook.d.mts.map +1 -1
- package/esm/dev-server/loader/resolve-hook.mjs +2 -2
- package/esm/dev-server/loader/resolve-hook.mjs.map +1 -1
- package/esm/dev-server/loader/source-slug.mjs +1 -1
- package/esm/dev-server/loader/source-slug.mjs.map +1 -1
- package/esm/dev-server/loader/transpile-cache.mjs +1 -1
- package/esm/dev-server/loader/transpile-cache.mjs.map +1 -1
- package/esm/dev-server/loader/version-registry.mjs +1 -1
- package/esm/dev-server/loader/version-registry.mjs.map +1 -1
- package/esm/dev-server/manifest-manager.d.mts +1 -1
- package/esm/dev-server/manifest-manager.d.mts.map +1 -1
- package/esm/dev-server/manifest-manager.mjs +1 -1
- package/esm/dev-server/manifest-manager.mjs.map +1 -1
- package/esm/dev-server/model-module-registry.mjs +1 -1
- package/esm/dev-server/model-module-registry.mjs.map +1 -1
- package/esm/dev-server/model-resource-typings.mjs +1 -1
- package/esm/dev-server/model-resource-typings.mjs.map +1 -1
- package/esm/dev-server/module-loader.mjs +1 -1
- package/esm/dev-server/module-loader.mjs.map +1 -1
- package/esm/dev-server/package-json-manager.mjs +1 -1
- package/esm/dev-server/package-json-manager.mjs.map +1 -1
- package/esm/dev-server/parse-imports.mjs +73 -6
- package/esm/dev-server/parse-imports.mjs.map +1 -1
- package/esm/dev-server/read-config-ast.mjs +1 -1
- package/esm/dev-server/read-config-ast.mjs.map +1 -1
- package/esm/dev-server/ready-block.mjs +1 -1
- package/esm/dev-server/ready-block.mjs.map +1 -1
- package/esm/dev-server/register-dev-shortcuts.mjs +1 -1
- package/esm/dev-server/register-dev-shortcuts.mjs.map +1 -1
- package/esm/dev-server/register-installed-devtools.mjs +1 -1
- package/esm/dev-server/register-installed-devtools.mjs.map +1 -1
- package/esm/dev-server/restart-dev-server.mjs +1 -1
- package/esm/dev-server/restart-dev-server.mjs.map +1 -1
- package/esm/dev-server/route-types-publisher.mjs +1 -1
- package/esm/dev-server/route-types-publisher.mjs.map +1 -1
- package/esm/dev-server/run-connector-typings.mjs +1 -1
- package/esm/dev-server/run-connector-typings.mjs.map +1 -1
- package/esm/dev-server/run-typings-generation.mjs +1 -1
- package/esm/dev-server/run-typings-generation.mjs.map +1 -1
- package/esm/dev-server/shortcuts.mjs +1 -1
- package/esm/dev-server/shortcuts.mjs.map +1 -1
- package/esm/dev-server/special-file-patterns.mjs +1 -1
- package/esm/dev-server/special-file-patterns.mjs.map +1 -1
- package/esm/dev-server/special-files-collector.d.mts +1 -1
- package/esm/dev-server/special-files-collector.d.mts.map +1 -1
- package/esm/dev-server/special-files-collector.mjs +1 -1
- package/esm/dev-server/special-files-collector.mjs.map +1 -1
- package/esm/dev-server/start-development-server.mjs +1 -1
- package/esm/dev-server/start-development-server.mjs.map +1 -1
- package/esm/dev-server/supervisor.mjs +1 -1
- package/esm/dev-server/supervisor.mjs.map +1 -1
- package/esm/dev-server/translation-keys-sources.mjs +1 -1
- package/esm/dev-server/translation-keys-sources.mjs.map +1 -1
- package/esm/dev-server/tsconfig-manager.mjs +1 -1
- package/esm/dev-server/tsconfig-manager.mjs.map +1 -1
- package/esm/dev-server/type-generator.mjs +32 -11
- package/esm/dev-server/type-generator.mjs.map +1 -1
- package/esm/dev-server/types.d.mts +1 -1
- package/esm/dev-server/types.d.mts.map +1 -1
- package/esm/dev-server/update-check-cache.mjs +1 -1
- package/esm/dev-server/update-check-cache.mjs.map +1 -1
- package/esm/dev-server/utils.mjs +1 -1
- package/esm/dev-server/utils.mjs.map +1 -1
- package/esm/encryption/encrypt.d.mts +1 -1
- package/esm/encryption/encrypt.d.mts.map +1 -1
- package/esm/encryption/encrypt.mjs +1 -1
- package/esm/encryption/encrypt.mjs.map +1 -1
- package/esm/encryption/hash.d.mts +1 -1
- package/esm/encryption/hash.d.mts.map +1 -1
- package/esm/encryption/hash.mjs +1 -1
- package/esm/encryption/hash.mjs.map +1 -1
- package/esm/encryption/password.d.mts +1 -1
- package/esm/encryption/password.d.mts.map +1 -1
- package/esm/encryption/password.mjs +1 -1
- package/esm/encryption/password.mjs.map +1 -1
- package/esm/encryption/types.d.mts +1 -1
- package/esm/encryption/types.d.mts.map +1 -1
- package/esm/errors/container-key-missing-error.mjs +1 -1
- package/esm/errors/container-key-missing-error.mjs.map +1 -1
- package/esm/errors/esbuild-binary-missing-error.mjs +1 -1
- package/esm/errors/esbuild-binary-missing-error.mjs.map +1 -1
- package/esm/errors/index.d.mts +2 -0
- package/esm/errors/index.mjs +3 -0
- package/esm/errors/unknown-locale-error.mjs +1 -1
- package/esm/errors/unknown-locale-error.mjs.map +1 -1
- package/esm/generations/add-command.action.mjs +29 -6
- 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/ai-anthropic.feature.mjs +1 -1
- package/esm/generations/features/ai-anthropic.feature.mjs.map +1 -1
- package/esm/generations/features/ai-bedrock.feature.mjs +1 -1
- package/esm/generations/features/ai-bedrock.feature.mjs.map +1 -1
- package/esm/generations/features/ai-google.feature.mjs +1 -1
- package/esm/generations/features/ai-google.feature.mjs.map +1 -1
- package/esm/generations/features/ai-ollama.feature.mjs +1 -1
- package/esm/generations/features/ai-ollama.feature.mjs.map +1 -1
- package/esm/generations/features/ai-openai.feature.mjs +1 -1
- package/esm/generations/features/ai-openai.feature.mjs.map +1 -1
- package/esm/generations/features/ai-panoptic.feature.mjs +1 -1
- package/esm/generations/features/ai-panoptic.feature.mjs.map +1 -1
- package/esm/generations/features/ai-tools.feature.mjs +1 -1
- package/esm/generations/features/ai-tools.feature.mjs.map +1 -1
- package/esm/generations/features/ai-workspace.feature.mjs +1 -1
- package/esm/generations/features/ai-workspace.feature.mjs.map +1 -1
- package/esm/generations/features/ai.feature.mjs +1 -1
- package/esm/generations/features/ai.feature.mjs.map +1 -1
- package/esm/generations/features/auth-google.feature.mjs +1 -1
- package/esm/generations/features/auth-google.feature.mjs.map +1 -1
- package/esm/generations/features/auth-passkeys.feature.mjs +1 -1
- package/esm/generations/features/auth-passkeys.feature.mjs.map +1 -1
- package/esm/generations/features/bull-board.feature.mjs +1 -1
- package/esm/generations/features/bull-board.feature.mjs.map +1 -1
- package/esm/generations/features/devtools.feature.mjs +1 -1
- package/esm/generations/features/devtools.feature.mjs.map +1 -1
- package/esm/generations/features/herald.feature.mjs +1 -1
- package/esm/generations/features/herald.feature.mjs.map +1 -1
- package/esm/generations/features/image.feature.mjs +1 -1
- package/esm/generations/features/image.feature.mjs.map +1 -1
- package/esm/generations/features/index.mjs +1 -1
- package/esm/generations/features/index.mjs.map +1 -1
- package/esm/generations/features/mail.feature.mjs +1 -1
- package/esm/generations/features/mail.feature.mjs.map +1 -1
- package/esm/generations/features/mongodb.feature.mjs +1 -1
- package/esm/generations/features/mongodb.feature.mjs.map +1 -1
- package/esm/generations/features/mysql.feature.mjs +1 -1
- package/esm/generations/features/mysql.feature.mjs.map +1 -1
- package/esm/generations/features/notifications.feature.mjs +121 -17
- package/esm/generations/features/notifications.feature.mjs.map +1 -1
- package/esm/generations/features/postgres.feature.mjs +1 -1
- package/esm/generations/features/postgres.feature.mjs.map +1 -1
- package/esm/generations/features/queue.feature.mjs +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/react.feature.mjs +1 -1
- package/esm/generations/features/react.feature.mjs.map +1 -1
- package/esm/generations/features/redis.feature.mjs +1 -1
- package/esm/generations/features/redis.feature.mjs.map +1 -1
- package/esm/generations/features/s3.feature.mjs +1 -1
- package/esm/generations/features/s3.feature.mjs.map +1 -1
- package/esm/generations/features/scheduler.feature.mjs +1 -1
- package/esm/generations/features/scheduler.feature.mjs.map +1 -1
- package/esm/generations/features/ses.feature.mjs +1 -1
- package/esm/generations/features/ses.feature.mjs.map +1 -1
- package/esm/generations/features/shadcn.feature.mjs +1 -1
- package/esm/generations/features/shadcn.feature.mjs.map +1 -1
- package/esm/generations/features/shared/insert-connector-entry.mjs +1 -1
- package/esm/generations/features/shared/insert-connector-entry.mjs.map +1 -1
- package/esm/generations/features/shared/insert-queue-dashboard-block.mjs +1 -1
- package/esm/generations/features/shared/insert-queue-dashboard-block.mjs.map +1 -1
- package/esm/generations/features/shared/link-ai-package-import.mjs +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 +1 -1
- package/esm/generations/features/shared/merge-web-sitemap-config.mjs.map +1 -1
- package/esm/generations/features/shared/migration-timestamp.mjs +1 -1
- package/esm/generations/features/shared/migration-timestamp.mjs.map +1 -1
- package/esm/generations/features/shared/patch-tsconfig-include.mjs +1 -1
- package/esm/generations/features/shared/patch-tsconfig-include.mjs.map +1 -1
- package/esm/generations/features/shared/relocate-conflicting-home-route.mjs +1 -1
- package/esm/generations/features/shared/relocate-conflicting-home-route.mjs.map +1 -1
- package/esm/generations/features/shared/resolve-contact-scaffold.mjs +1 -1
- package/esm/generations/features/shared/resolve-contact-scaffold.mjs.map +1 -1
- package/esm/generations/features/sitemap.feature.mjs +1 -1
- package/esm/generations/features/sitemap.feature.mjs.map +1 -1
- package/esm/generations/features/socket.feature.mjs +1 -1
- package/esm/generations/features/socket.feature.mjs.map +1 -1
- package/esm/generations/features/tailwind.feature.mjs +1 -1
- package/esm/generations/features/tailwind.feature.mjs.map +1 -1
- package/esm/generations/features/test.feature.mjs +1 -1
- package/esm/generations/features/test.feature.mjs.map +1 -1
- package/esm/generations/features/types.mjs +1 -1
- package/esm/generations/features/types.mjs.map +1 -1
- package/esm/generations/features/web.feature.mjs +1 -1
- package/esm/generations/features/web.feature.mjs.map +1 -1
- package/esm/generations/pnpm-build-approvals.mjs +89 -3
- package/esm/generations/pnpm-build-approvals.mjs.map +1 -1
- package/esm/generations/stubs.mjs +184 -78
- package/esm/generations/stubs.mjs.map +1 -1
- package/esm/http/boot-port-preflight.d.mts +1 -1
- package/esm/http/boot-port-preflight.d.mts.map +1 -1
- package/esm/http/boot-port-preflight.mjs +1 -1
- package/esm/http/boot-port-preflight.mjs.map +1 -1
- package/esm/http/build-cors-options.mjs +1 -1
- package/esm/http/build-cors-options.mjs.map +1 -1
- package/esm/http/build-rate-limit-options.d.mts +22 -1
- package/esm/http/build-rate-limit-options.d.mts.map +1 -1
- package/esm/http/build-rate-limit-options.mjs +7 -1
- package/esm/http/build-rate-limit-options.mjs.map +1 -1
- package/esm/http/config.d.mts +1 -1
- package/esm/http/config.d.mts.map +1 -1
- package/esm/http/config.mjs +1 -1
- package/esm/http/config.mjs.map +1 -1
- package/esm/http/context/request-context.d.mts +1 -1
- package/esm/http/context/request-context.d.mts.map +1 -1
- package/esm/http/context/request-context.mjs +1 -1
- package/esm/http/context/request-context.mjs.map +1 -1
- package/esm/http/context/request-memo.d.mts +1 -1
- package/esm/http/context/request-memo.d.mts.map +1 -1
- package/esm/http/context/request-memo.mjs +1 -1
- package/esm/http/context/request-memo.mjs.map +1 -1
- package/esm/http/createHttpApplication.d.mts +1 -1
- package/esm/http/createHttpApplication.d.mts.map +1 -1
- package/esm/http/createHttpApplication.mjs +1 -1
- package/esm/http/createHttpApplication.mjs.map +1 -1
- package/esm/http/csp.d.mts +1 -1
- package/esm/http/csp.d.mts.map +1 -1
- package/esm/http/csp.mjs +1 -1
- package/esm/http/csp.mjs.map +1 -1
- package/esm/http/csrf-default-guard.d.mts +1 -1
- package/esm/http/csrf-default-guard.d.mts.map +1 -1
- package/esm/http/csrf-default-guard.mjs +1 -1
- package/esm/http/csrf-default-guard.mjs.map +1 -1
- package/esm/http/csrf-origin-policy.d.mts +1 -1
- package/esm/http/csrf-origin-policy.d.mts.map +1 -1
- package/esm/http/csrf-origin-policy.mjs +1 -1
- package/esm/http/csrf-origin-policy.mjs.map +1 -1
- package/esm/http/database/RequestLog.d.mts +63 -111
- package/esm/http/database/RequestLog.d.mts.map +1 -1
- package/esm/http/database/RequestLog.mjs +1 -1
- package/esm/http/database/RequestLog.mjs.map +1 -1
- package/esm/http/error-codes.d.mts +1 -1
- package/esm/http/error-codes.d.mts.map +1 -1
- package/esm/http/error-codes.mjs +1 -1
- package/esm/http/error-codes.mjs.map +1 -1
- package/esm/http/error-mapper.d.mts +48 -0
- package/esm/http/error-mapper.d.mts.map +1 -0
- package/esm/http/error-mapper.mjs +48 -0
- package/esm/http/error-mapper.mjs.map +1 -0
- package/esm/http/errors/errors.d.mts +1 -1
- package/esm/http/errors/errors.d.mts.map +1 -1
- package/esm/http/errors/errors.mjs +1 -1
- package/esm/http/errors/errors.mjs.map +1 -1
- package/esm/http/events.d.mts +1 -1
- package/esm/http/events.d.mts.map +1 -1
- package/esm/http/events.mjs +1 -1
- package/esm/http/events.mjs.map +1 -1
- package/esm/http/flush-pending-cookies.mjs +1 -1
- package/esm/http/flush-pending-cookies.mjs.map +1 -1
- package/esm/http/health.d.mts +1 -1
- package/esm/http/health.d.mts.map +1 -1
- package/esm/http/health.mjs +1 -1
- package/esm/http/health.mjs.map +1 -1
- package/esm/http/index.d.mts +10 -6
- package/esm/http/index.mjs +8 -5
- package/esm/http/middleware/cache-response-middleware.d.mts +1 -1
- package/esm/http/middleware/cache-response-middleware.d.mts.map +1 -1
- package/esm/http/middleware/cache-response-middleware.mjs +1 -1
- package/esm/http/middleware/cache-response-middleware.mjs.map +1 -1
- package/esm/http/middleware/concurrency-limit.middleware.d.mts +1 -1
- package/esm/http/middleware/concurrency-limit.middleware.d.mts.map +1 -1
- package/esm/http/middleware/concurrency-limit.middleware.mjs +1 -1
- package/esm/http/middleware/concurrency-limit.middleware.mjs.map +1 -1
- package/esm/http/middleware/idempotency.middleware.d.mts +1 -1
- package/esm/http/middleware/idempotency.middleware.d.mts.map +1 -1
- package/esm/http/middleware/idempotency.middleware.mjs +1 -1
- package/esm/http/middleware/idempotency.middleware.mjs.map +1 -1
- package/esm/http/middleware/inject-request-context.d.mts +1 -1
- package/esm/http/middleware/inject-request-context.d.mts.map +1 -1
- package/esm/http/middleware/inject-request-context.mjs +4 -2
- package/esm/http/middleware/inject-request-context.mjs.map +1 -1
- package/esm/http/middleware/ip-filter.middleware.d.mts +1 -1
- package/esm/http/middleware/ip-filter.middleware.d.mts.map +1 -1
- package/esm/http/middleware/ip-filter.middleware.mjs +1 -1
- package/esm/http/middleware/ip-filter.middleware.mjs.map +1 -1
- package/esm/http/middleware/maintenance.middleware.d.mts +1 -1
- package/esm/http/middleware/maintenance.middleware.d.mts.map +1 -1
- package/esm/http/middleware/maintenance.middleware.mjs +1 -1
- package/esm/http/middleware/maintenance.middleware.mjs.map +1 -1
- package/esm/http/middleware/max-body-size.middleware.d.mts +1 -1
- package/esm/http/middleware/max-body-size.middleware.d.mts.map +1 -1
- package/esm/http/middleware/max-body-size.middleware.mjs +1 -1
- package/esm/http/middleware/max-body-size.middleware.mjs.map +1 -1
- package/esm/http/middleware/middleware-list.d.mts +1 -1
- package/esm/http/middleware/middleware-list.d.mts.map +1 -1
- package/esm/http/middleware/middleware-list.mjs +1 -1
- package/esm/http/middleware/middleware-list.mjs.map +1 -1
- package/esm/http/middleware/rate-limit.middleware.d.mts +20 -5
- package/esm/http/middleware/rate-limit.middleware.d.mts.map +1 -1
- package/esm/http/middleware/rate-limit.middleware.mjs +34 -12
- package/esm/http/middleware/rate-limit.middleware.mjs.map +1 -1
- package/esm/http/middleware/utils/cidr-match.d.mts +1 -1
- package/esm/http/middleware/utils/cidr-match.d.mts.map +1 -1
- package/esm/http/middleware/utils/cidr-match.mjs +1 -1
- package/esm/http/middleware/utils/cidr-match.mjs.map +1 -1
- package/esm/http/middleware/utils/idempotency-key.d.mts +1 -1
- package/esm/http/middleware/utils/idempotency-key.d.mts.map +1 -1
- package/esm/http/middleware/utils/idempotency-key.mjs +1 -1
- package/esm/http/middleware/utils/idempotency-key.mjs.map +1 -1
- package/esm/http/middleware/utils/parse-size.d.mts +1 -1
- package/esm/http/middleware/utils/parse-size.d.mts.map +1 -1
- package/esm/http/middleware/utils/parse-size.mjs +1 -1
- package/esm/http/middleware/utils/parse-size.mjs.map +1 -1
- package/esm/http/parse-urlencoded-body.mjs +1 -1
- package/esm/http/parse-urlencoded-body.mjs.map +1 -1
- package/esm/http/plugins.d.mts +9 -2
- package/esm/http/plugins.d.mts.map +1 -1
- package/esm/http/plugins.mjs +18 -4
- package/esm/http/plugins.mjs.map +1 -1
- package/esm/http/port-preflight.d.mts +1 -1
- package/esm/http/port-preflight.d.mts.map +1 -1
- package/esm/http/port-preflight.mjs +1 -1
- package/esm/http/port-preflight.mjs.map +1 -1
- package/esm/http/rate-limit-cache-store.mjs +155 -0
- package/esm/http/rate-limit-cache-store.mjs.map +1 -0
- package/esm/http/ready-report.d.mts +1 -1
- package/esm/http/ready-report.d.mts.map +1 -1
- package/esm/http/ready-report.mjs +1 -1
- package/esm/http/ready-report.mjs.map +1 -1
- package/esm/http/request-controller.d.mts +1 -1
- package/esm/http/request-controller.d.mts.map +1 -1
- package/esm/http/request-controller.mjs +1 -1
- package/esm/http/request-controller.mjs.map +1 -1
- package/esm/http/request-log-snapshot.d.mts +123 -0
- package/esm/http/request-log-snapshot.d.mts.map +1 -0
- package/esm/http/request-log-snapshot.mjs +141 -0
- package/esm/http/request-log-snapshot.mjs.map +1 -0
- package/esm/http/request.d.mts +41 -2
- package/esm/http/request.d.mts.map +1 -1
- package/esm/http/request.mjs +65 -2
- package/esm/http/request.mjs.map +1 -1
- package/esm/http/resolve-bind-port.mjs +1 -1
- package/esm/http/resolve-bind-port.mjs.map +1 -1
- package/esm/http/response.d.mts +40 -8
- package/esm/http/response.d.mts.map +1 -1
- package/esm/http/response.mjs +173 -61
- package/esm/http/response.mjs.map +1 -1
- package/esm/http/serialized.d.mts +1 -1
- package/esm/http/serialized.d.mts.map +1 -1
- package/esm/http/server-rebuilt.d.mts +1 -1
- package/esm/http/server-rebuilt.d.mts.map +1 -1
- package/esm/http/server-rebuilt.mjs +1 -1
- package/esm/http/server-rebuilt.mjs.map +1 -1
- package/esm/http/server.d.mts +34 -6
- package/esm/http/server.d.mts.map +1 -1
- package/esm/http/server.mjs +70 -5
- package/esm/http/server.mjs.map +1 -1
- package/esm/http/stream-react-response.d.mts +1 -1
- package/esm/http/stream-react-response.d.mts.map +1 -1
- package/esm/http/stream-react-response.mjs +1 -1
- package/esm/http/stream-react-response.mjs.map +1 -1
- package/esm/http/stream-transport.mjs +75 -0
- package/esm/http/stream-transport.mjs.map +1 -0
- package/esm/http/tracing/trace-id.d.mts +1 -1
- package/esm/http/tracing/trace-id.d.mts.map +1 -1
- package/esm/http/tracing/trace-id.mjs +1 -1
- package/esm/http/tracing/trace-id.mjs.map +1 -1
- package/esm/http/tracing/tracing-dispatcher.d.mts +1 -1
- package/esm/http/tracing/tracing-dispatcher.d.mts.map +1 -1
- package/esm/http/tracing/tracing-dispatcher.mjs +1 -1
- package/esm/http/tracing/tracing-dispatcher.mjs.map +1 -1
- package/esm/http/tracing/tracing.type.d.mts +1 -1
- package/esm/http/tracing/tracing.type.d.mts.map +1 -1
- package/esm/http/types.d.mts +131 -6
- package/esm/http/types.d.mts.map +1 -1
- package/esm/http/uploaded-file.d.mts +2 -2
- package/esm/http/uploaded-file.d.mts.map +1 -1
- package/esm/http/uploaded-file.mjs +2 -2
- package/esm/http/uploaded-file.mjs.map +1 -1
- package/esm/http/uploads/detect-image-format.mjs +1 -1
- package/esm/http/uploads/detect-image-format.mjs.map +1 -1
- package/esm/http/uploads/generate-image-variant.mjs +1 -1
- package/esm/http/uploads/generate-image-variant.mjs.map +1 -1
- package/esm/http/uploads/generate-image-variants.d.mts +1 -1
- package/esm/http/uploads/generate-image-variants.d.mts.map +1 -1
- package/esm/http/uploads/generate-image-variants.mjs +15 -7
- package/esm/http/uploads/generate-image-variants.mjs.map +1 -1
- package/esm/http/uploads/image-variant-cache.mjs +143 -0
- package/esm/http/uploads/image-variant-cache.mjs.map +1 -0
- package/esm/http/uploads/image-variant-types.d.mts +1 -1
- package/esm/http/uploads/image-variant-types.d.mts.map +1 -1
- package/esm/http/uploads/image-variants-config-error.d.mts +1 -1
- package/esm/http/uploads/image-variants-config-error.d.mts.map +1 -1
- package/esm/http/uploads/image-variants-config-error.mjs +1 -1
- package/esm/http/uploads/image-variants-config-error.mjs.map +1 -1
- package/esm/http/uploads/index.d.mts +3 -1
- package/esm/http/uploads/index.mjs +3 -1
- package/esm/http/uploads/is-path-inside.mjs +1 -1
- package/esm/http/uploads/is-path-inside.mjs.map +1 -1
- package/esm/http/uploads/load-variant-source.mjs +1 -1
- package/esm/http/uploads/load-variant-source.mjs.map +1 -1
- package/esm/http/uploads/local-disk-root.mjs +24 -0
- package/esm/http/uploads/local-disk-root.mjs.map +1 -0
- package/esm/http/uploads/matches-if-none-match.mjs +1 -1
- package/esm/http/uploads/matches-if-none-match.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 +32 -0
- package/esm/http/uploads/purge-image-variants.d.mts.map +1 -0
- package/esm/http/uploads/purge-image-variants.mjs +46 -0
- package/esm/http/uploads/purge-image-variants.mjs.map +1 -0
- package/esm/http/uploads/read-file-head.mjs +1 -1
- package/esm/http/uploads/read-file-head.mjs.map +1 -1
- package/esm/http/uploads/resolve-image-variant.d.mts +73 -0
- package/esm/http/uploads/resolve-image-variant.d.mts.map +1 -0
- package/esm/http/uploads/resolve-image-variant.mjs +107 -0
- package/esm/http/uploads/resolve-image-variant.mjs.map +1 -0
- package/esm/http/uploads/resolve-image-variants-config.mjs +1 -1
- package/esm/http/uploads/resolve-image-variants-config.mjs.map +1 -1
- package/esm/http/uploads/resolve-inline-image-content-type.mjs +1 -1
- package/esm/http/uploads/resolve-inline-image-content-type.mjs.map +1 -1
- package/esm/http/uploads/resolve-original-content-type.mjs +1 -1
- package/esm/http/uploads/resolve-original-content-type.mjs.map +1 -1
- package/esm/http/uploads/resolve-upload-path.mjs +3 -2
- package/esm/http/uploads/resolve-upload-path.mjs.map +1 -1
- package/esm/http/uploads/resolve-variant-candidate.mjs +1 -1
- package/esm/http/uploads/resolve-variant-candidate.mjs.map +1 -1
- package/esm/http/uploads/single-flight.mjs +1 -1
- package/esm/http/uploads/single-flight.mjs.map +1 -1
- package/esm/http/uploads/uploaded-file.controller.d.mts +24 -6
- package/esm/http/uploads/uploaded-file.controller.d.mts.map +1 -1
- package/esm/http/uploads/uploaded-file.controller.mjs +63 -91
- package/esm/http/uploads/uploaded-file.controller.mjs.map +1 -1
- package/esm/http/uploads/variant-cache-key.mjs +30 -5
- package/esm/http/uploads/variant-cache-key.mjs.map +1 -1
- package/esm/http/uploads/variant-generations.mjs +1 -1
- package/esm/http/uploads/variant-generations.mjs.map +1 -1
- package/esm/http/uploads-config.d.mts +1 -1
- package/esm/http/uploads-config.d.mts.map +1 -1
- package/esm/http/uploads-config.mjs +1 -1
- package/esm/http/uploads-config.mjs.map +1 -1
- package/esm/http/uploads-types.d.mts +1 -1
- package/esm/http/uploads-types.d.mts.map +1 -1
- package/esm/http/xmlable.d.mts +1 -1
- package/esm/http/xmlable.d.mts.map +1 -1
- package/esm/image/image.d.mts +1 -1
- package/esm/image/image.d.mts.map +1 -1
- package/esm/image/image.mjs +1 -1
- package/esm/image/image.mjs.map +1 -1
- package/esm/index.d.mts +13 -9
- package/esm/index.mjs +10 -7
- package/esm/loader/app-module-importer.d.mts +1 -1
- package/esm/loader/app-module-importer.d.mts.map +1 -1
- package/esm/loader/app-module-importer.mjs +1 -1
- package/esm/loader/app-module-importer.mjs.map +1 -1
- package/esm/localization/parse-locale-dictionary.d.mts +1 -1
- package/esm/localization/parse-locale-dictionary.d.mts.map +1 -1
- package/esm/localization/parse-locale-dictionary.mjs +1 -1
- package/esm/localization/parse-locale-dictionary.mjs.map +1 -1
- package/esm/localization/register-locale-dictionary.d.mts +1 -1
- package/esm/localization/register-locale-dictionary.d.mts.map +1 -1
- package/esm/localization/register-locale-dictionary.mjs +1 -1
- package/esm/localization/register-locale-dictionary.mjs.map +1 -1
- package/esm/logger/fatal-visibility.d.mts +1 -1
- package/esm/logger/fatal-visibility.d.mts.map +1 -1
- package/esm/logger/fatal-visibility.mjs +1 -1
- package/esm/logger/fatal-visibility.mjs.map +1 -1
- package/esm/logger/logger.d.mts +1 -1
- package/esm/logger/logger.d.mts.map +1 -1
- package/esm/logger/logger.mjs +1 -1
- package/esm/logger/logger.mjs.map +1 -1
- package/esm/logger/types.d.mts +1 -1
- package/esm/logger/types.d.mts.map +1 -1
- package/esm/mail/config.d.mts +1 -1
- package/esm/mail/config.d.mts.map +1 -1
- package/esm/mail/config.mjs +1 -1
- package/esm/mail/config.mjs.map +1 -1
- package/esm/mail/events.d.mts +1 -1
- package/esm/mail/events.d.mts.map +1 -1
- package/esm/mail/events.mjs +1 -1
- package/esm/mail/events.mjs.map +1 -1
- package/esm/mail/mail.d.mts +1 -1
- package/esm/mail/mail.d.mts.map +1 -1
- package/esm/mail/mail.mjs +1 -1
- package/esm/mail/mail.mjs.map +1 -1
- package/esm/mail/mailer-pool.d.mts +1 -1
- package/esm/mail/mailer-pool.d.mts.map +1 -1
- package/esm/mail/mailer-pool.mjs +1 -1
- package/esm/mail/mailer-pool.mjs.map +1 -1
- package/esm/mail/react-mail.d.mts +1 -1
- package/esm/mail/react-mail.d.mts.map +1 -1
- package/esm/mail/react-mail.mjs +1 -1
- package/esm/mail/react-mail.mjs.map +1 -1
- package/esm/mail/send-mail.d.mts +1 -1
- package/esm/mail/send-mail.d.mts.map +1 -1
- package/esm/mail/send-mail.mjs +7 -7
- package/esm/mail/send-mail.mjs.map +1 -1
- package/esm/mail/test-mailbox.d.mts +1 -1
- package/esm/mail/test-mailbox.d.mts.map +1 -1
- package/esm/mail/test-mailbox.mjs +1 -1
- package/esm/mail/test-mailbox.mjs.map +1 -1
- package/esm/mail/types.d.mts +1 -1
- package/esm/mail/types.d.mts.map +1 -1
- package/esm/mail/types.mjs +1 -1
- package/esm/mail/types.mjs.map +1 -1
- package/esm/manifest/manifest-manager.mjs +1 -1
- package/esm/manifest/manifest-manager.mjs.map +1 -1
- package/esm/openapi/build-openapi-document.d.mts +1 -1
- package/esm/openapi/build-openapi-document.d.mts.map +1 -1
- package/esm/openapi/build-openapi-document.mjs +1 -1
- package/esm/openapi/build-openapi-document.mjs.map +1 -1
- package/esm/openapi/cast-schema.mjs +1 -1
- package/esm/openapi/cast-schema.mjs.map +1 -1
- package/esm/openapi/collect-openapi-document.mjs +1 -1
- package/esm/openapi/collect-openapi-document.mjs.map +1 -1
- package/esm/openapi/development-openapi-provider.d.mts +1 -1
- package/esm/openapi/development-openapi-provider.d.mts.map +1 -1
- package/esm/openapi/development-openapi-provider.mjs +1 -1
- package/esm/openapi/development-openapi-provider.mjs.map +1 -1
- package/esm/openapi/error-responses.mjs +1 -1
- package/esm/openapi/error-responses.mjs.map +1 -1
- package/esm/openapi/openapi-child-output.mjs +1 -1
- package/esm/openapi/openapi-child-output.mjs.map +1 -1
- package/esm/openapi/openapi-protocol.mjs +1 -1
- package/esm/openapi/openapi-protocol.mjs.map +1 -1
- package/esm/openapi/paths.mjs +1 -1
- package/esm/openapi/paths.mjs.map +1 -1
- package/esm/openapi/postman/build-request-body.mjs +1 -1
- package/esm/openapi/postman/build-request-body.mjs.map +1 -1
- package/esm/openapi/postman/build-request-url.mjs +1 -1
- package/esm/openapi/postman/build-request-url.mjs.map +1 -1
- package/esm/openapi/postman/build-saved-responses.mjs +1 -1
- package/esm/openapi/postman/build-saved-responses.mjs.map +1 -1
- package/esm/openapi/postman/example-from-schema.d.mts +1 -1
- package/esm/openapi/postman/example-from-schema.d.mts.map +1 -1
- package/esm/openapi/postman/example-from-schema.mjs +1 -1
- package/esm/openapi/postman/example-from-schema.mjs.map +1 -1
- package/esm/openapi/postman/http-status-text.mjs +1 -1
- package/esm/openapi/postman/http-status-text.mjs.map +1 -1
- package/esm/openapi/postman/openapi-to-postman-collection.d.mts +1 -1
- package/esm/openapi/postman/openapi-to-postman-collection.d.mts.map +1 -1
- package/esm/openapi/postman/openapi-to-postman-collection.mjs +1 -1
- package/esm/openapi/postman/openapi-to-postman-collection.mjs.map +1 -1
- package/esm/openapi/postman/postman-types.d.mts +1 -1
- package/esm/openapi/postman/postman-types.d.mts.map +1 -1
- package/esm/openapi/postman/resolve-operation-auth.mjs +1 -1
- package/esm/openapi/postman/resolve-operation-auth.mjs.map +1 -1
- package/esm/openapi/postman/schema-refs.d.mts +1 -1
- package/esm/openapi/postman/schema-refs.d.mts.map +1 -1
- package/esm/openapi/postman/schema-refs.mjs +1 -1
- package/esm/openapi/postman/schema-refs.mjs.map +1 -1
- package/esm/openapi/postman/uuid-v5.mjs +1 -1
- package/esm/openapi/postman/uuid-v5.mjs.map +1 -1
- package/esm/openapi/request-schemas.mjs +1 -1
- package/esm/openapi/request-schemas.mjs.map +1 -1
- package/esm/openapi/response-schemas.mjs +1 -1
- package/esm/openapi/response-schemas.mjs.map +1 -1
- package/esm/openapi/schema-registry.mjs +1 -1
- package/esm/openapi/schema-registry.mjs.map +1 -1
- package/esm/openapi/security.mjs +1 -1
- package/esm/openapi/security.mjs.map +1 -1
- package/esm/openapi/types.d.mts +1 -1
- package/esm/openapi/types.d.mts.map +1 -1
- package/esm/production/assert-dist-ready-to-start.mjs +1 -1
- package/esm/production/assert-dist-ready-to-start.mjs.map +1 -1
- package/esm/production/assert-generated-imports.mjs +1 -1
- package/esm/production/assert-generated-imports.mjs.map +1 -1
- package/esm/production/build-app-production.mjs +1 -1
- package/esm/production/build-app-production.mjs.map +1 -1
- package/esm/production/build-contributions.mjs +1 -1
- package/esm/production/build-contributions.mjs.map +1 -1
- package/esm/production/bundle-framework-dependencies.mjs +1 -1
- package/esm/production/bundle-framework-dependencies.mjs.map +1 -1
- package/esm/production/dist-build-manifest.mjs +1 -1
- package/esm/production/dist-build-manifest.mjs.map +1 -1
- package/esm/production/esbuild-plugins.mjs +1 -1
- package/esm/production/esbuild-plugins.mjs.map +1 -1
- package/esm/production/esbuild-preflight.mjs +1 -1
- package/esm/production/esbuild-preflight.mjs.map +1 -1
- package/esm/production/production-builder.mjs +1 -1
- package/esm/production/production-builder.mjs.map +1 -1
- package/esm/production/production-supervisor.mjs +1 -1
- package/esm/production/production-supervisor.mjs.map +1 -1
- package/esm/production/promote-dist.mjs +1 -1
- package/esm/production/promote-dist.mjs.map +1 -1
- package/esm/production/registration-child-runner.mjs +1 -1
- package/esm/production/registration-child-runner.mjs.map +1 -1
- package/esm/production/resolve-build-config.d.mts +1 -1
- package/esm/production/resolve-build-config.d.mts.map +1 -1
- package/esm/production/resolve-build-config.mjs +1 -1
- package/esm/production/resolve-build-config.mjs.map +1 -1
- package/esm/production/route-registration-child.mjs +1 -1
- package/esm/production/route-registration-child.mjs.map +1 -1
- package/esm/production/route-registration-snapshot.mjs +1 -1
- package/esm/production/route-registration-snapshot.mjs.map +1 -1
- package/esm/production/tsconfig-path-aliases.mjs +1 -1
- package/esm/production/tsconfig-path-aliases.mjs.map +1 -1
- package/esm/react/index.d.mts +1 -1
- package/esm/react/index.d.mts.map +1 -1
- package/esm/react/index.mjs +1 -1
- package/esm/react/index.mjs.map +1 -1
- package/esm/repositories/adapters/cascade/cascade-adapter.d.mts +1 -1
- package/esm/repositories/adapters/cascade/cascade-adapter.d.mts.map +1 -1
- package/esm/repositories/adapters/cascade/cascade-adapter.mjs +1 -1
- package/esm/repositories/adapters/cascade/cascade-adapter.mjs.map +1 -1
- package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts +1 -1
- package/esm/repositories/adapters/cascade/cascade-query-builder.d.mts.map +1 -1
- package/esm/repositories/adapters/cascade/cascade-query-builder.mjs +1 -1
- package/esm/repositories/adapters/cascade/cascade-query-builder.mjs.map +1 -1
- package/esm/repositories/adapters/cascade/filter-applicator.mjs +1 -1
- package/esm/repositories/adapters/cascade/filter-applicator.mjs.map +1 -1
- package/esm/repositories/contracts/query-builder.contract.d.mts +1 -1
- package/esm/repositories/contracts/query-builder.contract.d.mts.map +1 -1
- package/esm/repositories/contracts/repository-adapter.contract.d.mts +1 -1
- package/esm/repositories/contracts/repository-adapter.contract.d.mts.map +1 -1
- package/esm/repositories/contracts/types.d.mts +1 -1
- package/esm/repositories/contracts/types.d.mts.map +1 -1
- package/esm/repositories/repository.manager.d.mts +1 -1
- package/esm/repositories/repository.manager.d.mts.map +1 -1
- package/esm/repositories/repository.manager.mjs +1 -1
- package/esm/repositories/repository.manager.mjs.map +1 -1
- package/esm/resource/define-resource.d.mts +1 -1
- package/esm/resource/define-resource.d.mts.map +1 -1
- package/esm/resource/define-resource.mjs +1 -1
- package/esm/resource/define-resource.mjs.map +1 -1
- package/esm/resource/nullable-resource.d.mts +1 -1
- package/esm/resource/nullable-resource.d.mts.map +1 -1
- package/esm/resource/nullable-resource.mjs +1 -1
- package/esm/resource/nullable-resource.mjs.map +1 -1
- package/esm/resource/register-resource.d.mts +1 -1
- package/esm/resource/register-resource.d.mts.map +1 -1
- package/esm/resource/register-resource.mjs +1 -1
- package/esm/resource/register-resource.mjs.map +1 -1
- package/esm/resource/resource-field-builder.d.mts +1 -1
- package/esm/resource/resource-field-builder.d.mts.map +1 -1
- package/esm/resource/resource-field-builder.mjs +1 -1
- package/esm/resource/resource-field-builder.mjs.map +1 -1
- package/esm/resource/resource.d.mts +1 -1
- package/esm/resource/resource.d.mts.map +1 -1
- package/esm/resource/resource.mjs +1 -1
- package/esm/resource/resource.mjs.map +1 -1
- package/esm/resource/types.d.mts +1 -1
- package/esm/resource/types.d.mts.map +1 -1
- package/esm/restful/restful.d.mts +1 -1
- package/esm/restful/restful.d.mts.map +1 -1
- package/esm/restful/restful.mjs +1 -1
- package/esm/restful/restful.mjs.map +1 -1
- package/esm/router/build-route-rate-limit.mjs +1 -1
- package/esm/router/build-route-rate-limit.mjs.map +1 -1
- package/esm/router/describe-route-for-log.mjs +1 -1
- package/esm/router/describe-route-for-log.mjs.map +1 -1
- package/esm/router/dev-dispatch.mjs +1 -1
- package/esm/router/dev-dispatch.mjs.map +1 -1
- package/esm/router/log-request-lifecycle.mjs +1 -1
- package/esm/router/log-request-lifecycle.mjs.map +1 -1
- package/esm/router/named-api-routes-with-responses.mjs +1 -1
- package/esm/router/named-api-routes-with-responses.mjs.map +1 -1
- package/esm/router/normalize-request-path.d.mts +1 -1
- package/esm/router/normalize-request-path.d.mts.map +1 -1
- package/esm/router/normalize-request-path.mjs +1 -1
- package/esm/router/normalize-request-path.mjs.map +1 -1
- package/esm/router/normalize-route-path.d.mts +1 -1
- package/esm/router/normalize-route-path.d.mts.map +1 -1
- package/esm/router/normalize-route-path.mjs +1 -1
- package/esm/router/normalize-route-path.mjs.map +1 -1
- package/esm/router/positional-handler-diagnostics.d.mts +1 -1
- package/esm/router/positional-handler-diagnostics.d.mts.map +1 -1
- package/esm/router/positional-handler-diagnostics.mjs +1 -1
- package/esm/router/positional-handler-diagnostics.mjs.map +1 -1
- package/esm/router/response-schema-types.mjs +1 -1
- package/esm/router/response-schema-types.mjs.map +1 -1
- package/esm/router/route-builder.d.mts +1 -1
- package/esm/router/route-builder.d.mts.map +1 -1
- package/esm/router/route-builder.mjs +1 -1
- package/esm/router/route-builder.mjs.map +1 -1
- package/esm/router/route-name-method-suffix.d.mts +1 -1
- package/esm/router/route-name-method-suffix.d.mts.map +1 -1
- package/esm/router/route-name-method-suffix.mjs +1 -1
- package/esm/router/route-name-method-suffix.mjs.map +1 -1
- package/esm/router/route-registry.d.mts +1 -1
- package/esm/router/route-registry.d.mts.map +1 -1
- package/esm/router/route-registry.mjs +1 -1
- package/esm/router/route-registry.mjs.map +1 -1
- package/esm/router/router.d.mts +8 -1
- package/esm/router/router.d.mts.map +1 -1
- package/esm/router/router.mjs +20 -15
- package/esm/router/router.mjs.map +1 -1
- package/esm/router/types.d.mts +13 -1
- package/esm/router/types.d.mts.map +1 -1
- package/esm/socket/types.d.mts +1 -1
- package/esm/socket/types.d.mts.map +1 -1
- package/esm/socket/utils.d.mts +1 -1
- package/esm/socket/utils.d.mts.map +1 -1
- package/esm/socket/utils.mjs +1 -1
- package/esm/socket/utils.mjs.map +1 -1
- package/esm/storage/config.d.mts +1 -1
- package/esm/storage/config.d.mts.map +1 -1
- package/esm/storage/config.mjs +1 -1
- package/esm/storage/config.mjs.map +1 -1
- package/esm/storage/context/storage-driver-context.d.mts +1 -1
- package/esm/storage/context/storage-driver-context.d.mts.map +1 -1
- package/esm/storage/context/storage-driver-context.mjs +1 -1
- package/esm/storage/context/storage-driver-context.mjs.map +1 -1
- package/esm/storage/drivers/cloud-driver.d.mts +1 -1
- package/esm/storage/drivers/cloud-driver.d.mts.map +1 -1
- package/esm/storage/drivers/cloud-driver.mjs +1 -1
- package/esm/storage/drivers/cloud-driver.mjs.map +1 -1
- package/esm/storage/drivers/do-spaces-driver.d.mts +1 -1
- package/esm/storage/drivers/do-spaces-driver.d.mts.map +1 -1
- package/esm/storage/drivers/do-spaces-driver.mjs +1 -1
- package/esm/storage/drivers/do-spaces-driver.mjs.map +1 -1
- package/esm/storage/drivers/local-driver.d.mts +12 -1
- package/esm/storage/drivers/local-driver.d.mts.map +1 -1
- package/esm/storage/drivers/local-driver.mjs +33 -1
- package/esm/storage/drivers/local-driver.mjs.map +1 -1
- package/esm/storage/drivers/r2-driver.d.mts +1 -1
- package/esm/storage/drivers/r2-driver.d.mts.map +1 -1
- package/esm/storage/drivers/r2-driver.mjs +1 -1
- package/esm/storage/drivers/r2-driver.mjs.map +1 -1
- package/esm/storage/drivers/s3-driver.d.mts +1 -1
- package/esm/storage/drivers/s3-driver.d.mts.map +1 -1
- package/esm/storage/drivers/s3-driver.mjs +1 -1
- package/esm/storage/drivers/s3-driver.mjs.map +1 -1
- package/esm/storage/index.d.mts +1 -1
- package/esm/storage/scoped-storage.d.mts +1 -1
- package/esm/storage/scoped-storage.d.mts.map +1 -1
- package/esm/storage/scoped-storage.mjs +1 -1
- package/esm/storage/scoped-storage.mjs.map +1 -1
- package/esm/storage/storage-file.d.mts +1 -1
- package/esm/storage/storage-file.d.mts.map +1 -1
- package/esm/storage/storage-file.mjs +1 -1
- package/esm/storage/storage-file.mjs.map +1 -1
- package/esm/storage/storage.d.mts +3 -3
- package/esm/storage/storage.d.mts.map +1 -1
- package/esm/storage/storage.mjs +1 -1
- package/esm/storage/storage.mjs.map +1 -1
- package/esm/storage/types.d.mts +3 -2
- package/esm/storage/types.d.mts.map +1 -1
- package/esm/storage/utils/classify-ip-address.d.mts +1 -1
- package/esm/storage/utils/classify-ip-address.d.mts.map +1 -1
- package/esm/storage/utils/classify-ip-address.mjs +1 -1
- package/esm/storage/utils/classify-ip-address.mjs.map +1 -1
- package/esm/storage/utils/contain-path.d.mts +1 -1
- package/esm/storage/utils/contain-path.d.mts.map +1 -1
- package/esm/storage/utils/contain-path.mjs +1 -1
- package/esm/storage/utils/contain-path.mjs.map +1 -1
- package/esm/storage/utils/mime.d.mts +1 -1
- package/esm/storage/utils/mime.d.mts.map +1 -1
- package/esm/storage/utils/mime.mjs +1 -1
- package/esm/storage/utils/mime.mjs.map +1 -1
- package/esm/storage/utils/safe-fetch.d.mts +1 -1
- package/esm/storage/utils/safe-fetch.d.mts.map +1 -1
- package/esm/storage/utils/safe-fetch.mjs +1 -1
- package/esm/storage/utils/safe-fetch.mjs.map +1 -1
- package/esm/storage/utils/storage-capability-error.d.mts +1 -1
- package/esm/storage/utils/storage-capability-error.d.mts.map +1 -1
- package/esm/storage/utils/storage-capability-error.mjs +1 -1
- package/esm/storage/utils/storage-capability-error.mjs.map +1 -1
- package/esm/storage/utils/storage-error.d.mts +1 -1
- package/esm/storage/utils/storage-error.d.mts.map +1 -1
- package/esm/storage/utils/storage-error.mjs +1 -1
- package/esm/storage/utils/storage-error.mjs.map +1 -1
- package/esm/storage/utils/storage-not-initialized-error.d.mts +1 -1
- package/esm/storage/utils/storage-not-initialized-error.d.mts.map +1 -1
- package/esm/storage/utils/storage-not-initialized-error.mjs +1 -1
- package/esm/storage/utils/storage-not-initialized-error.mjs.map +1 -1
- package/esm/tests/start-http-development-server.d.mts +1 -1
- package/esm/tests/start-http-development-server.d.mts.map +1 -1
- package/esm/tests/start-http-development-server.mjs +1 -1
- package/esm/tests/start-http-development-server.mjs.map +1 -1
- package/esm/tests/test-connectors-selection.d.mts +1 -1
- package/esm/tests/test-connectors-selection.d.mts.map +1 -1
- package/esm/tests/test-connectors-selection.mjs +1 -1
- package/esm/tests/test-connectors-selection.mjs.map +1 -1
- package/esm/tests/test-helpers.d.mts +1 -1
- package/esm/tests/test-helpers.d.mts.map +1 -1
- package/esm/tests/test-helpers.mjs +1 -1
- package/esm/tests/test-helpers.mjs.map +1 -1
- package/esm/tests/test-lifecycle-state.mjs +1 -1
- package/esm/tests/test-lifecycle-state.mjs.map +1 -1
- package/esm/tests/test-server-port-channel.mjs +1 -1
- package/esm/tests/test-server-port-channel.mjs.map +1 -1
- package/esm/tests/test-setup-timeout.mjs +1 -1
- package/esm/tests/test-setup-timeout.mjs.map +1 -1
- package/esm/tests/vitest-setup.d.mts +1 -1
- package/esm/tests/vitest-setup.d.mts.map +1 -1
- package/esm/tests/vitest-setup.mjs +1 -1
- package/esm/tests/vitest-setup.mjs.map +1 -1
- package/esm/updater/package-manager.mjs +1 -1
- package/esm/updater/package-manager.mjs.map +1 -1
- package/esm/updater/update-warlock-packages.mjs +1 -1
- package/esm/updater/update-warlock-packages.mjs.map +1 -1
- package/esm/use-cases/types.d.mts +1 -1
- package/esm/use-cases/types.d.mts.map +1 -1
- package/esm/use-cases/use-case-broadcast.d.mts +1 -1
- package/esm/use-cases/use-case-broadcast.d.mts.map +1 -1
- package/esm/use-cases/use-case-broadcast.mjs +1 -1
- package/esm/use-cases/use-case-broadcast.mjs.map +1 -1
- package/esm/use-cases/use-case-events.d.mts +1 -1
- package/esm/use-cases/use-case-events.d.mts.map +1 -1
- package/esm/use-cases/use-case-events.mjs +1 -1
- package/esm/use-cases/use-case-events.mjs.map +1 -1
- package/esm/use-cases/use-case-pipeline.d.mts +1 -1
- package/esm/use-cases/use-case-pipeline.d.mts.map +1 -1
- package/esm/use-cases/use-case-pipeline.mjs +1 -1
- package/esm/use-cases/use-case-pipeline.mjs.map +1 -1
- package/esm/use-cases/use-case.d.mts +1 -1
- package/esm/use-cases/use-case.d.mts.map +1 -1
- package/esm/use-cases/use-case.errors.d.mts +1 -1
- package/esm/use-cases/use-case.errors.d.mts.map +1 -1
- package/esm/use-cases/use-case.errors.mjs +1 -1
- package/esm/use-cases/use-case.errors.mjs.map +1 -1
- package/esm/use-cases/use-case.mjs +1 -1
- package/esm/use-cases/use-case.mjs.map +1 -1
- package/esm/use-cases/use-cases-registry.d.mts +1 -1
- package/esm/use-cases/use-cases-registry.d.mts.map +1 -1
- package/esm/use-cases/use-cases-registry.mjs +1 -1
- package/esm/use-cases/use-cases-registry.mjs.map +1 -1
- package/esm/utils/app-log.d.mts +6 -6
- package/esm/utils/app-log.d.mts.map +1 -1
- package/esm/utils/app-log.mjs +1 -1
- package/esm/utils/app-log.mjs.map +1 -1
- package/esm/utils/database-log.d.mts +1 -1
- package/esm/utils/database-log.d.mts.map +1 -1
- package/esm/utils/database-log.mjs +1 -1
- package/esm/utils/database-log.mjs.map +1 -1
- package/esm/utils/detect-environment-overrides.mjs +1 -1
- package/esm/utils/detect-environment-overrides.mjs.map +1 -1
- package/esm/utils/environment.d.mts +1 -1
- package/esm/utils/environment.d.mts.map +1 -1
- package/esm/utils/environment.mjs +1 -1
- package/esm/utils/environment.mjs.map +1 -1
- package/esm/utils/framework-vesion.mjs +1 -1
- package/esm/utils/framework-vesion.mjs.map +1 -1
- package/esm/utils/get-localized.d.mts +1 -1
- package/esm/utils/get-localized.d.mts.map +1 -1
- package/esm/utils/get-localized.mjs +1 -1
- package/esm/utils/get-localized.mjs.map +1 -1
- package/esm/utils/is-test-file.mjs +1 -1
- package/esm/utils/is-test-file.mjs.map +1 -1
- package/esm/utils/load-environment.mjs +1 -1
- package/esm/utils/load-environment.mjs.map +1 -1
- package/esm/utils/normalized-path.d.mts +1 -1
- package/esm/utils/normalized-path.d.mts.map +1 -1
- package/esm/utils/normalized-path.mjs +1 -1
- package/esm/utils/normalized-path.mjs.map +1 -1
- package/esm/utils/npm-registry.d.mts +1 -1
- package/esm/utils/npm-registry.d.mts.map +1 -1
- package/esm/utils/npm-registry.mjs +1 -1
- package/esm/utils/npm-registry.mjs.map +1 -1
- package/esm/utils/paths.d.mts +1 -1
- package/esm/utils/paths.d.mts.map +1 -1
- package/esm/utils/paths.mjs +1 -1
- package/esm/utils/paths.mjs.map +1 -1
- package/esm/utils/promise-all-object.d.mts +1 -1
- package/esm/utils/promise-all-object.d.mts.map +1 -1
- package/esm/utils/promise-all-object.mjs +1 -1
- package/esm/utils/promise-all-object.mjs.map +1 -1
- package/esm/utils/queue.d.mts +1 -1
- package/esm/utils/queue.d.mts.map +1 -1
- package/esm/utils/queue.mjs +1 -1
- package/esm/utils/queue.mjs.map +1 -1
- package/esm/utils/recorded-environment-overrides.mjs +1 -1
- package/esm/utils/recorded-environment-overrides.mjs.map +1 -1
- package/esm/utils/report-environment-overrides.mjs +1 -1
- package/esm/utils/report-environment-overrides.mjs.map +1 -1
- package/esm/utils/sleep.d.mts +1 -1
- package/esm/utils/sleep.d.mts.map +1 -1
- package/esm/utils/sleep.mjs +1 -1
- package/esm/utils/sleep.mjs.map +1 -1
- package/esm/utils/sluggable.d.mts +1 -1
- package/esm/utils/sluggable.d.mts.map +1 -1
- package/esm/utils/sluggable.mjs +1 -1
- package/esm/utils/sluggable.mjs.map +1 -1
- package/esm/utils/to-json.d.mts +1 -1
- package/esm/utils/to-json.d.mts.map +1 -1
- package/esm/utils/to-json.mjs +1 -1
- package/esm/utils/to-json.mjs.map +1 -1
- package/esm/utils/types.d.mts +1 -1
- package/esm/utils/types.d.mts.map +1 -1
- package/esm/utils/urls.d.mts +1 -1
- package/esm/utils/urls.d.mts.map +1 -1
- package/esm/utils/urls.mjs +1 -1
- package/esm/utils/urls.mjs.map +1 -1
- package/esm/utils/version-compare.d.mts +1 -1
- package/esm/utils/version-compare.d.mts.map +1 -1
- package/esm/utils/version-compare.mjs +1 -1
- package/esm/utils/version-compare.mjs.map +1 -1
- package/esm/validation/database/exists-except-current-id.d.mts +1 -1
- package/esm/validation/database/exists-except-current-id.d.mts.map +1 -1
- package/esm/validation/database/exists-except-current-id.mjs +1 -1
- package/esm/validation/database/exists-except-current-id.mjs.map +1 -1
- package/esm/validation/database/exists-except-current-user.d.mts +1 -1
- package/esm/validation/database/exists-except-current-user.d.mts.map +1 -1
- package/esm/validation/database/exists-except-current-user.mjs +1 -1
- package/esm/validation/database/exists-except-current-user.mjs.map +1 -1
- package/esm/validation/database/types.d.mts +1 -1
- package/esm/validation/database/types.d.mts.map +1 -1
- package/esm/validation/database/unique-except-current-id.d.mts +1 -1
- package/esm/validation/database/unique-except-current-id.d.mts.map +1 -1
- package/esm/validation/database/unique-except-current-id.mjs +1 -1
- package/esm/validation/database/unique-except-current-id.mjs.map +1 -1
- package/esm/validation/database/unique-except-current-user.d.mts +1 -1
- package/esm/validation/database/unique-except-current-user.d.mts.map +1 -1
- package/esm/validation/database/unique-except-current-user.mjs +1 -1
- package/esm/validation/database/unique-except-current-user.mjs.map +1 -1
- package/esm/validation/file/file.d.mts +1 -1
- package/esm/validation/file/file.d.mts.map +1 -1
- package/esm/validation/file/file.mjs +1 -1
- package/esm/validation/file/file.mjs.map +1 -1
- package/esm/validation/init.mjs +1 -1
- package/esm/validation/init.mjs.map +1 -1
- package/esm/validation/plugins/database-plugin.mjs +1 -1
- package/esm/validation/plugins/database-plugin.mjs.map +1 -1
- package/esm/validation/plugins/file-plugin.mjs +1 -1
- package/esm/validation/plugins/file-plugin.mjs.map +1 -1
- package/esm/validation/plugins/localized-plugin.mjs +1 -1
- package/esm/validation/plugins/localized-plugin.mjs.map +1 -1
- package/esm/validation/types.d.mts +1 -1
- package/esm/validation/types.d.mts.map +1 -1
- package/esm/validation/validateAll.mjs +1 -1
- package/esm/validation/validateAll.mjs.map +1 -1
- package/esm/validation/validators/file-validator.d.mts +44 -41
- package/esm/validation/validators/file-validator.d.mts.map +1 -1
- package/esm/validation/validators/file-validator.mjs +4 -1
- package/esm/validation/validators/file-validator.mjs.map +1 -1
- package/esm/vite/lower-stage3-decorators.d.mts +1 -1
- package/esm/vite/lower-stage3-decorators.d.mts.map +1 -1
- package/esm/vite/lower-stage3-decorators.mjs +1 -1
- package/esm/vite/lower-stage3-decorators.mjs.map +1 -1
- package/esm/warlock-config/bundle-config.mjs +148 -0
- package/esm/warlock-config/bundle-config.mjs.map +1 -0
- package/esm/warlock-config/default-configurations.mjs +1 -1
- package/esm/warlock-config/default-configurations.mjs.map +1 -1
- package/esm/warlock-config/define-config.d.mts +1 -1
- package/esm/warlock-config/define-config.d.mts.map +1 -1
- package/esm/warlock-config/define-config.mjs +1 -1
- package/esm/warlock-config/define-config.mjs.map +1 -1
- package/esm/warlock-config/index.d.mts +1 -1
- package/esm/warlock-config/index.mjs +1 -1
- package/esm/warlock-config/normalize-build-config.mjs +1 -1
- package/esm/warlock-config/normalize-build-config.mjs.map +1 -1
- package/esm/warlock-config/types.d.mts +1 -1
- package/esm/warlock-config/types.d.mts.map +1 -1
- package/esm/warlock-config/warlock-config.manager.d.mts +32 -7
- package/esm/warlock-config/warlock-config.manager.d.mts.map +1 -1
- package/esm/warlock-config/warlock-config.manager.mjs +94 -18
- package/esm/warlock-config/warlock-config.manager.mjs.map +1 -1
- package/esm/warlock-config/warn-deprecated-config.mjs +1 -1
- package/esm/warlock-config/warn-deprecated-config.mjs.map +1 -1
- package/llms-full.txt +66 -9
- package/package.json +20 -13
- package/skills/configure-app/SKILL.md +23 -1
- package/skills/create-controller/SKILL.md +4 -0
- package/skills/health-checks/SKILL.md +2 -0
- package/skills/register-route/SKILL.md +10 -0
- package/skills/run-app/SKILL.md +9 -2
- package/skills/send-response/SKILL.md +10 -2
- package/skills/store-file/SKILL.md +5 -1
- package/skills/use-middleware/SKILL.md +2 -2
- package/skills/validate-input/SKILL.md +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ready-report.mjs","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"ready-report.mjs","names":[],"sources":["../../../../../../../../packages/core/src/http/ready-report.ts"],"sourcesContent":["/**\n * What the HTTP connector learned at the moment it finished binding.\n *\n * ## Why this exists rather than another `log.*` call\n *\n * The facts a developer needs on a `warlock dev` boot — the URL, the port, the\n * mode, how many routes registered — are discovered by DIFFERENT components at\n * DIFFERENT times, and each one used to print the instant it knew. The result\n * was a ready \"screen\" assembled by whatever finished first:\n *\n * ℹ info [http] [routes] 14 route(s) registered\n * ✓ success [http] [connection] Server ready at http://[::1]:2030\n * … Development Server is ready in 660ms\n *\n * Three lines, three formats, no single place stating where to point a browser.\n *\n * So the connector RECORDS instead of narrating, and one renderer prints one\n * block once boot has actually completed (`dev-server/ready-block.ts`). The\n * split matters: a component that prints cannot be composed, and a boot\n * sequence whose output order is its completion order cannot be read.\n *\n * ## What deliberately does NOT go through here\n *\n * Warnings. A status block is a summary of the healthy case, and folding a\n * warning into a summary is how a warning stops being read. Anything the\n * connector needs to WARN about is still logged the moment it is known, which\n * puts it above the block, where it survives being skimmed.\n *\n * Production is unchanged for the same reason it always was: `warlock start`\n * hands its stdout to a supervisor that greps for known lines, so the existing\n * per-fact log lines stay exactly as they are outside development.\n */\n\nexport type HttpReadyReport = {\n /** Exactly what `listen()` returned — the bind, not its presentation. */\n boundAddress?: string;\n /** The address spelled for a human; safe to paste into a browser. */\n url: string;\n /** Whether the bind covers more than loopback. */\n wildcardBind: boolean;\n /** The port actually bound. */\n port: number;\n /** Routes on the app router at the moment the server started listening. */\n routeCount: number;\n /** `app.baseUrl`, when it is a deployment address rather than a local one. */\n publicUrl?: string;\n};\n\nlet report: HttpReadyReport | undefined;\n\n/**\n * @internal Called by `HttpConnector.start()` right after a successful listen.\n */\nexport function setHttpReadyReport(next: HttpReadyReport): void {\n report = next;\n}\n\n/**\n * The last recorded bind, or `undefined` for a process with no HTTP surface —\n * a queue worker still boots, and the ready block must render without an app\n * URL rather than invent one.\n */\nexport function getHttpReadyReport(): HttpReadyReport | undefined {\n return report;\n}\n\n/** @internal Test seam — a module-level singleton needs a way back to empty. */\nexport function resetHttpReadyReport(): void {\n report = undefined;\n}\n"],"mappings":";AAgDA,IAAI;;;;AAKJ,SAAgB,mBAAmB,MAA6B;CAC9D,SAAS;AACX;;;;;;AAOA,SAAgB,qBAAkD;CAChE,OAAO;AACT;;AAGA,SAAgB,uBAA6B;CAC3C,SAAS;AACX"}
|
|
@@ -3,7 +3,7 @@ import { Request } from "./request.mjs";
|
|
|
3
3
|
import { ReturnedResponse } from "./types.mjs";
|
|
4
4
|
import { RequestControllerContract } from "../router/types.mjs";
|
|
5
5
|
|
|
6
|
-
//#region
|
|
6
|
+
//#region ../../packages/core/src/http/request-controller.d.ts
|
|
7
7
|
declare abstract class RequestController implements RequestControllerContract {
|
|
8
8
|
readonly request: Request;
|
|
9
9
|
readonly response: Response;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-controller.d.mts","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"request-controller.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/http/request-controller.ts"],"mappings":";;;;;;uBAKsB,iBAAA,YAA6B,yBAAA;EAAA,SAE/B,OAAA,EAAS,OAAA;EAAA,SACT,QAAA,EAAU,QAAA;cADV,OAAA,EAAS,OAAA,EACT,QAAA,EAAU,QAAA;EAAA,SAKZ,OAAA,IAAW,OAAA,CAAQ,gBAAA;AAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-controller.mjs","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"request-controller.mjs","names":[],"sources":["../../../../../../../../packages/core/src/http/request-controller.ts"],"sourcesContent":["import type { RequestControllerContract } from \"./../router/types\";\nimport type { Request } from \"./request\";\nimport type { Response } from \"./response\";\nimport type { ReturnedResponse } from \"./types\";\n\nexport abstract class RequestController implements RequestControllerContract {\n public constructor(\n public readonly request: Request,\n public readonly response: Response,\n ) {\n //\n }\n\n public abstract execute(): Promise<ReturnedResponse>;\n}\n"],"mappings":";AAKA,IAAsB,oBAAtB,MAA6E;CAC3E,AAAO,YACL,AAAgB,SAChB,AAAgB,UAChB;EAFgB;EACA;CAGlB;AAGF"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
//#region ../../packages/core/src/http/request-log-snapshot.d.ts
|
|
2
|
+
/**
|
|
3
|
+
* What a request's log entries carry of its input. Set globally under
|
|
4
|
+
* `http.logging` and per route with the route's `logging` option; the route
|
|
5
|
+
* wins key by key.
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* // never log the body or the query string of this route, not even redacted
|
|
9
|
+
* router.post("/accounts/credentials", controller, {
|
|
10
|
+
* logging: { body: false, query: false },
|
|
11
|
+
* });
|
|
12
|
+
*/
|
|
13
|
+
type RequestLoggingOptions = {
|
|
14
|
+
/**
|
|
15
|
+
* Include the request body in log entries.
|
|
16
|
+
*
|
|
17
|
+
* The body is logged as RECEIVED, before validation, so fields the schema
|
|
18
|
+
* later rejects are part of it. Turn it off on routes that accept secrets
|
|
19
|
+
* or arbitrary user text.
|
|
20
|
+
*
|
|
21
|
+
* @default true
|
|
22
|
+
*/
|
|
23
|
+
body?: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Include the parsed query string in log entries. The logged URL keeps its
|
|
26
|
+
* path either way; with `query: false` its query string is dropped too.
|
|
27
|
+
*
|
|
28
|
+
* @default true
|
|
29
|
+
*/
|
|
30
|
+
query?: boolean;
|
|
31
|
+
};
|
|
32
|
+
/**
|
|
33
|
+
* `http.logging`: the app-wide defaults for {@link RequestLoggingOptions},
|
|
34
|
+
* plus query parameter names whose values are masked in logged URLs.
|
|
35
|
+
*/
|
|
36
|
+
type HttpLoggingConfig = RequestLoggingOptions & {
|
|
37
|
+
/**
|
|
38
|
+
* Extra query parameter names to mask in logged URLs, on top of the
|
|
39
|
+
* logger's default secret-key denylist and {@link URL_CREDENTIAL_PARAMS}.
|
|
40
|
+
* Matched like the logger's keys: case, `-` and `_` are ignored.
|
|
41
|
+
*/
|
|
42
|
+
redactQueryParams?: string[];
|
|
43
|
+
};
|
|
44
|
+
/**
|
|
45
|
+
* The bounded, plain-data view of a request that Core puts in log entries in
|
|
46
|
+
* place of the `Request`/`Response` instances, whose native request, reply
|
|
47
|
+
* and socket graphs reach every sink otherwise.
|
|
48
|
+
*/
|
|
49
|
+
type RequestLogSnapshot = {
|
|
50
|
+
id: string;
|
|
51
|
+
method: string; /** Path and query string, with credential-bearing parameter values masked. */
|
|
52
|
+
url: string; /** The matched route pattern, e.g. `/users/:id`. */
|
|
53
|
+
route?: string; /** The route name, when it has one. */
|
|
54
|
+
name?: string;
|
|
55
|
+
ip?: string;
|
|
56
|
+
userAgent?: string;
|
|
57
|
+
query?: Record<string, unknown>;
|
|
58
|
+
body?: Record<string, unknown>;
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Query parameters that carry a credential in a URL even though their names
|
|
62
|
+
* are too generic for the logger's key denylist: signed-URL signatures,
|
|
63
|
+
* pre-signed cloud credentials and OAuth authorization codes.
|
|
64
|
+
*/
|
|
65
|
+
declare const URL_CREDENTIAL_PARAMS: readonly string[];
|
|
66
|
+
/**
|
|
67
|
+
* Mask the values of credential-bearing query parameters in a URL (absolute,
|
|
68
|
+
* or a path with a query string). A parameter is credential-bearing when its
|
|
69
|
+
* normalized name is in the logger's default secret-key denylist (`secret`,
|
|
70
|
+
* `token`, `apiKey`, …), in {@link URL_CREDENTIAL_PARAMS}, or in `extraParams`.
|
|
71
|
+
*
|
|
72
|
+
* The path and the other parameters are kept as written.
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* redactUrlCredentials("/hooks?secret=abc&page=2") // "/hooks?secret=[REDACTED]&page=2"
|
|
76
|
+
*/
|
|
77
|
+
declare function redactUrlCredentials(url: string, extraParams?: readonly string[]): string;
|
|
78
|
+
/**
|
|
79
|
+
* Mask the values of credential-bearing parameters in a parsed query object,
|
|
80
|
+
* with the same names {@link redactUrlCredentials} masks in the URL. Nested
|
|
81
|
+
* objects and arrays (`a[b]=…` parsing) are walked; the input is not mutated.
|
|
82
|
+
*
|
|
83
|
+
* @example
|
|
84
|
+
* redactQueryCredentials({ code: "abc", page: "2" }) // { code: "[REDACTED]", page: "2" }
|
|
85
|
+
*/
|
|
86
|
+
declare function redactQueryCredentials(query: Record<string, unknown>, extraParams?: readonly string[]): Record<string, unknown>;
|
|
87
|
+
/**
|
|
88
|
+
* The effective logging options for a request: `http.logging` overlaid by the
|
|
89
|
+
* route's own `logging` option.
|
|
90
|
+
*/
|
|
91
|
+
declare function resolveRequestLoggingOptions(routeOptions: RequestLoggingOptions | undefined): Required<RequestLoggingOptions> & {
|
|
92
|
+
redactQueryParams: string[];
|
|
93
|
+
};
|
|
94
|
+
/**
|
|
95
|
+
* The fields of a request the snapshot reads. Structural, so the snapshot can
|
|
96
|
+
* be built (and tested) without a live Fastify request.
|
|
97
|
+
*/
|
|
98
|
+
type RequestLogSource = {
|
|
99
|
+
id: string;
|
|
100
|
+
method: string;
|
|
101
|
+
url: string;
|
|
102
|
+
ip?: string;
|
|
103
|
+
userAgent?: string;
|
|
104
|
+
query?: Record<string, unknown>;
|
|
105
|
+
body?: Record<string, unknown>;
|
|
106
|
+
route?: {
|
|
107
|
+
path?: string;
|
|
108
|
+
name?: string;
|
|
109
|
+
logging?: RequestLoggingOptions;
|
|
110
|
+
};
|
|
111
|
+
};
|
|
112
|
+
/**
|
|
113
|
+
* Build the {@link RequestLogSnapshot} for a request, applying the route's
|
|
114
|
+
* logging policy BEFORE anything reaches a log entry: an omitted body or
|
|
115
|
+
* query is never copied, so no sink, channel or redaction setting can expose it.
|
|
116
|
+
* Credential-bearing query parameters are masked in both `url` and `query`.
|
|
117
|
+
*
|
|
118
|
+
* Uploaded files are summarised (`{ file, mimeType }`) rather than walked.
|
|
119
|
+
*/
|
|
120
|
+
declare function buildRequestLogSnapshot(source: RequestLogSource): RequestLogSnapshot;
|
|
121
|
+
//#endregion
|
|
122
|
+
export { HttpLoggingConfig, RequestLogSnapshot, RequestLogSource, RequestLoggingOptions, URL_CREDENTIAL_PARAMS, buildRequestLogSnapshot, redactQueryCredentials, redactUrlCredentials, resolveRequestLoggingOptions };
|
|
123
|
+
//# sourceMappingURL=request-log-snapshot.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-log-snapshot.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/http/request-log-snapshot.ts"],"mappings":";;AAeA;;;;AAiBO;AAOP;;;;AAMmB;KA9BP,qBAAA;EAsCkB;;;;;;;;;EA5B5B,IAAA;EAuCA;;;;;AACa;EAjCb,KAAK;AAAA;;;AAkDN;AAmBD;KA9DY,iBAAA,GAAoB,qBAAqB;;;AA8DgC;AA4DrF;;EApHE,iBAAiB;AAAA;;;;;;KAQP,kBAAA;EACV,EAAA;EACA,MAAA;EAEA,GAAA,UAgJU;EA9IV,KAAA,WA8IS;EA5IT,IAAA;EACA,EAAA;EACA,SAAA;EACA,KAAA,GAAQ,MAAA;EACR,IAAA,GAAO,MAAM;AAAA;;AAwIyC;AAcxD;;;cA9Ia,qBAAA;;;;;;;;;;;;iBA4BG,oBAAA,CAAqB,GAAA,UAAa,WAAmC;;;;;;;;AA0HZ;iBA9DzD,sBAAA,CACd,KAAA,EAAO,MAAA,mBACP,WAAA,uBACC,MAAM;;;;;iBAmCO,4BAAA,CACd,YAAA,EAAc,qBAAA,eACb,QAAA,CAAS,qBAAA;EAA2B,iBAAA;AAAA;AAiC8C;;;;AAAA,KAnBzE,gBAAA;EACV,EAAA;EACA,MAAA;EACA,GAAA;EACA,EAAA;EACA,SAAA;EACA,KAAA,GAAQ,MAAA;EACR,IAAA,GAAO,MAAA;EACP,KAAA;IAAU,IAAA;IAAe,IAAA;IAAe,OAAA,GAAU,qBAAA;EAAA;AAAA;;;;;;;;;iBAWpC,uBAAA,CAAwB,MAAA,EAAQ,gBAAA,GAAmB,kBAAkB"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
import { UploadedFile } from "./uploaded-file.mjs";
|
|
2
|
+
import config from "@mongez/config";
|
|
3
|
+
import { DEFAULT_REDACT_KEY_SET, normalizeRedactKey } from "@warlock.js/logger";
|
|
4
|
+
|
|
5
|
+
//#region ../../packages/core/src/http/request-log-snapshot.ts
|
|
6
|
+
/**
|
|
7
|
+
* Query parameters that carry a credential in a URL even though their names
|
|
8
|
+
* are too generic for the logger's key denylist: signed-URL signatures,
|
|
9
|
+
* pre-signed cloud credentials and OAuth authorization codes.
|
|
10
|
+
*/
|
|
11
|
+
const URL_CREDENTIAL_PARAMS = [
|
|
12
|
+
"signature",
|
|
13
|
+
"sig",
|
|
14
|
+
"code",
|
|
15
|
+
"x-amz-signature",
|
|
16
|
+
"x-amz-credential",
|
|
17
|
+
"x-amz-security-token",
|
|
18
|
+
"x-goog-signature",
|
|
19
|
+
"x-goog-credential"
|
|
20
|
+
];
|
|
21
|
+
const URL_CREDENTIAL_PARAM_SET = new Set(URL_CREDENTIAL_PARAMS.map(normalizeRedactKey));
|
|
22
|
+
const REDACTED = "[REDACTED]";
|
|
23
|
+
/**
|
|
24
|
+
* Mask the values of credential-bearing query parameters in a URL (absolute,
|
|
25
|
+
* or a path with a query string). A parameter is credential-bearing when its
|
|
26
|
+
* normalized name is in the logger's default secret-key denylist (`secret`,
|
|
27
|
+
* `token`, `apiKey`, …), in {@link URL_CREDENTIAL_PARAMS}, or in `extraParams`.
|
|
28
|
+
*
|
|
29
|
+
* The path and the other parameters are kept as written.
|
|
30
|
+
*
|
|
31
|
+
* @example
|
|
32
|
+
* redactUrlCredentials("/hooks?secret=abc&page=2") // "/hooks?secret=[REDACTED]&page=2"
|
|
33
|
+
*/
|
|
34
|
+
function redactUrlCredentials(url, extraParams = []) {
|
|
35
|
+
const queryStart = url.indexOf("?");
|
|
36
|
+
if (queryStart === -1) return url;
|
|
37
|
+
const hashStart = url.indexOf("#", queryStart);
|
|
38
|
+
const queryEnd = hashStart === -1 ? url.length : hashStart;
|
|
39
|
+
const isCredential = credentialParamMatcher(extraParams);
|
|
40
|
+
const query = url.slice(queryStart + 1, queryEnd).split("&").map((pair) => {
|
|
41
|
+
const separator = pair.indexOf("=");
|
|
42
|
+
const rawName = separator === -1 ? pair : pair.slice(0, separator);
|
|
43
|
+
let name = rawName;
|
|
44
|
+
try {
|
|
45
|
+
name = decodeURIComponent(rawName.replace(/\+/g, " "));
|
|
46
|
+
} catch {}
|
|
47
|
+
if (separator !== -1 && isCredential(name)) return `${rawName}=${REDACTED}`;
|
|
48
|
+
return pair;
|
|
49
|
+
}).join("&");
|
|
50
|
+
return `${url.slice(0, queryStart)}?${query}`;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* A predicate telling whether a query parameter name carries a credential:
|
|
54
|
+
* its normalized name is in the logger's default secret-key denylist, in
|
|
55
|
+
* {@link URL_CREDENTIAL_PARAMS}, or in `extraParams`.
|
|
56
|
+
*/
|
|
57
|
+
function credentialParamMatcher(extraParams) {
|
|
58
|
+
const extra = new Set(extraParams.map(normalizeRedactKey));
|
|
59
|
+
return (name) => {
|
|
60
|
+
const key = normalizeRedactKey(name);
|
|
61
|
+
return DEFAULT_REDACT_KEY_SET.has(key) || URL_CREDENTIAL_PARAM_SET.has(key) || extra.has(key);
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* Mask the values of credential-bearing parameters in a parsed query object,
|
|
66
|
+
* with the same names {@link redactUrlCredentials} masks in the URL. Nested
|
|
67
|
+
* objects and arrays (`a[b]=…` parsing) are walked; the input is not mutated.
|
|
68
|
+
*
|
|
69
|
+
* @example
|
|
70
|
+
* redactQueryCredentials({ code: "abc", page: "2" }) // { code: "[REDACTED]", page: "2" }
|
|
71
|
+
*/
|
|
72
|
+
function redactQueryCredentials(query, extraParams = []) {
|
|
73
|
+
return redactQueryObject(query, credentialParamMatcher(extraParams));
|
|
74
|
+
}
|
|
75
|
+
function redactQueryObject(query, isCredential) {
|
|
76
|
+
const output = {};
|
|
77
|
+
for (const [name, value] of Object.entries(query)) output[name] = isCredential(name) ? REDACTED : redactQueryValue(value, isCredential);
|
|
78
|
+
return output;
|
|
79
|
+
}
|
|
80
|
+
function redactQueryValue(value, isCredential) {
|
|
81
|
+
if (Array.isArray(value)) return value.map((item) => redactQueryValue(item, isCredential));
|
|
82
|
+
if (value !== null && typeof value === "object" && Object.getPrototypeOf(value) === Object.prototype) return redactQueryObject(value, isCredential);
|
|
83
|
+
return value;
|
|
84
|
+
}
|
|
85
|
+
/**
|
|
86
|
+
* The effective logging options for a request: `http.logging` overlaid by the
|
|
87
|
+
* route's own `logging` option.
|
|
88
|
+
*/
|
|
89
|
+
function resolveRequestLoggingOptions(routeOptions) {
|
|
90
|
+
const global = config.get("http.logging") ?? {};
|
|
91
|
+
return {
|
|
92
|
+
body: routeOptions?.body ?? global.body ?? true,
|
|
93
|
+
query: routeOptions?.query ?? global.query ?? true,
|
|
94
|
+
redactQueryParams: global.redactQueryParams ?? []
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Build the {@link RequestLogSnapshot} for a request, applying the route's
|
|
99
|
+
* logging policy BEFORE anything reaches a log entry: an omitted body or
|
|
100
|
+
* query is never copied, so no sink, channel or redaction setting can expose it.
|
|
101
|
+
* Credential-bearing query parameters are masked in both `url` and `query`.
|
|
102
|
+
*
|
|
103
|
+
* Uploaded files are summarised (`{ file, mimeType }`) rather than walked.
|
|
104
|
+
*/
|
|
105
|
+
function buildRequestLogSnapshot(source) {
|
|
106
|
+
const options = resolveRequestLoggingOptions(source.route?.logging);
|
|
107
|
+
const url = options.query ? source.url : stripQuery(source.url);
|
|
108
|
+
const snapshot = {
|
|
109
|
+
id: source.id,
|
|
110
|
+
method: source.method,
|
|
111
|
+
url: redactUrlCredentials(url ?? "", options.redactQueryParams)
|
|
112
|
+
};
|
|
113
|
+
if (source.route?.path) snapshot.route = source.route.path;
|
|
114
|
+
if (source.route?.name) snapshot.name = source.route.name;
|
|
115
|
+
if (source.ip) snapshot.ip = source.ip;
|
|
116
|
+
if (source.userAgent) snapshot.userAgent = source.userAgent;
|
|
117
|
+
if (options.query && source.query && Object.keys(source.query).length > 0) snapshot.query = redactQueryCredentials(source.query, options.redactQueryParams);
|
|
118
|
+
if (options.body && source.body && Object.keys(source.body).length > 0) snapshot.body = summariseFiles(source.body);
|
|
119
|
+
return snapshot;
|
|
120
|
+
}
|
|
121
|
+
function stripQuery(url) {
|
|
122
|
+
if (!url) return url;
|
|
123
|
+
const queryStart = url.indexOf("?");
|
|
124
|
+
return queryStart === -1 ? url : url.slice(0, queryStart);
|
|
125
|
+
}
|
|
126
|
+
function summariseFiles(body) {
|
|
127
|
+
const output = {};
|
|
128
|
+
for (const [key, value] of Object.entries(body)) output[key] = Array.isArray(value) ? value.map(summariseFile) : summariseFile(value);
|
|
129
|
+
return output;
|
|
130
|
+
}
|
|
131
|
+
function summariseFile(value) {
|
|
132
|
+
if (!(value instanceof UploadedFile)) return value;
|
|
133
|
+
return {
|
|
134
|
+
file: value.name,
|
|
135
|
+
mimeType: value.mimeType
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
//#endregion
|
|
140
|
+
export { URL_CREDENTIAL_PARAMS, buildRequestLogSnapshot, redactQueryCredentials, redactUrlCredentials, resolveRequestLoggingOptions };
|
|
141
|
+
//# sourceMappingURL=request-log-snapshot.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"request-log-snapshot.mjs","names":[],"sources":["../../../../../../../../packages/core/src/http/request-log-snapshot.ts"],"sourcesContent":["import config from \"@mongez/config\";\nimport { DEFAULT_REDACT_KEY_SET, normalizeRedactKey } from \"@warlock.js/logger\";\nimport { UploadedFile } from \"./uploaded-file\";\n\n/**\n * What a request's log entries carry of its input. Set globally under\n * `http.logging` and per route with the route's `logging` option; the route\n * wins key by key.\n *\n * @example\n * // never log the body or the query string of this route, not even redacted\n * router.post(\"/accounts/credentials\", controller, {\n * logging: { body: false, query: false },\n * });\n */\nexport type RequestLoggingOptions = {\n /**\n * Include the request body in log entries.\n *\n * The body is logged as RECEIVED, before validation, so fields the schema\n * later rejects are part of it. Turn it off on routes that accept secrets\n * or arbitrary user text.\n *\n * @default true\n */\n body?: boolean;\n /**\n * Include the parsed query string in log entries. The logged URL keeps its\n * path either way; with `query: false` its query string is dropped too.\n *\n * @default true\n */\n query?: boolean;\n};\n\n/**\n * `http.logging`: the app-wide defaults for {@link RequestLoggingOptions},\n * plus query parameter names whose values are masked in logged URLs.\n */\nexport type HttpLoggingConfig = RequestLoggingOptions & {\n /**\n * Extra query parameter names to mask in logged URLs, on top of the\n * logger's default secret-key denylist and {@link URL_CREDENTIAL_PARAMS}.\n * Matched like the logger's keys: case, `-` and `_` are ignored.\n */\n redactQueryParams?: string[];\n};\n\n/**\n * The bounded, plain-data view of a request that Core puts in log entries in\n * place of the `Request`/`Response` instances, whose native request, reply\n * and socket graphs reach every sink otherwise.\n */\nexport type RequestLogSnapshot = {\n id: string;\n method: string;\n /** Path and query string, with credential-bearing parameter values masked. */\n url: string;\n /** The matched route pattern, e.g. `/users/:id`. */\n route?: string;\n /** The route name, when it has one. */\n name?: string;\n ip?: string;\n userAgent?: string;\n query?: Record<string, unknown>;\n body?: Record<string, unknown>;\n};\n\n/**\n * Query parameters that carry a credential in a URL even though their names\n * are too generic for the logger's key denylist: signed-URL signatures,\n * pre-signed cloud credentials and OAuth authorization codes.\n */\nexport const URL_CREDENTIAL_PARAMS: readonly string[] = [\n \"signature\",\n \"sig\",\n \"code\",\n \"x-amz-signature\",\n \"x-amz-credential\",\n \"x-amz-security-token\",\n \"x-goog-signature\",\n \"x-goog-credential\",\n];\n\nconst URL_CREDENTIAL_PARAM_SET: ReadonlySet<string> = new Set(\n URL_CREDENTIAL_PARAMS.map(normalizeRedactKey),\n);\n\nconst REDACTED = \"[REDACTED]\";\n\n/**\n * Mask the values of credential-bearing query parameters in a URL (absolute,\n * or a path with a query string). A parameter is credential-bearing when its\n * normalized name is in the logger's default secret-key denylist (`secret`,\n * `token`, `apiKey`, …), in {@link URL_CREDENTIAL_PARAMS}, or in `extraParams`.\n *\n * The path and the other parameters are kept as written.\n *\n * @example\n * redactUrlCredentials(\"/hooks?secret=abc&page=2\") // \"/hooks?secret=[REDACTED]&page=2\"\n */\nexport function redactUrlCredentials(url: string, extraParams: readonly string[] = []): string {\n const queryStart = url.indexOf(\"?\");\n\n if (queryStart === -1) return url;\n\n const hashStart = url.indexOf(\"#\", queryStart);\n const queryEnd = hashStart === -1 ? url.length : hashStart;\n const isCredential = credentialParamMatcher(extraParams);\n\n const query = url\n .slice(queryStart + 1, queryEnd)\n .split(\"&\")\n .map((pair) => {\n const separator = pair.indexOf(\"=\");\n const rawName = separator === -1 ? pair : pair.slice(0, separator);\n\n let name = rawName;\n\n try {\n name = decodeURIComponent(rawName.replace(/\\+/g, \" \"));\n } catch {\n // A malformed escape is logged under its raw name.\n }\n\n if (separator !== -1 && isCredential(name)) {\n return `${rawName}=${REDACTED}`;\n }\n\n return pair;\n })\n .join(\"&\");\n\n // A fragment never reaches the server, but a URL handed in by app code may\n // carry one; it is dropped rather than risk logging a token in it.\n return `${url.slice(0, queryStart)}?${query}`;\n}\n\n/**\n * A predicate telling whether a query parameter name carries a credential:\n * its normalized name is in the logger's default secret-key denylist, in\n * {@link URL_CREDENTIAL_PARAMS}, or in `extraParams`.\n */\nfunction credentialParamMatcher(extraParams: readonly string[]): (name: string) => boolean {\n const extra = new Set(extraParams.map(normalizeRedactKey));\n\n return (name) => {\n const key = normalizeRedactKey(name);\n\n return DEFAULT_REDACT_KEY_SET.has(key) || URL_CREDENTIAL_PARAM_SET.has(key) || extra.has(key);\n };\n}\n\n/**\n * Mask the values of credential-bearing parameters in a parsed query object,\n * with the same names {@link redactUrlCredentials} masks in the URL. Nested\n * objects and arrays (`a[b]=…` parsing) are walked; the input is not mutated.\n *\n * @example\n * redactQueryCredentials({ code: \"abc\", page: \"2\" }) // { code: \"[REDACTED]\", page: \"2\" }\n */\nexport function redactQueryCredentials(\n query: Record<string, unknown>,\n extraParams: readonly string[] = [],\n): Record<string, unknown> {\n return redactQueryObject(query, credentialParamMatcher(extraParams));\n}\n\nfunction redactQueryObject(\n query: Record<string, unknown>,\n isCredential: (name: string) => boolean,\n): Record<string, unknown> {\n const output: Record<string, unknown> = {};\n\n for (const [name, value] of Object.entries(query)) {\n output[name] = isCredential(name) ? REDACTED : redactQueryValue(value, isCredential);\n }\n\n return output;\n}\n\nfunction redactQueryValue(value: unknown, isCredential: (name: string) => boolean): unknown {\n if (Array.isArray(value)) return value.map((item) => redactQueryValue(item, isCredential));\n\n if (\n value !== null &&\n typeof value === \"object\" &&\n Object.getPrototypeOf(value) === Object.prototype\n ) {\n return redactQueryObject(value as Record<string, unknown>, isCredential);\n }\n\n return value;\n}\n\n/**\n * The effective logging options for a request: `http.logging` overlaid by the\n * route's own `logging` option.\n */\nexport function resolveRequestLoggingOptions(\n routeOptions: RequestLoggingOptions | undefined,\n): Required<RequestLoggingOptions> & { redactQueryParams: string[] } {\n const global = (config.get(\"http.logging\") ?? {}) as HttpLoggingConfig;\n\n return {\n body: routeOptions?.body ?? global.body ?? true,\n query: routeOptions?.query ?? global.query ?? true,\n redactQueryParams: global.redactQueryParams ?? [],\n };\n}\n\n/**\n * The fields of a request the snapshot reads. Structural, so the snapshot can\n * be built (and tested) without a live Fastify request.\n */\nexport type RequestLogSource = {\n id: string;\n method: string;\n url: string;\n ip?: string;\n userAgent?: string;\n query?: Record<string, unknown>;\n body?: Record<string, unknown>;\n route?: { path?: string; name?: string; logging?: RequestLoggingOptions };\n};\n\n/**\n * Build the {@link RequestLogSnapshot} for a request, applying the route's\n * logging policy BEFORE anything reaches a log entry: an omitted body or\n * query is never copied, so no sink, channel or redaction setting can expose it.\n * Credential-bearing query parameters are masked in both `url` and `query`.\n *\n * Uploaded files are summarised (`{ file, mimeType }`) rather than walked.\n */\nexport function buildRequestLogSnapshot(source: RequestLogSource): RequestLogSnapshot {\n const options = resolveRequestLoggingOptions(source.route?.logging);\n const url = options.query ? source.url : stripQuery(source.url);\n\n const snapshot: RequestLogSnapshot = {\n id: source.id,\n method: source.method,\n url: redactUrlCredentials(url ?? \"\", options.redactQueryParams),\n };\n\n if (source.route?.path) snapshot.route = source.route.path;\n if (source.route?.name) snapshot.name = source.route.name;\n if (source.ip) snapshot.ip = source.ip;\n if (source.userAgent) snapshot.userAgent = source.userAgent;\n\n if (options.query && source.query && Object.keys(source.query).length > 0) {\n snapshot.query = redactQueryCredentials(source.query, options.redactQueryParams);\n }\n\n if (options.body && source.body && Object.keys(source.body).length > 0) {\n snapshot.body = summariseFiles(source.body);\n }\n\n return snapshot;\n}\n\nfunction stripQuery(url: string | undefined): string | undefined {\n if (!url) return url;\n\n const queryStart = url.indexOf(\"?\");\n\n return queryStart === -1 ? url : url.slice(0, queryStart);\n}\n\nfunction summariseFiles(body: Record<string, unknown>): Record<string, unknown> {\n const output: Record<string, unknown> = {};\n\n for (const [key, value] of Object.entries(body)) {\n output[key] = Array.isArray(value) ? value.map(summariseFile) : summariseFile(value);\n }\n\n return output;\n}\n\nfunction summariseFile(value: unknown): unknown {\n if (!(value instanceof UploadedFile)) return value;\n\n return { file: value.name, mimeType: value.mimeType };\n}\n"],"mappings":"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"}
|
package/esm/http/request.d.mts
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { RequestLogSnapshot } from "./request-log-snapshot.mjs";
|
|
1
2
|
import { Response } from "./response.mjs";
|
|
2
3
|
import { UploadedFile } from "./uploaded-file.mjs";
|
|
3
4
|
import { DecodedAccessToken, RequestEvent, RequestLocals } from "./types.mjs";
|
|
@@ -7,7 +8,7 @@ import { LogLevel } from "@warlock.js/logger";
|
|
|
7
8
|
import { FastifyRequest } from "fastify";
|
|
8
9
|
import { IncomingHttpHeaders } from "node:http2";
|
|
9
10
|
|
|
10
|
-
//#region
|
|
11
|
+
//#region ../../packages/core/src/http/request.d.ts
|
|
11
12
|
type StandardHeaders = { [K in keyof IncomingHttpHeaders as string extends K ? never : number extends K ? never : K]: IncomingHttpHeaders[K] };
|
|
12
13
|
type HeaderKeys = keyof StandardHeaders;
|
|
13
14
|
/** A request-bound translator: keyword in, translated string out. */
|
|
@@ -38,6 +39,31 @@ declare class Request<RequestValidation = any> {
|
|
|
38
39
|
* Route Object
|
|
39
40
|
*/
|
|
40
41
|
route: Route;
|
|
42
|
+
/**
|
|
43
|
+
* Backing controller for `signal` — created on first access, so requests
|
|
44
|
+
* that never ask for it attach no listeners.
|
|
45
|
+
*/
|
|
46
|
+
private disconnectController?;
|
|
47
|
+
/**
|
|
48
|
+
* An `AbortSignal` that aborts when the client disconnects before the
|
|
49
|
+
* response has finished. Pass it to long-running work (`fetch`, database
|
|
50
|
+
* cursors, child processes) so that work stops when nobody is waiting:
|
|
51
|
+
*
|
|
52
|
+
* ```ts
|
|
53
|
+
* const report = await buildReport({ signal: request.signal });
|
|
54
|
+
* ```
|
|
55
|
+
*
|
|
56
|
+
* It follows the RESPONSE, not the request stream: reading the request body
|
|
57
|
+
* to the end does not abort it, and a response that finishes normally never
|
|
58
|
+
* aborts it. The abort reason is a `DOMException` named `"AbortError"`.
|
|
59
|
+
* The listener is attached on first access and removed when the response
|
|
60
|
+
* closes. Combine with a deadline via
|
|
61
|
+
* `AbortSignal.any([request.signal, AbortSignal.timeout(ms)])`.
|
|
62
|
+
*
|
|
63
|
+
* A request with no bound response (a hand-built `Request` in a test) gets
|
|
64
|
+
* a signal that never aborts.
|
|
65
|
+
*/
|
|
66
|
+
get signal(): AbortSignal;
|
|
41
67
|
/**
|
|
42
68
|
* Parsed Request Payload
|
|
43
69
|
*/
|
|
@@ -222,7 +248,7 @@ declare class Request<RequestValidation = any> {
|
|
|
222
248
|
/**
|
|
223
249
|
* Validate the given validation schema
|
|
224
250
|
*/
|
|
225
|
-
validate(validation: BaseValidator, selectedInputs?: string[]): Promise<import("@warlock.js/seal").
|
|
251
|
+
validate(validation: BaseValidator, selectedInputs?: string[]): Promise<import("@warlock.js/seal").TypedValidationResult<any>>;
|
|
226
252
|
/**
|
|
227
253
|
* Get value of the given header
|
|
228
254
|
*/
|
|
@@ -338,6 +364,19 @@ declare class Request<RequestValidation = any> {
|
|
|
338
364
|
* Make a log message
|
|
339
365
|
*/
|
|
340
366
|
log(message: any, level?: LogLevel): void;
|
|
367
|
+
/**
|
|
368
|
+
* The bounded, plain-data view of this request that log entries carry:
|
|
369
|
+
* id, method, URL (credential-bearing query values masked), route, client
|
|
370
|
+
* IP, user agent, and the query and body unless `http.logging` or the
|
|
371
|
+
* route's `logging` option omits them. Never the native request, reply or
|
|
372
|
+
* socket.
|
|
373
|
+
*
|
|
374
|
+
* Use it in your own log calls instead of passing the request itself.
|
|
375
|
+
*
|
|
376
|
+
* @example
|
|
377
|
+
* log.warn("billing", "charge", "declined", { request: request.toLogSnapshot() });
|
|
378
|
+
*/
|
|
379
|
+
toLogSnapshot(): RequestLogSnapshot;
|
|
341
380
|
/**
|
|
342
381
|
* Get current request path
|
|
343
382
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request.d.mts","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"request.d.mts","names":[],"sources":["../../../../../../../../packages/core/src/http/request.ts"],"mappings":"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"}
|
package/esm/http/request.mjs
CHANGED
|
@@ -8,6 +8,7 @@ import { createRequestStore } from "./middleware/inject-request-context.mjs";
|
|
|
8
8
|
import { Response } from "./response.mjs";
|
|
9
9
|
import { validateAll } from "../validation/validateAll.mjs";
|
|
10
10
|
import { UploadedFile } from "./uploaded-file.mjs";
|
|
11
|
+
import { buildRequestLogSnapshot } from "./request-log-snapshot.mjs";
|
|
11
12
|
import { v } from "@warlock.js/seal";
|
|
12
13
|
import { trans, transFrom } from "@mongez/localization";
|
|
13
14
|
import { log } from "@warlock.js/logger";
|
|
@@ -17,7 +18,7 @@ import { colors } from "@mongez/copper";
|
|
|
17
18
|
import events from "@mongez/events";
|
|
18
19
|
import { randomBytes } from "node:crypto";
|
|
19
20
|
|
|
20
|
-
//#region
|
|
21
|
+
//#region ../../packages/core/src/http/request.ts
|
|
21
22
|
var Request = class Request {
|
|
22
23
|
constructor() {
|
|
23
24
|
this.payload = {};
|
|
@@ -30,6 +31,43 @@ var Request = class Request {
|
|
|
30
31
|
this.startTime = Date.now();
|
|
31
32
|
}
|
|
32
33
|
/**
|
|
34
|
+
* An `AbortSignal` that aborts when the client disconnects before the
|
|
35
|
+
* response has finished. Pass it to long-running work (`fetch`, database
|
|
36
|
+
* cursors, child processes) so that work stops when nobody is waiting:
|
|
37
|
+
*
|
|
38
|
+
* ```ts
|
|
39
|
+
* const report = await buildReport({ signal: request.signal });
|
|
40
|
+
* ```
|
|
41
|
+
*
|
|
42
|
+
* It follows the RESPONSE, not the request stream: reading the request body
|
|
43
|
+
* to the end does not abort it, and a response that finishes normally never
|
|
44
|
+
* aborts it. The abort reason is a `DOMException` named `"AbortError"`.
|
|
45
|
+
* The listener is attached on first access and removed when the response
|
|
46
|
+
* closes. Combine with a deadline via
|
|
47
|
+
* `AbortSignal.any([request.signal, AbortSignal.timeout(ms)])`.
|
|
48
|
+
*
|
|
49
|
+
* A request with no bound response (a hand-built `Request` in a test) gets
|
|
50
|
+
* a signal that never aborts.
|
|
51
|
+
*/
|
|
52
|
+
get signal() {
|
|
53
|
+
if (this.disconnectController) return this.disconnectController.signal;
|
|
54
|
+
const controller = new AbortController();
|
|
55
|
+
this.disconnectController = controller;
|
|
56
|
+
const raw = this.response?.baseResponse?.raw;
|
|
57
|
+
if (!raw || typeof raw.once !== "function") return controller.signal;
|
|
58
|
+
const abortUnlessFinished = () => {
|
|
59
|
+
if (raw.writableFinished) return;
|
|
60
|
+
controller.abort(new DOMException("The client disconnected before the response finished", "AbortError"));
|
|
61
|
+
};
|
|
62
|
+
if (raw.writableFinished) return controller.signal;
|
|
63
|
+
if (raw.destroyed) {
|
|
64
|
+
abortUnlessFinished();
|
|
65
|
+
return controller.signal;
|
|
66
|
+
}
|
|
67
|
+
raw.once("close", abortUnlessFinished);
|
|
68
|
+
return controller.signal;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
33
71
|
* Decoded access token payload (set by auth middleware).
|
|
34
72
|
*
|
|
35
73
|
* A prototype accessor, not a plain field, so assignment can mark the
|
|
@@ -456,7 +494,32 @@ var Request = class Request {
|
|
|
456
494
|
action: this.route.method + " " + this.route.path.replace("/*", "") + `:${this.id}`,
|
|
457
495
|
message,
|
|
458
496
|
type: level,
|
|
459
|
-
context: { request: this }
|
|
497
|
+
context: { request: this.toLogSnapshot() }
|
|
498
|
+
});
|
|
499
|
+
}
|
|
500
|
+
/**
|
|
501
|
+
* The bounded, plain-data view of this request that log entries carry:
|
|
502
|
+
* id, method, URL (credential-bearing query values masked), route, client
|
|
503
|
+
* IP, user agent, and the query and body unless `http.logging` or the
|
|
504
|
+
* route's `logging` option omits them. Never the native request, reply or
|
|
505
|
+
* socket.
|
|
506
|
+
*
|
|
507
|
+
* Use it in your own log calls instead of passing the request itself.
|
|
508
|
+
*
|
|
509
|
+
* @example
|
|
510
|
+
* log.warn("billing", "charge", "declined", { request: request.toLogSnapshot() });
|
|
511
|
+
*/
|
|
512
|
+
toLogSnapshot() {
|
|
513
|
+
const baseRequest = this.baseRequest;
|
|
514
|
+
return buildRequestLogSnapshot({
|
|
515
|
+
id: this.id,
|
|
516
|
+
method: baseRequest?.method ?? this.route?.method ?? "",
|
|
517
|
+
url: baseRequest?.url ?? "",
|
|
518
|
+
ip: baseRequest ? this.detectIp() : void 0,
|
|
519
|
+
userAgent: baseRequest?.headers?.["user-agent"],
|
|
520
|
+
query: this.payload?.query,
|
|
521
|
+
body: this.payload?.body,
|
|
522
|
+
route: this.route
|
|
460
523
|
});
|
|
461
524
|
}
|
|
462
525
|
/**
|