arkos 2.0.0-next.3 → 2.0.0-next.30
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 +146 -145
- package/cli.js +11 -20
- package/dist/esm/app.js +37 -35
- package/dist/esm/app.js.map +1 -1
- package/dist/esm/components/arkos-gateway/arkos-gateway.js +362 -0
- package/dist/esm/components/arkos-gateway/arkos-gateway.js.map +1 -0
- package/dist/esm/components/arkos-gateway/socket-extensions.js +176 -0
- package/dist/esm/components/arkos-gateway/socket-extensions.js.map +1 -0
- package/dist/esm/components/arkos-gateway/types.js +3 -0
- package/dist/esm/components/arkos-gateway/types.js.map +1 -0
- package/dist/esm/components/arkos-gateway/utils/helpers.js +105 -0
- package/dist/esm/components/arkos-gateway/utils/helpers.js.map +1 -0
- package/dist/esm/components/arkos-gateway/utils/memory-gateway-store.js +45 -0
- package/dist/esm/components/arkos-gateway/utils/memory-gateway-store.js.map +1 -0
- package/dist/esm/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.js +40 -0
- package/dist/esm/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.js.map +1 -0
- package/dist/esm/components/arkos-gateway/utils/rate-limiter.js +13 -0
- package/dist/esm/components/arkos-gateway/utils/rate-limiter.js.map +1 -0
- package/dist/esm/components/arkos-loadable-registry/index.js +1 -3
- package/dist/esm/components/arkos-loadable-registry/index.js.map +1 -1
- package/dist/esm/components/arkos-policy/index.js +3 -1
- package/dist/esm/components/arkos-policy/index.js.map +1 -1
- package/dist/esm/components/arkos-route-hook/index.js +30 -19
- package/dist/esm/components/arkos-route-hook/index.js.map +1 -1
- package/dist/esm/components/arkos-route-hook/reader.js.map +1 -1
- package/dist/esm/components/arkos-route-hook/types.js.map +1 -1
- package/dist/esm/exports/error-handler/index.js +1 -0
- package/dist/esm/exports/error-handler/index.js.map +1 -1
- package/dist/esm/exports/file-upload.js +2 -0
- package/dist/esm/exports/file-upload.js.map +1 -0
- package/dist/esm/exports/index.js +3 -3
- package/dist/esm/exports/index.js.map +1 -1
- package/dist/esm/exports/middlewares/index.js +1 -1
- package/dist/esm/exports/middlewares/index.js.map +1 -1
- package/dist/esm/exports/services/index.js +2 -2
- package/dist/esm/exports/services/index.js.map +1 -1
- package/dist/esm/exports/websockets.js +5 -0
- package/dist/esm/exports/websockets.js.map +1 -0
- package/dist/esm/generated.js.map +1 -1
- package/dist/esm/modules/auth/auth.controller.js +165 -230
- package/dist/esm/modules/auth/auth.controller.js.map +1 -1
- package/dist/esm/modules/auth/auth.router.js +28 -10
- package/dist/esm/modules/auth/auth.router.js.map +1 -1
- package/dist/esm/modules/auth/auth.service.js +202 -136
- package/dist/esm/modules/auth/auth.service.js.map +1 -1
- package/dist/esm/modules/auth/auth.types.js +2 -0
- package/dist/esm/modules/auth/auth.types.js.map +1 -0
- package/dist/esm/modules/auth/utils/auth-error-objects.js +2 -2
- package/dist/esm/modules/auth/utils/auth-error-objects.js.map +1 -1
- package/dist/esm/modules/auth/utils/auth-hooks-manager.js +148 -0
- package/dist/esm/modules/auth/utils/auth-hooks-manager.js.map +1 -0
- package/dist/esm/modules/auth/utils/auth-openapi-generator.js +367 -0
- package/dist/esm/modules/auth/utils/auth-openapi-generator.js.map +1 -0
- package/dist/esm/modules/auth/utils/auth-prisma-json-schema-generator.js +97 -0
- package/dist/esm/modules/auth/utils/auth-prisma-json-schema-generator.js.map +1 -0
- package/dist/esm/modules/auth/utils/docs-links.js +6 -0
- package/dist/esm/modules/auth/utils/docs-links.js.map +1 -0
- package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +1 -0
- package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js.map +1 -1
- package/dist/esm/modules/auth/utils/services/auth-action.service.js +20 -16
- package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
- package/dist/esm/modules/auth/utils/token-extraction.js +57 -0
- package/dist/esm/modules/auth/utils/token-extraction.js.map +1 -0
- package/dist/esm/modules/base/base.controller.js +228 -202
- package/dist/esm/modules/base/base.controller.js.map +1 -1
- package/dist/esm/modules/base/base.middlewares.js +69 -86
- package/dist/esm/modules/base/base.middlewares.js.map +1 -1
- package/dist/esm/modules/base/base.router.js +23 -9
- package/dist/esm/modules/base/base.router.js.map +1 -1
- package/dist/esm/modules/base/base.service.js +92 -197
- package/dist/esm/modules/base/base.service.js.map +1 -1
- package/dist/esm/modules/base/types/base.service.types.js.map +1 -1
- package/dist/esm/modules/base/utils/error-prettifier.js +90 -30
- package/dist/esm/modules/base/utils/error-prettifier.js.map +1 -1
- package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +26 -5
- package/dist/esm/modules/base/utils/helpers/base.service.helpers.js.map +1 -1
- package/dist/esm/modules/base/utils/model-openapi-generator.js +438 -0
- package/dist/esm/modules/base/utils/model-openapi-generator.js.map +1 -0
- package/dist/esm/modules/email/email.service.js +21 -12
- package/dist/esm/modules/email/email.service.js.map +1 -1
- package/dist/esm/modules/error-handler/error-handler.controller.js +24 -113
- package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -1
- package/dist/esm/modules/error-handler/utils/app-error.js +5 -2
- package/dist/esm/modules/error-handler/utils/app-error.js.map +1 -1
- package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -1
- package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +60 -110
- package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
- package/dist/esm/modules/error-handler/utils/errors.js +127 -0
- package/dist/esm/modules/error-handler/utils/errors.js.map +1 -0
- package/dist/esm/modules/error-handler/utils/get-handled-error.js +73 -0
- package/dist/esm/modules/error-handler/utils/get-handled-error.js.map +1 -0
- package/dist/esm/modules/error-handler/utils/multer-error-handler.js +34 -0
- package/dist/esm/modules/error-handler/utils/multer-error-handler.js.map +1 -0
- package/dist/esm/modules/file-upload/file-upload.controller.js +227 -215
- package/dist/esm/modules/file-upload/file-upload.controller.js.map +1 -1
- package/dist/esm/modules/file-upload/file-upload.router.js +54 -15
- package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -1
- package/dist/esm/modules/file-upload/file-upload.service.js +41 -26
- package/dist/esm/modules/file-upload/file-upload.service.js.map +1 -1
- package/dist/esm/modules/file-upload/utils/file-upload-json-schema-generator.js +371 -0
- package/dist/esm/modules/file-upload/utils/file-upload-json-schema-generator.js.map +1 -0
- package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +73 -35
- package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -1
- package/dist/esm/modules/file-upload/utils/helpers/serve-upload-dir.js +206 -0
- package/dist/esm/modules/file-upload/utils/helpers/serve-upload-dir.js.map +1 -0
- package/dist/esm/modules/file-upload/utils/helpers/upload-path.helper.js +103 -0
- package/dist/esm/modules/file-upload/utils/helpers/upload-path.helper.js.map +1 -0
- package/dist/esm/modules/file-upload/utils/helpers/upload-serving-validation.js +212 -0
- package/dist/esm/modules/file-upload/utils/helpers/upload-serving-validation.js.map +1 -0
- package/dist/esm/modules/file-upload/utils/helpers/upload-serving.registry.js +30 -0
- package/dist/esm/modules/file-upload/utils/helpers/upload-serving.registry.js.map +1 -0
- package/dist/esm/modules/swagger/swagger.router.js +39 -22
- package/dist/esm/modules/swagger/swagger.router.js.map +1 -1
- package/dist/esm/modules/swagger/utils/get-open-api-login-html.js +305 -0
- package/dist/esm/modules/swagger/utils/get-open-api-login-html.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/class-validator-to-json-schema.js.map +1 -1
- package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js +6 -7
- package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -1
- package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js +47 -43
- package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js.map +1 -1
- package/dist/esm/server.js +1 -1
- package/dist/esm/server.js.map +1 -1
- package/dist/esm/types/arkos-config/utils.js +2 -0
- package/dist/esm/types/arkos-config/utils.js.map +1 -0
- package/dist/esm/types/arkos-prisma-input.js.map +1 -1
- package/dist/esm/types/arkos.js.map +1 -1
- package/dist/esm/types/auth.js.map +1 -1
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/internal.js +2 -0
- package/dist/esm/types/internal.js.map +1 -0
- package/dist/esm/types/new-arkos-config.js.map +1 -1
- package/dist/esm/types/router-config.js.map +1 -1
- package/dist/esm/types/upload.js +2 -0
- package/dist/esm/types/upload.js.map +1 -0
- package/dist/esm/types/validation/validation-manager.js +57 -0
- package/dist/esm/types/validation/validation-manager.js.map +1 -0
- package/dist/esm/types/validation/validator.js +2 -0
- package/dist/esm/types/validation/validator.js.map +1 -0
- package/dist/esm/utils/arkos-router/arkos-router-openapi-manager.js +68 -34
- package/dist/esm/utils/arkos-router/arkos-router-openapi-manager.js.map +1 -1
- package/dist/esm/utils/arkos-router/index.js +58 -158
- package/dist/esm/utils/arkos-router/index.js.map +1 -1
- package/dist/esm/utils/arkos-router/route-config-registry.js +2 -3
- package/dist/esm/utils/arkos-router/route-config-registry.js.map +1 -1
- package/dist/esm/utils/arkos-router/route-config-validator.js +11 -10
- package/dist/esm/utils/arkos-router/route-config-validator.js.map +1 -1
- package/dist/esm/utils/arkos-router/types/index.js.map +1 -1
- package/dist/esm/utils/arkos-router/types/openapi-config.js.map +1 -1
- package/dist/esm/utils/arkos-router/types/upload-config.js.map +1 -1
- package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js +198 -0
- package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js.map +1 -0
- package/dist/esm/utils/arkos-router/utils/helpers/index.js +92 -29
- package/dist/esm/utils/arkos-router/utils/helpers/index.js.map +1 -1
- package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js +683 -119
- package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js.map +1 -1
- package/dist/esm/utils/bundler.js +6 -6
- package/dist/esm/utils/bundler.js.map +1 -1
- package/dist/esm/utils/cli/build.js +16 -9
- package/dist/esm/utils/cli/build.js.map +1 -1
- package/dist/esm/utils/cli/dev.js +33 -32
- package/dist/esm/utils/cli/dev.js.map +1 -1
- package/dist/esm/utils/cli/export-auth-action.js +7 -7
- package/dist/esm/utils/cli/export-auth-action.js.map +1 -1
- package/dist/esm/utils/cli/generate.js +77 -58
- package/dist/esm/utils/cli/generate.js.map +1 -1
- package/dist/esm/utils/cli/index.js +74 -56
- package/dist/esm/utils/cli/index.js.map +1 -1
- package/dist/esm/utils/cli/prisma-generate.js +66 -35
- package/dist/esm/utils/cli/prisma-generate.js.map +1 -1
- package/dist/esm/utils/cli/start.js +27 -16
- package/dist/esm/utils/cli/start.js.map +1 -1
- package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
- package/dist/esm/utils/cli/utils/dependency-version-check.js +39 -0
- package/dist/esm/utils/cli/utils/dependency-version-check.js.map +1 -0
- package/dist/esm/utils/cli/utils/runtime-cli-commander.js +7 -3
- package/dist/esm/utils/cli/utils/runtime-cli-commander.js.map +1 -1
- package/dist/esm/utils/cli/utils/smart-fs-watcher.js +3 -0
- package/dist/esm/utils/cli/utils/smart-fs-watcher.js.map +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +307 -11
- package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +16 -7
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-multiple-components.js +117 -65
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-multiple-components.js.map +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/policy-template.js +6 -8
- package/dist/esm/utils/cli/utils/template-generator/templates/policy-template.js.map +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js +13 -2
- package/dist/esm/utils/cli/utils/template-generator/templates/router-template.js.map +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js +2 -2
- package/dist/esm/utils/cli/utils/template-generator/templates/service-template.js.map +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js +213 -19
- package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +1 -1
- package/dist/esm/utils/cli/utils/template-generators.js +31 -18
- package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
- package/dist/esm/utils/cli/utils/watermark-stamper.js +1 -1
- package/dist/esm/utils/cli/utils/watermark-stamper.js.map +1 -1
- package/dist/esm/utils/define-config.js +15 -0
- package/dist/esm/utils/define-config.js.map +1 -1
- package/dist/esm/utils/docs-links.js +2 -0
- package/dist/esm/utils/docs-links.js.map +1 -0
- package/dist/esm/utils/dotenv.helpers.js +3 -7
- package/dist/esm/utils/dotenv.helpers.js.map +1 -1
- package/dist/esm/utils/dynamic-loader.js +6 -5
- package/dist/esm/utils/dynamic-loader.js.map +1 -1
- package/dist/esm/utils/features/api.features.js +46 -27
- package/dist/esm/utils/features/api.features.js.map +1 -1
- package/dist/esm/utils/features/port-and-host-allocator.js +4 -3
- package/dist/esm/utils/features/port-and-host-allocator.js.map +1 -1
- package/dist/esm/utils/helpers/api.features.helpers.js +20 -0
- package/dist/esm/utils/helpers/api.features.helpers.js.map +1 -1
- package/dist/esm/utils/helpers/arkos-config.helpers.js +60 -24
- package/dist/esm/utils/helpers/arkos-config.helpers.js.map +1 -1
- package/dist/esm/utils/helpers/exit-error.js +1 -0
- package/dist/esm/utils/helpers/exit-error.js.map +1 -1
- package/dist/esm/utils/helpers/fs.helpers.js +25 -32
- package/dist/esm/utils/helpers/fs.helpers.js.map +1 -1
- package/dist/esm/utils/helpers/global.helpers.js +1 -1
- package/dist/esm/utils/helpers/global.helpers.js.map +1 -1
- package/dist/esm/utils/helpers/prisma.helpers.js +10 -7
- package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -1
- package/dist/esm/utils/helpers/query-parser.helpers.js +7 -22
- package/dist/esm/utils/helpers/query-parser.helpers.js.map +1 -1
- package/dist/esm/utils/helpers/routers.helpers.js +2 -2
- package/dist/esm/utils/helpers/routers.helpers.js.map +1 -1
- package/dist/esm/utils/helpers/url-helpers.js +11 -0
- package/dist/esm/utils/helpers/url-helpers.js.map +1 -0
- package/dist/esm/utils/initialize-app.js +43 -17
- package/dist/esm/utils/initialize-app.js.map +1 -1
- package/dist/esm/utils/prisma/prisma-json-schema-generator.js +154 -226
- package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -1
- package/dist/esm/utils/prisma/prisma-schema-parser.js +37 -11
- package/dist/esm/utils/prisma/prisma-schema-parser.js.map +1 -1
- package/dist/esm/utils/prisma/types.js.map +1 -1
- package/dist/esm/utils/remove-dir.js +1 -1
- package/dist/esm/utils/remove-dir.js.map +1 -1
- package/dist/esm/utils/setup-app.js +59 -42
- package/dist/esm/utils/setup-app.js.map +1 -1
- package/dist/esm/utils/validate-schema.js +25 -23
- package/dist/esm/utils/validate-schema.js.map +1 -1
- package/dist/types/app.d.ts +15 -10
- package/dist/types/components/arkos-gateway/arkos-gateway.d.ts +135 -0
- package/dist/types/components/arkos-gateway/socket-extensions.d.ts +80 -0
- package/dist/types/components/arkos-gateway/types.d.ts +467 -0
- package/dist/types/components/arkos-gateway/utils/helpers.d.ts +9 -0
- package/dist/types/components/arkos-gateway/utils/memory-gateway-store.d.ts +14 -0
- package/dist/types/components/arkos-gateway/utils/multi-tier-arkos-gateway-store.d.ts +20 -0
- package/dist/types/components/arkos-gateway/utils/rate-limiter.d.ts +11 -0
- package/dist/types/components/arkos-route-hook/index.d.ts +13 -6
- package/dist/types/components/arkos-route-hook/reader.d.ts +4 -7
- package/dist/types/components/arkos-route-hook/types.d.ts +12 -5
- package/dist/types/exports/error-handler/index.d.ts +1 -0
- package/dist/types/exports/file-upload.d.ts +1 -0
- package/dist/types/exports/index.d.ts +4 -5
- package/dist/types/exports/middlewares/index.d.ts +1 -1
- package/dist/types/exports/services/index.d.ts +3 -3
- package/dist/types/exports/websockets.d.ts +5 -0
- package/dist/types/modules/auth/auth.controller.d.ts +10 -3
- package/dist/types/modules/auth/auth.service.d.ts +170 -51
- package/dist/types/modules/auth/auth.types.d.ts +72 -0
- package/dist/types/modules/auth/utils/auth-hooks-manager.d.ts +63 -0
- package/dist/types/modules/auth/utils/auth-openapi-generator.d.ts +9 -0
- package/dist/types/modules/auth/utils/auth-prisma-json-schema-generator.d.ts +13 -0
- package/dist/types/modules/auth/utils/docs-links.d.ts +3 -0
- package/dist/types/modules/auth/utils/helpers/auth.controller.helpers.d.ts +1 -0
- package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +2 -2
- package/dist/types/modules/auth/utils/token-extraction.d.ts +53 -0
- package/dist/types/modules/base/base.controller.d.ts +7 -6
- package/dist/types/modules/base/base.middlewares.d.ts +3 -9
- package/dist/types/modules/base/base.service.d.ts +18 -26
- package/dist/types/modules/base/types/base.service.types.d.ts +11 -0
- package/dist/types/modules/base/utils/error-prettifier.d.ts +8 -0
- package/dist/types/modules/base/utils/helpers/base.service.helpers.d.ts +1 -1
- package/dist/types/modules/base/utils/model-openapi-generator.d.ts +12 -0
- package/dist/types/modules/email/email.service.d.ts +3 -1
- package/dist/types/modules/error-handler/utils/app-error.d.ts +0 -2
- package/dist/types/modules/error-handler/utils/catch-async.d.ts +2 -2
- package/dist/types/modules/error-handler/utils/error-handler.helpers.d.ts +2 -27
- package/dist/types/modules/error-handler/utils/errors.d.ts +176 -0
- package/dist/types/modules/error-handler/utils/get-handled-error.d.ts +1 -0
- package/dist/types/modules/error-handler/utils/multer-error-handler.d.ts +7 -0
- package/dist/types/modules/file-upload/file-upload.controller.d.ts +7 -2
- package/dist/types/modules/file-upload/file-upload.service.d.ts +2 -6
- package/dist/types/modules/file-upload/utils/file-upload-json-schema-generator.d.ts +12 -0
- package/dist/types/modules/file-upload/utils/helpers/file-upload.helpers.d.ts +21 -1
- package/dist/types/modules/file-upload/utils/helpers/serve-upload-dir.d.ts +43 -0
- package/dist/types/modules/file-upload/utils/helpers/upload-path.helper.d.ts +14 -0
- package/dist/types/modules/file-upload/utils/helpers/upload-serving-validation.d.ts +5 -0
- package/dist/types/modules/file-upload/utils/helpers/upload-serving.registry.d.ts +31 -0
- package/dist/types/modules/swagger/swagger.router.d.ts +1 -2
- package/dist/types/modules/swagger/utils/get-open-api-login-html.d.ts +1 -0
- package/dist/types/modules/swagger/utils/helpers/get-swagger-default-configs.d.ts +48 -3
- package/dist/types/modules/swagger/utils/helpers/openapi-schema-converter.d.ts +8 -3
- package/dist/types/types/arkos-config/utils.d.ts +68 -0
- package/dist/types/types/arkos-prisma-input.d.ts +7 -3
- package/dist/types/types/arkos.d.ts +5 -15
- package/dist/types/types/auth.d.ts +4 -4
- package/dist/types/types/index.d.ts +15 -58
- package/dist/types/types/internal.d.ts +25 -0
- package/dist/types/types/new-arkos-config.d.ts +374 -67
- package/dist/types/types/router-config.d.ts +3 -66
- package/dist/types/types/upload.d.ts +45 -0
- package/dist/types/types/validation/validation-manager.d.ts +25 -0
- package/dist/types/types/validation/validator.d.ts +2 -0
- package/dist/types/utils/arkos-router/arkos-router-openapi-manager.d.ts +14 -1
- package/dist/types/utils/arkos-router/index.d.ts +86 -11
- package/dist/types/utils/arkos-router/types/index.d.ts +83 -31
- package/dist/types/utils/arkos-router/types/openapi-config.d.ts +3 -2
- package/dist/types/utils/arkos-router/types/upload-config.d.ts +158 -10
- package/dist/types/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.d.ts +6 -0
- package/dist/types/utils/arkos-router/utils/helpers/index.d.ts +4 -6
- package/dist/types/utils/arkos-router/utils/helpers/upload-manager.d.ts +21 -36
- package/dist/types/utils/bundler.d.ts +1 -1
- package/dist/types/utils/cli/build.d.ts +1 -1
- package/dist/types/utils/cli/generate.d.ts +15 -6
- package/dist/types/utils/cli/start.d.ts +3 -1
- package/dist/types/utils/cli/utils/dependency-version-check.d.ts +15 -0
- package/dist/types/utils/cli/utils/template-generator/templates/class-validator-dto-generator.d.ts +11 -0
- package/dist/types/utils/cli/utils/template-generator/templates/zod-schema-generator.d.ts +4 -0
- package/dist/types/utils/define-config.d.ts +57 -3
- package/dist/types/utils/docs-links.d.ts +1 -0
- package/dist/types/utils/dotenv.helpers.d.ts +1 -0
- package/dist/types/utils/dynamic-loader.d.ts +2 -2
- package/dist/types/utils/features/api.features.d.ts +1 -2
- package/dist/types/utils/helpers/arkos-config.helpers.d.ts +9 -1
- package/dist/types/utils/helpers/fs.helpers.d.ts +1 -16
- package/dist/types/utils/helpers/global.helpers.d.ts +1 -0
- package/dist/types/utils/helpers/prisma.helpers.d.ts +1 -1
- package/dist/types/utils/helpers/query-parser.helpers.d.ts +1 -1
- package/dist/types/utils/helpers/url-helpers.d.ts +1 -0
- package/dist/types/utils/initialize-app.d.ts +1 -0
- package/dist/types/utils/prisma/prisma-json-schema-generator.d.ts +12 -30
- package/dist/types/utils/prisma/prisma-schema-parser.d.ts +4 -0
- package/dist/types/utils/prisma/types.d.ts +3 -2
- package/dist/types/utils/validate-schema.d.ts +1 -1
- package/package.json +84 -75
- package/dist/cjs/app.js +0 -79
- package/dist/cjs/app.js.map +0 -1
- package/dist/cjs/components/arkos-loadable-registry/index.js +0 -28
- package/dist/cjs/components/arkos-loadable-registry/index.js.map +0 -1
- package/dist/cjs/components/arkos-loadable-translator/index.js +0 -144
- package/dist/cjs/components/arkos-loadable-translator/index.js.map +0 -1
- package/dist/cjs/components/arkos-policy/index.js +0 -36
- package/dist/cjs/components/arkos-policy/index.js.map +0 -1
- package/dist/cjs/components/arkos-policy/types.js +0 -3
- package/dist/cjs/components/arkos-policy/types.js.map +0 -1
- package/dist/cjs/components/arkos-route-hook/index.js +0 -50
- package/dist/cjs/components/arkos-route-hook/index.js.map +0 -1
- package/dist/cjs/components/arkos-route-hook/reader.js +0 -47
- package/dist/cjs/components/arkos-route-hook/reader.js.map +0 -1
- package/dist/cjs/components/arkos-route-hook/types.js +0 -3
- package/dist/cjs/components/arkos-route-hook/types.js.map +0 -1
- package/dist/cjs/components/arkos-service-hook/index.js +0 -35
- package/dist/cjs/components/arkos-service-hook/index.js.map +0 -1
- package/dist/cjs/components/arkos-service-hook/reader.js +0 -30
- package/dist/cjs/components/arkos-service-hook/reader.js.map +0 -1
- package/dist/cjs/components/arkos-service-hook/types.js +0 -3
- package/dist/cjs/components/arkos-service-hook/types.js.map +0 -1
- package/dist/cjs/exports/auth/index.js +0 -6
- package/dist/cjs/exports/auth/index.js.map +0 -1
- package/dist/cjs/exports/config.js +0 -6
- package/dist/cjs/exports/config.js.map +0 -1
- package/dist/cjs/exports/controllers/index.js +0 -42
- package/dist/cjs/exports/controllers/index.js.map +0 -1
- package/dist/cjs/exports/error-handler/index.js +0 -11
- package/dist/cjs/exports/error-handler/index.js.map +0 -1
- package/dist/cjs/exports/index.js +0 -23
- package/dist/cjs/exports/index.js.map +0 -1
- package/dist/cjs/exports/middlewares/index.js +0 -7
- package/dist/cjs/exports/middlewares/index.js.map +0 -1
- package/dist/cjs/exports/prisma/index.js +0 -13
- package/dist/cjs/exports/prisma/index.js.map +0 -1
- package/dist/cjs/exports/services/index.js +0 -53
- package/dist/cjs/exports/services/index.js.map +0 -1
- package/dist/cjs/exports/utils/index.js +0 -26
- package/dist/cjs/exports/utils/index.js.map +0 -1
- package/dist/cjs/exports/validation/index.js +0 -11
- package/dist/cjs/exports/validation/index.js.map +0 -1
- package/dist/cjs/generated.js +0 -7
- package/dist/cjs/generated.js.map +0 -1
- package/dist/cjs/modules/auth/auth.controller.js +0 -254
- package/dist/cjs/modules/auth/auth.controller.js.map +0 -1
- package/dist/cjs/modules/auth/auth.router.js +0 -113
- package/dist/cjs/modules/auth/auth.router.js.map +0 -1
- package/dist/cjs/modules/auth/auth.service.js +0 -277
- package/dist/cjs/modules/auth/auth.service.js.map +0 -1
- package/dist/cjs/modules/auth/utils/auth-error-objects.js +0 -10
- package/dist/cjs/modules/auth/utils/auth-error-objects.js.map +0 -1
- package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +0 -83
- package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js.map +0 -1
- package/dist/cjs/modules/auth/utils/services/auth-action.service.js +0 -150
- package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +0 -1
- package/dist/cjs/modules/base/base.controller.js +0 -275
- package/dist/cjs/modules/base/base.controller.js.map +0 -1
- package/dist/cjs/modules/base/base.middlewares.js +0 -231
- package/dist/cjs/modules/base/base.middlewares.js.map +0 -1
- package/dist/cjs/modules/base/base.router.js +0 -112
- package/dist/cjs/modules/base/base.router.js.map +0 -1
- package/dist/cjs/modules/base/base.service.js +0 -432
- package/dist/cjs/modules/base/base.service.js.map +0 -1
- package/dist/cjs/modules/base/types/base.service.types.js +0 -3
- package/dist/cjs/modules/base/types/base.service.types.js.map +0 -1
- package/dist/cjs/modules/base/utils/error-prettifier.js +0 -188
- package/dist/cjs/modules/base/utils/error-prettifier.js.map +0 -1
- package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +0 -49
- package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js.map +0 -1
- package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +0 -13
- package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
- package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +0 -222
- package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js.map +0 -1
- package/dist/cjs/modules/base/utils/router-validator.js +0 -13
- package/dist/cjs/modules/base/utils/router-validator.js.map +0 -1
- package/dist/cjs/modules/base/utils/service-hooks-manager.js +0 -19
- package/dist/cjs/modules/base/utils/service-hooks-manager.js.map +0 -1
- package/dist/cjs/modules/debugger/debugger.service.js +0 -59
- package/dist/cjs/modules/debugger/debugger.service.js.map +0 -1
- package/dist/cjs/modules/email/email.service.js +0 -106
- package/dist/cjs/modules/email/email.service.js.map +0 -1
- package/dist/cjs/modules/error-handler/error-handler.controller.js +0 -192
- package/dist/cjs/modules/error-handler/error-handler.controller.js.map +0 -1
- package/dist/cjs/modules/error-handler/utils/app-error.js +0 -28
- package/dist/cjs/modules/error-handler/utils/app-error.js.map +0 -1
- package/dist/cjs/modules/error-handler/utils/catch-async.js +0 -21
- package/dist/cjs/modules/error-handler/utils/catch-async.js.map +0 -1
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +0 -218
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +0 -1
- package/dist/cjs/modules/file-upload/file-upload.controller.js +0 -256
- package/dist/cjs/modules/file-upload/file-upload.controller.js.map +0 -1
- package/dist/cjs/modules/file-upload/file-upload.router.js +0 -80
- package/dist/cjs/modules/file-upload/file-upload.router.js.map +0 -1
- package/dist/cjs/modules/file-upload/file-upload.service.js +0 -343
- package/dist/cjs/modules/file-upload/file-upload.service.js.map +0 -1
- package/dist/cjs/modules/file-upload/utils/helpers/file-extensions.js +0 -134
- package/dist/cjs/modules/file-upload/utils/helpers/file-extensions.js.map +0 -1
- package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +0 -100
- package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js.map +0 -1
- package/dist/cjs/modules/swagger/swagger.router.js +0 -65
- package/dist/cjs/modules/swagger/swagger.router.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/built-in-route-path-object-manager.js +0 -7
- package/dist/cjs/modules/swagger/utils/built-in-route-path-object-manager.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/helpers/class-validator-to-json-schema.js +0 -53
- package/dist/cjs/modules/swagger/utils/helpers/class-validator-to-json-schema.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +0 -473
- package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +0 -491
- package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +0 -73
- package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +0 -37
- package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +0 -61
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +0 -31
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +0 -49
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +0 -39
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +0 -468
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +0 -260
- package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js +0 -331
- package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js.map +0 -1
- package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +0 -109
- package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +0 -1
- package/dist/cjs/package.json +0 -3
- package/dist/cjs/server.js +0 -60
- package/dist/cjs/server.js.map +0 -1
- package/dist/cjs/types/arkos-prisma-input.js +0 -3
- package/dist/cjs/types/arkos-prisma-input.js.map +0 -1
- package/dist/cjs/types/arkos.js +0 -3
- package/dist/cjs/types/arkos.js.map +0 -1
- package/dist/cjs/types/auth.js +0 -3
- package/dist/cjs/types/auth.js.map +0 -1
- package/dist/cjs/types/index.js +0 -3
- package/dist/cjs/types/index.js.map +0 -1
- package/dist/cjs/types/new-arkos-config.js +0 -3
- package/dist/cjs/types/new-arkos-config.js.map +0 -1
- package/dist/cjs/types/router-config.js +0 -3
- package/dist/cjs/types/router-config.js.map +0 -1
- package/dist/cjs/utils/arkos-env.js +0 -9
- package/dist/cjs/utils/arkos-env.js.map +0 -1
- package/dist/cjs/utils/arkos-router/arkos-router-openapi-manager.js +0 -126
- package/dist/cjs/utils/arkos-router/arkos-router-openapi-manager.js.map +0 -1
- package/dist/cjs/utils/arkos-router/index.js +0 -253
- package/dist/cjs/utils/arkos-router/index.js.map +0 -1
- package/dist/cjs/utils/arkos-router/route-config-registry.js +0 -16
- package/dist/cjs/utils/arkos-router/route-config-registry.js.map +0 -1
- package/dist/cjs/utils/arkos-router/route-config-validator.js +0 -56
- package/dist/cjs/utils/arkos-router/route-config-validator.js.map +0 -1
- package/dist/cjs/utils/arkos-router/types/body-parser-config.js +0 -3
- package/dist/cjs/utils/arkos-router/types/body-parser-config.js.map +0 -1
- package/dist/cjs/utils/arkos-router/types/index.js +0 -3
- package/dist/cjs/utils/arkos-router/types/index.js.map +0 -1
- package/dist/cjs/utils/arkos-router/types/openapi-config.js +0 -3
- package/dist/cjs/utils/arkos-router/types/openapi-config.js.map +0 -1
- package/dist/cjs/utils/arkos-router/types/upload-config.js +0 -3
- package/dist/cjs/utils/arkos-router/types/upload-config.js.map +0 -1
- package/dist/cjs/utils/arkos-router/utils/helpers/index.js +0 -163
- package/dist/cjs/utils/arkos-router/utils/helpers/index.js.map +0 -1
- package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js +0 -283
- package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js.map +0 -1
- package/dist/cjs/utils/bundler.js +0 -163
- package/dist/cjs/utils/bundler.js.map +0 -1
- package/dist/cjs/utils/cli/build.js +0 -200
- package/dist/cjs/utils/cli/build.js.map +0 -1
- package/dist/cjs/utils/cli/dev.js +0 -128
- package/dist/cjs/utils/cli/dev.js.map +0 -1
- package/dist/cjs/utils/cli/export-auth-action.js +0 -79
- package/dist/cjs/utils/cli/export-auth-action.js.map +0 -1
- package/dist/cjs/utils/cli/generate.js +0 -229
- package/dist/cjs/utils/cli/generate.js.map +0 -1
- package/dist/cjs/utils/cli/index.js +0 -191
- package/dist/cjs/utils/cli/index.js.map +0 -1
- package/dist/cjs/utils/cli/prisma-generate.js +0 -112
- package/dist/cjs/utils/cli/prisma-generate.js.map +0 -1
- package/dist/cjs/utils/cli/start.js +0 -72
- package/dist/cjs/utils/cli/start.js.map +0 -1
- package/dist/cjs/utils/cli/utils/cli.helpers.js +0 -24
- package/dist/cjs/utils/cli/utils/cli.helpers.js.map +0 -1
- package/dist/cjs/utils/cli/utils/runtime-cli-commander.js +0 -114
- package/dist/cjs/utils/cli/utils/runtime-cli-commander.js.map +0 -1
- package/dist/cjs/utils/cli/utils/smart-fs-watcher.js +0 -73
- package/dist/cjs/utils/cli/utils/smart-fs-watcher.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +0 -550
- package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -52
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-multiple-components.js +0 -139
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-multiple-components.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js +0 -53
- package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/route-hook.template.js +0 -39
- package/dist/cjs/utils/cli/utils/template-generator/templates/route-hook.template.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js +0 -19
- package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/service-hook.template.js +0 -32
- package/dist/cjs/utils/cli/utils/template-generator/templates/service-hook.template.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js +0 -50
- package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js +0 -351
- package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +0 -1
- package/dist/cjs/utils/cli/utils/template-generators.js +0 -52
- package/dist/cjs/utils/cli/utils/template-generators.js.map +0 -1
- package/dist/cjs/utils/cli/utils/watermark-stamper.js +0 -26
- package/dist/cjs/utils/cli/utils/watermark-stamper.js.map +0 -1
- package/dist/cjs/utils/define-config.js +0 -46
- package/dist/cjs/utils/define-config.js.map +0 -1
- package/dist/cjs/utils/dotenv.helpers.js +0 -52
- package/dist/cjs/utils/dotenv.helpers.js.map +0 -1
- package/dist/cjs/utils/dynamic-loader.js +0 -22
- package/dist/cjs/utils/dynamic-loader.js.map +0 -1
- package/dist/cjs/utils/expand-env.js +0 -72
- package/dist/cjs/utils/expand-env.js.map +0 -1
- package/dist/cjs/utils/features/api.features.js +0 -201
- package/dist/cjs/utils/features/api.features.js.map +0 -1
- package/dist/cjs/utils/features/port-and-host-allocator.js +0 -129
- package/dist/cjs/utils/features/port-and-host-allocator.js.map +0 -1
- package/dist/cjs/utils/helpers/api.features.helpers.js +0 -327
- package/dist/cjs/utils/helpers/api.features.helpers.js.map +0 -1
- package/dist/cjs/utils/helpers/arkos-config.helpers.js +0 -86
- package/dist/cjs/utils/helpers/arkos-config.helpers.js.map +0 -1
- package/dist/cjs/utils/helpers/change-case.helpers.js +0 -177
- package/dist/cjs/utils/helpers/change-case.helpers.js.map +0 -1
- package/dist/cjs/utils/helpers/deepmerge.helper.js +0 -115
- package/dist/cjs/utils/helpers/deepmerge.helper.js.map +0 -1
- package/dist/cjs/utils/helpers/exit-error.js +0 -12
- package/dist/cjs/utils/helpers/exit-error.js.map +0 -1
- package/dist/cjs/utils/helpers/fs.helpers.js +0 -60
- package/dist/cjs/utils/helpers/fs.helpers.js.map +0 -1
- package/dist/cjs/utils/helpers/global.helpers.js +0 -105
- package/dist/cjs/utils/helpers/global.helpers.js.map +0 -1
- package/dist/cjs/utils/helpers/prisma.helpers.js +0 -53
- package/dist/cjs/utils/helpers/prisma.helpers.js.map +0 -1
- package/dist/cjs/utils/helpers/query-parser.helpers.js +0 -69
- package/dist/cjs/utils/helpers/query-parser.helpers.js.map +0 -1
- package/dist/cjs/utils/helpers/routers.helpers.js +0 -36
- package/dist/cjs/utils/helpers/routers.helpers.js.map +0 -1
- package/dist/cjs/utils/helpers/text.helpers.js +0 -28
- package/dist/cjs/utils/helpers/text.helpers.js.map +0 -1
- package/dist/cjs/utils/initialize-app.js +0 -55
- package/dist/cjs/utils/initialize-app.js.map +0 -1
- package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +0 -437
- package/dist/cjs/utils/prisma/prisma-json-schema-generator.js.map +0 -1
- package/dist/cjs/utils/prisma/prisma-schema-parser.js +0 -360
- package/dist/cjs/utils/prisma/prisma-schema-parser.js.map +0 -1
- package/dist/cjs/utils/prisma/types.js +0 -3
- package/dist/cjs/utils/prisma/types.js.map +0 -1
- package/dist/cjs/utils/remove-dir.js +0 -14
- package/dist/cjs/utils/remove-dir.js.map +0 -1
- package/dist/cjs/utils/setup-app.js +0 -119
- package/dist/cjs/utils/setup-app.js.map +0 -1
- package/dist/cjs/utils/sheu.js +0 -131
- package/dist/cjs/utils/sheu.js.map +0 -1
- package/dist/cjs/utils/validate-dto.js +0 -19
- package/dist/cjs/utils/validate-dto.js.map +0 -1
- package/dist/cjs/utils/validate-schema.js +0 -75
- package/dist/cjs/utils/validate-schema.js.map +0 -1
- package/dist/esm/components/arkos-loadable-translator/index.js +0 -138
- package/dist/esm/components/arkos-loadable-translator/index.js.map +0 -1
- package/dist/esm/components/arkos-service-hook/index.js +0 -32
- package/dist/esm/components/arkos-service-hook/index.js.map +0 -1
- package/dist/esm/components/arkos-service-hook/reader.js +0 -24
- package/dist/esm/components/arkos-service-hook/reader.js.map +0 -1
- package/dist/esm/components/arkos-service-hook/types.js +0 -2
- package/dist/esm/components/arkos-service-hook/types.js.map +0 -1
- package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +0 -10
- package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
- package/dist/esm/modules/base/utils/service-hooks-manager.js +0 -17
- package/dist/esm/modules/base/utils/service-hooks-manager.js.map +0 -1
- package/dist/esm/modules/swagger/utils/built-in-route-path-object-manager.js +0 -5
- package/dist/esm/modules/swagger/utils/built-in-route-path-object-manager.js.map +0 -1
- package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +0 -469
- package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +0 -1
- package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +0 -485
- package/dist/esm/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js.map +0 -1
- package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +0 -34
- package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +0 -1
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +0 -55
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +0 -1
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +0 -25
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +0 -1
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js +0 -46
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.js.map +0 -1
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +0 -33
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +0 -1
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +0 -462
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +0 -1
- package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +0 -255
- package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +0 -1
- package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +0 -98
- package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +0 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/route-hook.template.js +0 -36
- package/dist/esm/utils/cli/utils/template-generator/templates/route-hook.template.js.map +0 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/service-hook.template.js +0 -29
- package/dist/esm/utils/cli/utils/template-generator/templates/service-hook.template.js.map +0 -1
- package/dist/types/components/arkos-loadable-translator/index.d.ts +0 -53
- package/dist/types/components/arkos-service-hook/index.d.ts +0 -41
- package/dist/types/components/arkos-service-hook/reader.d.ts +0 -35
- package/dist/types/components/arkos-service-hook/types.d.ts +0 -240
- package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +0 -3
- package/dist/types/modules/base/utils/service-hooks-manager.d.ts +0 -10
- package/dist/types/modules/swagger/utils/built-in-route-path-object-manager.d.ts +0 -4
- package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +0 -5
- package/dist/types/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.d.ts +0 -3
- package/dist/types/modules/swagger/utils/helpers/get-system-json-schema-paths.d.ts +0 -2
- package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.d.ts +0 -1
- package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.d.ts +0 -1
- package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-system-json-schemas.d.ts +0 -4
- package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.d.ts +0 -1
- package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.d.ts +0 -2
- package/dist/types/modules/swagger/utils/helpers/missing-json-schemas-generator.d.ts +0 -76
- package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +0 -19
- package/dist/types/utils/cli/utils/template-generator/templates/route-hook.template.d.ts +0 -2
- package/dist/types/utils/cli/utils/template-generator/templates/service-hook.template.d.ts +0 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency-version-check.js","sourceRoot":"","sources":["../../../../../src/utils/cli/utils/dependency-version-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AACpE,OAAO,SAAS,MAAM,0BAA0B,CAAC;AAEjD,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,CAAC;AAErC,MAAM,mBAAmB,GAAG;IAC1B,cAAc;IACd,iBAAiB;IACjB,kBAAkB;IAClB,sBAAsB;CACd,CAAC;AAOX,MAAM,UAAU,4BAA4B,CAC1C,WAAmB;IAEnB,MAAM,GAAG,GAAG,cAAc,EAAE,CAAC;IAE7B,KAAK,MAAM,OAAO,IAAI,mBAAmB,EAAE,CAAC;QAC1C,MAAM,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,WAAW,CAAC,CAAC;QAC9C,IAAI,OAAO,OAAO,KAAK,QAAQ;YAAE,OAAO,OAAO,CAAC;IAClD,CAAC;IAED,OAAO,IAAI,CAAC;AACd,CAAC;AAYD,SAAS,iBAAiB,CAAC,YAAoB;IAC7C,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACxC,OAAO,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AACtD,CAAC;AAWD,SAAS,gBAAgB;IACvB,MAAM,eAAe,GAAG,4BAA4B,CAAC,KAAK,CAAC,CAAC;IAE5D,IAAI,CAAC,eAAe;QAAE,OAAO;IAE7B,MAAM,QAAQ,GAAG,cAAc,EAAE,EAAE,UAAU,EAAE,QAAQ,CAAC;IAExD,IAAI,QAAQ,KAAK,KAAK,IAAI,QAAQ,KAAK,QAAQ;QAAE,OAAO;IAExD,MAAM,KAAK,GAAG,iBAAiB,CAAC,eAAe,CAAC,CAAC;IAEjD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,IAAI,mBAAmB;QAAE,OAAO;IAE3D,MAAM,SAAS,CACb,4FAA4F,CAC7F,CAAC;AACJ,CAAC;AASD,MAAM,UAAU,4BAA4B;IAC1C,gBAAgB,EAAE,CAAC;AACrB,CAAC","sourcesContent":["import { getPackageJson } from \"../../helpers/global.helpers\";\nimport { getArkosConfig } from \"../../helpers/arkos-config.helpers\";\nimport ExitError from \"../../helpers/exit-error\";\n\nexport const SUPPORTED_ZOD_MAJOR = 4;\n\nconst DEPENDENCY_SECTIONS = [\n \"dependencies\",\n \"devDependencies\",\n \"peerDependencies\",\n \"optionalDependencies\",\n] as const;\n\n/**\n * Reads the version range declared for a dependency in the user's package.json.\n *\n * @returns The declared range (e.g. \"^3.24.2\") or `null` when not declared.\n */\nexport function getDeclaredDependencyVersion(\n packageName: string\n): string | null {\n const pkg = getPackageJson();\n\n for (const section of DEPENDENCY_SECTIONS) {\n const version = pkg?.[section]?.[packageName];\n if (typeof version === \"string\") return version;\n }\n\n return null;\n}\n\n/**\n * Extracts the major version number from a declared semver range.\n *\n * @example\n * ```ts\n * parseMajorVersion(\"^3.24.2\") // 3\n * parseMajorVersion(\">=4.0.0\") // 4\n * parseMajorVersion(\"latest\") // null\n * ```\n */\nfunction parseMajorVersion(versionRange: string): number | null {\n const match = versionRange.match(/\\d+/);\n return match ? Number.parseInt(match[0], 10) : null;\n}\n\n/**\n * Ensures the Zod version declared in the user's project is supported by Arkos.\n *\n * Zod is optional - this is a no-op unless the project declares `zod` **and**\n * uses it as the validation resolver (`validation.resolver` set to `\"zod\"` or\n * `\"hybrid\"`).\n *\n * @throws {Error} When the declared Zod version is below v4.\n */\nfunction assertZodVersion(): void {\n const declaredVersion = getDeclaredDependencyVersion(\"zod\");\n\n if (!declaredVersion) return;\n\n const resolver = getArkosConfig()?.validation?.resolver;\n\n if (resolver !== \"zod\" && resolver !== \"hybrid\") return;\n\n const major = parseMajorVersion(declaredVersion);\n\n if (major === null || major >= SUPPORTED_ZOD_MAJOR) return;\n\n throw ExitError(\n `Unsupported zod version. Arkos 1.8+ requires at least zod 4, please install zod 4 instead.`\n );\n}\n\n/**\n * Asserts every package version requirement of the user's project.\n *\n * New dependency checks can be added here as Arkos requirements evolve.\n *\n * @throws {Error} When a required package version is not supported.\n */\nexport function assertRequiredPackageVersion(): void {\n assertZodVersion();\n}\n"]}
|
|
@@ -5,6 +5,7 @@ import sheu from "../../sheu.js";
|
|
|
5
5
|
import { fullCleanCwd, getUserFileExtension } from "../../helpers/fs.helpers.js";
|
|
6
6
|
import { importModule } from "../../helpers/global.helpers.js";
|
|
7
7
|
import { killDevelopmentServerChildProcess } from "../dev.js";
|
|
8
|
+
import { getArkosConfig } from "../../helpers/arkos-config.helpers.js";
|
|
8
9
|
class RuntimeCliCommander {
|
|
9
10
|
getOptions() {
|
|
10
11
|
return JSON.parse(process.env.CLI_COMMAND_OPTIONS || "{}");
|
|
@@ -45,8 +46,9 @@ class RuntimeCliCommander {
|
|
|
45
46
|
}
|
|
46
47
|
}
|
|
47
48
|
}
|
|
48
|
-
if (rolesChanges.length > 0
|
|
49
|
-
|
|
49
|
+
if (rolesChanges.length > 0 &&
|
|
50
|
+
!(getArkosConfig()?.authentication?.mode !== "static")) {
|
|
51
|
+
const warningMessage = `${getArkosConfig()?.authentication?.mode}Roles for the following permissions will be updated:\n${rolesChanges.join("\n")}`;
|
|
50
52
|
sheu.warn(warningMessage);
|
|
51
53
|
const answer = await new Promise((resolve) => {
|
|
52
54
|
process.stdout.write(`\n${sheu.green("?", { bold: true })} Do you want to proceed with updating these roles? (Y/n): `);
|
|
@@ -67,12 +69,14 @@ npx arkos export auth-action --overwrite
|
|
|
67
69
|
const existingAction = existingActions.find((existing) => existing.action === newAction.action &&
|
|
68
70
|
existing.resource === newAction.resource);
|
|
69
71
|
if (existingAction) {
|
|
70
|
-
|
|
72
|
+
newAction = {
|
|
71
73
|
...newAction,
|
|
72
74
|
...existingAction,
|
|
73
75
|
roles: newAction.roles,
|
|
74
76
|
};
|
|
75
77
|
}
|
|
78
|
+
if (getArkosConfig()?.authentication?.mode !== "static")
|
|
79
|
+
delete newAction.roles;
|
|
76
80
|
return newAction;
|
|
77
81
|
});
|
|
78
82
|
isUpdate = true;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime-cli-commander.js","sourceRoot":"","sources":["../../../../../src/utils/cli/utils/runtime-cli-commander.ts"],"names":[],"mappings":"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","sourcesContent":["import { authActionService } from \"../../../exports/services\";\nimport fs from \"fs/promises\";\nimport path from \"path\";\nimport sheu from \"../../sheu\";\nimport { fullCleanCwd, getUserFileExtension } from \"../../helpers/fs.helpers\";\nimport { importModule } from \"../../helpers/global.helpers\";\nimport { killDevelopmentServerChildProcess } from \"../dev\";\n\n/**\n * Runtime CLI Commander class for handling command-line interface commands\n * during runtime execution. Provides methods for executing various CLI commands\n * and managing their lifecycle.\n *\n * @class RuntimeCliCommander\n */\nclass RuntimeCliCommander {\n /**\n * Parses and returns CLI command options from environment variables\n *\n * @returns {Object} Parsed CLI command options object\n *\n * @example\n * // Returns { overwrite: true, path: './exports' }\n * getOptions();\n */\n getOptions(): { overwrite?: boolean; path: string } {\n return JSON.parse(process.env.CLI_COMMAND_OPTIONS || \"{}\");\n }\n\n /**\n * Terminates the development server child process and exits the current process\n *\n * @returns {void}\n */\n end(): void {\n killDevelopmentServerChildProcess();\n process.exit(1);\n }\n\n /**\n * Main command handler that routes to specific command implementations\n * based on the CLI_COMMAND environment variable\n *\n * @returns {Promise<void>}\n *\n * @example\n * // Handles EXPORT_AUTH_ACTION command\n * await handle();\n */\n async handle(): Promise<void> {\n const command = process.env.CLI_COMMAND;\n if (command === \"EXPORT_AUTH_ACTION\") await this.exportAuthAction();\n }\n\n /**\n * Exports authentication actions to a file, with options for merging with existing\n * actions and specifying output path\n *\n * @param {Object} [options] - Export configuration options\n * @param {boolean} [options.overwrite] - Whether to overwrite existing file (default: false)\n * @param {string} [options.path] - Custom output directory path\n * @returns {Promise<void>}\n *\n * @example\n * // Export with default options (merge if exists)\n * await exportAuthAction();\n *\n * @example\n * // Export with overwrite and custom path\n * await exportAuthAction({ overwrite: true, path: './custom-exports' });\n */\n async exportAuthAction(): Promise<void> {\n const options = this.getOptions() as { overwrite?: boolean; path?: string };\n const authActions = authActionService.getAll();\n const ext = getUserFileExtension();\n\n const targetPath = path.join(\n process.cwd(),\n options.path || \"\",\n `auth-actions.${ext}`\n );\n\n let finalAuthActions = authActions;\n let isUpdate = false;\n\n if (!options.overwrite) {\n try {\n const existingModule = await importModule(targetPath);\n const existingActions = existingModule.default || existingModule;\n\n const rolesChanges: string[] = [];\n\n for (const newAction of authActions) {\n const existingAction = existingActions.find(\n (existing: any) =>\n existing.action === newAction.action &&\n existing.resource === newAction.resource\n );\n\n if (existingAction) {\n const existingRoles = existingAction.roles\n ? [...existingAction.roles].sort()\n : [];\n const newRoles = newAction.roles ? [...newAction.roles].sort() : [];\n\n const rolesMatch =\n existingRoles.length === newRoles.length &&\n existingRoles.every((role, index) => role === newRoles[index]);\n\n if (!rolesMatch) {\n rolesChanges.push(\n ` - ${newAction.action}:${newAction.resource}: [${existingRoles.join(\", \")}] → [${newRoles.join(\", \")}]`\n );\n }\n }\n }\n\n if (rolesChanges.length > 0) {\n const warningMessage = `Roles for the following permissions will be updated:\\n${rolesChanges.join(\"\\n\")}`;\n\n sheu.warn(warningMessage);\n\n const answer = await new Promise<boolean>((resolve) => {\n process.stdout.write(\n `\\n${sheu.green(\"?\", { bold: true })} Do you want to proceed with updating these roles? (Y/n): `\n );\n process.stdin.once(\"data\", (data) => {\n const result = data.toString().trim().toLowerCase();\n process.stdin.pause();\n resolve(result === \"y\" || result.length === 0);\n });\n });\n\n if (!answer) {\n throw new Error(\n `Auth action export cancelled. Roles were not updated to preserve existing permissions., if you would like to overwrite existing auth actions run:\n\nnpx arkos export auth-action --overwrite\n`\n );\n }\n }\n\n finalAuthActions = [...authActions, ...existingActions].map(\n (newAction) => {\n const existingAction = existingActions.find(\n (existing: any) =>\n existing.action === newAction.action &&\n existing.resource === newAction.resource\n );\n\n if (existingAction) {\n return {\n ...newAction,\n ...existingAction,\n roles: newAction.roles,\n };\n }\n\n return newAction;\n }\n );\n\n isUpdate = true;\n } catch (error) {}\n }\n\n const fileContent = `const authActions = ${JSON.stringify(finalAuthActions, null, 2)}${ext === \"ts\" ? \" as const\" : \"\"};\n${\n ext === \"ts\"\n ? `\ntype AuthActionsArray = typeof authActions;\n\nexport type AuthResource = AuthActionsArray[number][\"resource\"];\n\nexport type AuthAction<R extends AuthResource = AuthResource> = Extract<\n AuthActionsArray[number],\n { resource: R }\n>[\"action\"];\n`\n : \"\"\n}\nexport default authActions;\n`;\n\n await fs.mkdir(path.dirname(targetPath), { recursive: true });\n await fs.writeFile(targetPath, fileContent, \"utf-8\");\n\n console.info(\"\");\n if (isUpdate)\n sheu.done(\n `Auth actions updated and exported successfully at ${fullCleanCwd(targetPath)}`\n );\n else\n sheu.done(\n `Auth actions exported successfully at ${fullCleanCwd(targetPath)}`\n );\n\n this.end();\n }\n}\n\n/**\n * Singleton instance of RuntimeCliCommander\n *\n * @type {RuntimeCliCommander}\n */\nconst runtimeCliCommander: RuntimeCliCommander = new RuntimeCliCommander();\n\nexport default runtimeCliCommander;\n"]}
|
|
1
|
+
{"version":3,"file":"runtime-cli-commander.js","sourceRoot":"","sources":["../../../../../src/utils/cli/utils/runtime-cli-commander.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAC9D,OAAO,EAAE,MAAM,aAAa,CAAC;AAC7B,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,IAAI,MAAM,YAAY,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,0BAA0B,CAAC;AAC9E,OAAO,EAAE,YAAY,EAAE,MAAM,8BAA8B,CAAC;AAC5D,OAAO,EAAE,iCAAiC,EAAE,MAAM,QAAQ,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,oCAAoC,CAAC;AASpE,MAAM,mBAAmB;IAUvB,UAAU;QACR,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,IAAI,CAAC,CAAC;IAC7D,CAAC;IAOD,GAAG;QACD,iCAAiC,EAAE,CAAC;QACpC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAYD,KAAK,CAAC,MAAM;QACV,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;QACxC,IAAI,OAAO,KAAK,oBAAoB;YAAE,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;IACtE,CAAC;IAmBD,KAAK,CAAC,gBAAgB;QACpB,MAAM,OAAO,GAAG,IAAI,CAAC,UAAU,EAA4C,CAAC;QAC5E,MAAM,WAAW,GAAG,iBAAiB,CAAC,MAAM,EAAE,CAAC;QAC/C,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;QAEnC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAC1B,OAAO,CAAC,GAAG,EAAE,EACb,OAAO,CAAC,IAAI,IAAI,EAAE,EAClB,gBAAgB,GAAG,EAAE,CACtB,CAAC;QAEF,IAAI,gBAAgB,GAAG,WAAW,CAAC;QACnC,IAAI,QAAQ,GAAG,KAAK,CAAC;QAErB,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC;gBACH,MAAM,cAAc,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,CAAC;gBACtD,MAAM,eAAe,GAAG,cAAc,CAAC,OAAO,IAAI,cAAc,CAAC;gBAEjE,MAAM,YAAY,GAAa,EAAE,CAAC;gBAElC,KAAK,MAAM,SAAS,IAAI,WAAW,EAAE,CAAC;oBACpC,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CACzC,CAAC,QAAa,EAAE,EAAE,CAChB,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;wBACpC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CAC3C,CAAC;oBAEF,IAAI,cAAc,EAAE,CAAC;wBACnB,MAAM,aAAa,GAAG,cAAc,CAAC,KAAK;4BACxC,CAAC,CAAC,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE;4BAClC,CAAC,CAAC,EAAE,CAAC;wBACP,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;wBAEpE,MAAM,UAAU,GACd,aAAa,CAAC,MAAM,KAAK,QAAQ,CAAC,MAAM;4BACxC,aAAa,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;wBAEjE,IAAI,CAAC,UAAU,EAAE,CAAC;4BAChB,YAAY,CAAC,IAAI,CACf,OAAO,SAAS,CAAC,MAAM,IAAI,SAAS,CAAC,QAAQ,MAAM,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAC1G,CAAC;wBACJ,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,IACE,YAAY,CAAC,MAAM,GAAG,CAAC;oBACvB,CAAC,CAAC,cAAc,EAAE,EAAE,cAAc,EAAE,IAAI,KAAK,QAAQ,CAAC,EACtD,CAAC;oBACD,MAAM,cAAc,GAAG,GAAG,cAAc,EAAE,EAAE,cAAc,EAAE,IAAI,yDAAyD,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBAEnJ,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;oBAE1B,MAAM,MAAM,GAAG,MAAM,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE;wBACpD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,KAAK,IAAI,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,4DAA4D,CACjG,CAAC;wBACF,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,EAAE;4BAClC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;4BACpD,OAAO,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;4BACtB,OAAO,CAAC,MAAM,KAAK,GAAG,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC;wBACjD,CAAC,CAAC,CAAC;oBACL,CAAC,CAAC,CAAC;oBAEH,IAAI,CAAC,MAAM,EAAE,CAAC;wBACZ,MAAM,IAAI,KAAK,CACb;;;CAGb,CACY,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,gBAAgB,GAAG,CAAC,GAAG,WAAW,EAAE,GAAG,eAAe,CAAC,CAAC,GAAG,CACzD,CAAC,SAAS,EAAE,EAAE;oBACZ,MAAM,cAAc,GAAG,eAAe,CAAC,IAAI,CACzC,CAAC,QAAa,EAAE,EAAE,CAChB,QAAQ,CAAC,MAAM,KAAK,SAAS,CAAC,MAAM;wBACpC,QAAQ,CAAC,QAAQ,KAAK,SAAS,CAAC,QAAQ,CAC3C,CAAC;oBAEF,IAAI,cAAc,EAAE,CAAC;wBACnB,SAAS,GAAG;4BACV,GAAG,SAAS;4BACZ,GAAG,cAAc;4BACjB,KAAK,EAAE,SAAS,CAAC,KAAK;yBACvB,CAAC;oBACJ,CAAC;oBAED,IAAI,cAAc,EAAE,EAAE,cAAc,EAAE,IAAI,KAAK,QAAQ;wBACrD,OAAO,SAAS,CAAC,KAAK,CAAC;oBAEzB,OAAO,SAAS,CAAC;gBACnB,CAAC,CACF,CAAC;gBAEF,QAAQ,GAAG,IAAI,CAAC;YAClB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC,CAAA,CAAC;QACpB,CAAC;QAED,MAAM,WAAW,GAAG,uBAAuB,IAAI,CAAC,SAAS,CAAC,gBAAgB,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;EAExH,GAAG,KAAK,IAAI;YACV,CAAC,CAAC;;;;;;;;;CASL;YACG,CAAC,CAAC,EACN;;CAEC,CAAC;QAEE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC9D,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAErD,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACjB,IAAI,QAAQ;YACV,IAAI,CAAC,IAAI,CACP,qDAAqD,YAAY,CAAC,UAAU,CAAC,EAAE,CAChF,CAAC;;YAEF,IAAI,CAAC,IAAI,CACP,yCAAyC,YAAY,CAAC,UAAU,CAAC,EAAE,CACpE,CAAC;QAEJ,IAAI,CAAC,GAAG,EAAE,CAAC;IACb,CAAC;CACF;AAOD,MAAM,mBAAmB,GAAwB,IAAI,mBAAmB,EAAE,CAAC;AAE3E,eAAe,mBAAmB,CAAC","sourcesContent":["import { authActionService } from \"../../../exports/services\";\nimport fs from \"fs/promises\";\nimport path from \"path\";\nimport sheu from \"../../sheu\";\nimport { fullCleanCwd, getUserFileExtension } from \"../../helpers/fs.helpers\";\nimport { importModule } from \"../../helpers/global.helpers\";\nimport { killDevelopmentServerChildProcess } from \"../dev\";\nimport { getArkosConfig } from \"../../helpers/arkos-config.helpers\";\n\n/**\n * Runtime CLI Commander class for handling command-line interface commands\n * during runtime execution. Provides methods for executing various CLI commands\n * and managing their lifecycle.\n *\n * @class RuntimeCliCommander\n */\nclass RuntimeCliCommander {\n /**\n * Parses and returns CLI command options from environment variables\n *\n * @returns {Object} Parsed CLI command options object\n *\n * @example\n * // Returns { overwrite: true, path: './exports' }\n * getOptions();\n */\n getOptions(): { overwrite?: boolean; path: string } {\n return JSON.parse(process.env.CLI_COMMAND_OPTIONS || \"{}\");\n }\n\n /**\n * Terminates the development server child process and exits the current process\n *\n * @returns {void}\n */\n end(): void {\n killDevelopmentServerChildProcess();\n process.exit(1);\n }\n\n /**\n * Main command handler that routes to specific command implementations\n * based on the CLI_COMMAND environment variable\n *\n * @returns {Promise<void>}\n *\n * @example\n * // Handles EXPORT_AUTH_ACTION command\n * await handle();\n */\n async handle(): Promise<void> {\n const command = process.env.CLI_COMMAND;\n if (command === \"EXPORT_AUTH_ACTION\") await this.exportAuthAction();\n }\n\n /**\n * Exports authentication actions to a file, with options for merging with existing\n * actions and specifying output path\n *\n * @param {Object} [options] - Export configuration options\n * @param {boolean} [options.overwrite] - Whether to overwrite existing file (default: false)\n * @param {string} [options.path] - Custom output directory path\n * @returns {Promise<void>}\n *\n * @example\n * // Export with default options (merge if exists)\n * await exportAuthAction();\n *\n * @example\n * // Export with overwrite and custom path\n * await exportAuthAction({ overwrite: true, path: './custom-exports' });\n */\n async exportAuthAction(): Promise<void> {\n const options = this.getOptions() as { overwrite?: boolean; path?: string };\n const authActions = authActionService.getAll();\n const ext = getUserFileExtension();\n\n const targetPath = path.join(\n process.cwd(),\n options.path || \"\",\n `auth-actions.${ext}`\n );\n\n let finalAuthActions = authActions;\n let isUpdate = false;\n\n if (!options.overwrite) {\n try {\n const existingModule = await importModule(targetPath);\n const existingActions = existingModule.default || existingModule;\n\n const rolesChanges: string[] = [];\n\n for (const newAction of authActions) {\n const existingAction = existingActions.find(\n (existing: any) =>\n existing.action === newAction.action &&\n existing.resource === newAction.resource\n );\n\n if (existingAction) {\n const existingRoles = existingAction.roles\n ? [...existingAction.roles].sort()\n : [];\n const newRoles = newAction.roles ? [...newAction.roles].sort() : [];\n\n const rolesMatch =\n existingRoles.length === newRoles.length &&\n existingRoles.every((role, index) => role === newRoles[index]);\n\n if (!rolesMatch) {\n rolesChanges.push(\n ` - ${newAction.action}:${newAction.resource}: [${existingRoles.join(\", \")}] → [${newRoles.join(\", \")}]`\n );\n }\n }\n }\n\n if (\n rolesChanges.length > 0 &&\n !(getArkosConfig()?.authentication?.mode !== \"static\")\n ) {\n const warningMessage = `${getArkosConfig()?.authentication?.mode}Roles for the following permissions will be updated:\\n${rolesChanges.join(\"\\n\")}`;\n\n sheu.warn(warningMessage);\n\n const answer = await new Promise<boolean>((resolve) => {\n process.stdout.write(\n `\\n${sheu.green(\"?\", { bold: true })} Do you want to proceed with updating these roles? (Y/n): `\n );\n process.stdin.once(\"data\", (data) => {\n const result = data.toString().trim().toLowerCase();\n process.stdin.pause();\n resolve(result === \"y\" || result.length === 0);\n });\n });\n\n if (!answer) {\n throw new Error(\n `Auth action export cancelled. Roles were not updated to preserve existing permissions., if you would like to overwrite existing auth actions run:\n\nnpx arkos export auth-action --overwrite\n`\n );\n }\n }\n\n finalAuthActions = [...authActions, ...existingActions].map(\n (newAction) => {\n const existingAction = existingActions.find(\n (existing: any) =>\n existing.action === newAction.action &&\n existing.resource === newAction.resource\n );\n\n if (existingAction) {\n newAction = {\n ...newAction,\n ...existingAction,\n roles: newAction.roles,\n };\n }\n\n if (getArkosConfig()?.authentication?.mode !== \"static\")\n delete newAction.roles;\n\n return newAction;\n }\n );\n\n isUpdate = true;\n } catch (error) {}\n }\n\n const fileContent = `const authActions = ${JSON.stringify(finalAuthActions, null, 2)}${ext === \"ts\" ? \" as const\" : \"\"};\n${\n ext === \"ts\"\n ? `\ntype AuthActionsArray = typeof authActions;\n\nexport type AuthResource = AuthActionsArray[number][\"resource\"];\n\nexport type AuthAction<R extends AuthResource = AuthResource> = Extract<\n AuthActionsArray[number],\n { resource: R }\n>[\"action\"];\n`\n : \"\"\n}\nexport default authActions;\n`;\n\n await fs.mkdir(path.dirname(targetPath), { recursive: true });\n await fs.writeFile(targetPath, fileContent, \"utf-8\");\n\n console.info(\"\");\n if (isUpdate)\n sheu.done(\n `Auth actions updated and exported successfully at ${fullCleanCwd(targetPath)}`\n );\n else\n sheu.done(\n `Auth actions exported successfully at ${fullCleanCwd(targetPath)}`\n );\n\n this.end();\n }\n}\n\n/**\n * Singleton instance of RuntimeCliCommander\n *\n * @type {RuntimeCliCommander}\n */\nconst runtimeCliCommander: RuntimeCliCommander = new RuntimeCliCommander();\n\nexport default runtimeCliCommander;\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"smart-fs-watcher.js","sourceRoot":"","sources":["../../../../../src/utils/cli/utils/smart-fs-watcher.ts"],"names":[],"mappings":"AAAA,OAAO,QAAuB,MAAM,UAAU,CAAC;AAC/C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,aAAa;
|
|
1
|
+
{"version":3,"file":"smart-fs-watcher.js","sourceRoot":"","sources":["../../../../../src/utils/cli/utils/smart-fs-watcher.ts"],"names":[],"mappings":"AAAA,OAAO,QAAuB,MAAM,UAAU,CAAC;AAC/C,OAAO,IAAI,MAAM,MAAM,CAAC;AAExB,MAAM,aAAa;IACT,YAAY,CAAe;IAC3B,OAAO,CAAoB;IAC3B,SAAS,CAA8B;IAE/C,KAAK,CAAC,SAAqC;QACzC,IAAI,CAAC,YAAY,GAAG,IAAI,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAE3B,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC,KAAK,CAC3B;YACE,KAAK;YACL,cAAc;YACd,eAAe;YACf,eAAe;YACf,iBAAiB;YACjB,iBAAiB;SAClB,EACD;YACE,aAAa,EAAE,IAAI;YACnB,OAAO,EAAE;gBACP,cAAc;gBACd,OAAO;gBACP,QAAQ;gBACR,SAAS;gBACT,MAAM;gBACN,OAAO;gBACP,SAAS;aACV;YACD,gBAAgB,EAAE;gBAChB,kBAAkB,EAAE,IAAI;aACzB;SACF,CACF,CAAC;QAEF,IAAI,CAAC,cAAc,EAAE,CAAC;IACxB,CAAC;IAEO,cAAc;QACpB,IAAI,CAAC,IAAI,CAAC,OAAO;YAAE,OAAO;QAE1B,IAAI,CAAC,OAAO;aACT,EAAE,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,EAAE;YACtB,MAAM,iBAAiB,GAAG,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC1D,IAAI,CAAC,iBAAiB;gBAAE,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC;YAGjD,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAClC,CAAC,CAAC;aACD,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YAEhB,MAAM,gBAAgB,GAAG,IAAI,CAAC,OAAQ,CAAC,UAAU,EAAE,CAAC;YACpD,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;gBACxD,KAAK,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;oBACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;oBACtC,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;gBAClC,CAAC,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;aACD,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE,EAAE;YACzB,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;QACrC,CAAC,CAAC,CAAC;IACP,CAAC;IAED,KAAK;QAEH,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;IAED,KAAK;QACH,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YACjB,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,CAAC;YACrB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACtB,CAAC;QACD,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,cAAc,GAAG,IAAI,aAAa,EAAE,CAAC;AAE3C,eAAe,cAAc,CAAC","sourcesContent":["import chokidar, { FSWatcher } from \"chokidar\";\nimport path from \"path\";\n\nclass SmartFSWather {\n private watchedFiles!: Set<string>;\n private watcher!: FSWatcher | null;\n private onNewFile!: (filePath: string) => void;\n\n start(onNewFile: (filePath: string) => void) {\n this.watchedFiles = new Set();\n this.watcher = null;\n this.onNewFile = onNewFile;\n\n this.watcher = chokidar.watch(\n [\n \"src\",\n \"package.json\",\n \"tsconfig.json\",\n \"jsconfig.json\",\n \"arkos.config.ts\",\n \"arkos.config.js\",\n ],\n {\n ignoreInitial: true,\n ignored: [\n /node_modules/,\n /\\.git/,\n /\\.dist/,\n /\\.build/,\n /dist/,\n /build/,\n /\\.env.*/,\n ],\n awaitWriteFinish: {\n stabilityThreshold: 1000,\n },\n }\n );\n\n this.setupListeners();\n }\n\n private setupListeners() {\n if (!this.watcher) return;\n\n this.watcher\n .on(\"add\", (filePath) => {\n const wasAlreadyWatched = this.watchedFiles.has(filePath);\n if (!wasAlreadyWatched) this.onNewFile(filePath);\n\n // Update tracking\n this.watchedFiles.add(filePath);\n })\n .on(\"ready\", () => {\n // Initialize tracking with currently watched files\n const initiallyWatched = this.watcher!.getWatched();\n Object.entries(initiallyWatched).forEach(([dir, files]) => {\n files.forEach((file) => {\n const fullPath = path.join(dir, file);\n this.watchedFiles.add(fullPath);\n });\n });\n })\n .on(\"unlink\", (filePath) => {\n this.watchedFiles.delete(filePath);\n });\n }\n\n reset() {\n // Clear tracked files so next add events will be treated as new\n this.watchedFiles?.clear();\n }\n\n close() {\n if (this.watcher) {\n this.watcher.close();\n this.watcher = null;\n }\n this.watchedFiles?.clear();\n }\n}\n\nconst smartFsWatcher = new SmartFSWather();\n\nexport default smartFsWatcher;\n"]}
|
package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import prismaSchemaParser from "../../../../prisma/prisma-schema-parser.js";
|
|
2
2
|
import { getUserFileExtension } from "../../../../helpers/fs.helpers.js";
|
|
3
|
+
import { getArkosConfig } from "../../../../helpers/arkos-config.helpers.js";
|
|
3
4
|
export class ClassValidatorDtoGenerator {
|
|
4
5
|
ensureCorrectOptions(options) {
|
|
5
6
|
const { modelName } = options;
|
|
@@ -38,6 +39,33 @@ export class ClassValidatorDtoGenerator {
|
|
|
38
39
|
if (isForeignKey) {
|
|
39
40
|
continue;
|
|
40
41
|
}
|
|
42
|
+
if (field.isCompositeType) {
|
|
43
|
+
const compositeType = prismaSchemaParser.compositeTypes.find((t) => t.name === field.type);
|
|
44
|
+
const compositeDtoName = `${field.type}ForCreate${modelName.pascal}Dto`;
|
|
45
|
+
validatorsUsed.add("ValidateNested");
|
|
46
|
+
transformersUsed.add("Type");
|
|
47
|
+
if (!nestedDtoClasses.find((c) => c.includes(`class ${compositeDtoName}`))) {
|
|
48
|
+
const nestedFields = compositeType.fields.map((f) => {
|
|
49
|
+
const { decorators, type } = this.generateClassValidatorField(f, false, validatorsUsed, transformersUsed);
|
|
50
|
+
const mod = isTypeScript ? (f.isOptional ? "?" : "!") : "";
|
|
51
|
+
return `${decorators} ${f.name}${mod}: ${type};`;
|
|
52
|
+
});
|
|
53
|
+
nestedDtoClasses.push(`class ${compositeDtoName} {\n${nestedFields.join("\n\n")}\n}`);
|
|
54
|
+
}
|
|
55
|
+
const isOptional = field.isOptional || field.defaultValue !== undefined;
|
|
56
|
+
if (isOptional)
|
|
57
|
+
validatorsUsed.add("IsOptional");
|
|
58
|
+
const optDecorator = isOptional ? " @IsOptional()\n" : "";
|
|
59
|
+
const mod = isTypeScript ? (isOptional ? "?" : "!") : "";
|
|
60
|
+
const eachOpt = field.isArray ? "{ each: true }" : "";
|
|
61
|
+
const typeStr = field.isArray
|
|
62
|
+
? `${compositeDtoName}[]`
|
|
63
|
+
: compositeDtoName;
|
|
64
|
+
if (field.isArray)
|
|
65
|
+
validatorsUsed.add("IsArray");
|
|
66
|
+
dtoFields.push(`${optDecorator}${field.isArray ? " @IsArray()\n" : ""} @ValidateNested(${eachOpt})\n @Type(() => ${compositeDtoName})\n ${field.name}${mod}: ${typeStr};`);
|
|
67
|
+
continue;
|
|
68
|
+
}
|
|
41
69
|
if (field.isRelation) {
|
|
42
70
|
if (field.isArray)
|
|
43
71
|
continue;
|
|
@@ -53,7 +81,7 @@ export class ClassValidatorDtoGenerator {
|
|
|
53
81
|
validatorsUsed.add("ValidateNested");
|
|
54
82
|
transformersUsed.add("Type");
|
|
55
83
|
const relationDtoName = `${referencedModel.name}ForCreate${modelName.pascal}Dto`;
|
|
56
|
-
const nestedDtoClass = this.generateNestedDtoClass(field, referencedModel, relationDtoName, validatorsUsed, enumsUsed, isTypeScript);
|
|
84
|
+
const nestedDtoClass = this.generateNestedDtoClass(field, referencedModel, relationDtoName, validatorsUsed, enumsUsed, isTypeScript, transformersUsed);
|
|
57
85
|
if (!dtoFields.find((dtoField) => dtoField.includes(relationDtoName)))
|
|
58
86
|
nestedDtoClasses.push(nestedDtoClass);
|
|
59
87
|
dtoFields.push(`${optionalDecorator} @ValidateNested()\n @Type(() => ${relationDtoName})\n ${field.name}${typeModifier}: ${relationDtoName};`);
|
|
@@ -63,7 +91,7 @@ export class ClassValidatorDtoGenerator {
|
|
|
63
91
|
if (prismaSchemaParser.isEnum(field.type)) {
|
|
64
92
|
enumsUsed.add(field.type);
|
|
65
93
|
}
|
|
66
|
-
const { decorators, type } = this.generateClassValidatorField(field, isUserModule, validatorsUsed);
|
|
94
|
+
const { decorators, type } = this.generateClassValidatorField(field, isUserModule, validatorsUsed, transformersUsed);
|
|
67
95
|
const isOptional = field.isOptional || field.defaultValue !== undefined;
|
|
68
96
|
const typeModifier = isTypeScript ? (isOptional ? "?" : "!") : "";
|
|
69
97
|
dtoFields.push(`${decorators} ${field.name}${typeModifier}: ${type};`);
|
|
@@ -103,6 +131,29 @@ ${dtoFields.join("\n\n")}
|
|
|
103
131
|
if (isForeignKey) {
|
|
104
132
|
continue;
|
|
105
133
|
}
|
|
134
|
+
if (field.isCompositeType) {
|
|
135
|
+
const compositeType = prismaSchemaParser.compositeTypes.find((t) => t.name === field.type);
|
|
136
|
+
const compositeDtoName = `${field.type}ForUpdate${modelName.pascal}Dto`;
|
|
137
|
+
validatorsUsed.add("ValidateNested");
|
|
138
|
+
validatorsUsed.add("IsOptional");
|
|
139
|
+
transformersUsed.add("Type");
|
|
140
|
+
if (!nestedDtoClasses.find((c) => c.includes(`class ${compositeDtoName}`))) {
|
|
141
|
+
const nestedFields = compositeType.fields.map((f) => {
|
|
142
|
+
const { decorators, type } = this.generateClassValidatorFieldForUpdate(f, false, validatorsUsed, transformersUsed);
|
|
143
|
+
const mod = isTypeScript ? "?" : "";
|
|
144
|
+
return `${decorators} ${f.name}${mod}: ${type};`;
|
|
145
|
+
});
|
|
146
|
+
nestedDtoClasses.push(`class ${compositeDtoName} {\n${nestedFields.join("\n\n")}\n}`);
|
|
147
|
+
}
|
|
148
|
+
if (field.isArray)
|
|
149
|
+
validatorsUsed.add("IsArray");
|
|
150
|
+
const eachOpt = field.isArray ? "{ each: true }" : "";
|
|
151
|
+
const typeStr = field.isArray
|
|
152
|
+
? `${compositeDtoName}[]`
|
|
153
|
+
: compositeDtoName;
|
|
154
|
+
dtoFields.push(` @IsOptional()\n${field.isArray ? " @IsArray()\n" : ""} @ValidateNested(${eachOpt})\n @Type(() => ${compositeDtoName})\n ${field.name}?: ${typeStr};`);
|
|
155
|
+
continue;
|
|
156
|
+
}
|
|
106
157
|
if (field.isRelation) {
|
|
107
158
|
if (field.isArray)
|
|
108
159
|
continue;
|
|
@@ -114,7 +165,7 @@ ${dtoFields.join("\n\n")}
|
|
|
114
165
|
validatorsUsed.add("IsNotEmpty");
|
|
115
166
|
transformersUsed.add("Type");
|
|
116
167
|
const relationDtoName = `${referencedModel.name}ForUpdate${modelName.pascal}Dto`;
|
|
117
|
-
const nestedDtoClass = this.generateNestedDtoClass(field, referencedModel, relationDtoName, validatorsUsed, enumsUsed, isTypeScript);
|
|
168
|
+
const nestedDtoClass = this.generateNestedDtoClass(field, referencedModel, relationDtoName, validatorsUsed, enumsUsed, isTypeScript, transformersUsed);
|
|
118
169
|
if (!dtoFields.find((dtoField) => dtoField.includes(relationDtoName)))
|
|
119
170
|
nestedDtoClasses.push(nestedDtoClass);
|
|
120
171
|
const typeModifier = isTypeScript ? "?" : "";
|
|
@@ -125,7 +176,7 @@ ${dtoFields.join("\n\n")}
|
|
|
125
176
|
if (prismaSchemaParser.isEnum(field.type)) {
|
|
126
177
|
enumsUsed.add(field.type);
|
|
127
178
|
}
|
|
128
|
-
const { decorators, type } = this.generateClassValidatorFieldForUpdate(field, isUserModule, validatorsUsed);
|
|
179
|
+
const { decorators, type } = this.generateClassValidatorFieldForUpdate(field, isUserModule, validatorsUsed, transformersUsed);
|
|
129
180
|
const typeModifier = isTypeScript ? "?" : "";
|
|
130
181
|
dtoFields.push(`${decorators} ${field.name}${typeModifier}: ${type};`);
|
|
131
182
|
}
|
|
@@ -164,7 +215,7 @@ ${dtoFields.join("\n\n")}
|
|
|
164
215
|
if (prismaSchemaParser.isEnum(field.type)) {
|
|
165
216
|
enumsUsed.add(field.type);
|
|
166
217
|
}
|
|
167
|
-
const { decorators, type } = this.generateClassValidatorField(field, isUserModule, validatorsUsed);
|
|
218
|
+
const { decorators, type } = this.generateClassValidatorField(field, isUserModule, validatorsUsed, transformersUsed);
|
|
168
219
|
const isOptional = field.isOptional;
|
|
169
220
|
const typeModifier = isTypeScript ? (isOptional ? "?" : "!") : "";
|
|
170
221
|
dtoFields.push(`${decorators} ${field.name}${typeModifier}: ${type};`);
|
|
@@ -234,7 +285,7 @@ ${dtoFields.join("\n\n")}
|
|
|
234
285
|
validatorsUsed.add("ValidateNested");
|
|
235
286
|
transformersUsed.add("Type");
|
|
236
287
|
const relationDtoName = `${referencedModel.name}ForQuery${modelName.pascal}Dto`;
|
|
237
|
-
const nestedDtoClass = this.generateNestedDtoClass(field, referencedModel, relationDtoName, validatorsUsed, enumsUsed, isTypeScript);
|
|
288
|
+
const nestedDtoClass = this.generateNestedDtoClass(field, referencedModel, relationDtoName, validatorsUsed, enumsUsed, isTypeScript, transformersUsed);
|
|
238
289
|
if (!dtoFields.find((dtoField) => dtoField.includes(relationDtoName)) &&
|
|
239
290
|
!timestampDtoFields.find((dtoField) => dtoField.includes(relationDtoName))) {
|
|
240
291
|
nestedDtoClasses.push(nestedDtoClass);
|
|
@@ -264,7 +315,8 @@ ${dtoFields.join("\n\n")}
|
|
|
264
315
|
}
|
|
265
316
|
if (field.type === "Boolean") {
|
|
266
317
|
validatorsUsed.add("IsBoolean");
|
|
267
|
-
|
|
318
|
+
transformersUsed.add("Transform");
|
|
319
|
+
const fieldDef = ` @IsOptional()\n @Transform(({ value }) => value === true || value === "true" || value === 1 || value === "1")\n @IsBoolean()\n ${field.name}${typeModifier}: boolean;`;
|
|
268
320
|
if (timestampFields.includes(field.name)) {
|
|
269
321
|
timestampDtoFields.push(fieldDef);
|
|
270
322
|
}
|
|
@@ -380,14 +432,14 @@ ${allFields.join("\n\n")}
|
|
|
380
432
|
}
|
|
381
433
|
return classes.join("\n\n");
|
|
382
434
|
}
|
|
383
|
-
generateNestedDtoClass(field, referencedModel, dtoName, validatorsUsed, enumsUsed, isTypeScript) {
|
|
435
|
+
generateNestedDtoClass(field, referencedModel, dtoName, validatorsUsed, enumsUsed, isTypeScript, transformersUsed) {
|
|
384
436
|
const fields = [];
|
|
385
437
|
const refFieldName = field.foreignReferenceField || "id";
|
|
386
438
|
const refFieldAsPrismaField = referencedModel.fields.find((f) => f.name === refFieldName);
|
|
387
439
|
if (refFieldAsPrismaField) {
|
|
388
440
|
if (prismaSchemaParser.isEnum(refFieldAsPrismaField.type))
|
|
389
441
|
enumsUsed.add(refFieldAsPrismaField.type);
|
|
390
|
-
const { decorators, type } = this.generateClassValidatorField(refFieldAsPrismaField, false, validatorsUsed);
|
|
442
|
+
const { decorators, type } = this.generateClassValidatorField(refFieldAsPrismaField, false, validatorsUsed, transformersUsed);
|
|
391
443
|
const typeModifier = isTypeScript ? "!" : "";
|
|
392
444
|
fields.push(`${decorators} ${refFieldAsPrismaField.name}${typeModifier}: ${type};`);
|
|
393
445
|
}
|
|
@@ -395,7 +447,32 @@ ${allFields.join("\n\n")}
|
|
|
395
447
|
${fields.join("\n\n")}
|
|
396
448
|
}`;
|
|
397
449
|
}
|
|
398
|
-
|
|
450
|
+
generateTransformDecorator(field) {
|
|
451
|
+
const isArray = field.isArray;
|
|
452
|
+
switch (field.type) {
|
|
453
|
+
case "Int":
|
|
454
|
+
case "Float":
|
|
455
|
+
case "Decimal":
|
|
456
|
+
return isArray
|
|
457
|
+
? `@Transform(({ value }) => (Array.isArray(value) ? value.map((v: any) => (v !== undefined && v !== null && v !== "" ? Number(v) : v)) : value))`
|
|
458
|
+
: `@Transform(({ value }) => (value !== undefined && value !== null && value !== "" ? Number(value) : value))`;
|
|
459
|
+
case "BigInt":
|
|
460
|
+
return isArray
|
|
461
|
+
? `@Transform(({ value }) => (Array.isArray(value) ? value.map((v: any) => (v !== undefined && v !== null && v !== "" ? BigInt(v) : v)) : value))`
|
|
462
|
+
: `@Transform(({ value }) => (value !== undefined && value !== null && value !== "" ? BigInt(value) : value))`;
|
|
463
|
+
case "Boolean":
|
|
464
|
+
return isArray
|
|
465
|
+
? `@Transform(({ value }) => (Array.isArray(value) ? value.map((v: any) => v === true || v === "true" || v === 1 || v === "1") : value))`
|
|
466
|
+
: `@Transform(({ value }) => value === true || value === "true" || value === 1 || value === "1")`;
|
|
467
|
+
case "DateTime":
|
|
468
|
+
return isArray
|
|
469
|
+
? `@Transform(({ value }) => (Array.isArray(value) ? value.map((v: any) => (v ? new Date(v) : v)) : value))`
|
|
470
|
+
: `@Transform(({ value }) => (value ? new Date(value) : value))`;
|
|
471
|
+
default:
|
|
472
|
+
return null;
|
|
473
|
+
}
|
|
474
|
+
}
|
|
475
|
+
generateClassValidatorField(field, isUserModule, validatorsUsed, transformersUsed) {
|
|
399
476
|
let decorators = [];
|
|
400
477
|
let type = this.mapPrismaTypeToTS(field.type);
|
|
401
478
|
const isOptional = field.isOptional || field.defaultValue !== undefined;
|
|
@@ -421,6 +498,11 @@ ${fields.join("\n\n")}
|
|
|
421
498
|
type = field.isArray ? `${field.type}[]` : field.type;
|
|
422
499
|
}
|
|
423
500
|
else {
|
|
501
|
+
const transformDecorator = this.generateTransformDecorator(field);
|
|
502
|
+
if (transformDecorator) {
|
|
503
|
+
decorators.push(transformDecorator);
|
|
504
|
+
transformersUsed.add("Transform");
|
|
505
|
+
}
|
|
424
506
|
const fieldValidators = this.getValidatorsForType(field, isUserModule);
|
|
425
507
|
decorators.push(...fieldValidators);
|
|
426
508
|
fieldValidators.forEach((decorator) => {
|
|
@@ -435,7 +517,7 @@ ${fields.join("\n\n")}
|
|
|
435
517
|
type,
|
|
436
518
|
};
|
|
437
519
|
}
|
|
438
|
-
generateClassValidatorFieldForUpdate(field, isUserModule, validatorsUsed) {
|
|
520
|
+
generateClassValidatorFieldForUpdate(field, isUserModule, validatorsUsed, transformersUsed) {
|
|
439
521
|
let decorators = [];
|
|
440
522
|
let type = this.mapPrismaTypeToTS(field.type);
|
|
441
523
|
decorators.push("@IsOptional()");
|
|
@@ -458,6 +540,11 @@ ${fields.join("\n\n")}
|
|
|
458
540
|
type = field.isArray ? `${field.type}[]` : field.type;
|
|
459
541
|
}
|
|
460
542
|
else {
|
|
543
|
+
const transformDecorator = this.generateTransformDecorator(field);
|
|
544
|
+
if (transformDecorator) {
|
|
545
|
+
decorators.push(transformDecorator);
|
|
546
|
+
transformersUsed.add("Transform");
|
|
547
|
+
}
|
|
461
548
|
const fieldValidators = this.getValidatorsForType(field, isUserModule);
|
|
462
549
|
decorators.push(...fieldValidators);
|
|
463
550
|
fieldValidators.forEach((decorator) => {
|
|
@@ -534,9 +621,218 @@ ${fields.join("\n\n")}
|
|
|
534
621
|
case "BigInt":
|
|
535
622
|
return "bigint";
|
|
536
623
|
default:
|
|
624
|
+
if (prismaSchemaParser.compositeTypes.some((t) => t.name === prismaType))
|
|
625
|
+
return prismaType;
|
|
537
626
|
return prismaSchemaParser.isEnum(prismaType) ? prismaType : "any";
|
|
538
627
|
}
|
|
539
628
|
}
|
|
629
|
+
generateLoginDto(_) {
|
|
630
|
+
const ext = getUserFileExtension();
|
|
631
|
+
const isTypeScript = ext === "ts";
|
|
632
|
+
const allowedUsernames = getArkosConfig()?.authentication?.login
|
|
633
|
+
?.allowedUsernames || ["username"];
|
|
634
|
+
const usernameFields = allowedUsernames.map((field) => {
|
|
635
|
+
const displayName = field.includes(".") ? field.split(".").pop() : field;
|
|
636
|
+
const typeModifier = isTypeScript ? "?" : "";
|
|
637
|
+
const emailDecorator = displayName === "email" ? "\n @IsEmail()" : "\n @IsString()";
|
|
638
|
+
return ` @IsOptional()${emailDecorator}\n ${displayName}${typeModifier}: string;`;
|
|
639
|
+
});
|
|
640
|
+
const validatorsUsed = new Set([
|
|
641
|
+
"IsOptional",
|
|
642
|
+
"IsNotEmpty",
|
|
643
|
+
"IsString",
|
|
644
|
+
"MinLength",
|
|
645
|
+
"Matches",
|
|
646
|
+
]);
|
|
647
|
+
const hasEmail = allowedUsernames.some((f) => (f.includes(".") ? f.split(".").pop() : f) === "email");
|
|
648
|
+
if (hasEmail)
|
|
649
|
+
validatorsUsed.add("IsEmail");
|
|
650
|
+
const typeModifier = isTypeScript ? "!" : "";
|
|
651
|
+
return `import { ${Array.from(validatorsUsed).join(", ")} } from "class-validator";
|
|
652
|
+
|
|
653
|
+
export default class LoginDto {
|
|
654
|
+
${usernameFields.join("\n\n")}
|
|
655
|
+
|
|
656
|
+
@IsNotEmpty()
|
|
657
|
+
@IsString()
|
|
658
|
+
@MinLength(8)
|
|
659
|
+
@Matches(/[a-z]/, { message: "Must contain lowercase" })
|
|
660
|
+
@Matches(/[A-Z]/, { message: "Must contain uppercase" })
|
|
661
|
+
@Matches(/[0-9]/, { message: "Must contain number" })
|
|
662
|
+
password${typeModifier}: string;
|
|
663
|
+
}
|
|
664
|
+
`;
|
|
665
|
+
}
|
|
666
|
+
generateSignupDto(_) {
|
|
667
|
+
const ext = getUserFileExtension();
|
|
668
|
+
const isTypeScript = ext === "ts";
|
|
669
|
+
const userModel = prismaSchemaParser.models.find((m) => m.name.toLowerCase() === "user");
|
|
670
|
+
if (!userModel)
|
|
671
|
+
throw new Error("User model not found in Prisma schema");
|
|
672
|
+
const restrictedFields = [
|
|
673
|
+
"id",
|
|
674
|
+
"createdAt",
|
|
675
|
+
"updatedAt",
|
|
676
|
+
"deletedAt",
|
|
677
|
+
"roles",
|
|
678
|
+
"role",
|
|
679
|
+
"isActive",
|
|
680
|
+
"isStaff",
|
|
681
|
+
"isSuperUser",
|
|
682
|
+
"passwordChangedAt",
|
|
683
|
+
"deletedSelfAccountAt",
|
|
684
|
+
"lastLoginAt",
|
|
685
|
+
];
|
|
686
|
+
const enumsUsed = new Set();
|
|
687
|
+
const validatorsUsed = new Set();
|
|
688
|
+
const transformersUsed = new Set();
|
|
689
|
+
const nestedDtoClasses = [];
|
|
690
|
+
const dtoFields = [];
|
|
691
|
+
for (const field of userModel.fields) {
|
|
692
|
+
const isForeignKey = userModel.fields.some((f) => f.foreignKeyField === field.name);
|
|
693
|
+
if (field.isId || restrictedFields.includes(field.name) || isForeignKey)
|
|
694
|
+
continue;
|
|
695
|
+
if (field.isRelation) {
|
|
696
|
+
if (field.isArray)
|
|
697
|
+
continue;
|
|
698
|
+
const referencedModel = prismaSchemaParser.models.find((m) => m.name === field.type);
|
|
699
|
+
if (referencedModel) {
|
|
700
|
+
const isOptional = field.isOptional || field.defaultValue !== undefined;
|
|
701
|
+
if (isOptional)
|
|
702
|
+
validatorsUsed.add("IsOptional");
|
|
703
|
+
validatorsUsed.add("ValidateNested");
|
|
704
|
+
transformersUsed.add("Type");
|
|
705
|
+
const relationDtoName = `${referencedModel.name}ForSignupDto`;
|
|
706
|
+
const nestedDtoClass = this.generateNestedDtoClass(field, referencedModel, relationDtoName, validatorsUsed, enumsUsed, isTypeScript, transformersUsed);
|
|
707
|
+
if (!dtoFields.find((d) => d.includes(relationDtoName)))
|
|
708
|
+
nestedDtoClasses.push(nestedDtoClass);
|
|
709
|
+
const typeModifier = isTypeScript ? (isOptional ? "?" : "!") : "";
|
|
710
|
+
dtoFields.push(` ${isOptional ? "@IsOptional()\n " : ""}@ValidateNested()\n @Type(() => ${relationDtoName})\n ${field.name}${typeModifier}: ${relationDtoName};`);
|
|
711
|
+
}
|
|
712
|
+
continue;
|
|
713
|
+
}
|
|
714
|
+
if (prismaSchemaParser.isEnum(field.type))
|
|
715
|
+
enumsUsed.add(field.type);
|
|
716
|
+
if (field.name === "password") {
|
|
717
|
+
validatorsUsed.add("IsNotEmpty");
|
|
718
|
+
validatorsUsed.add("IsString");
|
|
719
|
+
validatorsUsed.add("MinLength");
|
|
720
|
+
validatorsUsed.add("Matches");
|
|
721
|
+
const typeModifier = isTypeScript ? "!" : "";
|
|
722
|
+
dtoFields.push(` @IsNotEmpty()\n @IsString()\n @MinLength(8)\n @Matches(/[a-z]/, { message: "Must contain lowercase" })\n @Matches(/[A-Z]/, { message: "Must contain uppercase" })\n @Matches(/[0-9]/, { message: "Must contain number" })\n ${field.name}${typeModifier}: string;`);
|
|
723
|
+
continue;
|
|
724
|
+
}
|
|
725
|
+
const { decorators, type } = this.generateClassValidatorField(field, true, validatorsUsed, transformersUsed);
|
|
726
|
+
const isOptional = field.isOptional || field.defaultValue !== undefined;
|
|
727
|
+
const typeModifier = isTypeScript ? (isOptional ? "?" : "!") : "";
|
|
728
|
+
dtoFields.push(`${decorators} ${field.name}${typeModifier}: ${type};`);
|
|
729
|
+
}
|
|
730
|
+
const enumImports = enumsUsed.size > 0
|
|
731
|
+
? `import { ${Array.from(enumsUsed).join(", ")} } from "@prisma/client";\n`
|
|
732
|
+
: "";
|
|
733
|
+
const validatorImports = validatorsUsed.size > 0
|
|
734
|
+
? `import { ${Array.from(validatorsUsed).join(", ")} } from "class-validator";\n`
|
|
735
|
+
: "";
|
|
736
|
+
const transformerImports = transformersUsed.size > 0
|
|
737
|
+
? `import { ${Array.from(transformersUsed).join(", ")} } from "class-transformer";\n`
|
|
738
|
+
: "";
|
|
739
|
+
const nestedDtoSection = nestedDtoClasses.length > 0 ? `\n${nestedDtoClasses.join("\n\n")}\n` : "";
|
|
740
|
+
return `${validatorImports}${transformerImports}${enumImports}${nestedDtoSection}
|
|
741
|
+
export default class SignupDto {
|
|
742
|
+
${dtoFields.join("\n\n")}
|
|
743
|
+
}
|
|
744
|
+
`;
|
|
745
|
+
}
|
|
746
|
+
generateUpdateMeDto(_) {
|
|
747
|
+
const ext = getUserFileExtension();
|
|
748
|
+
const isTypeScript = ext === "ts";
|
|
749
|
+
const userModel = prismaSchemaParser.models.find((m) => m.name.toLowerCase() === "user");
|
|
750
|
+
if (!userModel)
|
|
751
|
+
throw new Error("User model not found in Prisma schema");
|
|
752
|
+
const restrictedFields = [
|
|
753
|
+
"id",
|
|
754
|
+
"createdAt",
|
|
755
|
+
"updatedAt",
|
|
756
|
+
"deletedAt",
|
|
757
|
+
"roles",
|
|
758
|
+
"role",
|
|
759
|
+
"isActive",
|
|
760
|
+
"isStaff",
|
|
761
|
+
"isSuperUser",
|
|
762
|
+
"passwordChangedAt",
|
|
763
|
+
"deletedSelfAccountAt",
|
|
764
|
+
"lastLoginAt",
|
|
765
|
+
"password",
|
|
766
|
+
];
|
|
767
|
+
const enumsUsed = new Set();
|
|
768
|
+
const validatorsUsed = new Set();
|
|
769
|
+
const transformersUsed = new Set();
|
|
770
|
+
const nestedDtoClasses = [];
|
|
771
|
+
const dtoFields = [];
|
|
772
|
+
for (const field of userModel.fields) {
|
|
773
|
+
const isForeignKey = userModel.fields.some((f) => f.foreignKeyField === field.name);
|
|
774
|
+
if (field.isId || restrictedFields.includes(field.name) || isForeignKey)
|
|
775
|
+
continue;
|
|
776
|
+
if (field.isRelation) {
|
|
777
|
+
if (field.isArray)
|
|
778
|
+
continue;
|
|
779
|
+
const referencedModel = prismaSchemaParser.models.find((m) => m.name === field.type);
|
|
780
|
+
if (referencedModel) {
|
|
781
|
+
validatorsUsed.add("IsOptional");
|
|
782
|
+
validatorsUsed.add("ValidateNested");
|
|
783
|
+
transformersUsed.add("Type");
|
|
784
|
+
const relationDtoName = `${referencedModel.name}ForUpdateMeDto`;
|
|
785
|
+
const nestedDtoClass = this.generateNestedDtoClass(field, referencedModel, relationDtoName, validatorsUsed, enumsUsed, isTypeScript, transformersUsed);
|
|
786
|
+
if (!dtoFields.find((d) => d.includes(relationDtoName)))
|
|
787
|
+
nestedDtoClasses.push(nestedDtoClass);
|
|
788
|
+
const typeModifier = isTypeScript ? "?" : "";
|
|
789
|
+
dtoFields.push(` @IsOptional()\n @ValidateNested()\n @Type(() => ${relationDtoName})\n ${field.name}${typeModifier}: ${relationDtoName};`);
|
|
790
|
+
}
|
|
791
|
+
continue;
|
|
792
|
+
}
|
|
793
|
+
if (prismaSchemaParser.isEnum(field.type))
|
|
794
|
+
enumsUsed.add(field.type);
|
|
795
|
+
const { decorators, type } = this.generateClassValidatorFieldForUpdate(field, true, validatorsUsed, transformersUsed);
|
|
796
|
+
const typeModifier = isTypeScript ? "?" : "";
|
|
797
|
+
dtoFields.push(`${decorators} ${field.name}${typeModifier}: ${type};`);
|
|
798
|
+
}
|
|
799
|
+
const enumImports = enumsUsed.size > 0
|
|
800
|
+
? `import { ${Array.from(enumsUsed).join(", ")} } from "@prisma/client";\n`
|
|
801
|
+
: "";
|
|
802
|
+
const validatorImports = validatorsUsed.size > 0
|
|
803
|
+
? `import { ${Array.from(validatorsUsed).join(", ")} } from "class-validator";\n`
|
|
804
|
+
: "";
|
|
805
|
+
const transformerImports = transformersUsed.size > 0
|
|
806
|
+
? `import { ${Array.from(transformersUsed).join(", ")} } from "class-transformer";\n`
|
|
807
|
+
: "";
|
|
808
|
+
const nestedDtoSection = nestedDtoClasses.length > 0 ? `\n${nestedDtoClasses.join("\n\n")}\n` : "";
|
|
809
|
+
return `${validatorImports}${transformerImports}${enumImports}${nestedDtoSection}
|
|
810
|
+
export default class UpdateMeDto {
|
|
811
|
+
${dtoFields.join("\n\n")}
|
|
812
|
+
}
|
|
813
|
+
`;
|
|
814
|
+
}
|
|
815
|
+
generateUpdatePasswordDto(_) {
|
|
816
|
+
const ext = getUserFileExtension();
|
|
817
|
+
const isTypeScript = ext === "ts";
|
|
818
|
+
const typeModifier = isTypeScript ? "!" : "";
|
|
819
|
+
return `import { IsNotEmpty, IsString, MinLength, Matches } from "class-validator";
|
|
820
|
+
|
|
821
|
+
export default class UpdatePasswordDto {
|
|
822
|
+
@IsNotEmpty()
|
|
823
|
+
@IsString()
|
|
824
|
+
currentPassword${typeModifier}: string;
|
|
825
|
+
|
|
826
|
+
@IsNotEmpty()
|
|
827
|
+
@IsString()
|
|
828
|
+
@MinLength(8)
|
|
829
|
+
@Matches(/[a-z]/, { message: "Must contain lowercase" })
|
|
830
|
+
@Matches(/[A-Z]/, { message: "Must contain uppercase" })
|
|
831
|
+
@Matches(/[0-9]/, { message: "Must contain number" })
|
|
832
|
+
newPassword${typeModifier}: string;
|
|
833
|
+
}
|
|
834
|
+
`;
|
|
835
|
+
}
|
|
540
836
|
}
|
|
541
837
|
const classValidatorDtoGenerator = new ClassValidatorDtoGenerator();
|
|
542
838
|
export default classValidatorDtoGenerator;
|