arkos 1.2.12-test → 1.2.13-beta
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 +22 -14
- package/cli.js +2 -11
- package/dist/cjs/app.js +1 -1
- package/dist/cjs/app.js.map +1 -1
- package/dist/cjs/modules/auth/auth.router.js +9 -83
- package/dist/cjs/modules/auth/auth.router.js.map +1 -1
- package/dist/cjs/modules/auth/auth.service.js +0 -7
- package/dist/cjs/modules/auth/auth.service.js.map +1 -1
- package/dist/cjs/modules/base/base.controller.js +11 -12
- package/dist/cjs/modules/base/base.controller.js.map +1 -1
- package/dist/cjs/modules/base/base.router.js.map +1 -1
- package/dist/cjs/modules/base/base.service.js.map +1 -1
- package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +43 -113
- package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
- package/dist/cjs/modules/error-handler/error-handler.controller.js +2 -0
- package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
- package/dist/cjs/modules/error-handler/utils/catch-async.js +1 -1
- package/dist/cjs/modules/error-handler/utils/catch-async.js.map +1 -1
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +6 -0
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
- package/dist/cjs/modules/file-upload/file-upload.router.js +9 -21
- package/dist/cjs/modules/file-upload/file-upload.router.js.map +1 -1
- package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +7 -0
- package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -1
- package/dist/cjs/modules/swagger/swagger.router.js +14 -55
- package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +250 -0
- package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +66 -0
- package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +41 -0
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +22 -0
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +30 -0
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +442 -0
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +165 -0
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +94 -0
- package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
- package/dist/cjs/server.js +4 -2
- package/dist/cjs/server.js.map +1 -1
- package/dist/cjs/types/arkos-config.js.map +1 -1
- package/dist/cjs/utils/cli/build.js +2 -19
- package/dist/cjs/utils/cli/build.js.map +1 -1
- package/dist/cjs/utils/cli/dev.js +33 -45
- package/dist/cjs/utils/cli/dev.js.map +1 -1
- package/dist/cjs/utils/cli/generate.js +6 -6
- package/dist/cjs/utils/cli/generate.js.map +1 -1
- package/dist/cjs/utils/cli/start.js +1 -1
- package/dist/cjs/utils/cli/start.js.map +1 -1
- package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -3
- package/dist/cjs/utils/cli/utils/cli.helpers.js.map +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +33 -66
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +16 -10
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +5 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
- package/dist/cjs/utils/features/api.features.js +9 -3
- package/dist/cjs/utils/features/api.features.js.map +1 -1
- package/dist/cjs/utils/helpers/fs.helpers.js +12 -5
- package/dist/cjs/utils/helpers/fs.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/global.helpers.js +51 -2
- package/dist/cjs/utils/helpers/global.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/models.helpers.js +44 -52
- package/dist/cjs/utils/helpers/models.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/prisma.helpers.js +7 -4
- package/dist/cjs/utils/helpers/prisma.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/routers.helpers.js +21 -0
- package/dist/cjs/utils/helpers/routers.helpers.js.map +1 -0
- package/dist/cjs/utils/sheu.js +119 -0
- package/dist/cjs/utils/sheu.js.map +1 -0
- package/dist/esm/app.js +1 -0
- package/dist/esm/app.js.map +1 -0
- package/dist/{es2020 → esm}/exports/auth/index.js +1 -1
- package/dist/{es2020 → esm}/exports/controllers/index.js +2 -2
- package/dist/{es2020 → esm}/exports/error-handler/index.js +2 -2
- package/dist/{es2020 → esm}/exports/index.js +2 -2
- package/dist/{es2020 → esm}/exports/middlewares/index.js +1 -1
- package/dist/esm/exports/prisma/index.js +3 -0
- package/dist/{es2020 → esm}/exports/services/index.js +4 -4
- package/dist/esm/exports/utils/index.js +4 -0
- package/dist/esm/exports/validation/index.js +4 -0
- package/dist/{es2020 → esm}/modules/auth/auth.controller.js +7 -7
- package/dist/esm/modules/auth/auth.router.js +44 -0
- package/dist/esm/modules/auth/auth.router.js.map +1 -0
- package/dist/{es2020 → esm}/modules/auth/auth.service.js +6 -13
- package/dist/esm/modules/auth/auth.service.js.map +1 -0
- package/dist/{es2020 → esm}/modules/auth/utils/helpers/auth.controller.helpers.js +2 -2
- package/dist/{es2020 → esm}/modules/base/base.controller.js +18 -19
- package/dist/esm/modules/base/base.controller.js.map +1 -0
- package/dist/{es2020 → esm}/modules/base/base.middlewares.js +6 -6
- package/dist/{es2020 → esm}/modules/base/base.router.js +4 -4
- package/dist/esm/modules/base/base.router.js.map +1 -0
- package/dist/{es2020 → esm}/modules/base/base.service.js +6 -6
- package/dist/{es2020 → esm}/modules/base/base.service.js.map +1 -1
- package/dist/{es2020 → esm}/modules/base/utils/helpers/base.controller.helpers.js +1 -1
- package/dist/{es2020 → esm}/modules/base/utils/helpers/base.middlewares.helpers.js +1 -1
- package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +89 -0
- package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -0
- package/dist/{es2020 → esm}/modules/base/utils/helpers/base.service.helpers.js +1 -1
- package/dist/{es2020 → esm}/modules/email/email.service.js +2 -2
- package/dist/{es2020 → esm}/modules/error-handler/error-handler.controller.js +5 -3
- package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -0
- package/dist/{es2020 → esm}/modules/error-handler/utils/catch-async.js +1 -1
- package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -0
- package/dist/{es2020 → esm}/modules/error-handler/utils/error-handler.helpers.js +6 -1
- package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -0
- package/dist/{es2020 → esm}/modules/file-upload/file-upload.controller.js +7 -7
- package/dist/esm/modules/file-upload/file-upload.router.js +38 -0
- package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -0
- package/dist/{es2020 → esm}/modules/file-upload/file-upload.service.js +5 -5
- package/dist/{es2020 → esm}/modules/file-upload/utils/helpers/file-upload.helpers.js +8 -2
- package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -0
- package/dist/{es2020 → esm}/modules/swagger/swagger.router.js +15 -56
- package/dist/esm/modules/swagger/swagger.router.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +247 -0
- package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +63 -0
- package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +38 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +19 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js +24 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js +436 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js +159 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +84 -0
- package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
- package/dist/esm/server.js +5 -0
- package/dist/esm/server.js.map +1 -0
- package/dist/esm/types/arkos-config.js.map +1 -0
- package/dist/{es2020 → esm}/utils/cli/build.js +4 -21
- package/dist/esm/utils/cli/build.js.map +1 -0
- package/dist/{es2020 → esm}/utils/cli/dev.js +37 -49
- package/dist/esm/utils/cli/dev.js.map +1 -0
- package/dist/{es2020 → esm}/utils/cli/generate.js +10 -10
- package/dist/{es2020 → esm}/utils/cli/generate.js.map +1 -1
- package/dist/{es2020 → esm}/utils/cli/index.js +5 -5
- package/dist/{es2020 → esm}/utils/cli/start.js +5 -5
- package/dist/{es2020 → esm}/utils/cli/start.js.map +1 -1
- package/dist/esm/utils/cli/utils/cli.helpers.js +16 -0
- package/dist/esm/utils/cli/utils/cli.helpers.js.map +1 -0
- package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +1 -1
- package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-middlewares.js +34 -67
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -0
- package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +18 -12
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -0
- package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-router-template.js +6 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -0
- package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-service-template.js +2 -2
- package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
- package/dist/{es2020 → esm}/utils/cli/utils/template-generators.js +6 -6
- package/dist/{es2020 → esm}/utils/features/api.features.js +13 -7
- package/dist/esm/utils/features/api.features.js.map +1 -0
- package/dist/{es2020 → esm}/utils/features/change-case.features.js +1 -1
- package/dist/{es2020 → esm}/utils/helpers/fs.helpers.js +12 -5
- package/dist/esm/utils/helpers/fs.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/global.helpers.js +47 -0
- package/dist/esm/utils/helpers/global.helpers.js.map +1 -0
- package/dist/{es2020 → esm}/utils/helpers/models.helpers.js +45 -21
- package/dist/esm/utils/helpers/models.helpers.js.map +1 -0
- package/dist/{es2020 → esm}/utils/helpers/prisma.helpers.js +11 -8
- package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/routers.helpers.js +16 -0
- package/dist/esm/utils/helpers/routers.helpers.js.map +1 -0
- package/dist/esm/utils/sheu.js +117 -0
- package/dist/esm/utils/sheu.js.map +1 -0
- package/dist/{es2020 → esm}/utils/validate-dto.js +1 -1
- package/dist/{es2020 → esm}/utils/validate-schema.js +1 -1
- package/dist/types/modules/base/base.service.d.ts +1 -1
- package/dist/types/modules/base/utils/helpers/base.router.helpers.d.ts +4 -1
- package/dist/types/modules/error-handler/utils/catch-async.d.ts +1 -0
- package/dist/types/modules/error-handler/utils/error-handler.helpers.d.ts +4 -0
- package/dist/types/modules/file-upload/file-upload.router.d.ts +1 -1
- package/dist/types/modules/file-upload/utils/helpers/file-upload.helpers.d.ts +2 -1
- package/dist/types/modules/swagger/swagger.router.d.ts +1 -1
- package/dist/types/modules/swagger/utils/helpers/get-authentication-json-schema-paths.d.ts +2 -0
- package/dist/types/modules/swagger/utils/helpers/get-system-json-schema-paths.d.ts +2 -0
- package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.d.ts +1 -0
- package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.d.ts +1 -0
- package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schema.d.ts +1 -0
- package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes.d.ts +2 -0
- package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes.d.ts +2 -0
- package/dist/types/modules/swagger/utils/helpers/swagger.router.helpers.d.ts +7 -0
- package/dist/types/server.d.ts +3 -0
- package/dist/types/types/arkos-config.d.ts +7 -4
- package/dist/types/utils/cli/utils/cli.helpers.d.ts +1 -1
- package/dist/types/utils/features/api.features.d.ts +1 -0
- package/dist/types/utils/helpers/global.helpers.d.ts +6 -1
- package/dist/types/utils/helpers/models.helpers.d.ts +17 -5
- package/dist/types/utils/helpers/routers.helpers.d.ts +2 -0
- package/dist/types/utils/sheu.d.ts +70 -0
- package/package.json +24 -31
- package/dist/es2020/app.js +0 -1
- package/dist/es2020/app.js.map +0 -1
- package/dist/es2020/exports/prisma/index.js +0 -3
- package/dist/es2020/exports/utils/index.js +0 -4
- package/dist/es2020/exports/validation/index.js +0 -4
- package/dist/es2020/modules/auth/auth.router.js +0 -118
- package/dist/es2020/modules/auth/auth.router.js.map +0 -1
- package/dist/es2020/modules/auth/auth.service.js.map +0 -1
- package/dist/es2020/modules/base/base.controller.js.map +0 -1
- package/dist/es2020/modules/base/base.router.js.map +0 -1
- package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js +0 -161
- package/dist/es2020/modules/base/utils/helpers/base.router.helpers.js.map +0 -1
- package/dist/es2020/modules/error-handler/error-handler.controller.js.map +0 -1
- package/dist/es2020/modules/error-handler/utils/catch-async.js.map +0 -1
- package/dist/es2020/modules/error-handler/utils/error-handler.helpers.js.map +0 -1
- package/dist/es2020/modules/file-upload/file-upload.router.js +0 -50
- package/dist/es2020/modules/file-upload/file-upload.router.js.map +0 -1
- package/dist/es2020/modules/file-upload/utils/helpers/file-upload.helpers.js.map +0 -1
- package/dist/es2020/modules/swagger/swagger.router.js.map +0 -1
- package/dist/es2020/server.js +0 -3
- package/dist/es2020/server.js.map +0 -1
- package/dist/es2020/types/arkos-config.js.map +0 -1
- package/dist/es2020/utils/cli/build.js.map +0 -1
- package/dist/es2020/utils/cli/dev.js.map +0 -1
- package/dist/es2020/utils/cli/utils/cli.helpers.js +0 -18
- package/dist/es2020/utils/cli/utils/cli.helpers.js.map +0 -1
- package/dist/es2020/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +0 -1
- package/dist/es2020/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +0 -1
- package/dist/es2020/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
- package/dist/es2020/utils/features/api.features.js.map +0 -1
- package/dist/es2020/utils/helpers/fs.helpers.js.map +0 -1
- package/dist/es2020/utils/helpers/global.helpers.js +0 -4
- package/dist/es2020/utils/helpers/global.helpers.js.map +0 -1
- package/dist/es2020/utils/helpers/models.helpers.js.map +0 -1
- package/dist/es2020/utils/helpers/prisma.helpers.js.map +0 -1
- /package/dist/{es2020 → esm}/exports/auth/index.js.map +0 -0
- /package/dist/{es2020 → esm}/exports/controllers/index.js.map +0 -0
- /package/dist/{es2020 → esm}/exports/error-handler/index.js.map +0 -0
- /package/dist/{es2020 → esm}/exports/index.js.map +0 -0
- /package/dist/{es2020 → esm}/exports/middlewares/index.js.map +0 -0
- /package/dist/{es2020 → esm}/exports/prisma/index.js.map +0 -0
- /package/dist/{es2020 → esm}/exports/services/index.js.map +0 -0
- /package/dist/{es2020 → esm}/exports/utils/index.js.map +0 -0
- /package/dist/{es2020 → esm}/exports/validation/index.js.map +0 -0
- /package/dist/{es2020 → esm}/modules/auth/auth.controller.js.map +0 -0
- /package/dist/{es2020 → esm}/modules/auth/utils/helpers/auth.controller.helpers.js.map +0 -0
- /package/dist/{es2020 → esm}/modules/base/base.middlewares.js.map +0 -0
- /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.controller.helpers.js.map +0 -0
- /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.middlewares.helpers.js.map +0 -0
- /package/dist/{es2020 → esm}/modules/base/utils/helpers/base.service.helpers.js.map +0 -0
- /package/dist/{es2020 → esm}/modules/email/email.service.js.map +0 -0
- /package/dist/{es2020 → esm}/modules/error-handler/utils/app-error.js +0 -0
- /package/dist/{es2020 → esm}/modules/error-handler/utils/app-error.js.map +0 -0
- /package/dist/{es2020 → esm}/modules/file-upload/file-upload.controller.js.map +0 -0
- /package/dist/{es2020 → esm}/modules/file-upload/file-upload.service.js.map +0 -0
- /package/dist/{es2020 → esm}/paths.js +0 -0
- /package/dist/{es2020 → esm}/paths.js.map +0 -0
- /package/dist/{es2020 → esm}/types/arkos-config.js +0 -0
- /package/dist/{es2020 → esm}/types/auth.js +0 -0
- /package/dist/{es2020 → esm}/types/auth.js.map +0 -0
- /package/dist/{es2020 → esm}/types/index.js +0 -0
- /package/dist/{es2020 → esm}/types/index.js.map +0 -0
- /package/dist/{es2020 → esm}/types/router-config.js +0 -0
- /package/dist/{es2020 → esm}/types/router-config.js.map +0 -0
- /package/dist/{es2020 → esm}/utils/arkos-env.js +0 -0
- /package/dist/{es2020 → esm}/utils/arkos-env.js.map +0 -0
- /package/dist/{es2020 → esm}/utils/cli/index.js.map +0 -0
- /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js.map +0 -0
- /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -0
- /package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-controller-template.js.map +0 -0
- /package/dist/{es2020 → esm}/utils/cli/utils/template-generators.js.map +0 -0
- /package/dist/{es2020 → esm}/utils/dotenv.helpers.js +0 -0
- /package/dist/{es2020 → esm}/utils/dotenv.helpers.js.map +0 -0
- /package/dist/{es2020 → esm}/utils/features/change-case.features.js.map +0 -0
- /package/dist/{es2020 → esm}/utils/helpers/api.features.helpers.js +0 -0
- /package/dist/{es2020 → esm}/utils/helpers/api.features.helpers.js.map +0 -0
- /package/dist/{es2020 → esm}/utils/helpers/change-case.helpers.js +0 -0
- /package/dist/{es2020 → esm}/utils/helpers/change-case.helpers.js.map +0 -0
- /package/dist/{es2020 → esm}/utils/helpers/deepmerge.helper.js +0 -0
- /package/dist/{es2020 → esm}/utils/helpers/deepmerge.helper.js.map +0 -0
- /package/dist/{es2020 → esm}/utils/helpers/query-parser.helpers.js +0 -0
- /package/dist/{es2020 → esm}/utils/helpers/query-parser.helpers.js.map +0 -0
- /package/dist/{es2020 → esm}/utils/helpers/text.helpers.js +0 -0
- /package/dist/{es2020 → esm}/utils/helpers/text.helpers.js.map +0 -0
- /package/dist/{es2020 → esm}/utils/validate-dto.js.map +0 -0
- /package/dist/{es2020 → esm}/utils/validate-schema.js.map +0 -0
|
@@ -1,10 +1,13 @@
|
|
|
1
1
|
import path from "path";
|
|
2
2
|
import fs from "fs";
|
|
3
|
-
import { camelCase, kebabCase, pascalCase, } from "../../utils/helpers/change-case.helpers";
|
|
4
|
-
import { crd, getUserFileExtension } from "./fs.helpers";
|
|
5
|
-
import { importModule } from "./global.helpers";
|
|
6
|
-
import { killServerChildProcess } from "../cli/utils/cli.helpers";
|
|
7
|
-
|
|
3
|
+
import { camelCase, kebabCase, pascalCase, } from "../../utils/helpers/change-case.helpers.js";
|
|
4
|
+
import { crd, getUserFileExtension } from "./fs.helpers.js";
|
|
5
|
+
import { importModule } from "./global.helpers.js";
|
|
6
|
+
import { killServerChildProcess } from "../cli/utils/cli.helpers.js";
|
|
7
|
+
let prismaModelsModules = {};
|
|
8
|
+
export function setModelModules(modelName, modules) {
|
|
9
|
+
prismaModelsModules[kebabCase(modelName)] = modules;
|
|
10
|
+
}
|
|
8
11
|
export function getModelModules(modelName) {
|
|
9
12
|
return prismaModelsModules[kebabCase(modelName)];
|
|
10
13
|
}
|
|
@@ -36,6 +39,8 @@ export function getFileModelModulesFileStructure(modelName) {
|
|
|
36
39
|
createMany: `create-many-${kebabModelName}.dto.${ext}`,
|
|
37
40
|
update: `update-${kebabModelName}.dto.${ext}`,
|
|
38
41
|
updateMany: `update-many-${kebabModelName}.dto.${ext}`,
|
|
42
|
+
findOne: `find-one-${kebabModelName}.dto.${ext}`,
|
|
43
|
+
findMany: `find-many-${kebabModelName}.dto.${ext}`,
|
|
39
44
|
query: `query-${kebabModelName}.dto.${ext}`,
|
|
40
45
|
},
|
|
41
46
|
schemas: isAuthModule
|
|
@@ -51,14 +56,17 @@ export function getFileModelModulesFileStructure(modelName) {
|
|
|
51
56
|
createMany: `create-many-${kebabModelName}.schema.${ext}`,
|
|
52
57
|
update: `update-${kebabModelName}.schema.${ext}`,
|
|
53
58
|
updateMany: `update-many-${kebabModelName}.schema.${ext}`,
|
|
59
|
+
findOne: `find-one-${kebabModelName}.schema.${ext}`,
|
|
60
|
+
findMany: `find-many-${kebabModelName}.schema.${ext}`,
|
|
54
61
|
query: `query-${kebabModelName}.schema.${ext}`,
|
|
55
62
|
},
|
|
56
63
|
};
|
|
57
64
|
}
|
|
58
|
-
export async function processSubdir(modelName, type
|
|
65
|
+
export async function processSubdir(modelName, type) {
|
|
59
66
|
const moduleDir = path.resolve(crd(), "src", "modules", kebabCase(modelName));
|
|
60
67
|
const subdir = path.join(moduleDir, type);
|
|
61
68
|
const fileStructure = getFileModelModulesFileStructure(modelName);
|
|
69
|
+
const result = {};
|
|
62
70
|
try {
|
|
63
71
|
await fs.promises.access(subdir).catch(() => {
|
|
64
72
|
return;
|
|
@@ -66,9 +74,9 @@ export async function processSubdir(modelName, type, result) {
|
|
|
66
74
|
await Promise.all(Object.entries(fileStructure[type]).map(async ([key, fileName]) => {
|
|
67
75
|
const filePath = path.join(subdir, fileName);
|
|
68
76
|
try {
|
|
69
|
-
const module = await
|
|
77
|
+
const module = await importModule(filePath).catch(() => null);
|
|
70
78
|
if (module)
|
|
71
|
-
result[
|
|
79
|
+
result[key] = module.default;
|
|
72
80
|
}
|
|
73
81
|
catch (error) {
|
|
74
82
|
console.error(error);
|
|
@@ -78,6 +86,7 @@ export async function processSubdir(modelName, type, result) {
|
|
|
78
86
|
catch (error) {
|
|
79
87
|
console.error(error);
|
|
80
88
|
}
|
|
89
|
+
return result;
|
|
81
90
|
}
|
|
82
91
|
export function validateNamingConventions(key, fileName, result) {
|
|
83
92
|
if (key === "prismaQueryOptions") {
|
|
@@ -119,7 +128,7 @@ export function assignModuleToResult(key, module, result) {
|
|
|
119
128
|
result[key] = module.default || module;
|
|
120
129
|
}
|
|
121
130
|
}
|
|
122
|
-
export async function importPrismaModelModules(modelName) {
|
|
131
|
+
export async function importPrismaModelModules(modelName, arkosConfig) {
|
|
123
132
|
const moduleDir = path.resolve(crd(), "src", "modules", kebabCase(modelName));
|
|
124
133
|
const result = {
|
|
125
134
|
dtos: {},
|
|
@@ -151,12 +160,22 @@ export async function importPrismaModelModules(modelName) {
|
|
|
151
160
|
killServerChildProcess();
|
|
152
161
|
}
|
|
153
162
|
}));
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
163
|
+
const validationSubdir = arkosConfig.validation?.resolver
|
|
164
|
+
? arkosConfig.validation.resolver === "zod"
|
|
165
|
+
? "schemas"
|
|
166
|
+
: "dtos"
|
|
167
|
+
: null;
|
|
168
|
+
let validators = {};
|
|
169
|
+
if (validationSubdir)
|
|
170
|
+
validators = await processSubdir(modelName, validationSubdir);
|
|
171
|
+
prismaModelsModules[modelName] = {
|
|
172
|
+
...result,
|
|
173
|
+
...(validationSubdir && { [validationSubdir]: validators }),
|
|
174
|
+
};
|
|
175
|
+
return {
|
|
176
|
+
...result,
|
|
177
|
+
...(validationSubdir && { [validationSubdir]: validators }),
|
|
178
|
+
};
|
|
160
179
|
}
|
|
161
180
|
export const prismaModelRelationFields = {};
|
|
162
181
|
export function getAllPrismaFiles(dirPath, fileList = []) {
|
|
@@ -175,6 +194,7 @@ export function getAllPrismaFiles(dirPath, fileList = []) {
|
|
|
175
194
|
}
|
|
176
195
|
const modelRegex = /model\s+(\w+)\s*{/g;
|
|
177
196
|
export const models = [];
|
|
197
|
+
export let prismaSchemasContent;
|
|
178
198
|
export const prismaModelsUniqueFields = [];
|
|
179
199
|
export function initializePrismaModels() {
|
|
180
200
|
const prismaContent = [];
|
|
@@ -191,11 +211,13 @@ export function initializePrismaModels() {
|
|
|
191
211
|
models.push(camelCase(modelName.trim()));
|
|
192
212
|
return `model ${modelName} {`;
|
|
193
213
|
});
|
|
214
|
+
const copiedContent = content;
|
|
215
|
+
prismaSchemasContent = content;
|
|
194
216
|
for (const model of models) {
|
|
195
217
|
const modelName = pascalCase(model);
|
|
196
|
-
const modelStart =
|
|
197
|
-
const modelEnd =
|
|
198
|
-
const modelDefinition =
|
|
218
|
+
const modelStart = copiedContent.indexOf(`model ${modelName} {`);
|
|
219
|
+
const modelEnd = copiedContent.indexOf("}", modelStart);
|
|
220
|
+
const modelDefinition = copiedContent.slice(modelStart, modelEnd);
|
|
199
221
|
const relations = {
|
|
200
222
|
singular: [],
|
|
201
223
|
list: [],
|
|
@@ -226,8 +248,8 @@ export function initializePrismaModels() {
|
|
|
226
248
|
if (trimmedLine?.includes?.("@relation") ||
|
|
227
249
|
trimmedLine.match(/\s+\w+(\[\])?(\s+@|$)/) ||
|
|
228
250
|
models?.includes?.(camelCase(cleanType || ""))) {
|
|
229
|
-
const enumStart =
|
|
230
|
-
const typeStart =
|
|
251
|
+
const enumStart = copiedContent.indexOf(`enum ${cleanType} {`);
|
|
252
|
+
const typeStart = copiedContent.indexOf(`type ${cleanType} {`);
|
|
231
253
|
if (!cleanType ||
|
|
232
254
|
enumStart >= 0 ||
|
|
233
255
|
typeStart >= 0 ||
|
|
@@ -259,7 +281,6 @@ export function initializePrismaModels() {
|
|
|
259
281
|
}
|
|
260
282
|
}
|
|
261
283
|
}
|
|
262
|
-
initializePrismaModels();
|
|
263
284
|
export function getPrismaModelRelations(modelName) {
|
|
264
285
|
modelName = pascalCase(modelName);
|
|
265
286
|
if (!(modelName in prismaModelRelationFields))
|
|
@@ -269,6 +290,9 @@ export function getPrismaModelRelations(modelName) {
|
|
|
269
290
|
function getModels() {
|
|
270
291
|
return models;
|
|
271
292
|
}
|
|
293
|
+
export function getPrismaSchemasContent() {
|
|
294
|
+
return prismaSchemasContent;
|
|
295
|
+
}
|
|
272
296
|
function getModelUniqueFields(modelName) {
|
|
273
297
|
return prismaModelsUniqueFields[modelName];
|
|
274
298
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"models.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/models.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,MAAM,IAAI,CAAC;AACpB,OAAO,EACL,SAAS,EACT,SAAS,EACT,UAAU,GACX,MAAM,yCAAyC,CAAC;AACjD,OAAO,EAAE,GAAG,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAMlE,IAAI,mBAAmB,GAAgC,EAAE,CAAC;AAE1D,MAAM,UAAU,eAAe,CAAC,SAAiB,EAAE,OAAoB;IACrE,mBAAmB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,GAAG,OAAO,CAAC;AACtD,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,SAAiB;IAC/C,OAAO,mBAAmB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,SAAiB;IAChE,MAAM,cAAc,GAAG,SAAS,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IAC1D,MAAM,YAAY,GAAG,SAAS,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;IACxD,MAAM,GAAG,GAAG,oBAAoB,EAAE,CAAC;IAEnC,OAAO;QACL,IAAI,EAAE;YACJ,OAAO,EAAE,GAAG,cAAc,YAAY,GAAG,EAAE;YAC3C,UAAU,EAAE,GAAG,cAAc,eAAe,GAAG,EAAE;YACjD,WAAW,EAAE,GAAG,cAAc,gBAAgB,GAAG,EAAE;YACnD,WAAW,EAAE,GAAG,cAAc,iBAAiB,GAAG,EAAE;YACpD,cAAc,EAAE,GAAG,cAAc,SAAS,GAAG,EAAE;YAC/C,kBAAkB,EAAE,GAAG,cAAc,yBAAyB,GAAG,EAAE;YACnE,qBAAqB,EAAE,GAAG,cAAc,UAAU,GAAG,EAAE;YACvD,MAAM,EAAE,GAAG,cAAc,WAAW,GAAG,EAAE;SAC1C;QACD,IAAI,EAAE,YAAY;YAChB,CAAC,CAAC;gBACE,KAAK,EAAE,aAAa,GAAG,EAAE;gBACzB,MAAM,EAAE,cAAc,GAAG,EAAE;gBAC3B,QAAQ,EAAE,iBAAiB,GAAG,EAAE;gBAChC,cAAc,EAAE,uBAAuB,GAAG,EAAE;aAC7C;YACH,CAAC,CAAC;gBACE,KAAK,EAAE,GAAG,cAAc,QAAQ,GAAG,EAAE;gBACrC,MAAM,EAAE,UAAU,cAAc,QAAQ,GAAG,EAAE;gBAC7C,UAAU,EAAE,eAAe,cAAc,QAAQ,GAAG,EAAE;gBACtD,MAAM,EAAE,UAAU,cAAc,QAAQ,GAAG,EAAE;gBAC7C,UAAU,EAAE,eAAe,cAAc,QAAQ,GAAG,EAAE;gBACtD,OAAO,EAAE,YAAY,cAAc,QAAQ,GAAG,EAAE;gBAChD,QAAQ,EAAE,aAAa,cAAc,QAAQ,GAAG,EAAE;gBAClD,KAAK,EAAE,SAAS,cAAc,QAAQ,GAAG,EAAE;aAC5C;QACL,OAAO,EAAE,YAAY;YACnB,CAAC,CAAC;gBACE,KAAK,EAAE,gBAAgB,GAAG,EAAE;gBAC5B,MAAM,EAAE,iBAAiB,GAAG,EAAE;gBAC9B,QAAQ,EAAE,oBAAoB,GAAG,EAAE;gBACnC,cAAc,EAAE,0BAA0B,GAAG,EAAE;aAChD;YACH,CAAC,CAAC;gBACE,KAAK,EAAE,GAAG,cAAc,WAAW,GAAG,EAAE;gBACxC,MAAM,EAAE,UAAU,cAAc,WAAW,GAAG,EAAE;gBAChD,UAAU,EAAE,eAAe,cAAc,WAAW,GAAG,EAAE;gBACzD,MAAM,EAAE,UAAU,cAAc,WAAW,GAAG,EAAE;gBAChD,UAAU,EAAE,eAAe,cAAc,WAAW,GAAG,EAAE;gBACzD,OAAO,EAAE,YAAY,cAAc,WAAW,GAAG,EAAE;gBACnD,QAAQ,EAAE,aAAa,cAAc,WAAW,GAAG,EAAE;gBACrD,KAAK,EAAE,SAAS,cAAc,WAAW,GAAG,EAAE;aAC/C;KACN,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,SAAiB,EACjB,IAAwB;IAExB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAE9E,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAC1C,MAAM,aAAa,GAAG,gCAAgC,CAAC,SAAS,CAAC,CAAC;IAClE,MAAM,MAAM,GAAwB,EAAE,CAAC;IAGvC,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE;YAC1C,OAAO;QACT,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE;YAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YAC7C,IAAI,CAAC;gBACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC9D,IAAI,MAAM;oBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC;YAC3C,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBAEf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACvB,CAAC;QACH,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QAEf,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC;AAsBD,MAAM,UAAU,yBAAyB,CACvC,GAAW,EACX,QAAgB,EAChB,MAA0C;IAE1C,IAAI,GAAG,KAAK,oBAAoB,EAAE,CAAC;QACjC,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC9B,sBAAsB,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,sBAAsB,QAAQ,QAAQ,QAAQ,CAAC,OAAO,CACpD,sBAAsB,EACtB,OAAO,CACR,sDAAsD,CACxD,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,GAAG,KAAK,uBAAuB,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,kBAAkB,EAAE,CAAC;YAC9B,sBAAsB,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,sBAAsB,QAAQ,QAAQ,QAAQ,CAAC,OAAO,CACpD,OAAO,EACP,sBAAsB,CACvB,sDAAsD,CACxD,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;QACjC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,sBAAsB,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,sBAAsB,QAAQ,QAAQ,QAAQ,CAAC,OAAO,CACpD,cAAc,EACd,MAAM,CACP,sDAAsD,CACxD,CAAC;QACJ,CAAC;IACH,CAAC;SAAM,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;QACpC,IAAI,MAAM,CAAC,WAAW,EAAE,CAAC;YACvB,sBAAsB,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CACb,sBAAsB,QAAQ,QAAQ,QAAQ,CAAC,OAAO,CACpD,MAAM,EACN,cAAc,CACf,sDAAsD,CACxD,CAAC;QACJ,CAAC;IACH,CAAC;AACH,CAAC;AAQD,MAAM,UAAU,oBAAoB,CAClC,GAAW,EACX,MAAW,EACX,MAA0C;IAE1C,IAAI,GAAG,KAAK,oBAAoB,IAAI,GAAG,KAAK,uBAAuB,EAAE,CAAC;QACpE,MAAM,CAAC,kBAAkB,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;IACvD,CAAC;SAAM,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,gBAAgB,EAAE,CAAC;QAC7D,MAAM,CAAC,WAAW,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;IAChD,CAAC;SAAM,IAAI,GAAG,KAAK,aAAa,IAAI,GAAG,KAAK,QAAQ,EAAE,CAAC;QACrD,MAAM,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC;IACvB,CAAC;SAAM,CAAC;QACN,MAAM,CAAC,GAA0B,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC;IAChE,CAAC;AACH,CAAC;AASD,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,SAAiB,EACjB,WAAwB;IAExB,MAAM,SAAS,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAE9E,MAAM,MAAM,GAAuC;QACjD,IAAI,EAAE,EAAE;QACR,OAAO,EAAE,EAAE;KACZ,CAAC;IAEF,IAAI,eAAe,CAAC,SAAS,CAAC;QAAE,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC;IAElE,MAAM,aAAa,GAAG,gCAAgC,CAAC,SAAS,CAAC,CAAC;IAGlE,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC,GAAG,EAAE,QAAQ,CAAC,EAAE,EAAE;QAC/D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;QAChD,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,QAAQ,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE;gBACxD,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC,EAAE,CAAC;oBAChD,OAAO,CAAC,KAAK,CAAC,oBAAoB,QAAQ,MAAM,CAAC,CAAC;oBAClD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;oBACnB,sBAAsB,EAAE,CAAC;oBACzB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAClB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,MAAM,EAAE,CAAC;gBAEX,yBAAyB,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;gBAGjD,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,GAAG,CAAC,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAC;gBAAE,MAAM,GAAG,CAAC;YACvD,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACnB,sBAAsB,EAAE,CAAC;QAC3B,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IAEF,MAAM,gBAAgB,GAAG,WAAW,CAAC,UAAU,EAAE,QAAQ;QACvD,CAAC,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,KAAK,KAAK;YACzC,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,MAAM;QACV,CAAC,CAAC,IAAI,CAAC;IAET,IAAI,UAAU,GAAG,EAAE,CAAC;IACpB,IAAI,gBAAgB;QAClB,UAAU,GAAG,MAAM,aAAa,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAIhE,mBAAmB,CAAC,SAAS,CAAC,GAAG;QAC/B,GAAG,MAAM;QACT,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC;KAC5D,CAAC;IAEF,OAAO;QACL,GAAG,MAAM;QACT,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,gBAAgB,CAAC,EAAE,UAAU,EAAE,CAAC;KAC5D,CAAC;AACJ,CAAC;AAyBD,MAAM,CAAC,MAAM,yBAAyB,GAAmC,EAAE,CAAC;AAE5E,MAAM,UAAU,iBAAiB,CAAC,OAAe,EAAE,WAAqB,EAAE;IACxE,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;IAEtC,KAAK,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,EAAE;QACtB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;QAC1C,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAGnC,IAAI,IAAI,CAAC,WAAW,EAAE,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;YAChD,QAAQ,GAAG,iBAAiB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;QACnD,CAAC;aAAM,IAAI,IAAI,CAAC,MAAM,EAAE,IAAI,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;YACrD,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,GAAG,oBAAoB,CAAC;AACxC,MAAM,CAAC,MAAM,MAAM,GAAa,EAAE,CAAC;AACnC,MAAM,CAAC,IAAI,oBAA4B,CAAC;AACxC,MAAM,CAAC,MAAM,wBAAwB,GACnC,EAAS,CAAC;AAEZ,MAAM,UAAU,sBAAsB;IACpC,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,MAAM,KAAK,GAAG,iBAAiB,CAAC,UAAU,CAAC,CAAC;IAE5C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;QAE/C,IAAI,CAAC,aAAa,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC;YAAE,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACvE,CAAC;IAGD,MAAM,OAAO,GAAG,aAAa;SAC1B,IAAI,CAAC,IAAI,CAAC;SACV,OAAO,CAAC,UAAU,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE;QACpC,IAAI,CAAC,MAAM,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC;YAChC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QAC3C,OAAO,SAAS,SAAS,IAAI,CAAC;IAChC,CAAC,CAAC,CAAC;IAEL,MAAM,aAAa,GAAG,OAAO,CAAC;IAC9B,oBAAoB,GAAG,OAAO,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,SAAS,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAEpC,MAAM,UAAU,GAAG,aAAa,CAAC,OAAO,CAAC,SAAS,SAAS,IAAI,CAAC,CAAC;QACjE,MAAM,QAAQ,GAAG,aAAa,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,CAAC,CAAC;QACxD,MAAM,eAAe,GAAG,aAAa,CAAC,KAAK,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;QAElE,MAAM,SAAS,GAAmB;YAChC,QAAQ,EAAE,EAAE;YACZ,IAAI,EAAE,EAAE;SACT,CAAC;QACF,MAAM,KAAK,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE1C,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAEhC,IACE,CAAC,WAAW;gBACZ,WAAW,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC/B,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;gBAC5B,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC;gBAE5B,SAAS;YAEX,MAAM,CAAC,SAAS,EAAE,IAAI,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YACnD,MAAM,QAAQ,GAAG,WAAW,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,CAAC;YAEpD,IAAI,QAAQ,EAAE,CAAC;gBACb,MAAM,cAAc,GAAG,wBAAwB,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBAE7D,MAAM,aAAa,GAAG,cAAc,CAAC,IAAI,CACvC,CAAC,KAAK,EAAE,EAAE,CACR,KAAK,CAAC,IAAI,KAAK,SAAS;oBACxB,KAAK,CAAC,IAAI,KAAK,IAAI;oBACnB,KAAK,CAAC,QAAQ,KAAK,QAAQ,CAC9B,CAAC;gBAEF,IAAI,CAAC,aAAa,EAAE,CAAC;oBACnB,wBAAwB,CAAC,KAAK,CAAC,GAAG;wBAChC,GAAG,cAAc;wBACjB,EAAE,IAAI,EAAE,SAAS,EAAE,IAAI,EAAE,QAAQ,EAAE;qBACpC,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;YAE3D,IACE,WAAW,EAAE,QAAQ,EAAE,CAAC,WAAW,CAAC;gBACpC,WAAW,CAAC,KAAK,CAAC,uBAAuB,CAAC;gBAC1C,MAAM,EAAE,QAAQ,EAAE,CAAC,SAAS,CAAC,SAAS,IAAI,EAAE,CAAC,CAAC,EAC9C,CAAC;gBACD,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,SAAS,IAAI,CAAC,CAAC;gBAC/D,MAAM,SAAS,GAAG,aAAa,CAAC,OAAO,CAAC,QAAQ,SAAS,IAAI,CAAC,CAAC;gBAE/D,IACE,CAAC,SAAS;oBACV,SAAS,IAAI,CAAC;oBACd,SAAS,IAAI,CAAC;oBACd,SAAS,KAAK,QAAQ;oBACtB,SAAS,KAAK,KAAK;oBACnB,SAAS,KAAK,OAAO;oBACrB,SAAS,KAAK,SAAS;oBACvB,SAAS,KAAK,UAAU;oBACxB,SAAS,KAAK,OAAO;oBACrB,SAAS,KAAK,SAAS;oBACvB,SAAS,KAAK,QAAQ;oBACtB,SAAS,KAAK,MAAM,EACpB,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;oBAC5B,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC;wBACtB,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,SAAS;qBAChB,CAAC,CAAC;gBACL,CAAC;qBAAM,CAAC;oBACN,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC;wBAClB,IAAI,EAAE,SAAS;wBACf,IAAI,EAAE,SAAS;qBAChB,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;YAED,yBAAyB,CAAC,SAAS,CAAC,GAAG,SAAS,CAAC;QACnD,CAAC;IACH,CAAC;AACH,CAAC;AAQD,MAAM,UAAU,uBAAuB,CACrC,SAAiB;IAEjB,SAAS,GAAG,UAAU,CAAC,SAAS,CAAC,CAAC;IAElC,IAAI,CAAC,CAAC,SAAS,IAAI,yBAAyB,CAAC;QAAE,OAAO;IACtD,OAAO,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC;AAOD,SAAS,SAAS;IAChB,OAAO,MAAM,CAAC;AAChB,CAAC;AAOD,MAAM,UAAU,uBAAuB;IACrC,OAAO,oBAAoB,CAAC;AAC9B,CAAC;AAMD,SAAS,oBAAoB,CAAC,SAAiB;IAC7C,OAAO,wBAAwB,CAAC,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,CAAC","sourcesContent":["import path from \"path\";\nimport fs from \"fs\";\nimport {\n camelCase,\n kebabCase,\n pascalCase,\n} from \"../../utils/helpers/change-case.helpers\";\nimport { crd, getUserFileExtension } from \"./fs.helpers\";\nimport { importModule } from \"./global.helpers\";\nimport { AuthConfigs } from \"../../types/auth\";\nimport { killServerChildProcess } from \"../cli/utils/cli.helpers\";\nimport { ArkosConfig } from \"../../exports\";\n\ntype ModeModules = Awaited<ReturnType<typeof importPrismaModelModules>>;\n\n// Must be exported to not cause problems on cjs\nlet prismaModelsModules: Record<string, ModeModules> = {};\n\nexport function setModelModules(modelName: string, modules: ModeModules) {\n prismaModelsModules[kebabCase(modelName)] = modules;\n}\n\nexport function getModelModules(modelName: string) {\n return prismaModelsModules[kebabCase(modelName)];\n}\n\nexport function getFileModelModulesFileStructure(modelName: string) {\n const kebabModelName = kebabCase(modelName).toLowerCase();\n const isAuthModule = modelName.toLowerCase() === \"auth\";\n const ext = getUserFileExtension();\n\n return {\n core: {\n service: `${kebabModelName}.service.${ext}`,\n controller: `${kebabModelName}.controller.${ext}`,\n middlewares: `${kebabModelName}.middlewares.${ext}`,\n authConfigs: `${kebabModelName}.auth-configs.${ext}`,\n authConfigsNew: `${kebabModelName}.auth.${ext}`,\n prismaQueryOptions: `${kebabModelName}.prisma-query-options.${ext}`,\n prismaQueryOptionsNew: `${kebabModelName}.query.${ext}`,\n router: `${kebabModelName}.router.${ext}`,\n },\n dtos: isAuthModule\n ? {\n login: `login.dto.${ext}`,\n signup: `signup.dto.${ext}`,\n updateMe: `update-me.dto.${ext}`,\n updatePassword: `update-password.dto.${ext}`,\n }\n : {\n model: `${kebabModelName}.dto.${ext}`,\n create: `create-${kebabModelName}.dto.${ext}`,\n createMany: `create-many-${kebabModelName}.dto.${ext}`,\n update: `update-${kebabModelName}.dto.${ext}`,\n updateMany: `update-many-${kebabModelName}.dto.${ext}`,\n findOne: `find-one-${kebabModelName}.dto.${ext}`,\n findMany: `find-many-${kebabModelName}.dto.${ext}`,\n query: `query-${kebabModelName}.dto.${ext}`,\n },\n schemas: isAuthModule\n ? {\n login: `login.schema.${ext}`,\n signup: `signup.schema.${ext}`,\n updateMe: `update-me.schema.${ext}`,\n updatePassword: `update-password.schema.${ext}`,\n }\n : {\n model: `${kebabModelName}.schema.${ext}`,\n create: `create-${kebabModelName}.schema.${ext}`,\n createMany: `create-many-${kebabModelName}.schema.${ext}`,\n update: `update-${kebabModelName}.schema.${ext}`,\n updateMany: `update-many-${kebabModelName}.schema.${ext}`,\n findOne: `find-one-${kebabModelName}.schema.${ext}`,\n findMany: `find-many-${kebabModelName}.schema.${ext}`,\n query: `query-${kebabModelName}.schema.${ext}`,\n },\n };\n}\n\nexport async function processSubdir(\n modelName: string,\n type: \"dtos\" | \"schemas\"\n) {\n const moduleDir = path.resolve(crd(), \"src\", \"modules\", kebabCase(modelName));\n\n const subdir = path.join(moduleDir, type);\n const fileStructure = getFileModelModulesFileStructure(modelName);\n const result: Record<string, any> = {};\n\n // Skip if directory doesn't exist\n try {\n await fs.promises.access(subdir).catch(() => {\n return; // Directory doesn't exist\n });\n\n await Promise.all(\n Object.entries(fileStructure[type]).map(async ([key, fileName]) => {\n const filePath = path.join(subdir, fileName);\n try {\n const module = await importModule(filePath).catch(() => null);\n if (module) result[key] = module.default;\n } catch (error) {\n // Silent fail - file might not exist\n console.error(error);\n }\n })\n );\n } catch (error) {\n // Directory doesn't exist, continue silently\n console.error(error);\n }\n\n return result;\n}\n\ntype importPrismaModelModulesReturnType = {\n service?: any;\n controller?: any;\n middlewares?: any;\n authConfigs?: AuthConfigs;\n authConfigsNew?: AuthConfigs;\n prismaQueryOptions?: any;\n prismaQueryOptionsNew?: any;\n router?: any;\n dtos?: Record<string, any>;\n schemas?: Record<string, any>;\n};\n\n/**\n * Validates naming convention conflicts for prismaQueryOptions and authConfigs\n * @param {string} key - The current file key being processed\n * @param {string} fileName - The filename being imported\n * @param {importPrismaModelModulesReturnType} result - The current result object\n * @throws {Error} When conflicting naming conventions are detected\n */\nexport function validateNamingConventions(\n key: string,\n fileName: string,\n result: importPrismaModelModulesReturnType\n): void {\n if (key === \"prismaQueryOptions\") {\n if (result.prismaQueryOptions) {\n killServerChildProcess();\n throw new Error(\n `\\n Cannot use both ${fileName} and ${fileName.replace(\n \"prisma-query-options\",\n \"query\"\n )} at once, please choose only one name convention. \\n`\n );\n }\n } else if (key === \"prismaQueryOptionsNew\") {\n if (result.prismaQueryOptions) {\n killServerChildProcess();\n throw new Error(\n `\\n Cannot use both ${fileName} and ${fileName.replace(\n \"query\",\n \"prisma-query-options\"\n )} at once, please choose only one name convention. \\n`\n );\n }\n } else if (key === \"authConfigs\") {\n if (result.authConfigs) {\n killServerChildProcess();\n throw new Error(\n `\\n Cannot use both ${fileName} and ${fileName.replace(\n \"auth-configs\",\n \"auth\"\n )} at once, please choose only one name convention. \\n`\n );\n }\n } else if (key === \"authConfigsNew\") {\n if (result.authConfigs) {\n killServerChildProcess();\n throw new Error(\n `\\n Cannot use both ${fileName} and ${fileName.replace(\n \"auth\",\n \"auth-configs\"\n )} at once, please choose only one name convention. \\n`\n );\n }\n }\n}\n\n/**\n * Processes and assigns module to the result object based on the key\n * @param {string} key - The file key being processed\n * @param {any} module - The imported module\n * @param {importPrismaModelModulesReturnType} result - The result object to modify\n */\nexport function assignModuleToResult(\n key: string,\n module: any,\n result: importPrismaModelModulesReturnType\n): void {\n if (key === \"prismaQueryOptions\" || key === \"prismaQueryOptionsNew\") {\n result.prismaQueryOptions = module.default || module;\n } else if (key === \"authConfigs\" || key === \"authConfigsNew\") {\n result.authConfigs = module.default || module;\n } else if (key === \"middlewares\" || key === \"router\") {\n result[key] = module;\n } else {\n result[key as keyof typeof result] = module.default || module;\n }\n}\n\n/**\n * Dynamically imports model-specific modules for a given model with optimized file handling.\n * Includes special handling for the Auth module.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\", \"Post\", \"Auth\").\n * @returns {Promise<Object>} An object containing the imported modules\n */\nexport async function importPrismaModelModules(\n modelName: string,\n arkosConfig: ArkosConfig\n): Promise<importPrismaModelModulesReturnType> {\n const moduleDir = path.resolve(crd(), \"src\", \"modules\", kebabCase(modelName));\n\n const result: importPrismaModelModulesReturnType = {\n dtos: {},\n schemas: {},\n };\n\n if (getModelModules(modelName)) return getModelModules(modelName);\n\n const fileStructure = getFileModelModulesFileStructure(modelName);\n\n // Batch process core files\n await Promise.all(\n Object.entries(fileStructure.core).map(async ([key, fileName]) => {\n const filePath = path.join(moduleDir, fileName);\n try {\n const module = await importModule(filePath).catch((err) => {\n if (!err.message.includes(\"Cannot find module\")) {\n console.error(`Failed to import ${fileName}: \\n`);\n console.error(err);\n killServerChildProcess();\n process.exit(1);\n }\n });\n\n if (module) {\n // Validate naming conventions before assignment\n validateNamingConventions(key, fileName, result);\n\n // Assign module to result\n assignModuleToResult(key, module, result);\n }\n } catch (err: any) {\n if (err.message.includes(\"Cannot use both\")) throw err;\n console.error(err);\n killServerChildProcess();\n }\n })\n );\n\n const validationSubdir = arkosConfig.validation?.resolver\n ? arkosConfig.validation.resolver === \"zod\"\n ? \"schemas\"\n : \"dtos\"\n : null;\n\n let validators = {};\n if (validationSubdir)\n validators = await processSubdir(modelName, validationSubdir);\n\n // Removed because caused problems with cached ZObjects\n // Cache the result making shallow copy to not cause problems after build\n prismaModelsModules[modelName] = {\n ...result,\n ...(validationSubdir && { [validationSubdir]: validators }),\n };\n\n return {\n ...result,\n ...(validationSubdir && { [validationSubdir]: validators }),\n };\n}\n\nexport type ModelFieldDefition = {\n name: string;\n type: string;\n isUnique: boolean;\n};\n\n/**\n * Represents the structure of relation fields for Prisma models.\n * It includes both singular (one-to-one) and list (one-to-many) relationships.\n *\n * @typedef {Object} RelationFields\n * @property {Array<{name: string, type: string}>} singular - List of singular relationships.\n * @property {Array<{name: string, type: string}>} list - List of list relationships.\n */\nexport type RelationFields = {\n singular: Omit<ModelFieldDefition, \"isUnique\">[];\n list: Omit<ModelFieldDefition, \"isUnique\">[];\n};\n\n/**\n * Reads the Prisma schema files and extracts all model definitions,\n * identifying their relations (one-to-one and one-to-many).\n */\nexport const prismaModelRelationFields: Record<string, RelationFields> = {};\n\nexport function getAllPrismaFiles(dirPath: string, fileList: string[] = []) {\n const files = fs.readdirSync(dirPath);\n\n files?.forEach((file) => {\n const filePath = path.join(dirPath, file);\n const stat = fs.statSync(filePath);\n\n // Skip migrations folder\n if (stat.isDirectory() && file !== \"migrations\") {\n fileList = getAllPrismaFiles(filePath, fileList);\n } else if (stat.isFile() && file.endsWith(\".prisma\")) {\n fileList.push(filePath);\n }\n });\n\n return fileList;\n}\n\nconst modelRegex = /model\\s+(\\w+)\\s*{/g;\nexport const models: string[] = [];\nexport let prismaSchemasContent: string;\nexport const prismaModelsUniqueFields: Record<string, ModelFieldDefition[]> =\n [] as any;\n\nexport function initializePrismaModels() {\n const prismaContent: string[] = [];\n\n const files = getAllPrismaFiles(\"./prisma\");\n\n for (const file of files) {\n const content = fs.readFileSync(file, \"utf-8\");\n\n if (!prismaContent?.includes?.(content)) prismaContent.push(content);\n }\n\n // Gather the content of all *.prisma files into single one\n const content = prismaContent\n .join(\"\\n\")\n .replace(modelRegex, (_, modelName) => {\n if (!models?.includes?.(modelName))\n models.push(camelCase(modelName.trim()));\n return `model ${modelName} {`;\n });\n\n const copiedContent = content;\n prismaSchemasContent = content;\n\n for (const model of models) {\n const modelName = pascalCase(model);\n\n const modelStart = copiedContent.indexOf(`model ${modelName} {`);\n const modelEnd = copiedContent.indexOf(\"}\", modelStart);\n const modelDefinition = copiedContent.slice(modelStart, modelEnd);\n\n const relations: RelationFields = {\n singular: [],\n list: [],\n };\n const lines = modelDefinition.split(\"\\n\");\n\n for (const line of lines) {\n const trimmedLine = line.trim();\n\n if (\n !trimmedLine ||\n trimmedLine.startsWith(\"model\") ||\n trimmedLine.startsWith(\"//\") ||\n trimmedLine.startsWith(\"/*\")\n )\n continue;\n\n const [fieldName, type] = trimmedLine.split(/\\s+/);\n const isUnique = trimmedLine?.includes?.(\"@unique\");\n\n if (isUnique) {\n const existingFields = prismaModelsUniqueFields[model] || [];\n\n const alreadyExists = existingFields.some(\n (field) =>\n field.name === fieldName &&\n field.type === type &&\n field.isUnique === isUnique\n );\n\n if (!alreadyExists) {\n prismaModelsUniqueFields[model] = [\n ...existingFields,\n { name: fieldName, type, isUnique },\n ];\n }\n }\n\n const cleanType = type?.replace(\"[]\", \"\").replace(\"?\", \"\");\n\n if (\n trimmedLine?.includes?.(\"@relation\") ||\n trimmedLine.match(/\\s+\\w+(\\[\\])?(\\s+@|$)/) ||\n models?.includes?.(camelCase(cleanType || \"\"))\n ) {\n const enumStart = copiedContent.indexOf(`enum ${cleanType} {`);\n const typeStart = copiedContent.indexOf(`type ${cleanType} {`);\n\n if (\n !cleanType ||\n enumStart >= 0 ||\n typeStart >= 0 ||\n cleanType === \"String\" ||\n cleanType === \"Int\" ||\n cleanType === \"Float\" ||\n cleanType === \"Boolean\" ||\n cleanType === \"DateTime\" ||\n cleanType === \"Bytes\" ||\n cleanType === \"Decimal\" ||\n cleanType === \"BigInt\" ||\n cleanType === \"Json\"\n ) {\n continue;\n }\n\n if (!type?.includes?.(\"[]\")) {\n relations.singular.push({\n name: fieldName,\n type: cleanType,\n });\n } else {\n relations.list.push({\n name: fieldName,\n type: cleanType,\n });\n }\n }\n\n prismaModelRelationFields[modelName] = relations;\n }\n }\n}\n\n/**\n * Retrieves the relations for a given Prisma model.\n *\n * @param {string} modelName - The name of the model (e.g., \"User\").\n * @returns {RelationFields|undefined} The relation fields for the model, or `undefined` if no relations are found.\n */\nexport function getPrismaModelRelations(\n modelName: string\n): RelationFields | undefined {\n modelName = pascalCase(modelName);\n\n if (!(modelName in prismaModelRelationFields)) return;\n return prismaModelRelationFields[modelName];\n}\n\n/**\n * Retrieves all the model names from the Prisma schema.\n *\n * @returns {string[]} An array of model names (e.g., [\"User\", \"Post\"]).\n */\nfunction getModels(): string[] {\n return models;\n}\n\n/**\n * Returns all content of all .prisma files gathered together\n *\n * @returns {string}\n */\nexport function getPrismaSchemasContent(): string {\n return prismaSchemasContent;\n}\n\n/** Retuns a given model unique fields\n * @param {string} modelName - The name of model in PascalCase\n * @returns {string[]} An array of all unique fields,\n */\nfunction getModelUniqueFields(modelName: string): ModelFieldDefition[] {\n return prismaModelsUniqueFields[modelName];\n}\n\nexport { getModels, getModelUniqueFields };\n"]}
|
|
@@ -1,24 +1,27 @@
|
|
|
1
1
|
import fs from "fs";
|
|
2
|
-
import catchAsync from "../../modules/error-handler/utils/catch-async";
|
|
3
|
-
import AppError from "../../modules/error-handler/utils/app-error";
|
|
4
|
-
import { crd, getUserFileExtension as ext } from "./fs.helpers";
|
|
5
|
-
import { importModule } from "./global.helpers";
|
|
2
|
+
import catchAsync from "../../modules/error-handler/utils/catch-async.js";
|
|
3
|
+
import AppError from "../../modules/error-handler/utils/app-error.js";
|
|
4
|
+
import { crd, getUserFileExtension as ext } from "./fs.helpers.js";
|
|
5
|
+
import { importModule } from "./global.helpers.js";
|
|
6
6
|
export let prismaInstance = null;
|
|
7
7
|
export async function loadPrismaModule() {
|
|
8
8
|
if (!prismaInstance) {
|
|
9
9
|
try {
|
|
10
10
|
let prismaPath = `${crd()}/src/utils/prisma.${ext()}`;
|
|
11
|
-
if (!fs.existsSync(prismaPath))
|
|
11
|
+
if (!fs.existsSync(prismaPath))
|
|
12
12
|
prismaPath = `${crd()}/src/utils/prisma/index.${ext()}`;
|
|
13
|
-
|
|
14
|
-
|
|
13
|
+
if (!fs.existsSync(prismaPath))
|
|
14
|
+
throw new Error("Could not found exported prisma insteance");
|
|
15
|
+
const prismaModule = await importModule(prismaPath, {
|
|
16
|
+
fixExtension: false,
|
|
17
|
+
});
|
|
15
18
|
prismaInstance = prismaModule.default || prismaModule.prisma;
|
|
16
19
|
if (!prismaInstance)
|
|
17
20
|
throw new Error("Prisma not found");
|
|
18
21
|
}
|
|
19
22
|
catch (error) {
|
|
20
23
|
if (error.message === "Prisma not found")
|
|
21
|
-
throw new AppError(`Could not initialize Prisma module. Make sure your prisma instance is exported under src/utils/prisma.${ext()} or src/utils/prisma/index.${ext()}, read more about Arkos' Project Structure under https://www.arkosjs.com/docs/project-structure#root-structure`, 500, {}, "
|
|
24
|
+
throw new AppError(`Could not initialize Prisma module. Make sure your prisma instance is exported under src/utils/prisma.${ext()} or src/utils/prisma/index.${ext()}, read more about Arkos' Project Structure under https://www.arkosjs.com/docs/project-structure#root-structure`, 500, {}, "PrismaInstanceNotFound");
|
|
22
25
|
throw error;
|
|
23
26
|
}
|
|
24
27
|
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prisma.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/prisma.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,UAAU,MAAM,+CAA+C,CAAC;AACvE,OAAO,QAAQ,MAAM,6CAA6C,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,oBAAoB,IAAI,GAAG,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,IAAI,cAAc,GAAQ,IAAI,CAAC;AAEtC,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,IAAI,CAAC;YACH,IAAI,UAAU,GAAG,GAAG,GAAG,EAAE,qBAAqB,GAAG,EAAE,EAAE,CAAC;YAEtD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;gBAC5B,UAAU,GAAG,GAAG,GAAG,EAAE,2BAA2B,GAAG,EAAE,EAAE,CAAC;YAE1D,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC;gBAC5B,MAAM,IAAI,KAAK,CAAC,2CAA2C,CAAC,CAAC;YAE/D,MAAM,YAAY,GAAG,MAAM,YAAY,CAAC,UAAU,EAAE;gBAClD,YAAY,EAAE,KAAK;aACpB,CAAC,CAAC;YACH,cAAc,GAAG,YAAY,CAAC,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC;YAE7D,IAAI,CAAC,cAAc;gBAAE,MAAM,IAAI,KAAK,CAAC,kBAAkB,CAAC,CAAC;QAC3D,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,KAAK,CAAC,OAAO,KAAK,kBAAkB;gBACtC,MAAM,IAAI,QAAQ,CAChB,yGAAyG,GAAG,EAAE,8BAA8B,GAAG,EAAE,gHAAgH,EACjQ,GAAG,EACH,EAAE,EACF,wBAAwB,CACzB,CAAC;YACJ,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IACD,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,iBAAiB;IAC/B,OAAO,cAAc,CAAC;AACxB,CAAC;AAED,MAAM,CAAC,MAAM,uBAAuB,GAAG,UAAU,CAC/C,KAAK,EAAE,GAAY,EAAE,GAAa,EAAE,IAAkB,EAAE,EAAE;IACxD,MAAM,MAAM,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,QAAQ,EAAE,CAAC;QACxB,IAAI,EAAE,CAAC;IACT,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,CAAC,KAAK,CAAC,2BAA2B,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC1D,IAAI,CAAC,IAAI,QAAQ,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;AACH,CAAC,CACF,CAAC","sourcesContent":["import fs from \"fs\";\nimport { Request, Response, NextFunction } from \"express\";\nimport catchAsync from \"../../modules/error-handler/utils/catch-async\";\nimport AppError from \"../../modules/error-handler/utils/app-error\";\nimport { crd, getUserFileExtension as ext } from \"./fs.helpers\";\nimport { importModule } from \"./global.helpers\";\n\nexport let prismaInstance: any = null;\n\nexport async function loadPrismaModule() {\n if (!prismaInstance) {\n try {\n let prismaPath = `${crd()}/src/utils/prisma.${ext()}`;\n\n if (!fs.existsSync(prismaPath))\n prismaPath = `${crd()}/src/utils/prisma/index.${ext()}`;\n\n if (!fs.existsSync(prismaPath))\n throw new Error(\"Could not found exported prisma insteance\");\n\n const prismaModule = await importModule(prismaPath, {\n fixExtension: false,\n });\n prismaInstance = prismaModule.default || prismaModule.prisma;\n\n if (!prismaInstance) throw new Error(\"Prisma not found\");\n } catch (error: any) {\n if (error.message === \"Prisma not found\")\n throw new AppError(\n `Could not initialize Prisma module. Make sure your prisma instance is exported under src/utils/prisma.${ext()} or src/utils/prisma/index.${ext()}, read more about Arkos' Project Structure under https://www.arkosjs.com/docs/project-structure#root-structure`,\n 500,\n {},\n \"PrismaInstanceNotFound\"\n );\n throw error;\n }\n }\n return prismaInstance;\n}\n\nexport function getPrismaInstance() {\n return prismaInstance;\n}\n\nexport const checkDatabaseConnection = catchAsync(\n async (req: Request, res: Response, next: NextFunction) => {\n const prisma = await loadPrismaModule();\n try {\n await prisma.$connect();\n next();\n } catch (error: any) {\n console.error(\"Database connection error\", error.message);\n next(new AppError(error.message, 503));\n }\n }\n);\n"]}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { catchAsync } from "../../exports/error-handler/index.js";
|
|
2
|
+
export const safeCatchAsync = (middleware) => {
|
|
3
|
+
return middleware ? catchAsync(middleware) : undefined;
|
|
4
|
+
};
|
|
5
|
+
export const processMiddleware = (middleware) => {
|
|
6
|
+
if (!middleware)
|
|
7
|
+
return [];
|
|
8
|
+
if (Array.isArray(middleware)) {
|
|
9
|
+
return middleware
|
|
10
|
+
.filter((mw) => !!mw)
|
|
11
|
+
.map((mw) => safeCatchAsync(mw));
|
|
12
|
+
}
|
|
13
|
+
else
|
|
14
|
+
return [safeCatchAsync(middleware)];
|
|
15
|
+
};
|
|
16
|
+
//# sourceMappingURL=routers.helpers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routers.helpers.js","sourceRoot":"","sources":["../../../../src/utils/helpers/routers.helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAGzD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,UAAe,EAAE,EAAE;IAChD,OAAO,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACzD,CAAC,CAAC;AAGF,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,UAAe,EAAE,EAAE;IACnD,IAAI,CAAC,UAAU;QAAE,OAAO,EAAE,CAAC;IAE3B,IAAI,KAAK,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,OAAO,UAAU;aACd,MAAM,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACpB,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,cAAc,CAAC,EAAE,CAAC,CAA2B,CAAC;IAC/D,CAAC;;QAAM,OAAO,CAAC,cAAc,CAAC,UAAU,CAAC,CAA2B,CAAC;AACvE,CAAC,CAAC","sourcesContent":["import { catchAsync } from \"../../exports/error-handler\";\nimport { CatchAsyncReturnType } from \"../../modules/error-handler/utils/catch-async\";\n\nexport const safeCatchAsync = (middleware: any) => {\n return middleware ? catchAsync(middleware) : undefined;\n};\n\n// Helper function to handle middleware arrays or single functions\nexport const processMiddleware = (middleware: any) => {\n if (!middleware) return [];\n\n if (Array.isArray(middleware)) {\n return middleware\n .filter((mw) => !!mw)\n .map((mw) => safeCatchAsync(mw)) as CatchAsyncReturnType[];\n } else return [safeCatchAsync(middleware)] as CatchAsyncReturnType[];\n};\n"]}
|
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
class Sheu {
|
|
2
|
+
getTimestamp() {
|
|
3
|
+
return new Date().toTimeString().split(" ")[0];
|
|
4
|
+
}
|
|
5
|
+
formatText(text = "", options = {}) {
|
|
6
|
+
const label = options?.label
|
|
7
|
+
? text
|
|
8
|
+
? options?.label + " "
|
|
9
|
+
: options?.label
|
|
10
|
+
: "";
|
|
11
|
+
let result = `${label}${text}`;
|
|
12
|
+
if (options.timestamp) {
|
|
13
|
+
const timestamp = this.getTimestamp();
|
|
14
|
+
if (options.timestamp === true)
|
|
15
|
+
result = `${label}\x1b[90m${timestamp}\x1b[0m ${text}`;
|
|
16
|
+
else if (typeof options.timestamp === "string") {
|
|
17
|
+
const colorCode = this.getColorCode(options.timestamp);
|
|
18
|
+
result = `${label}${colorCode}${timestamp}\x1b[0m ${text}`;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
if (options.bold)
|
|
22
|
+
result = `\x1b[1m${result}\x1b[0m`;
|
|
23
|
+
return result;
|
|
24
|
+
}
|
|
25
|
+
getColorCode(color) {
|
|
26
|
+
const colorMap = {
|
|
27
|
+
red: "\x1b[31m",
|
|
28
|
+
blue: "\x1b[34m",
|
|
29
|
+
green: "\x1b[32m",
|
|
30
|
+
yellow: "\x1b[33m",
|
|
31
|
+
cyan: "\x1b[36m",
|
|
32
|
+
magenta: "\x1b[35m",
|
|
33
|
+
white: "\x1b[37m",
|
|
34
|
+
black: "\x1b[30m",
|
|
35
|
+
gray: "\x1b[90m",
|
|
36
|
+
orange: "\x1b[91m",
|
|
37
|
+
};
|
|
38
|
+
return colorMap[color] || "\x1b[90m";
|
|
39
|
+
}
|
|
40
|
+
red(text, options) {
|
|
41
|
+
const coloredText = `\x1b[31m${text}\x1b[0m`;
|
|
42
|
+
return this.formatText(coloredText, options || {});
|
|
43
|
+
}
|
|
44
|
+
blue(text, options) {
|
|
45
|
+
const coloredText = `\x1b[34m${text}\x1b[0m`;
|
|
46
|
+
return this.formatText(coloredText, options || {});
|
|
47
|
+
}
|
|
48
|
+
green(text, options) {
|
|
49
|
+
const coloredText = `\x1b[32m${text}\x1b[0m`;
|
|
50
|
+
return this.formatText(coloredText, options || {});
|
|
51
|
+
}
|
|
52
|
+
yellow(text, options) {
|
|
53
|
+
const coloredText = `\x1b[33m${text}\x1b[0m`;
|
|
54
|
+
return this.formatText(coloredText, options || {});
|
|
55
|
+
}
|
|
56
|
+
cyan(text, options) {
|
|
57
|
+
const coloredText = `\x1b[36m${text}\x1b[0m`;
|
|
58
|
+
return this.formatText(coloredText, options || {});
|
|
59
|
+
}
|
|
60
|
+
magenta(text, options) {
|
|
61
|
+
const coloredText = `\x1b[35m${text}\x1b[0m`;
|
|
62
|
+
return this.formatText(coloredText, options || {});
|
|
63
|
+
}
|
|
64
|
+
white(text, options) {
|
|
65
|
+
const coloredText = `\x1b[37m${text}\x1b[0m`;
|
|
66
|
+
return this.formatText(coloredText, options || {});
|
|
67
|
+
}
|
|
68
|
+
black(text, options) {
|
|
69
|
+
const coloredText = `\x1b[30m${text}\x1b[0m`;
|
|
70
|
+
return this.formatText(coloredText, options || {});
|
|
71
|
+
}
|
|
72
|
+
gray(text, options) {
|
|
73
|
+
const coloredText = `\x1b[90m${text}\x1b[0m`;
|
|
74
|
+
return this.formatText(coloredText, options || {});
|
|
75
|
+
}
|
|
76
|
+
orange(text, options) {
|
|
77
|
+
const coloredText = `\x1b[91m${text}\x1b[0m`;
|
|
78
|
+
return this.formatText(coloredText, options || {});
|
|
79
|
+
}
|
|
80
|
+
bold(text, options) {
|
|
81
|
+
const boldText = `\x1b[1m${text}\x1b[0m`;
|
|
82
|
+
return this.formatText(boldText, { ...options, bold: false });
|
|
83
|
+
}
|
|
84
|
+
info(message, options) {
|
|
85
|
+
const label = `[\x1b[36mINFO\x1b[0m]`;
|
|
86
|
+
const result = this.formatText(message, { ...options, label });
|
|
87
|
+
console.info(result);
|
|
88
|
+
return result;
|
|
89
|
+
}
|
|
90
|
+
error(message, options) {
|
|
91
|
+
const label = `[\x1b[31mERROR\x1b[0m]`;
|
|
92
|
+
const result = this.formatText(message, { ...options, label });
|
|
93
|
+
console.error(result);
|
|
94
|
+
return result;
|
|
95
|
+
}
|
|
96
|
+
ready(message, options) {
|
|
97
|
+
const label = `[\x1b[32mREADY\x1b[0m]`;
|
|
98
|
+
const result = this.formatText(message, { ...options, label });
|
|
99
|
+
console.info(result);
|
|
100
|
+
return result;
|
|
101
|
+
}
|
|
102
|
+
done(message, options) {
|
|
103
|
+
const label = `[\x1b[32mDONE\x1b[0m]`;
|
|
104
|
+
const result = this.formatText(message, { ...options, label });
|
|
105
|
+
console.info(result);
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
warn(message, options) {
|
|
109
|
+
const label = `[\x1b[33mWARN\x1b[0m]`;
|
|
110
|
+
const result = this.formatText(message, { ...options, label });
|
|
111
|
+
console.warn(result);
|
|
112
|
+
return result;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
const sheu = new Sheu();
|
|
116
|
+
export default sheu;
|
|
117
|
+
//# sourceMappingURL=sheu.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"sheu.js","sourceRoot":"","sources":["../../../src/utils/sheu.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Sheu - Simplified terminal color utility for styling console output\n */\nclass Sheu {\n /**\n * Get current timestamp in HH:MM:SS format\n */\n private getTimestamp(): string {\n return new Date().toTimeString().split(\" \")[0];\n }\n\n /**\n * Apply timestamp and bold formatting if requested\n */\n private formatText(\n text: string = \"\",\n options: {\n timestamp?: boolean | string;\n bold?: boolean;\n label?: string;\n } = {}\n ): string {\n const label = options?.label\n ? text\n ? options?.label + \" \"\n : options?.label\n : \"\";\n let result = `${label}${text}`;\n\n // Apply timestamp if requested\n if (options.timestamp) {\n const timestamp = this.getTimestamp();\n if (options.timestamp === true)\n result = `${label}\\x1b[90m${timestamp}\\x1b[0m ${text}`;\n else if (typeof options.timestamp === \"string\") {\n const colorCode = this.getColorCode(options.timestamp);\n result = `${label}${colorCode}${timestamp}\\x1b[0m ${text}`;\n }\n }\n\n if (options.bold) result = `\\x1b[1m${result}\\x1b[0m`;\n\n return result;\n }\n\n /**\n * Get ANSI color code for color name\n */\n private getColorCode(color: string): string {\n const colorMap: { [key: string]: string } = {\n red: \"\\x1b[31m\",\n blue: \"\\x1b[34m\",\n green: \"\\x1b[32m\",\n yellow: \"\\x1b[33m\",\n cyan: \"\\x1b[36m\",\n magenta: \"\\x1b[35m\",\n white: \"\\x1b[37m\",\n black: \"\\x1b[30m\",\n gray: \"\\x1b[90m\",\n orange: \"\\x1b[91m\",\n };\n return colorMap[color] || \"\\x1b[90m\"; // Default to gray if color not found\n }\n\n /**\n * Red color\n */\n red(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[31m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Blue color\n */\n blue(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[34m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Green color\n */\n green(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[32m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Yellow color\n */\n yellow(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[33m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Cyan color\n */\n cyan(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[36m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Magenta color\n */\n magenta(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[35m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * White color\n */\n white(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[37m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Black color\n */\n black(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[30m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Gray color\n */\n gray(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[90m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Orange color\n */\n orange(\n text: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const coloredText = `\\x1b[91m${text}\\x1b[0m`;\n return this.formatText(coloredText, options || {});\n }\n\n /**\n * Bold text formatting\n */\n bold(text: string, options?: { timestamp?: boolean | string }): string {\n const boldText = `\\x1b[1m${text}\\x1b[0m`;\n return this.formatText(boldText, { ...options, bold: false }); // Don't double-bold\n }\n\n /**\n * Info label with cyan color [INFO]\n */\n info(\n message: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const label = `[\\x1b[36mINFO\\x1b[0m]`;\n const result = this.formatText(message, { ...options, label });\n console.info(result);\n return result;\n }\n\n /**\n * Error label with red color [ERROR]\n */\n error(\n message: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const label = `[\\x1b[31mERROR\\x1b[0m]`;\n const result = this.formatText(message, { ...options, label });\n console.error(result);\n return result;\n }\n\n /**\n * Ready label with green color [READY]\n */\n ready(\n message: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const label = `[\\x1b[32mREADY\\x1b[0m]`;\n const result = this.formatText(message, { ...options, label });\n console.info(result);\n return result;\n }\n\n /**\n * Done label with green color [DONE]\n */\n done(\n message: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const label = `[\\x1b[32mDONE\\x1b[0m]`;\n const result = this.formatText(message, { ...options, label });\n console.info(result);\n return result;\n }\n\n /**\n * Warning label with yellow color [WARN]\n */\n warn(\n message: string,\n options?: { timestamp?: boolean | string; bold?: boolean }\n ): string {\n const label = `[\\x1b[33mWARN\\x1b[0m]`;\n const result = this.formatText(message, { ...options, label });\n console.warn(result);\n return result;\n }\n}\n\nconst sheu = new Sheu();\n\nexport default sheu;\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { plainToInstance } from "class-transformer";
|
|
2
2
|
import { validate } from "class-validator";
|
|
3
|
-
import AppError from "../modules/error-handler/utils/app-error";
|
|
3
|
+
import AppError from "../modules/error-handler/utils/app-error.js";
|
|
4
4
|
export default async function validateDto(DtoClass, data, validationOptions) {
|
|
5
5
|
const dataDto = plainToInstance(DtoClass, data);
|
|
6
6
|
const errors = await validate(dataDto, validationOptions);
|
|
@@ -20,7 +20,7 @@ export declare class BaseService<ModelDelegate extends Record<string, any> = any
|
|
|
20
20
|
where?: infer W;
|
|
21
21
|
[x: string]: any;
|
|
22
22
|
} ? W : any): Promise<number>;
|
|
23
|
-
findMany<TOptions extends Omit<Parameters<ModelDelegate["findMany"]>[0], "where">>(filters
|
|
23
|
+
findMany<TOptions extends Omit<Parameters<ModelDelegate["findMany"]>[0], "where">>(filters?: Parameters<ModelDelegate["findMany"]>[0] extends {
|
|
24
24
|
where?: infer W;
|
|
25
25
|
[x: string]: any;
|
|
26
26
|
} ? W : any, queryOptions?: TOptions): Promise<ModelDelegate["findMany"] extends (args: {
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import { Router } from "express";
|
|
2
|
-
import { ArkosConfig } from "../../../../exports";
|
|
2
|
+
import { ArkosConfig, RouterConfig } from "../../../../exports";
|
|
3
|
+
import { RouterEndpoint } from "../../../../types/router-config";
|
|
3
4
|
export declare function setupRouters(models: string[], router: Router, arkosConfigs: ArkosConfig): Promise<void>[];
|
|
5
|
+
export declare function isEndpointDisabled(routerConfig: RouterConfig, endpoint: RouterEndpoint): boolean;
|
|
6
|
+
export declare function isParentEndpointAllowed(routerConfig: any, endpoint: string): boolean;
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import { ArkosRequest, ArkosResponse, ArkosNextFunction, ArkosRequestHandler } from "../../../types";
|
|
2
2
|
declare const catchAsync: (fn: ArkosRequestHandler) => (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => Promise<void>;
|
|
3
|
+
export type CatchAsyncReturnType = ReturnType<typeof catchAsync>;
|
|
3
4
|
export default catchAsync;
|
|
@@ -40,3 +40,7 @@ export declare function handleNetworkError(err: AppError): AppError;
|
|
|
40
40
|
export declare function handleUnhandledPromiseError(err: AppError): AppError;
|
|
41
41
|
export declare function handleDataTypeError(err: AppError): AppError;
|
|
42
42
|
export declare function handleEmptyResultError(err: AppError): AppError;
|
|
43
|
+
export declare function handleNonExistingRecord(err: {
|
|
44
|
+
meta?: Record<string, any>;
|
|
45
|
+
[x: string]: any;
|
|
46
|
+
}): AppError;
|
|
@@ -1,3 +1,3 @@
|
|
|
1
1
|
import { Router } from "express";
|
|
2
2
|
import { ArkosConfig } from "../../types/arkos-config";
|
|
3
|
-
export declare function getFileUploadRouter(
|
|
3
|
+
export declare function getFileUploadRouter(arkosConfig: ArkosConfig): Promise<Router>;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
|
-
import { ArkosRequest } from "../../../../types";
|
|
1
|
+
import { ArkosNextFunction, ArkosRequest, ArkosResponse } from "../../../../types";
|
|
2
|
+
export declare function adjustRequestUrl(req: ArkosRequest, _: ArkosResponse, next: ArkosNextFunction): void;
|
|
2
3
|
export declare function extractRequestInfo(req: ArkosRequest): {
|
|
3
4
|
baseURL: string;
|
|
4
5
|
baseRoute: string;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function generateClassValidatorJsonSchemas(): Promise<Record<string, any>>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function generatePrismaJsonSchemas(): Promise<void>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare function generateZodJsonSchemas(): Promise<Record<string, any>>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { OpenAPIV3 } from "openapi-types";
|
|
2
|
+
export declare function generatePrismaModelMainRoutesPaths(paths: OpenAPIV3.PathsObject, routeName: string, pascalModelName: string, humanReadableName: string, humanReadableNamePlural: string, routerConfig: any, mode: string): Promise<void>;
|
|
@@ -0,0 +1,2 @@
|
|
|
1
|
+
import { OpenAPIV3 } from "openapi-types";
|
|
2
|
+
export declare function generatePrismaModelParentRoutePaths(paths: OpenAPIV3.PathsObject, routeName: string, pascalModelName: string, humanReadableName: string, humanReadableNamePlural: string, routerConfig: any, mode: string): Promise<void>;
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ArkosConfig } from "../../../../exports";
|
|
2
|
+
import { OpenAPIV3 } from "openapi-types";
|
|
3
|
+
export declare function getOpenAPIJsonSchemasByConfigMode(swaggerConfig: ArkosConfig["swagger"]): Promise<void | Record<string, any>>;
|
|
4
|
+
export declare function getCorrectJsonSchemaName(type: string, modelName: string, suffix: "Dto" | "Schema"): string;
|
|
5
|
+
export declare function kebabToHuman(kebabStr: string): string;
|
|
6
|
+
export declare function getSchemaRef(schemaName: string, mode: string): string;
|
|
7
|
+
export declare function generatePathsForModels(arkosConfig: ArkosConfig): Promise<OpenAPIV3.PathsObject>;
|
package/dist/types/server.d.ts
CHANGED
|
@@ -2,6 +2,9 @@ import { IncomingMessage, Server, ServerResponse } from "http";
|
|
|
2
2
|
import { Express } from "express";
|
|
3
3
|
import { ArkosConfig } from "./types/arkos-config";
|
|
4
4
|
declare let server: Server<typeof IncomingMessage, typeof ServerResponse>;
|
|
5
|
+
export declare let _arkosConfig: ArkosConfig & {
|
|
6
|
+
available?: boolean;
|
|
7
|
+
};
|
|
5
8
|
declare function initApp(arkosConfig?: ArkosConfig): Promise<Express>;
|
|
6
9
|
export declare function terminateApplicationRunningProcessAndServer(): void;
|
|
7
10
|
export declare function getArkosConfig(): ArkosConfig;
|
|
@@ -7,6 +7,7 @@ import compression from "compression";
|
|
|
7
7
|
import { Options as QueryParserOptions } from "../utils/helpers/query-parser.helpers";
|
|
8
8
|
import { ValidatorOptions } from "class-validator";
|
|
9
9
|
import { MsDuration } from "../modules/auth/utils/helpers/auth.controller.helpers";
|
|
10
|
+
import { OpenAPIV3 } from "openapi-types";
|
|
10
11
|
export type ArkosConfig = {
|
|
11
12
|
request?: {
|
|
12
13
|
parameters?: {
|
|
@@ -120,10 +121,11 @@ export type ArkosConfig = {
|
|
|
120
121
|
name?: string;
|
|
121
122
|
};
|
|
122
123
|
swagger?: {
|
|
124
|
+
enableAfterBuild?: boolean;
|
|
123
125
|
endpoint?: string;
|
|
124
|
-
mode: "prisma" | "class-validator" | "zod"
|
|
125
|
-
options
|
|
126
|
-
definition
|
|
126
|
+
mode: "prisma" | "class-validator" | "zod";
|
|
127
|
+
options?: {
|
|
128
|
+
definition?: {
|
|
127
129
|
openapi?: string;
|
|
128
130
|
info?: {
|
|
129
131
|
title?: string;
|
|
@@ -132,8 +134,9 @@ export type ArkosConfig = {
|
|
|
132
134
|
};
|
|
133
135
|
servers?: {
|
|
134
136
|
url: string;
|
|
135
|
-
description
|
|
137
|
+
description?: string;
|
|
136
138
|
}[];
|
|
139
|
+
paths?: OpenAPIV3.PathsObject;
|
|
137
140
|
termsOfService?: string;
|
|
138
141
|
contact?: {
|
|
139
142
|
name?: string;
|
|
@@ -1 +1,6 @@
|
|
|
1
|
-
export declare function
|
|
1
|
+
export declare function getPackageJson(): any;
|
|
2
|
+
export declare function isEsm(): boolean;
|
|
3
|
+
export declare function importModule(modulePath: string, options?: {
|
|
4
|
+
fixExtension: boolean;
|
|
5
|
+
}): Promise<any>;
|
|
6
|
+
export declare function detectPackageManagerFromUserAgent(): string;
|