arkos 1.4.8-canary.1 → 1.4.10-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 +16 -220
- package/dist/cjs/app.js +14 -14
- package/dist/cjs/components/arkos-policy/index.js +38 -0
- package/dist/cjs/components/arkos-policy/index.js.map +1 -0
- package/dist/cjs/{types/arkos-prisma-input.bak.js → components/arkos-policy/types.js} +1 -1
- package/dist/cjs/components/arkos-policy/types.js.map +1 -0
- package/dist/cjs/exports/auth/index.js +1 -1
- package/dist/cjs/exports/config.js +6 -0
- package/dist/cjs/exports/config.js.map +1 -0
- package/dist/cjs/exports/controllers/index.js +2 -2
- package/dist/cjs/exports/error-handler/index.js +2 -2
- package/dist/cjs/exports/index.js +4 -4
- package/dist/cjs/exports/middlewares/index.js +1 -1
- package/dist/cjs/exports/prisma/index.js +1 -1
- package/dist/cjs/exports/prisma/index.js.map +1 -1
- package/dist/cjs/exports/services/index.js +5 -5
- package/dist/cjs/exports/utils/index.js +3 -5
- package/dist/cjs/exports/utils/index.js.map +1 -1
- package/dist/cjs/exports/validation/index.js +2 -2
- package/dist/cjs/modules/auth/auth.controller.js +7 -20
- package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
- package/dist/cjs/modules/auth/auth.router.js +10 -10
- package/dist/cjs/modules/auth/auth.service.js +26 -52
- package/dist/cjs/modules/auth/auth.service.js.map +1 -1
- package/dist/cjs/modules/auth/utils/auth-error-objects.js +1 -1
- package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +2 -2
- package/dist/cjs/modules/auth/utils/services/auth-action.service.js +4 -4
- package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +1 -1
- package/dist/cjs/modules/base/base.controller.js +9 -9
- package/dist/cjs/modules/base/base.middlewares.js +12 -15
- package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
- package/dist/cjs/modules/base/base.router.js +4 -4
- package/dist/cjs/modules/base/base.service.js +11 -25
- package/dist/cjs/modules/base/base.service.js.map +1 -1
- package/dist/cjs/modules/base/utils/error-prettifier.js +1 -1
- package/dist/cjs/modules/base/utils/helpers/base.controller.helpers.js +1 -1
- package/dist/cjs/modules/base/utils/helpers/base.middlewares.helpers.js +1 -1
- package/dist/cjs/modules/base/utils/helpers/base.router.helpers.js +9 -9
- package/dist/cjs/modules/base/utils/helpers/base.service.helpers.js +2 -2
- package/dist/cjs/modules/debugger/debugger.service.js +4 -4
- package/dist/cjs/modules/debugger/utils/loaded-components-logger.js +2 -2
- package/dist/cjs/modules/email/email.service.js +3 -6
- package/dist/cjs/modules/email/email.service.js.map +1 -1
- package/dist/cjs/modules/error-handler/error-handler.controller.js +44 -77
- package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +5 -18
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
- package/dist/cjs/modules/file-upload/file-upload.controller.js +9 -9
- package/dist/cjs/modules/file-upload/file-upload.controller.js.map +1 -1
- package/dist/cjs/modules/file-upload/file-upload.router.js +22 -22
- package/dist/cjs/modules/file-upload/file-upload.router.js.map +1 -1
- package/dist/cjs/modules/file-upload/file-upload.service.js +6 -6
- package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +3 -3
- package/dist/cjs/modules/swagger/swagger.router.js +8 -8
- package/dist/cjs/modules/swagger/utils/get-open-api-login-html.js +276 -0
- package/dist/cjs/modules/swagger/utils/get-open-api-login-html.js.map +1 -0
- package/dist/cjs/modules/swagger/utils/helpers/get-authentication-json-schema-paths.js +3 -3
- package/dist/cjs/modules/swagger/utils/helpers/get-file-upload-json-schema-paths.js +4 -4
- package/dist/cjs/modules/swagger/utils/helpers/get-swagger-default-configs.js +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-class-validator-json-schemas.js +4 -4
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-prisma-json-schemas.js +2 -2
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +3 -3
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +37 -36
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +11 -3
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js.map +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +2 -2
- package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js +34 -71
- package/dist/cjs/modules/swagger/utils/helpers/openapi-schema-converter.js.map +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +12 -12
- package/dist/cjs/paths.js +9 -0
- package/dist/cjs/paths.js.map +1 -0
- package/dist/cjs/server.js +5 -5
- package/dist/cjs/types/arkos-config/utils.js +3 -0
- package/dist/cjs/types/arkos-config/utils.js.map +1 -0
- package/dist/cjs/types/arkos.js +3 -0
- package/dist/cjs/types/arkos.js.map +1 -0
- package/dist/cjs/types/auth.js.map +1 -1
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/new-arkos-config.js.map +1 -1
- package/dist/cjs/utils/arkos-router/arkos-router-openapi-manager.js +1 -1
- package/dist/cjs/utils/arkos-router/index.js +15 -45
- package/dist/cjs/utils/arkos-router/index.js.map +1 -1
- package/dist/cjs/utils/arkos-router/route-config-validator.js +2 -2
- package/dist/cjs/utils/arkos-router/types/index.js.map +1 -1
- package/dist/cjs/utils/arkos-router/types/upload-config.js.map +1 -1
- package/dist/cjs/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js +152 -0
- package/dist/cjs/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js.map +1 -0
- package/dist/cjs/utils/arkos-router/utils/helpers/index.js +7 -60
- package/dist/cjs/utils/arkos-router/utils/helpers/index.js.map +1 -1
- package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js +9 -54
- package/dist/cjs/utils/arkos-router/utils/helpers/upload-manager.js.map +1 -1
- package/dist/cjs/utils/bundler.js +163 -0
- package/dist/cjs/utils/bundler.js.map +1 -0
- package/dist/cjs/utils/cli/build.js +25 -36
- package/dist/cjs/utils/cli/build.js.map +1 -1
- package/dist/cjs/utils/cli/dev.js +8 -7
- package/dist/cjs/utils/cli/dev.js.map +1 -1
- package/dist/cjs/utils/cli/export-auth-action.js +4 -3
- package/dist/cjs/utils/cli/export-auth-action.js.map +1 -1
- package/dist/cjs/utils/cli/generate.js +25 -99
- package/dist/cjs/utils/cli/generate.js.map +1 -1
- package/dist/cjs/utils/cli/index.js +54 -108
- package/dist/cjs/utils/cli/index.js.map +1 -1
- package/dist/cjs/utils/cli/prisma-generate.js +114 -76
- package/dist/cjs/utils/cli/prisma-generate.js.map +1 -1
- package/dist/cjs/utils/cli/remove-dir-cli.js +1 -1
- package/dist/cjs/utils/cli/start.js +5 -5
- package/dist/cjs/utils/cli/start.js.map +1 -1
- package/dist/cjs/utils/cli/utils/cli.helpers.js +3 -3
- package/dist/cjs/utils/cli/utils/runtime-cli-commander.js +5 -5
- package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js +39 -70
- package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js +187 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js.map +1 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js +181 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js.map +1 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +2 -2
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-multiple-components.js +3 -3
- package/dist/cjs/utils/cli/utils/template-generator/templates/hooks-template.js +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js +53 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/policy-template.js.map +1 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/query-options-template.js +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/router-template.js +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/service-template.js +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/zod/create-schema-template.js +106 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/zod/create-schema-template.js.map +1 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/zod/update-schema-template.js +104 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/zod/update-schema-template.js.map +1 -0
- package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js +2 -2
- package/dist/cjs/utils/cli/utils/template-generators.js +15 -24
- package/dist/cjs/utils/cli/utils/template-generators.js.map +1 -1
- package/dist/cjs/utils/cli/utils/watermark-stamper.js +4 -4
- package/dist/cjs/utils/cli/utils/watermark-stamper.js.map +1 -1
- package/dist/cjs/utils/dotenv.helpers.js +2 -2
- package/dist/cjs/utils/dynamic-loader.js +10 -10
- package/dist/cjs/utils/dynamic-loader.js.map +1 -1
- package/dist/cjs/utils/features/api.features.js +5 -5
- package/dist/cjs/utils/features/change-case.features.js +67 -0
- package/dist/cjs/utils/features/change-case.features.js.map +1 -0
- package/dist/cjs/utils/features/port-and-host-allocator.js +1 -1
- package/dist/cjs/utils/helpers/api.features.helpers.js +2 -2
- package/dist/cjs/utils/helpers/arkos-config.helpers.js +3 -3
- package/dist/cjs/utils/helpers/exit-error.js +12 -0
- package/dist/cjs/utils/helpers/exit-error.js.map +1 -0
- package/dist/cjs/utils/helpers/fs.helpers.js +1 -1
- package/dist/cjs/utils/helpers/fs.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/global.helpers.js +5 -2
- package/dist/cjs/utils/helpers/global.helpers.js.map +1 -1
- package/dist/cjs/utils/helpers/prisma.helpers.js +6 -6
- package/dist/cjs/utils/helpers/query-parser.helpers.js +1 -1
- package/dist/cjs/utils/helpers/routers.helpers.js +7 -6
- package/dist/cjs/utils/helpers/routers.helpers.js.map +1 -1
- package/dist/cjs/utils/initialize-app.js +56 -0
- package/dist/cjs/utils/initialize-app.js.map +1 -0
- package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +4 -4
- package/dist/cjs/utils/prisma/prisma-schema-parser.js +2 -66
- package/dist/cjs/utils/prisma/prisma-schema-parser.js.map +1 -1
- package/dist/cjs/utils/prisma/types.js.map +1 -1
- package/dist/cjs/utils/setup-app.js +119 -0
- package/dist/cjs/utils/setup-app.js.map +1 -0
- package/dist/cjs/utils/validate-dto.js +1 -7
- package/dist/cjs/utils/validate-dto.js.map +1 -1
- package/dist/cjs/utils/validate-schema.js +1 -66
- package/dist/cjs/utils/validate-schema.js.map +1 -1
- package/dist/esm/components/arkos-policy/index.js +32 -0
- package/dist/esm/components/arkos-policy/index.js.map +1 -0
- package/dist/esm/components/arkos-policy/types.js +2 -0
- package/dist/esm/components/arkos-policy/types.js.map +1 -0
- package/dist/esm/exports/config.js +3 -0
- package/dist/esm/exports/config.js.map +1 -0
- package/dist/esm/exports/prisma/index.js +1 -1
- package/dist/esm/exports/prisma/index.js.map +1 -1
- package/dist/esm/exports/utils/index.js +1 -2
- package/dist/esm/exports/utils/index.js.map +1 -1
- package/dist/esm/modules/auth/auth.controller.js +0 -13
- package/dist/esm/modules/auth/auth.controller.js.map +1 -1
- package/dist/esm/modules/auth/auth.service.js +14 -40
- package/dist/esm/modules/auth/auth.service.js.map +1 -1
- package/dist/esm/modules/auth/utils/services/auth-action.service.js +1 -1
- package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
- package/dist/esm/modules/base/base.middlewares.js +4 -7
- package/dist/esm/modules/base/base.middlewares.js.map +1 -1
- package/dist/esm/modules/base/base.service.js +3 -17
- package/dist/esm/modules/base/base.service.js.map +1 -1
- package/dist/esm/modules/email/email.service.js +1 -4
- package/dist/esm/modules/email/email.service.js.map +1 -1
- package/dist/esm/modules/error-handler/error-handler.controller.js +42 -75
- package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -1
- package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +4 -16
- package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
- package/dist/esm/modules/file-upload/file-upload.controller.js +2 -2
- package/dist/esm/modules/file-upload/file-upload.controller.js.map +1 -1
- package/dist/esm/modules/file-upload/file-upload.router.js +12 -12
- package/dist/esm/modules/file-upload/file-upload.router.js.map +1 -1
- package/dist/esm/modules/swagger/utils/get-open-api-login-html.js +273 -0
- package/dist/esm/modules/swagger/utils/get-open-api-login-html.js.map +1 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +32 -31
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js.map +1 -1
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +8 -0
- package/dist/esm/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js.map +1 -1
- package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js +31 -68
- package/dist/esm/modules/swagger/utils/helpers/openapi-schema-converter.js.map +1 -1
- package/dist/esm/paths.js +3 -0
- package/dist/esm/paths.js.map +1 -0
- package/dist/esm/types/arkos-config/utils.js +2 -0
- package/dist/esm/types/arkos-config/utils.js.map +1 -0
- package/dist/esm/types/arkos.js +2 -0
- package/dist/esm/types/arkos.js.map +1 -0
- package/dist/esm/types/auth.js.map +1 -1
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/new-arkos-config.js.map +1 -1
- package/dist/esm/utils/arkos-router/index.js +7 -37
- package/dist/esm/utils/arkos-router/index.js.map +1 -1
- package/dist/esm/utils/arkos-router/types/index.js.map +1 -1
- package/dist/esm/utils/arkos-router/types/upload-config.js.map +1 -1
- package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js +146 -0
- package/dist/esm/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.js.map +1 -0
- package/dist/esm/utils/arkos-router/utils/helpers/index.js +1 -53
- package/dist/esm/utils/arkos-router/utils/helpers/index.js.map +1 -1
- package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js +1 -46
- package/dist/esm/utils/arkos-router/utils/helpers/upload-manager.js.map +1 -1
- package/dist/esm/utils/bundler.js +156 -0
- package/dist/esm/utils/bundler.js.map +1 -0
- package/dist/esm/utils/cli/build.js +21 -32
- package/dist/esm/utils/cli/build.js.map +1 -1
- package/dist/esm/utils/cli/dev.js +3 -2
- package/dist/esm/utils/cli/dev.js.map +1 -1
- package/dist/esm/utils/cli/export-auth-action.js +1 -0
- package/dist/esm/utils/cli/export-auth-action.js.map +1 -1
- package/dist/esm/utils/cli/generate.js +17 -91
- package/dist/esm/utils/cli/generate.js.map +1 -1
- package/dist/esm/utils/cli/index.js +47 -101
- package/dist/esm/utils/cli/index.js.map +1 -1
- package/dist/esm/utils/cli/prisma-generate.js +111 -73
- package/dist/esm/utils/cli/prisma-generate.js.map +1 -1
- package/dist/esm/utils/cli/start.js +1 -1
- package/dist/esm/utils/cli/start.js.map +1 -1
- package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js +37 -68
- package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -1
- package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js +181 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js +175 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/policy-template.js +47 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/policy-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/zod/create-schema-template.js +100 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/zod/create-schema-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/zod/update-schema-template.js +98 -0
- package/dist/esm/utils/cli/utils/template-generator/templates/zod/update-schema-template.js.map +1 -0
- package/dist/esm/utils/cli/utils/template-generators.js +8 -17
- package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
- package/dist/esm/utils/cli/utils/watermark-stamper.js +1 -1
- package/dist/esm/utils/cli/utils/watermark-stamper.js.map +1 -1
- package/dist/esm/utils/dynamic-loader.js +2 -2
- package/dist/esm/utils/dynamic-loader.js.map +1 -1
- package/dist/esm/utils/features/change-case.features.js +31 -0
- package/dist/esm/utils/features/change-case.features.js.map +1 -0
- package/dist/esm/utils/helpers/exit-error.js +6 -0
- package/dist/esm/utils/helpers/exit-error.js.map +1 -0
- package/dist/esm/utils/helpers/fs.helpers.js +1 -1
- package/dist/esm/utils/helpers/fs.helpers.js.map +1 -1
- package/dist/esm/utils/helpers/global.helpers.js +5 -2
- package/dist/esm/utils/helpers/global.helpers.js.map +1 -1
- package/dist/esm/utils/helpers/routers.helpers.js +3 -2
- package/dist/esm/utils/helpers/routers.helpers.js.map +1 -1
- package/dist/esm/utils/initialize-app.js +50 -0
- package/dist/esm/utils/initialize-app.js.map +1 -0
- package/dist/esm/utils/prisma/prisma-schema-parser.js +0 -64
- package/dist/esm/utils/prisma/prisma-schema-parser.js.map +1 -1
- package/dist/esm/utils/prisma/types.js.map +1 -1
- package/dist/esm/utils/setup-app.js +113 -0
- package/dist/esm/utils/setup-app.js.map +1 -0
- package/dist/esm/utils/validate-dto.js +1 -4
- package/dist/esm/utils/validate-dto.js.map +1 -1
- package/dist/esm/utils/validate-schema.js +1 -62
- package/dist/esm/utils/validate-schema.js.map +1 -1
- package/dist/types/components/arkos-policy/index.d.ts +31 -0
- package/dist/types/components/arkos-policy/types.d.ts +21 -0
- package/dist/types/exports/config.d.ts +2 -0
- package/dist/types/exports/prisma/index.d.ts +1 -2
- package/dist/types/exports/utils/index.d.ts +1 -2
- package/dist/types/modules/auth/auth.service.d.ts +1 -6
- package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +1 -1
- package/dist/types/modules/base/base.service.d.ts +5 -271
- package/dist/types/modules/email/email.service.d.ts +8 -4
- package/dist/types/modules/error-handler/utils/error-handler.helpers.d.ts +0 -1
- package/dist/types/modules/file-upload/file-upload.router.d.ts +1 -2
- package/dist/types/modules/swagger/utils/get-open-api-login-html.d.ts +1 -0
- package/dist/types/modules/swagger/utils/helpers/openapi-schema-converter.d.ts +3 -27
- package/dist/types/paths.d.ts +1 -0
- package/dist/types/types/arkos-config/utils.d.ts +35 -0
- package/dist/types/types/arkos.d.ts +31 -0
- package/dist/types/types/auth.d.ts +3 -3
- package/dist/types/types/index.d.ts +6 -15
- package/dist/types/types/new-arkos-config.d.ts +3 -11
- package/dist/types/utils/arkos-router/index.d.ts +1 -3
- package/dist/types/utils/arkos-router/types/index.d.ts +21 -12
- package/dist/types/utils/arkos-router/types/upload-config.d.ts +0 -10
- package/dist/types/utils/arkos-router/utils/helpers/apply-arkos-router-proxy.d.ts +7 -0
- package/dist/types/utils/arkos-router/utils/helpers/index.d.ts +0 -4
- package/dist/types/utils/arkos-router/utils/helpers/upload-manager.d.ts +0 -32
- package/dist/types/utils/bundler.d.ts +152 -0
- package/dist/types/utils/cli/generate.d.ts +3 -13
- package/dist/types/utils/cli/utils/template-generator/templates/auth-configs-template.d.ts +1 -3
- package/dist/types/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.d.ts +2 -0
- package/dist/types/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.d.ts +2 -0
- package/dist/types/utils/cli/utils/template-generator/templates/policy-template.d.ts +2 -0
- package/dist/types/utils/cli/utils/template-generator/templates/zod/create-schema-template.d.ts +2 -0
- package/dist/types/utils/cli/utils/template-generator/templates/zod/update-schema-template.d.ts +2 -0
- package/dist/types/utils/features/change-case.features.d.ts +12 -0
- package/dist/types/utils/helpers/exit-error.d.ts +1 -0
- package/dist/types/utils/helpers/routers.helpers.d.ts +4 -4
- package/dist/types/utils/initialize-app.d.ts +2 -0
- package/dist/types/utils/prisma/prisma-schema-parser.d.ts +0 -7
- package/dist/types/utils/prisma/types.d.ts +0 -1
- package/dist/types/utils/setup-app.d.ts +2 -0
- package/dist/types/utils/validate-schema.d.ts +2 -12
- package/package.json +1 -1
- package/dist/cjs/types/arkos-prisma-input.bak.js.map +0 -1
- package/dist/cjs/utils/cli/utils/static-types-generator.js +0 -558
- package/dist/cjs/utils/cli/utils/static-types-generator.js.map +0 -1
- package/dist/esm/types/arkos-prisma-input.bak.js +0 -2
- package/dist/esm/types/arkos-prisma-input.bak.js.map +0 -1
- package/dist/esm/utils/cli/utils/static-types-generator.js +0 -553
- package/dist/esm/utils/cli/utils/static-types-generator.js.map +0 -1
- package/dist/types/types/arkos-prisma-input.bak.d.ts +0 -237
- package/dist/types/utils/cli/utils/static-types-generator.d.ts +0 -36
package/README.md
CHANGED
|
@@ -8,173 +8,11 @@
|
|
|
8
8
|

