adorn-api 1.0.3 → 1.0.5
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/README.md +766 -51
- package/dist/adapter/express/bootstrap.d.ts +24 -0
- package/dist/adapter/express/bootstrap.d.ts.map +1 -0
- package/dist/adapter/express/index.d.ts +41 -0
- package/dist/adapter/express/index.d.ts.map +1 -0
- package/dist/adapter/express/merge.d.ts +28 -0
- package/dist/adapter/express/merge.d.ts.map +1 -0
- package/dist/cli.cjs +1571 -0
- package/dist/cli.cjs.map +1 -0
- package/dist/cli.d.ts +1 -0
- package/dist/cli.js +1552 -2
- package/dist/cli.js.map +1 -1
- package/dist/compiler/analyze/scanControllers.d.ts +35 -0
- package/dist/compiler/analyze/scanControllers.d.ts.map +1 -0
- package/dist/compiler/cache/isStale.d.ts +20 -0
- package/dist/compiler/cache/isStale.d.ts.map +1 -0
- package/dist/compiler/cache/loadArtifacts.d.ts +113 -0
- package/dist/compiler/cache/loadArtifacts.d.ts.map +1 -0
- package/dist/compiler/cache/schema.d.ts +18 -0
- package/dist/compiler/cache/schema.d.ts.map +1 -0
- package/dist/compiler/cache/writeCache.d.ts +8 -0
- package/dist/compiler/cache/writeCache.d.ts.map +1 -0
- package/dist/compiler/manifest/emit.d.ts +7 -0
- package/dist/compiler/manifest/emit.d.ts.map +1 -0
- package/dist/compiler/manifest/format.d.ts +76 -0
- package/dist/compiler/manifest/format.d.ts.map +1 -0
- package/dist/compiler/runner/createProgram.d.ts +8 -0
- package/dist/compiler/runner/createProgram.d.ts.map +1 -0
- package/dist/compiler/schema/extractAnnotations.d.ts +10 -0
- package/dist/compiler/schema/extractAnnotations.d.ts.map +1 -0
- package/dist/compiler/schema/openapi.d.ts +19 -0
- package/dist/compiler/schema/openapi.d.ts.map +1 -0
- package/dist/compiler/schema/typeToJsonSchema.d.ts +49 -0
- package/dist/compiler/schema/typeToJsonSchema.d.ts.map +1 -0
- package/dist/compiler/validation/emitPrecompiledValidators.d.ts +46 -0
- package/dist/compiler/validation/emitPrecompiledValidators.d.ts.map +1 -0
- package/dist/decorators/Auth.d.ts +5 -0
- package/dist/decorators/Auth.d.ts.map +1 -0
- package/dist/decorators/Controller.d.ts +2 -0
- package/dist/decorators/Controller.d.ts.map +1 -0
- package/dist/decorators/Public.d.ts +2 -0
- package/dist/decorators/Public.d.ts.map +1 -0
- package/dist/decorators/Use.d.ts +5 -0
- package/dist/decorators/Use.d.ts.map +1 -0
- package/dist/decorators/index.d.ts +5 -6
- package/dist/decorators/index.d.ts.map +1 -1
- package/dist/decorators/methods.d.ts +5 -145
- package/dist/decorators/methods.d.ts.map +1 -1
- package/dist/express.cjs +775 -0
- package/dist/express.cjs.map +1 -0
- package/dist/express.d.ts +6 -1
- package/dist/express.d.ts.map +1 -1
- package/dist/express.js +738 -1
- package/dist/express.js.map +1 -1
- package/dist/http.d.ts +29 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/index.cjs +573 -0
- package/dist/index.cjs.map +1 -0
- package/dist/index.d.ts +12 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +490 -26
- package/dist/index.js.map +1 -1
- package/dist/metal/index.cjs +219 -0
- package/dist/metal/index.cjs.map +1 -0
- package/dist/metal/index.d.ts +6 -0
- package/dist/metal/index.d.ts.map +1 -0
- package/dist/metal/index.js +188 -0
- package/dist/metal/index.js.map +1 -0
- package/dist/metal/readMetalBag.d.ts +33 -0
- package/dist/metal/readMetalBag.d.ts.map +1 -0
- package/dist/metal/registerMetalEntities.d.ts +6 -0
- package/dist/metal/registerMetalEntities.d.ts.map +1 -0
- package/dist/metal/schemaFromEntity.d.ts +11 -0
- package/dist/metal/schemaFromEntity.d.ts.map +1 -0
- package/dist/metal/symbolMetadata.d.ts +2 -0
- package/dist/metal/symbolMetadata.d.ts.map +1 -0
- package/dist/runtime/auth/runtime.d.ts +34 -0
- package/dist/runtime/auth/runtime.d.ts.map +1 -0
- package/dist/runtime/metadata/bucket.d.ts +3 -0
- package/dist/runtime/metadata/bucket.d.ts.map +1 -0
- package/dist/runtime/metadata/key.d.ts +2 -0
- package/dist/runtime/metadata/key.d.ts.map +1 -0
- package/dist/runtime/metadata/read.d.ts +3 -0
- package/dist/runtime/metadata/read.d.ts.map +1 -0
- package/dist/runtime/metadata/types.d.ts +21 -0
- package/dist/runtime/metadata/types.d.ts.map +1 -0
- package/dist/runtime/polyfill.d.ts +2 -0
- package/dist/runtime/polyfill.d.ts.map +1 -0
- package/dist/runtime/upload.d.ts +7 -0
- package/dist/runtime/upload.d.ts.map +1 -0
- package/dist/runtime/validation/ajv.d.ts +20 -0
- package/dist/runtime/validation/ajv.d.ts.map +1 -0
- package/dist/runtime/validation/index.d.ts +2 -0
- package/dist/runtime/validation/index.d.ts.map +1 -0
- package/dist/schema/decorators.d.ts +37 -0
- package/dist/schema/decorators.d.ts.map +1 -0
- package/dist/schema/index.cjs +214 -0
- package/dist/schema/index.cjs.map +1 -0
- package/dist/schema/index.d.ts +2 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +163 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/scripts/adorn-example.cjs +148 -0
- package/dist/scripts/adorn-example.cjs.map +1 -0
- package/dist/utils/operationId.d.ts +2 -0
- package/dist/utils/operationId.d.ts.map +1 -0
- package/dist/utils/path.d.ts +2 -0
- package/dist/utils/path.d.ts.map +1 -0
- package/package.json +92 -57
- package/dist/adapters/express/createApp.d.ts +0 -158
- package/dist/adapters/express/createApp.d.ts.map +0 -1
- package/dist/adapters/express/createApp.js +0 -141
- package/dist/adapters/express/createApp.js.map +0 -1
- package/dist/adapters/express/index.d.ts +0 -7
- package/dist/adapters/express/index.d.ts.map +0 -1
- package/dist/adapters/express/index.js +0 -7
- package/dist/adapters/express/index.js.map +0 -1
- package/dist/adapters/express/middleware/errorHandler.d.ts +0 -194
- package/dist/adapters/express/middleware/errorHandler.d.ts.map +0 -1
- package/dist/adapters/express/middleware/errorHandler.js +0 -167
- package/dist/adapters/express/middleware/errorHandler.js.map +0 -1
- package/dist/adapters/express/middleware/requestContext.d.ts +0 -2
- package/dist/adapters/express/middleware/requestContext.d.ts.map +0 -1
- package/dist/adapters/express/middleware/requestContext.js +0 -3
- package/dist/adapters/express/middleware/requestContext.js.map +0 -1
- package/dist/adapters/express/router.d.ts +0 -10
- package/dist/adapters/express/router.d.ts.map +0 -1
- package/dist/adapters/express/router.js +0 -105
- package/dist/adapters/express/router.js.map +0 -1
- package/dist/adapters/express/swagger/index.d.ts +0 -2
- package/dist/adapters/express/swagger/index.d.ts.map +0 -1
- package/dist/adapters/express/swagger/index.js +0 -2
- package/dist/adapters/express/swagger/index.js.map +0 -1
- package/dist/adapters/express/swagger/serve.d.ts +0 -12
- package/dist/adapters/express/swagger/serve.d.ts.map +0 -1
- package/dist/adapters/express/swagger/serve.js +0 -72
- package/dist/adapters/express/swagger/serve.js.map +0 -1
- package/dist/adapters/express/transport/request.d.ts +0 -4
- package/dist/adapters/express/transport/request.d.ts.map +0 -1
- package/dist/adapters/express/transport/request.js +0 -12
- package/dist/adapters/express/transport/request.js.map +0 -1
- package/dist/adapters/express/transport/response.d.ts +0 -5
- package/dist/adapters/express/transport/response.d.ts.map +0 -1
- package/dist/adapters/express/transport/response.js +0 -36
- package/dist/adapters/express/transport/response.js.map +0 -1
- package/dist/cli/commands/dev.d.ts +0 -2
- package/dist/cli/commands/dev.d.ts.map +0 -1
- package/dist/cli/commands/dev.js +0 -3
- package/dist/cli/commands/dev.js.map +0 -1
- package/dist/cli/commands/gen.d.ts +0 -2
- package/dist/cli/commands/gen.d.ts.map +0 -1
- package/dist/cli/commands/gen.js +0 -3
- package/dist/cli/commands/gen.js.map +0 -1
- package/dist/cli/main.d.ts +0 -2
- package/dist/cli/main.d.ts.map +0 -1
- package/dist/cli/main.js +0 -3
- package/dist/cli/main.js.map +0 -1
- package/dist/compiler/config/defaults.d.ts +0 -2
- package/dist/compiler/config/defaults.d.ts.map +0 -1
- package/dist/compiler/config/defaults.js +0 -3
- package/dist/compiler/config/defaults.js.map +0 -1
- package/dist/compiler/config/loadConfig.d.ts +0 -2
- package/dist/compiler/config/loadConfig.d.ts.map +0 -1
- package/dist/compiler/config/loadConfig.js +0 -3
- package/dist/compiler/config/loadConfig.js.map +0 -1
- package/dist/compiler/diagnostics/errors.d.ts +0 -2
- package/dist/compiler/diagnostics/errors.d.ts.map +0 -1
- package/dist/compiler/diagnostics/errors.js +0 -3
- package/dist/compiler/diagnostics/errors.js.map +0 -1
- package/dist/compiler/emit/openapi.d.ts +0 -2
- package/dist/compiler/emit/openapi.d.ts.map +0 -1
- package/dist/compiler/emit/openapi.js +0 -3
- package/dist/compiler/emit/openapi.js.map +0 -1
- package/dist/compiler/emit/routes.d.ts +0 -2
- package/dist/compiler/emit/routes.d.ts.map +0 -1
- package/dist/compiler/emit/routes.js +0 -3
- package/dist/compiler/emit/routes.js.map +0 -1
- package/dist/compiler/program/loadTsProgram.d.ts +0 -2
- package/dist/compiler/program/loadTsProgram.d.ts.map +0 -1
- package/dist/compiler/program/loadTsProgram.js +0 -3
- package/dist/compiler/program/loadTsProgram.js.map +0 -1
- package/dist/compiler/scan/actions.d.ts +0 -2
- package/dist/compiler/scan/actions.d.ts.map +0 -1
- package/dist/compiler/scan/actions.js +0 -3
- package/dist/compiler/scan/actions.js.map +0 -1
- package/dist/compiler/scan/controllers.d.ts +0 -2
- package/dist/compiler/scan/controllers.d.ts.map +0 -1
- package/dist/compiler/scan/controllers.js +0 -3
- package/dist/compiler/scan/controllers.js.map +0 -1
- package/dist/compiler/scan/types.d.ts +0 -2
- package/dist/compiler/scan/types.d.ts.map +0 -1
- package/dist/compiler/scan/types.js +0 -3
- package/dist/compiler/scan/types.js.map +0 -1
- package/dist/contracts/context.d.ts +0 -10
- package/dist/contracts/context.d.ts.map +0 -1
- package/dist/contracts/context.js +0 -2
- package/dist/contracts/context.js.map +0 -1
- package/dist/contracts/errors.d.ts +0 -22
- package/dist/contracts/errors.d.ts.map +0 -1
- package/dist/contracts/errors.js +0 -2
- package/dist/contracts/errors.js.map +0 -1
- package/dist/contracts/http.d.ts +0 -2
- package/dist/contracts/http.d.ts.map +0 -1
- package/dist/contracts/http.js +0 -3
- package/dist/contracts/http.js.map +0 -1
- package/dist/contracts/middleware.d.ts +0 -2
- package/dist/contracts/middleware.d.ts.map +0 -1
- package/dist/contracts/middleware.js +0 -3
- package/dist/contracts/middleware.js.map +0 -1
- package/dist/contracts/openapi-v3.d.ts +0 -538
- package/dist/contracts/openapi-v3.d.ts.map +0 -1
- package/dist/contracts/openapi-v3.js +0 -2
- package/dist/contracts/openapi-v3.js.map +0 -1
- package/dist/contracts/openapi.d.ts +0 -2
- package/dist/contracts/openapi.d.ts.map +0 -1
- package/dist/contracts/openapi.js +0 -2
- package/dist/contracts/openapi.js.map +0 -1
- package/dist/contracts/reply.d.ts +0 -119
- package/dist/contracts/reply.d.ts.map +0 -1
- package/dist/contracts/reply.js +0 -43
- package/dist/contracts/reply.js.map +0 -1
- package/dist/contracts/response-types.d.ts +0 -40
- package/dist/contracts/response-types.d.ts.map +0 -1
- package/dist/contracts/response-types.js +0 -2
- package/dist/contracts/response-types.js.map +0 -1
- package/dist/contracts/responses.d.ts +0 -98
- package/dist/contracts/responses.d.ts.map +0 -1
- package/dist/contracts/responses.js +0 -2
- package/dist/contracts/responses.js.map +0 -1
- package/dist/contracts/route-options.d.ts +0 -155
- package/dist/contracts/route-options.d.ts.map +0 -1
- package/dist/contracts/route-options.js +0 -2
- package/dist/contracts/route-options.js.map +0 -1
- package/dist/contracts/route-typing.d.ts +0 -25
- package/dist/contracts/route-typing.d.ts.map +0 -1
- package/dist/contracts/route-typing.js +0 -2
- package/dist/contracts/route-typing.js.map +0 -1
- package/dist/contracts/validator.d.ts +0 -146
- package/dist/contracts/validator.d.ts.map +0 -1
- package/dist/contracts/validator.js +0 -2
- package/dist/contracts/validator.js.map +0 -1
- package/dist/core/binding/binder.d.ts +0 -74
- package/dist/core/binding/binder.d.ts.map +0 -1
- package/dist/core/binding/binder.js +0 -161
- package/dist/core/binding/binder.js.map +0 -1
- package/dist/core/binding/coerce/arrays.d.ts +0 -7
- package/dist/core/binding/coerce/arrays.d.ts.map +0 -1
- package/dist/core/binding/coerce/arrays.js +0 -28
- package/dist/core/binding/coerce/arrays.js.map +0 -1
- package/dist/core/binding/coerce/csv.d.ts +0 -2
- package/dist/core/binding/coerce/csv.d.ts.map +0 -1
- package/dist/core/binding/coerce/csv.js +0 -7
- package/dist/core/binding/coerce/csv.js.map +0 -1
- package/dist/core/binding/coerce/objects.d.ts +0 -2
- package/dist/core/binding/coerce/objects.d.ts.map +0 -1
- package/dist/core/binding/coerce/objects.js +0 -3
- package/dist/core/binding/coerce/objects.js.map +0 -1
- package/dist/core/binding/coerce/primitives.d.ts +0 -70
- package/dist/core/binding/coerce/primitives.d.ts.map +0 -1
- package/dist/core/binding/coerce/primitives.js +0 -88
- package/dist/core/binding/coerce/primitives.js.map +0 -1
- package/dist/core/binding/index.d.ts +0 -2
- package/dist/core/binding/index.d.ts.map +0 -1
- package/dist/core/binding/index.js +0 -2
- package/dist/core/binding/index.js.map +0 -1
- package/dist/core/binding/rules/inferFromHttpMethod.d.ts +0 -6
- package/dist/core/binding/rules/inferFromHttpMethod.d.ts.map +0 -1
- package/dist/core/binding/rules/inferFromHttpMethod.js +0 -11
- package/dist/core/binding/rules/inferFromHttpMethod.js.map +0 -1
- package/dist/core/binding/rules/inferFromPath.d.ts +0 -2
- package/dist/core/binding/rules/inferFromPath.d.ts.map +0 -1
- package/dist/core/binding/rules/inferFromPath.js +0 -9
- package/dist/core/binding/rules/inferFromPath.js.map +0 -1
- package/dist/core/binding/rules/wrappers.d.ts +0 -2
- package/dist/core/binding/rules/wrappers.d.ts.map +0 -1
- package/dist/core/binding/rules/wrappers.js +0 -3
- package/dist/core/binding/rules/wrappers.js.map +0 -1
- package/dist/core/errors/http-error.d.ts +0 -63
- package/dist/core/errors/http-error.d.ts.map +0 -1
- package/dist/core/errors/http-error.js +0 -71
- package/dist/core/errors/http-error.js.map +0 -1
- package/dist/core/errors/index.d.ts +0 -4
- package/dist/core/errors/index.d.ts.map +0 -1
- package/dist/core/errors/index.js +0 -4
- package/dist/core/errors/index.js.map +0 -1
- package/dist/core/errors/problem.d.ts +0 -3
- package/dist/core/errors/problem.d.ts.map +0 -1
- package/dist/core/errors/problem.js +0 -33
- package/dist/core/errors/problem.js.map +0 -1
- package/dist/core/errors/validation-error.d.ts +0 -73
- package/dist/core/errors/validation-error.d.ts.map +0 -1
- package/dist/core/errors/validation-error.js +0 -82
- package/dist/core/errors/validation-error.js.map +0 -1
- package/dist/core/openapi/buildOpenApi.d.ts +0 -79
- package/dist/core/openapi/buildOpenApi.d.ts.map +0 -1
- package/dist/core/openapi/buildOpenApi.js +0 -196
- package/dist/core/openapi/buildOpenApi.js.map +0 -1
- package/dist/core/openapi/index.d.ts +0 -2
- package/dist/core/openapi/index.d.ts.map +0 -1
- package/dist/core/openapi/index.js +0 -2
- package/dist/core/openapi/index.js.map +0 -1
- package/dist/core/openapi/schema/formats.d.ts +0 -2
- package/dist/core/openapi/schema/formats.d.ts.map +0 -1
- package/dist/core/openapi/schema/formats.js +0 -3
- package/dist/core/openapi/schema/formats.js.map +0 -1
- package/dist/core/openapi/schema/registry.d.ts +0 -9
- package/dist/core/openapi/schema/registry.d.ts.map +0 -1
- package/dist/core/openapi/schema/registry.js +0 -21
- package/dist/core/openapi/schema/registry.js.map +0 -1
- package/dist/core/openapi/schema/schemaModel.d.ts +0 -2
- package/dist/core/openapi/schema/schemaModel.d.ts.map +0 -1
- package/dist/core/openapi/schema/schemaModel.js +0 -3
- package/dist/core/openapi/schema/schemaModel.js.map +0 -1
- package/dist/core/openapi/schema/schemaRegistry.d.ts +0 -2
- package/dist/core/openapi/schema/schemaRegistry.d.ts.map +0 -1
- package/dist/core/openapi/schema/schemaRegistry.js +0 -3
- package/dist/core/openapi/schema/schemaRegistry.js.map +0 -1
- package/dist/core/openapi/schema/toOpenApi.d.ts +0 -4
- package/dist/core/openapi/schema/toOpenApi.d.ts.map +0 -1
- package/dist/core/openapi/schema/toOpenApi.js +0 -82
- package/dist/core/openapi/schema/toOpenApi.js.map +0 -1
- package/dist/core/pipeline/compose.d.ts +0 -2
- package/dist/core/pipeline/compose.d.ts.map +0 -1
- package/dist/core/pipeline/compose.js +0 -3
- package/dist/core/pipeline/compose.js.map +0 -1
- package/dist/core/pipeline/errorMap.d.ts +0 -2
- package/dist/core/pipeline/errorMap.d.ts.map +0 -1
- package/dist/core/pipeline/errorMap.js +0 -3
- package/dist/core/pipeline/errorMap.js.map +0 -1
- package/dist/core/pipeline/invoke.d.ts +0 -2
- package/dist/core/pipeline/invoke.d.ts.map +0 -1
- package/dist/core/pipeline/invoke.js +0 -3
- package/dist/core/pipeline/invoke.js.map +0 -1
- package/dist/core/pipeline/result.d.ts +0 -2
- package/dist/core/pipeline/result.d.ts.map +0 -1
- package/dist/core/pipeline/result.js +0 -3
- package/dist/core/pipeline/result.js.map +0 -1
- package/dist/core/registry/buildRegistry.d.ts +0 -3
- package/dist/core/registry/buildRegistry.d.ts.map +0 -1
- package/dist/core/registry/buildRegistry.js +0 -105
- package/dist/core/registry/buildRegistry.js.map +0 -1
- package/dist/core/registry/conflicts.d.ts +0 -6
- package/dist/core/registry/conflicts.d.ts.map +0 -1
- package/dist/core/registry/conflicts.js +0 -21
- package/dist/core/registry/conflicts.js.map +0 -1
- package/dist/core/registry/index.d.ts +0 -5
- package/dist/core/registry/index.d.ts.map +0 -1
- package/dist/core/registry/index.js +0 -5
- package/dist/core/registry/index.js.map +0 -1
- package/dist/core/registry/normalize.d.ts +0 -3
- package/dist/core/registry/normalize.d.ts.map +0 -1
- package/dist/core/registry/normalize.js +0 -24
- package/dist/core/registry/normalize.js.map +0 -1
- package/dist/core/registry/types.d.ts +0 -225
- package/dist/core/registry/types.d.ts.map +0 -1
- package/dist/core/registry/types.js +0 -2
- package/dist/core/registry/types.js.map +0 -1
- package/dist/core/reply/index.d.ts +0 -3
- package/dist/core/reply/index.d.ts.map +0 -1
- package/dist/core/reply/index.js +0 -3
- package/dist/core/reply/index.js.map +0 -1
- package/dist/core/reply/reply.d.ts +0 -102
- package/dist/core/reply/reply.d.ts.map +0 -1
- package/dist/core/reply/reply.js +0 -105
- package/dist/core/reply/reply.js.map +0 -1
- package/dist/core/reply/typed.d.ts +0 -161
- package/dist/core/reply/typed.d.ts.map +0 -1
- package/dist/core/reply/typed.js +0 -154
- package/dist/core/reply/typed.js.map +0 -1
- package/dist/core/responses/helpers.d.ts +0 -10
- package/dist/core/responses/helpers.d.ts.map +0 -1
- package/dist/core/responses/helpers.js +0 -8
- package/dist/core/responses/helpers.js.map +0 -1
- package/dist/core/responses/index.d.ts +0 -4
- package/dist/core/responses/index.d.ts.map +0 -1
- package/dist/core/responses/index.js +0 -4
- package/dist/core/responses/index.js.map +0 -1
- package/dist/core/responses/normalize.d.ts +0 -3
- package/dist/core/responses/normalize.d.ts.map +0 -1
- package/dist/core/responses/normalize.js +0 -33
- package/dist/core/responses/normalize.js.map +0 -1
- package/dist/core/responses/pickStatus.d.ts +0 -3
- package/dist/core/responses/pickStatus.d.ts.map +0 -1
- package/dist/core/responses/pickStatus.js +0 -27
- package/dist/core/responses/pickStatus.js.map +0 -1
- package/dist/core/route/defineRoute.d.ts +0 -74
- package/dist/core/route/defineRoute.d.ts.map +0 -1
- package/dist/core/route/defineRoute.js +0 -59
- package/dist/core/route/defineRoute.js.map +0 -1
- package/dist/core/route/index.d.ts +0 -2
- package/dist/core/route/index.d.ts.map +0 -1
- package/dist/core/route/index.js +0 -2
- package/dist/core/route/index.js.map +0 -1
- package/dist/core/serialization/json.d.ts +0 -2
- package/dist/core/serialization/json.d.ts.map +0 -1
- package/dist/core/serialization/json.js +0 -3
- package/dist/core/serialization/json.js.map +0 -1
- package/dist/core/typing/path-params.d.ts +0 -2
- package/dist/core/typing/path-params.d.ts.map +0 -1
- package/dist/core/typing/path-params.js +0 -2
- package/dist/core/typing/path-params.js.map +0 -1
- package/dist/decorators/binding.d.ts +0 -9
- package/dist/decorators/binding.d.ts.map +0 -1
- package/dist/decorators/binding.js +0 -18
- package/dist/decorators/binding.js.map +0 -1
- package/dist/decorators/controller.d.ts +0 -6
- package/dist/decorators/controller.d.ts.map +0 -1
- package/dist/decorators/controller.js +0 -26
- package/dist/decorators/controller.js.map +0 -1
- package/dist/decorators/db.d.ts +0 -2
- package/dist/decorators/db.d.ts.map +0 -1
- package/dist/decorators/db.js +0 -3
- package/dist/decorators/db.js.map +0 -1
- package/dist/decorators/docs.d.ts +0 -8
- package/dist/decorators/docs.d.ts.map +0 -1
- package/dist/decorators/docs.js +0 -46
- package/dist/decorators/docs.js.map +0 -1
- package/dist/decorators/index.js +0 -7
- package/dist/decorators/index.js.map +0 -1
- package/dist/decorators/methods.js +0 -170
- package/dist/decorators/methods.js.map +0 -1
- package/dist/decorators/middleware.d.ts +0 -2
- package/dist/decorators/middleware.d.ts.map +0 -1
- package/dist/decorators/middleware.js +0 -3
- package/dist/decorators/middleware.js.map +0 -1
- package/dist/decorators/responses.d.ts +0 -7
- package/dist/decorators/responses.d.ts.map +0 -1
- package/dist/decorators/responses.js +0 -44
- package/dist/decorators/responses.js.map +0 -1
- package/dist/decorators/security.d.ts +0 -8
- package/dist/decorators/security.d.ts.map +0 -1
- package/dist/decorators/security.js +0 -39
- package/dist/decorators/security.js.map +0 -1
- package/dist/integrations/metal-orm/index.d.ts +0 -2
- package/dist/integrations/metal-orm/index.d.ts.map +0 -1
- package/dist/integrations/metal-orm/index.js +0 -2
- package/dist/integrations/metal-orm/index.js.map +0 -1
- package/dist/integrations/metal-orm/pagination/executePaged.d.ts +0 -2
- package/dist/integrations/metal-orm/pagination/executePaged.d.ts.map +0 -1
- package/dist/integrations/metal-orm/pagination/executePaged.js +0 -3
- package/dist/integrations/metal-orm/pagination/executePaged.js.map +0 -1
- package/dist/integrations/metal-orm/pagination/page.d.ts +0 -2
- package/dist/integrations/metal-orm/pagination/page.d.ts.map +0 -1
- package/dist/integrations/metal-orm/pagination/page.js +0 -3
- package/dist/integrations/metal-orm/pagination/page.js.map +0 -1
- package/dist/integrations/metal-orm/query/filters.d.ts +0 -2
- package/dist/integrations/metal-orm/query/filters.d.ts.map +0 -1
- package/dist/integrations/metal-orm/query/filters.js +0 -3
- package/dist/integrations/metal-orm/query/filters.js.map +0 -1
- package/dist/integrations/metal-orm/query/search.d.ts +0 -2
- package/dist/integrations/metal-orm/query/search.d.ts.map +0 -1
- package/dist/integrations/metal-orm/query/search.js +0 -3
- package/dist/integrations/metal-orm/query/search.js.map +0 -1
- package/dist/integrations/metal-orm/query/sort.d.ts +0 -2
- package/dist/integrations/metal-orm/query/sort.d.ts.map +0 -1
- package/dist/integrations/metal-orm/query/sort.js +0 -3
- package/dist/integrations/metal-orm/query/sort.js.map +0 -1
- package/dist/integrations/metal-orm/save-graph/helpers.d.ts +0 -2
- package/dist/integrations/metal-orm/save-graph/helpers.d.ts.map +0 -1
- package/dist/integrations/metal-orm/save-graph/helpers.js +0 -3
- package/dist/integrations/metal-orm/save-graph/helpers.js.map +0 -1
- package/dist/integrations/metal-orm/save-graph/types.d.ts +0 -2
- package/dist/integrations/metal-orm/save-graph/types.d.ts.map +0 -1
- package/dist/integrations/metal-orm/save-graph/types.js +0 -3
- package/dist/integrations/metal-orm/save-graph/types.js.map +0 -1
- package/dist/integrations/metal-orm/schema/column-map.d.ts +0 -96
- package/dist/integrations/metal-orm/schema/column-map.d.ts.map +0 -1
- package/dist/integrations/metal-orm/schema/column-map.js +0 -207
- package/dist/integrations/metal-orm/schema/column-map.js.map +0 -1
- package/dist/integrations/metal-orm/schema/ddl.d.ts +0 -2
- package/dist/integrations/metal-orm/schema/ddl.d.ts.map +0 -1
- package/dist/integrations/metal-orm/schema/ddl.js +0 -3
- package/dist/integrations/metal-orm/schema/ddl.js.map +0 -1
- package/dist/integrations/metal-orm/schema/dto.d.ts +0 -7
- package/dist/integrations/metal-orm/schema/dto.d.ts.map +0 -1
- package/dist/integrations/metal-orm/schema/dto.js +0 -34
- package/dist/integrations/metal-orm/schema/dto.js.map +0 -1
- package/dist/integrations/metal-orm/schema/entity.d.ts +0 -99
- package/dist/integrations/metal-orm/schema/entity.d.ts.map +0 -1
- package/dist/integrations/metal-orm/schema/entity.js +0 -99
- package/dist/integrations/metal-orm/schema/entity.js.map +0 -1
- package/dist/integrations/metal-orm/schema/filters.d.ts +0 -11
- package/dist/integrations/metal-orm/schema/filters.d.ts.map +0 -1
- package/dist/integrations/metal-orm/schema/filters.js +0 -21
- package/dist/integrations/metal-orm/schema/filters.js.map +0 -1
- package/dist/integrations/metal-orm/schema/index.d.ts +0 -5
- package/dist/integrations/metal-orm/schema/index.d.ts.map +0 -1
- package/dist/integrations/metal-orm/schema/index.js +0 -5
- package/dist/integrations/metal-orm/schema/index.js.map +0 -1
- package/dist/integrations/metal-orm/schema/openapi/entityToSchema.d.ts +0 -2
- package/dist/integrations/metal-orm/schema/openapi/entityToSchema.d.ts.map +0 -1
- package/dist/integrations/metal-orm/schema/openapi/entityToSchema.js +0 -3
- package/dist/integrations/metal-orm/schema/openapi/entityToSchema.js.map +0 -1
- package/dist/integrations/metal-orm/schema/openapi/tableDefToSchema.d.ts +0 -2
- package/dist/integrations/metal-orm/schema/openapi/tableDefToSchema.d.ts.map +0 -1
- package/dist/integrations/metal-orm/schema/openapi/tableDefToSchema.js +0 -3
- package/dist/integrations/metal-orm/schema/openapi/tableDefToSchema.js.map +0 -1
- package/dist/integrations/metal-orm/schema/sqlite.d.ts +0 -2
- package/dist/integrations/metal-orm/schema/sqlite.d.ts.map +0 -1
- package/dist/integrations/metal-orm/schema/sqlite.js +0 -3
- package/dist/integrations/metal-orm/schema/sqlite.js.map +0 -1
- package/dist/integrations/metal-orm/schema/tabledef.d.ts +0 -4
- package/dist/integrations/metal-orm/schema/tabledef.d.ts.map +0 -1
- package/dist/integrations/metal-orm/schema/tabledef.js +0 -10
- package/dist/integrations/metal-orm/schema/tabledef.js.map +0 -1
- package/dist/integrations/metal-orm/schema/types.d.ts +0 -7
- package/dist/integrations/metal-orm/schema/types.d.ts.map +0 -1
- package/dist/integrations/metal-orm/schema/types.js +0 -2
- package/dist/integrations/metal-orm/schema/types.js.map +0 -1
- package/dist/integrations/metal-orm/serialization/entitySerializer.d.ts +0 -2
- package/dist/integrations/metal-orm/serialization/entitySerializer.d.ts.map +0 -1
- package/dist/integrations/metal-orm/serialization/entitySerializer.js +0 -3
- package/dist/integrations/metal-orm/serialization/entitySerializer.js.map +0 -1
- package/dist/integrations/metal-orm/serialization/relationPolicy.d.ts +0 -2
- package/dist/integrations/metal-orm/serialization/relationPolicy.d.ts.map +0 -1
- package/dist/integrations/metal-orm/serialization/relationPolicy.js +0 -3
- package/dist/integrations/metal-orm/serialization/relationPolicy.js.map +0 -1
- package/dist/integrations/metal-orm/session/context.d.ts +0 -2
- package/dist/integrations/metal-orm/session/context.d.ts.map +0 -1
- package/dist/integrations/metal-orm/session/context.js +0 -3
- package/dist/integrations/metal-orm/session/context.js.map +0 -1
- package/dist/integrations/metal-orm/session/middleware.d.ts +0 -2
- package/dist/integrations/metal-orm/session/middleware.d.ts.map +0 -1
- package/dist/integrations/metal-orm/session/middleware.js +0 -3
- package/dist/integrations/metal-orm/session/middleware.js.map +0 -1
- package/dist/integrations/metal-orm/session/transaction.d.ts +0 -2
- package/dist/integrations/metal-orm/session/transaction.d.ts.map +0 -1
- package/dist/integrations/metal-orm/session/transaction.js +0 -3
- package/dist/integrations/metal-orm/session/transaction.js.map +0 -1
- package/dist/integrations/metal-orm/testing/setupSchema.d.ts +0 -2
- package/dist/integrations/metal-orm/testing/setupSchema.d.ts.map +0 -1
- package/dist/integrations/metal-orm/testing/setupSchema.js +0 -3
- package/dist/integrations/metal-orm/testing/setupSchema.js.map +0 -1
- package/dist/integrations/metal-orm/testing/sqliteMemory.d.ts +0 -2
- package/dist/integrations/metal-orm/testing/sqliteMemory.d.ts.map +0 -1
- package/dist/integrations/metal-orm/testing/sqliteMemory.js +0 -3
- package/dist/integrations/metal-orm/testing/sqliteMemory.js.map +0 -1
- package/dist/metadata/bag.d.ts +0 -18
- package/dist/metadata/bag.d.ts.map +0 -1
- package/dist/metadata/bag.js +0 -39
- package/dist/metadata/bag.js.map +0 -1
- package/dist/metadata/index.d.ts +0 -4
- package/dist/metadata/index.d.ts.map +0 -1
- package/dist/metadata/index.js +0 -4
- package/dist/metadata/index.js.map +0 -1
- package/dist/metadata/keys.d.ts +0 -254
- package/dist/metadata/keys.d.ts.map +0 -1
- package/dist/metadata/keys.js +0 -23
- package/dist/metadata/keys.js.map +0 -1
- package/dist/metadata/merge.d.ts +0 -9
- package/dist/metadata/merge.d.ts.map +0 -1
- package/dist/metadata/merge.js +0 -30
- package/dist/metadata/merge.js.map +0 -1
- package/dist/metal-orm.d.ts +0 -2
- package/dist/metal-orm.d.ts.map +0 -1
- package/dist/metal-orm.js +0 -2
- package/dist/metal-orm.js.map +0 -1
- package/dist/validation/native/index.d.ts +0 -3
- package/dist/validation/native/index.d.ts.map +0 -1
- package/dist/validation/native/index.js +0 -3
- package/dist/validation/native/index.js.map +0 -1
- package/dist/validation/native/ir.d.ts +0 -38
- package/dist/validation/native/ir.d.ts.map +0 -1
- package/dist/validation/native/ir.js +0 -2
- package/dist/validation/native/ir.js.map +0 -1
- package/dist/validation/native/schema.d.ts +0 -63
- package/dist/validation/native/schema.d.ts.map +0 -1
- package/dist/validation/native/schema.js +0 -271
- package/dist/validation/native/schema.js.map +0 -1
- package/dist/validation/native/validator.d.ts +0 -21
- package/dist/validation/native/validator.d.ts.map +0 -1
- package/dist/validation/native/validator.js +0 -48
- package/dist/validation/native/validator.js.map +0 -1
package/dist/express.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"express.js","sourceRoot":"","sources":["../src/express.ts"],"names":[],"mappings":"AAAA,cAAc,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"sources":["../src/runtime/polyfill.ts","../src/adapter/express/index.ts","../src/runtime/metadata/key.ts","../src/runtime/metadata/read.ts","../src/utils/operationId.ts","../src/utils/path.ts","../src/adapter/express/merge.ts","../src/runtime/validation/ajv.ts","../src/compiler/cache/loadArtifacts.ts","../src/adapter/express/bootstrap.ts"],"sourcesContent":["// Polyfill Symbol.metadata for environments that don't support it\n// Must run before any decorated classes are imported\n(Symbol as any).metadata ??= Symbol(\"Symbol.metadata\");\n\n// Export a symbol to prevent tree-shaking\nexport const ADORN_POLYFILL = Symbol(\"adorn-polyfill\");\n","import { Router } from \"express\";\nimport type { Request, Response, NextFunction } from \"express\";\nimport { readFileSync, existsSync } from \"node:fs\";\nimport { resolve, join, isAbsolute } from \"node:path\";\nimport type { ManifestV1 } from \"../../compiler/manifest/format.js\";\nimport { bindRoutes, type BoundRoute } from \"./merge.js\";\nimport { createValidator, formatValidationErrors } from \"../../runtime/validation/ajv.js\";\nimport type { AuthSchemeRuntime } from \"../../runtime/auth/runtime.js\";\nimport { loadArtifacts } from \"../../compiler/cache/loadArtifacts.js\";\nimport swaggerUi from \"swagger-ui-express\";\n\r\ninterface OpenAPI31 {\r\n openapi: string;\r\n components: {\r\n schemas: Record<string, Record<string, unknown>>;\r\n securitySchemes?: Record<string, Record<string, unknown>>;\r\n };\r\n security?: Array<Record<string, string[]>>;\r\n}\r\n\r\ninterface AuthenticatedRequest extends Request {\r\n auth?: any;\r\n}\r\n\r\nexport interface CreateRouterOptions {\n controllers: Array<new (...args: any[]) => any>;\n artifactsDir?: string;\n manifest?: ManifestV1;\n openapi?: OpenAPI31;\n auth?: {\n schemes: Record<string, AuthSchemeRuntime>;\n };\n middleware?: {\n global?: Array<string | ((req: any, res: any, next: (err?: any) => void) => any)>;\n named?: Record<string, (req: any, res: any, next: (err?: any) => void) => any>;\n };\n}\n\nexport interface SetupSwaggerOptions {\n artifactsDir?: string;\n jsonPath?: string;\n uiPath?: string;\n swaggerOptions?: {\n url?: string;\n servers?: Array<{ url: string; description?: string }>;\n [key: string]: any;\n };\n}\n\r\nexport async function createExpressRouter(options: CreateRouterOptions): Promise<Router> {\r\n const { controllers, artifactsDir = \".adorn\", middleware = {} } = options;\r\n\r\n let manifest: ManifestV1;\r\n let openapi: OpenAPI31;\r\n let precompiledValidators: Record<string, { body?: (data: unknown) => boolean; response: Record<string, (data: unknown) => boolean> }> | null = null;\r\n\r\n if (options.manifest && options.openapi) {\r\n manifest = options.manifest;\r\n openapi = options.openapi;\r\n if (manifest.validation.mode === \"precompiled\" && manifest.validation.precompiledModule) {\r\n try {\r\n const validatorPath = join(artifactsDir, manifest.validation.precompiledModule);\r\n precompiledValidators = require(validatorPath).validators;\r\n } catch (err) {\r\n console.warn(`Failed to load precompiled validators: ${err}`);\r\n }\r\n }\r\n } else {\r\n const artifacts = await loadArtifacts({ outDir: artifactsDir });\r\n manifest = artifacts.manifest as unknown as ManifestV1;\r\n openapi = artifacts.openapi as unknown as OpenAPI31;\r\n precompiledValidators = artifacts.validators?.validators as Record<string, { body?: (data: unknown) => boolean; response: Record<string, (data: unknown) => boolean> }> ?? null;\r\n }\r\n\r\n const routes = bindRoutes({ controllers, manifest });\r\n\r\n const validator = precompiledValidators ? null : createValidator();\r\n\r\n const router = Router();\r\n\r\n const instanceCache = new Map<Function, any>();\r\n\r\n function getInstance(Ctor: new (...args: any[]) => any): any {\r\n if (!instanceCache.has(Ctor)) {\r\n instanceCache.set(Ctor, new Ctor());\r\n }\r\n return instanceCache.get(Ctor);\r\n }\r\n\r\n function resolveMiddleware(\r\n items: Array<string | ((req: any, res: any, next: (err?: any) => void) => any)>,\r\n named: Record<string, (req: any, res: any, next: (err?: any) => void) => any> = {}\r\n ): Array<(req: any, res: any, next: (err?: any) => void) => any> {\r\n return items.map(item => {\r\n if (typeof item === \"string\") {\r\n const fn = named[item];\r\n if (!fn) {\r\n throw new Error(`Named middleware \"${item}\" not found in middleware registry`);\r\n }\r\n return fn;\r\n }\r\n return item;\r\n });\r\n }\r\n\r\n function createAuthMiddleware(\r\n authConfig: NonNullable<CreateRouterOptions[\"auth\"]>,\r\n routeAuth: BoundRoute[\"auth\"],\r\n globalSecurity: NonNullable<OpenAPI31[\"security\"]>\r\n ) {\r\n return async (req: AuthenticatedRequest, res: Response, next: NextFunction) => {\r\n const isPublic = routeAuth === \"public\";\r\n const hasAuthDecorator = routeAuth && routeAuth !== \"public\";\r\n const hasGlobalSecurity = globalSecurity && globalSecurity.length > 0;\r\n\r\n if (!hasAuthDecorator && !hasGlobalSecurity) {\r\n return next();\r\n }\r\n\r\n if (isPublic) {\r\n return next();\r\n }\r\n\r\n const authMeta = routeAuth as { scheme: string; scopes?: string[]; optional?: boolean };\r\n const scheme = authMeta.scheme;\r\n const requiredScopes = authMeta.scopes || [];\r\n const isOptional = authMeta.optional ?? false;\r\n\r\n const authRuntime = authConfig.schemes[scheme];\r\n if (!authRuntime) {\r\n throw new Error(`Auth scheme \"${scheme}\" not found in auth configuration`);\r\n }\r\n\r\n const result = await authRuntime.authenticate(req);\r\n\r\n if (!result) {\r\n if (isOptional) {\r\n req.auth = null;\r\n return next();\r\n }\r\n return authRuntime.challenge(res);\r\n }\r\n\r\n req.auth = result.principal;\r\n\r\n if (authRuntime.authorize && requiredScopes.length > 0) {\r\n if (!authRuntime.authorize(result, requiredScopes)) {\r\n res.status(403).json({ error: \"Forbidden\", message: \"Insufficient scopes\" });\r\n return;\r\n }\r\n }\r\n\r\n next();\r\n };\r\n }\r\n\r\n function getSchemaByRef(ref: string): Record<string, unknown> | null {\r\n if (!ref.startsWith(\"#/components/schemas/\")) return null;\r\n const schemaName = ref.replace(\"#/components/schemas/\", \"\");\r\n return openapi.components.schemas[schemaName] || null;\r\n }\r\n\r\n for (const route of routes) {\r\n const method = route.httpMethod.toLowerCase() as \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\r\n\r\n const middlewareChain: Array<(req: any, res: any, next: (err?: any) => void) => any> = [];\r\n\r\n if (middleware.global) {\r\n middlewareChain.push(...resolveMiddleware(middleware.global, middleware.named || {}));\r\n }\r\n\r\n if (route.controllerUse) {\r\n middlewareChain.push(...resolveMiddleware(route.controllerUse, middleware.named || {}));\r\n }\r\n\r\n if (route.use) {\r\n middlewareChain.push(...resolveMiddleware(route.use, middleware.named || {}));\r\n }\r\n\r\n if (options.auth) {\r\n const authMw = createAuthMiddleware(options.auth, route.auth, openapi.security || []);\r\n middlewareChain.push(authMw);\r\n }\r\n\r\n router[method](route.fullPath, ...middlewareChain, async (req: Request, res: Response, next: NextFunction) => {\r\n try {\r\n const validationErrors = precompiledValidators\r\n ? validateRequestWithPrecompiled(route, req, precompiledValidators)\r\n : validateRequest(route, req, openapi, validator!);\r\n if (validationErrors) {\r\n return res.status(400).json(formatValidationErrors(validationErrors));\r\n }\r\n\r\n const instance = getInstance(route.controllerCtor);\r\n const handler = instance[route.methodName];\r\n\r\n if (typeof handler !== \"function\") {\r\n throw new Error(`Method ${route.methodName} not found on controller`);\r\n }\r\n\r\n const args: any[] = [];\r\n\r\n if (route.args.body) {\r\n args[route.args.body.index] = req.body;\r\n }\r\n\r\n for (const pathArg of route.args.path) {\r\n const coerced = coerceValue(req.params[pathArg.name], pathArg.schemaType);\r\n args[pathArg.index] = coerced;\r\n }\r\n\r\n if (route.args.query.length > 0) {\r\n const firstQueryIndex = route.args.query[0].index;\r\n const allSameIndex = route.args.query.every(q => q.index === firstQueryIndex);\r\n\r\n if (allSameIndex) {\r\n args[firstQueryIndex] = {};\r\n for (const q of route.args.query) {\r\n const parsed = parseQueryValue(req.query[q.name], q);\r\n const coerced = coerceValue(parsed, q.schemaType);\r\n args[firstQueryIndex][q.name] = coerced;\r\n }\r\n } else {\r\n for (const q of route.args.query) {\r\n const parsed = parseQueryValue(req.query[q.name], q);\r\n const coerced = coerceValue(parsed, q.schemaType);\r\n args[q.index] = coerced;\r\n }\r\n }\r\n }\r\n\r\n if (route.args.headers.length > 0) {\r\n const firstHeaderIndex = route.args.headers[0].index;\r\n const allSameIndex = route.args.headers.every(h => h.index === firstHeaderIndex);\r\n\r\n if (allSameIndex) {\r\n args[firstHeaderIndex] = {};\r\n for (const h of route.args.headers) {\r\n const headerValue = req.headers[h.name.toLowerCase()];\r\n args[firstHeaderIndex][h.name] = headerValue ?? undefined;\r\n }\r\n } else {\r\n for (const h of route.args.headers) {\r\n const headerValue = req.headers[h.name.toLowerCase()];\r\n args[h.index] = headerValue ?? undefined;\r\n }\r\n }\r\n }\r\n\r\n if (route.args.cookies.length > 0) {\r\n const firstCookieIndex = route.args.cookies[0].index;\r\n const allSameIndex = route.args.cookies.every(c => c.index === firstCookieIndex);\r\n const cookies = parseCookies(req.headers.cookie);\r\n\r\n if (allSameIndex) {\r\n args[firstCookieIndex] = {};\r\n for (const c of route.args.cookies) {\r\n const cookieValue = cookies[c.name];\r\n const coerced = coerceValue(cookieValue, c.schemaType);\r\n args[firstCookieIndex][c.name] = coerced;\r\n }\r\n } else {\r\n for (const c of route.args.cookies) {\r\n const cookieValue = cookies[c.name];\r\n const coerced = coerceValue(cookieValue, c.schemaType);\r\n args[c.index] = coerced;\r\n }\r\n }\r\n }\r\n\r\n if (args.length === 0) {\r\n args.push(req);\r\n }\r\n\r\n const result = await handler.apply(instance, args);\r\n\r\n const primaryResponse = route.responses[0];\r\n const status = primaryResponse?.status ?? 200;\r\n\r\n res.status(status).json(result);\r\n } catch (error) {\r\n next(error);\r\n }\r\n });\r\n }\r\n\r\n return router;\r\n}\r\n\r\ninterface ValidationError {\r\n path: string;\r\n message: string;\r\n keyword: string;\r\n params: Record<string, unknown>;\r\n}\r\n\r\nfunction validateRequestWithPrecompiled(\r\n route: BoundRoute,\r\n req: Request,\r\n validators: Record<string, { body?: (data: unknown) => boolean; response: Record<string, (data: unknown) => boolean> }>\r\n): ValidationError[] | null {\r\n const errors: ValidationError[] = [];\r\n\r\n if (route.args.body) {\r\n const validator = validators[route.operationId]?.body;\r\n if (validator) {\r\n const valid = validator(req.body);\r\n if (!valid) {\r\n const v = validators[route.operationId].body as any;\r\n for (const err of v.errors || []) {\r\n errors.push({\r\n path: `#/body${err.instancePath}`,\r\n message: err.message || \"Invalid value\",\r\n keyword: err.keyword,\r\n params: err.params as Record<string, unknown>,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (const q of route.args.query) {\r\n const value = req.query[q.name];\r\n if (value === undefined) continue;\r\n\r\n const schema: Record<string, unknown> = {};\r\n if (q.schemaType) {\r\n const type = Array.isArray(q.schemaType) ? q.schemaType[0] : q.schemaType;\r\n schema.type = type;\r\n }\r\n\r\n const coerced = coerceValue(value, q.schemaType);\r\n if (Object.keys(schema).length > 0 && coerced !== undefined) {\r\n errors.push({\r\n path: `#/query/${q.name}`,\r\n message: `Schema validation not supported for query params in precompiled mode`,\r\n keyword: \"notSupported\",\r\n params: {},\r\n });\r\n }\r\n }\r\n\r\n for (const p of route.args.path) {\r\n const value = req.params[p.name];\r\n if (value === undefined) continue;\r\n\r\n const schema: Record<string, unknown> = {};\r\n if (p.schemaType) {\r\n const type = Array.isArray(p.schemaType) ? p.schemaType[0] : p.schemaType;\r\n schema.type = type;\r\n }\r\n\r\n const coerced = coerceValue(value, p.schemaType);\r\n if (Object.keys(schema).length > 0 && coerced !== undefined) {\r\n errors.push({\r\n path: `#/path/${p.name}`,\r\n message: `Schema validation not supported for path params in precompiled mode`,\r\n keyword: \"notSupported\",\r\n params: {},\r\n });\r\n }\r\n }\r\n\r\n return errors.length > 0 ? errors : null;\r\n}\r\n\r\nfunction validateRequest(\r\n route: BoundRoute,\r\n req: Request,\r\n openapi: OpenAPI31,\r\n validator: ReturnType<typeof createValidator>\r\n): ValidationError[] | null {\r\n function getSchemaByRef(ref: string): Record<string, unknown> | null {\r\n if (!ref.startsWith(\"#/components/schemas/\")) return null;\r\n const schemaName = ref.replace(\"#/components/schemas/\", \"\");\r\n return openapi.components.schemas[schemaName] || null;\r\n }\r\n\r\n const errors: ValidationError[] = [];\r\n\r\n if (route.args.body) {\r\n const bodySchema = getSchemaByRef(route.args.body.schemaRef);\r\n if (bodySchema) {\r\n const validate = validator.compile(bodySchema);\r\n const valid = validate(req.body);\r\n if (!valid) {\r\n for (const err of validate.errors || []) {\r\n errors.push({\r\n path: `#/body${err.instancePath}`,\r\n message: err.message || \"Invalid value\",\r\n keyword: err.keyword,\r\n params: err.params as Record<string, unknown>,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (const q of route.args.query) {\r\n const value = req.query[q.name];\r\n const schema: Record<string, unknown> = {};\r\n\r\n if (q.schemaType) {\r\n const type = Array.isArray(q.schemaType) ? q.schemaType[0] : q.schemaType;\r\n schema.type = type;\r\n }\r\n\r\n if (q.schemaRef && q.schemaRef.includes(\"Inline\")) {\r\n const inlineSchema = getSchemaByRef(q.schemaRef);\r\n if (inlineSchema) {\r\n Object.assign(schema, inlineSchema);\r\n }\r\n }\r\n\r\n const coerced = coerceValue(value, q.schemaType);\r\n\r\n if (Object.keys(schema).length > 0 && coerced !== undefined) {\r\n const validate = validator.compile(schema);\r\n const valid = validate(coerced);\r\n if (!valid) {\r\n for (const err of validate.errors || []) {\r\n errors.push({\r\n path: `#/query/${q.name}`,\r\n message: err.message || \"Invalid value\",\r\n keyword: err.keyword,\r\n params: err.params as Record<string, unknown>,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (const p of route.args.path) {\r\n const value = req.params[p.name];\r\n const schema: Record<string, unknown> = {};\r\n\r\n if (p.schemaType) {\r\n const type = Array.isArray(p.schemaType) ? p.schemaType[0] : p.schemaType;\r\n schema.type = type;\r\n }\r\n\r\n if (p.schemaRef && p.schemaRef.includes(\"Inline\")) {\r\n const inlineSchema = getSchemaByRef(p.schemaRef);\r\n if (inlineSchema) {\r\n Object.assign(schema, inlineSchema);\r\n }\r\n }\r\n\r\n const coerced = coerceValue(value, p.schemaType);\r\n\r\n if (Object.keys(schema).length > 0 && coerced !== undefined) {\r\n const validate = validator.compile(schema);\r\n const valid = validate(coerced);\r\n if (!valid) {\r\n for (const err of validate.errors || []) {\r\n errors.push({\r\n path: `#/path/${p.name}`,\r\n message: err.message || \"Invalid value\",\r\n keyword: err.keyword,\r\n params: err.params as Record<string, unknown>,\r\n });\r\n }\r\n }\r\n }\r\n }\r\n\r\n return errors.length > 0 ? errors : null;\r\n}\r\n\r\nfunction coerceValue(value: any, schemaType?: string | string[]): any {\r\n if (value === undefined || value === null) return value;\r\n\r\n const type = Array.isArray(schemaType) ? schemaType[0] : schemaType;\r\n\r\n if (type === \"number\" || type === \"integer\") {\r\n const num = Number(value);\r\n if (isNaN(num)) {\r\n throw new Error(`Invalid number: ${value}`);\r\n }\r\n return num;\r\n }\r\n\r\n if (type === \"boolean\") {\r\n if (value === \"true\") return true;\r\n if (value === \"false\") return false;\r\n throw new Error(`Invalid boolean: ${value}`);\r\n }\r\n\r\n return value;\r\n}\r\n\r\nfunction parseQueryValue(value: any, param: { schemaType?: string | string[]; serialization?: { style?: string; explode?: boolean } }): any {\r\n if (value === undefined || value === null) return value;\r\n\r\n const isArray = Array.isArray(param.schemaType)\r\n ? param.schemaType.includes(\"array\")\r\n : param.schemaType === \"array\";\r\n\r\n if (!isArray) return value;\r\n\r\n const style = param.serialization?.style ?? \"form\";\r\n const explode = param.serialization?.explode ?? true;\r\n\r\n if (Array.isArray(value)) {\r\n return value;\r\n }\r\n\r\n if (style === \"form\") {\r\n if (explode) {\r\n return value;\r\n }\r\n return value.split(\",\");\r\n }\r\n\r\n if (style === \"spaceDelimited\") {\r\n return value.split(\" \");\r\n }\r\n\r\n if (style === \"pipeDelimited\") {\r\n return value.split(\"|\");\r\n }\r\n\r\n return value;\r\n}\r\n\r\nfunction parseCookies(cookieHeader: string | undefined): Record<string, string> {\r\n if (!cookieHeader) return {};\r\n\r\n const cookies: Record<string, string> = {};\r\n const pairs = cookieHeader.split(\";\");\r\n\r\n for (const pair of pairs) {\r\n const [name, ...valueParts] = pair.trim().split(\"=\");\r\n if (name) {\r\n cookies[name] = valueParts.join(\"=\");\r\n }\r\n }\r\n\r\n return cookies;\n}\n\nexport { bootstrap, type BootstrapOptions } from \"./bootstrap.js\";\n\nexport function setupSwagger(options: SetupSwaggerOptions = {}): Router {\n const {\n artifactsDir = \".adorn\",\n jsonPath = \"/docs/openapi.json\",\n uiPath = \"/docs\",\n swaggerOptions = {},\n } = options;\n\n const router = Router();\n\n router.get(jsonPath, (req, res) => {\n const openApiPath = isAbsolute(artifactsDir)\n ? resolve(artifactsDir, \"openapi.json\")\n : resolve(process.cwd(), artifactsDir, \"openapi.json\");\n \n const content = readFileSync(openApiPath, \"utf-8\");\n res.setHeader(\"Content-Type\", \"application/json\");\n res.send(content);\n });\n\n router.use(uiPath, swaggerUi.serve, swaggerUi.setup(null, {\n swaggerOptions: {\n url: jsonPath,\n ...swaggerOptions,\n },\n }));\n\n return router;\n}\n\n","export const ADORN_META = Symbol.for(\"adorn-api/meta\");\n","import { ADORN_META } from \"./key.js\";\nimport type { AdornBucket } from \"./types.js\";\n\nexport function readAdornBucket(ctor: Function): AdornBucket | null {\n const metaSym = (Symbol as any).metadata as symbol | undefined;\n if (!metaSym) {\n return null;\n }\n\n const classMetadata = (ctor as any)[metaSym] as DecoratorMetadata | undefined;\n if (!classMetadata) {\n return null;\n }\n\n const bucket = classMetadata[ADORN_META] as AdornBucket | undefined;\n return bucket ?? null;\n}\n","export function defaultOperationId(controllerName: string, methodName: string): string {\n return `${controllerName}_${methodName}`;\n}\n","export function joinPaths(base: string, sub: string): string {\n const b = base.endsWith(\"/\") ? base.slice(0, -1) : base;\n const s = sub.startsWith(\"/\") ? sub : `/${sub}`;\n return (b + s) || \"/\";\n}\n","import type { ManifestV1, OperationEntry } from \"../../compiler/manifest/format.js\";\nimport { readAdornBucket } from \"../../runtime/metadata/read.js\";\nimport { defaultOperationId } from \"../../utils/operationId.js\";\nimport { joinPaths } from \"../../utils/path.js\";\nimport crypto from \"node:crypto\";\n\nexport interface BoundRoute {\n operationId: string;\n fullPath: string;\n httpMethod: OperationEntry[\"http\"][\"method\"];\n controllerCtor: new (...args: any[]) => any;\n methodName: string;\n args: OperationEntry[\"args\"];\n responses: OperationEntry[\"responses\"];\n use?: Array<string | ((req: any, res: any, next: (err?: any) => void) => any)>;\n auth?: { scheme: string; scopes?: string[]; optional?: boolean } | \"public\";\n controllerUse?: Array<string | ((req: any, res: any, next: (err?: any) => void) => any)>;\n}\n\ninterface RouteCacheEntry {\n boundRoutes: BoundRoute[];\n manifestHash: string;\n controllerIds: string[];\n}\n\nconst routeCache = new Map<string, RouteCacheEntry>();\n\nfunction convertToExpressPath(path: string): string {\n return path.replace(/:([^/]+)/g, \":$1\");\n}\n\nfunction computeManifestHash(manifest: ManifestV1): string {\n const ops = manifest.controllers.flatMap(c => c.operations.map(o => o.operationId)).sort();\n const data = JSON.stringify({\n ops,\n validation: manifest.validation,\n });\n return crypto.createHash(\"sha256\").update(data).digest(\"hex\").slice(0, 16);\n}\n\nfunction getControllerIds(controllers: Array<new (...args: any[]) => any>): string[] {\n return controllers.map(c => c.name);\n}\n\nfunction getControllerUniqueIds(controllers: Array<new (...args: any[]) => any>): string[] {\n return controllers.map(c => `${c.name}:${c.toString()}`);\n}\n\nexport function bindRoutes(params: {\n controllers: Array<new (...args: any[]) => any>;\n manifest: ManifestV1;\n useCache?: boolean;\n}): BoundRoute[] {\n const { controllers, manifest, useCache = true } = params;\n\n if (useCache) {\n const manifestHash = computeManifestHash(manifest);\n const controllerIds = getControllerUniqueIds(controllers);\n const cacheKey = `${manifestHash}:${controllerIds.join(\",\")}`;\n\n const cached = routeCache.get(cacheKey);\n if (cached) {\n return cached.boundRoutes;\n }\n\n const bound = computeBoundRoutes(controllers, manifest);\n\n routeCache.set(cacheKey, {\n boundRoutes: bound,\n manifestHash,\n controllerIds,\n });\n\n return bound;\n }\n\n return computeBoundRoutes(controllers, manifest);\n}\n\nfunction computeBoundRoutes(\n controllers: Array<new (...args: any[]) => any>,\n manifest: ManifestV1\n): BoundRoute[] {\n const manifestByOpId = new Map<string, OperationEntry>();\n for (const ctrl of manifest.controllers) {\n for (const op of ctrl.operations) {\n if (manifestByOpId.has(op.operationId)) {\n throw new Error(`Duplicate operationId in manifest: ${op.operationId}`);\n }\n manifestByOpId.set(op.operationId, op);\n }\n }\n\n const bound: BoundRoute[] = [];\n\n for (const ctor of controllers) {\n const bucket = readAdornBucket(ctor);\n if (!bucket) {\n console.warn(`No decorator metadata found for ${ctor.name}, skipping`);\n continue;\n }\n\n const basePath = bucket.basePath ?? \"/\";\n\n for (const routeOp of bucket.ops) {\n const opId = routeOp.operationId ?? defaultOperationId(ctor.name, routeOp.methodName);\n\n const manifestOp = manifestByOpId.get(opId);\n if (!manifestOp) {\n throw new Error(\n `No manifest entry for operationId=\"${opId}. ` +\n `Did you run \"adorn-api build\"? Are your operationId rules aligned?`\n );\n }\n\n if (manifestOp.http.method !== routeOp.httpMethod || manifestOp.http.path !== routeOp.path) {\n throw new Error(\n `Route mismatch for ${opId}. ` +\n `Runtime: ${routeOp.httpMethod} ${routeOp.path}, ` +\n `Manifest: ${manifestOp.http.method} ${manifestOp.http.path}. ` +\n `Rebuild with \"adorn-api build\".`\n );\n }\n\n const expressPath = convertToExpressPath(routeOp.path);\n const fullPath = joinPaths(basePath, expressPath);\n\n bound.push({\n operationId: opId,\n fullPath,\n httpMethod: manifestOp.http.method,\n controllerCtor: ctor,\n methodName: routeOp.methodName,\n args: manifestOp.args,\n responses: manifestOp.responses,\n use: routeOp.use,\n auth: routeOp.auth,\n controllerUse: bucket.controllerUse,\n });\n }\n }\n\n return bound;\n}\n\nexport function clearRouteCache(): void {\n routeCache.clear();\n}\n\nexport function getRouteCacheStats(): { size: number; keys: string[] } {\n return {\n size: routeCache.size,\n keys: Array.from(routeCache.keys()),\n };\n}\n\n","import Ajv from \"ajv\";\nimport addFormats from \"ajv-formats\";\nimport type { ErrorObject } from \"ajv\";\n\nexport interface ValidationError {\n path: string;\n message: string;\n keyword: string;\n params: Record<string, unknown>;\n}\n\nexport interface ValidationResult {\n valid: boolean;\n errors: ValidationError[] | null;\n}\n\nexport class ValidationErrorResponse extends Error {\n constructor(\n public statusCode: number,\n public errors: ValidationError[]\n ) {\n super(\"Validation failed\");\n this.name = \"ValidationErrorResponse\";\n }\n}\n\nexport function createValidator() {\n const ajv = new Ajv.default({\n allErrors: true,\n coerceTypes: false,\n strict: false,\n validateFormats: true,\n });\n\n addFormats.default(ajv);\n\n ajv.addFormat(\"br-phone\", /^\\(\\d{2}\\)\\s\\d{5}-\\d{4}$/);\n\n return ajv;\n}\n\nexport function validateData(\n ajv: ReturnType<typeof createValidator>,\n data: unknown,\n schema: Record<string, unknown>,\n dataPath: string = \"#\"\n): ValidationResult {\n const validate = ajv.compile(schema);\n const valid = validate(data);\n\n if (valid) {\n return { valid: true, errors: null };\n }\n\n const errors: ValidationError[] = (validate.errors || []).map((err: ErrorObject) => ({\n path: formatErrorPath(dataPath, err),\n message: err.message || \"Invalid value\",\n keyword: err.keyword,\n params: err.params as Record<string, unknown>,\n }));\n\n return { valid: false, errors };\n}\n\nfunction formatErrorPath(basePath: string, err: ErrorObject): string {\n const instancePath = err.instancePath;\n\n if (!instancePath || instancePath === \"\") {\n return basePath;\n }\n\n if (basePath === \"#\" || basePath.endsWith(\"/\")) {\n return `${basePath}${instancePath.slice(1)}`;\n }\n\n return `${basePath}${instancePath}`;\n}\n\nexport function formatValidationErrors(errors: ValidationError[]): Record<string, unknown> {\n const formatted: Record<string, string[]> = {};\n\n for (const error of errors) {\n const path = error.path || \"body\";\n if (!formatted[path]) {\n formatted[path] = [];\n }\n formatted[path].push(error.message);\n }\n\n return {\n error: \"Validation failed\",\n details: formatted,\n };\n}\n","import fs from \"node:fs\";\nimport path from \"node:path\";\nimport { stat } from \"node:fs/promises\";\n\ninterface OpenApi {\n openapi: string;\n components?: {\n schemas?: Record<string, unknown>;\n };\n paths?: Record<string, unknown>;\n info?: Record<string, unknown>;\n security?: Array<Record<string, string[]>>;\n}\n\ninterface Manifest {\n manifestVersion: number;\n generatedAt: string;\n generator: {\n name: string;\n version: string;\n typescript: string;\n };\n schemas: {\n kind: string;\n file: string;\n componentsSchemasPointer: string;\n };\n validation: {\n mode: \"none\" | \"ajv-runtime\" | \"precompiled\";\n precompiledModule: string | null;\n };\n controllers: Array<{\n controllerId: string;\n basePath: string;\n operations: Array<{\n operationId: string;\n http: {\n method: string;\n path: string;\n };\n handler: {\n methodName: string;\n };\n args: {\n body: {\n index: number;\n required: boolean;\n contentType: string;\n schemaRef: string;\n } | null;\n path: Array<{\n name: string;\n index: number;\n required: boolean;\n schemaRef: string;\n schemaType?: string | string[];\n }>;\n query: Array<{\n name: string;\n index: number;\n required: boolean;\n schemaRef: string;\n schemaType?: string | string[];\n }>;\n headers: Array<{\n name: string;\n index: number;\n required: boolean;\n schemaRef: string;\n schemaType?: string | string[];\n }>;\n cookies: Array<{\n name: string;\n index: number;\n required: boolean;\n schemaRef: string;\n schemaType?: string | string[];\n }>;\n };\n responses: Array<{\n status: number;\n contentType: string;\n schemaRef: string;\n isArray?: boolean;\n }>;\n }>;\n }>;\n}\n\ninterface ValidatorModule {\n validators: Record<string, {\n body?: (data: unknown) => boolean;\n response: Record<string, (data: unknown) => boolean>;\n }>;\n validateBody: (operationId: string, data: unknown) => { ok: boolean; errors: unknown[] | null };\n validateResponse: (operationId: string, status: number, contentType: string, data: unknown) => { ok: boolean; errors: unknown[] | null };\n}\n\ninterface ArtifactCacheEntry {\n openapi: OpenApi | null;\n manifest: Manifest | null;\n validators: ValidatorModule | null;\n mtimes: {\n openapi: number | null;\n manifest: number | null;\n validators: number | null;\n };\n}\n\nconst artifactCache = new Map<string, ArtifactCacheEntry>();\n\nasync function getMtime(filePath: string): Promise<number | null> {\n try {\n const stats = await stat(filePath);\n return stats.mtimeMs;\n } catch {\n return null;\n }\n}\n\nexport interface LoadArtifactsOptions {\n outDir: string;\n}\n\nexport interface LoadedArtifacts {\n openapi: OpenApi;\n manifest: Manifest;\n validators: ValidatorModule | null;\n}\n\nexport async function loadArtifacts(options: LoadArtifactsOptions): Promise<LoadedArtifacts> {\n const { outDir } = options;\n const cacheKey = path.resolve(outDir);\n\n let entry = artifactCache.get(cacheKey);\n\n const openapiPath = path.join(outDir, \"openapi.json\");\n const manifestPath = path.join(outDir, \"manifest.json\");\n const validatorsPath = path.join(outDir, \"validators.mjs\");\n\n const openapiMtime = await getMtime(openapiPath);\n const manifestMtime = await getMtime(manifestPath);\n const validatorsMtime = await getMtime(validatorsPath);\n\n if (entry) {\n const mtimesMatch = \n entry.mtimes.openapi === openapiMtime &&\n entry.mtimes.manifest === manifestMtime &&\n entry.mtimes.validators === validatorsMtime;\n\n if (mtimesMatch) {\n if (entry.openapi && entry.manifest) {\n return {\n openapi: entry.openapi,\n manifest: entry.manifest,\n validators: entry.validators,\n };\n }\n }\n }\n\n const openapiContent = fs.readFileSync(openapiPath, \"utf-8\");\n const manifestContent = fs.readFileSync(manifestPath, \"utf-8\");\n\n const openapi = JSON.parse(openapiContent) as OpenApi;\n const manifest = JSON.parse(manifestContent) as Manifest;\n\n let validators: ValidatorModule | null = null;\n\n if (manifest.validation.mode === \"precompiled\" && manifest.validation.precompiledModule) {\n try {\n const validatorsModule = await import(path.join(outDir, manifest.validation.precompiledModule));\n validators = validatorsModule as ValidatorModule;\n } catch (err) {\n console.warn(`Failed to load precompiled validators: ${err}`);\n }\n }\n\n artifactCache.set(cacheKey, {\n openapi,\n manifest,\n validators,\n mtimes: {\n openapi: openapiMtime,\n manifest: manifestMtime,\n validators: validatorsMtime,\n },\n });\n\n return {\n openapi,\n manifest,\n validators,\n };\n}\n\nexport function clearArtifactCache(outDir?: string): void {\n if (outDir) {\n const cacheKey = path.resolve(outDir);\n artifactCache.delete(cacheKey);\n } else {\n artifactCache.clear();\n }\n}\n\nexport function getArtifactCacheStats(): { size: number; keys: string[] } {\n return {\n size: artifactCache.size,\n keys: Array.from(artifactCache.keys()),\n };\n}\n","import express from \"express\";\nimport { type Server } from \"http\";\nimport { createExpressRouter, type CreateRouterOptions, setupSwagger, type SetupSwaggerOptions } from \"./index.js\";\nimport path from \"node:path\";\n\nexport interface BootstrapOptions {\n controllers: Array<new (...args: any[]) => any>;\n port?: number;\n host?: string;\n artifactsDir?: string;\n enableSwagger?: boolean;\n swaggerPath?: string;\n swaggerJsonPath?: string;\n middleware?: CreateRouterOptions[\"middleware\"];\n auth?: CreateRouterOptions[\"auth\"];\n}\n\nexport interface BootstrapResult {\n server: Server;\n app: express.Express;\n url: string;\n port: number;\n host: string;\n close: () => Promise<void>;\n}\n\nexport function bootstrap(options: BootstrapOptions): Promise<BootstrapResult> {\n return new Promise(async (resolve, reject) => {\n try {\n const {\n controllers,\n port: userPort,\n host: userHost,\n artifactsDir: userArtifactsDir = \".adorn\",\n enableSwagger = true,\n swaggerPath = \"/docs\",\n swaggerJsonPath = \"/docs/openapi.json\",\n middleware,\n auth,\n } = options;\n\n if (controllers.length === 0) {\n reject(new Error(\"At least one controller must be provided to bootstrap().\"));\n return;\n }\n\n const envPort = process.env.PORT;\n const port = userPort ?? (envPort !== undefined ? Number(envPort) : 3000);\n const host = userHost ?? process.env.HOST ?? \"0.0.0.0\";\n\n if (isNaN(port) || port < 0 || port > 65535) {\n reject(new Error(`Invalid port: ${port}. Port must be between 0 and 65535.`));\n return;\n }\n\n const absoluteArtifactsDir = path.isAbsolute(userArtifactsDir)\n ? userArtifactsDir\n : path.resolve(process.cwd(), userArtifactsDir);\n\n const app = express();\n app.use(express.json());\n\n const router = await createExpressRouter({\n controllers,\n artifactsDir: absoluteArtifactsDir,\n middleware,\n auth,\n });\n\n app.use(router);\n\n if (enableSwagger) {\n const displayHost = host === \"0.0.0.0\" ? \"localhost\" : host;\n const serverUrl = `http://${displayHost}:${port}`;\n\n app.use(\n setupSwagger({\n artifactsDir: absoluteArtifactsDir,\n jsonPath: swaggerJsonPath,\n uiPath: swaggerPath,\n swaggerOptions: {\n servers: [{ url: serverUrl }],\n },\n })\n );\n }\n\n const server = app.listen(port, host, () => {\n const displayHost = host === \"0.0.0.0\" ? \"localhost\" : host;\n const serverUrl = `http://${displayHost}:${port}`;\n\n console.log(`🚀 Server running on ${serverUrl}`);\n if (enableSwagger) {\n console.log(`📚 Swagger UI: ${serverUrl}${swaggerPath}`);\n }\n\n const result: BootstrapResult = {\n server,\n app,\n url: serverUrl,\n port,\n host,\n close: () => new Promise<void>((closeResolve) => {\n server.close(() => {\n console.log('Server closed gracefully');\n closeResolve();\n });\n })\n };\n\n resolve(result);\n });\n\n server.on('error', (error: any) => {\n if (error.code === 'EADDRINUSE') {\n reject(new Error(`Port ${port} already in use. Please choose a different port.`));\n } else if (error.code === 'EACCES') {\n reject(new Error(`Permission denied for port ${port}. Ports below 1024 require root privileges.`));\n } else {\n reject(new Error(`Failed to start server: ${error.message}`));\n }\n });\n\n } catch (error) {\n reject(error);\n }\n });\n}\n"],"mappings":"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","names":["path","path","path","resolve"]}
|
package/dist/http.d.ts
ADDED
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import "./runtime/polyfill.js";
|
|
2
|
+
declare const ADORN_META: unique symbol;
|
|
3
|
+
interface HttpMetadata {
|
|
4
|
+
consumes?: string[];
|
|
5
|
+
produces?: string[];
|
|
6
|
+
queryStyles?: Record<string, QueryStyleOptions>;
|
|
7
|
+
fileParts?: Record<string, FilePartOptions>;
|
|
8
|
+
cookies?: Record<string, boolean>;
|
|
9
|
+
}
|
|
10
|
+
interface QueryStyleOptions {
|
|
11
|
+
style?: "form" | "spaceDelimited" | "pipeDelimited" | "deepObject";
|
|
12
|
+
explode?: boolean;
|
|
13
|
+
allowReserved?: boolean;
|
|
14
|
+
}
|
|
15
|
+
interface FilePartOptions {
|
|
16
|
+
contentType?: string;
|
|
17
|
+
headers?: Record<string, string>;
|
|
18
|
+
}
|
|
19
|
+
export type QueryStyle = QueryStyleOptions;
|
|
20
|
+
export declare function QueryStyle(options: QueryStyleOptions): ParameterDecorator;
|
|
21
|
+
export type PartType = FilePartOptions;
|
|
22
|
+
export declare function PartType(contentTypeOrOptions: string | FilePartOptions): PropertyDecorator;
|
|
23
|
+
export declare function File(): PropertyDecorator;
|
|
24
|
+
export declare function Consumes(...contentTypes: string[]): ClassDecorator;
|
|
25
|
+
export declare function Produces(...contentTypes: string[]): ClassDecorator;
|
|
26
|
+
export type Cookies<T = any> = T;
|
|
27
|
+
export { ADORN_META };
|
|
28
|
+
export type { HttpMetadata, QueryStyleOptions, FilePartOptions };
|
|
29
|
+
//# sourceMappingURL=http.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AAAA,OAAO,uBAAuB,CAAC;AAE/B,QAAA,MAAM,UAAU,eAAmC,CAAC;AAEpD,UAAU,YAAY;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC5C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,UAAU,iBAAiB;IACzB,KAAK,CAAC,EAAE,MAAM,GAAG,gBAAgB,GAAG,eAAe,GAAG,YAAY,CAAC;IACnE,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,UAAU,eAAe;IACvB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAYD,MAAM,MAAM,UAAU,GAAG,iBAAiB,CAAC;AAE3C,wBAAgB,UAAU,CAAC,OAAO,EAAE,iBAAiB,GAAG,kBAAkB,CAMzE;AAED,MAAM,MAAM,QAAQ,GAAG,eAAe,CAAC;AAEvC,wBAAgB,QAAQ,CAAC,oBAAoB,EAAE,MAAM,GAAG,eAAe,GAAG,iBAAiB,CAS1F;AAED,wBAAgB,IAAI,IAAI,iBAAiB,CAMxC;AAED,wBAAgB,QAAQ,CAAC,GAAG,YAAY,EAAE,MAAM,EAAE,GAAG,cAAc,CAKlE;AAED,wBAAgB,QAAQ,CAAC,GAAG,YAAY,EAAE,MAAM,EAAE,GAAG,cAAc,CAKlE;AAED,MAAM,MAAM,OAAO,CAAC,CAAC,GAAG,GAAG,IAAI,CAAC,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,CAAC;AACtB,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,eAAe,EAAE,CAAC"}
|