arkos 1.2.15-test → 1.2.15-test.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +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/exports/auth/index.js +1 -6
- package/dist/cjs/exports/controllers/index.js +1 -11
- package/dist/cjs/exports/error-handler/index.js +1 -11
- package/dist/cjs/exports/index.js +1 -12
- package/dist/cjs/exports/middlewares/index.js +1 -7
- package/dist/cjs/exports/prisma/index.js +1 -6
- package/dist/cjs/exports/services/index.js +1 -49
- package/dist/cjs/exports/utils/index.js +1 -44
- package/dist/cjs/exports/validation/index.js +1 -11
- package/dist/cjs/modules/auth/auth.controller.js +1 -194
- package/dist/cjs/modules/auth/auth.router.js +1 -124
- package/dist/cjs/modules/auth/auth.router.js.map +1 -1
- package/dist/cjs/modules/auth/auth.service.js +1 -192
- package/dist/cjs/modules/auth/auth.service.js.map +1 -1
- package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +1 -83
- package/dist/cjs/modules/base/base.controller.js +1 -159
- package/dist/cjs/modules/base/base.controller.js.map +1 -1
- package/dist/cjs/modules/base/base.middlewares.js +1 -92
- package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
- package/dist/cjs/modules/base/base.router.js +1 -24
- package/dist/cjs/modules/base/base.router.js.map +1 -1
- package/dist/cjs/modules/base/base.service.js +1 -128
- package/dist/cjs/modules/base/base.service.js.map +1 -1
- package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +1 -82
- package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +1 -50
- package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +1 -167
- package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js.map +1 -1
- package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +1 -171
- package/dist/cjs/modules/email/email.service.js +1 -104
- package/dist/cjs/modules/error-handler/error-handler.controller.js +4 -144
- package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
- package/dist/cjs/modules/error-handler/utils/app-error.js +1 -17
- package/dist/cjs/modules/error-handler/utils/catch-async.js +1 -12
- package/dist/cjs/modules/error-handler/utils/catch-async.js.map +1 -1
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +3 -195
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
- package/dist/cjs/modules/file-upload/file-upload.controller.js +1 -271
- package/dist/cjs/modules/file-upload/file-upload.router.js +1 -56
- package/dist/cjs/modules/file-upload/file-upload.router.js.map +1 -1
- package/dist/cjs/modules/file-upload/file-upload.service.js +1 -322
- package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -90
- package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -1
- package/dist/cjs/modules/swagger/swagger.router.js +1 -141
- package/dist/cjs/modules/swagger/swagger.router.js.map +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -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-swagger-default-configs.js +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -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 +1 -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 +1 -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-schemas.js +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js.map +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
- package/dist/cjs/package.json +3 -0
- package/dist/cjs/paths.js +1 -1
- package/dist/cjs/server.js +4 -2
- package/dist/cjs/server.js.map +1 -1
- package/dist/cjs/types/arkos-config.js +1 -3
- package/dist/cjs/types/arkos-config.js.map +1 -1
- package/dist/cjs/types/auth.js +1 -3
- package/dist/cjs/types/index.js +1 -11
- package/dist/cjs/types/router-config.js +1 -3
- package/dist/cjs/utils/arkos-env.js +1 -9
- package/dist/cjs/utils/cli/build.js +5 -229
- package/dist/cjs/utils/cli/build.js.map +1 -1
- package/dist/cjs/utils/cli/dev.js +5 -267
- package/dist/cjs/utils/cli/dev.js.map +1 -1
- package/dist/cjs/utils/cli/generate.js +12 -189
- package/dist/cjs/utils/cli/generate.js.map +1 -1
- package/dist/cjs/utils/cli/index.js +1 -81
- package/dist/cjs/utils/cli/start.js +1 -93
- package/dist/cjs/utils/cli/start.js.map +1 -1
- package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -26
- package/dist/cjs/utils/cli/utils/cli.helpers.js.map +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +5 -20
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-controller-template.js +6 -15
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-middlewares.js +71 -133
- 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 +24 -46
- 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 +12 -32
- 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 +7 -27
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
- package/dist/cjs/utils/cli/utils/template-generators.js +2 -28
- package/dist/cjs/utils/cli/utils/watermark-stamper.js +3 -0
- package/dist/cjs/utils/cli/utils/watermark-stamper.js.map +1 -0
- package/dist/cjs/utils/dotenv.helpers.js +1 -43
- package/dist/cjs/utils/features/api.features.js +1 -161
- package/dist/cjs/utils/features/api.features.js.map +1 -1
- package/dist/cjs/utils/features/change-case.features.js +1 -67
- package/dist/cjs/utils/features/port-and-host-allocator.js +1 -0
- package/dist/cjs/utils/features/port-and-host-allocator.js.map +1 -0
- package/dist/cjs/utils/helpers/api.features.helpers.js +1 -106
- package/dist/cjs/utils/helpers/api.features.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/change-case.helpers.js +1 -177
- package/dist/cjs/utils/helpers/deepmerge.helper.js +1 -115
- package/dist/cjs/utils/helpers/fs.helpers.js +1 -54
- package/dist/cjs/utils/helpers/fs.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/global.helpers.js +1 -40
- package/dist/cjs/utils/helpers/global.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/models.helpers.js +11 -325
- package/dist/cjs/utils/helpers/models.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/prisma.helpers.js +1 -49
- package/dist/cjs/utils/helpers/prisma.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/query-parser.helpers.js +1 -45
- package/dist/cjs/utils/helpers/routers.helpers.js +1 -0
- package/dist/cjs/utils/helpers/routers.helpers.js.map +1 -0
- package/dist/cjs/utils/helpers/text.helpers.js +1 -28
- package/dist/cjs/utils/prisma/enhaced-prisma-json-schema-generator.js +1 -0
- package/dist/cjs/utils/prisma/enhaced-prisma-json-schema-generator.js.map +1 -0
- package/dist/cjs/utils/prisma/prisma-schema-parser.js +3 -0
- package/dist/cjs/utils/prisma/prisma-schema-parser.js.map +1 -0
- package/dist/cjs/utils/prisma/types.js +1 -0
- package/dist/cjs/utils/prisma/types.js.map +1 -0
- package/dist/cjs/utils/sheu.js +1 -0
- package/dist/cjs/utils/sheu.js.map +1 -0
- package/dist/cjs/utils/validate-dto.js +1 -17
- package/dist/cjs/utils/validate-schema.js +1 -15
- package/dist/esm/app.js +1 -0
- package/dist/esm/app.js.map +1 -0
- package/dist/esm/exports/auth/index.js +1 -0
- package/dist/esm/exports/controllers/index.js +1 -0
- package/dist/esm/exports/error-handler/index.js +1 -0
- package/dist/esm/exports/index.js +1 -0
- package/dist/esm/exports/middlewares/index.js +1 -0
- package/dist/esm/exports/prisma/index.js +1 -0
- package/dist/esm/exports/services/index.js +1 -0
- package/dist/esm/exports/utils/index.js +1 -0
- package/dist/esm/exports/validation/index.js +1 -0
- package/dist/esm/modules/auth/auth.controller.js +1 -0
- package/dist/esm/modules/auth/auth.router.js +1 -0
- package/dist/esm/modules/auth/auth.router.js.map +1 -0
- package/dist/esm/modules/auth/auth.service.js +1 -0
- package/dist/esm/modules/auth/auth.service.js.map +1 -0
- package/dist/esm/modules/auth/utils/helpers/auth.controller.helpers.js +1 -0
- package/dist/esm/modules/base/base.controller.js +1 -0
- package/dist/esm/modules/base/base.controller.js.map +1 -0
- package/dist/esm/modules/base/base.middlewares.js +1 -0
- package/dist/esm/modules/base/base.middlewares.js.map +1 -0
- package/dist/esm/modules/base/base.router.js +1 -0
- package/dist/esm/modules/base/base.router.js.map +1 -0
- package/dist/esm/modules/base/base.service.js +1 -0
- package/dist/esm/modules/base/base.service.js.map +1 -0
- package/dist/esm/modules/base/utils/helpers/base.controller.helpers.js +1 -0
- package/dist/esm/modules/base/utils/helpers/base.middlewares.helpers.js +1 -0
- package/dist/esm/modules/base/utils/helpers/base.router.helpers.js +1 -0
- package/dist/esm/modules/base/utils/helpers/base.router.helpers.js.map +1 -0
- package/dist/esm/modules/base/utils/helpers/base.service.helpers.js +1 -0
- package/dist/esm/modules/email/email.service.js +1 -0
- package/dist/esm/modules/error-handler/error-handler.controller.js +4 -0
- package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -0
- package/dist/esm/modules/error-handler/utils/app-error.js +1 -0
- package/dist/esm/modules/error-handler/utils/catch-async.js +1 -0
- package/dist/esm/modules/error-handler/utils/catch-async.js.map +1 -0
- package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +3 -0
- package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -0
- package/dist/esm/modules/file-upload/file-upload.controller.js +1 -0
- package/dist/esm/modules/file-upload/file-upload.router.js +1 -0
- package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -0
- package/dist/esm/modules/file-upload/file-upload.service.js +1 -0
- package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -0
- package/dist/esm/modules/file-upload/utils/helpers/file-upload.helpers.js.map +1 -0
- package/dist/esm/modules/swagger/swagger.router.js +1 -0
- package/dist/esm/modules/swagger/swagger.router.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +1 -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-swagger-default-configs.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/get-swagger-default-configs.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/get-system-json-schema-paths.js +1 -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 +1 -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 +1 -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-schemas.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -0
- package/dist/esm/modules/swagger/utils/helpers/swagger.router.helpers.js.map +1 -0
- package/dist/esm/package.json +3 -0
- package/dist/esm/server.js +5 -0
- package/dist/esm/server.js.map +1 -0
- package/dist/esm/types/arkos-config.js +1 -0
- package/dist/esm/types/arkos-config.js.map +1 -0
- package/dist/esm/types/auth.js +1 -0
- package/dist/esm/types/index.js +1 -0
- package/dist/esm/types/router-config.js +1 -0
- package/dist/esm/utils/arkos-env.js +1 -0
- package/dist/esm/utils/cli/build.js +5 -0
- package/dist/esm/utils/cli/build.js.map +1 -0
- package/dist/esm/utils/cli/dev.js +5 -0
- package/dist/esm/utils/cli/dev.js.map +1 -0
- package/dist/esm/utils/cli/generate.js +12 -0
- package/dist/{es2020 → esm}/utils/cli/generate.js.map +1 -1
- package/dist/esm/utils/cli/index.js +1 -0
- package/dist/esm/utils/cli/start.js +1 -0
- package/dist/esm/utils/cli/start.js.map +1 -0
- package/dist/esm/utils/cli/utils/cli.helpers.js +1 -0
- package/dist/esm/utils/cli/utils/cli.helpers.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-auth-configs-template.js +21 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-controller-template.js +12 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js +206 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-middlewares.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js +36 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-prisma-query-options.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js +18 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-router-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/generate-service-template.js +15 -0
- package/dist/{es2020 → esm}/utils/cli/utils/template-generator/templates/generate-service-template.js.map +1 -1
- package/dist/esm/utils/cli/utils/template-generators.js +2 -0
- package/dist/esm/utils/cli/utils/watermark-stamper.js +3 -0
- package/dist/esm/utils/cli/utils/watermark-stamper.js.map +1 -0
- package/dist/esm/utils/dotenv.helpers.js +1 -0
- package/dist/esm/utils/features/api.features.js +1 -0
- package/dist/esm/utils/features/api.features.js.map +1 -0
- package/dist/esm/utils/features/change-case.features.js +1 -0
- package/dist/esm/utils/features/port-and-host-allocator.js +1 -0
- package/dist/esm/utils/features/port-and-host-allocator.js.map +1 -0
- package/dist/esm/utils/helpers/api.features.helpers.js +1 -0
- package/dist/esm/utils/helpers/api.features.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/change-case.helpers.js +1 -0
- package/dist/esm/utils/helpers/deepmerge.helper.js +1 -0
- package/dist/esm/utils/helpers/fs.helpers.js +1 -0
- package/dist/esm/utils/helpers/fs.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/global.helpers.js +1 -0
- package/dist/esm/utils/helpers/global.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/models.helpers.js +11 -0
- package/dist/esm/utils/helpers/models.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/prisma.helpers.js +1 -0
- package/dist/esm/utils/helpers/prisma.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/query-parser.helpers.js +1 -0
- package/dist/esm/utils/helpers/routers.helpers.js +1 -0
- package/dist/esm/utils/helpers/routers.helpers.js.map +1 -0
- package/dist/esm/utils/helpers/text.helpers.js +1 -0
- package/dist/esm/utils/prisma/enhaced-prisma-json-schema-generator.js +1 -0
- package/dist/esm/utils/prisma/enhaced-prisma-json-schema-generator.js.map +1 -0
- package/dist/esm/utils/prisma/prisma-schema-parser.js +3 -0
- package/dist/esm/utils/prisma/prisma-schema-parser.js.map +1 -0
- package/dist/esm/utils/prisma/types.js +1 -0
- package/dist/esm/utils/prisma/types.js.map +1 -0
- package/dist/esm/utils/sheu.js +1 -0
- package/dist/esm/utils/sheu.js.map +1 -0
- package/dist/esm/utils/validate-dto.js +1 -0
- package/dist/esm/utils/validate-schema.js +1 -0
- package/dist/types/modules/base/base.middlewares.d.ts +4 -4
- 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/error-handler.controller.d.ts +1 -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 +4 -0
- package/dist/types/modules/swagger/utils/helpers/get-swagger-default-configs.d.ts +46 -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 +2 -0
- package/dist/types/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.d.ts +1 -0
- package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.d.ts +3 -0
- package/dist/types/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.d.ts +3 -0
- package/dist/types/modules/swagger/utils/helpers/missing-json-schemas-generator.d.ts +34 -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 +10 -5
- package/dist/types/utils/cli/utils/cli.helpers.d.ts +1 -1
- package/dist/types/utils/cli/utils/watermark-stamper.d.ts +9 -0
- package/dist/types/utils/features/api.features.d.ts +1 -0
- package/dist/types/utils/features/port-and-host-allocator.d.ts +21 -0
- package/dist/types/utils/helpers/global.helpers.d.ts +6 -1
- package/dist/types/utils/helpers/models.helpers.d.ts +31 -5
- package/dist/types/utils/helpers/routers.helpers.d.ts +2 -0
- package/dist/types/utils/prisma/enhaced-prisma-json-schema-generator.d.ts +34 -0
- package/dist/types/utils/prisma/prisma-schema-parser.d.ts +18 -0
- package/dist/types/utils/prisma/types.d.ts +48 -0
- package/dist/types/utils/sheu.d.ts +70 -0
- package/package.json +43 -41
- package/dist/es2020/app.js +0 -1
- package/dist/es2020/app.js.map +0 -1
- package/dist/es2020/exports/auth/index.js +0 -2
- package/dist/es2020/exports/controllers/index.js +0 -4
- package/dist/es2020/exports/error-handler/index.js +0 -4
- package/dist/es2020/exports/index.js +0 -8
- package/dist/es2020/exports/middlewares/index.js +0 -2
- package/dist/es2020/exports/prisma/index.js +0 -3
- package/dist/es2020/exports/services/index.js +0 -9
- package/dist/es2020/exports/utils/index.js +0 -4
- package/dist/es2020/exports/validation/index.js +0 -4
- package/dist/es2020/modules/auth/auth.controller.js +0 -187
- 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 +0 -185
- package/dist/es2020/modules/auth/auth.service.js.map +0 -1
- package/dist/es2020/modules/auth/utils/helpers/auth.controller.helpers.js +0 -73
- package/dist/es2020/modules/base/base.controller.js +0 -151
- package/dist/es2020/modules/base/base.controller.js.map +0 -1
- package/dist/es2020/modules/base/base.middlewares.js +0 -81
- package/dist/es2020/modules/base/base.middlewares.js.map +0 -1
- package/dist/es2020/modules/base/base.router.js +0 -17
- package/dist/es2020/modules/base/base.router.js.map +0 -1
- package/dist/es2020/modules/base/base.service.js +0 -120
- package/dist/es2020/modules/base/base.service.js.map +0 -1
- package/dist/es2020/modules/base/utils/helpers/base.controller.helpers.js +0 -77
- package/dist/es2020/modules/base/utils/helpers/base.middlewares.helpers.js +0 -44
- 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/base/utils/helpers/base.service.helpers.js +0 -165
- package/dist/es2020/modules/email/email.service.js +0 -97
- package/dist/es2020/modules/error-handler/error-handler.controller.js +0 -105
- package/dist/es2020/modules/error-handler/error-handler.controller.js.map +0 -1
- package/dist/es2020/modules/error-handler/utils/app-error.js +0 -15
- package/dist/es2020/modules/error-handler/utils/catch-async.js +0 -10
- package/dist/es2020/modules/error-handler/utils/catch-async.js.map +0 -1
- package/dist/es2020/modules/error-handler/utils/error-handler.helpers.js +0 -155
- package/dist/es2020/modules/error-handler/utils/error-handler.helpers.js.map +0 -1
- package/dist/es2020/modules/file-upload/file-upload.controller.js +0 -266
- 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/file-upload.service.js +0 -314
- package/dist/es2020/modules/file-upload/utils/helpers/file-upload.helpers.js +0 -81
- package/dist/es2020/modules/file-upload/utils/helpers/file-upload.helpers.js.map +0 -1
- package/dist/es2020/modules/swagger/swagger.router.js +0 -135
- 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 +0 -2
- package/dist/es2020/types/arkos-config.js.map +0 -1
- package/dist/es2020/types/auth.js +0 -2
- package/dist/es2020/types/index.js +0 -8
- package/dist/es2020/types/router-config.js +0 -2
- package/dist/es2020/utils/arkos-env.js +0 -7
- package/dist/es2020/utils/cli/build.js +0 -223
- package/dist/es2020/utils/cli/build.js.map +0 -1
- package/dist/es2020/utils/cli/dev.js +0 -260
- package/dist/es2020/utils/cli/dev.js.map +0 -1
- package/dist/es2020/utils/cli/generate.js +0 -183
- package/dist/es2020/utils/cli/index.js +0 -74
- package/dist/es2020/utils/cli/start.js +0 -86
- package/dist/es2020/utils/cli/start.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-auth-configs-template.js +0 -33
- package/dist/es2020/utils/cli/utils/template-generator/templates/generate-controller-template.js +0 -18
- package/dist/es2020/utils/cli/utils/template-generator/templates/generate-middlewares.js +0 -265
- 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 +0 -55
- 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 +0 -32
- package/dist/es2020/utils/cli/utils/template-generator/templates/generate-router-template.js.map +0 -1
- package/dist/es2020/utils/cli/utils/template-generator/templates/generate-service-template.js +0 -32
- package/dist/es2020/utils/cli/utils/template-generators.js +0 -25
- package/dist/es2020/utils/dotenv.helpers.js +0 -37
- package/dist/es2020/utils/features/api.features.js +0 -154
- package/dist/es2020/utils/features/api.features.js.map +0 -1
- package/dist/es2020/utils/features/change-case.features.js +0 -31
- package/dist/es2020/utils/helpers/api.features.helpers.js +0 -103
- package/dist/es2020/utils/helpers/api.features.helpers.js.map +0 -1
- package/dist/es2020/utils/helpers/change-case.helpers.js +0 -161
- package/dist/es2020/utils/helpers/deepmerge.helper.js +0 -113
- package/dist/es2020/utils/helpers/fs.helpers.js +0 -45
- 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 +0 -276
- package/dist/es2020/utils/helpers/models.helpers.js.map +0 -1
- package/dist/es2020/utils/helpers/prisma.helpers.js +0 -41
- package/dist/es2020/utils/helpers/prisma.helpers.js.map +0 -1
- package/dist/es2020/utils/helpers/query-parser.helpers.js +0 -40
- package/dist/es2020/utils/helpers/text.helpers.js +0 -22
- package/dist/es2020/utils/validate-dto.js +0 -11
- package/dist/es2020/utils/validate-schema.js +0 -9
- /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/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.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/auth.js.map +0 -0
- /package/dist/{es2020 → esm}/types/index.js.map +0 -0
- /package/dist/{es2020 → esm}/types/router-config.js.map +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.map +0 -0
- /package/dist/{es2020 → esm}/utils/cli/utils/template-generators.js.map +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/change-case.helpers.js.map +0 -0
- /package/dist/{es2020 → esm}/utils/helpers/deepmerge.helper.js.map +0 -0
- /package/dist/{es2020 → esm}/utils/helpers/query-parser.helpers.js.map +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,171 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.removeApiAction = removeApiAction;
|
|
4
|
-
exports.isPrismaRelationFormat = isPrismaRelationFormat;
|
|
5
|
-
exports.handleRelationFieldsInBody = handleRelationFieldsInBody;
|
|
6
|
-
exports.canBeUsedToConnect = canBeUsedToConnect;
|
|
7
|
-
const models_helpers_1 = require("../../../../utils/helpers/models.helpers");
|
|
8
|
-
function removeApiAction(obj) {
|
|
9
|
-
if (!obj || typeof obj !== "object")
|
|
10
|
-
return obj;
|
|
11
|
-
const result = {};
|
|
12
|
-
for (const [key, value] of Object.entries(obj)) {
|
|
13
|
-
if (key === "apiAction")
|
|
14
|
-
continue;
|
|
15
|
-
if (Array.isArray(value)) {
|
|
16
|
-
result[key] = value.map((item) => typeof item === "object" && item !== null ? removeApiAction(item) : item);
|
|
17
|
-
}
|
|
18
|
-
else if (typeof value === "object" && value !== null) {
|
|
19
|
-
result[key] = removeApiAction(value);
|
|
20
|
-
}
|
|
21
|
-
else {
|
|
22
|
-
result[key] = value;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
25
|
-
return result;
|
|
26
|
-
}
|
|
27
|
-
function isPrismaRelationFormat(obj) {
|
|
28
|
-
if (!obj || typeof obj !== "object")
|
|
29
|
-
return false;
|
|
30
|
-
const prismaOperations = [
|
|
31
|
-
"create",
|
|
32
|
-
"connect",
|
|
33
|
-
"update",
|
|
34
|
-
"delete",
|
|
35
|
-
"disconnect",
|
|
36
|
-
"deleteMany",
|
|
37
|
-
"connectOrCreate",
|
|
38
|
-
"upsert",
|
|
39
|
-
"set",
|
|
40
|
-
];
|
|
41
|
-
return prismaOperations.some((op) => op in obj);
|
|
42
|
-
}
|
|
43
|
-
function handleRelationFieldsInBody(body, relationFields, ignoreActions = []) {
|
|
44
|
-
let mutableBody = { ...body };
|
|
45
|
-
relationFields?.list?.forEach((field) => {
|
|
46
|
-
if (!body[field.name])
|
|
47
|
-
return;
|
|
48
|
-
if (isPrismaRelationFormat(body[field.name])) {
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
if (!Array.isArray(body[field.name])) {
|
|
52
|
-
return;
|
|
53
|
-
}
|
|
54
|
-
const createData = [];
|
|
55
|
-
const connectData = [];
|
|
56
|
-
const updateData = [];
|
|
57
|
-
const disconnectData = [];
|
|
58
|
-
const deleteManyIds = [];
|
|
59
|
-
body[field.name]?.forEach((bodyField) => {
|
|
60
|
-
if (ignoreActions?.includes?.(bodyField?.apiAction))
|
|
61
|
-
return;
|
|
62
|
-
const apiAction = bodyField?.apiAction;
|
|
63
|
-
if (apiAction === "delete") {
|
|
64
|
-
deleteManyIds.push(bodyField.id);
|
|
65
|
-
}
|
|
66
|
-
else if (apiAction === "disconnect") {
|
|
67
|
-
disconnectData.push({ id: bodyField.id });
|
|
68
|
-
}
|
|
69
|
-
else if (canBeUsedToConnect(field.type, bodyField)) {
|
|
70
|
-
const { apiAction: _, ...cleanedData } = bodyField;
|
|
71
|
-
connectData.push(cleanedData);
|
|
72
|
-
}
|
|
73
|
-
else if (!bodyField?.id) {
|
|
74
|
-
let nestedRelations = (0, models_helpers_1.getPrismaModelRelations)(field.type);
|
|
75
|
-
let dataToPush = { ...bodyField };
|
|
76
|
-
if (nestedRelations) {
|
|
77
|
-
dataToPush = handleRelationFieldsInBody(dataToPush, nestedRelations, ignoreActions);
|
|
78
|
-
}
|
|
79
|
-
if ("apiAction" in dataToPush) {
|
|
80
|
-
const { apiAction: _, ...rest } = dataToPush;
|
|
81
|
-
dataToPush = rest;
|
|
82
|
-
}
|
|
83
|
-
createData.push(dataToPush);
|
|
84
|
-
}
|
|
85
|
-
else {
|
|
86
|
-
const { id, apiAction: _, ...data } = bodyField;
|
|
87
|
-
let nestedRelations = (0, models_helpers_1.getPrismaModelRelations)(field.type);
|
|
88
|
-
let dataToPush = data;
|
|
89
|
-
if (nestedRelations) {
|
|
90
|
-
dataToPush = handleRelationFieldsInBody(data, nestedRelations, ignoreActions);
|
|
91
|
-
}
|
|
92
|
-
updateData.push({
|
|
93
|
-
where: { id },
|
|
94
|
-
data: dataToPush,
|
|
95
|
-
});
|
|
96
|
-
}
|
|
97
|
-
});
|
|
98
|
-
mutableBody[field.name] = {
|
|
99
|
-
...(createData.length ? { create: createData } : {}),
|
|
100
|
-
...(connectData.length ? { connect: connectData } : {}),
|
|
101
|
-
...(updateData.length ? { update: updateData } : {}),
|
|
102
|
-
...(disconnectData.length ? { disconnect: disconnectData } : {}),
|
|
103
|
-
...(deleteManyIds.length
|
|
104
|
-
? { deleteMany: { id: { in: deleteManyIds } } }
|
|
105
|
-
: {}),
|
|
106
|
-
};
|
|
107
|
-
});
|
|
108
|
-
relationFields?.singular?.forEach((field) => {
|
|
109
|
-
if (!body[field.name])
|
|
110
|
-
return;
|
|
111
|
-
if (ignoreActions?.includes?.(body[field.name]?.apiAction))
|
|
112
|
-
return;
|
|
113
|
-
if (isPrismaRelationFormat(body[field.name])) {
|
|
114
|
-
return;
|
|
115
|
-
}
|
|
116
|
-
const relationData = body[field.name];
|
|
117
|
-
let nestedRelations = (0, models_helpers_1.getPrismaModelRelations)(field.type);
|
|
118
|
-
if (canBeUsedToConnect(field.type, relationData)) {
|
|
119
|
-
const { apiAction: _, ...cleanedData } = relationData;
|
|
120
|
-
mutableBody[field.name] = { connect: cleanedData };
|
|
121
|
-
}
|
|
122
|
-
else if (!relationData?.id) {
|
|
123
|
-
let dataToCreate = { ...relationData };
|
|
124
|
-
if ("apiAction" in dataToCreate) {
|
|
125
|
-
const { apiAction: _, ...rest } = dataToCreate;
|
|
126
|
-
dataToCreate = rest;
|
|
127
|
-
}
|
|
128
|
-
if (nestedRelations) {
|
|
129
|
-
dataToCreate = handleRelationFieldsInBody(dataToCreate, nestedRelations, ignoreActions);
|
|
130
|
-
}
|
|
131
|
-
mutableBody[field.name] = { create: dataToCreate };
|
|
132
|
-
}
|
|
133
|
-
else {
|
|
134
|
-
const { id, apiAction: _, ...data } = relationData;
|
|
135
|
-
let dataToUpdate = data;
|
|
136
|
-
if (nestedRelations) {
|
|
137
|
-
dataToUpdate = handleRelationFieldsInBody(data, nestedRelations, ignoreActions);
|
|
138
|
-
}
|
|
139
|
-
mutableBody[field.name] = {
|
|
140
|
-
update: {
|
|
141
|
-
data: dataToUpdate,
|
|
142
|
-
},
|
|
143
|
-
};
|
|
144
|
-
}
|
|
145
|
-
});
|
|
146
|
-
if ("apiAction" in mutableBody) {
|
|
147
|
-
const { apiAction, ...rest } = mutableBody;
|
|
148
|
-
mutableBody = rest;
|
|
149
|
-
}
|
|
150
|
-
return removeApiAction(mutableBody);
|
|
151
|
-
}
|
|
152
|
-
function canBeUsedToConnect(modelName, bodyField) {
|
|
153
|
-
if (!bodyField)
|
|
154
|
-
return false;
|
|
155
|
-
if (bodyField.apiAction && !["connect"]?.includes?.(bodyField.apiAction)) {
|
|
156
|
-
return false;
|
|
157
|
-
}
|
|
158
|
-
if (bodyField.apiAction === "connect") {
|
|
159
|
-
return true;
|
|
160
|
-
}
|
|
161
|
-
if (Object.keys(bodyField)?.length === 1 && bodyField?.id) {
|
|
162
|
-
return true;
|
|
163
|
-
}
|
|
164
|
-
const uniqueFields = (0, models_helpers_1.getModelUniqueFields)(modelName);
|
|
165
|
-
if (Object.keys(bodyField).length === 1) {
|
|
166
|
-
const fieldName = Object.keys(bodyField)[0];
|
|
167
|
-
return uniqueFields?.some((field) => field.name === fieldName);
|
|
168
|
-
}
|
|
169
|
-
return false;
|
|
170
|
-
}
|
|
171
|
-
//# sourceMappingURL=base.service.helpers.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0}),exports.removeApiAction=removeApiAction,exports.isPrismaRelationFormat=isPrismaRelationFormat,exports.handleRelationFieldsInBody=handleRelationFieldsInBody,exports.canBeUsedToConnect=canBeUsedToConnect;const models_helpers_1=require("../../../../utils/helpers/models.helpers");function removeApiAction(t){if(!t||typeof t!="object")return t;const n={};for(const[s,a]of Object.entries(t))s!=="apiAction"&&(Array.isArray(a)?n[s]=a.map(e=>typeof e=="object"&&e!==null?removeApiAction(e):e):typeof a=="object"&&a!==null?n[s]=removeApiAction(a):n[s]=a);return n}function isPrismaRelationFormat(t){return!t||typeof t!="object"?!1:["create","connect","update","delete","disconnect","deleteMany","connectOrCreate","upsert","set"].some(s=>s in t)}function handleRelationFieldsInBody(t,n,s=[]){let a={...t};if(n?.list?.forEach(e=>{if(!t[e.name]||isPrismaRelationFormat(t[e.name])||!Array.isArray(t[e.name]))return;const r=[],u=[],i=[],l=[],p=[];t[e.name]?.forEach(c=>{if(s?.includes?.(c?.apiAction))return;const A=c?.apiAction;if(A==="delete")p.push(c.id);else if(A==="disconnect")l.push({id:c.id});else if(canBeUsedToConnect(e.type,c)){const{apiAction:f,...o}=c;u.push(o)}else if(c?.id){const{id:f,apiAction:o,...h}=c;let m=(0,models_helpers_1.getPrismaModelRelations)(e.type),R=h;m&&(R=handleRelationFieldsInBody(h,m,s)),i.push({where:{id:f},data:R})}else{let f=(0,models_helpers_1.getPrismaModelRelations)(e.type),o={...c};if(f&&(o=handleRelationFieldsInBody(o,f,s)),"apiAction"in o){const{apiAction:h,...m}=o;o=m}r.push(o)}}),a[e.name]={...r.length?{create:r}:{},...u.length?{connect:u}:{},...i.length?{update:i}:{},...l.length?{disconnect:l}:{},...p.length?{deleteMany:{id:{in:p}}}:{}}}),n?.singular?.forEach(e=>{if(!t[e.name]||s?.includes?.(t[e.name]?.apiAction)||isPrismaRelationFormat(t[e.name]))return;const r=t[e.name];let u=(0,models_helpers_1.getPrismaModelRelations)(e.type);if(canBeUsedToConnect(e.type,r)){const{apiAction:i,...l}=r;a[e.name]={connect:l}}else if(r?.id){const{id:i,apiAction:l,...p}=r;let c=p;u&&(c=handleRelationFieldsInBody(p,u,s)),a[e.name]={update:{data:c}}}else{let i={...r};if("apiAction"in i){const{apiAction:l,...p}=i;i=p}u&&(i=handleRelationFieldsInBody(i,u,s)),a[e.name]={create:i}}}),"apiAction"in a){const{apiAction:e,...r}=a;a=r}return removeApiAction(a)}function canBeUsedToConnect(t,n){if(!n||n.apiAction&&!["connect"].includes?.(n.apiAction))return!1;if(n.apiAction==="connect"||Object.keys(n)?.length===1&&n?.id)return!0;const s=(0,models_helpers_1.getModelUniqueFields)(t);if(Object.keys(n).length===1){const a=Object.keys(n)[0];return s?.some(e=>e.name===a)}return!1}
|
|
@@ -1,104 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
-
};
|
|
5
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
-
exports.EmailService = void 0;
|
|
7
|
-
const nodemailer_1 = __importDefault(require("nodemailer"));
|
|
8
|
-
const html_to_text_1 = require("html-to-text");
|
|
9
|
-
const server_1 = require("../../server");
|
|
10
|
-
const app_error_1 = __importDefault(require("../error-handler/utils/app-error"));
|
|
11
|
-
class EmailService {
|
|
12
|
-
constructor(config) {
|
|
13
|
-
this.transporter = null;
|
|
14
|
-
this.customConfig = null;
|
|
15
|
-
if (config) {
|
|
16
|
-
this.customConfig = config;
|
|
17
|
-
}
|
|
18
|
-
}
|
|
19
|
-
getEmailConfig() {
|
|
20
|
-
if (this.customConfig) {
|
|
21
|
-
return this.customConfig;
|
|
22
|
-
}
|
|
23
|
-
const { email: emailConfigs } = (0, server_1.getArkosConfig)();
|
|
24
|
-
if (!emailConfigs) {
|
|
25
|
-
throw new app_error_1.default("You are trying to use emailService without setting arkosConfig.email configurations", 500, {
|
|
26
|
-
docs: "Read more about emailService at https://www.arkosjs.com/docs/core-concepts/sending-emails",
|
|
27
|
-
});
|
|
28
|
-
}
|
|
29
|
-
return {
|
|
30
|
-
host: emailConfigs.host,
|
|
31
|
-
port: emailConfigs.port || 465,
|
|
32
|
-
secure: emailConfigs.secure !== undefined ? emailConfigs.secure : true,
|
|
33
|
-
auth: {
|
|
34
|
-
user: emailConfigs.auth?.user,
|
|
35
|
-
pass: emailConfigs.auth?.pass,
|
|
36
|
-
},
|
|
37
|
-
name: emailConfigs.name,
|
|
38
|
-
};
|
|
39
|
-
}
|
|
40
|
-
getTransporter(customConfig) {
|
|
41
|
-
if (customConfig) {
|
|
42
|
-
const defaultConfig = this.getEmailConfig();
|
|
43
|
-
return nodemailer_1.default.createTransport({
|
|
44
|
-
host: customConfig.host || defaultConfig.host,
|
|
45
|
-
port: customConfig.port || defaultConfig.port,
|
|
46
|
-
secure: customConfig.secure !== undefined
|
|
47
|
-
? customConfig.secure
|
|
48
|
-
: defaultConfig.secure,
|
|
49
|
-
auth: customConfig.auth || defaultConfig.auth,
|
|
50
|
-
});
|
|
51
|
-
}
|
|
52
|
-
if (!this.transporter) {
|
|
53
|
-
const config = this.getEmailConfig();
|
|
54
|
-
this.transporter = nodemailer_1.default.createTransport({
|
|
55
|
-
host: config.host,
|
|
56
|
-
port: config.port,
|
|
57
|
-
secure: config.secure,
|
|
58
|
-
auth: config.auth,
|
|
59
|
-
});
|
|
60
|
-
}
|
|
61
|
-
return this.transporter;
|
|
62
|
-
}
|
|
63
|
-
async send(options, connectionOptions, skipVerification = false) {
|
|
64
|
-
const config = this.getEmailConfig();
|
|
65
|
-
const transporter = connectionOptions
|
|
66
|
-
? this.getTransporter(connectionOptions)
|
|
67
|
-
: this.getTransporter();
|
|
68
|
-
const fromAddress = options.from || connectionOptions?.auth?.user || config.auth?.user;
|
|
69
|
-
if (connectionOptions || !skipVerification) {
|
|
70
|
-
const isConnected = await this.verifyConnection(transporter);
|
|
71
|
-
if (!isConnected) {
|
|
72
|
-
throw new Error("Failed to connect to email server");
|
|
73
|
-
}
|
|
74
|
-
}
|
|
75
|
-
const info = await transporter.sendMail({
|
|
76
|
-
...options,
|
|
77
|
-
from: fromAddress,
|
|
78
|
-
text: options?.text || (0, html_to_text_1.convert)(options.html),
|
|
79
|
-
});
|
|
80
|
-
return { success: true, messageId: info.messageId };
|
|
81
|
-
}
|
|
82
|
-
async verifyConnection(transporterToVerify) {
|
|
83
|
-
try {
|
|
84
|
-
const transporter = transporterToVerify || this.getTransporter();
|
|
85
|
-
await transporter.verify();
|
|
86
|
-
return true;
|
|
87
|
-
}
|
|
88
|
-
catch (error) {
|
|
89
|
-
console.error("Email Server Connection Failed", error);
|
|
90
|
-
return false;
|
|
91
|
-
}
|
|
92
|
-
}
|
|
93
|
-
updateConfig(config) {
|
|
94
|
-
this.customConfig = config;
|
|
95
|
-
this.transporter = null;
|
|
96
|
-
}
|
|
97
|
-
static create(config) {
|
|
98
|
-
return new EmailService(config);
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
exports.EmailService = EmailService;
|
|
102
|
-
const emailService = new EmailService();
|
|
103
|
-
exports.default = emailService;
|
|
104
|
-
//# sourceMappingURL=email.service.js.map
|
|
1
|
+
"use strict";var __importDefault=function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.EmailService=void 0;const nodemailer_1=__importDefault(require("nodemailer")),html_to_text_1=require("html-to-text"),server_1=require("../../server"),app_error_1=__importDefault(require("../error-handler/utils/app-error"));class EmailService{constructor(e){this.transporter=null,this.customConfig=null,e&&(this.customConfig=e)}getEmailConfig(){if(this.customConfig)return this.customConfig;const{email:e}=(0,server_1.getArkosConfig)();if(!e)throw new app_error_1.default("You are trying to use emailService without setting arkosConfig.email configurations",500,{docs:"Read more about emailService at https://www.arkosjs.com/docs/core-concepts/sending-emails"});return{host:e.host,port:e.port||465,secure:e.secure!==void 0?e.secure:!0,auth:{user:e.auth?.user,pass:e.auth?.pass},name:e.name}}getTransporter(e){if(e){const t=this.getEmailConfig();return nodemailer_1.default.createTransport({host:e.host||t.host,port:e.port||t.port,secure:e.secure!==void 0?e.secure:t.secure,auth:e.auth||t.auth})}if(!this.transporter){const t=this.getEmailConfig();this.transporter=nodemailer_1.default.createTransport({host:t.host,port:t.port,secure:t.secure,auth:t.auth})}return this.transporter}async send(e,t,o=!1){const a=this.getEmailConfig(),s=t?this.getTransporter(t):this.getTransporter(),i=e.from||t?.auth?.user||a.auth?.user;if((t||!o)&&!await this.verifyConnection(s))throw new Error("Failed to connect to email server");return{success:!0,messageId:(await s.sendMail({...e,from:i,text:e?.text||(0,html_to_text_1.convert)(e.html)})).messageId}}async verifyConnection(e){try{return await(e||this.getTransporter()).verify(),!0}catch(t){return console.error("Email Server Connection Failed",t),!1}}updateConfig(e){this.customConfig=e,this.transporter=null}static create(e){return new EmailService(e)}}exports.EmailService=EmailService;const emailService=new EmailService;exports.default=emailService;
|
|
@@ -1,144 +1,4 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
-
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
-
}
|
|
8
|
-
Object.defineProperty(o, k2, desc);
|
|
9
|
-
}) : (function(o, m, k, k2) {
|
|
10
|
-
if (k2 === undefined) k2 = k;
|
|
11
|
-
o[k2] = m[k];
|
|
12
|
-
}));
|
|
13
|
-
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
-
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
-
}) : function(o, v) {
|
|
16
|
-
o["default"] = v;
|
|
17
|
-
});
|
|
18
|
-
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
-
var ownKeys = function(o) {
|
|
20
|
-
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
-
var ar = [];
|
|
22
|
-
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
-
return ar;
|
|
24
|
-
};
|
|
25
|
-
return ownKeys(o);
|
|
26
|
-
};
|
|
27
|
-
return function (mod) {
|
|
28
|
-
if (mod && mod.__esModule) return mod;
|
|
29
|
-
var result = {};
|
|
30
|
-
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
-
__setModuleDefault(result, mod);
|
|
32
|
-
return result;
|
|
33
|
-
};
|
|
34
|
-
})();
|
|
35
|
-
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
36
|
-
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
|
-
};
|
|
38
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.default = errorHandler;
|
|
40
|
-
const app_error_1 = __importDefault(require("./utils/app-error"));
|
|
41
|
-
const errorControllerHelper = __importStar(require("./utils/error-handler.helpers"));
|
|
42
|
-
const server_1 = require("../../server");
|
|
43
|
-
function errorHandler(err, req, res, next) {
|
|
44
|
-
console.error("[\x1b[31mERROR\x1b[0m]:", err);
|
|
45
|
-
err.statusCode = err.statusCode || 500;
|
|
46
|
-
err.status = err.status || "error";
|
|
47
|
-
if (process.env.NODE_ENV !== "production") {
|
|
48
|
-
sendDevelopmentError(err, req, res);
|
|
49
|
-
return;
|
|
50
|
-
}
|
|
51
|
-
let error = { ...err, message: err.message };
|
|
52
|
-
if (err.name === "JsonWebTokenError")
|
|
53
|
-
error = errorControllerHelper.handleJWTError();
|
|
54
|
-
if (err.name === "TokenExpiredError")
|
|
55
|
-
error = errorControllerHelper.handleJWTExpired();
|
|
56
|
-
if (err.name === "PrismaClientValidationError")
|
|
57
|
-
error = errorControllerHelper.handlePrismaClientValidationError(err);
|
|
58
|
-
if (err.code === "P1000")
|
|
59
|
-
error = errorControllerHelper.handleAuthenticationError(err);
|
|
60
|
-
if (err.code === "P1001")
|
|
61
|
-
error = errorControllerHelper.handleServerNotReachableError(err);
|
|
62
|
-
if (err.code === "P1002")
|
|
63
|
-
error = errorControllerHelper.handleConnectionTimeoutError(err);
|
|
64
|
-
if (err.code === "P1003")
|
|
65
|
-
error = errorControllerHelper.handleDatabaseNotFoundError(err);
|
|
66
|
-
if (err.code === "P2000")
|
|
67
|
-
error = errorControllerHelper.handleFieldValueTooLargeError(err);
|
|
68
|
-
if (err.code === "P2001")
|
|
69
|
-
error = errorControllerHelper.handleRecordNotFoundError(err);
|
|
70
|
-
if (err.code === "P2002")
|
|
71
|
-
error = errorControllerHelper.handleUniqueConstraintError(err);
|
|
72
|
-
if (err.code === "P2003")
|
|
73
|
-
error = errorControllerHelper.handleForeignKeyConstraintError(err);
|
|
74
|
-
if (err.code === "P2004")
|
|
75
|
-
error = errorControllerHelper.handleConstraintFailedError(err);
|
|
76
|
-
if (err.code === "P3000")
|
|
77
|
-
error = errorControllerHelper.handleSchemaCreationFailedError(err);
|
|
78
|
-
if (err.code === "P3001")
|
|
79
|
-
error = errorControllerHelper.handleMigrationAlreadyAppliedError(err);
|
|
80
|
-
if (err.code === "P3002")
|
|
81
|
-
error = errorControllerHelper.handleMigrationScriptFailedError(err);
|
|
82
|
-
if (err.code === "P3003")
|
|
83
|
-
error = errorControllerHelper.handleVersionMismatchError(err);
|
|
84
|
-
if (err.name === "NetworkError")
|
|
85
|
-
error = errorControllerHelper.handleNetworkError(err);
|
|
86
|
-
if (!error.isOperational)
|
|
87
|
-
error = new app_error_1.default("Something went wrong!", 500);
|
|
88
|
-
sendProductionError(error, req, res);
|
|
89
|
-
}
|
|
90
|
-
function sendDevelopmentError(err, req, res) {
|
|
91
|
-
if (req.originalUrl.startsWith("/api"))
|
|
92
|
-
res.status(err.statusCode).json({
|
|
93
|
-
...err,
|
|
94
|
-
message: err.message.split("\n")[err.message.split("\n").length - 1],
|
|
95
|
-
stack: err.stack?.split("\n"),
|
|
96
|
-
});
|
|
97
|
-
else
|
|
98
|
-
res.status(err.statusCode).json({
|
|
99
|
-
title: "Something went wrong!",
|
|
100
|
-
message: err.message,
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
function sendProductionError(err, req, res) {
|
|
104
|
-
if (req.originalUrl.startsWith("/api")) {
|
|
105
|
-
if (err.isOperational)
|
|
106
|
-
res.status(err.statusCode).json({
|
|
107
|
-
status: err.status,
|
|
108
|
-
message: err.message,
|
|
109
|
-
meta: err.meta || {},
|
|
110
|
-
code: err.code || "unknown",
|
|
111
|
-
});
|
|
112
|
-
else
|
|
113
|
-
res.status(500).json({
|
|
114
|
-
status: "error",
|
|
115
|
-
message: "Something went wrong!",
|
|
116
|
-
});
|
|
117
|
-
return;
|
|
118
|
-
}
|
|
119
|
-
if (err.isOperational) {
|
|
120
|
-
res.status(err.statusCode).json({
|
|
121
|
-
title: "Something went wrong!",
|
|
122
|
-
message: err.message,
|
|
123
|
-
});
|
|
124
|
-
return;
|
|
125
|
-
}
|
|
126
|
-
res.status(err.statusCode).json({
|
|
127
|
-
title: "Something went wrong!",
|
|
128
|
-
message: "Please try again later.",
|
|
129
|
-
});
|
|
130
|
-
}
|
|
131
|
-
process.on("SIGTERM", () => {
|
|
132
|
-
if (process.env.NODE_ENV !== "production" &&
|
|
133
|
-
process.env.NODE_ENV !== "staging") {
|
|
134
|
-
process.exit();
|
|
135
|
-
}
|
|
136
|
-
else {
|
|
137
|
-
console.error("SIGTERM RECEIVED in Production. Shutting down gracefully!");
|
|
138
|
-
server_1.server.close(() => {
|
|
139
|
-
console.error("Process terminated!!!");
|
|
140
|
-
process.exit();
|
|
141
|
-
});
|
|
142
|
-
}
|
|
143
|
-
});
|
|
144
|
-
//# sourceMappingURL=error-handler.controller.js.map
|
|
1
|
+
"use strict";var __createBinding=Object.create?function(e,n,o,i){i===void 0&&(i=o);var t=Object.getOwnPropertyDescriptor(n,o);(!t||("get"in t?!n.__esModule:t.writable||t.configurable))&&(t={enumerable:!0,get:function(){return n[o]}}),Object.defineProperty(e,i,t)}:function(e,n,o,i){i===void 0&&(i=o),e[i]=n[o]},__setModuleDefault=Object.create?function(e,n){Object.defineProperty(e,"default",{enumerable:!0,value:n})}:function(e,n){e.default=n},__importStar=function(){var e=function(n){return e=Object.getOwnPropertyNames||function(o){var i=[];for(var t in o)Object.prototype.hasOwnProperty.call(o,t)&&(i[i.length]=t);return i},e(n)};return function(n){if(n&&n.__esModule)return n;var o={};if(n!=null)for(var i=e(n),t=0;t<i.length;t++)i[t]!=="default"&&__createBinding(o,n,i[t]);return __setModuleDefault(o,n),o}}(),__importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=errorHandler;const app_error_1=__importDefault(require("./utils/app-error")),errorControllerHelper=__importStar(require("./utils/error-handler.helpers")),server_1=require("../../server");function errorHandler(e,n,o,i){if(console.error("[\x1B[31mError\x1B[0m]:",e),e.statusCode=e.statusCode||500,e.status=e.status||"error",process.env.NODE_ENV!=="production"){sendDevelopmentError(e,n,o);return}let t={...e,message:e.message};e.name==="JsonWebTokenError"&&(t=errorControllerHelper.handleJWTError()),e.name==="TokenExpiredError"&&(t=errorControllerHelper.handleJWTExpired()),e.name==="PrismaClientValidationError"&&(t=errorControllerHelper.handlePrismaClientValidationError(e)),e.code==="P1000"&&(t=errorControllerHelper.handleAuthenticationError(e)),e.code==="P1001"&&(t=errorControllerHelper.handleServerNotReachableError(e)),e.code==="P1002"&&(t=errorControllerHelper.handleConnectionTimeoutError(e)),e.code==="P1003"&&(t=errorControllerHelper.handleDatabaseNotFoundError(e)),e.code==="P2000"&&(t=errorControllerHelper.handleFieldValueTooLargeError(e)),e.code==="P2001"&&(t=errorControllerHelper.handleRecordNotFoundError(e)),e.code==="P2002"&&(t=errorControllerHelper.handleUniqueConstraintError(e)),e.code==="P2003"&&(t=errorControllerHelper.handleForeignKeyConstraintError(e)),e.code==="P2004"&&(t=errorControllerHelper.handleConstraintFailedError(e)),e.code==="P2025"&&(t=errorControllerHelper.handleNonExistingRecord(e)),e.code==="P3000"&&(t=errorControllerHelper.handleSchemaCreationFailedError(e)),e.code==="P3001"&&(t=errorControllerHelper.handleMigrationAlreadyAppliedError(e)),e.code==="P3002"&&(t=errorControllerHelper.handleMigrationScriptFailedError(e)),e.code==="P3003"&&(t=errorControllerHelper.handleVersionMismatchError(e)),e.name==="NetworkError"&&(t=errorControllerHelper.handleNetworkError(e)),t.isOperational||(t=new app_error_1.default("Something went wrong!",500)),sendProductionError(t,n,o)}function sendDevelopmentError(e,n,o){n.originalUrl.startsWith("/api")?o.status(e.statusCode).json({...e,message:e.message.split(`
|
|
2
|
+
`)[e.message.split(`
|
|
3
|
+
`).length-1],stack:e.stack?.split(`
|
|
4
|
+
`)}):o.status(e.statusCode).json({title:"Something went wrong!",message:e.message})}function sendProductionError(e,n,o){if(n.originalUrl.startsWith("/api")){e.isOperational?o.status(e.statusCode).json({status:e.status,message:e.message,meta:e.meta||{},code:e.code||"unknown"}):o.status(500).json({status:"error",message:"Something went wrong!"});return}if(e.isOperational){o.status(e.statusCode).json({title:"Something went wrong!",message:e.message});return}o.status(e.statusCode).json({title:"Something went wrong!",message:"Please try again later."})}process.on("SIGTERM",()=>{process.env.NODE_ENV!=="production"&&process.env.NODE_ENV!=="staging"?process.exit():(console.error("SIGTERM RECEIVED in Production. Shutting down gracefully!"),server_1.server.close(()=>{console.error("Process terminated!!!"),process.exit()}))});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-handler.controller.js","sourceRoot":"","sources":["../../../../src/modules/error-handler/error-handler.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { NextFunction, Request, Response } from \"express\";\nimport AppError from \"./utils/app-error\";\nimport * as errorControllerHelper from \"./utils/error-handler.helpers\";\nimport { server } from \"../../server\";\n\n/**\n * Error handling middleware for Express.\n *\n * This middleware function handles all errors in the Express application.\n * It checks for the environment (development or production) and sends appropriate error responses\n * based on whether the environment is production or not. It also maps specific errors such as\n * JWT errors, Prisma client errors, and database-related errors to specific helper functions for handling.\n *\n * @param {AppError} err - The error object thrown by the application.\n * @param {Request} req - The Express request object.\n * @param {Response} res - The Express response object.\n * @param {NextFunction} next - The next middleware function in the chain.\n *\n * @returns {void} - Sends the response with the error details to the client.\n */\nexport default function errorHandler(\n err: AppError,\n req: Request,\n res: Response,\n next: NextFunction\n): void {\n console.error(\"[\\x1b[31mERROR\\x1b[0m]:\", err);\n // Default error status\n err.statusCode = err.statusCode || 500;\n err.status = err.status || \"error\";\n\n // If the environment is not production, send detailed error information\n if (process.env.NODE_ENV !== \"production\") {\n sendDevelopmentError(err, req, res);\n return;\n }\n\n // Prepare error object for response, copying the original error's properties\n let error = { ...err, message: err.message };\n\n // Handle specific error cases (JWT errors, Prisma validation errors, etc.)\n if (err.name === \"JsonWebTokenError\")\n error = errorControllerHelper.handleJWTError();\n if (err.name === \"TokenExpiredError\")\n error = errorControllerHelper.handleJWTExpired();\n\n // Handle specific Prisma client validation errors\n if (err.name === \"PrismaClientValidationError\")\n error = errorControllerHelper.handlePrismaClientValidationError(err);\n\n // Handle Prisma database-specific error codes (P1000 to P3005)\n if (err.code === \"P1000\")\n error = errorControllerHelper.handleAuthenticationError(err);\n if (err.code === \"P1001\")\n error = errorControllerHelper.handleServerNotReachableError(err);\n if (err.code === \"P1002\")\n error = errorControllerHelper.handleConnectionTimeoutError(err);\n if (err.code === \"P1003\")\n error = errorControllerHelper.handleDatabaseNotFoundError(err);\n if (err.code === \"P2000\")\n error = errorControllerHelper.handleFieldValueTooLargeError(err);\n if (err.code === \"P2001\")\n error = errorControllerHelper.handleRecordNotFoundError(err);\n if (err.code === \"P2002\")\n error = errorControllerHelper.handleUniqueConstraintError(err);\n if (err.code === \"P2003\")\n error = errorControllerHelper.handleForeignKeyConstraintError(err);\n if (err.code === \"P2004\")\n error = errorControllerHelper.handleConstraintFailedError(err);\n if (err.code === \"P3000\")\n error = errorControllerHelper.handleSchemaCreationFailedError(err);\n if (err.code === \"P3001\")\n error = errorControllerHelper.handleMigrationAlreadyAppliedError(err);\n if (err.code === \"P3002\")\n error = errorControllerHelper.handleMigrationScriptFailedError(err);\n if (err.code === \"P3003\")\n error = errorControllerHelper.handleVersionMismatchError(err);\n\n // Handle general error types (e.g., syntax errors, type errors, etc.)\n // if (err.name === \"SyntaxError\")\n // error = errorControllerHelper.handleSchemaSyntaxError(err);\n // if (err.name === \"TypeError\")\n // error = errorControllerHelper.handleClientTypeError(err);\n // if (err.name === \"BinaryError\")\n // error = errorControllerHelper.handleBinaryError(err);\n if (err.name === \"NetworkError\")\n error = errorControllerHelper.handleNetworkError(err);\n // if (err.name === \"UnhandledPromiseRejection\")\n // error = errorControllerHelper.handleUnhandledPromiseError(err);\n if (!error.isOperational) error = new AppError(\"Something went wrong!\", 500);\n\n // Send the error response for production environment\n sendProductionError(error, req, res);\n}\n\n/**\n * Sends a detailed error response in development mode.\n *\n * In development, the error response includes full error details, including\n * the stack trace and the complete error message.\n *\n * @param {AppError} err - The error object.\n * @param {Request} req - The Express request object.\n * @param {Response} res - The Express response object.\n *\n * @returns {void} - Sends the response with the error details to the client.\n */\nfunction sendDevelopmentError(\n err: AppError,\n req: Request,\n res: Response\n): void {\n if (req.originalUrl.startsWith(\"/api\"))\n res.status(err.statusCode).json({\n ...err,\n message: err.message.split(\"\\n\")[err.message.split(\"\\n\").length - 1],\n stack: err.stack?.split(\"\\n\"),\n });\n else\n res.status(err.statusCode).json({\n title: \"Something went wrong!\",\n message: err.message,\n });\n}\n\n/**\n * Sends a generic error response in production mode.\n *\n * In production, sensitive error details (such as stack traces) are not exposed\n * to the client. Only operational errors are shown with a generic message.\n *\n * @param {AppError} err - The error object.\n * @param {Request} req - The Express request object.\n * @param {Response} res - The Express response object.\n *\n * @returns {void} - Sends the response with the error details to the client.\n */\nfunction sendProductionError(err: AppError, req: Request, res: Response): void {\n if (req.originalUrl.startsWith(\"/api\")) {\n if (err.isOperational)\n res.status(err.statusCode).json({\n status: err.status,\n message: err.message,\n meta: err.meta || {},\n code: err.code || \"unknown\",\n });\n else\n res.status(500).json({\n status: \"error\",\n message: \"Something went wrong!\",\n });\n\n return;\n }\n\n if (err.isOperational) {\n res.status(err.statusCode).json({\n title: \"Something went wrong!\",\n message: err.message,\n });\n return;\n }\n\n res.status(err.statusCode).json({\n title: \"Something went wrong!\",\n message: \"Please try again later.\",\n });\n}\n\n/**\n * Gracefully handles process termination by listening for SIGTERM signal.\n *\n * - In production and staging environments, it will log a shutdown message\n * and attempt to close the server gracefully.\n * - In development or non-production environments, it will immediately exit the process.\n *\n * @returns {void}\n */\nprocess.on(\"SIGTERM\", () => {\n if (\n process.env.NODE_ENV !== \"production\" &&\n process.env.NODE_ENV !== \"staging\"\n ) {\n process.exit();\n } else {\n console.error(\"SIGTERM RECEIVED in Production. Shutting down gracefully!\");\n\n server.close(() => {\n console.error(\"Process terminated!!!\");\n process.exit();\n });\n }\n});\n"]}
|
|
1
|
+
{"version":3,"file":"error-handler.controller.js","sourceRoot":"","sources":["../../../../src/modules/error-handler/error-handler.controller.ts"],"names":[],"mappings":"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","sourcesContent":["import { NextFunction, Request, Response } from \"express\";\nimport AppError from \"./utils/app-error\";\nimport * as errorControllerHelper from \"./utils/error-handler.helpers\";\nimport { server } from \"../../server\";\n\n/**\n * Error handling middleware for Express.\n *\n * This middleware function handles all errors in the Express application.\n * It checks for the environment (development or production) and sends appropriate error responses\n * based on whether the environment is production or not. It also maps specific errors such as\n * JWT errors, Prisma client errors, and database-related errors to specific helper functions for handling.\n *\n * @param {AppError} err - The error object thrown by the application.\n * @param {Request} req - The Express request object.\n * @param {Response} res - The Express response object.\n * @param {NextFunction} next - The next middleware function in the chain.\n *\n * @returns {void} - Sends the response with the error details to the client.\n */\nexport default function errorHandler(\n err: AppError,\n req: Request,\n res: Response,\n _: NextFunction\n): void {\n console.error(\"[\\x1b[31mError\\x1b[0m]:\", err);\n // Default error status\n err.statusCode = err.statusCode || 500;\n err.status = err.status || \"error\";\n\n // If the environment is not production, send detailed error information\n if (process.env.NODE_ENV !== \"production\") {\n sendDevelopmentError(err, req, res);\n return;\n }\n\n // Prepare error object for response, copying the original error's properties\n let error = { ...err, message: err.message };\n\n // Handle specific error cases (JWT errors, Prisma validation errors, etc.)\n if (err.name === \"JsonWebTokenError\")\n error = errorControllerHelper.handleJWTError();\n if (err.name === \"TokenExpiredError\")\n error = errorControllerHelper.handleJWTExpired();\n\n // Handle specific Prisma client validation errors\n if (err.name === \"PrismaClientValidationError\")\n error = errorControllerHelper.handlePrismaClientValidationError(err);\n\n // Handle Prisma database-specific error codes (P1000 to P3005)\n if (err.code === \"P1000\")\n error = errorControllerHelper.handleAuthenticationError(err);\n if (err.code === \"P1001\")\n error = errorControllerHelper.handleServerNotReachableError(err);\n if (err.code === \"P1002\")\n error = errorControllerHelper.handleConnectionTimeoutError(err);\n if (err.code === \"P1003\")\n error = errorControllerHelper.handleDatabaseNotFoundError(err);\n if (err.code === \"P2000\")\n error = errorControllerHelper.handleFieldValueTooLargeError(err);\n if (err.code === \"P2001\")\n error = errorControllerHelper.handleRecordNotFoundError(err);\n if (err.code === \"P2002\")\n error = errorControllerHelper.handleUniqueConstraintError(err);\n if (err.code === \"P2003\")\n error = errorControllerHelper.handleForeignKeyConstraintError(err);\n if (err.code === \"P2004\")\n error = errorControllerHelper.handleConstraintFailedError(err);\n if (err.code === \"P2025\")\n error = errorControllerHelper.handleNonExistingRecord(err);\n if (err.code === \"P3000\")\n error = errorControllerHelper.handleSchemaCreationFailedError(err);\n if (err.code === \"P3001\")\n error = errorControllerHelper.handleMigrationAlreadyAppliedError(err);\n if (err.code === \"P3002\")\n error = errorControllerHelper.handleMigrationScriptFailedError(err);\n if (err.code === \"P3003\")\n error = errorControllerHelper.handleVersionMismatchError(err);\n\n if (err.name === \"NetworkError\")\n error = errorControllerHelper.handleNetworkError(err);\n if (!error.isOperational) error = new AppError(\"Something went wrong!\", 500);\n\n // Send the error response for production environment\n sendProductionError(error, req, res);\n}\n\n/**\n * Sends a detailed error response in development mode.\n *\n * In development, the error response includes full error details, including\n * the stack trace and the complete error message.\n *\n * @param {AppError} err - The error object.\n * @param {Request} req - The Express request object.\n * @param {Response} res - The Express response object.\n *\n * @returns {void} - Sends the response with the error details to the client.\n */\nfunction sendDevelopmentError(\n err: AppError,\n req: Request,\n res: Response\n): void {\n if (req.originalUrl.startsWith(\"/api\"))\n res.status(err.statusCode).json({\n ...err,\n message: err.message.split(\"\\n\")[err.message.split(\"\\n\").length - 1],\n stack: err.stack?.split(\"\\n\"),\n });\n else\n res.status(err.statusCode).json({\n title: \"Something went wrong!\",\n message: err.message,\n });\n}\n\n/**\n * Sends a generic error response in production mode.\n *\n * In production, sensitive error details (such as stack traces) are not exposed\n * to the client. Only operational errors are shown with a generic message.\n *\n * @param {AppError} err - The error object.\n * @param {Request} req - The Express request object.\n * @param {Response} res - The Express response object.\n *\n * @returns {void} - Sends the response with the error details to the client.\n */\nfunction sendProductionError(err: AppError, req: Request, res: Response): void {\n if (req.originalUrl.startsWith(\"/api\")) {\n if (err.isOperational)\n res.status(err.statusCode).json({\n status: err.status,\n message: err.message,\n meta: err.meta || {},\n code: err.code || \"unknown\",\n });\n else\n res.status(500).json({\n status: \"error\",\n message: \"Something went wrong!\",\n });\n\n return;\n }\n\n if (err.isOperational) {\n res.status(err.statusCode).json({\n title: \"Something went wrong!\",\n message: err.message,\n });\n return;\n }\n\n res.status(err.statusCode).json({\n title: \"Something went wrong!\",\n message: \"Please try again later.\",\n });\n}\n\n/**\n * Gracefully handles process termination by listening for SIGTERM signal.\n *\n * - In production and staging environments, it will log a shutdown message\n * and attempt to close the server gracefully.\n * - In development or non-production environments, it will immediately exit the process.\n *\n * @returns {void}\n */\nprocess.on(\"SIGTERM\", () => {\n if (\n process.env.NODE_ENV !== \"production\" &&\n process.env.NODE_ENV !== \"staging\"\n ) {\n process.exit();\n } else {\n console.error(\"SIGTERM RECEIVED in Production. Shutting down gracefully!\");\n\n server.close(() => {\n console.error(\"Process terminated!!!\");\n process.exit();\n });\n }\n});\n"]}
|
|
@@ -1,17 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
class AppError extends Error {
|
|
4
|
-
constructor(message, statusCode, meta, code) {
|
|
5
|
-
super(message);
|
|
6
|
-
this.message = message;
|
|
7
|
-
this.statusCode = statusCode;
|
|
8
|
-
this.status = `${statusCode}`.startsWith("4") ? "fail" : "error";
|
|
9
|
-
this.isOperational = true;
|
|
10
|
-
this.code = code;
|
|
11
|
-
this.meta = meta;
|
|
12
|
-
this.missing = false;
|
|
13
|
-
Error.captureStackTrace(this, this.constructor);
|
|
14
|
-
}
|
|
15
|
-
}
|
|
16
|
-
exports.default = AppError;
|
|
17
|
-
//# sourceMappingURL=app-error.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});class AppError extends Error{constructor(t,r,s,e){super(t),this.message=t,this.statusCode=r,this.status=`${r}`.startsWith("4")?"fail":"error",this.isOperational=!0,this.code=e,this.meta=s,this.missing=!1,Error.captureStackTrace(this,this.constructor)}}exports.default=AppError;
|
|
@@ -1,12 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
const catchAsync = (fn) => async (req, res, next) => {
|
|
4
|
-
try {
|
|
5
|
-
return await fn(req, res, next);
|
|
6
|
-
}
|
|
7
|
-
catch (err) {
|
|
8
|
-
next(err);
|
|
9
|
-
}
|
|
10
|
-
};
|
|
11
|
-
exports.default = catchAsync;
|
|
12
|
-
//# sourceMappingURL=catch-async.js.map
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:!0});const catchAsync=t=>async(r,c,e)=>{try{return await t(r,c,e)}catch(s){e(s)}};exports.default=catchAsync;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catch-async.js","sourceRoot":"","sources":["../../../../../src/modules/error-handler/utils/catch-async.ts"],"names":[],"mappings":";;AAwBA,MAAM,UAAU,GACd,CAAC,EAAuB,EAAE,EAAE,CAC5B,KAAK,
|
|
1
|
+
{"version":3,"file":"catch-async.js","sourceRoot":"","sources":["../../../../../src/modules/error-handler/utils/catch-async.ts"],"names":[],"mappings":";;AAwBA,MAAM,UAAU,GACd,CAAC,EAAuB,EAAE,EAAE,CAC5B,KAAK,EACH,GAAiB,EACjB,GAAkB,EAClB,IAAuB,EACR,EAAE;IACjB,IAAI,CAAC;QACH,OAAO,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,GAAG,EAAE,IAAI,CAAC,CAAS,CAAC;IAC5C,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC,GAAG,CAAC,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAIJ,kBAAe,UAAU,CAAC","sourcesContent":["import {\n ArkosRequest,\n ArkosResponse,\n ArkosNextFunction,\n ArkosRequestHandler,\n} from \"../../../types\";\n\n/**\n * Used to wrap request handlers and middleware for automatic catch async errors and throw to next to invoke the global error handler\n *\n * @param {ArkosRequestHandler} fn - an express request handler or middleware that will be called with req, res, next, with catch attached for error handling\n * @returns\n *\n * @example\n * ```typescript\n * import { ArkosRequest, ArkosResponse, ArkosNextFunction } from 'arkos'\n *\n * export const getManyPosts = catchAsync(async\n * (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {\n * const posts = await getSomePosts()\n * res.status(200).json({ data: posts })\n * })\n * ```\n */\nconst catchAsync =\n (fn: ArkosRequestHandler) =>\n async (\n req: ArkosRequest,\n res: ArkosResponse,\n next: ArkosNextFunction\n ): Promise<void> => {\n try {\n return (await fn(req, res, next)) as void;\n } catch (err) {\n next(err);\n }\n };\n\nexport type CatchAsyncReturnType = ReturnType<typeof catchAsync>;\n\nexport default catchAsync;\n"]}
|