|
|
9
9
|

|
|
10
10
|
|
|
11
|
+
</div><div align="center">
|
|
12
|
+
<h2>The Express And Prisma RESTful Framework</h2>
|
|
11
13
|
</div>
|
|
12
14
|
|
|
13
|
-
|
|
14
|
-
<h2>The Express & Prisma RESTful Framework</h2>
|
|
15
|
-
<p>A tool for backend developers and teams who ship software with complex business logic under tight deadlines</p>
|
|
16
|
-
</div>
|
|
17
|
-
|
|
18
|
-
---
|
|
19
|
-
|
|
20
|
-
<div align="center">
|
|
21
|
-
|
|
22
|
-
**[Installation](https://www.arkosjs.com/docs/getting-started/installation)** •
|
|
23
|
-
**[Documentation](https://arkosjs.com/docs/intro)** •
|
|
24
|
-
**[Website](https://arkosjs.com)** •
|
|
25
|
-
**[GitHub](https://github.com/uanela/arkos)** •
|
|
26
|
-
**[Blog](https://www.arkosjs.com/blog)** •
|
|
27
|
-
**[Npm](https://www.npmjs.com/package/arkos)**
|
|
28
|
-
|
|
29
|
-
</div>
|
|
30
|
-
|
|
31
|
-
---
|
|
32
|
-
|
|
33
|
-
## Why Arkos?
|
|
34
|
-
|
|
35
|
-
Every line of boilerplate code is a missed opportunity for innovation. Arkos.js gives developers back their time so they can focus on building what truly matters—**the core business logic**.
|
|
36
|
-
|
|
37
|
-
**Perfect for:**
|
|
38
|
-
|
|
39
|
-
- Backend developers shipping complex features under tight deadlines
|
|
40
|
-
- Teams who want to scale fast without reinventing standard patterns
|
|
41
|
-
- Projects that need production-ready auth, validation, and docs from day one
|
|
42
|
-
|
|
43
|
-
## Quick Start
|
|
44
|
-
|
|
45
|
-
Get started with Arkos.js in seconds:
|
|
46
|
-
|
|
47
|
-
```bash
|
|
48
|
-
pnpm create arkos@latest my-project
|
|
49
|
-
```
|
|
50
|
-
|
|
51
|
-
**That's it!** You now have:
|
|
52
|
-
|
|
53
|
-
- Production-ready REST API
|
|
54
|
-
- JWT authentication
|
|
55
|
-
- Auto-generated Swagger docs at `/api/docs`
|
|
56
|
-
- File upload handling
|
|
57
|
-
- Input validation
|
|
58
|
-
|
|
59
|
-
## See It In Action
|
|
60
|
-
|
|
61
|
-
**1. Define your Prisma model:**
|
|
62
|
-
|
|
63
|
-
```prisma
|
|
64
|
-
model Post {
|
|
65
|
-
id String @id @default(uuid())
|
|
66
|
-
title String
|
|
67
|
-
content String
|
|
68
|
-
authorId String
|
|
69
|
-
author User @relation(fields: [authorId], references: [id])
|
|
70
|
-
createdAt DateTime @default(now())
|
|
71
|
-
updatedAt DateTime @updatedAt
|
|
72
|
-
}
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
**2. Get instant REST endpoints:**
|
|
76
|
-
|
|
77
|
-
```
|
|
78
|
-
POST /api/posts Create a new post
|
|
79
|
-
GET /api/posts List all posts
|
|
80
|
-
GET /api/posts/:id Get a specific post
|
|
81
|
-
PATCH /api/posts/:id Update a post
|
|
82
|
-
DELETE /api/posts/:id Delete a post
|
|
83
|
-
```
|
|
84
|
-
|
|
85
|
-
All with built-in **authentication**, **validation**, and **documentation**. **Zero boilerplate.**
|
|
86
|
-
|
|
87
|
-
**3. Add custom business logic with interceptors:**
|
|
88
|
-
|
|
89
|
-
```typescript
|
|
90
|
-
import { ArkosRequest, ArkosResponse, ArkosNextFunction } from "arkos";
|
|
91
|
-
import { AppError } from "arkos/error-handler";
|
|
92
|
-
|
|
93
|
-
export const beforeCreateOne = [
|
|
94
|
-
async (req: ArkosRequest, res: ArkosResponse, next: ArkosNextFunction) => {
|
|
95
|
-
// Add custom validation
|
|
96
|
-
if (req.body.title.length < 5) {
|
|
97
|
-
throw new AppErr("Title is too short", 400, "TitleTooShort");
|
|
98
|
-
}
|
|
99
|
-
|
|
100
|
-
// Enrich data
|
|
101
|
-
req.body.slug = req.body.title.toLowerCase().replace(/\s/g, "-");
|
|
102
|
-
req.body.authorId = req.user.id;
|
|
103
|
-
|
|
104
|
-
next();
|
|
105
|
-
},
|
|
106
|
-
];
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
## What You Get Out of the Box
|
|
110
|
-
|
|
111
|
-
### **Enterprise-Ready Authentication**
|
|
112
|
-
|
|
113
|
-
- JWT token management with secure refresh tokens
|
|
114
|
-
- Password hashing with bcrypt
|
|
115
|
-
- Role-based access control (RBAC)
|
|
116
|
-
- Production-ready from day one
|
|
117
|
-
|
|
118
|
-
### **Smart Data Validation**
|
|
119
|
-
|
|
120
|
-
- Automatic validation from Prisma models
|
|
121
|
-
- Zod schema integration
|
|
122
|
-
- Class-validator support
|
|
123
|
-
- Zero configuration required
|
|
124
|
-
|
|
125
|
-
### **Bulletproof Security Stack**
|
|
126
|
-
|
|
127
|
-
- Rate limiting to prevent abuse
|
|
128
|
-
- CORS configuration
|
|
129
|
-
- Input sanitization with helmet.js
|
|
130
|
-
- Comprehensive error handling
|
|
131
|
-
|
|
132
|
-
### **Self-Documenting APIs**
|
|
133
|
-
|
|
134
|
-
- Auto-generated OpenAPI/Swagger specifications
|
|
135
|
-
- Beautiful interactive Scalar UI
|
|
136
|
-
- Auto-sync with your routes
|
|
137
|
-
- JSON schemas from Zod or Prisma models
|
|
138
|
-
|
|
139
|
-
### **Intelligent File Processing**
|
|
140
|
-
|
|
141
|
-
- Multer-powered file uploads
|
|
142
|
-
- Automatic image and video optimization
|
|
143
|
-
- Smart type validation
|
|
144
|
-
- Easy local storage configuration
|
|
145
|
-
|
|
146
|
-
### **Effortless Email Integration**
|
|
147
|
-
|
|
148
|
-
- Built-in Nodemailer service
|
|
149
|
-
- Template support
|
|
150
|
-
- Clean, simple API
|
|
151
|
-
- Just focus on your content
|
|
152
|
-
|
|
153
|
-
### **Powerful Interceptors**
|
|
154
|
-
|
|
155
|
-
- Before/after request hooks
|
|
156
|
-
- Custom validation logic
|
|
157
|
-
- Data transformation
|
|
158
|
-
- Flexible middleware system
|
|
159
|
-
|
|
160
|
-
### **Unmatched Prisma Integration**
|
|
161
|
-
|
|
162
|
-
- Seamless ORM integration
|
|
163
|
-
- Automatic relation handling
|
|
164
|
-
- Write less Prisma, build more data
|
|
165
|
-
- Built on Prisma's rock-solid foundation
|
|
166
|
-
|
|
167
|
-
## Arkos vs Traditional Setup
|
|
168
|
-
|
|
169
|
-
| Task | Traditional Approach | With Arkos |
|
|
170
|
-
| ------------------------ | --------------------------- | ---------------------- |
|
|
171
|
-
| Setup JWT authentication | 2-3 hours of config | ✅ Built-in & ready |
|
|
172
|
-
| Create CRUD routes | 30 min per model | ✅ Auto-generated |
|
|
173
|
-
| Add input validation | Manual for each endpoint | ✅ Zod/Class-validator |
|
|
174
|
-
| Setup API documentation | Install + configure Swagger | ✅ Auto-generated |
|
|
175
|
-
| Configure file uploads | Multer setup + validation | ✅ Ready to use |
|
|
176
|
-
| Add security middleware | Research + implement | ✅ Pre-configured |
|
|
177
|
-
| **Total setup time** | **~8-12 hours** | **~5 minutes** |
|
|
15
|
+
Arkos.js simplifies the development of secure and scalable RESTful APIs with minimal configuration, allowing developers to focus on what really matters for their business logic.
|
|
178
16
|
|
|
179
17
|
## Features
|
|
180
18
|
|
|
@@ -190,76 +28,34 @@ export const beforeCreateOne = [
|
|
|
190
28
|
|
|
191
29
|
**BETA VERSION**
|
|
192
30
|
|
|
193
|
-
##
|
|
194
|
-
|
|
195
|
-
> "Arkos.js changed how I work on the backend: with a Prisma model I already get CRUD routes, auth, and validation out-of-the-box — I saved a lot of time and could focus on business logic."
|
|
196
|
-
> **— Gelson Matavela, Founder / Grupo Vergui**
|
|
197
|
-
|
|
198
|
-
> "It removes boilerplate and provides a clean structure to build products. Built-in auth is powerful and ready. Automatic CRUD and docs save time, while interceptors allow flexible business logic."
|
|
199
|
-
> **— Augusto Domingos, Tech Lead / DSAI For Moz**
|
|
200
|
-
|
|
201
|
-
> "With Arkos.js, I can build backends in just a few minutes. It removes the boilerplate and lets me focus entirely on the core logic. Fast, simple, and incredibly productive."
|
|
202
|
-
> **— Niuro Langa, Software Developer / SparkTech**
|
|
203
|
-
|
|
204
|
-
[See more testimonials →](https://arkosjs.com)
|
|
205
|
-
|
|
206
|
-
## Documentation
|
|
207
|
-
|
|
208
|
-
For comprehensive guides, API reference, and examples, visit our [official documentation](https://arkosjs.com/docs/intro).
|
|
209
|
-
|
|
210
|
-
**Quick Links:**
|
|
211
|
-
|
|
212
|
-
- [Getting Started Guide](https://arkosjs.com/docs/intro)
|
|
213
|
-
- [Authentication Setup](https://arkosjs.com/docs/core-concepts/authentication-system)
|
|
214
|
-
- [Using Interceptors](https://arkosjs.com/docs/core-concepts/interceptors)
|
|
215
|
-
- [File Uploads](https://arkosjs.com/docs/core-concepts/file-uploads)
|
|
216
|
-
- [Validation](https://arkosjs.com/docs/core-concepts/request-data-validation)
|
|
217
|
-
- [Email Service](https://arkosjs.com/docs/core-concepts/sending-emails)
|
|
218
|
-
|
|
219
|
-
## Getting Nightly Updates
|
|
31
|
+
## Quick Start
|
|
220
32
|
|
|
221
|
-
|
|
33
|
+
Get started with Arkos.js in seconds:
|
|
222
34
|
|
|
223
35
|
```bash
|
|
224
|
-
|
|
36
|
+
npm create arkos@latest my-project
|
|
225
37
|
```
|
|
226
38
|
|
|
227
|
-
##
|
|
228
|
-
|
|
229
|
-
Arkos.js is built on top of industry-leading tools:
|
|
230
|
-
|
|
231
|
-
- **[Express](https://expressjs.com/)** - Fast, unopinionated, minimalist web framework for Node.js
|
|
232
|
-
- **[Prisma](https://www.prisma.io/)** - Next-generation ORM for Node.js and TypeScript
|
|
233
|
-
- **[Node.js](https://nodejs.org/)** - JavaScript runtime built on Chrome's V8 engine
|
|
234
|
-
|
|
235
|
-
## Support & Contributing
|
|
236
|
-
|
|
237
|
-
- **Documentation:** [arkosjs.com/docs](https://arkosjs.com/docs/intro)
|
|
238
|
-
- **Bug Reports:** [GitHub Issues](https://github.com/uanela/arkos/issues)
|
|
239
|
-
- **Feature Requests:** Open a GitHub issue
|
|
240
|
-
- **Contact:** [uanelaluiswayne@gmail.com](mailto:uanelaluiswayne@gmail.com)
|
|
39
|
+
## Documentation
|
|
241
40
|
|
|
242
|
-
|
|
41
|
+
For comprehensive guides, API reference, and examples, visit our [official documentation](https://arkosjs.com/docs/intro).
|
|
243
42
|
|
|
244
43
|
## License
|
|
245
44
|
|
|
246
45
|
This project is licensed under the MIT License - see the [LICENSE](LICENSE) file for details.
|
|
247
46
|
|
|
248
|
-
|
|
47
|
+
## Support
|
|
249
48
|
|
|
250
|
-
|
|
49
|
+
For questions, bug reports, or feature requests, please open a GitHub issue or contact [Uanela Como](mailto:uanelaluiswayne@gmail.com).
|
|
251
50
|
|
|
252
|
-
|
|
253
|
-
**[Documentation](https://arkosjs.com/docs/intro)** •
|
|
254
|
-
**[Website](https://arkosjs.com)** •
|
|
255
|
-
**[GitHub](https://github.com/uanela/arkos)** •
|
|
256
|
-
**[Blog](https://www.arkosjs.com/blog)** •
|
|
257
|
-
**[Npm](https://www.npmjs.com/package/arkos)**
|
|
51
|
+
## Getting Night Updates
|
|
258
52
|
|
|
259
|
-
|
|
53
|
+
You can get the latest feature we are testing before realeasing them:
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
npm create arkos@canary my-project
|
|
57
|
+
```
|
|
260
58
|
|
|
261
59
|
---
|
|
262
60
|
|
|
263
61
|
_The name "Arkos" comes from the Greek word "ἀρχή" (Arkhē), meaning "beginning" or "foundation", reflecting our goal of providing a solid foundation for backend development._
|
|
264
|
-
|
|
265
|
-
</div>
|
package/dist/cjs/app.js
CHANGED
|
@@ -41,22 +41,22 @@ exports.bootstrap = bootstrap;
|
|
|
41
41
|
const express_1 = __importStar(require("express"));
|
|
42
42
|
const cors_1 = __importDefault(require("cors"));
|
|
43
43
|
const cookie_parser_1 = __importDefault(require("cookie-parser"));
|
|
44
|
-
const auth_router_1 = require("./modules/auth/auth.router");
|
|
45
|
-
const base_router_1 = require("./modules/base/base.router");
|
|
46
|
-
const error_handler_controller_1 = __importDefault(require("./modules/error-handler/error-handler.controller"));
|
|
44
|
+
const auth_router_1 = require("./modules/auth/auth.router.js");
|
|
45
|
+
const base_router_1 = require("./modules/base/base.router.js");
|
|
46
|
+
const error_handler_controller_1 = __importDefault(require("./modules/error-handler/error-handler.controller.js"));
|
|
47
47
|
const express_rate_limit_1 = require("express-rate-limit");
|
|
48
48
|
const compression_1 = __importDefault(require("compression"));
|
|
49
|
-
const base_middlewares_1 = require("./modules/base/base.middlewares");
|
|
50
|
-
const prisma_helpers_1 = require("./utils/helpers/prisma.helpers");
|
|
51
|
-
const file_upload_router_1 = require("./modules/file-upload/file-upload.router");
|
|
52
|
-
const query_parser_helpers_1 = require("./utils/helpers/query-parser.helpers");
|
|
53
|
-
const deepmerge_helper_1 = __importDefault(require("./utils/helpers/deepmerge.helper"));
|
|
54
|
-
const swagger_router_1 = require("./modules/swagger/swagger.router");
|
|
55
|
-
const dynamic_loader_1 = require("./utils/dynamic-loader");
|
|
56
|
-
const error_handler_1 = require("./exports/error-handler");
|
|
57
|
-
const debugger_service_1 = __importDefault(require("./modules/debugger/debugger.service"));
|
|
58
|
-
const exports_1 = require("./exports");
|
|
59
|
-
const arkos_config_helpers_1 = require("./utils/helpers/arkos-config.helpers");
|
|
49
|
+
const base_middlewares_1 = require("./modules/base/base.middlewares.js");
|
|
50
|
+
const prisma_helpers_1 = require("./utils/helpers/prisma.helpers.js");
|
|
51
|
+
const file_upload_router_1 = require("./modules/file-upload/file-upload.router.js");
|
|
52
|
+
const query_parser_helpers_1 = require("./utils/helpers/query-parser.helpers.js");
|
|
53
|
+
const deepmerge_helper_1 = __importDefault(require("./utils/helpers/deepmerge.helper.js"));
|
|
54
|
+
const swagger_router_1 = require("./modules/swagger/swagger.router.js");
|
|
55
|
+
const dynamic_loader_1 = require("./utils/dynamic-loader.js");
|
|
56
|
+
const error_handler_1 = require("./exports/error-handler/index.js");
|
|
57
|
+
const debugger_service_1 = __importDefault(require("./modules/debugger/debugger.service.js"));
|
|
58
|
+
const exports_1 = require("./exports/index.js");
|
|
59
|
+
const arkos_config_helpers_1 = require("./utils/helpers/arkos-config.helpers.js");
|
|
60
60
|
exports.app = (0, express_1.default)();
|
|
61
61
|
const knowModulesRouter = (0, express_1.Router)();
|
|
62
62
|
async function bootstrap(initConfig) {
|
|
@@ -0,0 +1,38 @@
|
|
|
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.ArkosPolicy = ArkosPolicy;
|
|
7
|
+
const auth_service_1 = __importDefault(require("../../modules/auth/auth.service.js"));
|
|
8
|
+
function ArkosPolicy(resource) {
|
|
9
|
+
return buildPolicy(resource, {});
|
|
10
|
+
}
|
|
11
|
+
function buildPolicy(resource, store) {
|
|
12
|
+
const rule = (action, config) => {
|
|
13
|
+
const newStore = { ...store, [action]: config };
|
|
14
|
+
return buildPolicy(resource, newStore);
|
|
15
|
+
};
|
|
16
|
+
const actionEntries = Object.fromEntries(Object.entries(store).flatMap(([action, config]) => {
|
|
17
|
+
const authEntry = {
|
|
18
|
+
resource,
|
|
19
|
+
action,
|
|
20
|
+
rule: config,
|
|
21
|
+
};
|
|
22
|
+
const checker = auth_service_1.default.permission(action, resource, {
|
|
23
|
+
[action]: config || {},
|
|
24
|
+
});
|
|
25
|
+
const canKey = `can${action.charAt(0).toUpperCase()}${action.slice(1)}`;
|
|
26
|
+
return [
|
|
27
|
+
[action, authEntry],
|
|
28
|
+
[canKey, checker],
|
|
29
|
+
];
|
|
30
|
+
}));
|
|
31
|
+
return {
|
|
32
|
+
__type: "ArkosPolicy",
|
|
33
|
+
resource,
|
|
34
|
+
rule,
|
|
35
|
+
...actionEntries,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/arkos-policy/index.ts"],"names":[],"mappings":";;;;;AAuCA,kCAIC;AAnCD,mFAA0D;AA+B1D,SAAgB,WAAW,CACzB,QAAmB;IAEnB,OAAO,WAAW,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACnC,CAAC;AAED,SAAS,WAAW,CAClB,QAAmB,EACnB,KAAsC;IAEtC,MAAM,IAAI,GAAG,CACX,MAAe,EACf,MAAuB,EAC2B,EAAE;QACpD,MAAM,QAAQ,GAAG,EAAE,GAAG,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;QAChD,OAAO,WAAW,CAAgC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACxE,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,MAAM,CAAC,WAAW,CACtC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,EAAE;QACjD,MAAM,SAAS,GAA8C;YAC3D,QAAQ;YACR,MAAM;YACN,IAAI,EAAE,MAAM;SACb,CAAC;QAEF,MAAM,OAAO,GAAkB,sBAAW,CAAC,UAAU,CAAC,MAAM,EAAE,QAAQ,EAAE;YACtE,CAAC,MAAM,CAAC,EAAE,MAAM,IAAI,EAAE;SACvB,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAExE,OAAO;YACL,CAAC,MAAM,EAAE,SAAS,CAAC;YACnB,CAAC,MAAM,EAAE,OAAO,CAAC;SAClB,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IAEF,OAAO;QACL,MAAM,EAAE,aAAsB;QAC9B,QAAQ;QACR,IAAI;QACJ,GAAG,aAAa;KACoC,CAAC;AACzD,CAAC","sourcesContent":["import { User } from \"../../types\";\nimport {\n ArkosPolicyRule,\n IArkosPolicy,\n PolicyAuthEntry,\n PolicyChecker,\n PolicyWithActions,\n} from \"./types\";\nimport authService from \"../../modules/auth/auth.service\";\n\n/**\n * Creates a typed policy for a Prisma model resource.\n *\n * Each `.rule()` call registers an action and returns the policy\n * with a typed `can{Action}` permission checker and a typed `{Action}`\n * entry — both passable to the `authentication` field on `ArkosRouteHook`\n * and `ArkosRouter`, and callable for fine-grained permission checks.\n *\n * @param resource - The resource name in kebab-case (e.g. `\"user\"`, `\"blog-post\"`)\n *\n * @example\n * ```ts\n * const userPolicy = ArkosPolicy(\"user\")\n * .rule(\"Create\", [\"Admin\", \"Editor\"])\n * .rule(\"View\", \"*\")\n * .rule(\"Delete\", [\"Admin\"]);\n *\n * // Pass to authentication field\n * userRouter.post({ path: \"/users\", authentication: userPolicy.Create });\n * userRouteHook.deleteOne({ authentication: userPolicy.Delete });\n *\n * // Fine-grained check\n * if (userPolicy.canCreate(req.user)) { ... }\n *\n * export default userPolicy;\n * ```\n *\n * @see {@link https://www.arkosjs.com/docs/api-referency/arkos-policy}\n */\nexport function ArkosPolicy<TResource extends string>(\n resource: TResource\n): IArkosPolicy<TResource, never> {\n return buildPolicy(resource, {});\n}\n\nfunction buildPolicy<TResource extends string, TActions extends string>(\n resource: TResource,\n store: Record<string, ArkosPolicyRule>\n): PolicyWithActions<TResource, TActions> {\n const rule = <TAction extends string>(\n action: TAction,\n config: ArkosPolicyRule\n ): PolicyWithActions<TResource, TActions | TAction> => {\n const newStore = { ...store, [action]: config };\n return buildPolicy<TResource, TActions | TAction>(resource, newStore);\n };\n\n const actionEntries = Object.fromEntries(\n Object.entries(store).flatMap(([action, config]) => {\n const authEntry: PolicyAuthEntry<TResource, typeof action> = {\n resource,\n action,\n rule: config,\n };\n\n const checker: PolicyChecker = authService.permission(action, resource, {\n [action]: config || {},\n });\n\n const canKey = `can${action.charAt(0).toUpperCase()}${action.slice(1)}`;\n\n return [\n [action, authEntry],\n [canKey, checker],\n ];\n })\n );\n\n return {\n __type: \"ArkosPolicy\" as const,\n resource,\n rule,\n ...actionEntries,\n } as unknown as PolicyWithActions<TResource, TActions>;\n}\n"]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/components/arkos-policy/types.ts"],"names":[],"mappings":"","sourcesContent":["import { User } from \"../../types\";\nimport { DetailedAccessControlRule } from \"../../types/auth\";\n\nexport type ArkosPolicyRule = string[] | DetailedAccessControlRule | \"*\";\n\nexport type PolicyAuthEntry<\n TResource extends string,\n TAction extends string,\n> = {\n readonly resource: TResource;\n readonly action: TAction;\n readonly rule: ArkosPolicyRule;\n};\n\nexport type PolicyChecker = (user?: User) => Promise<boolean>;\n\ntype CanKey<TAction extends string> = `can${Capitalize<TAction>}`;\n\nexport type PolicyWithActions<\n TResource extends string,\n TActions extends string,\n> = IArkosPolicy<TResource, TActions> & {\n [K in TActions]: PolicyAuthEntry<TResource, K>;\n} & {\n [K in CanKey<TActions>]: PolicyChecker;\n};\n\nexport interface IArkosPolicy<\n TResource extends string,\n TActions extends string = never,\n> {\n readonly __type: \"ArkosPolicy\";\n readonly resource: TResource;\n\n rule<TAction extends string>(\n action: TAction,\n config?: ArkosPolicyRule\n ): PolicyWithActions<TResource, TActions | TAction>;\n}\n"]}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.defaultExcludedUserFields = void 0;
|
|
4
|
-
var auth_controller_1 = require("./../../modules/auth/auth.controller");
|
|
4
|
+
var auth_controller_1 = require("./../../modules/auth/auth.controller.js");
|
|
5
5
|
Object.defineProperty(exports, "defaultExcludedUserFields", { enumerable: true, get: function () { return auth_controller_1.defaultExcludedUserFields; } });
|
|
6
6
|
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.defineConfig = void 0;
|
|
4
|
+
const define_config_1 = require("../utils/define-config.js");
|
|
5
|
+
Object.defineProperty(exports, "defineConfig", { enumerable: true, get: function () { return define_config_1.defineConfig; } });
|
|
6
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/exports/config.ts"],"names":[],"mappings":";;;AAAA,0DAAsD;AAE7C,6FAFA,4BAAY,OAEA","sourcesContent":["import { defineConfig } from \"../utils/define-config\";\n\nexport { defineConfig };\n"]}
|
|
@@ -34,9 +34,9 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.BaseController = exports.FileUploadController = exports.fileUploadController = void 0;
|
|
37
|
-
const base_controller_1 = require("./../../modules/base/base.controller");
|
|
37
|
+
const base_controller_1 = require("./../../modules/base/base.controller.js");
|
|
38
38
|
Object.defineProperty(exports, "BaseController", { enumerable: true, get: function () { return base_controller_1.BaseController; } });
|
|
39
|
-
const file_upload_controller_1 = __importStar(require("../../modules/file-upload/file-upload.controller"));
|
|
39
|
+
const file_upload_controller_1 = __importStar(require("../../modules/file-upload/file-upload.controller.js"));
|
|
40
40
|
exports.fileUploadController = file_upload_controller_1.default;
|
|
41
41
|
Object.defineProperty(exports, "FileUploadController", { enumerable: true, get: function () { return file_upload_controller_1.FileUploadController; } });
|
|
42
42
|
//# sourceMappingURL=index.js.map
|
|
@@ -4,8 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.AppError = exports.catchAsync = void 0;
|
|
7
|
-
const catch_async_1 = __importDefault(require("../../modules/error-handler/utils/catch-async"));
|
|
7
|
+
const catch_async_1 = __importDefault(require("../../modules/error-handler/utils/catch-async.js"));
|
|
8
8
|
exports.catchAsync = catch_async_1.default;
|
|
9
|
-
const app_error_1 = __importDefault(require("../../modules/error-handler/utils/app-error"));
|
|
9
|
+
const app_error_1 = __importDefault(require("../../modules/error-handler/utils/app-error.js"));
|
|
10
10
|
exports.AppError = app_error_1.default;
|
|
11
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -4,13 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ArkosRouter = exports.getArkosConfig = exports.loadEnvironmentVariables = exports.BaseController = void 0;
|
|
7
|
-
const base_controller_1 = require("./../modules/base/base.controller");
|
|
7
|
+
const base_controller_1 = require("./../modules/base/base.controller.js");
|
|
8
8
|
Object.defineProperty(exports, "BaseController", { enumerable: true, get: function () { return base_controller_1.BaseController; } });
|
|
9
|
-
const server_1 = require("../server");
|
|
9
|
+
const server_1 = require("../server.js");
|
|
10
10
|
Object.defineProperty(exports, "getArkosConfig", { enumerable: true, get: function () { return server_1.getArkosConfig; } });
|
|
11
|
-
const arkos_router_1 = __importDefault(require("../utils/arkos-router"));
|
|
11
|
+
const arkos_router_1 = __importDefault(require("../utils/arkos-router/index.js"));
|
|
12
12
|
exports.ArkosRouter = arkos_router_1.default;
|
|
13
|
-
const dotenv_helpers_1 = require("../utils/dotenv.helpers");
|
|
13
|
+
const dotenv_helpers_1 = require("../utils/dotenv.helpers.js");
|
|
14
14
|
Object.defineProperty(exports, "loadEnvironmentVariables", { enumerable: true, get: function () { return dotenv_helpers_1.loadEnvironmentVariables; } });
|
|
15
15
|
const arkos = {
|
|
16
16
|
init: server_1.initApp,
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.handleRequestBodyValidationAndTransformation = exports.addPrismaQueryOptionsToRequest = void 0;
|
|
4
|
-
var base_middlewares_1 = require("../../modules/base/base.middlewares");
|
|
4
|
+
var base_middlewares_1 = require("../../modules/base/base.middlewares.js");
|
|
5
5
|
Object.defineProperty(exports, "addPrismaQueryOptionsToRequest", { enumerable: true, get: function () { return base_middlewares_1.addPrismaQueryOptionsToRequest; } });
|
|
6
6
|
Object.defineProperty(exports, "handleRequestBodyValidationAndTransformation", { enumerable: true, get: function () { return base_middlewares_1.handleRequestBodyValidationAndTransformation; } });
|
|
7
7
|
//# sourceMappingURL=index.js.map
|
|
@@ -5,7 +5,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.prismaSchemaParser = void 0;
|
|
7
7
|
exports.getPrismaModels = getPrismaModels;
|
|
8
|
-
const prisma_schema_parser_1 = __importDefault(require("../../utils/prisma/prisma-schema-parser"));
|
|
8
|
+
const prisma_schema_parser_1 = __importDefault(require("../../utils/prisma/prisma-schema-parser.js"));
|
|
9
9
|
exports.prismaSchemaParser = prisma_schema_parser_1.default;
|
|
10
10
|
function getPrismaModels() {
|
|
11
11
|
return prisma_schema_parser_1.default.models.map(({ name }) => name);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/exports/prisma/index.ts"],"names":[],"mappings":";;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/exports/prisma/index.ts"],"names":[],"mappings":";;;;;;AAGA,0CAEC;AAJD,mGAAyE;AAK5C,6BALtB,8BAAkB,CAKsB;AAH/C,SAAgB,eAAe;IAC7B,OAAO,8BAAkB,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;AAC3D,CAAC","sourcesContent":["import { PrismaQueryOptions, AuthPrismaQueryOptions } from \"../../types\";\nimport prismaSchemaParser from \"../../utils/prisma/prisma-schema-parser\";\n\nexport function getPrismaModels() {\n return prismaSchemaParser.models.map(({ name }) => name);\n}\nexport { PrismaQueryOptions, prismaSchemaParser, AuthPrismaQueryOptions };\n"]}
|
|
@@ -37,17 +37,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
39
|
exports.FileUploadService = exports.getFileUploadServices = exports.EmailService = exports.emailService = exports.BaseService = exports.authActionService = exports.AuthService = exports.authService = void 0;
|
|
40
|
-
const file_upload_service_1 = require("../../modules/file-upload/file-upload.service");
|
|
40
|
+
const file_upload_service_1 = require("../../modules/file-upload/file-upload.service.js");
|
|
41
41
|
Object.defineProperty(exports, "getFileUploadServices", { enumerable: true, get: function () { return file_upload_service_1.getFileUploadServices; } });
|
|
42
42
|
Object.defineProperty(exports, "FileUploadService", { enumerable: true, get: function () { return file_upload_service_1.FileUploadService; } });
|
|
43
|
-
const auth_service_1 = __importStar(require("../../modules/auth/auth.service"));
|
|
43
|
+
const auth_service_1 = __importStar(require("../../modules/auth/auth.service.js"));
|
|
44
44
|
exports.authService = auth_service_1.default;
|
|
45
45
|
Object.defineProperty(exports, "AuthService", { enumerable: true, get: function () { return auth_service_1.AuthService; } });
|
|
46
|
-
const email_service_1 = __importStar(require("../../modules/email/email.service"));
|
|
46
|
+
const email_service_1 = __importStar(require("../../modules/email/email.service.js"));
|
|
47
47
|
exports.emailService = email_service_1.default;
|
|
48
48
|
Object.defineProperty(exports, "EmailService", { enumerable: true, get: function () { return email_service_1.EmailService; } });
|
|
49
|
-
const base_service_1 = require("../../modules/base/base.service");
|
|
49
|
+
const base_service_1 = require("../../modules/base/base.service.js");
|
|
50
50
|
Object.defineProperty(exports, "BaseService", { enumerable: true, get: function () { return base_service_1.BaseService; } });
|
|
51
|
-
const auth_action_service_1 = __importDefault(require("../../modules/auth/utils/services/auth-action.service"));
|
|
51
|
+
const auth_action_service_1 = __importDefault(require("../../modules/auth/utils/services/auth-action.service.js"));
|
|
52
52
|
exports.authActionService = auth_action_service_1.default;
|
|
53
53
|
//# sourceMappingURL=index.js.map
|
|
@@ -17,10 +17,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
17
17
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
18
18
|
};
|
|
19
19
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
20
|
-
exports.
|
|
21
|
-
__exportStar(require("../../utils/helpers/change-case.helpers"), exports);
|
|
22
|
-
const api_features_1 = __importDefault(require("../../utils/features/api.features"));
|
|
20
|
+
exports.APIFeatures = void 0;
|
|
21
|
+
__exportStar(require("../../utils/helpers/change-case.helpers.js"), exports);
|
|
22
|
+
const api_features_1 = __importDefault(require("../../utils/features/api.features.js"));
|
|
23
23
|
exports.APIFeatures = api_features_1.default;
|
|
24
|
-
const dotenv_helpers_1 = require("../../utils/dotenv.helpers");
|
|
25
|
-
Object.defineProperty(exports, "loadEnvironmentVariables", { enumerable: true, get: function () { return dotenv_helpers_1.loadEnvironmentVariables; } });
|
|
26
24
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/exports/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,0EAAwD;AAExD,qFAA4D;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/exports/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,0EAAwD;AAExD,qFAA4D;AAEnD,sBAFF,sBAAW,CAEE","sourcesContent":["export * from \"../../utils/helpers/change-case.helpers\";\nexport { MsDuration } from \"../../modules/auth/utils/helpers/auth.controller.helpers\";\nimport APIFeatures from \"../../utils/features/api.features\";\n\nexport { APIFeatures };\n"]}
|
|
@@ -4,8 +4,8 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.validateSchema = exports.validateDto = void 0;
|
|
7
|
-
const validate_dto_1 = __importDefault(require("../../utils/validate-dto"));
|
|
7
|
+
const validate_dto_1 = __importDefault(require("../../utils/validate-dto.js"));
|
|
8
8
|
exports.validateDto = validate_dto_1.default;
|
|
9
|
-
const validate_schema_1 = __importDefault(require("../../utils/validate-schema"));
|
|
9
|
+
const validate_schema_1 = __importDefault(require("../../utils/validate-schema.js"));
|
|
10
10
|
exports.validateSchema = validate_schema_1.default;
|
|
11
11
|
//# sourceMappingURL=index.js.map
|
|
@@ -4,13 +4,13 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.authControllerFactory = exports.defaultExcludedUserFields = void 0;
|
|
7
|
-
const catch_async_1 = __importDefault(require("../error-handler/utils/catch-async"));
|
|
8
|
-
const app_error_1 = __importDefault(require("../error-handler/utils/app-error"));
|
|
9
|
-
const auth_service_1 = __importDefault(require("./auth.service"));
|
|
10
|
-
const base_service_1 = require("../base/base.service");
|
|
11
|
-
const server_1 = require("../../server");
|
|
12
|
-
const auth_controller_helpers_1 = require("./utils/helpers/auth.controller.helpers");
|
|
13
|
-
const auth_action_service_1 = __importDefault(require("./utils/services/auth-action.service"));
|
|
7
|
+
const catch_async_1 = __importDefault(require("../error-handler/utils/catch-async.js"));
|
|
8
|
+
const app_error_1 = __importDefault(require("../error-handler/utils/app-error.js"));
|
|
9
|
+
const auth_service_1 = __importDefault(require("./auth.service.js"));
|
|
10
|
+
const base_service_1 = require("../base/base.service.js");
|
|
11
|
+
const server_1 = require("../../server.js");
|
|
12
|
+
const auth_controller_helpers_1 = require("./utils/helpers/auth.controller.helpers.js");
|
|
13
|
+
const auth_action_service_1 = __importDefault(require("./utils/services/auth-action.service.js"));
|
|
14
14
|
exports.defaultExcludedUserFields = {
|
|
15
15
|
password: false,
|
|
16
16
|
};
|
|
@@ -183,23 +183,10 @@ const authControllerFactory = (interceptors = {}) => {
|
|
|
183
183
|
password: await auth_service_1.default.hashPassword(newPassword),
|
|
184
184
|
passwordChangedAt: new Date(Date.now()).toISOString(),
|
|
185
185
|
});
|
|
186
|
-
const token = auth_service_1.default.signJwtToken(user.id);
|
|
187
|
-
const cookieOptions = auth_service_1.default.getJwtCookieOptions(req);
|
|
188
|
-
const authConfigs = (0, server_1.getArkosConfig)()?.authentication;
|
|
189
186
|
const responseData = {
|
|
190
187
|
status: "success",
|
|
191
188
|
message: "Password updated successfully!",
|
|
192
189
|
};
|
|
193
|
-
if (authConfigs?.login?.sendAccessTokenThrough === "response-only" ||
|
|
194
|
-
authConfigs?.login?.sendAccessTokenThrough === "both" ||
|
|
195
|
-
!authConfigs?.login?.sendAccessTokenThrough) {
|
|
196
|
-
responseData.accessToken = token;
|
|
197
|
-
}
|
|
198
|
-
if (authConfigs?.login?.sendAccessTokenThrough === "cookie-only" ||
|
|
199
|
-
authConfigs?.login?.sendAccessTokenThrough === "both" ||
|
|
200
|
-
!authConfigs?.login?.sendAccessTokenThrough)
|
|
201
|
-
res.cookie("arkos_access_token", token, cookieOptions);
|
|
202
|
-
req.accessToken = token;
|
|
203
190
|
if (interceptors?.afterUpdatePassword) {
|
|
204
191
|
res.originalData = responseData;
|
|
205
192
|
req.additionalData = { user };
|