@warlock.js/core 5.28.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 +71 -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 +31 -0
- package/esm/container/development-app-modules.d.mts.map +1 -0
- 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 +3 -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 +52 -0
- package/esm/dev-server/app-module-registry.mjs.map +1 -0
- 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 +28 -14
- 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 +15 -9
- package/esm/index.mjs +11 -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 +7 -2
- package/esm/localization/parse-locale-dictionary.d.mts.map +1 -1
- package/esm/localization/parse-locale-dictionary.mjs +6 -2
- 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 +5 -2
- package/esm/openapi/response-schemas.mjs.map +1 -1
- package/esm/openapi/schema-registry.mjs +7 -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/index.d.mts +1 -0
- package/esm/resource/index.mjs +1 -0
- package/esm/resource/nullable-resource.d.mts +44 -0
- package/esm/resource/nullable-resource.d.mts.map +1 -0
- package/esm/resource/nullable-resource.mjs +38 -0
- package/esm/resource/nullable-resource.mjs.map +1 -0
- 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 +23 -4
- package/esm/resource/resource.mjs.map +1 -1
- package/esm/resource/types.d.mts +11 -6
- 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 +3 -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 +306 -249
- package/llms.txt +42 -42
- package/package.json +20 -13
- package/skills/README.md +39 -39
- package/skills/add-connector/SKILL.md +4 -4
- package/skills/benchmark-code/SKILL.md +3 -3
- package/skills/build-restful/SKILL.md +5 -5
- package/skills/build-url/SKILL.md +7 -7
- package/skills/configure-app/SKILL.md +30 -8
- package/skills/create-controller/SKILL.md +12 -8
- package/skills/create-module/SKILL.md +9 -9
- package/skills/define-resource/SKILL.md +4 -4
- package/skills/encrypt-data/SKILL.md +7 -7
- package/skills/generate-openapi/SKILL.md +5 -5
- package/skills/hash-password/SKILL.md +8 -8
- package/skills/health-checks/SKILL.md +8 -6
- package/skills/lower-stage3-decorators/SKILL.md +4 -4
- package/skills/process-image/SKILL.md +5 -5
- package/skills/register-route/SKILL.md +16 -6
- package/skills/request-memo/SKILL.md +4 -4
- package/skills/request-tracing/SKILL.md +6 -6
- package/skills/resolve-path/SKILL.md +6 -6
- package/skills/retry-operation/SKILL.md +4 -4
- package/skills/run-app/SKILL.md +20 -13
- package/skills/send-mail/SKILL.md +3 -3
- package/skills/send-response/SKILL.md +16 -8
- package/skills/store-file/SKILL.md +9 -5
- package/skills/test-http/SKILL.md +5 -5
- package/skills/test-service/SKILL.md +5 -5
- package/skills/update-packages/SKILL.md +6 -6
- package/skills/upload-file/SKILL.md +7 -7
- package/skills/use-app-context/SKILL.md +7 -7
- package/skills/use-localization/SKILL.md +6 -6
- package/skills/use-middleware/SKILL.md +8 -8
- package/skills/use-model-transformers/SKILL.md +6 -6
- package/skills/use-repository/SKILL.md +7 -7
- package/skills/use-request-locals/SKILL.md +4 -4
- package/skills/validate-input/SKILL.md +7 -7
- package/skills/warlock-conventions/SKILL.md +6 -6
- package/skills/warlock-doctor/SKILL.md +5 -5
- package/skills/warlock-routes/SKILL.md +6 -6
- package/skills/wire-socket/SKILL.md +4 -4
- package/skills/write-cli-command/SKILL.md +6 -6
- package/skills/write-middleware/SKILL.md +8 -8
- package/skills/write-seeder/SKILL.md +5 -5
- package/skills/write-use-case/SKILL.md +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-request-body.mjs","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"build-request-body.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/openapi/postman/build-request-body.ts"],"sourcesContent":["import type { OpenApiRequestBody, OpenApiSchema } from \"../types\";\nimport { exampleFromSchema } from \"./example-from-schema\";\nimport type { PostmanBody, PostmanFormParam } from \"./postman-types\";\nimport { isRecord, primaryType, resolveSchema, type SchemaComponents } from \"./schema-refs\";\n\nexport type RequestBodyParts = {\n body: PostmanBody;\n /** Set when the request needs an explicit `Content-Type` header; Postman adds the form ones itself. */\n contentType?: string;\n};\n\nconst MULTIPART = \"multipart/form-data\";\nconst URL_ENCODED = \"application/x-www-form-urlencoded\";\n\nfunction isJsonContentType(contentType: string): boolean {\n return contentType === \"application/json\" || contentType.endsWith(\"+json\");\n}\n\nfunction stringifyValue(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n\n return isRecord(value) || Array.isArray(value) ? JSON.stringify(value) : String(value);\n}\n\nfunction isFileSchema(schema: OpenApiSchema, components: SchemaComponents): boolean {\n const resolved = resolveSchema(schema, components);\n\n if (resolved.format === \"binary\" || typeof resolved.contentMediaType === \"string\") {\n return true;\n }\n\n return primaryType(resolved) === \"array\" && isRecord(resolved.items)\n ? isFileSchema(resolved.items, components)\n : false;\n}\n\nfunction formFields(schema: OpenApiSchema, components: SchemaComponents): PostmanFormParam[] {\n const resolved = resolveSchema(schema, components);\n const properties = isRecord(resolved.properties) ? resolved.properties : {};\n\n return Object.entries(properties).flatMap(([key, property]): PostmanFormParam[] => {\n if (!isRecord(property)) {\n return [];\n }\n\n const description = typeof property.description === \"string\" ? { description: property.description } : {};\n\n if (isFileSchema(property, components)) {\n return [{ key, type: \"file\", src: [], ...description }];\n }\n\n return [{ key, value: stringifyValue(exampleFromSchema(property, components)), type: \"text\", ...description }];\n });\n}\n\nfunction pickContentType(contentTypes: string[]): string | undefined {\n return (\n contentTypes.find(isJsonContentType) ??\n contentTypes.find((contentType) => contentType === MULTIPART) ??\n contentTypes.find((contentType) => contentType === URL_ENCODED) ??\n contentTypes[0]\n );\n}\n\n/**\n * The Postman body of an operation's request body: JSON becomes a raw JSON example, multipart\n * becomes `formdata` (binary properties as file rows), url-encoded becomes `urlencoded`.\n *\n * @returns `undefined` when the operation has no usable body.\n */\nexport function buildRequestBody(\n requestBody: OpenApiRequestBody | undefined,\n components: SchemaComponents,\n): RequestBodyParts | undefined {\n if (!requestBody) {\n return undefined;\n }\n\n const contentType = pickContentType(Object.keys(requestBody.content));\n const schema = contentType !== undefined ? requestBody.content[contentType]?.schema : undefined;\n\n if (contentType === undefined || schema === undefined) {\n return undefined;\n }\n\n if (contentType === MULTIPART) {\n return { body: { mode: \"formdata\", formdata: formFields(schema, components) } };\n }\n\n if (contentType === URL_ENCODED) {\n const urlencoded = formFields(schema, components).flatMap((field) =>\n field.type === \"text\" ? [{ key: field.key, value: field.value, type: \"text\" as const }] : [],\n );\n\n return { body: { mode: \"urlencoded\", urlencoded } };\n }\n\n const example = exampleFromSchema(schema, components);\n\n if (isJsonContentType(contentType)) {\n return {\n contentType,\n body: {\n mode: \"raw\",\n raw: JSON.stringify(example, null, 2),\n options: { raw: { language: \"json\" } },\n },\n };\n }\n\n return {\n contentType,\n body: {\n mode: \"raw\",\n raw: typeof example === \"string\" ? example : \"\",\n options: { raw: { language: \"text\" } },\n },\n };\n}\n"],"mappings":";;;;AAWA,MAAM,YAAY;AAClB,MAAM,cAAc;AAEpB,SAAS,kBAAkB,aAA8B;CACvD,OAAO,gBAAgB,sBAAsB,YAAY,SAAS,OAAO;AAC3E;AAEA,SAAS,eAAe,OAAwB;CAC9C,IAAI,OAAO,UAAU,UACnB,OAAO;CAGT,OAAO,SAAS,KAAK,KAAK,MAAM,QAAQ,KAAK,IAAI,KAAK,UAAU,KAAK,IAAI,OAAO,KAAK;AACvF;AAEA,SAAS,aAAa,QAAuB,YAAuC;CAClF,MAAM,WAAW,cAAc,QAAQ,UAAU;CAEjD,IAAI,SAAS,WAAW,YAAY,OAAO,SAAS,qBAAqB,UACvE,OAAO;CAGT,OAAO,YAAY,QAAQ,MAAM,WAAW,SAAS,SAAS,KAAK,IAC/D,aAAa,SAAS,OAAO,UAAU,IACvC;AACN;AAEA,SAAS,WAAW,QAAuB,YAAkD;CAC3F,MAAM,WAAW,cAAc,QAAQ,UAAU;CACjD,MAAM,aAAa,SAAS,SAAS,UAAU,IAAI,SAAS,aAAa,CAAC;CAE1E,OAAO,OAAO,QAAQ,UAAU,CAAC,CAAC,SAAS,CAAC,KAAK,cAAkC;EACjF,IAAI,CAAC,SAAS,QAAQ,GACpB,OAAO,CAAC;EAGV,MAAM,cAAc,OAAO,SAAS,gBAAgB,WAAW,EAAE,aAAa,SAAS,YAAY,IAAI,CAAC;EAExG,IAAI,aAAa,UAAU,UAAU,GACnC,OAAO,CAAC;GAAE;GAAK,MAAM;GAAQ,KAAK,CAAC;GAAG,GAAG;EAAY,CAAC;EAGxD,OAAO,CAAC;GAAE;GAAK,OAAO,eAAe,kBAAkB,UAAU,UAAU,CAAC;GAAG,MAAM;GAAQ,GAAG;EAAY,CAAC;CAC/G,CAAC;AACH;AAEA,SAAS,gBAAgB,cAA4C;CACnE,OACE,aAAa,KAAK,iBAAiB,KACnC,aAAa,MAAM,gBAAgB,gBAAgB,SAAS,KAC5D,aAAa,MAAM,gBAAgB,gBAAgB,WAAW,KAC9D,aAAa;AAEjB;;;;;;;AAQA,SAAgB,iBACd,aACA,YAC8B;CAC9B,IAAI,CAAC,aACH;CAGF,MAAM,cAAc,gBAAgB,OAAO,KAAK,YAAY,OAAO,CAAC;CACpE,MAAM,SAAS,gBAAgB,SAAY,YAAY,QAAQ,YAAY,EAAE,SAAS;CAEtF,IAAI,gBAAgB,UAAa,WAAW,QAC1C;CAGF,IAAI,gBAAgB,WAClB,OAAO,EAAE,MAAM;EAAE,MAAM;EAAY,UAAU,WAAW,QAAQ,UAAU;CAAE,EAAE;CAGhF,IAAI,gBAAgB,aAKlB,OAAO,EAAE,MAAM;EAAE,MAAM;EAAc,YAJlB,WAAW,QAAQ,UAAU,CAAC,CAAC,SAAS,UACzD,MAAM,SAAS,SAAS,CAAC;GAAE,KAAK,MAAM;GAAK,OAAO,MAAM;GAAO,MAAM;EAAgB,CAAC,IAAI,CAAC,CAG/C;CAAE,EAAE;CAGpD,MAAM,UAAU,kBAAkB,QAAQ,UAAU;CAEpD,IAAI,kBAAkB,WAAW,GAC/B,OAAO;EACL;EACA,MAAM;GACJ,MAAM;GACN,KAAK,KAAK,UAAU,SAAS,MAAM,CAAC;GACpC,SAAS,EAAE,KAAK,EAAE,UAAU,OAAO,EAAE;EACvC;CACF;CAGF,OAAO;EACL;EACA,MAAM;GACJ,MAAM;GACN,KAAK,OAAO,YAAY,WAAW,UAAU;GAC7C,SAAS,EAAE,KAAK,EAAE,UAAU,OAAO,EAAE;EACvC;CACF;AACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isRecord, resolveSchema } from "./schema-refs.mjs";
|
|
2
2
|
|
|
3
|
-
//#region
|
|
3
|
+
//#region ../../packages/core/src/openapi/postman/build-request-url.ts
|
|
4
4
|
/** The Postman variable every request URL starts with. */
|
|
5
5
|
const BASE_URL_HOST = "{{baseUrl}}";
|
|
6
6
|
const PATH_TEMPLATE_PARAM = /\{([^}]+)\}/g;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-request-url.mjs","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"build-request-url.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/openapi/postman/build-request-url.ts"],"sourcesContent":["import type { OpenApiParameter, OpenApiSchema } from \"../types\";\nimport { isRecord, resolveSchema, type SchemaComponents } from \"./schema-refs\";\nimport type { PostmanHeader, PostmanQueryParam, PostmanUrl, PostmanVariable } from \"./postman-types\";\n\n/** The Postman variable every request URL starts with. */\nexport const BASE_URL_HOST = \"{{baseUrl}}\";\n\nconst PATH_TEMPLATE_PARAM = /\\{([^}]+)\\}/g;\n\nfunction stringifyValue(value: unknown): string {\n if (typeof value === \"string\") {\n return value;\n }\n\n return isRecord(value) || Array.isArray(value) ? JSON.stringify(value) : String(value);\n}\n\n/**\n * Value a parameter starts with in Postman: its declared `example`, `default`, `const` or\n * first `enum` value, otherwise empty so the caller fills it in.\n */\nfunction parameterValue(schema: OpenApiSchema, components: SchemaComponents): string {\n const resolved = resolveSchema(schema, components);\n\n for (const key of [\"example\", \"default\", \"const\"]) {\n if (key in resolved) {\n return stringifyValue(resolved[key]);\n }\n }\n\n if (Array.isArray(resolved.enum) && resolved.enum.length > 0) {\n return stringifyValue(resolved.enum[0]);\n }\n\n return \"\";\n}\n\nfunction withDescription<T extends object>(row: T, parameter: OpenApiParameter): T & { description?: string } {\n return parameter.description ? { ...row, description: parameter.description } : row;\n}\n\nfunction queryRows(parameter: OpenApiParameter, components: SchemaComponents): PostmanQueryParam[] {\n const disabled = parameter.required === true ? {} : { disabled: true as const };\n const schema = resolveSchema(parameter.schema, components);\n\n if (parameter.style === \"deepObject\" && isRecord(schema.properties)) {\n return Object.entries(schema.properties).map(([property, propertySchema]) => ({\n key: `${parameter.name}[${property}]`,\n value: isRecord(propertySchema) ? parameterValue(propertySchema, components) : \"\",\n ...disabled,\n }));\n }\n\n return [\n {\n key: parameter.name,\n value: parameterValue(parameter.schema, components),\n ...(parameter.description ? { description: parameter.description } : {}),\n ...disabled,\n },\n ];\n}\n\n/**\n * Header rows for the `header` parameters of an operation. Optional ones start disabled.\n */\nexport function buildHeaderParameters(\n parameters: readonly OpenApiParameter[],\n components: SchemaComponents,\n): PostmanHeader[] {\n return parameters\n .filter((parameter) => parameter.in === \"header\")\n .map((parameter) =>\n withDescription(\n {\n key: parameter.name,\n value: parameterValue(parameter.schema, components),\n ...(parameter.required === true ? {} : { disabled: true as const }),\n },\n parameter,\n ),\n );\n}\n\n/**\n * The Postman URL of an operation: `{id}` templates become `:id` path variables, query\n * parameters become rows (optional ones disabled, so `raw` carries only the enabled ones).\n */\nexport function buildRequestUrl(\n path: string,\n parameters: readonly OpenApiParameter[],\n components: SchemaComponents,\n): PostmanUrl {\n const segments = path\n .split(\"/\")\n .filter((segment) => segment.length > 0)\n .map((segment) => segment.replace(PATH_TEMPLATE_PARAM, \":$1\"));\n\n const variables: PostmanVariable[] = [...path.matchAll(PATH_TEMPLATE_PARAM)].flatMap((match) => {\n const name = match[1];\n\n if (name === undefined) {\n return [];\n }\n\n const description = parameters.find((parameter) => parameter.in === \"path\" && parameter.name === name)\n ?.description;\n\n return [{ key: name, value: \"\", ...(description ? { description } : {}) }];\n });\n\n const query = parameters\n .filter((parameter) => parameter.in === \"query\")\n .flatMap((parameter) => queryRows(parameter, components));\n\n const search = query\n .filter((row) => row.disabled !== true)\n .map((row) => `${row.key}=${row.value}`)\n .join(\"&\");\n\n return {\n raw: `${BASE_URL_HOST}/${segments.join(\"/\")}${search ? `?${search}` : \"\"}`,\n host: [BASE_URL_HOST],\n path: segments,\n ...(variables.length > 0 ? { variable: variables } : {}),\n ...(query.length > 0 ? { query } : {}),\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { exampleFromSchema } from "./example-from-schema.mjs";
|
|
2
2
|
import { httpStatusText } from "./http-status-text.mjs";
|
|
3
3
|
|
|
4
|
-
//#region
|
|
4
|
+
//#region ../../packages/core/src/openapi/postman/build-saved-responses.ts
|
|
5
5
|
function previewLanguage(contentType) {
|
|
6
6
|
if (contentType === "application/json" || contentType.endsWith("+json")) return "json";
|
|
7
7
|
return contentType === "text/html" ? "html" : "text";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"build-saved-responses.mjs","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"build-saved-responses.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/openapi/postman/build-saved-responses.ts"],"sourcesContent":["import type { OpenApiOperation } from \"../types\";\nimport { exampleFromSchema } from \"./example-from-schema\";\nimport { httpStatusText } from \"./http-status-text\";\nimport type { PostmanHeader, PostmanOriginalRequest, PostmanResponse } from \"./postman-types\";\nimport type { SchemaComponents } from \"./schema-refs\";\n\ntype PreviewLanguage = PostmanResponse[\"_postman_previewlanguage\"];\n\nfunction previewLanguage(contentType: string): PreviewLanguage {\n if (contentType === \"application/json\" || contentType.endsWith(\"+json\")) {\n return \"json\";\n }\n\n return contentType === \"text/html\" ? \"html\" : \"text\";\n}\n\nfunction stringExample(example: unknown): string {\n return typeof example === \"string\" ? example : \"\";\n}\n\nfunction responseBody(\n content: NonNullable<OpenApiOperation[\"responses\"][string][\"content\"]>,\n components: SchemaComponents,\n): { body: string; header: PostmanHeader[]; language: PreviewLanguage } {\n const contentTypes = Object.keys(content);\n const contentType = contentTypes.find((type) => previewLanguage(type) === \"json\") ?? contentTypes[0];\n const schema = contentType !== undefined ? content[contentType]?.schema : undefined;\n\n if (contentType === undefined || schema === undefined) {\n return { body: \"\", header: [], language: \"text\" };\n }\n\n const language = previewLanguage(contentType);\n const example = exampleFromSchema(schema, components);\n const body = language === \"json\" ? JSON.stringify(example, null, 2) : stringExample(example);\n\n return { body, header: [{ key: \"Content-Type\", value: contentType, type: \"text\" }], language };\n}\n\n/**\n * One saved Postman response per declared numeric status, with an example body from the\n * response schema. `default` and range keys (`2XX`) have no single status code and are skipped.\n */\nexport function buildSavedResponses(\n responses: OpenApiOperation[\"responses\"],\n originalRequest: PostmanOriginalRequest,\n components: SchemaComponents,\n): PostmanResponse[] {\n return Object.entries(responses).flatMap(([status, response]): PostmanResponse[] => {\n if (!/^\\d{3}$/.test(status)) {\n return [];\n }\n\n const code = Number(status);\n const { body, header, language } = response.content\n ? responseBody(response.content, components)\n : { body: \"\", header: [], language: \"text\" as const };\n\n return [\n {\n name: `${status} ${response.description}`,\n originalRequest,\n status: httpStatusText(code, response.description),\n code,\n _postman_previewlanguage: language,\n header,\n body,\n },\n ];\n });\n}\n"],"mappings":";;;;AAQA,SAAS,gBAAgB,aAAsC;CAC7D,IAAI,gBAAgB,sBAAsB,YAAY,SAAS,OAAO,GACpE,OAAO;CAGT,OAAO,gBAAgB,cAAc,SAAS;AAChD;AAEA,SAAS,cAAc,SAA0B;CAC/C,OAAO,OAAO,YAAY,WAAW,UAAU;AACjD;AAEA,SAAS,aACP,SACA,YACsE;CACtE,MAAM,eAAe,OAAO,KAAK,OAAO;CACxC,MAAM,cAAc,aAAa,MAAM,SAAS,gBAAgB,IAAI,MAAM,MAAM,KAAK,aAAa;CAClG,MAAM,SAAS,gBAAgB,SAAY,QAAQ,YAAY,EAAE,SAAS;CAE1E,IAAI,gBAAgB,UAAa,WAAW,QAC1C,OAAO;EAAE,MAAM;EAAI,QAAQ,CAAC;EAAG,UAAU;CAAO;CAGlD,MAAM,WAAW,gBAAgB,WAAW;CAC5C,MAAM,UAAU,kBAAkB,QAAQ,UAAU;CAGpD,OAAO;EAAE,MAFI,aAAa,SAAS,KAAK,UAAU,SAAS,MAAM,CAAC,IAAI,cAAc,OAAO;EAE5E,QAAQ,CAAC;GAAE,KAAK;GAAgB,OAAO;GAAa,MAAM;EAAO,CAAC;EAAG;CAAS;AAC/F;;;;;AAMA,SAAgB,oBACd,WACA,iBACA,YACmB;CACnB,OAAO,OAAO,QAAQ,SAAS,CAAC,CAAC,SAAS,CAAC,QAAQ,cAAiC;EAClF,IAAI,CAAC,UAAU,KAAK,MAAM,GACxB,OAAO,CAAC;EAGV,MAAM,OAAO,OAAO,MAAM;EAC1B,MAAM,EAAE,MAAM,QAAQ,aAAa,SAAS,UACxC,aAAa,SAAS,SAAS,UAAU,IACzC;GAAE,MAAM;GAAI,QAAQ,CAAC;GAAG,UAAU;EAAgB;EAEtD,OAAO,CACL;GACE,MAAM,GAAG,OAAO,GAAG,SAAS;GAC5B;GACA,QAAQ,eAAe,MAAM,SAAS,WAAW;GACjD;GACA,0BAA0B;GAC1B;GACA;EACF,CACF;CACF,CAAC;AACH"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { OpenApiSchema } from "../types.mjs";
|
|
2
2
|
import { SchemaComponents } from "./schema-refs.mjs";
|
|
3
3
|
|
|
4
|
-
//#region
|
|
4
|
+
//#region ../../packages/core/src/openapi/postman/example-from-schema.d.ts
|
|
5
5
|
/**
|
|
6
6
|
* A deterministic example value for a JSON Schema.
|
|
7
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"example-from-schema.d.mts","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"example-from-schema.d.mts","names":[],"sources":["../../../../../../../../../packages/core/src/openapi/postman/example-from-schema.ts"],"mappings":";;;;;;AAgJA;;;;;;;iBAAgB,iBAAA,CAAkB,MAAA,EAAQ,aAAA,EAAe,UAAA,GAAa,gBAAgB"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { isRecord, primaryType, refName, resolveSchema } from "./schema-refs.mjs";
|
|
2
2
|
|
|
3
|
-
//#region
|
|
3
|
+
//#region ../../packages/core/src/openapi/postman/example-from-schema.ts
|
|
4
4
|
const STRING_FORMAT_EXAMPLES = {
|
|
5
5
|
email: "user@example.com",
|
|
6
6
|
"date-time": "2024-01-01T00:00:00.000Z",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"example-from-schema.mjs","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"example-from-schema.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/openapi/postman/example-from-schema.ts"],"sourcesContent":["import type { OpenApiSchema } from \"../types\";\nimport { isRecord, primaryType, refName, resolveSchema, type SchemaComponents } from \"./schema-refs\";\n\nconst STRING_FORMAT_EXAMPLES: Record<string, string> = {\n email: \"user@example.com\",\n \"date-time\": \"2024-01-01T00:00:00.000Z\",\n date: \"2024-01-01\",\n time: \"00:00:00\",\n uri: \"https://example.com\",\n url: \"https://example.com\",\n iri: \"https://example.com\",\n uuid: \"00000000-0000-4000-8000-000000000000\",\n hostname: \"example.com\",\n ipv4: \"127.0.0.1\",\n ipv6: \"::1\",\n};\n\nfunction numberExample(schema: OpenApiSchema): number {\n if (typeof schema.minimum === \"number\" && schema.minimum > 0) {\n return schema.minimum;\n }\n\n if (typeof schema.maximum === \"number\" && schema.maximum < 0) {\n return schema.maximum;\n }\n\n return 0;\n}\n\nfunction stringExample(schema: OpenApiSchema): string {\n const format = typeof schema.format === \"string\" ? schema.format : undefined;\n\n return (format !== undefined ? STRING_FORMAT_EXAMPLES[format] : undefined) ?? \"string\";\n}\n\nfunction isNullBranch(branch: unknown, components: SchemaComponents): boolean {\n return isRecord(branch) && primaryType(resolveSchema(branch, components)) === \"null\";\n}\n\nfunction mergeExamples(parts: unknown[]): unknown {\n const objects = parts.filter(isRecord);\n\n if (objects.length === parts.length) {\n return Object.assign({}, ...objects);\n }\n\n return parts[parts.length - 1] ?? null;\n}\n\n/**\n * `undefined` marks a `$ref` cycle: the caller omits the property, or yields an empty array.\n */\nfunction generate(schema: unknown, components: SchemaComponents, stack: readonly string[]): unknown {\n if (!isRecord(schema)) {\n return null;\n }\n\n const name = refName(schema);\n\n if (name !== undefined) {\n const target = components?.[name];\n\n if (stack.includes(name)) {\n return undefined;\n }\n\n return target ? generate(target, components, [...stack, name]) : null;\n }\n\n if (\"example\" in schema) {\n return schema.example;\n }\n\n if (\"const\" in schema) {\n return schema.const;\n }\n\n if (\"default\" in schema) {\n return schema.default;\n }\n\n if (Array.isArray(schema.enum) && schema.enum.length > 0) {\n return schema.enum[0];\n }\n\n if (Array.isArray(schema.examples) && schema.examples.length > 0) {\n return schema.examples[0];\n }\n\n for (const key of [\"oneOf\", \"anyOf\"] as const) {\n const branches = schema[key];\n\n if (Array.isArray(branches) && branches.length > 0) {\n const branch = branches.find((candidate) => !isNullBranch(candidate, components)) ?? branches[0];\n\n return generate(branch, components, stack);\n }\n }\n\n if (Array.isArray(schema.allOf) && schema.allOf.length > 0) {\n return mergeExamples(schema.allOf.map((part) => generate(part, components, stack)));\n }\n\n switch (primaryType(schema)) {\n case \"string\":\n return stringExample(schema);\n case \"number\":\n case \"integer\":\n return numberExample(schema);\n case \"boolean\":\n return false;\n case \"array\": {\n const item = generate(schema.items, components, stack);\n\n return item === undefined ? [] : [item];\n }\n case \"object\": {\n const result: Record<string, unknown> = {};\n const properties = isRecord(schema.properties) ? schema.properties : {};\n\n for (const [key, property] of Object.entries(properties)) {\n const value = generate(property, components, stack);\n\n if (value !== undefined) {\n result[key] = value;\n }\n }\n\n return result;\n }\n default:\n return null;\n }\n}\n\n/**\n * A deterministic example value for a JSON Schema.\n *\n * Explicit `example`, `const`, `default`, `enum[0]` and `examples[0]` win, in that order;\n * otherwise a type sample is produced (format-aware strings, `0`, `false`, one array item,\n * every object property). `$ref`s resolve against `components`; a cyclic reference is cut\n * (the property is omitted, an array of it is empty). A nullable union yields its non-null\n * branch. A schema with no usable type is `null`.\n */\nexport function exampleFromSchema(schema: OpenApiSchema, components?: SchemaComponents): unknown {\n const value = generate(schema, components, []);\n\n return value === undefined ? null : value;\n}\n"],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http-status-text.mjs","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"http-status-text.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/openapi/postman/http-status-text.ts"],"sourcesContent":["const STATUS_TEXT: Record<number, string> = {\n 200: \"OK\",\n 201: \"Created\",\n 202: \"Accepted\",\n 204: \"No Content\",\n 301: \"Moved Permanently\",\n 302: \"Found\",\n 304: \"Not Modified\",\n 400: \"Bad Request\",\n 401: \"Unauthorized\",\n 403: \"Forbidden\",\n 404: \"Not Found\",\n 405: \"Method Not Allowed\",\n 409: \"Conflict\",\n 410: \"Gone\",\n 422: \"Unprocessable Entity\",\n 429: \"Too Many Requests\",\n 500: \"Internal Server Error\",\n 503: \"Service Unavailable\",\n};\n\n/**\n * The HTTP reason phrase of a status code, or `fallback` for one that is not listed.\n */\nexport function httpStatusText(code: number, fallback: string): string {\n return STATUS_TEXT[code] ?? fallback;\n}\n"],"mappings":";AAAA,MAAM,cAAsC;CAC1C,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;CACL,KAAK;AACP;;;;AAKA,SAAgB,eAAe,MAAc,UAA0B;CACrE,OAAO,YAAY,SAAS;AAC9B"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { PostmanCollection, PostmanCollectionOptions } from "./postman-types.mjs";
|
|
2
2
|
import { OpenApiDocument } from "../types.mjs";
|
|
3
3
|
|
|
4
|
-
//#region
|
|
4
|
+
//#region ../../packages/core/src/openapi/postman/openapi-to-postman-collection.d.ts
|
|
5
5
|
/** `info.schema` of every collection this converter produces. */
|
|
6
6
|
declare const POSTMAN_COLLECTION_SCHEMA = "https://schema.getpostman.com/json/collection/v2.1.0/collection.json";
|
|
7
7
|
/** `{{baseUrl}}` when neither the options nor the document name a server. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi-to-postman-collection.d.mts","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"openapi-to-postman-collection.d.mts","names":[],"sources":["../../../../../../../../../packages/core/src/openapi/postman/openapi-to-postman-collection.ts"],"mappings":";;;;;cAgBa,yBAAA;AAAb;AAAA,cAGa,wBAAA;;;AAHyB;AAGtC;;;;AAAqC;AAqDrC;;iBAAgB,0BAAA,CACd,QAAA,EAAU,eAAA,EACV,OAAA,GAAS,wBAAA,GACR,iBAAA"}
|
|
@@ -4,7 +4,7 @@ import { buildSavedResponses } from "./build-saved-responses.mjs";
|
|
|
4
4
|
import { collectionBearerAuth, hasBearerScheme, resolveOperationAuth } from "./resolve-operation-auth.mjs";
|
|
5
5
|
import { uuidV5 } from "./uuid-v5.mjs";
|
|
6
6
|
|
|
7
|
-
//#region
|
|
7
|
+
//#region ../../packages/core/src/openapi/postman/openapi-to-postman-collection.ts
|
|
8
8
|
/** `info.schema` of every collection this converter produces. */
|
|
9
9
|
const POSTMAN_COLLECTION_SCHEMA = "https://schema.getpostman.com/json/collection/v2.1.0/collection.json";
|
|
10
10
|
/** `{{baseUrl}}` when neither the options nor the document name a server. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openapi-to-postman-collection.mjs","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"openapi-to-postman-collection.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/openapi/postman/openapi-to-postman-collection.ts"],"sourcesContent":["import type { OpenApiDocument, OpenApiOperation } from \"../types\";\nimport { buildRequestBody } from \"./build-request-body\";\nimport { buildHeaderParameters, buildRequestUrl } from \"./build-request-url\";\nimport { buildSavedResponses } from \"./build-saved-responses\";\nimport type {\n PostmanCollection,\n PostmanCollectionOptions,\n PostmanFolder,\n PostmanHeader,\n PostmanItem,\n PostmanRequestItem,\n} from \"./postman-types\";\nimport { collectionBearerAuth, hasBearerScheme, resolveOperationAuth } from \"./resolve-operation-auth\";\nimport { uuidV5 } from \"./uuid-v5\";\n\n/** `info.schema` of every collection this converter produces. */\nexport const POSTMAN_COLLECTION_SCHEMA = \"https://schema.getpostman.com/json/collection/v2.1.0/collection.json\";\n\n/** `{{baseUrl}}` when neither the options nor the document name a server. */\nexport const DEFAULT_POSTMAN_BASE_URL = \"http://localhost:3000\";\n\nconst OPERATION_METHODS = [\"get\", \"put\", \"post\", \"delete\", \"options\", \"head\", \"patch\", \"trace\"];\n\nfunction buildRequestItem(\n path: string,\n method: string,\n operation: OpenApiOperation,\n document: OpenApiDocument,\n): PostmanRequestItem {\n const components = document.components?.schemas;\n const parameters = operation.parameters ?? [];\n const body = buildRequestBody(operation.requestBody, components);\n const { auth, note } = resolveOperationAuth(operation, document.components);\n const description = [operation.description, note].filter((line): line is string => Boolean(line)).join(\"\\n\\n\");\n\n const header: PostmanHeader[] = [\n ...(body?.contentType ? [{ key: \"Content-Type\", value: body.contentType, type: \"text\" as const }] : []),\n ...buildHeaderParameters(parameters, components),\n ];\n\n const originalRequest = {\n method: method.toUpperCase(),\n header,\n ...(body ? { body: body.body } : {}),\n url: buildRequestUrl(path, parameters, components),\n };\n\n return {\n name: operation.summary ?? operation.operationId,\n request: {\n ...originalRequest,\n ...(auth ? { auth } : {}),\n ...(description ? { description } : {}),\n },\n response: buildSavedResponses(operation.responses, originalRequest, components),\n };\n}\n\nfunction normalizeBaseUrl(baseUrl: string): string {\n return baseUrl.replace(/\\/+$/, \"\");\n}\n\n/**\n * Convert an OpenAPI document into a Postman Collection v2.1.0 object.\n *\n * Pure and deterministic (the collection id is a UUIDv5 of the title), derived only from the\n * document so the collection can never disagree with the OpenAPI output. Each tag becomes a\n * folder in order of first appearance and untagged operations stay at the root; each\n * operation becomes a request with example bodies generated from its schemas and a saved\n * response per declared status. `{{baseUrl}}` and `{{token}}` are collection variables; a\n * bearer scheme becomes collection-level bearer auth and public operations opt out of it.\n */\nexport function openApiToPostmanCollection(\n document: OpenApiDocument,\n options: PostmanCollectionOptions = {},\n): PostmanCollection {\n const name = options.title ?? document.info.title;\n const baseUrl = normalizeBaseUrl(options.baseUrl ?? document.servers?.[0]?.url ?? DEFAULT_POSTMAN_BASE_URL);\n const root: PostmanItem[] = [];\n const folders = new Map<string, PostmanFolder>();\n\n for (const [path, pathItem] of Object.entries(document.paths)) {\n for (const [method, operation] of Object.entries(pathItem)) {\n if (!OPERATION_METHODS.includes(method)) {\n continue;\n }\n\n const item = buildRequestItem(path, method, operation, document);\n const tag = operation.tags?.[0];\n\n if (tag === undefined) {\n root.push(item);\n\n continue;\n }\n\n let folder = folders.get(tag);\n\n if (!folder) {\n folder = { name: tag, item: [] };\n folders.set(tag, folder);\n root.push(folder);\n }\n\n folder.item.push(item);\n }\n }\n\n return {\n info: {\n _postman_id: uuidV5(name),\n name,\n ...(document.info.description ? { description: document.info.description } : {}),\n schema: POSTMAN_COLLECTION_SCHEMA,\n },\n item: root,\n ...(hasBearerScheme(document.components) ? { auth: collectionBearerAuth() } : {}),\n variable: [\n { key: \"baseUrl\", value: baseUrl, type: \"string\" },\n { key: \"token\", value: \"\", type: \"string\" },\n ],\n };\n}\n"],"mappings":";;;;;;;;AAgBA,MAAa,4BAA4B;;AAGzC,MAAa,2BAA2B;AAExC,MAAM,oBAAoB;CAAC;CAAO;CAAO;CAAQ;CAAU;CAAW;CAAQ;CAAS;AAAO;AAE9F,SAAS,iBACP,MACA,QACA,WACA,UACoB;CACpB,MAAM,aAAa,SAAS,YAAY;CACxC,MAAM,aAAa,UAAU,cAAc,CAAC;CAC5C,MAAM,OAAO,iBAAiB,UAAU,aAAa,UAAU;CAC/D,MAAM,EAAE,MAAM,SAAS,qBAAqB,WAAW,SAAS,UAAU;CAC1E,MAAM,cAAc,CAAC,UAAU,aAAa,IAAI,CAAC,CAAC,QAAQ,SAAyB,QAAQ,IAAI,CAAC,CAAC,CAAC,KAAK,MAAM;CAE7G,MAAM,SAA0B,CAC9B,GAAI,MAAM,cAAc,CAAC;EAAE,KAAK;EAAgB,OAAO,KAAK;EAAa,MAAM;CAAgB,CAAC,IAAI,CAAC,GACrG,GAAG,sBAAsB,YAAY,UAAU,CACjD;CAEA,MAAM,kBAAkB;EACtB,QAAQ,OAAO,YAAY;EAC3B;EACA,GAAI,OAAO,EAAE,MAAM,KAAK,KAAK,IAAI,CAAC;EAClC,KAAK,gBAAgB,MAAM,YAAY,UAAU;CACnD;CAEA,OAAO;EACL,MAAM,UAAU,WAAW,UAAU;EACrC,SAAS;GACP,GAAG;GACH,GAAI,OAAO,EAAE,KAAK,IAAI,CAAC;GACvB,GAAI,cAAc,EAAE,YAAY,IAAI,CAAC;EACvC;EACA,UAAU,oBAAoB,UAAU,WAAW,iBAAiB,UAAU;CAChF;AACF;AAEA,SAAS,iBAAiB,SAAyB;CACjD,OAAO,QAAQ,QAAQ,QAAQ,EAAE;AACnC;;;;;;;;;;;AAYA,SAAgB,2BACd,UACA,UAAoC,CAAC,GAClB;CACnB,MAAM,OAAO,QAAQ,SAAS,SAAS,KAAK;CAC5C,MAAM,UAAU,iBAAiB,QAAQ,WAAW,SAAS,UAAU,EAAE,EAAE,8BAA+B;CAC1G,MAAM,OAAsB,CAAC;CAC7B,MAAM,0BAAU,IAAI,IAA2B;CAE/C,KAAK,MAAM,CAAC,MAAM,aAAa,OAAO,QAAQ,SAAS,KAAK,GAC1D,KAAK,MAAM,CAAC,QAAQ,cAAc,OAAO,QAAQ,QAAQ,GAAG;EAC1D,IAAI,CAAC,kBAAkB,SAAS,MAAM,GACpC;EAGF,MAAM,OAAO,iBAAiB,MAAM,QAAQ,WAAW,QAAQ;EAC/D,MAAM,MAAM,UAAU,OAAO;EAE7B,IAAI,QAAQ,QAAW;GACrB,KAAK,KAAK,IAAI;GAEd;EACF;EAEA,IAAI,SAAS,QAAQ,IAAI,GAAG;EAE5B,IAAI,CAAC,QAAQ;GACX,SAAS;IAAE,MAAM;IAAK,MAAM,CAAC;GAAE;GAC/B,QAAQ,IAAI,KAAK,MAAM;GACvB,KAAK,KAAK,MAAM;EAClB;EAEA,OAAO,KAAK,KAAK,IAAI;CACvB;CAGF,OAAO;EACL,MAAM;GACJ,aAAa,OAAO,IAAI;GACxB;GACA,GAAI,SAAS,KAAK,cAAc,EAAE,aAAa,SAAS,KAAK,YAAY,IAAI,CAAC;GAC9E,QAAQ;EACV;EACA,MAAM;EACN,GAAI,gBAAgB,SAAS,UAAU,IAAI,EAAE,MAAM,qBAAqB,EAAE,IAAI,CAAC;EAC/E,UAAU,CACR;GAAE,KAAK;GAAW,OAAO;GAAS,MAAM;EAAS,GACjD;GAAE,KAAK;GAAS,OAAO;GAAI,MAAM;EAAS,CAC5C;CACF;AACF"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region
|
|
1
|
+
//#region ../../packages/core/src/openapi/postman/postman-types.d.ts
|
|
2
2
|
/**
|
|
3
3
|
* The slice of the Postman Collection Format v2.1.0 the converter emits.
|
|
4
4
|
* Schema: https://schema.getpostman.com/json/collection/v2.1.0/collection.json
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postman-types.d.mts","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"postman-types.d.mts","names":[],"sources":["../../../../../../../../../packages/core/src/openapi/postman/postman-types.ts"],"mappings":";;AAKA;;;KAAY,eAAA;EACV,GAAA;EACA,KAAA;EACA,IAAA;EACA,WAAA;AAAA;AAAA,KAGU,gBAAA;EAAqB,GAAA;EAAa,KAAA;EAAe,IAAA;AAAA;AAAA,KAEjD,WAAA;EAAgB,IAAA;AAAA;EAAqB,IAAA;EAAgB,MAAA,EAAQ,gBAAgB;AAAA;AAAA,KAE7E,aAAA;EACV,GAAA;EACA,KAAA;EACA,IAAA;EACA,WAAA;EACA,QAAA;AAAA;AAAA,KAGU,iBAAA;EACV,GAAA;EACA,KAAA;EACA,WAAA;EACA,QAAA;AAAA;AAAA,KAGU,UAAA;EACV,GAAA;EACA,IAAA;EACA,IAAA;EACA,QAAA,GAAW,eAAA;EACX,KAAA,GAAQ,iBAAiB;AAAA;AAAA,KAGf,gBAAA;EACN,GAAA;EAAa,KAAA;EAAe,IAAA;EAAc,WAAA;AAAA;EAC1C,GAAA;EAAa,IAAA;EAAc,GAAA;EAAe,WAAA;AAAA;AAAA,KAEpC,WAAA;EACN,IAAA;EAAa,GAAA;EAAa,OAAA;IAAW,GAAA;MAAO,QAAA;IAAA;EAAA;AAAA;EAC5C,IAAA;EAAkB,QAAA,EAAU,gBAAgB;AAAA;EAC5C,IAAA;EAAoB,UAAA;IAAc,GAAA;IAAa,KAAA;IAAe,IAAA;EAAA;AAAA;AAAA,KAExD,sBAAA;EACV,MAAA;EACA,MAAA,EAAQ,aAAA;EACR,IAAA,GAAO,WAAA;EACP,GAAA,EAAK,UAAA;AAAA;AAAA,KAGK,cAAA,GAAiB,sBAAA;EAC3B,IAAA,GAAO,WAAW;EAClB,WAAA;AAAA;AAAA,KAGU,eAAA;EACV,IAAA;EACA,eAAA,EAAiB,sBAAA;EACjB,MAAA;EACA,IAAA;EACA,wBAAA;EACA,MAAA,EAAQ,aAAa;EACrB,IAAA;AAAA;AAAA,KAGU,kBAAA;EACV,IAAA;EACA,OAAA,EAAS,cAAA;EACT,QAAA,EAAU,eAAe;AAAA;AAAA,KAGf,aAAA;EACV,IAAA;EACA,IAAA,EAAM,WAAW;AAAA;AAAA,KAGP,WAAA,GAAc,aAAA,GAAgB,kBAAkB;AAAA,KAEhD,iBAAA;EACV,IAAA;IACE,WAAA;IACA,IAAA;IACA,WAAA;IACA,MAAA;EAAA;EAEF,IAAA,EAAM,WAAA;EACN,IAAA,GAAO,WAAA;EACP,QAAA,EAAU,eAAA;AAAA;AAAA,KAGA,wBAAA;EA3CK,iEA6Cf,KAAA,WA1CU;EA4CV,OAAO;AAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region
|
|
1
|
+
//#region ../../packages/core/src/openapi/postman/resolve-operation-auth.ts
|
|
2
2
|
/** The collection-level auth: a bearer token read from the `{{token}}` variable. */
|
|
3
3
|
function collectionBearerAuth() {
|
|
4
4
|
return {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"resolve-operation-auth.mjs","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"resolve-operation-auth.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/openapi/postman/resolve-operation-auth.ts"],"sourcesContent":["import type { OpenApiComponents, OpenApiOperation, OpenApiSecurityScheme } from \"../types\";\nimport type { PostmanAuth } from \"./postman-types\";\n\nexport type OperationAuth = {\n /** Set only when the operation must not inherit the collection auth. */\n auth?: PostmanAuth;\n /** Text appended to the request description. */\n note?: string;\n};\n\n/** The collection-level auth: a bearer token read from the `{{token}}` variable. */\nexport function collectionBearerAuth(): PostmanAuth {\n return { type: \"bearer\", bearer: [{ key: \"token\", value: \"{{token}}\", type: \"string\" }] };\n}\n\nfunction isBearer(scheme: OpenApiSecurityScheme | undefined): boolean {\n return scheme?.type === \"http\" && scheme.scheme.toLowerCase() === \"bearer\";\n}\n\n/**\n * Whether the document declares an HTTP bearer scheme, which is what the collection-level\n * auth stands for.\n */\nexport function hasBearerScheme(components: OpenApiComponents | undefined): boolean {\n return Object.values(components?.securitySchemes ?? {}).some(isBearer);\n}\n\n/**\n * How one operation relates to the collection-level bearer auth.\n *\n * - No `security` (a public route): `noauth`, so the token is not sent.\n * - A bearer requirement: inherits the collection auth.\n * - Cookie-only: `noauth` plus a note, because Postman keeps cookies per domain instead of\n * in collection auth.\n */\nexport function resolveOperationAuth(\n operation: OpenApiOperation,\n components: OpenApiComponents | undefined,\n): OperationAuth {\n const bearerDocument = hasBearerScheme(components);\n const schemes = components?.securitySchemes ?? {};\n const names = (operation.security ?? []).flatMap((requirement) => Object.keys(requirement));\n\n if (names.some((name) => isBearer(schemes[name]))) {\n return {};\n }\n\n const cookies = names.flatMap((name) => {\n const scheme = schemes[name];\n\n return scheme?.type === \"apiKey\" && scheme.in === \"cookie\" ? [scheme.name] : [];\n });\n\n const auth = bearerDocument ? { auth: { type: \"noauth\" } as const } : {};\n\n if (cookies.length === 0) {\n return auth;\n }\n\n const cookieList = cookies.map((cookie) => `\"${cookie}\"`).join(\", \");\n\n return {\n ...auth,\n note: `Authenticates with the ${cookieList} cookie. Postman keeps cookies per domain, so sign in against {{baseUrl}} first or add the cookie in the Cookies manager.`,\n };\n}\n"],"mappings":";;AAWA,SAAgB,uBAAoC;CAClD,OAAO;EAAE,MAAM;EAAU,QAAQ,CAAC;GAAE,KAAK;GAAS,OAAO;GAAa,MAAM;EAAS,CAAC;CAAE;AAC1F;AAEA,SAAS,SAAS,QAAoD;CACpE,OAAO,QAAQ,SAAS,UAAU,OAAO,OAAO,YAAY,MAAM;AACpE;;;;;AAMA,SAAgB,gBAAgB,YAAoD;CAClF,OAAO,OAAO,OAAO,YAAY,mBAAmB,CAAC,CAAC,CAAC,CAAC,KAAK,QAAQ;AACvE;;;;;;;;;AAUA,SAAgB,qBACd,WACA,YACe;CACf,MAAM,iBAAiB,gBAAgB,UAAU;CACjD,MAAM,UAAU,YAAY,mBAAmB,CAAC;CAChD,MAAM,SAAS,UAAU,YAAY,CAAC,EAAC,CAAE,SAAS,gBAAgB,OAAO,KAAK,WAAW,CAAC;CAE1F,IAAI,MAAM,MAAM,SAAS,SAAS,QAAQ,KAAK,CAAC,GAC9C,OAAO,CAAC;CAGV,MAAM,UAAU,MAAM,SAAS,SAAS;EACtC,MAAM,SAAS,QAAQ;EAEvB,OAAO,QAAQ,SAAS,YAAY,OAAO,OAAO,WAAW,CAAC,OAAO,IAAI,IAAI,CAAC;CAChF,CAAC;CAED,MAAM,OAAO,iBAAiB,EAAE,MAAM,EAAE,MAAM,SAAS,EAAW,IAAI,CAAC;CAEvE,IAAI,QAAQ,WAAW,GACrB,OAAO;CAGT,MAAM,aAAa,QAAQ,KAAK,WAAW,IAAI,OAAO,EAAE,CAAC,CAAC,KAAK,IAAI;CAEnE,OAAO;EACL,GAAG;EACH,MAAM,0BAA0B,WAAW;CAC7C;AACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { OpenApiSchema } from "../types.mjs";
|
|
2
2
|
|
|
3
|
-
//#region
|
|
3
|
+
//#region ../../packages/core/src/openapi/postman/schema-refs.d.ts
|
|
4
4
|
type SchemaComponents = Record<string, OpenApiSchema> | undefined;
|
|
5
5
|
//#endregion
|
|
6
6
|
export { SchemaComponents };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-refs.d.mts","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"schema-refs.d.mts","names":[],"sources":["../../../../../../../../../packages/core/src/openapi/postman/schema-refs.ts"],"mappings":";;;KAEY,gBAAA,GAAmB,MAAM,SAAS,aAAA"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
//#region
|
|
1
|
+
//#region ../../packages/core/src/openapi/postman/schema-refs.ts
|
|
2
2
|
const REF_PREFIX = "#/components/schemas/";
|
|
3
3
|
function isRecord(value) {
|
|
4
4
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-refs.mjs","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"schema-refs.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/openapi/postman/schema-refs.ts"],"sourcesContent":["import type { OpenApiSchema } from \"../types\";\n\nexport type SchemaComponents = Record<string, OpenApiSchema> | undefined;\n\nconst REF_PREFIX = \"#/components/schemas/\";\n\nexport function isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/**\n * Component name a `$ref` schema points at, or `undefined` for a schema that is not a local\n * component reference.\n */\nexport function refName(schema: OpenApiSchema): string | undefined {\n const ref = schema.$ref;\n\n return typeof ref === \"string\" && ref.startsWith(REF_PREFIX) ? ref.slice(REF_PREFIX.length) : undefined;\n}\n\n/**\n * Follow `$ref`s (with a hop limit, so a ref loop cannot hang) to the schema they name.\n * An unknown component resolves to `{}`.\n */\nexport function resolveSchema(schema: OpenApiSchema, components: SchemaComponents): OpenApiSchema {\n let current = schema;\n\n for (let hop = 0; hop < 32; hop++) {\n const name = refName(current);\n\n if (name === undefined) {\n return current;\n }\n\n current = components?.[name] ?? {};\n }\n\n return {};\n}\n\n/**\n * The effective JSON Schema type: `type`, or the first non-null member of a `type` array\n * (the 3.1 nullable form), or one inferred from `properties` / `items`.\n */\nexport function primaryType(schema: OpenApiSchema): string | undefined {\n const { type } = schema;\n\n if (typeof type === \"string\") {\n return type;\n }\n\n if (Array.isArray(type)) {\n const concrete = type.find((member): member is string => typeof member === \"string\" && member !== \"null\");\n\n return concrete ?? (type.includes(\"null\") ? \"null\" : undefined);\n }\n\n if (isRecord(schema.properties)) {\n return \"object\";\n }\n\n if (isRecord(schema.items)) {\n return \"array\";\n }\n\n return undefined;\n}\n"],"mappings":";AAIA,MAAM,aAAa;AAEnB,SAAgB,SAAS,OAAkD;CACzE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;;;;;AAMA,SAAgB,QAAQ,QAA2C;CACjE,MAAM,MAAM,OAAO;CAEnB,OAAO,OAAO,QAAQ,YAAY,IAAI,WAAW,UAAU,IAAI,IAAI,MAAM,EAAiB,IAAI;AAChG;;;;;AAMA,SAAgB,cAAc,QAAuB,YAA6C;CAChG,IAAI,UAAU;CAEd,KAAK,IAAI,MAAM,GAAG,MAAM,IAAI,OAAO;EACjC,MAAM,OAAO,QAAQ,OAAO;EAE5B,IAAI,SAAS,QACX,OAAO;EAGT,UAAU,aAAa,SAAS,CAAC;CACnC;CAEA,OAAO,CAAC;AACV;;;;;AAMA,SAAgB,YAAY,QAA2C;CACrE,MAAM,EAAE,SAAS;CAEjB,IAAI,OAAO,SAAS,UAClB,OAAO;CAGT,IAAI,MAAM,QAAQ,IAAI,GAGpB,OAFiB,KAAK,MAAM,WAA6B,OAAO,WAAW,YAAY,WAAW,MAEpF,MAAM,KAAK,SAAS,MAAM,IAAI,SAAS;CAGvD,IAAI,SAAS,OAAO,UAAU,GAC5B,OAAO;CAGT,IAAI,SAAS,OAAO,KAAK,GACvB,OAAO;AAIX"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
|
|
3
|
-
//#region
|
|
3
|
+
//#region ../../packages/core/src/openapi/postman/uuid-v5.ts
|
|
4
4
|
/**
|
|
5
5
|
* Namespace of every id the Postman converter derives. Fixed forever: changing it would
|
|
6
6
|
* change the `_postman_id` of every collection already imported.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"uuid-v5.mjs","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"uuid-v5.mjs","names":[],"sources":["../../../../../../../../../packages/core/src/openapi/postman/uuid-v5.ts"],"sourcesContent":["import { createHash } from \"node:crypto\";\n\n/**\n * Namespace of every id the Postman converter derives. Fixed forever: changing it would\n * change the `_postman_id` of every collection already imported.\n */\nexport const POSTMAN_ID_NAMESPACE = \"8f1c2b64-3d7a-4c59-9a0e-5b6d1e47c2a3\";\n\n/**\n * RFC 4122 version 5 (SHA-1, name based) UUID, so the same name always yields the same id.\n */\nexport function uuidV5(name: string, namespace: string = POSTMAN_ID_NAMESPACE): string {\n const digest = createHash(\"sha1\")\n .update(Buffer.from(namespace.replace(/-/g, \"\"), \"hex\"))\n .update(name, \"utf8\")\n .digest();\n const bytes = Buffer.from(digest.subarray(0, 16));\n\n bytes.writeUInt8((bytes.readUInt8(6) & 0x0f) | 0x50, 6);\n bytes.writeUInt8((bytes.readUInt8(8) & 0x3f) | 0x80, 8);\n\n const hex = bytes.toString(\"hex\");\n\n return [hex.slice(0, 8), hex.slice(8, 12), hex.slice(12, 16), hex.slice(16, 20), hex.slice(20, 32)].join(\"-\");\n}\n"],"mappings":";;;;;;;AAMA,MAAa,uBAAuB;;;;AAKpC,SAAgB,OAAO,MAAc,YAAoB,sBAA8B;CACrF,MAAM,SAAS,WAAW,MAAM,CAAC,CAC9B,OAAO,OAAO,KAAK,UAAU,QAAQ,MAAM,EAAE,GAAG,KAAK,CAAC,CAAC,CACvD,OAAO,MAAM,MAAM,CAAC,CACpB,OAAO;CACV,MAAM,QAAQ,OAAO,KAAK,OAAO,SAAS,GAAG,EAAE,CAAC;CAEhD,MAAM,WAAY,MAAM,UAAU,CAAC,IAAI,KAAQ,IAAM,CAAC;CACtD,MAAM,WAAY,MAAM,UAAU,CAAC,IAAI,KAAQ,KAAM,CAAC;CAEtD,MAAM,MAAM,MAAM,SAAS,KAAK;CAEhC,OAAO;EAAC,IAAI,MAAM,GAAG,CAAC;EAAG,IAAI,MAAM,GAAG,EAAE;EAAG,IAAI,MAAM,IAAI,EAAE;EAAG,IAAI,MAAM,IAAI,EAAE;EAAG,IAAI,MAAM,IAAI,EAAE;CAAC,CAAC,CAAC,KAAK,GAAG;AAC9G"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-schemas.mjs","names":[],"sources":["../../../../../../../core/src/openapi/request-schemas.ts"],"sourcesContent":["import type { RequestHandlerValidation } from \"../router/types\";\nimport { extractPathParamNames, isBodylessMethod, type OpenApiMethod } from \"./paths\";\nimport type {\n OpenApiParameter,\n OpenApiRequestBody,\n OpenApiSchema,\n WarningSink,\n} from \"./types\";\n\ntype ValidatingLocation = \"body\" | \"query\" | \"params\" | \"headers\";\n\ntype ObjectSchemaParts = {\n schema: OpenApiSchema;\n properties: Record<string, OpenApiSchema>;\n required: Set<string>;\n};\n\n/** A `validation.schema` property placed in a request location, with its JSON Schema. */\ntype LocatedProperty = {\n key: string;\n schema: OpenApiSchema;\n};\n\nexport type RequestParts = {\n parameters: OpenApiParameter[];\n requestBody?: OpenApiRequestBody;\n};\n\nexport type BuildRequestPartsInput = {\n method: OpenApiMethod;\n /** Warlock path, with `:param` segments. */\n path: string;\n validation: RequestHandlerValidation | undefined;\n warn: WarningSink;\n};\n\nconst VALIDATING_LOCATIONS: readonly string[] = [\"body\", \"query\", \"params\", \"headers\"];\n\n/**\n * Convert a Seal validator to a JSON Schema object (`draft-2020-12`, the OpenAPI 3.1 dialect)\n * and split it into properties and required keys. Never throws: a validator that cannot be\n * converted is reported through `warn` and yields `undefined`.\n */\nfunction readObjectSchema(\n validator: unknown,\n what: string,\n warn: WarningSink,\n): ObjectSchemaParts | undefined {\n const convert = (validator as { toJsonSchema?: unknown } | undefined)?.toJsonSchema;\n\n if (typeof convert !== \"function\") {\n return undefined;\n }\n\n let schema: unknown;\n\n try {\n schema = convert.call(validator, \"draft-2020-12\");\n } catch (error) {\n warn(\n `${what} could not be converted to JSON Schema and is not documented: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n\n return undefined;\n }\n\n const properties = (schema as { properties?: unknown } | undefined)?.properties;\n\n if (typeof schema !== \"object\" || schema === null || !isRecord(properties)) {\n warn(`${what} is not an object schema and is not documented.`);\n\n return undefined;\n }\n\n const required = (schema as { required?: unknown }).required;\n\n return {\n schema: schema as OpenApiSchema,\n properties: properties as Record<string, OpenApiSchema>,\n required: new Set(Array.isArray(required) ? required.filter((key) => typeof key === \"string\") : []),\n };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction describeParameter(\n name: string,\n location: OpenApiParameter[\"in\"],\n schema: OpenApiSchema,\n required: boolean,\n): OpenApiParameter {\n const parameter: OpenApiParameter = { name, in: location, required, schema };\n\n if (typeof schema.description === \"string\") {\n parameter.description = schema.description;\n }\n\n if (location === \"query\" && schema.type === \"object\") {\n parameter.style = \"deepObject\";\n parameter.explode = true;\n }\n\n return parameter;\n}\n\n/**\n * Where an unscoped or scoped `validating` puts the non-path properties.\n *\n * `validateAll` merges body and query (unset) or exactly the listed sources. The OpenAPI\n * placement follows: unset -> by method, a single source -> that source, `body` + `query`\n * -> body for verbs that carry one, query for the rest (and a warning, it is ambiguous).\n */\nfunction resolvePrimaryLocation(\n method: OpenApiMethod,\n validating: ValidatingLocation[],\n warn: WarningSink,\n): \"body\" | \"query\" | \"header\" | undefined {\n if (validating.length === 0) {\n return isBodylessMethod(method) ? \"query\" : \"body\";\n }\n\n const hasBody = validating.includes(\"body\");\n const hasQuery = validating.includes(\"query\");\n\n if (hasBody && hasQuery) {\n warn(\n `validating lists both \"body\" and \"query\"; the properties are documented as ${\n isBodylessMethod(method) ? \"query parameters\" : \"the request body\"\n }.`,\n );\n\n return isBodylessMethod(method) ? \"query\" : \"body\";\n }\n\n if (hasBody) {\n return \"body\";\n }\n\n if (hasQuery) {\n return \"query\";\n }\n\n if (validating.includes(\"headers\")) {\n return \"header\";\n }\n\n return undefined;\n}\n\n/**\n * Map a handler's `validation` to OpenAPI parameters and a request body.\n *\n * - `validation.params` -> one required path parameter per property.\n * - Path segments without a declared schema -> required string path parameters.\n * - `validation.schema` -> request body (verbs that carry one) or query parameters, placed by\n * `validating` exactly as `validateAll` reads the request; a property named like a path\n * segment is a path parameter whenever `params` is validated (unset counts).\n */\nexport function buildRequestParts(input: BuildRequestPartsInput): RequestParts {\n const { method, path, validation, warn } = input;\n const validating = (validation?.validating ?? []).filter((location): location is ValidatingLocation =>\n VALIDATING_LOCATIONS.includes(location),\n );\n const pathNames = extractPathParamNames(path);\n\n const paramsSchema = validation?.params\n ? readObjectSchema(validation.params, \"validation.params\", warn)\n : undefined;\n const mainSchema = validation?.schema\n ? readObjectSchema(validation.schema, \"validation.schema\", warn)\n : undefined;\n\n const pathSchemas = new Map<string, OpenApiSchema>();\n const primary = resolvePrimaryLocation(method, validating, warn);\n const takesPathNames = validating.length === 0 || validating.includes(\"params\");\n\n const located: Record<\"body\" | \"query\" | \"header\", LocatedProperty[]> = {\n body: [],\n query: [],\n header: [],\n };\n\n if (paramsSchema) {\n for (const name of pathNames) {\n if (paramsSchema.properties[name]) {\n pathSchemas.set(name, paramsSchema.properties[name]);\n }\n }\n }\n\n if (mainSchema) {\n for (const [key, propertySchema] of Object.entries(mainSchema.properties)) {\n if (takesPathNames && pathNames.includes(key)) {\n if (!pathSchemas.has(key)) {\n pathSchemas.set(key, propertySchema);\n }\n\n continue;\n }\n\n if (!primary) {\n warn(`validation.schema property \"${key}\" is not a path parameter and is not documented.`);\n\n continue;\n }\n\n located[primary].push({ key, schema: propertySchema });\n }\n }\n\n const requiredKeys = mainSchema?.required ?? new Set<string>();\n\n const parameters: OpenApiParameter[] = pathNames.map((name) =>\n describeParameter(name, \"path\", pathSchemas.get(name) ?? { type: \"string\" }, true),\n );\n\n for (const { key, schema } of located.query) {\n parameters.push(describeParameter(key, \"query\", schema, requiredKeys.has(key)));\n }\n\n for (const { key, schema } of located.header) {\n parameters.push(describeParameter(key.toLowerCase(), \"header\", schema, requiredKeys.has(key)));\n }\n\n if (located.body.length === 0 || !mainSchema) {\n return { parameters };\n }\n\n const properties: Record<string, OpenApiSchema> = {};\n\n for (const { key, schema } of located.body) {\n properties[key] = schema;\n }\n\n const required = located.body.filter(({ key }) => mainSchema.required.has(key)).map(({ key }) => key);\n const bodySchema: OpenApiSchema = { ...mainSchema.schema, properties };\n\n if (required.length > 0) {\n bodySchema.required = required;\n } else {\n delete bodySchema.required;\n }\n\n return {\n parameters,\n requestBody: {\n required: required.length > 0,\n content: { \"application/json\": { schema: bodySchema } },\n },\n };\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"request-schemas.mjs","names":[],"sources":["../../../../../../../../packages/core/src/openapi/request-schemas.ts"],"sourcesContent":["import type { RequestHandlerValidation } from \"../router/types\";\nimport { extractPathParamNames, isBodylessMethod, type OpenApiMethod } from \"./paths\";\nimport type {\n OpenApiParameter,\n OpenApiRequestBody,\n OpenApiSchema,\n WarningSink,\n} from \"./types\";\n\ntype ValidatingLocation = \"body\" | \"query\" | \"params\" | \"headers\";\n\ntype ObjectSchemaParts = {\n schema: OpenApiSchema;\n properties: Record<string, OpenApiSchema>;\n required: Set<string>;\n};\n\n/** A `validation.schema` property placed in a request location, with its JSON Schema. */\ntype LocatedProperty = {\n key: string;\n schema: OpenApiSchema;\n};\n\nexport type RequestParts = {\n parameters: OpenApiParameter[];\n requestBody?: OpenApiRequestBody;\n};\n\nexport type BuildRequestPartsInput = {\n method: OpenApiMethod;\n /** Warlock path, with `:param` segments. */\n path: string;\n validation: RequestHandlerValidation | undefined;\n warn: WarningSink;\n};\n\nconst VALIDATING_LOCATIONS: readonly string[] = [\"body\", \"query\", \"params\", \"headers\"];\n\n/**\n * Convert a Seal validator to a JSON Schema object (`draft-2020-12`, the OpenAPI 3.1 dialect)\n * and split it into properties and required keys. Never throws: a validator that cannot be\n * converted is reported through `warn` and yields `undefined`.\n */\nfunction readObjectSchema(\n validator: unknown,\n what: string,\n warn: WarningSink,\n): ObjectSchemaParts | undefined {\n const convert = (validator as { toJsonSchema?: unknown } | undefined)?.toJsonSchema;\n\n if (typeof convert !== \"function\") {\n return undefined;\n }\n\n let schema: unknown;\n\n try {\n schema = convert.call(validator, \"draft-2020-12\");\n } catch (error) {\n warn(\n `${what} could not be converted to JSON Schema and is not documented: ${\n error instanceof Error ? error.message : String(error)\n }`,\n );\n\n return undefined;\n }\n\n const properties = (schema as { properties?: unknown } | undefined)?.properties;\n\n if (typeof schema !== \"object\" || schema === null || !isRecord(properties)) {\n warn(`${what} is not an object schema and is not documented.`);\n\n return undefined;\n }\n\n const required = (schema as { required?: unknown }).required;\n\n return {\n schema: schema as OpenApiSchema,\n properties: properties as Record<string, OpenApiSchema>,\n required: new Set(Array.isArray(required) ? required.filter((key) => typeof key === \"string\") : []),\n };\n}\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction describeParameter(\n name: string,\n location: OpenApiParameter[\"in\"],\n schema: OpenApiSchema,\n required: boolean,\n): OpenApiParameter {\n const parameter: OpenApiParameter = { name, in: location, required, schema };\n\n if (typeof schema.description === \"string\") {\n parameter.description = schema.description;\n }\n\n if (location === \"query\" && schema.type === \"object\") {\n parameter.style = \"deepObject\";\n parameter.explode = true;\n }\n\n return parameter;\n}\n\n/**\n * Where an unscoped or scoped `validating` puts the non-path properties.\n *\n * `validateAll` merges body and query (unset) or exactly the listed sources. The OpenAPI\n * placement follows: unset -> by method, a single source -> that source, `body` + `query`\n * -> body for verbs that carry one, query for the rest (and a warning, it is ambiguous).\n */\nfunction resolvePrimaryLocation(\n method: OpenApiMethod,\n validating: ValidatingLocation[],\n warn: WarningSink,\n): \"body\" | \"query\" | \"header\" | undefined {\n if (validating.length === 0) {\n return isBodylessMethod(method) ? \"query\" : \"body\";\n }\n\n const hasBody = validating.includes(\"body\");\n const hasQuery = validating.includes(\"query\");\n\n if (hasBody && hasQuery) {\n warn(\n `validating lists both \"body\" and \"query\"; the properties are documented as ${\n isBodylessMethod(method) ? \"query parameters\" : \"the request body\"\n }.`,\n );\n\n return isBodylessMethod(method) ? \"query\" : \"body\";\n }\n\n if (hasBody) {\n return \"body\";\n }\n\n if (hasQuery) {\n return \"query\";\n }\n\n if (validating.includes(\"headers\")) {\n return \"header\";\n }\n\n return undefined;\n}\n\n/**\n * Map a handler's `validation` to OpenAPI parameters and a request body.\n *\n * - `validation.params` -> one required path parameter per property.\n * - Path segments without a declared schema -> required string path parameters.\n * - `validation.schema` -> request body (verbs that carry one) or query parameters, placed by\n * `validating` exactly as `validateAll` reads the request; a property named like a path\n * segment is a path parameter whenever `params` is validated (unset counts).\n */\nexport function buildRequestParts(input: BuildRequestPartsInput): RequestParts {\n const { method, path, validation, warn } = input;\n const validating = (validation?.validating ?? []).filter((location): location is ValidatingLocation =>\n VALIDATING_LOCATIONS.includes(location),\n );\n const pathNames = extractPathParamNames(path);\n\n const paramsSchema = validation?.params\n ? readObjectSchema(validation.params, \"validation.params\", warn)\n : undefined;\n const mainSchema = validation?.schema\n ? readObjectSchema(validation.schema, \"validation.schema\", warn)\n : undefined;\n\n const pathSchemas = new Map<string, OpenApiSchema>();\n const primary = resolvePrimaryLocation(method, validating, warn);\n const takesPathNames = validating.length === 0 || validating.includes(\"params\");\n\n const located: Record<\"body\" | \"query\" | \"header\", LocatedProperty[]> = {\n body: [],\n query: [],\n header: [],\n };\n\n if (paramsSchema) {\n for (const name of pathNames) {\n if (paramsSchema.properties[name]) {\n pathSchemas.set(name, paramsSchema.properties[name]);\n }\n }\n }\n\n if (mainSchema) {\n for (const [key, propertySchema] of Object.entries(mainSchema.properties)) {\n if (takesPathNames && pathNames.includes(key)) {\n if (!pathSchemas.has(key)) {\n pathSchemas.set(key, propertySchema);\n }\n\n continue;\n }\n\n if (!primary) {\n warn(`validation.schema property \"${key}\" is not a path parameter and is not documented.`);\n\n continue;\n }\n\n located[primary].push({ key, schema: propertySchema });\n }\n }\n\n const requiredKeys = mainSchema?.required ?? new Set<string>();\n\n const parameters: OpenApiParameter[] = pathNames.map((name) =>\n describeParameter(name, \"path\", pathSchemas.get(name) ?? { type: \"string\" }, true),\n );\n\n for (const { key, schema } of located.query) {\n parameters.push(describeParameter(key, \"query\", schema, requiredKeys.has(key)));\n }\n\n for (const { key, schema } of located.header) {\n parameters.push(describeParameter(key.toLowerCase(), \"header\", schema, requiredKeys.has(key)));\n }\n\n if (located.body.length === 0 || !mainSchema) {\n return { parameters };\n }\n\n const properties: Record<string, OpenApiSchema> = {};\n\n for (const { key, schema } of located.body) {\n properties[key] = schema;\n }\n\n const required = located.body.filter(({ key }) => mainSchema.required.has(key)).map(({ key }) => key);\n const bodySchema: OpenApiSchema = { ...mainSchema.schema, properties };\n\n if (required.length > 0) {\n bodySchema.required = required;\n } else {\n delete bodySchema.required;\n }\n\n return {\n parameters,\n requestBody: {\n required: required.length > 0,\n content: { \"application/json\": { schema: bodySchema } },\n },\n };\n}\n"],"mappings":"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"}
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
import { isNullableResource } from "../resource/nullable-resource.mjs";
|
|
2
|
+
|
|
3
|
+
//#region ../../packages/core/src/openapi/response-schemas.ts
|
|
2
4
|
const STATUS_TEXT = {
|
|
3
5
|
"200": "Successful response",
|
|
4
6
|
"201": "Created",
|
|
@@ -30,11 +32,12 @@ function describeStatus(status) {
|
|
|
30
32
|
}
|
|
31
33
|
/**
|
|
32
34
|
* JSON Schema of one response body value: a cast string, a resource class, `[Resource]`
|
|
33
|
-
* (array of it) or a nested plain object of those. Anything else (a resolver function, a
|
|
35
|
+
* (array of it), `nullable(Resource)` (the resource or null) or a nested plain object of those. Anything else (a resolver function, a
|
|
34
36
|
* builder) is `{}` plus a warning.
|
|
35
37
|
*/
|
|
36
38
|
function bodyValueSchema(value, path, registry, warn) {
|
|
37
39
|
if (typeof value === "string") return registry.cast(value, path, warn);
|
|
40
|
+
if (isNullableResource(value)) return { oneOf: [bodyValueSchema(value.resource, path, registry, warn), { type: "null" }] };
|
|
38
41
|
if (typeof value === "function") {
|
|
39
42
|
if (registry.isResourceClass(value)) return registry.resourceRef(value);
|
|
40
43
|
warn(`${path}: a function that is not a resource class has no static shape and is documented as {}.`);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"response-schemas.mjs","names":[],"sources":["
|
|
1
|
+
{"version":3,"file":"response-schemas.mjs","names":[],"sources":["../../../../../../../../packages/core/src/openapi/response-schemas.ts"],"sourcesContent":["import { isNullableResource } from \"../resource/nullable-resource\";\nimport type { SchemaRegistry } from \"./schema-registry\";\nimport type { OpenApiResponse, OpenApiSchema, WarningSink } from \"./types\";\n\nconst STATUS_TEXT: Record<string, string> = {\n \"200\": \"Successful response\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"204\": \"No content\",\n \"301\": \"Moved permanently\",\n \"302\": \"Found\",\n \"304\": \"Not modified\",\n \"400\": \"Bad request\",\n \"401\": \"Unauthorized\",\n \"403\": \"Forbidden\",\n \"404\": \"Not found\",\n \"405\": \"Method not allowed\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"422\": \"Validation failed\",\n \"429\": \"Too many requests\",\n \"500\": \"Internal server error\",\n \"503\": \"Service unavailable\",\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\n/**\n * Human description of a status code for the required `description` of a response.\n */\nexport function describeStatus(status: string): string {\n return STATUS_TEXT[status] ?? `Status ${status}`;\n}\n\n/**\n * JSON Schema of one response body value: a cast string, a resource class, `[Resource]`\n * (array of it), `nullable(Resource)` (the resource or null) or a nested plain object of those. Anything else (a resolver function, a\n * builder) is `{}` plus a warning.\n */\nfunction bodyValueSchema(value: unknown, path: string, registry: SchemaRegistry, warn: WarningSink): OpenApiSchema {\n if (typeof value === \"string\") {\n return registry.cast(value, path, warn);\n }\n\n if (isNullableResource(value)) {\n return { oneOf: [bodyValueSchema(value.resource, path, registry, warn), { type: \"null\" }] };\n }\n\n if (typeof value === \"function\") {\n if (registry.isResourceClass(value)) {\n return registry.resourceRef(value);\n }\n\n warn(`${path}: a function that is not a resource class has no static shape and is documented as {}.`);\n\n return {};\n }\n\n if (Array.isArray(value)) {\n return { type: \"array\", items: bodyValueSchema(value[0], `${path}[]`, registry, warn) };\n }\n\n if (isRecord(value)) {\n return objectSchema(value, path, registry, warn);\n }\n\n warn(`${path}: unsupported response value is documented as {}.`);\n\n return {};\n}\n\nfunction objectSchema(\n body: Record<string, unknown>,\n path: string,\n registry: SchemaRegistry,\n warn: WarningSink,\n): OpenApiSchema {\n const properties: Record<string, OpenApiSchema> = {};\n\n for (const [key, member] of Object.entries(body)) {\n properties[key] = bodyValueSchema(member, `${path}.${key}`, registry, warn);\n }\n\n return { type: \"object\", properties, required: Object.keys(properties) };\n}\n\n/**\n * Map a handler's `responseSchema` to OpenAPI responses, one per declared status code.\n *\n * `routeLabel` prefixes warnings (for example `POST /login`). A status without a usable\n * `body` becomes a description-only response.\n */\nexport function buildDeclaredResponses(\n responseSchema: unknown,\n registry: SchemaRegistry,\n warn: WarningSink,\n): Record<string, OpenApiResponse> {\n const responses: Record<string, OpenApiResponse> = {};\n\n if (!isRecord(responseSchema)) {\n return responses;\n }\n\n for (const [status, entry] of Object.entries(responseSchema)) {\n const body = isRecord(entry) ? entry.body : undefined;\n\n if (!isRecord(body)) {\n responses[status] = { description: describeStatus(status) };\n\n continue;\n }\n\n responses[status] = {\n description: describeStatus(status),\n content: {\n \"application/json\": { schema: objectSchema(body, `response ${status}`, registry, warn) },\n },\n };\n }\n\n return responses;\n}\n"],"mappings":";;;AAIA,MAAM,cAAsC;CAC1C,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;CACP,OAAO;AACT;AAEA,SAAS,SAAS,OAAkD;CAClE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;;;;AAKA,SAAgB,eAAe,QAAwB;CACrD,OAAO,YAAY,WAAW,UAAU;AAC1C;;;;;;AAOA,SAAS,gBAAgB,OAAgB,MAAc,UAA0B,MAAkC;CACjH,IAAI,OAAO,UAAU,UACnB,OAAO,SAAS,KAAK,OAAO,MAAM,IAAI;CAGxC,IAAI,mBAAmB,KAAK,GAC1B,OAAO,EAAE,OAAO,CAAC,gBAAgB,MAAM,UAAU,MAAM,UAAU,IAAI,GAAG,EAAE,MAAM,OAAO,CAAC,EAAE;CAG5F,IAAI,OAAO,UAAU,YAAY;EAC/B,IAAI,SAAS,gBAAgB,KAAK,GAChC,OAAO,SAAS,YAAY,KAAK;EAGnC,KAAK,GAAG,KAAK,uFAAuF;EAEpG,OAAO,CAAC;CACV;CAEA,IAAI,MAAM,QAAQ,KAAK,GACrB,OAAO;EAAE,MAAM;EAAS,OAAO,gBAAgB,MAAM,IAAI,GAAG,KAAK,KAAK,UAAU,IAAI;CAAE;CAGxF,IAAI,SAAS,KAAK,GAChB,OAAO,aAAa,OAAO,MAAM,UAAU,IAAI;CAGjD,KAAK,GAAG,KAAK,kDAAkD;CAE/D,OAAO,CAAC;AACV;AAEA,SAAS,aACP,MACA,MACA,UACA,MACe;CACf,MAAM,aAA4C,CAAC;CAEnD,KAAK,MAAM,CAAC,KAAK,WAAW,OAAO,QAAQ,IAAI,GAC7C,WAAW,OAAO,gBAAgB,QAAQ,GAAG,KAAK,GAAG,OAAO,UAAU,IAAI;CAG5E,OAAO;EAAE,MAAM;EAAU;EAAY,UAAU,OAAO,KAAK,UAAU;CAAE;AACzE;;;;;;;AAQA,SAAgB,uBACd,gBACA,UACA,MACiC;CACjC,MAAM,YAA6C,CAAC;CAEpD,IAAI,CAAC,SAAS,cAAc,GAC1B,OAAO;CAGT,KAAK,MAAM,CAAC,QAAQ,UAAU,OAAO,QAAQ,cAAc,GAAG;EAC5D,MAAM,OAAO,SAAS,KAAK,IAAI,MAAM,OAAO;EAE5C,IAAI,CAAC,SAAS,IAAI,GAAG;GACnB,UAAU,UAAU,EAAE,aAAa,eAAe,MAAM,EAAE;GAE1D;EACF;EAEA,UAAU,UAAU;GAClB,aAAa,eAAe,MAAM;GAClC,SAAS,EACP,oBAAoB,EAAE,QAAQ,aAAa,MAAM,YAAY,UAAU,UAAU,IAAI,EAAE,EACzF;EACF;CACF;CAEA,OAAO;AACT"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import { isNullableResource } from "../resource/nullable-resource.mjs";
|
|
1
2
|
import { castToJsonSchema } from "./cast-schema.mjs";
|
|
2
3
|
import { isLazy } from "@mongez/reinforcements";
|
|
3
4
|
|
|
4
|
-
//#region
|
|
5
|
+
//#region ../../packages/core/src/openapi/schema-registry.ts
|
|
5
6
|
function isRecord(value) {
|
|
6
7
|
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
7
8
|
}
|
|
@@ -101,7 +102,12 @@ var SchemaRegistry = class {
|
|
|
101
102
|
items: context.ownerRef
|
|
102
103
|
};
|
|
103
104
|
if (typeof config === "string") return this.cast(config, context.path);
|
|
105
|
+
if (isNullableResource(config)) return { oneOf: [this.fieldSchema(config.resource, context), { type: "null" }] };
|
|
104
106
|
if (isLazy(config)) return this.lazyFieldSchema(config, context);
|
|
107
|
+
if (Array.isArray(config) && config.length === 1) return {
|
|
108
|
+
type: "array",
|
|
109
|
+
items: this.fieldSchema(config[0], context)
|
|
110
|
+
};
|
|
105
111
|
if (Array.isArray(config) && config.length === 2 && typeof config[1] === "string") return this.cast(config[1], context.path);
|
|
106
112
|
if (typeof config === "function") {
|
|
107
113
|
if (this.isResourceClass(config)) return this.resourceRef(config);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-registry.mjs","names":[],"sources":["../../../../../../../core/src/openapi/schema-registry.ts"],"sourcesContent":["import { isLazy } from \"@mongez/reinforcements\";\nimport { castToJsonSchema } from \"./cast-schema\";\nimport type { OpenApiSchema, WarningSink } from \"./types\";\n\ntype ResourceFieldContext = {\n /** `$ref` schema of the resource whose field is being mapped, the target of `\"self\"`. */\n ownerRef: OpenApiSchema;\n /** Display name used in warnings, for example `UserResource.avatar`. */\n path: string;\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction sanitizeName(name: string): string {\n return name.replace(/[^A-Za-z0-9._-]/g, \"\");\n}\n\n/**\n * Owns `components.schemas`: names resource classes (by identity), builds their schemas once\n * and hands out `$ref`s, so nested, lazy and `\"self\"` references recurse without unrolling.\n */\nexport class SchemaRegistry {\n public readonly schemas: Record<string, OpenApiSchema> = {};\n\n private readonly resourceNames = new Map<unknown, string>();\n private readonly sharedNames = new Map<string, string>();\n private fallbackCounter = 0;\n\n public constructor(\n private readonly resolveName: ((resource: unknown) => string | undefined) | undefined,\n private readonly warn: WarningSink,\n ) {}\n\n /**\n * Register a fixed schema (an error shape shared by many operations) under a stable key.\n * Returns its `$ref`; the component name gets a numeric suffix only if a resource took it.\n */\n public shared(key: string, schema: OpenApiSchema): OpenApiSchema {\n let name = this.sharedNames.get(key);\n\n if (!name) {\n name = this.claim(key);\n this.sharedNames.set(key, name);\n this.schemas[name] = schema;\n }\n\n return { $ref: `#/components/schemas/${name}` };\n }\n\n /**\n * `$ref` to a resource class, building its component on first use.\n */\n public resourceRef(resource: unknown): OpenApiSchema {\n const existing = this.resourceNames.get(resource);\n\n if (existing) {\n return { $ref: `#/components/schemas/${existing}` };\n }\n\n const name = this.claim(this.nameFor(resource));\n const ref = { $ref: `#/components/schemas/${name}` };\n\n // Named before its fields are mapped, so a cycle resolves to this same ref.\n this.resourceNames.set(resource, name);\n this.schemas[name] = {};\n this.schemas[name] = this.buildResourceSchema(resource, name, ref);\n\n return ref;\n }\n\n /**\n * Schema of a cast string, or `{}` and a warning for an unknown cast.\n */\n public cast(cast: string, path: string, warn: WarningSink = this.warn): OpenApiSchema {\n const schema = castToJsonSchema(cast);\n\n if (!schema) {\n warn(`${path}: unknown cast \"${cast}\" is documented as {}.`);\n\n return {};\n }\n\n return schema;\n }\n\n /**\n * True when the function looks like a resource class: it carries a static `schema` object.\n */\n public isResourceClass(value: unknown): boolean {\n return typeof value === \"function\" && isRecord(Reflect.get(value, \"schema\"));\n }\n\n private nameFor(resource: unknown): string {\n const resolved = sanitizeName(this.resolveName?.(resource) ?? \"\");\n\n if (resolved && resolved !== \"default\") {\n return resolved;\n }\n\n const className = typeof resource === \"function\" ? sanitizeName(resource.name) : \"\";\n\n if (className && className !== \"default\") {\n return className;\n }\n\n return `Resource${++this.fallbackCounter}`;\n }\n\n private claim(base: string): string {\n if (!(base in this.schemas)) {\n return base;\n }\n\n let suffix = 2;\n\n while (`${base}${suffix}` in this.schemas) {\n suffix++;\n }\n\n return `${base}${suffix}`;\n }\n\n private buildResourceSchema(resource: unknown, name: string, ref: OpenApiSchema): OpenApiSchema {\n const schema = Reflect.get(resource as object, \"schema\");\n\n if (!isRecord(schema) || Object.keys(schema).length === 0) {\n this.warn(`Resource \"${name}\" declares no static schema and is documented as {}.`);\n\n return {};\n }\n\n const properties: Record<string, OpenApiSchema> = {};\n\n for (const [key, config] of Object.entries(schema)) {\n properties[key] = this.fieldSchema(config, { ownerRef: ref, path: `${name}.${key}` });\n }\n\n return { type: \"object\", properties, required: Object.keys(properties) };\n }\n\n private fieldSchema(config: unknown, context: ResourceFieldContext): OpenApiSchema {\n if (config === \"self\") {\n return context.ownerRef;\n }\n\n if (config === \"self[]\") {\n return { type: \"array\", items: context.ownerRef };\n }\n\n if (typeof config === \"string\") {\n return this.cast(config, context.path);\n }\n\n if (isLazy(config)) {\n return this.lazyFieldSchema(config, context);\n }\n\n if (Array.isArray(config) && config.length === 2 && typeof config[1] === \"string\") {\n return this.cast(config[1], context.path);\n }\n\n if (typeof config === \"function\") {\n if (this.isResourceClass(config)) {\n return this.resourceRef(config);\n }\n\n this.warn(`${context.path}: a resolver function has no static shape and is documented as {}.`);\n\n return {};\n }\n\n if (isRecord(config) && config.__type === \"arrayOf\" && isRecord(config.schema)) {\n const properties: Record<string, OpenApiSchema> = {};\n\n for (const [key, item] of Object.entries(config.schema)) {\n properties[key] = this.fieldSchema(item, { ...context, path: `${context.path}.${key}` });\n }\n\n return {\n type: \"array\",\n items: { type: \"object\", properties, required: Object.keys(properties) },\n };\n }\n\n this.warn(\n `${context.path}: a field builder has no static shape and is documented as {}. Declare it with a cast string to document it.`,\n );\n\n return {};\n }\n\n private lazyFieldSchema(lazy: { resolve(): unknown }, context: ResourceFieldContext): OpenApiSchema {\n let resolved: unknown;\n\n try {\n resolved = lazy.resolve();\n } catch (error) {\n this.warn(\n `${context.path}: a lazy resource reference could not be resolved (${\n error instanceof Error ? error.message : String(error)\n }) and is documented as {}.`,\n );\n\n return {};\n }\n\n return this.fieldSchema(resolved, context);\n }\n}\n"],"mappings":";;;;AAWA,SAAS,SAAS,OAAkD;CAClE,OAAO,OAAO,UAAU,YAAY,UAAU,QAAQ,CAAC,MAAM,QAAQ,KAAK;AAC5E;AAEA,SAAS,aAAa,MAAsB;CAC1C,OAAO,KAAK,QAAQ,oBAAoB,EAAE;AAC5C;;;;;AAMA,IAAa,iBAAb,MAA4B;CAO1B,AAAO,YACL,AAAiB,aACjB,AAAiB,MACjB;EAFiB;EACA;iBARsC,CAAC;uCAEzB,IAAI,IAAqB;qCAC3B,IAAI,IAAoB;yBAC7B;CAKvB;;;;;CAMH,AAAO,OAAO,KAAa,QAAsC;EAC/D,IAAI,OAAO,KAAK,YAAY,IAAI,GAAG;EAEnC,IAAI,CAAC,MAAM;GACT,OAAO,KAAK,MAAM,GAAG;GACrB,KAAK,YAAY,IAAI,KAAK,IAAI;GAC9B,KAAK,QAAQ,QAAQ;EACvB;EAEA,OAAO,EAAE,MAAM,wBAAwB,OAAO;CAChD;;;;CAKA,AAAO,YAAY,UAAkC;EACnD,MAAM,WAAW,KAAK,cAAc,IAAI,QAAQ;EAEhD,IAAI,UACF,OAAO,EAAE,MAAM,wBAAwB,WAAW;EAGpD,MAAM,OAAO,KAAK,MAAM,KAAK,QAAQ,QAAQ,CAAC;EAC9C,MAAM,MAAM,EAAE,MAAM,wBAAwB,OAAO;EAGnD,KAAK,cAAc,IAAI,UAAU,IAAI;EACrC,KAAK,QAAQ,QAAQ,CAAC;EACtB,KAAK,QAAQ,QAAQ,KAAK,oBAAoB,UAAU,MAAM,GAAG;EAEjE,OAAO;CACT;;;;CAKA,AAAO,KAAK,MAAc,MAAc,OAAoB,KAAK,MAAqB;EACpF,MAAM,SAAS,iBAAiB,IAAI;EAEpC,IAAI,CAAC,QAAQ;GACX,KAAK,GAAG,KAAK,kBAAkB,KAAK,uBAAuB;GAE3D,OAAO,CAAC;EACV;EAEA,OAAO;CACT;;;;CAKA,AAAO,gBAAgB,OAAyB;EAC9C,OAAO,OAAO,UAAU,cAAc,SAAS,QAAQ,IAAI,OAAO,QAAQ,CAAC;CAC7E;CAEA,AAAQ,QAAQ,UAA2B;EACzC,MAAM,WAAW,aAAa,KAAK,cAAc,QAAQ,KAAK,EAAE;EAEhE,IAAI,YAAY,aAAa,WAC3B,OAAO;EAGT,MAAM,YAAY,OAAO,aAAa,aAAa,aAAa,SAAS,IAAI,IAAI;EAEjF,IAAI,aAAa,cAAc,WAC7B,OAAO;EAGT,OAAO,WAAW,EAAE,KAAK;CAC3B;CAEA,AAAQ,MAAM,MAAsB;EAClC,IAAI,EAAE,QAAQ,KAAK,UACjB,OAAO;EAGT,IAAI,SAAS;EAEb,OAAO,GAAG,OAAO,YAAY,KAAK,SAChC;EAGF,OAAO,GAAG,OAAO;CACnB;CAEA,AAAQ,oBAAoB,UAAmB,MAAc,KAAmC;EAC9F,MAAM,SAAS,QAAQ,IAAI,UAAoB,QAAQ;EAEvD,IAAI,CAAC,SAAS,MAAM,KAAK,OAAO,KAAK,MAAM,CAAC,CAAC,WAAW,GAAG;GACzD,KAAK,KAAK,aAAa,KAAK,qDAAqD;GAEjF,OAAO,CAAC;EACV;EAEA,MAAM,aAA4C,CAAC;EAEnD,KAAK,MAAM,CAAC,KAAK,WAAW,OAAO,QAAQ,MAAM,GAC/C,WAAW,OAAO,KAAK,YAAY,QAAQ;GAAE,UAAU;GAAK,MAAM,GAAG,KAAK,GAAG;EAAM,CAAC;EAGtF,OAAO;GAAE,MAAM;GAAU;GAAY,UAAU,OAAO,KAAK,UAAU;EAAE;CACzE;CAEA,AAAQ,YAAY,QAAiB,SAA8C;EACjF,IAAI,WAAW,QACb,OAAO,QAAQ;EAGjB,IAAI,WAAW,UACb,OAAO;GAAE,MAAM;GAAS,OAAO,QAAQ;EAAS;EAGlD,IAAI,OAAO,WAAW,UACpB,OAAO,KAAK,KAAK,QAAQ,QAAQ,IAAI;EAGvC,IAAI,OAAO,MAAM,GACf,OAAO,KAAK,gBAAgB,QAAQ,OAAO;EAG7C,IAAI,MAAM,QAAQ,MAAM,KAAK,OAAO,WAAW,KAAK,OAAO,OAAO,OAAO,UACvE,OAAO,KAAK,KAAK,OAAO,IAAI,QAAQ,IAAI;EAG1C,IAAI,OAAO,WAAW,YAAY;GAChC,IAAI,KAAK,gBAAgB,MAAM,GAC7B,OAAO,KAAK,YAAY,MAAM;GAGhC,KAAK,KAAK,GAAG,QAAQ,KAAK,mEAAmE;GAE7F,OAAO,CAAC;EACV;EAEA,IAAI,SAAS,MAAM,KAAK,OAAO,WAAW,aAAa,SAAS,OAAO,MAAM,GAAG;GAC9E,MAAM,aAA4C,CAAC;GAEnD,KAAK,MAAM,CAAC,KAAK,SAAS,OAAO,QAAQ,OAAO,MAAM,GACpD,WAAW,OAAO,KAAK,YAAY,MAAM;IAAE,GAAG;IAAS,MAAM,GAAG,QAAQ,KAAK,GAAG;GAAM,CAAC;GAGzF,OAAO;IACL,MAAM;IACN,OAAO;KAAE,MAAM;KAAU;KAAY,UAAU,OAAO,KAAK,UAAU;IAAE;GACzE;EACF;EAEA,KAAK,KACH,GAAG,QAAQ,KAAK,6GAClB;EAEA,OAAO,CAAC;CACV;CAEA,AAAQ,gBAAgB,MAA8B,SAA8C;EAClG,IAAI;EAEJ,IAAI;GACF,WAAW,KAAK,QAAQ;EAC1B,SAAS,OAAO;GACd,KAAK,KACH,GAAG,QAAQ,KAAK,qDACd,iBAAiB,QAAQ,MAAM,UAAU,OAAO,KAAK,EACtD,2BACH;GAEA,OAAO,CAAC;EACV;EAEA,OAAO,KAAK,YAAY,UAAU,OAAO;CAC3C;AACF"}
|
|
1
|
+
{"version":3,"file":"schema-registry.mjs","names":[],"sources":["../../../../../../../../packages/core/src/openapi/schema-registry.ts"],"sourcesContent":["import { isLazy } from \"@mongez/reinforcements\";\nimport { isNullableResource } from \"../resource/nullable-resource\";\nimport { castToJsonSchema } from \"./cast-schema\";\nimport type { OpenApiSchema, WarningSink } from \"./types\";\n\ntype ResourceFieldContext = {\n /** `$ref` schema of the resource whose field is being mapped, the target of `\"self\"`. */\n ownerRef: OpenApiSchema;\n /** Display name used in warnings, for example `UserResource.avatar`. */\n path: string;\n};\n\nfunction isRecord(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction sanitizeName(name: string): string {\n return name.replace(/[^A-Za-z0-9._-]/g, \"\");\n}\n\n/**\n * Owns `components.schemas`: names resource classes (by identity), builds their schemas once\n * and hands out `$ref`s, so nested, lazy and `\"self\"` references recurse without unrolling.\n */\nexport class SchemaRegistry {\n public readonly schemas: Record<string, OpenApiSchema> = {};\n\n private readonly resourceNames = new Map<unknown, string>();\n private readonly sharedNames = new Map<string, string>();\n private fallbackCounter = 0;\n\n public constructor(\n private readonly resolveName: ((resource: unknown) => string | undefined) | undefined,\n private readonly warn: WarningSink,\n ) {}\n\n /**\n * Register a fixed schema (an error shape shared by many operations) under a stable key.\n * Returns its `$ref`; the component name gets a numeric suffix only if a resource took it.\n */\n public shared(key: string, schema: OpenApiSchema): OpenApiSchema {\n let name = this.sharedNames.get(key);\n\n if (!name) {\n name = this.claim(key);\n this.sharedNames.set(key, name);\n this.schemas[name] = schema;\n }\n\n return { $ref: `#/components/schemas/${name}` };\n }\n\n /**\n * `$ref` to a resource class, building its component on first use.\n */\n public resourceRef(resource: unknown): OpenApiSchema {\n const existing = this.resourceNames.get(resource);\n\n if (existing) {\n return { $ref: `#/components/schemas/${existing}` };\n }\n\n const name = this.claim(this.nameFor(resource));\n const ref = { $ref: `#/components/schemas/${name}` };\n\n // Named before its fields are mapped, so a cycle resolves to this same ref.\n this.resourceNames.set(resource, name);\n this.schemas[name] = {};\n this.schemas[name] = this.buildResourceSchema(resource, name, ref);\n\n return ref;\n }\n\n /**\n * Schema of a cast string, or `{}` and a warning for an unknown cast.\n */\n public cast(cast: string, path: string, warn: WarningSink = this.warn): OpenApiSchema {\n const schema = castToJsonSchema(cast);\n\n if (!schema) {\n warn(`${path}: unknown cast \"${cast}\" is documented as {}.`);\n\n return {};\n }\n\n return schema;\n }\n\n /**\n * True when the function looks like a resource class: it carries a static `schema` object.\n */\n public isResourceClass(value: unknown): boolean {\n return typeof value === \"function\" && isRecord(Reflect.get(value, \"schema\"));\n }\n\n private nameFor(resource: unknown): string {\n const resolved = sanitizeName(this.resolveName?.(resource) ?? \"\");\n\n if (resolved && resolved !== \"default\") {\n return resolved;\n }\n\n const className = typeof resource === \"function\" ? sanitizeName(resource.name) : \"\";\n\n if (className && className !== \"default\") {\n return className;\n }\n\n return `Resource${++this.fallbackCounter}`;\n }\n\n private claim(base: string): string {\n if (!(base in this.schemas)) {\n return base;\n }\n\n let suffix = 2;\n\n while (`${base}${suffix}` in this.schemas) {\n suffix++;\n }\n\n return `${base}${suffix}`;\n }\n\n private buildResourceSchema(resource: unknown, name: string, ref: OpenApiSchema): OpenApiSchema {\n const schema = Reflect.get(resource as object, \"schema\");\n\n if (!isRecord(schema) || Object.keys(schema).length === 0) {\n this.warn(`Resource \"${name}\" declares no static schema and is documented as {}.`);\n\n return {};\n }\n\n const properties: Record<string, OpenApiSchema> = {};\n\n for (const [key, config] of Object.entries(schema)) {\n properties[key] = this.fieldSchema(config, { ownerRef: ref, path: `${name}.${key}` });\n }\n\n return { type: \"object\", properties, required: Object.keys(properties) };\n }\n\n private fieldSchema(config: unknown, context: ResourceFieldContext): OpenApiSchema {\n if (config === \"self\") {\n return context.ownerRef;\n }\n\n if (config === \"self[]\") {\n return { type: \"array\", items: context.ownerRef };\n }\n\n if (typeof config === \"string\") {\n return this.cast(config, context.path);\n }\n\n if (isNullableResource(config)) {\n return { oneOf: [this.fieldSchema(config.resource, context), { type: \"null\" }] };\n }\n\n if (isLazy(config)) {\n return this.lazyFieldSchema(config, context);\n }\n\n if (Array.isArray(config) && config.length === 1) {\n return { type: \"array\", items: this.fieldSchema(config[0], context) };\n }\n\n if (Array.isArray(config) && config.length === 2 && typeof config[1] === \"string\") {\n return this.cast(config[1], context.path);\n }\n\n if (typeof config === \"function\") {\n if (this.isResourceClass(config)) {\n return this.resourceRef(config);\n }\n\n this.warn(`${context.path}: a resolver function has no static shape and is documented as {}.`);\n\n return {};\n }\n\n if (isRecord(config) && config.__type === \"arrayOf\" && isRecord(config.schema)) {\n const properties: Record<string, OpenApiSchema> = {};\n\n for (const [key, item] of Object.entries(config.schema)) {\n properties[key] = this.fieldSchema(item, { ...context, path: `${context.path}.${key}` });\n }\n\n return {\n type: \"array\",\n items: { type: \"object\", properties, required: Object.keys(properties) },\n };\n }\n\n this.warn(\n `${context.path}: a field builder has no static shape and is documented as {}. Declare it with a cast string to document it.`,\n );\n\n return {};\n }\n\n private lazyFieldSchema(lazy: { resolve(): unknown }, context: ResourceFieldContext): OpenApiSchema {\n let resolved: unknown;\n\n try {\n resolved = lazy.resolve();\n } catch (error) {\n this.warn(\n `${context.path}: a lazy resource reference could not be resolved (${\n error instanceof Error ? error.message : String(error)\n }) and is documented as {}.`,\n );\n\n return {};\n }\n\n return this.fieldSchema(resolved, context);\n }\n}\n"],"mappings":"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"}
|
package/esm/openapi/security.mjs
CHANGED