adorn-api 1.0.0 → 1.0.2
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 +54 -249
- package/dist/adapters/express/createApp.d.ts +158 -0
- package/dist/adapters/express/createApp.d.ts.map +1 -0
- package/dist/adapters/express/createApp.js +141 -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 +194 -0
- package/dist/adapters/express/middleware/errorHandler.d.ts.map +1 -0
- package/dist/adapters/express/middleware/errorHandler.js +167 -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 +105 -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 +538 -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 +119 -0
- package/dist/contracts/reply.d.ts.map +1 -0
- package/dist/contracts/reply.js +43 -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 +98 -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 +155 -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 +146 -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 +74 -0
- package/dist/core/binding/binder.d.ts.map +1 -0
- package/dist/core/binding/binder.js +161 -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 +70 -0
- package/dist/core/binding/coerce/primitives.d.ts.map +1 -0
- package/dist/core/binding/coerce/primitives.js +88 -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 +63 -0
- package/dist/core/errors/http-error.d.ts.map +1 -0
- package/dist/core/errors/http-error.js +71 -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 +73 -0
- package/dist/core/errors/validation-error.d.ts.map +1 -0
- package/dist/core/errors/validation-error.js +82 -0
- package/dist/core/errors/validation-error.js.map +1 -0
- package/dist/core/openapi/buildOpenApi.d.ts +79 -0
- package/dist/core/openapi/buildOpenApi.d.ts.map +1 -0
- package/dist/core/openapi/buildOpenApi.js +196 -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 +105 -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 +225 -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 +102 -0
- package/dist/core/reply/reply.d.ts.map +1 -0
- package/dist/core/reply/reply.js +105 -0
- package/dist/core/reply/reply.js.map +1 -0
- package/dist/core/reply/typed.d.ts +161 -0
- package/dist/core/reply/typed.d.ts.map +1 -0
- package/dist/core/reply/typed.js +154 -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 +33 -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 +74 -0
- package/dist/core/route/defineRoute.d.ts.map +1 -0
- package/dist/core/route/defineRoute.js +59 -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 +8 -0
- package/dist/decorators/docs.d.ts.map +1 -0
- package/dist/decorators/docs.js +46 -0
- package/dist/decorators/docs.js.map +1 -0
- package/dist/decorators/index.d.ts +7 -0
- package/dist/decorators/index.d.ts.map +1 -0
- package/dist/decorators/index.js +7 -0
- package/dist/decorators/index.js.map +1 -0
- package/dist/decorators/methods.d.ts +146 -0
- package/dist/decorators/methods.d.ts.map +1 -0
- package/dist/decorators/methods.js +170 -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 +7 -0
- package/dist/decorators/responses.d.ts.map +1 -0
- package/dist/decorators/responses.js +44 -0
- package/dist/decorators/responses.js.map +1 -0
- package/dist/decorators/security.d.ts +8 -0
- package/dist/decorators/security.d.ts.map +1 -0
- package/dist/decorators/security.js +39 -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 +13 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +13 -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 +96 -0
- package/dist/integrations/metal-orm/schema/column-map.d.ts.map +1 -0
- package/dist/integrations/metal-orm/schema/column-map.js +207 -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 +99 -0
- package/dist/integrations/metal-orm/schema/entity.d.ts.map +1 -0
- package/dist/integrations/metal-orm/schema/entity.js +99 -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 +21 -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 +18 -0
- package/dist/metadata/bag.d.ts.map +1 -0
- package/dist/metadata/bag.js +39 -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 +254 -0
- package/dist/metadata/keys.d.ts.map +1 -0
- package/dist/metadata/keys.js +23 -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 +30 -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 +57 -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
|
@@ -0,0 +1,207 @@
|
|
|
1
|
+
import { v } from '../../../validation/native/schema.js';
|
|
2
|
+
/**
|
|
3
|
+
* Database column type categories for schema mapping.
|
|
4
|
+
*
|
|
5
|
+
* These sets categorize database column types for
|
|
6
|
+
* appropriate schema generation.
|
|
7
|
+
*/
|
|
8
|
+
const INTEGER_TYPES = new Set(['int', 'integer', 'bigint']);
|
|
9
|
+
const DECIMAL_TYPES = new Set(['decimal', 'numeric', 'float', 'double', 'real']);
|
|
10
|
+
const STRING_TYPES = new Set(['char', 'text', 'enum']);
|
|
11
|
+
const BOOLEAN_TYPES = new Set(['boolean', 'bool']);
|
|
12
|
+
const DATE_TIME_TYPES = new Set(['date', 'datetime', 'timestamp', 'timestamptz', 'time', 'timetz']);
|
|
13
|
+
const JSON_TYPES = new Set(['json', 'jsonb']);
|
|
14
|
+
const BINARY_TYPES = new Set(['blob', 'binary', 'varbinary', 'bytea']);
|
|
15
|
+
/**
|
|
16
|
+
* Helper function to create successful validation results.
|
|
17
|
+
*
|
|
18
|
+
* @template T - The value type
|
|
19
|
+
* @param value - The validated value
|
|
20
|
+
* @returns Validation result with ok: true
|
|
21
|
+
*/
|
|
22
|
+
function ok(value) {
|
|
23
|
+
return { ok: true, value };
|
|
24
|
+
}
|
|
25
|
+
/**
|
|
26
|
+
* Creates a base string schema.
|
|
27
|
+
*
|
|
28
|
+
* @returns Basic string validation schema
|
|
29
|
+
*/
|
|
30
|
+
function baseStringSchema() {
|
|
31
|
+
return v.string();
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Creates a base number schema.
|
|
35
|
+
*
|
|
36
|
+
* @returns Basic number validation schema
|
|
37
|
+
*/
|
|
38
|
+
function _baseNumberSchema() {
|
|
39
|
+
return v.number();
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Creates a base boolean schema.
|
|
43
|
+
*
|
|
44
|
+
* @returns Basic boolean validation schema
|
|
45
|
+
*/
|
|
46
|
+
function _baseBooleanSchema() {
|
|
47
|
+
return v.boolean();
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Creates a schema that accepts any value.
|
|
51
|
+
*
|
|
52
|
+
* Used for JSON/BLOB columns that can contain
|
|
53
|
+
* arbitrary data structures.
|
|
54
|
+
*
|
|
55
|
+
* @returns Schema that validates any value
|
|
56
|
+
*/
|
|
57
|
+
function anySchema() {
|
|
58
|
+
return {
|
|
59
|
+
kind: 'object',
|
|
60
|
+
name: 'json',
|
|
61
|
+
ir: { kind: 'object', properties: {}, required: [], strict: false },
|
|
62
|
+
parse(value) {
|
|
63
|
+
return ok(value);
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Maps Metal-ORM column definitions to validation schemas.
|
|
69
|
+
*
|
|
70
|
+
* This function converts database column types to appropriate
|
|
71
|
+
* validation schemas that can be used for request validation
|
|
72
|
+
* and data processing.
|
|
73
|
+
*
|
|
74
|
+
* @param column - Metal-ORM column definition
|
|
75
|
+
* @returns Validation schema appropriate for the column type
|
|
76
|
+
*
|
|
77
|
+
* @example
|
|
78
|
+
* ```typescript
|
|
79
|
+
* // Integer column
|
|
80
|
+
* const intColumn = { type: 'int', notNull: true };
|
|
81
|
+
* const intSchema = columnToSchema(intColumn);
|
|
82
|
+
* // Returns: v.number().int()
|
|
83
|
+
*
|
|
84
|
+
* // UUID column
|
|
85
|
+
* const uuidColumn = { type: 'uuid', notNull: false };
|
|
86
|
+
* const uuidSchema = columnToSchema(uuidColumn);
|
|
87
|
+
* // Returns: v.string().format('uuid')
|
|
88
|
+
*
|
|
89
|
+
* // DateTime column
|
|
90
|
+
* const dateColumn = { type: 'timestamp', notNull: true };
|
|
91
|
+
* const dateSchema = columnToSchema(dateColumn);
|
|
92
|
+
* // Returns: v.string().format('date-time')
|
|
93
|
+
*
|
|
94
|
+
* // VARCHAR with length
|
|
95
|
+
* const varcharColumn = { type: 'varchar', args: [255], notNull: true };
|
|
96
|
+
* const varcharSchema = columnToSchema(varcharColumn);
|
|
97
|
+
* // Returns: v.string().max(255)
|
|
98
|
+
* ```
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* // Using in entity schema generation
|
|
103
|
+
* import { entity } from './entity';
|
|
104
|
+
* import { columnToSchema } from './column-map';
|
|
105
|
+
*
|
|
106
|
+
* // Custom entity schema with column mapping
|
|
107
|
+
* function customEntitySchema(Entity: EntityCtor<any>) {
|
|
108
|
+
* const table = tableDefOf(Entity);
|
|
109
|
+
* const shape: Record<string, Schema<any>> = {};
|
|
110
|
+
*
|
|
111
|
+
* for (const [key, column] of Object.entries(table.columns)) {
|
|
112
|
+
* const schema = columnToSchema(column);
|
|
113
|
+
* shape[key] = column.notNull ? schema : v.optional(schema);
|
|
114
|
+
* }
|
|
115
|
+
*
|
|
116
|
+
* return v.object(shape);
|
|
117
|
+
* }
|
|
118
|
+
* ```
|
|
119
|
+
*
|
|
120
|
+
* @see entity for complete entity schema generation
|
|
121
|
+
* @see ValidationResult for validation result structure
|
|
122
|
+
*/
|
|
123
|
+
export function columnToSchema(column) {
|
|
124
|
+
const rawType = String(column.type ?? '').toLowerCase();
|
|
125
|
+
const normalizedType = rawType.split('(')[0].trim();
|
|
126
|
+
if (INTEGER_TYPES.has(normalizedType)) {
|
|
127
|
+
return v.number().int();
|
|
128
|
+
}
|
|
129
|
+
if (DECIMAL_TYPES.has(normalizedType)) {
|
|
130
|
+
return v.number();
|
|
131
|
+
}
|
|
132
|
+
if (BOOLEAN_TYPES.has(normalizedType)) {
|
|
133
|
+
return v.boolean();
|
|
134
|
+
}
|
|
135
|
+
if (normalizedType === 'uuid') {
|
|
136
|
+
const schema = baseStringSchema();
|
|
137
|
+
if (schema.ir.kind === 'string') {
|
|
138
|
+
schema.ir.format = 'uuid';
|
|
139
|
+
}
|
|
140
|
+
return schema;
|
|
141
|
+
}
|
|
142
|
+
if (DATE_TIME_TYPES.has(normalizedType)) {
|
|
143
|
+
const schema = baseStringSchema();
|
|
144
|
+
if (schema.ir.kind === 'string') {
|
|
145
|
+
schema.ir.format = 'date-time';
|
|
146
|
+
}
|
|
147
|
+
return schema;
|
|
148
|
+
}
|
|
149
|
+
if (normalizedType === 'varchar') {
|
|
150
|
+
const schema = baseStringSchema();
|
|
151
|
+
const len = typeof column.args?.[0] === 'number' ? column.args[0] : undefined;
|
|
152
|
+
return len !== undefined ? schema.max(len) : schema;
|
|
153
|
+
}
|
|
154
|
+
if (STRING_TYPES.has(normalizedType)) {
|
|
155
|
+
return baseStringSchema();
|
|
156
|
+
}
|
|
157
|
+
if (JSON_TYPES.has(normalizedType)) {
|
|
158
|
+
return anySchema();
|
|
159
|
+
}
|
|
160
|
+
if (BINARY_TYPES.has(normalizedType)) {
|
|
161
|
+
const schema = baseStringSchema();
|
|
162
|
+
return schema;
|
|
163
|
+
}
|
|
164
|
+
if (normalizedType === 'text') {
|
|
165
|
+
return baseStringSchema();
|
|
166
|
+
}
|
|
167
|
+
return baseStringSchema();
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Checks if a column is required (not nullable).
|
|
171
|
+
*
|
|
172
|
+
* @param column - Metal-ORM column definition
|
|
173
|
+
* @returns true if column is required (notNull), false otherwise
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* ```typescript
|
|
177
|
+
* // Required column
|
|
178
|
+
* const requiredColumn = { type: 'string', notNull: true };
|
|
179
|
+
* const isRequired = isRequiredColumn(requiredColumn); // true
|
|
180
|
+
*
|
|
181
|
+
* // Optional column
|
|
182
|
+
* const optionalColumn = { type: 'string', notNull: false };
|
|
183
|
+
* const isOptional = isRequiredColumn(optionalColumn); // false
|
|
184
|
+
* ```
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```typescript
|
|
188
|
+
* // Using in schema generation
|
|
189
|
+
* function generateSchemaFromTable(table: TableDef) {
|
|
190
|
+
* const shape: Record<string, Schema<any>> = {};
|
|
191
|
+
*
|
|
192
|
+
* for (const [key, column] of Object.entries(table.columns)) {
|
|
193
|
+
* const schema = columnToSchema(column);
|
|
194
|
+
* const required = isRequiredColumn(column);
|
|
195
|
+
* shape[key] = required ? schema : v.optional(schema);
|
|
196
|
+
* }
|
|
197
|
+
*
|
|
198
|
+
* return v.object(shape);
|
|
199
|
+
* }
|
|
200
|
+
* ```
|
|
201
|
+
*
|
|
202
|
+
* @see columnToSchema for column type mapping
|
|
203
|
+
*/
|
|
204
|
+
export function isRequiredColumn(column) {
|
|
205
|
+
return Boolean(column.notNull);
|
|
206
|
+
}
|
|
207
|
+
//# sourceMappingURL=column-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"column-map.js","sourceRoot":"","sources":["../../../../src/integrations/metal-orm/schema/column-map.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ddl.d.ts","sourceRoot":"","sources":["../../../../src/integrations/metal-orm/schema/ddl.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ddl.js","sourceRoot":"","sources":["../../../../src/integrations/metal-orm/schema/ddl.ts"],"names":[],"mappings":";AAAA,2DAA2D"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import type { Schema } from '../../../validation/native/schema.js';
|
|
2
|
+
import { type EntityCtor } from './tabledef.js';
|
|
3
|
+
import type { SaveGraphInputPayload } from 'metal-orm';
|
|
4
|
+
export type DtoMode = 'create' | 'update';
|
|
5
|
+
export type EntityDtoSchema<T, Mode extends DtoMode> = Mode extends 'create' ? Schema<SaveGraphInputPayload<T>> : Schema<Partial<SaveGraphInputPayload<T>>>;
|
|
6
|
+
export declare function entityDto<T, Mode extends DtoMode>(Entity: EntityCtor<T>, mode: Mode): EntityDtoSchema<T, Mode>;
|
|
7
|
+
//# sourceMappingURL=dto.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dto.d.ts","sourceRoot":"","sources":["../../../../src/integrations/metal-orm/schema/dto.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAE5D,OAAO,KAAK,EAAa,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAElE,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE1C,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,IAAI,SAAS,OAAO,IACjD,IAAI,SAAS,QAAQ,GACjB,MAAM,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,GAChC,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAahD,wBAAgB,SAAS,CAAC,CAAC,EAAE,IAAI,SAAS,OAAO,EAC/C,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EACrB,IAAI,EAAE,IAAI,GACT,eAAe,CAAC,CAAC,EAAE,IAAI,CAAC,CAqB1B"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { optional, v } from '../../../validation/native/schema.js';
|
|
2
|
+
import { tableDefOf } from './tabledef.js';
|
|
3
|
+
import { columnToSchema } from './column-map.js';
|
|
4
|
+
function shouldSkipColumnForCreate(column) {
|
|
5
|
+
return Boolean(column.autoIncrement || column.generated);
|
|
6
|
+
}
|
|
7
|
+
function isRequiredForCreate(column) {
|
|
8
|
+
if (!column.notNull)
|
|
9
|
+
return false;
|
|
10
|
+
if (column.default !== undefined)
|
|
11
|
+
return false;
|
|
12
|
+
if (column.autoIncrement || column.generated)
|
|
13
|
+
return false;
|
|
14
|
+
return true;
|
|
15
|
+
}
|
|
16
|
+
export function entityDto(Entity, mode) {
|
|
17
|
+
const table = tableDefOf(Entity);
|
|
18
|
+
const shape = {};
|
|
19
|
+
for (const [key, column] of Object.entries(table.columns)) {
|
|
20
|
+
const schema = columnToSchema(column);
|
|
21
|
+
if (mode === 'create' && shouldSkipColumnForCreate(column)) {
|
|
22
|
+
continue;
|
|
23
|
+
}
|
|
24
|
+
if (mode === 'update') {
|
|
25
|
+
shape[key] = optional(schema);
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
const required = isRequiredForCreate(column);
|
|
29
|
+
shape[key] = required ? schema : optional(schema);
|
|
30
|
+
}
|
|
31
|
+
const base = v.object(shape).strict();
|
|
32
|
+
return base;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=dto.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dto.js","sourceRoot":"","sources":["../../../../src/integrations/metal-orm/schema/dto.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAmB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAUjD,SAAS,yBAAyB,CAAC,MAAiB;IAClD,OAAO,OAAO,CAAC,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,SAAS,CAAC,CAAC;AAC3D,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAiB;IAC5C,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,KAAK,CAAC;IAClC,IAAI,MAAM,CAAC,OAAO,KAAK,SAAS;QAAE,OAAO,KAAK,CAAC;IAC/C,IAAI,MAAM,CAAC,aAAa,IAAI,MAAM,CAAC,SAAS;QAAE,OAAO,KAAK,CAAC;IAC3D,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,UAAU,SAAS,CACvB,MAAqB,EACrB,IAAU;IAEV,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,KAAK,GAAoC,EAAE,CAAC;IAElD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAA0B,EAAE,CAAC;QACnF,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,IAAI,IAAI,KAAK,QAAQ,IAAI,yBAAyB,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3D,SAAS;QACX,CAAC;QAED,IAAI,IAAI,KAAK,QAAQ,EAAE,CAAC;YACtB,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC9B,SAAS;QACX,CAAC;QAED,MAAM,QAAQ,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IACpD,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;IACtC,OAAO,IAAgC,CAAC;AAC1C,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import type { Schema } from '../../../validation/native/schema.js';
|
|
2
|
+
import { type EntityCtor } from './tabledef.js';
|
|
3
|
+
/**
|
|
4
|
+
* Options for customizing entity schema generation.
|
|
5
|
+
*
|
|
6
|
+
* These options allow selecting specific columns, excluding columns,
|
|
7
|
+
* and naming the generated schema.
|
|
8
|
+
*/
|
|
9
|
+
export type EntitySchemaOptions = {
|
|
10
|
+
/** Array of column names to include (exclusive selection) */
|
|
11
|
+
pick?: readonly string[];
|
|
12
|
+
/** Array of column names to exclude */
|
|
13
|
+
omit?: readonly string[];
|
|
14
|
+
/** Optional name for the generated schema */
|
|
15
|
+
name?: string;
|
|
16
|
+
};
|
|
17
|
+
/**
|
|
18
|
+
* Generates a validation schema from a Metal-ORM entity.
|
|
19
|
+
*
|
|
20
|
+
* This function creates a Schema object that validates data against
|
|
21
|
+
* the structure of a Metal-ORM entity, including column types,
|
|
22
|
+
* nullability constraints, and other database-level validations.
|
|
23
|
+
*
|
|
24
|
+
* @template T - The entity type
|
|
25
|
+
* @param Entity - Metal-ORM entity constructor
|
|
26
|
+
* @param opts - Options for customizing schema generation
|
|
27
|
+
* @returns Schema that validates against the entity structure
|
|
28
|
+
*
|
|
29
|
+
* @example
|
|
30
|
+
* ```typescript
|
|
31
|
+
* // Basic entity schema
|
|
32
|
+
* const userSchema = entity(User);
|
|
33
|
+
*
|
|
34
|
+
* // Schema with selected columns only
|
|
35
|
+
* const userProfileSchema = entity(User, {
|
|
36
|
+
* pick: ['id', 'name', 'email', 'avatarUrl']
|
|
37
|
+
* });
|
|
38
|
+
*
|
|
39
|
+
* // Schema with excluded columns
|
|
40
|
+
* const userPublicSchema = entity(User, {
|
|
41
|
+
* omit: ['passwordHash', 'emailVerificationToken']
|
|
42
|
+
* });
|
|
43
|
+
*
|
|
44
|
+
* // Named schema
|
|
45
|
+
* const createUserSchema = entity(User, {
|
|
46
|
+
* name: 'CreateUserDto',
|
|
47
|
+
* omit: ['id', 'createdAt', 'updatedAt']
|
|
48
|
+
* });
|
|
49
|
+
* ```
|
|
50
|
+
*
|
|
51
|
+
* @example
|
|
52
|
+
* ```typescript
|
|
53
|
+
* // Using in a controller with validation
|
|
54
|
+
* @Post('/users')
|
|
55
|
+
* async createUser(@Body() userData: unknown) {
|
|
56
|
+
* const userSchema = entity(User, {
|
|
57
|
+
* omit: ['id', 'createdAt', 'updatedAt']
|
|
58
|
+
* });
|
|
59
|
+
*
|
|
60
|
+
* const validationResult = await validator.validate(userData, userSchema);
|
|
61
|
+
* if (!validationResult.ok) {
|
|
62
|
+
* throw ValidationError.fromIssues(validationResult.issues);
|
|
63
|
+
* }
|
|
64
|
+
*
|
|
65
|
+
* const createdUser = await userService.create(validationResult.value);
|
|
66
|
+
* return reply(201, createdUser);
|
|
67
|
+
* }
|
|
68
|
+
* ```
|
|
69
|
+
*
|
|
70
|
+
* @see Schema for the returned schema type
|
|
71
|
+
* @see EntityCtor for Metal-ORM entity constructor type
|
|
72
|
+
*/
|
|
73
|
+
export declare function entity<T>(Entity: EntityCtor<T>, opts?: EntitySchemaOptions): Schema<T>;
|
|
74
|
+
/**
|
|
75
|
+
* Generates a validation schema for an array of entities.
|
|
76
|
+
*
|
|
77
|
+
* @template T - The entity type
|
|
78
|
+
* @param Entity - Metal-ORM entity constructor
|
|
79
|
+
* @param opts - Options for customizing schema generation
|
|
80
|
+
* @returns Schema that validates an array of entities
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```typescript
|
|
84
|
+
* // Array of users
|
|
85
|
+
* const usersArraySchema = entityArray(User);
|
|
86
|
+
*
|
|
87
|
+
* // Array with selected columns
|
|
88
|
+
* const userPreviewsSchema = entityArray(User, {
|
|
89
|
+
* pick: ['id', 'name', 'email']
|
|
90
|
+
* });
|
|
91
|
+
* ```
|
|
92
|
+
*/
|
|
93
|
+
export declare function entityArray<T>(Entity: EntityCtor<T>, opts?: EntitySchemaOptions): Schema<T[]> & {
|
|
94
|
+
min(n: number): Schema<T[]> & /*elided*/ any;
|
|
95
|
+
max(n: number): Schema<T[]> & /*elided*/ any;
|
|
96
|
+
optional(): Schema<T[] | undefined>;
|
|
97
|
+
nullable(): Schema<T[] | null>;
|
|
98
|
+
};
|
|
99
|
+
//# sourceMappingURL=entity.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.d.ts","sourceRoot":"","sources":["../../../../src/integrations/metal-orm/schema/entity.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAG5D;;;;;GAKG;AACH,MAAM,MAAM,mBAAmB,GAAG;IAChC,6DAA6D;IAC7D,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,uCAAuC;IACvC,IAAI,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACzB,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;CACf,CAAC;AAEF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,wBAAgB,MAAM,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,GAAE,mBAAwB,GAAG,MAAM,CAAC,CAAC,CAAC,CAkB1F;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,WAAW,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EAAE,IAAI,GAAE,mBAAwB;;;;;EAEnF"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
import { optional, v } from '../../../validation/native/schema.js';
|
|
2
|
+
import { columnToSchema } from './column-map.js';
|
|
3
|
+
import { tableDefOf } from './tabledef.js';
|
|
4
|
+
/**
|
|
5
|
+
* Generates a validation schema from a Metal-ORM entity.
|
|
6
|
+
*
|
|
7
|
+
* This function creates a Schema object that validates data against
|
|
8
|
+
* the structure of a Metal-ORM entity, including column types,
|
|
9
|
+
* nullability constraints, and other database-level validations.
|
|
10
|
+
*
|
|
11
|
+
* @template T - The entity type
|
|
12
|
+
* @param Entity - Metal-ORM entity constructor
|
|
13
|
+
* @param opts - Options for customizing schema generation
|
|
14
|
+
* @returns Schema that validates against the entity structure
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* ```typescript
|
|
18
|
+
* // Basic entity schema
|
|
19
|
+
* const userSchema = entity(User);
|
|
20
|
+
*
|
|
21
|
+
* // Schema with selected columns only
|
|
22
|
+
* const userProfileSchema = entity(User, {
|
|
23
|
+
* pick: ['id', 'name', 'email', 'avatarUrl']
|
|
24
|
+
* });
|
|
25
|
+
*
|
|
26
|
+
* // Schema with excluded columns
|
|
27
|
+
* const userPublicSchema = entity(User, {
|
|
28
|
+
* omit: ['passwordHash', 'emailVerificationToken']
|
|
29
|
+
* });
|
|
30
|
+
*
|
|
31
|
+
* // Named schema
|
|
32
|
+
* const createUserSchema = entity(User, {
|
|
33
|
+
* name: 'CreateUserDto',
|
|
34
|
+
* omit: ['id', 'createdAt', 'updatedAt']
|
|
35
|
+
* });
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @example
|
|
39
|
+
* ```typescript
|
|
40
|
+
* // Using in a controller with validation
|
|
41
|
+
* @Post('/users')
|
|
42
|
+
* async createUser(@Body() userData: unknown) {
|
|
43
|
+
* const userSchema = entity(User, {
|
|
44
|
+
* omit: ['id', 'createdAt', 'updatedAt']
|
|
45
|
+
* });
|
|
46
|
+
*
|
|
47
|
+
* const validationResult = await validator.validate(userData, userSchema);
|
|
48
|
+
* if (!validationResult.ok) {
|
|
49
|
+
* throw ValidationError.fromIssues(validationResult.issues);
|
|
50
|
+
* }
|
|
51
|
+
*
|
|
52
|
+
* const createdUser = await userService.create(validationResult.value);
|
|
53
|
+
* return reply(201, createdUser);
|
|
54
|
+
* }
|
|
55
|
+
* ```
|
|
56
|
+
*
|
|
57
|
+
* @see Schema for the returned schema type
|
|
58
|
+
* @see EntityCtor for Metal-ORM entity constructor type
|
|
59
|
+
*/
|
|
60
|
+
export function entity(Entity, opts = {}) {
|
|
61
|
+
const table = tableDefOf(Entity);
|
|
62
|
+
const pick = opts.pick ? new Set(opts.pick) : null;
|
|
63
|
+
const omit = opts.omit ? new Set(opts.omit) : null;
|
|
64
|
+
const shape = {};
|
|
65
|
+
for (const [key, column] of Object.entries(table.columns)) {
|
|
66
|
+
if (pick && !pick.has(key))
|
|
67
|
+
continue;
|
|
68
|
+
if (omit && omit.has(key))
|
|
69
|
+
continue;
|
|
70
|
+
const schema = columnToSchema(column);
|
|
71
|
+
shape[key] = column.notNull ? schema : optional(schema);
|
|
72
|
+
}
|
|
73
|
+
const base = v.object(shape).strict();
|
|
74
|
+
const typed = base;
|
|
75
|
+
return opts.name ? v.named(opts.name, typed) : typed;
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* Generates a validation schema for an array of entities.
|
|
79
|
+
*
|
|
80
|
+
* @template T - The entity type
|
|
81
|
+
* @param Entity - Metal-ORM entity constructor
|
|
82
|
+
* @param opts - Options for customizing schema generation
|
|
83
|
+
* @returns Schema that validates an array of entities
|
|
84
|
+
*
|
|
85
|
+
* @example
|
|
86
|
+
* ```typescript
|
|
87
|
+
* // Array of users
|
|
88
|
+
* const usersArraySchema = entityArray(User);
|
|
89
|
+
*
|
|
90
|
+
* // Array with selected columns
|
|
91
|
+
* const userPreviewsSchema = entityArray(User, {
|
|
92
|
+
* pick: ['id', 'name', 'email']
|
|
93
|
+
* });
|
|
94
|
+
* ```
|
|
95
|
+
*/
|
|
96
|
+
export function entityArray(Entity, opts = {}) {
|
|
97
|
+
return v.array(entity(Entity, opts));
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=entity.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entity.js","sourceRoot":"","sources":["../../../../src/integrations/metal-orm/schema/entity.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACjD,OAAO,EAAE,UAAU,EAAmB,MAAM,eAAe,CAAC;AAkB5D;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAuDG;AACH,MAAM,UAAU,MAAM,CAAI,MAAqB,EAAE,OAA4B,EAAE;IAC7E,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IACnD,MAAM,IAAI,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAEnD,MAAM,KAAK,GAAoC,EAAE,CAAC;IAElD,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,OAAO,CAA0B,EAAE,CAAC;QACnF,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QACrC,IAAI,IAAI,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,SAAS;QAEpC,MAAM,MAAM,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;QACtC,KAAK,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,IAAI,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;IACtC,MAAM,KAAK,GAAG,IAA4B,CAAC;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;AACvD,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,UAAU,WAAW,CAAI,MAAqB,EAAE,OAA4B,EAAE;IAClF,OAAO,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,CAAC;AACvC,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
import type { Schema } from '../../../validation/native/schema.js';
|
|
2
|
+
import { type EntityCtor } from './tabledef.js';
|
|
3
|
+
import type { HttpPick, Paged } from './types.js';
|
|
4
|
+
export type FiltersOptions<P extends readonly (string & PropertyKey)[]> = {
|
|
5
|
+
pick: P;
|
|
6
|
+
paging?: boolean;
|
|
7
|
+
};
|
|
8
|
+
export declare function filtersFromEntity<T, const P extends readonly (keyof T & string)[], const Opts extends FiltersOptions<P>>(Entity: EntityCtor<T>, opts: Opts): Schema<(Opts['paging'] extends false ? Record<string, never> : Paged) & Partial<{
|
|
9
|
+
[K in P[number]]: HttpPick<T, K>;
|
|
10
|
+
}>>;
|
|
11
|
+
//# sourceMappingURL=filters.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.d.ts","sourceRoot":"","sources":["../../../../src/integrations/metal-orm/schema/filters.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,sCAAsC,CAAC;AACnE,OAAO,EAAc,KAAK,UAAU,EAAE,MAAM,eAAe,CAAC;AAG5D,OAAO,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AAElD,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,GAAG,WAAW,CAAC,EAAE,IAAI;IACxE,IAAI,EAAE,CAAC,CAAC;IACR,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AAEF,wBAAgB,iBAAiB,CAC/B,CAAC,EACD,KAAK,CAAC,CAAC,SAAS,SAAS,CAAC,MAAM,CAAC,GAAG,MAAM,CAAC,EAAE,EAC7C,KAAK,CAAC,IAAI,SAAS,cAAc,CAAC,CAAC,CAAC,EAEpC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,EACrB,IAAI,EAAE,IAAI,GACT,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,SAAS,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,GAAG,KAAK,CAAC,GAAG,OAAO,CAAC;KAAG,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC,CAAC,EAAE,CAAC,CAAC;CAAE,CAAC,CAAC,CAmBxH"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { optional, v } from '../../../validation/native/schema.js';
|
|
2
|
+
import { tableDefOf } from './tabledef.js';
|
|
3
|
+
import { columnToSchema } from './column-map.js';
|
|
4
|
+
export function filtersFromEntity(Entity, opts) {
|
|
5
|
+
const table = tableDefOf(Entity);
|
|
6
|
+
const shape = {};
|
|
7
|
+
if (opts.paging !== false) {
|
|
8
|
+
shape.page = v.number().int().min(1).optional();
|
|
9
|
+
shape.pageSize = v.number().int().min(1).max(100).optional();
|
|
10
|
+
}
|
|
11
|
+
const columns = table.columns;
|
|
12
|
+
for (const key of opts.pick) {
|
|
13
|
+
const column = columns[key];
|
|
14
|
+
if (!column)
|
|
15
|
+
continue;
|
|
16
|
+
shape[key] = optional(columnToSchema(column));
|
|
17
|
+
}
|
|
18
|
+
const schema = v.object(shape).strict();
|
|
19
|
+
return schema;
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"filters.js","sourceRoot":"","sources":["../../../../src/integrations/metal-orm/schema/filters.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,CAAC,EAAE,MAAM,sCAAsC,CAAC;AAEnE,OAAO,EAAE,UAAU,EAAmB,MAAM,eAAe,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AASjD,MAAM,UAAU,iBAAiB,CAK/B,MAAqB,EACrB,IAAU;IAEV,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;IACjC,MAAM,KAAK,GAAoC,EAAE,CAAC;IAElD,IAAI,IAAI,CAAC,MAAM,KAAK,KAAK,EAAE,CAAC;QAC1B,KAAK,CAAC,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;QAChD,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC/D,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,OAAoC,CAAC;IAE3D,KAAK,MAAM,GAAG,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,GAAa,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,KAAK,CAAC,GAAa,CAAC,GAAG,QAAQ,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC,CAAC;IAC1D,CAAC;IAED,MAAM,MAAM,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,CAAC;IACxC,OAAO,MAAgI,CAAC;AAC1I,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/integrations/metal-orm/schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/integrations/metal-orm/schema/index.ts"],"names":[],"mappings":"AAAA,cAAc,aAAa,CAAC;AAC5B,cAAc,UAAU,CAAC;AACzB,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityToSchema.d.ts","sourceRoot":"","sources":["../../../../../src/integrations/metal-orm/schema/openapi/entityToSchema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"entityToSchema.js","sourceRoot":"","sources":["../../../../../src/integrations/metal-orm/schema/openapi/entityToSchema.ts"],"names":[],"mappings":";AAAA,8EAA8E"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tableDefToSchema.d.ts","sourceRoot":"","sources":["../../../../../src/integrations/metal-orm/schema/openapi/tableDefToSchema.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tableDefToSchema.js","sourceRoot":"","sources":["../../../../../src/integrations/metal-orm/schema/openapi/tableDefToSchema.ts"],"names":[],"mappings":";AAAA,gFAAgF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.d.ts","sourceRoot":"","sources":["../../../../src/integrations/metal-orm/schema/sqlite.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sqlite.js","sourceRoot":"","sources":["../../../../src/integrations/metal-orm/schema/sqlite.ts"],"names":[],"mappings":";AAAA,8DAA8D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabledef.d.ts","sourceRoot":"","sources":["../../../../src/integrations/metal-orm/schema/tabledef.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAqB,QAAQ,EAAE,MAAM,WAAW,CAAC;AAE7D,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,OAAO,IAAI,KAAK,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAEpE,wBAAgB,UAAU,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,GAAG,QAAQ,CAO7D"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { getTableDefFromEntity } from 'metal-orm';
|
|
2
|
+
export function tableDefOf(Entity) {
|
|
3
|
+
const table = getTableDefFromEntity(Entity);
|
|
4
|
+
if (!table) {
|
|
5
|
+
const name = Entity.name || 'Entity';
|
|
6
|
+
throw new Error(`Unable to derive MetalORM table definition for ${name}`);
|
|
7
|
+
}
|
|
8
|
+
return table;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=tabledef.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tabledef.js","sourceRoot":"","sources":["../../../../src/integrations/metal-orm/schema/tabledef.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,WAAW,CAAC;AAKlD,MAAM,UAAU,UAAU,CAAI,MAAqB;IACjD,MAAM,KAAK,GAAG,qBAAqB,CAAC,MAA2B,CAAC,CAAC;IACjE,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,IAAI,QAAQ,CAAC;QACrC,MAAM,IAAI,KAAK,CAAC,kDAAkD,IAAI,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/integrations/metal-orm/schema/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,CAAC,CAAC,IACtB,CAAC,SAAS,IAAI,GAAG,MAAM,GACvB,CAAC,SAAS,MAAM,GAAG,MAAM,GACzB,CAAC,CAAC;AAEJ,MAAM,MAAM,QAAQ,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,CAAC,IAAI,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE9D,MAAM,MAAM,KAAK,GAAG;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,CAAC"}
|