adorn-api 1.0.0 → 1.0.1
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 +51 -249
- package/dist/adapters/express/createApp.d.ts +20 -0
- package/dist/adapters/express/createApp.d.ts.map +1 -0
- package/dist/adapters/express/createApp.js +35 -0
- package/dist/adapters/express/createApp.js.map +1 -0
- package/dist/adapters/express/index.d.ts +7 -0
- package/dist/adapters/express/index.d.ts.map +1 -0
- package/dist/adapters/express/index.js +7 -0
- package/dist/adapters/express/index.js.map +1 -0
- package/dist/adapters/express/middleware/errorHandler.d.ts +3 -0
- package/dist/adapters/express/middleware/errorHandler.d.ts.map +1 -0
- package/dist/adapters/express/middleware/errorHandler.js +6 -0
- package/dist/adapters/express/middleware/errorHandler.js.map +1 -0
- package/dist/adapters/express/middleware/requestContext.d.ts +2 -0
- package/dist/adapters/express/middleware/requestContext.d.ts.map +1 -0
- package/dist/adapters/express/middleware/requestContext.js +3 -0
- package/dist/adapters/express/middleware/requestContext.js.map +1 -0
- package/dist/adapters/express/router.d.ts +10 -0
- package/dist/adapters/express/router.d.ts.map +1 -0
- package/dist/adapters/express/router.js +103 -0
- package/dist/adapters/express/router.js.map +1 -0
- package/dist/adapters/express/swagger/index.d.ts +2 -0
- package/dist/adapters/express/swagger/index.d.ts.map +1 -0
- package/dist/adapters/express/swagger/index.js +2 -0
- package/dist/adapters/express/swagger/index.js.map +1 -0
- package/dist/adapters/express/swagger/serve.d.ts +12 -0
- package/dist/adapters/express/swagger/serve.d.ts.map +1 -0
- package/dist/adapters/express/swagger/serve.js +72 -0
- package/dist/adapters/express/swagger/serve.js.map +1 -0
- package/dist/adapters/express/transport/request.d.ts +4 -0
- package/dist/adapters/express/transport/request.d.ts.map +1 -0
- package/dist/adapters/express/transport/request.js +12 -0
- package/dist/adapters/express/transport/request.js.map +1 -0
- package/dist/adapters/express/transport/response.d.ts +5 -0
- package/dist/adapters/express/transport/response.d.ts.map +1 -0
- package/dist/adapters/express/transport/response.js +36 -0
- package/dist/adapters/express/transport/response.js.map +1 -0
- package/dist/cli/commands/dev.d.ts +2 -0
- package/dist/cli/commands/dev.d.ts.map +1 -0
- package/dist/cli/commands/dev.js +3 -0
- package/dist/cli/commands/dev.js.map +1 -0
- package/dist/cli/commands/gen.d.ts +2 -0
- package/dist/cli/commands/gen.d.ts.map +1 -0
- package/dist/cli/commands/gen.js +3 -0
- package/dist/cli/commands/gen.js.map +1 -0
- package/dist/cli/main.d.ts +2 -0
- package/dist/cli/main.d.ts.map +1 -0
- package/dist/cli/main.js +3 -0
- package/dist/cli/main.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +3 -0
- package/dist/cli.js.map +1 -0
- package/dist/compiler/config/defaults.d.ts +2 -0
- package/dist/compiler/config/defaults.d.ts.map +1 -0
- package/dist/compiler/config/defaults.js +3 -0
- package/dist/compiler/config/defaults.js.map +1 -0
- package/dist/compiler/config/loadConfig.d.ts +2 -0
- package/dist/compiler/config/loadConfig.d.ts.map +1 -0
- package/dist/compiler/config/loadConfig.js +3 -0
- package/dist/compiler/config/loadConfig.js.map +1 -0
- package/dist/compiler/diagnostics/errors.d.ts +2 -0
- package/dist/compiler/diagnostics/errors.d.ts.map +1 -0
- package/dist/compiler/diagnostics/errors.js +3 -0
- package/dist/compiler/diagnostics/errors.js.map +1 -0
- package/dist/compiler/emit/openapi.d.ts +2 -0
- package/dist/compiler/emit/openapi.d.ts.map +1 -0
- package/dist/compiler/emit/openapi.js +3 -0
- package/dist/compiler/emit/openapi.js.map +1 -0
- package/dist/compiler/emit/routes.d.ts +2 -0
- package/dist/compiler/emit/routes.d.ts.map +1 -0
- package/dist/compiler/emit/routes.js +3 -0
- package/dist/compiler/emit/routes.js.map +1 -0
- package/dist/compiler/program/loadTsProgram.d.ts +2 -0
- package/dist/compiler/program/loadTsProgram.d.ts.map +1 -0
- package/dist/compiler/program/loadTsProgram.js +3 -0
- package/dist/compiler/program/loadTsProgram.js.map +1 -0
- package/dist/compiler/scan/actions.d.ts +2 -0
- package/dist/compiler/scan/actions.d.ts.map +1 -0
- package/dist/compiler/scan/actions.js +3 -0
- package/dist/compiler/scan/actions.js.map +1 -0
- package/dist/compiler/scan/controllers.d.ts +2 -0
- package/dist/compiler/scan/controllers.d.ts.map +1 -0
- package/dist/compiler/scan/controllers.js +3 -0
- package/dist/compiler/scan/controllers.js.map +1 -0
- package/dist/compiler/scan/types.d.ts +2 -0
- package/dist/compiler/scan/types.d.ts.map +1 -0
- package/dist/compiler/scan/types.js +3 -0
- package/dist/compiler/scan/types.js.map +1 -0
- package/dist/contracts/context.d.ts +10 -0
- package/dist/contracts/context.d.ts.map +1 -0
- package/dist/contracts/context.js +2 -0
- package/dist/contracts/context.js.map +1 -0
- package/dist/contracts/errors.d.ts +22 -0
- package/dist/contracts/errors.d.ts.map +1 -0
- package/dist/contracts/errors.js +2 -0
- package/dist/contracts/errors.js.map +1 -0
- package/dist/contracts/http.d.ts +2 -0
- package/dist/contracts/http.d.ts.map +1 -0
- package/dist/contracts/http.js +3 -0
- package/dist/contracts/http.js.map +1 -0
- package/dist/contracts/middleware.d.ts +2 -0
- package/dist/contracts/middleware.d.ts.map +1 -0
- package/dist/contracts/middleware.js +3 -0
- package/dist/contracts/middleware.js.map +1 -0
- package/dist/contracts/openapi-v3.d.ts +77 -0
- package/dist/contracts/openapi-v3.d.ts.map +1 -0
- package/dist/contracts/openapi-v3.js +2 -0
- package/dist/contracts/openapi-v3.js.map +1 -0
- package/dist/contracts/openapi.d.ts +2 -0
- package/dist/contracts/openapi.d.ts.map +1 -0
- package/dist/contracts/openapi.js +2 -0
- package/dist/contracts/openapi.js.map +1 -0
- package/dist/contracts/reply.d.ts +11 -0
- package/dist/contracts/reply.d.ts.map +1 -0
- package/dist/contracts/reply.js +4 -0
- package/dist/contracts/reply.js.map +1 -0
- package/dist/contracts/response-types.d.ts +40 -0
- package/dist/contracts/response-types.d.ts.map +1 -0
- package/dist/contracts/response-types.js +2 -0
- package/dist/contracts/response-types.js.map +1 -0
- package/dist/contracts/responses.d.ts +18 -0
- package/dist/contracts/responses.d.ts.map +1 -0
- package/dist/contracts/responses.js +2 -0
- package/dist/contracts/responses.js.map +1 -0
- package/dist/contracts/route-options.d.ts +24 -0
- package/dist/contracts/route-options.d.ts.map +1 -0
- package/dist/contracts/route-options.js +2 -0
- package/dist/contracts/route-options.js.map +1 -0
- package/dist/contracts/route-typing.d.ts +25 -0
- package/dist/contracts/route-typing.d.ts.map +1 -0
- package/dist/contracts/route-typing.js +2 -0
- package/dist/contracts/route-typing.js.map +1 -0
- package/dist/contracts/validator.d.ts +25 -0
- package/dist/contracts/validator.d.ts.map +1 -0
- package/dist/contracts/validator.js +2 -0
- package/dist/contracts/validator.js.map +1 -0
- package/dist/core/binding/binder.d.ts +19 -0
- package/dist/core/binding/binder.d.ts.map +1 -0
- package/dist/core/binding/binder.js +128 -0
- package/dist/core/binding/binder.js.map +1 -0
- package/dist/core/binding/coerce/arrays.d.ts +7 -0
- package/dist/core/binding/coerce/arrays.d.ts.map +1 -0
- package/dist/core/binding/coerce/arrays.js +28 -0
- package/dist/core/binding/coerce/arrays.js.map +1 -0
- package/dist/core/binding/coerce/csv.d.ts +2 -0
- package/dist/core/binding/coerce/csv.d.ts.map +1 -0
- package/dist/core/binding/coerce/csv.js +7 -0
- package/dist/core/binding/coerce/csv.js.map +1 -0
- package/dist/core/binding/coerce/objects.d.ts +2 -0
- package/dist/core/binding/coerce/objects.d.ts.map +1 -0
- package/dist/core/binding/coerce/objects.js +3 -0
- package/dist/core/binding/coerce/objects.js.map +1 -0
- package/dist/core/binding/coerce/primitives.d.ts +3 -0
- package/dist/core/binding/coerce/primitives.d.ts.map +1 -0
- package/dist/core/binding/coerce/primitives.js +18 -0
- package/dist/core/binding/coerce/primitives.js.map +1 -0
- package/dist/core/binding/index.d.ts +2 -0
- package/dist/core/binding/index.d.ts.map +1 -0
- package/dist/core/binding/index.js +2 -0
- package/dist/core/binding/index.js.map +1 -0
- package/dist/core/binding/rules/inferFromHttpMethod.d.ts +6 -0
- package/dist/core/binding/rules/inferFromHttpMethod.d.ts.map +1 -0
- package/dist/core/binding/rules/inferFromHttpMethod.js +11 -0
- package/dist/core/binding/rules/inferFromHttpMethod.js.map +1 -0
- package/dist/core/binding/rules/inferFromPath.d.ts +2 -0
- package/dist/core/binding/rules/inferFromPath.d.ts.map +1 -0
- package/dist/core/binding/rules/inferFromPath.js +9 -0
- package/dist/core/binding/rules/inferFromPath.js.map +1 -0
- package/dist/core/binding/rules/wrappers.d.ts +2 -0
- package/dist/core/binding/rules/wrappers.d.ts.map +1 -0
- package/dist/core/binding/rules/wrappers.js +3 -0
- package/dist/core/binding/rules/wrappers.js.map +1 -0
- package/dist/core/errors/http-error.d.ts +9 -0
- package/dist/core/errors/http-error.d.ts.map +1 -0
- package/dist/core/errors/http-error.js +17 -0
- package/dist/core/errors/http-error.js.map +1 -0
- package/dist/core/errors/index.d.ts +4 -0
- package/dist/core/errors/index.d.ts.map +1 -0
- package/dist/core/errors/index.js +4 -0
- package/dist/core/errors/index.js.map +1 -0
- package/dist/core/errors/problem.d.ts +3 -0
- package/dist/core/errors/problem.d.ts.map +1 -0
- package/dist/core/errors/problem.js +33 -0
- package/dist/core/errors/problem.js.map +1 -0
- package/dist/core/errors/validation-error.d.ts +8 -0
- package/dist/core/errors/validation-error.d.ts.map +1 -0
- package/dist/core/errors/validation-error.js +17 -0
- package/dist/core/errors/validation-error.js.map +1 -0
- package/dist/core/openapi/buildOpenApi.d.ts +14 -0
- package/dist/core/openapi/buildOpenApi.d.ts.map +1 -0
- package/dist/core/openapi/buildOpenApi.js +134 -0
- package/dist/core/openapi/buildOpenApi.js.map +1 -0
- package/dist/core/openapi/index.d.ts +2 -0
- package/dist/core/openapi/index.d.ts.map +1 -0
- package/dist/core/openapi/index.js +2 -0
- package/dist/core/openapi/index.js.map +1 -0
- package/dist/core/openapi/schema/formats.d.ts +2 -0
- package/dist/core/openapi/schema/formats.d.ts.map +1 -0
- package/dist/core/openapi/schema/formats.js +3 -0
- package/dist/core/openapi/schema/formats.js.map +1 -0
- package/dist/core/openapi/schema/registry.d.ts +9 -0
- package/dist/core/openapi/schema/registry.d.ts.map +1 -0
- package/dist/core/openapi/schema/registry.js +21 -0
- package/dist/core/openapi/schema/registry.js.map +1 -0
- package/dist/core/openapi/schema/schemaModel.d.ts +2 -0
- package/dist/core/openapi/schema/schemaModel.d.ts.map +1 -0
- package/dist/core/openapi/schema/schemaModel.js +3 -0
- package/dist/core/openapi/schema/schemaModel.js.map +1 -0
- package/dist/core/openapi/schema/schemaRegistry.d.ts +2 -0
- package/dist/core/openapi/schema/schemaRegistry.d.ts.map +1 -0
- package/dist/core/openapi/schema/schemaRegistry.js +3 -0
- package/dist/core/openapi/schema/schemaRegistry.js.map +1 -0
- package/dist/core/openapi/schema/toOpenApi.d.ts +4 -0
- package/dist/core/openapi/schema/toOpenApi.d.ts.map +1 -0
- package/dist/core/openapi/schema/toOpenApi.js +82 -0
- package/dist/core/openapi/schema/toOpenApi.js.map +1 -0
- package/dist/core/pipeline/compose.d.ts +2 -0
- package/dist/core/pipeline/compose.d.ts.map +1 -0
- package/dist/core/pipeline/compose.js +3 -0
- package/dist/core/pipeline/compose.js.map +1 -0
- package/dist/core/pipeline/errorMap.d.ts +2 -0
- package/dist/core/pipeline/errorMap.d.ts.map +1 -0
- package/dist/core/pipeline/errorMap.js +3 -0
- package/dist/core/pipeline/errorMap.js.map +1 -0
- package/dist/core/pipeline/invoke.d.ts +2 -0
- package/dist/core/pipeline/invoke.d.ts.map +1 -0
- package/dist/core/pipeline/invoke.js +3 -0
- package/dist/core/pipeline/invoke.js.map +1 -0
- package/dist/core/pipeline/result.d.ts +2 -0
- package/dist/core/pipeline/result.d.ts.map +1 -0
- package/dist/core/pipeline/result.js +3 -0
- package/dist/core/pipeline/result.js.map +1 -0
- package/dist/core/registry/buildRegistry.d.ts +3 -0
- package/dist/core/registry/buildRegistry.d.ts.map +1 -0
- package/dist/core/registry/buildRegistry.js +61 -0
- package/dist/core/registry/buildRegistry.js.map +1 -0
- package/dist/core/registry/conflicts.d.ts +6 -0
- package/dist/core/registry/conflicts.d.ts.map +1 -0
- package/dist/core/registry/conflicts.js +21 -0
- package/dist/core/registry/conflicts.js.map +1 -0
- package/dist/core/registry/index.d.ts +5 -0
- package/dist/core/registry/index.d.ts.map +1 -0
- package/dist/core/registry/index.js +5 -0
- package/dist/core/registry/index.js.map +1 -0
- package/dist/core/registry/normalize.d.ts +3 -0
- package/dist/core/registry/normalize.d.ts.map +1 -0
- package/dist/core/registry/normalize.js +24 -0
- package/dist/core/registry/normalize.js.map +1 -0
- package/dist/core/registry/types.d.ts +32 -0
- package/dist/core/registry/types.d.ts.map +1 -0
- package/dist/core/registry/types.js +2 -0
- package/dist/core/registry/types.js.map +1 -0
- package/dist/core/reply/index.d.ts +3 -0
- package/dist/core/reply/index.d.ts.map +1 -0
- package/dist/core/reply/index.js +3 -0
- package/dist/core/reply/index.js.map +1 -0
- package/dist/core/reply/reply.d.ts +8 -0
- package/dist/core/reply/reply.d.ts.map +1 -0
- package/dist/core/reply/reply.js +18 -0
- package/dist/core/reply/reply.js.map +1 -0
- package/dist/core/reply/typed.d.ts +27 -0
- package/dist/core/reply/typed.d.ts.map +1 -0
- package/dist/core/reply/typed.js +19 -0
- package/dist/core/reply/typed.js.map +1 -0
- package/dist/core/responses/helpers.d.ts +10 -0
- package/dist/core/responses/helpers.d.ts.map +1 -0
- package/dist/core/responses/helpers.js +8 -0
- package/dist/core/responses/helpers.js.map +1 -0
- package/dist/core/responses/index.d.ts +4 -0
- package/dist/core/responses/index.d.ts.map +1 -0
- package/dist/core/responses/index.js +4 -0
- package/dist/core/responses/index.js.map +1 -0
- package/dist/core/responses/normalize.d.ts +3 -0
- package/dist/core/responses/normalize.d.ts.map +1 -0
- package/dist/core/responses/normalize.js +32 -0
- package/dist/core/responses/normalize.js.map +1 -0
- package/dist/core/responses/pickStatus.d.ts +3 -0
- package/dist/core/responses/pickStatus.d.ts.map +1 -0
- package/dist/core/responses/pickStatus.js +27 -0
- package/dist/core/responses/pickStatus.js.map +1 -0
- package/dist/core/route/defineRoute.d.ts +27 -0
- package/dist/core/route/defineRoute.d.ts.map +1 -0
- package/dist/core/route/defineRoute.js +18 -0
- package/dist/core/route/defineRoute.js.map +1 -0
- package/dist/core/route/index.d.ts +2 -0
- package/dist/core/route/index.d.ts.map +1 -0
- package/dist/core/route/index.js +2 -0
- package/dist/core/route/index.js.map +1 -0
- package/dist/core/serialization/json.d.ts +2 -0
- package/dist/core/serialization/json.d.ts.map +1 -0
- package/dist/core/serialization/json.js +3 -0
- package/dist/core/serialization/json.js.map +1 -0
- package/dist/core/typing/path-params.d.ts +2 -0
- package/dist/core/typing/path-params.d.ts.map +1 -0
- package/dist/core/typing/path-params.js +2 -0
- package/dist/core/typing/path-params.js.map +1 -0
- package/dist/decorators/binding.d.ts +9 -0
- package/dist/decorators/binding.d.ts.map +1 -0
- package/dist/decorators/binding.js +18 -0
- package/dist/decorators/binding.js.map +1 -0
- package/dist/decorators/controller.d.ts +6 -0
- package/dist/decorators/controller.d.ts.map +1 -0
- package/dist/decorators/controller.js +26 -0
- package/dist/decorators/controller.js.map +1 -0
- package/dist/decorators/db.d.ts +2 -0
- package/dist/decorators/db.d.ts.map +1 -0
- package/dist/decorators/db.js +3 -0
- package/dist/decorators/db.js.map +1 -0
- package/dist/decorators/docs.d.ts +2 -0
- package/dist/decorators/docs.d.ts.map +1 -0
- package/dist/decorators/docs.js +3 -0
- package/dist/decorators/docs.js.map +1 -0
- package/dist/decorators/index.d.ts +4 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/dist/decorators/index.js +4 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/decorators/methods.d.ts +24 -0
- package/dist/decorators/methods.d.ts.map +1 -0
- package/dist/decorators/methods.js +46 -0
- package/dist/decorators/methods.js.map +1 -0
- package/dist/decorators/middleware.d.ts +2 -0
- package/dist/decorators/middleware.d.ts.map +1 -0
- package/dist/decorators/middleware.js +3 -0
- package/dist/decorators/middleware.js.map +1 -0
- package/dist/decorators/responses.d.ts +2 -0
- package/dist/decorators/responses.d.ts.map +1 -0
- package/dist/decorators/responses.js +3 -0
- package/dist/decorators/responses.js.map +1 -0
- package/dist/decorators/security.d.ts +2 -0
- package/dist/decorators/security.d.ts.map +1 -0
- package/dist/decorators/security.js +3 -0
- package/dist/decorators/security.js.map +1 -0
- package/dist/express.d.ts +2 -0
- package/dist/express.d.ts.map +1 -0
- package/dist/express.js +2 -0
- package/dist/express.js.map +1 -0
- package/dist/index.d.ts +12 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +12 -2
- package/dist/index.js.map +1 -0
- package/dist/integrations/metal-orm/index.d.ts +2 -0
- package/dist/integrations/metal-orm/index.d.ts.map +1 -0
- package/dist/integrations/metal-orm/index.js +2 -0
- package/dist/integrations/metal-orm/index.js.map +1 -0
- package/dist/integrations/metal-orm/pagination/executePaged.d.ts +2 -0
- package/dist/integrations/metal-orm/pagination/executePaged.d.ts.map +1 -0
- package/dist/integrations/metal-orm/pagination/executePaged.js +3 -0
- package/dist/integrations/metal-orm/pagination/executePaged.js.map +1 -0
- package/dist/integrations/metal-orm/pagination/page.d.ts +2 -0
- package/dist/integrations/metal-orm/pagination/page.d.ts.map +1 -0
- package/dist/integrations/metal-orm/pagination/page.js +3 -0
- package/dist/integrations/metal-orm/pagination/page.js.map +1 -0
- package/dist/integrations/metal-orm/query/filters.d.ts +2 -0
- package/dist/integrations/metal-orm/query/filters.d.ts.map +1 -0
- package/dist/integrations/metal-orm/query/filters.js +3 -0
- package/dist/integrations/metal-orm/query/filters.js.map +1 -0
- package/dist/integrations/metal-orm/query/search.d.ts +2 -0
- package/dist/integrations/metal-orm/query/search.d.ts.map +1 -0
- package/dist/integrations/metal-orm/query/search.js +3 -0
- package/dist/integrations/metal-orm/query/search.js.map +1 -0
- package/dist/integrations/metal-orm/query/sort.d.ts +2 -0
- package/dist/integrations/metal-orm/query/sort.d.ts.map +1 -0
- package/dist/integrations/metal-orm/query/sort.js +3 -0
- package/dist/integrations/metal-orm/query/sort.js.map +1 -0
- package/dist/integrations/metal-orm/save-graph/helpers.d.ts +2 -0
- package/dist/integrations/metal-orm/save-graph/helpers.d.ts.map +1 -0
- package/dist/integrations/metal-orm/save-graph/helpers.js +3 -0
- package/dist/integrations/metal-orm/save-graph/helpers.js.map +1 -0
- package/dist/integrations/metal-orm/save-graph/types.d.ts +2 -0
- package/dist/integrations/metal-orm/save-graph/types.d.ts.map +1 -0
- package/dist/integrations/metal-orm/save-graph/types.js +3 -0
- package/dist/integrations/metal-orm/save-graph/types.js.map +1 -0
- package/dist/integrations/metal-orm/schema/column-map.d.ts +5 -0
- package/dist/integrations/metal-orm/schema/column-map.d.ts.map +1 -0
- package/dist/integrations/metal-orm/schema/column-map.js +80 -0
- package/dist/integrations/metal-orm/schema/column-map.js.map +1 -0
- package/dist/integrations/metal-orm/schema/ddl.d.ts +2 -0
- package/dist/integrations/metal-orm/schema/ddl.d.ts.map +1 -0
- package/dist/integrations/metal-orm/schema/ddl.js +3 -0
- package/dist/integrations/metal-orm/schema/ddl.js.map +1 -0
- package/dist/integrations/metal-orm/schema/dto.d.ts +7 -0
- package/dist/integrations/metal-orm/schema/dto.d.ts.map +1 -0
- package/dist/integrations/metal-orm/schema/dto.js +34 -0
- package/dist/integrations/metal-orm/schema/dto.js.map +1 -0
- package/dist/integrations/metal-orm/schema/entity.d.ts +17 -0
- package/dist/integrations/metal-orm/schema/entity.d.ts.map +1 -0
- package/dist/integrations/metal-orm/schema/entity.js +27 -0
- package/dist/integrations/metal-orm/schema/entity.js.map +1 -0
- package/dist/integrations/metal-orm/schema/filters.d.ts +11 -0
- package/dist/integrations/metal-orm/schema/filters.d.ts.map +1 -0
- package/dist/integrations/metal-orm/schema/filters.js +20 -0
- package/dist/integrations/metal-orm/schema/filters.js.map +1 -0
- package/dist/integrations/metal-orm/schema/index.d.ts +5 -0
- package/dist/integrations/metal-orm/schema/index.d.ts.map +1 -0
- package/dist/integrations/metal-orm/schema/index.js +5 -0
- package/dist/integrations/metal-orm/schema/index.js.map +1 -0
- package/dist/integrations/metal-orm/schema/openapi/entityToSchema.d.ts +2 -0
- package/dist/integrations/metal-orm/schema/openapi/entityToSchema.d.ts.map +1 -0
- package/dist/integrations/metal-orm/schema/openapi/entityToSchema.js +3 -0
- package/dist/integrations/metal-orm/schema/openapi/entityToSchema.js.map +1 -0
- package/dist/integrations/metal-orm/schema/openapi/tableDefToSchema.d.ts +2 -0
- package/dist/integrations/metal-orm/schema/openapi/tableDefToSchema.d.ts.map +1 -0
- package/dist/integrations/metal-orm/schema/openapi/tableDefToSchema.js +3 -0
- package/dist/integrations/metal-orm/schema/openapi/tableDefToSchema.js.map +1 -0
- package/dist/integrations/metal-orm/schema/sqlite.d.ts +2 -0
- package/dist/integrations/metal-orm/schema/sqlite.d.ts.map +1 -0
- package/dist/integrations/metal-orm/schema/sqlite.js +3 -0
- package/dist/integrations/metal-orm/schema/sqlite.js.map +1 -0
- package/dist/integrations/metal-orm/schema/tabledef.d.ts +4 -0
- package/dist/integrations/metal-orm/schema/tabledef.d.ts.map +1 -0
- package/dist/integrations/metal-orm/schema/tabledef.js +10 -0
- package/dist/integrations/metal-orm/schema/tabledef.js.map +1 -0
- package/dist/integrations/metal-orm/schema/types.d.ts +7 -0
- package/dist/integrations/metal-orm/schema/types.d.ts.map +1 -0
- package/dist/integrations/metal-orm/schema/types.js +2 -0
- package/dist/integrations/metal-orm/schema/types.js.map +1 -0
- package/dist/integrations/metal-orm/serialization/entitySerializer.d.ts +2 -0
- package/dist/integrations/metal-orm/serialization/entitySerializer.d.ts.map +1 -0
- package/dist/integrations/metal-orm/serialization/entitySerializer.js +3 -0
- package/dist/integrations/metal-orm/serialization/entitySerializer.js.map +1 -0
- package/dist/integrations/metal-orm/serialization/relationPolicy.d.ts +2 -0
- package/dist/integrations/metal-orm/serialization/relationPolicy.d.ts.map +1 -0
- package/dist/integrations/metal-orm/serialization/relationPolicy.js +3 -0
- package/dist/integrations/metal-orm/serialization/relationPolicy.js.map +1 -0
- package/dist/integrations/metal-orm/session/context.d.ts +2 -0
- package/dist/integrations/metal-orm/session/context.d.ts.map +1 -0
- package/dist/integrations/metal-orm/session/context.js +3 -0
- package/dist/integrations/metal-orm/session/context.js.map +1 -0
- package/dist/integrations/metal-orm/session/middleware.d.ts +2 -0
- package/dist/integrations/metal-orm/session/middleware.d.ts.map +1 -0
- package/dist/integrations/metal-orm/session/middleware.js +3 -0
- package/dist/integrations/metal-orm/session/middleware.js.map +1 -0
- package/dist/integrations/metal-orm/session/transaction.d.ts +2 -0
- package/dist/integrations/metal-orm/session/transaction.d.ts.map +1 -0
- package/dist/integrations/metal-orm/session/transaction.js +3 -0
- package/dist/integrations/metal-orm/session/transaction.js.map +1 -0
- package/dist/integrations/metal-orm/testing/setupSchema.d.ts +2 -0
- package/dist/integrations/metal-orm/testing/setupSchema.d.ts.map +1 -0
- package/dist/integrations/metal-orm/testing/setupSchema.js +3 -0
- package/dist/integrations/metal-orm/testing/setupSchema.js.map +1 -0
- package/dist/integrations/metal-orm/testing/sqliteMemory.d.ts +2 -0
- package/dist/integrations/metal-orm/testing/sqliteMemory.d.ts.map +1 -0
- package/dist/integrations/metal-orm/testing/sqliteMemory.js +3 -0
- package/dist/integrations/metal-orm/testing/sqliteMemory.js.map +1 -0
- package/dist/metadata/bag.d.ts +17 -0
- package/dist/metadata/bag.d.ts.map +1 -0
- package/dist/metadata/bag.js +38 -0
- package/dist/metadata/bag.js.map +1 -0
- package/dist/metadata/index.d.ts +4 -0
- package/dist/metadata/index.d.ts.map +1 -0
- package/dist/metadata/index.js +4 -0
- package/dist/metadata/index.js.map +1 -0
- package/dist/metadata/keys.d.ts +52 -0
- package/dist/metadata/keys.d.ts.map +1 -0
- package/dist/metadata/keys.js +29 -0
- package/dist/metadata/keys.js.map +1 -0
- package/dist/metadata/merge.d.ts +9 -0
- package/dist/metadata/merge.d.ts.map +1 -0
- package/dist/metadata/merge.js +27 -0
- package/dist/metadata/merge.js.map +1 -0
- package/dist/metal-orm.d.ts +2 -0
- package/dist/metal-orm.d.ts.map +1 -0
- package/dist/metal-orm.js +2 -0
- package/dist/metal-orm.js.map +1 -0
- package/dist/validation/native/index.d.ts +3 -0
- package/dist/validation/native/index.d.ts.map +1 -0
- package/dist/validation/native/index.js +3 -0
- package/dist/validation/native/index.js.map +1 -0
- package/dist/validation/native/ir.d.ts +38 -0
- package/dist/validation/native/ir.d.ts.map +1 -0
- package/dist/validation/native/ir.js +2 -0
- package/dist/validation/native/ir.js.map +1 -0
- package/dist/validation/native/schema.d.ts +63 -0
- package/dist/validation/native/schema.d.ts.map +1 -0
- package/dist/validation/native/schema.js +271 -0
- package/dist/validation/native/schema.js.map +1 -0
- package/dist/validation/native/validator.d.ts +21 -0
- package/dist/validation/native/validator.d.ts.map +1 -0
- package/dist/validation/native/validator.js +48 -0
- package/dist/validation/native/validator.js.map +1 -0
- package/package.json +53 -34
- package/dist/cli/generate-routes.js +0 -101
- package/dist/cli/generate-swagger.js +0 -197
- package/dist/controllers/advanced.controller.js +0 -131
- package/dist/controllers/user.controller.js +0 -121
- package/dist/entities/user.entity.js +0 -1
- package/dist/lib/common.js +0 -62
- package/dist/lib/decorators.js +0 -116
- package/dist/middleware/auth.middleware.js +0 -13
- package/dist/routes.js +0 -80
- package/dist/server.js +0 -18
- package/dist/src/cli/generate-routes.js +0 -105
- package/dist/src/cli/generate-swagger.js +0 -197
- package/dist/src/index.js +0 -4
- package/dist/src/lib/common.js +0 -62
- package/dist/src/lib/decorators.js +0 -116
- package/dist/src/routes.js +0 -80
- package/dist/src/server.js +0 -18
- package/dist/tests/example-app/controllers/advanced.controller.js +0 -130
- package/dist/tests/example-app/controllers/controllers/advanced.controller.js +0 -131
- package/dist/tests/example-app/controllers/controllers/user.controller.js +0 -121
- package/dist/tests/example-app/controllers/user.controller.js +0 -121
- package/dist/tests/example-app/entities/entities/user.entity.js +0 -1
- package/dist/tests/example-app/entities/user.entity.js +0 -1
- package/dist/tests/example-app/middleware/auth.middleware.js +0 -13
- package/dist/tests/example-app/middleware/middleware/auth.middleware.js +0 -13
- package/dist/tests/example-app/routes.js +0 -80
- package/dist/tests/example-app/server.js +0 -23
- package/scripts/run-example.js +0 -32
- package/src/cli/generate-routes.ts +0 -123
- package/src/cli/generate-swagger.ts +0 -216
- package/src/index.js +0 -20
- package/src/index.ts +0 -4
- package/src/lib/common.js +0 -68
- package/src/lib/common.ts +0 -35
- package/src/lib/decorators.js +0 -128
- package/src/lib/decorators.ts +0 -136
- package/swagger.json +0 -238
- package/tests/e2e.test.ts +0 -72
- package/tests/example-app/controllers/advanced.controller.ts +0 -52
- package/tests/example-app/controllers/user.controller.ts +0 -35
- package/tests/example-app/entities/user.entity.ts +0 -8
- package/tests/example-app/middleware/auth.middleware.ts +0 -16
- package/tests/example-app/routes.ts +0 -102
- package/tests/example-app/server.ts +0 -30
- package/tests/generators.test.ts +0 -48
- package/tests/utils.ts +0 -46
- package/tsconfig.json +0 -20
|
@@ -1,197 +0,0 @@
|
|
|
1
|
-
// src/cli/generate-swagger.ts
|
|
2
|
-
import { Project, SyntaxKind } from "ts-morph";
|
|
3
|
-
import * as fs from "fs";
|
|
4
|
-
const PROJECT_ROOT = "./tsconfig.json";
|
|
5
|
-
const OUTPUT_FILE = "./swagger.json";
|
|
6
|
-
const project = new Project({ tsConfigFilePath: PROJECT_ROOT });
|
|
7
|
-
const openApiSpec = {
|
|
8
|
-
openapi: "3.0.0",
|
|
9
|
-
info: { title: "Adorn API", version: "2.0.0" },
|
|
10
|
-
paths: {},
|
|
11
|
-
components: {
|
|
12
|
-
schemas: {},
|
|
13
|
-
securitySchemes: {
|
|
14
|
-
bearerAuth: {
|
|
15
|
-
type: "http",
|
|
16
|
-
scheme: "bearer",
|
|
17
|
-
bearerFormat: "JWT"
|
|
18
|
-
}
|
|
19
|
-
}
|
|
20
|
-
},
|
|
21
|
-
};
|
|
22
|
-
// --- Helper: Deep Type Resolver ---
|
|
23
|
-
// This converts TypeScript Types (Generics, Interfaces, Primitives) into JSON Schema
|
|
24
|
-
function resolveSchema(type, collectedSchemas) {
|
|
25
|
-
// 1. Handle Primitives
|
|
26
|
-
if (type.isString() || type.isStringLiteral())
|
|
27
|
-
return { type: "string" };
|
|
28
|
-
if (type.isNumber() || type.isNumberLiteral())
|
|
29
|
-
return { type: "integer" };
|
|
30
|
-
if (type.isBoolean() || type.isBooleanLiteral())
|
|
31
|
-
return { type: "boolean" };
|
|
32
|
-
if (type.isArray()) {
|
|
33
|
-
const arrayType = type.getArrayElementType();
|
|
34
|
-
return {
|
|
35
|
-
type: "array",
|
|
36
|
-
items: arrayType ? resolveSchema(arrayType, collectedSchemas) : {},
|
|
37
|
-
};
|
|
38
|
-
}
|
|
39
|
-
// 2. Handle Union Types (Enums)
|
|
40
|
-
if (type.isUnion()) {
|
|
41
|
-
const unionTypes = type.getUnionTypes();
|
|
42
|
-
// Extract literal values (e.g., "active", 100)
|
|
43
|
-
const literals = unionTypes
|
|
44
|
-
.map(t => t.isLiteral() ? t.getLiteralValue() : null)
|
|
45
|
-
.filter(val => val !== null);
|
|
46
|
-
// If we found literals, it's an Enum
|
|
47
|
-
if (literals.length > 0) {
|
|
48
|
-
const isString = typeof literals[0] === 'string';
|
|
49
|
-
return {
|
|
50
|
-
type: isString ? 'string' : 'integer',
|
|
51
|
-
enum: literals
|
|
52
|
-
};
|
|
53
|
-
}
|
|
54
|
-
// If it's a mix of objects (e.g. User | Admin), OpenApi uses 'oneOf'
|
|
55
|
-
// Simplified for this demo: take the first non-null type
|
|
56
|
-
return resolveSchema(unionTypes[0], collectedSchemas);
|
|
57
|
-
}
|
|
58
|
-
// 3. Handle Objects (Classes, Interfaces, Nested Literals)
|
|
59
|
-
if (type.isObject()) {
|
|
60
|
-
// Recursion Guard: If we've seen this type name before in components, reference it!
|
|
61
|
-
// (This prevents infinite loops and reduces swagger size)
|
|
62
|
-
const symbol = type.getSymbol();
|
|
63
|
-
const typeName = symbol?.getName();
|
|
64
|
-
// Common excluded types
|
|
65
|
-
if (typeName === "Promise") {
|
|
66
|
-
return resolveSchema(type.getTypeArguments()[0], collectedSchemas);
|
|
67
|
-
}
|
|
68
|
-
if (typeName === "Date")
|
|
69
|
-
return { type: "string", format: "date-time" };
|
|
70
|
-
// If it's a named class/interface (e.g. "Address"), and we haven't processed it,
|
|
71
|
-
// we could add it to components.schemas. For now, we inline it for simplicity.
|
|
72
|
-
const properties = type.getProperties();
|
|
73
|
-
const schema = { type: "object", properties: {}, required: [] };
|
|
74
|
-
properties.forEach((prop) => {
|
|
75
|
-
const propName = prop.getName();
|
|
76
|
-
if (propName.startsWith("_"))
|
|
77
|
-
return; // Skip privates
|
|
78
|
-
// Get the type of the property using getTypeAtLocation
|
|
79
|
-
const declarations = prop.getDeclarations();
|
|
80
|
-
if (declarations.length > 0) {
|
|
81
|
-
const propType = prop.getTypeAtLocation(declarations[0]);
|
|
82
|
-
if (propType) {
|
|
83
|
-
// RECURSION HERE: Pass the property type back into resolveSchema
|
|
84
|
-
schema.properties[propName] = resolveSchema(propType, collectedSchemas);
|
|
85
|
-
if (!prop.isOptional()) {
|
|
86
|
-
schema.required.push(propName);
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
}
|
|
90
|
-
});
|
|
91
|
-
return schema;
|
|
92
|
-
}
|
|
93
|
-
return { type: "string" }; // Fallback
|
|
94
|
-
}
|
|
95
|
-
function processController(classDec) {
|
|
96
|
-
const controllerDec = classDec.getDecorators().find((d) => d.getName() === "Controller");
|
|
97
|
-
if (!controllerDec)
|
|
98
|
-
return;
|
|
99
|
-
const basePath = controllerDec.getArguments()[0]?.getText().replace(/['"]/g, "") || "/";
|
|
100
|
-
classDec.getMethods().forEach((method) => {
|
|
101
|
-
const getDec = method.getDecorator("Get");
|
|
102
|
-
const postDec = method.getDecorator("Post");
|
|
103
|
-
const putDec = method.getDecorator("Put");
|
|
104
|
-
const deleteDec = method.getDecorator("Delete");
|
|
105
|
-
const decorator = getDec || postDec || putDec || deleteDec;
|
|
106
|
-
if (!decorator)
|
|
107
|
-
return;
|
|
108
|
-
const httpMethod = getDec ? "get" : postDec ? "post" : putDec ? "put" : "delete";
|
|
109
|
-
const pathArg = decorator.getArguments()[0]?.getText().replace(/['"]/g, "") || "/";
|
|
110
|
-
const fullPath = `/${basePath}${pathArg}`.replace("//", "/");
|
|
111
|
-
const parameters = [];
|
|
112
|
-
const requestBody = { content: {} };
|
|
113
|
-
// --- 1. Request Analysis (Input DTOs) ---
|
|
114
|
-
const params = method.getParameters();
|
|
115
|
-
if (params.length > 0) {
|
|
116
|
-
const param = params[0];
|
|
117
|
-
const paramType = param.getType(); // This resolves generics and inheritance!
|
|
118
|
-
// Iterate ALL properties of the type (inherited included)
|
|
119
|
-
paramType.getProperties().forEach(prop => {
|
|
120
|
-
const propName = prop.getName();
|
|
121
|
-
// We need to check Decorators.
|
|
122
|
-
// Note: In mapped types/generics, getting decorators is hard.
|
|
123
|
-
// We fallback to checking the source declaration.
|
|
124
|
-
const declarations = prop.getDeclarations();
|
|
125
|
-
let isQuery = false;
|
|
126
|
-
let isBody = false;
|
|
127
|
-
let isPath = false;
|
|
128
|
-
// Check decorators on the definition
|
|
129
|
-
declarations.forEach(decl => {
|
|
130
|
-
if (decl.getKind() === SyntaxKind.PropertyDeclaration) {
|
|
131
|
-
const pDecl = decl;
|
|
132
|
-
if (pDecl.getDecorator("FromQuery"))
|
|
133
|
-
isQuery = true;
|
|
134
|
-
if (pDecl.getDecorator("FromPath"))
|
|
135
|
-
isPath = true;
|
|
136
|
-
if (pDecl.getDecorator("FromBody"))
|
|
137
|
-
isBody = true;
|
|
138
|
-
}
|
|
139
|
-
});
|
|
140
|
-
// IMPLICIT RULES:
|
|
141
|
-
// If it's a GET, and not path, default to Query.
|
|
142
|
-
// If it's a POST, and not path/query, default to Body.
|
|
143
|
-
if (!isQuery && !isPath && !isBody) {
|
|
144
|
-
if (httpMethod === "get")
|
|
145
|
-
isQuery = true;
|
|
146
|
-
else
|
|
147
|
-
isBody = true;
|
|
148
|
-
}
|
|
149
|
-
const propType = prop.getTypeAtLocation(param.getSourceFile());
|
|
150
|
-
const propTypeSchema = resolveSchema(propType, openApiSpec.components.schemas);
|
|
151
|
-
if (isPath) {
|
|
152
|
-
parameters.push({ name: propName, in: "path", required: true, schema: propTypeSchema });
|
|
153
|
-
}
|
|
154
|
-
else if (isQuery) {
|
|
155
|
-
parameters.push({ name: propName, in: "query", required: !prop.isOptional(), schema: propTypeSchema });
|
|
156
|
-
}
|
|
157
|
-
else if (isBody) {
|
|
158
|
-
if (!requestBody.content["application/json"]) {
|
|
159
|
-
requestBody.content["application/json"] = { schema: { type: "object", properties: {}, required: [] } };
|
|
160
|
-
}
|
|
161
|
-
const bodySchema = requestBody.content["application/json"].schema;
|
|
162
|
-
bodySchema.properties[propName] = propTypeSchema;
|
|
163
|
-
if (!prop.isOptional())
|
|
164
|
-
bodySchema.required.push(propName);
|
|
165
|
-
}
|
|
166
|
-
});
|
|
167
|
-
}
|
|
168
|
-
// --- 2. Authentication Check ---
|
|
169
|
-
const authDec = method.getDecorator("Authorized");
|
|
170
|
-
const controllerAuthDec = classDec.getDecorator("Authorized");
|
|
171
|
-
const isAuth = !!authDec || !!controllerAuthDec;
|
|
172
|
-
// --- 3. Response Analysis (Return Type) ---
|
|
173
|
-
const returnType = method.getReturnType(); // e.g. Promise<EntityResponse<User>>
|
|
174
|
-
const responseSchema = resolveSchema(returnType, openApiSpec.components.schemas);
|
|
175
|
-
if (!openApiSpec.paths[fullPath])
|
|
176
|
-
openApiSpec.paths[fullPath] = {};
|
|
177
|
-
openApiSpec.paths[fullPath][httpMethod] = {
|
|
178
|
-
operationId: method.getName(),
|
|
179
|
-
parameters,
|
|
180
|
-
requestBody: Object.keys(requestBody.content).length ? requestBody : undefined,
|
|
181
|
-
security: isAuth ? [{ bearerAuth: [] }] : undefined,
|
|
182
|
-
responses: {
|
|
183
|
-
200: {
|
|
184
|
-
description: "Success",
|
|
185
|
-
content: {
|
|
186
|
-
"application/json": { schema: responseSchema }
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
};
|
|
191
|
-
});
|
|
192
|
-
}
|
|
193
|
-
console.log("🔍 Scanning...");
|
|
194
|
-
const sourceFiles = project.getSourceFiles("src/**/*.ts");
|
|
195
|
-
sourceFiles.forEach(file => file.getClasses().forEach(processController));
|
|
196
|
-
fs.writeFileSync(OUTPUT_FILE, JSON.stringify(openApiSpec, null, 2));
|
|
197
|
-
console.log(`✅ Generated ${OUTPUT_FILE}`);
|
|
@@ -1,131 +0,0 @@
|
|
|
1
|
-
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
-
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
-
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
-
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
-
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
-
var _, done = false;
|
|
7
|
-
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
-
var context = {};
|
|
9
|
-
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
-
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
-
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
-
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
-
if (kind === "accessor") {
|
|
14
|
-
if (result === void 0) continue;
|
|
15
|
-
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
-
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
-
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
-
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
-
}
|
|
20
|
-
else if (_ = accept(result)) {
|
|
21
|
-
if (kind === "field") initializers.unshift(_);
|
|
22
|
-
else descriptor[key] = _;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
-
done = true;
|
|
27
|
-
};
|
|
28
|
-
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
-
var useValue = arguments.length > 2;
|
|
30
|
-
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
-
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
-
}
|
|
33
|
-
return useValue ? value : void 0;
|
|
34
|
-
};
|
|
35
|
-
// src/controllers/advanced.controller.ts
|
|
36
|
-
import { Controller, Get, Post, FromBody, FromPath } from "../lib/decorators.js";
|
|
37
|
-
import { PaginationQuery } from "../lib/common.js";
|
|
38
|
-
// --- 1. Advanced Request DTOs ---
|
|
39
|
-
// INHERITANCE: UserListRequest automatically gets 'page' and 'limit' from PaginationQuery
|
|
40
|
-
// AND the generator will find them because we scan the Type properties.
|
|
41
|
-
let UserListRequest = (() => {
|
|
42
|
-
let _classSuper = PaginationQuery;
|
|
43
|
-
let _tenantId_decorators;
|
|
44
|
-
let _tenantId_initializers = [];
|
|
45
|
-
let _tenantId_extraInitializers = [];
|
|
46
|
-
return class UserListRequest extends _classSuper {
|
|
47
|
-
static {
|
|
48
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(_classSuper[Symbol.metadata] ?? null) : void 0;
|
|
49
|
-
_tenantId_decorators = [FromPath()];
|
|
50
|
-
__esDecorate(null, null, _tenantId_decorators, { kind: "field", name: "tenantId", static: false, private: false, access: { has: obj => "tenantId" in obj, get: obj => obj.tenantId, set: (obj, value) => { obj.tenantId = value; } }, metadata: _metadata }, _tenantId_initializers, _tenantId_extraInitializers);
|
|
51
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
52
|
-
}
|
|
53
|
-
// Implicitly @FromQuery because it's a GET request and extends a class
|
|
54
|
-
search;
|
|
55
|
-
tenantId = __runInitializers(this, _tenantId_initializers, void 0);
|
|
56
|
-
constructor() {
|
|
57
|
-
super(...arguments);
|
|
58
|
-
__runInitializers(this, _tenantId_extraInitializers);
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
})();
|
|
62
|
-
export { UserListRequest };
|
|
63
|
-
// COMPOSITION: Using the Type Helper for safety, but class for Decorators
|
|
64
|
-
// We implement the Type Helper to ensure our Class matches the Entity rule
|
|
65
|
-
let CreateUserDto = (() => {
|
|
66
|
-
let _name_decorators;
|
|
67
|
-
let _name_initializers = [];
|
|
68
|
-
let _name_extraInitializers = [];
|
|
69
|
-
let _email_decorators;
|
|
70
|
-
let _email_initializers = [];
|
|
71
|
-
let _email_extraInitializers = [];
|
|
72
|
-
return class CreateUserDto {
|
|
73
|
-
static {
|
|
74
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
75
|
-
_name_decorators = [FromBody()];
|
|
76
|
-
_email_decorators = [FromBody()];
|
|
77
|
-
__esDecorate(null, null, _name_decorators, { kind: "field", name: "name", static: false, private: false, access: { has: obj => "name" in obj, get: obj => obj.name, set: (obj, value) => { obj.name = value; } }, metadata: _metadata }, _name_initializers, _name_extraInitializers);
|
|
78
|
-
__esDecorate(null, null, _email_decorators, { kind: "field", name: "email", static: false, private: false, access: { has: obj => "email" in obj, get: obj => obj.email, set: (obj, value) => { obj.email = value; } }, metadata: _metadata }, _email_initializers, _email_extraInitializers);
|
|
79
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
80
|
-
}
|
|
81
|
-
name = __runInitializers(this, _name_initializers, void 0);
|
|
82
|
-
email = (__runInitializers(this, _name_extraInitializers), __runInitializers(this, _email_initializers, void 0));
|
|
83
|
-
constructor() {
|
|
84
|
-
__runInitializers(this, _email_extraInitializers);
|
|
85
|
-
}
|
|
86
|
-
};
|
|
87
|
-
})();
|
|
88
|
-
export { CreateUserDto };
|
|
89
|
-
// --- 2. The Controller ---
|
|
90
|
-
let AdvancedController = (() => {
|
|
91
|
-
let _classDecorators = [Controller("advanced")];
|
|
92
|
-
let _classDescriptor;
|
|
93
|
-
let _classExtraInitializers = [];
|
|
94
|
-
let _classThis;
|
|
95
|
-
let _instanceExtraInitializers = [];
|
|
96
|
-
let _listUsers_decorators;
|
|
97
|
-
let _create_decorators;
|
|
98
|
-
var AdvancedController = class {
|
|
99
|
-
static { _classThis = this; }
|
|
100
|
-
static {
|
|
101
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
102
|
-
_listUsers_decorators = [Get("/{tenantId}/users")];
|
|
103
|
-
_create_decorators = [Post("/")];
|
|
104
|
-
__esDecorate(this, null, _listUsers_decorators, { kind: "method", name: "listUsers", static: false, private: false, access: { has: obj => "listUsers" in obj, get: obj => obj.listUsers }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
105
|
-
__esDecorate(this, null, _create_decorators, { kind: "method", name: "create", static: false, private: false, access: { has: obj => "create" in obj, get: obj => obj.create }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
106
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
107
|
-
AdvancedController = _classThis = _classDescriptor.value;
|
|
108
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
109
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
110
|
-
}
|
|
111
|
-
async listUsers(req) {
|
|
112
|
-
return [
|
|
113
|
-
{ id: "1", name: "Alice", email: "a@a.com", isActive: true, createdAt: "now" }
|
|
114
|
-
];
|
|
115
|
-
}
|
|
116
|
-
async create(req) {
|
|
117
|
-
return {
|
|
118
|
-
id: "123",
|
|
119
|
-
name: req.name,
|
|
120
|
-
email: req.email,
|
|
121
|
-
isActive: true,
|
|
122
|
-
createdAt: "now"
|
|
123
|
-
};
|
|
124
|
-
}
|
|
125
|
-
constructor() {
|
|
126
|
-
__runInitializers(this, _instanceExtraInitializers);
|
|
127
|
-
}
|
|
128
|
-
};
|
|
129
|
-
return AdvancedController = _classThis;
|
|
130
|
-
})();
|
|
131
|
-
export { AdvancedController };
|
|
@@ -1,121 +0,0 @@
|
|
|
1
|
-
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
-
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
-
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
-
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
-
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
-
var _, done = false;
|
|
7
|
-
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
-
var context = {};
|
|
9
|
-
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
-
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
-
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
-
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
-
if (kind === "accessor") {
|
|
14
|
-
if (result === void 0) continue;
|
|
15
|
-
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
-
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
-
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
-
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
-
}
|
|
20
|
-
else if (_ = accept(result)) {
|
|
21
|
-
if (kind === "field") initializers.unshift(_);
|
|
22
|
-
else descriptor[key] = _;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
-
done = true;
|
|
27
|
-
};
|
|
28
|
-
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
-
var useValue = arguments.length > 2;
|
|
30
|
-
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
-
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
-
}
|
|
33
|
-
return useValue ? value : void 0;
|
|
34
|
-
};
|
|
35
|
-
// src/controllers/user.controller.ts
|
|
36
|
-
import { Controller, Get, Post, FromQuery, FromPath, FromBody } from "../lib/decorators.js";
|
|
37
|
-
// --- DTO Definitions (The substitute for Parameter Decorators) ---
|
|
38
|
-
let GetUserRequest = (() => {
|
|
39
|
-
let _userId_decorators;
|
|
40
|
-
let _userId_initializers = [];
|
|
41
|
-
let _userId_extraInitializers = [];
|
|
42
|
-
let _details_decorators;
|
|
43
|
-
let _details_initializers = [];
|
|
44
|
-
let _details_extraInitializers = [];
|
|
45
|
-
return class GetUserRequest {
|
|
46
|
-
static {
|
|
47
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
48
|
-
_userId_decorators = [FromPath()];
|
|
49
|
-
_details_decorators = [FromQuery()];
|
|
50
|
-
__esDecorate(null, null, _userId_decorators, { kind: "field", name: "userId", static: false, private: false, access: { has: obj => "userId" in obj, get: obj => obj.userId, set: (obj, value) => { obj.userId = value; } }, metadata: _metadata }, _userId_initializers, _userId_extraInitializers);
|
|
51
|
-
__esDecorate(null, null, _details_decorators, { kind: "field", name: "details", static: false, private: false, access: { has: obj => "details" in obj, get: obj => obj.details, set: (obj, value) => { obj.details = value; } }, metadata: _metadata }, _details_initializers, _details_extraInitializers);
|
|
52
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
53
|
-
}
|
|
54
|
-
userId = __runInitializers(this, _userId_initializers, void 0);
|
|
55
|
-
details = (__runInitializers(this, _userId_extraInitializers), __runInitializers(this, _details_initializers, void 0));
|
|
56
|
-
constructor() {
|
|
57
|
-
__runInitializers(this, _details_extraInitializers);
|
|
58
|
-
}
|
|
59
|
-
};
|
|
60
|
-
})();
|
|
61
|
-
export { GetUserRequest };
|
|
62
|
-
let CreateUserRequest = (() => {
|
|
63
|
-
let _name_decorators;
|
|
64
|
-
let _name_initializers = [];
|
|
65
|
-
let _name_extraInitializers = [];
|
|
66
|
-
let _email_decorators;
|
|
67
|
-
let _email_initializers = [];
|
|
68
|
-
let _email_extraInitializers = [];
|
|
69
|
-
return class CreateUserRequest {
|
|
70
|
-
static {
|
|
71
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
72
|
-
_name_decorators = [FromBody()];
|
|
73
|
-
_email_decorators = [FromBody()];
|
|
74
|
-
__esDecorate(null, null, _name_decorators, { kind: "field", name: "name", static: false, private: false, access: { has: obj => "name" in obj, get: obj => obj.name, set: (obj, value) => { obj.name = value; } }, metadata: _metadata }, _name_initializers, _name_extraInitializers);
|
|
75
|
-
__esDecorate(null, null, _email_decorators, { kind: "field", name: "email", static: false, private: false, access: { has: obj => "email" in obj, get: obj => obj.email, set: (obj, value) => { obj.email = value; } }, metadata: _metadata }, _email_initializers, _email_extraInitializers);
|
|
76
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
77
|
-
}
|
|
78
|
-
name = __runInitializers(this, _name_initializers, void 0);
|
|
79
|
-
email = (__runInitializers(this, _name_extraInitializers), __runInitializers(this, _email_initializers, void 0));
|
|
80
|
-
constructor() {
|
|
81
|
-
__runInitializers(this, _email_extraInitializers);
|
|
82
|
-
}
|
|
83
|
-
};
|
|
84
|
-
})();
|
|
85
|
-
export { CreateUserRequest };
|
|
86
|
-
// --- The Controller ---
|
|
87
|
-
let UserController = (() => {
|
|
88
|
-
let _classDecorators = [Controller("users")];
|
|
89
|
-
let _classDescriptor;
|
|
90
|
-
let _classExtraInitializers = [];
|
|
91
|
-
let _classThis;
|
|
92
|
-
let _instanceExtraInitializers = [];
|
|
93
|
-
let _getUser_decorators;
|
|
94
|
-
let _createUser_decorators;
|
|
95
|
-
var UserController = class {
|
|
96
|
-
static { _classThis = this; }
|
|
97
|
-
static {
|
|
98
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
99
|
-
_getUser_decorators = [Get("/{userId}")];
|
|
100
|
-
_createUser_decorators = [Post("/")];
|
|
101
|
-
__esDecorate(this, null, _getUser_decorators, { kind: "method", name: "getUser", static: false, private: false, access: { has: obj => "getUser" in obj, get: obj => obj.getUser }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
102
|
-
__esDecorate(this, null, _createUser_decorators, { kind: "method", name: "createUser", static: false, private: false, access: { has: obj => "createUser" in obj, get: obj => obj.createUser }, metadata: _metadata }, null, _instanceExtraInitializers);
|
|
103
|
-
__esDecorate(null, _classDescriptor = { value: _classThis }, _classDecorators, { kind: "class", name: _classThis.name, metadata: _metadata }, null, _classExtraInitializers);
|
|
104
|
-
UserController = _classThis = _classDescriptor.value;
|
|
105
|
-
if (_metadata) Object.defineProperty(_classThis, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
106
|
-
__runInitializers(_classThis, _classExtraInitializers);
|
|
107
|
-
}
|
|
108
|
-
// Strong typing: 'req' is checked at edit time.
|
|
109
|
-
async getUser(req) {
|
|
110
|
-
return `Getting user ${req.userId} with details: ${req.details}`;
|
|
111
|
-
}
|
|
112
|
-
async createUser(req) {
|
|
113
|
-
console.log(`Creating user ${req.name}`);
|
|
114
|
-
}
|
|
115
|
-
constructor() {
|
|
116
|
-
__runInitializers(this, _instanceExtraInitializers);
|
|
117
|
-
}
|
|
118
|
-
};
|
|
119
|
-
return UserController = _classThis;
|
|
120
|
-
})();
|
|
121
|
-
export { UserController };
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
export {};
|
package/dist/lib/common.js
DELETED
|
@@ -1,62 +0,0 @@
|
|
|
1
|
-
var __esDecorate = (this && this.__esDecorate) || function (ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {
|
|
2
|
-
function accept(f) { if (f !== void 0 && typeof f !== "function") throw new TypeError("Function expected"); return f; }
|
|
3
|
-
var kind = contextIn.kind, key = kind === "getter" ? "get" : kind === "setter" ? "set" : "value";
|
|
4
|
-
var target = !descriptorIn && ctor ? contextIn["static"] ? ctor : ctor.prototype : null;
|
|
5
|
-
var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});
|
|
6
|
-
var _, done = false;
|
|
7
|
-
for (var i = decorators.length - 1; i >= 0; i--) {
|
|
8
|
-
var context = {};
|
|
9
|
-
for (var p in contextIn) context[p] = p === "access" ? {} : contextIn[p];
|
|
10
|
-
for (var p in contextIn.access) context.access[p] = contextIn.access[p];
|
|
11
|
-
context.addInitializer = function (f) { if (done) throw new TypeError("Cannot add initializers after decoration has completed"); extraInitializers.push(accept(f || null)); };
|
|
12
|
-
var result = (0, decorators[i])(kind === "accessor" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);
|
|
13
|
-
if (kind === "accessor") {
|
|
14
|
-
if (result === void 0) continue;
|
|
15
|
-
if (result === null || typeof result !== "object") throw new TypeError("Object expected");
|
|
16
|
-
if (_ = accept(result.get)) descriptor.get = _;
|
|
17
|
-
if (_ = accept(result.set)) descriptor.set = _;
|
|
18
|
-
if (_ = accept(result.init)) initializers.unshift(_);
|
|
19
|
-
}
|
|
20
|
-
else if (_ = accept(result)) {
|
|
21
|
-
if (kind === "field") initializers.unshift(_);
|
|
22
|
-
else descriptor[key] = _;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
if (target) Object.defineProperty(target, contextIn.name, descriptor);
|
|
26
|
-
done = true;
|
|
27
|
-
};
|
|
28
|
-
var __runInitializers = (this && this.__runInitializers) || function (thisArg, initializers, value) {
|
|
29
|
-
var useValue = arguments.length > 2;
|
|
30
|
-
for (var i = 0; i < initializers.length; i++) {
|
|
31
|
-
value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);
|
|
32
|
-
}
|
|
33
|
-
return useValue ? value : void 0;
|
|
34
|
-
};
|
|
35
|
-
// src/lib/common.ts
|
|
36
|
-
import { FromQuery } from "./decorators.js";
|
|
37
|
-
// --- 2. Pagination Logic ---
|
|
38
|
-
// We need a Concrete Class for Pagination because it carries Metadata (@FromQuery)
|
|
39
|
-
let PaginationQuery = (() => {
|
|
40
|
-
let _page_decorators;
|
|
41
|
-
let _page_initializers = [];
|
|
42
|
-
let _page_extraInitializers = [];
|
|
43
|
-
let _limit_decorators;
|
|
44
|
-
let _limit_initializers = [];
|
|
45
|
-
let _limit_extraInitializers = [];
|
|
46
|
-
return class PaginationQuery {
|
|
47
|
-
static {
|
|
48
|
-
const _metadata = typeof Symbol === "function" && Symbol.metadata ? Object.create(null) : void 0;
|
|
49
|
-
_page_decorators = [FromQuery()];
|
|
50
|
-
_limit_decorators = [FromQuery()];
|
|
51
|
-
__esDecorate(null, null, _page_decorators, { kind: "field", name: "page", static: false, private: false, access: { has: obj => "page" in obj, get: obj => obj.page, set: (obj, value) => { obj.page = value; } }, metadata: _metadata }, _page_initializers, _page_extraInitializers);
|
|
52
|
-
__esDecorate(null, null, _limit_decorators, { kind: "field", name: "limit", static: false, private: false, access: { has: obj => "limit" in obj, get: obj => obj.limit, set: (obj, value) => { obj.limit = value; } }, metadata: _metadata }, _limit_initializers, _limit_extraInitializers);
|
|
53
|
-
if (_metadata) Object.defineProperty(this, Symbol.metadata, { enumerable: true, configurable: true, writable: true, value: _metadata });
|
|
54
|
-
}
|
|
55
|
-
page = __runInitializers(this, _page_initializers, 1);
|
|
56
|
-
limit = (__runInitializers(this, _page_extraInitializers), __runInitializers(this, _limit_initializers, 20));
|
|
57
|
-
constructor() {
|
|
58
|
-
__runInitializers(this, _limit_extraInitializers);
|
|
59
|
-
}
|
|
60
|
-
};
|
|
61
|
-
})();
|
|
62
|
-
export { PaginationQuery };
|
package/dist/lib/decorators.js
DELETED
|
@@ -1,116 +0,0 @@
|
|
|
1
|
-
// src/lib/decorators.ts
|
|
2
|
-
// Context metadata symbol for standard decorators
|
|
3
|
-
const META_KEY = Symbol('adorn:route');
|
|
4
|
-
export const SCHEMA_META = Symbol('adorn:schema');
|
|
5
|
-
export const AUTH_META = Symbol('adorn:auth');
|
|
6
|
-
// -- Method Decorator --
|
|
7
|
-
// Using Standard TC39 Signature
|
|
8
|
-
export function Get(path) {
|
|
9
|
-
return function (originalMethod, context) {
|
|
10
|
-
// In standard decorators, we can attach metadata to the class prototype via context
|
|
11
|
-
context.addInitializer(function () {
|
|
12
|
-
const routes = this[META_KEY] || [];
|
|
13
|
-
routes.push({
|
|
14
|
-
method: 'get',
|
|
15
|
-
path,
|
|
16
|
-
methodName: String(context.name),
|
|
17
|
-
});
|
|
18
|
-
this[META_KEY] = routes;
|
|
19
|
-
});
|
|
20
|
-
return originalMethod;
|
|
21
|
-
};
|
|
22
|
-
}
|
|
23
|
-
export function Post(path) {
|
|
24
|
-
return function (originalMethod, context) {
|
|
25
|
-
context.addInitializer(function () {
|
|
26
|
-
const routes = this[META_KEY] || [];
|
|
27
|
-
routes.push({
|
|
28
|
-
method: 'post',
|
|
29
|
-
path,
|
|
30
|
-
methodName: String(context.name),
|
|
31
|
-
});
|
|
32
|
-
this[META_KEY] = routes;
|
|
33
|
-
});
|
|
34
|
-
return originalMethod;
|
|
35
|
-
};
|
|
36
|
-
}
|
|
37
|
-
export function Put(path) {
|
|
38
|
-
return function (originalMethod, context) {
|
|
39
|
-
context.addInitializer(function () {
|
|
40
|
-
const routes = this[META_KEY] || [];
|
|
41
|
-
routes.push({
|
|
42
|
-
method: 'put',
|
|
43
|
-
path,
|
|
44
|
-
methodName: String(context.name),
|
|
45
|
-
});
|
|
46
|
-
this[META_KEY] = routes;
|
|
47
|
-
});
|
|
48
|
-
return originalMethod;
|
|
49
|
-
};
|
|
50
|
-
}
|
|
51
|
-
export function Delete(path) {
|
|
52
|
-
return function (originalMethod, context) {
|
|
53
|
-
context.addInitializer(function () {
|
|
54
|
-
const routes = this[META_KEY] || [];
|
|
55
|
-
routes.push({
|
|
56
|
-
method: 'delete',
|
|
57
|
-
path,
|
|
58
|
-
methodName: String(context.name),
|
|
59
|
-
});
|
|
60
|
-
this[META_KEY] = routes;
|
|
61
|
-
});
|
|
62
|
-
return originalMethod;
|
|
63
|
-
};
|
|
64
|
-
}
|
|
65
|
-
// -- Class Decorator --
|
|
66
|
-
export function Controller(basePath) {
|
|
67
|
-
return function (target, context) {
|
|
68
|
-
// We attach the base path to the class constructor
|
|
69
|
-
context.addInitializer(function () {
|
|
70
|
-
this._basePath = basePath;
|
|
71
|
-
});
|
|
72
|
-
return target;
|
|
73
|
-
};
|
|
74
|
-
}
|
|
75
|
-
// -- DTO Field Decorators --
|
|
76
|
-
// Since we can't decorate parameters, we decorate fields in a class
|
|
77
|
-
// e.g. class GetUserParams { @FromPath id: string }
|
|
78
|
-
export function FromQuery(name) {
|
|
79
|
-
return function (target, context) {
|
|
80
|
-
context.addInitializer(function () {
|
|
81
|
-
const meta = this[SCHEMA_META] || {};
|
|
82
|
-
meta[context.name] = { type: 'query' };
|
|
83
|
-
this[SCHEMA_META] = meta;
|
|
84
|
-
});
|
|
85
|
-
return function (initialValue) { return initialValue; };
|
|
86
|
-
};
|
|
87
|
-
}
|
|
88
|
-
export function FromPath(name) {
|
|
89
|
-
return function (target, context) {
|
|
90
|
-
context.addInitializer(function () {
|
|
91
|
-
const meta = this[SCHEMA_META] || {};
|
|
92
|
-
meta[context.name] = { type: 'path' };
|
|
93
|
-
this[SCHEMA_META] = meta;
|
|
94
|
-
});
|
|
95
|
-
return function (initialValue) { return initialValue; };
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
export function FromBody() {
|
|
99
|
-
return function (target, context) {
|
|
100
|
-
context.addInitializer(function () {
|
|
101
|
-
const meta = this[SCHEMA_META] || {};
|
|
102
|
-
meta[context.name] = { type: 'body' };
|
|
103
|
-
this[SCHEMA_META] = meta;
|
|
104
|
-
});
|
|
105
|
-
return function (initialValue) { return initialValue; };
|
|
106
|
-
};
|
|
107
|
-
}
|
|
108
|
-
// -- Authentication Decorator --
|
|
109
|
-
export function Authorized(role) {
|
|
110
|
-
return function (target, context) {
|
|
111
|
-
context.addInitializer(function () {
|
|
112
|
-
this[AUTH_META] = role || 'default';
|
|
113
|
-
});
|
|
114
|
-
return target;
|
|
115
|
-
};
|
|
116
|
-
}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
export function authenticationMiddleware(req, res, next) {
|
|
2
|
-
const token = req.headers.authorization;
|
|
3
|
-
if (!token) {
|
|
4
|
-
res.status(401).json({ message: "No token provided" });
|
|
5
|
-
return;
|
|
6
|
-
}
|
|
7
|
-
if (token === "Bearer secret") {
|
|
8
|
-
next();
|
|
9
|
-
}
|
|
10
|
-
else {
|
|
11
|
-
res.status(403).json({ message: "Invalid token" });
|
|
12
|
-
}
|
|
13
|
-
}
|