arkos 1.2.15-test.2 → 1.2.15-test.3
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/dist/cjs/app.js +1 -1
- package/dist/cjs/exports/controllers/index.js +1 -1
- package/dist/cjs/exports/error-handler/index.js +1 -1
- package/dist/cjs/exports/services/index.js +1 -1
- package/dist/cjs/exports/utils/index.js +1 -1
- package/dist/cjs/exports/validation/index.js +1 -1
- package/dist/cjs/modules/auth/auth.controller.js +1 -1
- package/dist/cjs/modules/auth/auth.router.js +1 -1
- package/dist/cjs/modules/auth/auth.service.js +1 -1
- package/dist/cjs/modules/auth/utils/helpers/auth.controller.helpers.js +1 -1
- package/dist/cjs/modules/base/base.controller.js +1 -1
- package/dist/cjs/modules/base/base.middlewares.js +1 -1
- package/dist/cjs/modules/base/base.router.js +1 -1
- package/dist/cjs/modules/base/base.service.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 +1 -1
- package/dist/cjs/modules/email/email.service.js +1 -1
- package/dist/cjs/modules/error-handler/error-handler.controller.js +1 -1
- package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +1 -1
- package/dist/cjs/modules/file-upload/file-upload.controller.js +1 -1
- package/dist/cjs/modules/file-upload/file-upload.router.js +1 -1
- package/dist/cjs/modules/file-upload/file-upload.service.js +1 -1
- package/dist/cjs/modules/file-upload/utils/helpers/file-upload.helpers.js +1 -1
- package/dist/cjs/modules/swagger/swagger.router.js +1 -1
- 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-prisma-json-schemas.js +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths.js +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths.js +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +1 -1
- package/dist/cjs/modules/swagger/utils/helpers/swagger.router.helpers.js +1 -1
- package/dist/cjs/paths.js +1 -1
- package/dist/cjs/server.js +1 -1
- package/dist/cjs/utils/cli/build.js +1 -1
- package/dist/cjs/utils/cli/dev.js +1 -1
- package/dist/cjs/utils/cli/generate.js +1 -1
- package/dist/cjs/utils/cli/start.js +1 -1
- package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -1
- package/dist/cjs/utils/cli/utils/template-generator/templates/generate-router-template.js +1 -1
- package/dist/cjs/utils/dotenv.helpers.js +1 -1
- package/dist/cjs/utils/features/api.features.js +1 -1
- package/dist/cjs/utils/features/change-case.features.js +1 -1
- package/dist/cjs/utils/features/port-and-host-allocator.js +1 -1
- package/dist/cjs/utils/helpers/api.features.helpers.js +1 -1
- package/dist/cjs/utils/helpers/fs.helpers.js +1 -1
- package/dist/cjs/utils/helpers/global.helpers.js +1 -1
- package/dist/cjs/utils/helpers/models.helpers.js +1 -1
- package/dist/cjs/utils/helpers/prisma.helpers.js +1 -1
- package/dist/cjs/utils/helpers/routers.helpers.js +1 -1
- package/dist/cjs/utils/prisma/enhaced-prisma-json-schema-generator.js +1 -1
- package/dist/cjs/utils/validate-dto.js +1 -1
- package/dist/cjs/utils/validate-schema.js +1 -1
- package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
- package/package.json +1 -2
package/dist/cjs/app.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.app=void 0,exports.bootstrap=bootstrap;const express_1=__importDefault(require("express")),cors_1=__importDefault(require("cors")),cookie_parser_1=__importDefault(require("cookie-parser")),auth_router_1=require("./modules/auth/auth.router"),base_router_1=require("./modules/base/base.router"),error_handler_controller_1=__importDefault(require("./modules/error-handler/error-handler.controller")),express_rate_limit_1=require("express-rate-limit"),compression_1=__importDefault(require("compression")),base_middlewares_1=require("./modules/base/base.middlewares"),prisma_helpers_1=require("./utils/helpers/prisma.helpers"),file_upload_router_1=require("./modules/file-upload/file-upload.router"),query_parser_helpers_1=require("./utils/helpers/query-parser.helpers"),deepmerge_helper_1=__importDefault(require("./utils/helpers/deepmerge.helper")),swagger_router_1=require("./modules/swagger/swagger.router");exports.app=(0,express_1.default)();async function bootstrap(e){await(0,prisma_helpers_1.loadPrismaModule)(),e?.configureApp&&await e.configureApp(exports.app);const i=e?.middlewares,t=i?.disable||[],a=i?.replace||{};t?.includes?.("compression")||exports.app.use(a.compression||(0,compression_1.default)(e?.compressionOptions)),t?.includes?.("global-rate-limit")||exports.app.use(a.globalRateLimit||(0,express_rate_limit_1.rateLimit)((0,deepmerge_helper_1.default)({windowMs:60*1e3,limit:500,standardHeaders:"draft-7",legacyHeaders:!1,handler:(r,s)=>{s.status(429).json({message:"Too many requests, please try again later"})}},e?.globalRequestRateLimitOptions||{}))),t?.includes?.("cors")||exports.app.use(a.cors||(0,cors_1.default)(e?.cors?.customHandler?e.cors.customHandler:(0,deepmerge_helper_1.default)({origin:(r,s)=>{const l=e?.cors?.allowedOrigins;l==="*"?s(null,!0):Array.isArray(l)?s(null,!r||l?.includes?.(r)):typeof l=="string"?s(null,!r||l===r):s(null,!1)},methods:["GET","POST","PUT","DELETE","PATCH","OPTIONS"],allowedHeaders:["Content-Type","Authorization","Connection"],credentials:!0},e?.cors?.options||{}))),t?.includes?.("express-json")||exports.app.use(a.expressJson||express_1.default.json(e?.jsonBodyParserOptions)),t?.includes?.("cookie-parser")||exports.app.use(a.cookieParser||(0,cookie_parser_1.default)(...e?.cookieParserParameters||[])),t?.includes?.("query-parser")||exports.app.use(a.queryParser||(0,query_parser_helpers_1.queryParser)((0,deepmerge_helper_1.default)({parseNull:!0,parseUndefined:!0,parseBoolean:!0},e?.queryParserOptions||{}))),t?.includes?.("database-connection")||exports.app.use(a.databaseConnection||prisma_helpers_1.checkDatabaseConnection),t?.includes?.("request-logger")||exports.app.use(a.requestLogger||base_middlewares_1.handleRequestLogs),e?.middlewares?.additional&&e.middlewares.additional.forEach(r=>{exports.app.use(r)});const u=e?.routers,p=u?.disable||[],o=u?.replace||{};if(p?.includes?.("welcome-endpoint")||exports.app.get("/api",o.welcomeEndpoint||((r,s)=>{s.status(200).json({message:e.welcomeMessage})})),!p?.includes?.("file-upload")){const r=o.fileUpload?await o.fileUpload(e):await(0,file_upload_router_1.getFileUploadRouter)(e);exports.app.use(r)}if(!p?.includes?.("auth-router")&&e.authentication){const r=o.authRouter?await o.authRouter(e):await(0,auth_router_1.getAuthRouter)(e);exports.app.use("/api",r)}if(!p?.includes?.("prisma-models-router")){const r=o.prismaModelsRouter?await o.prismaModelsRouter(e):await(0,base_router_1.getPrismaModelsRouter)(e);exports.app.use("/api",r)}return exports.app.use("/api",(0,base_router_1.getAvailableResourcesAndRoutesRouter)()),e.swagger&&(process.env.ARKOS_BUILD!=="true"||e.swagger.enableAfterBuild===!0)&&exports.app.use("/api",await(0,swagger_router_1.getSwaggerRouter)(e)),u?.additional&&u.additional.forEach(r=>{exports.app.use(r)}),t?.includes?.("global-error-handler")||exports.app.use(a.globalErrorHandler||error_handler_controller_1.default),exports.app.use("*",(r,s)=>{s.status(404).json({message:"Route not found!"})}),exports.app}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.app=void 0,exports.bootstrap=bootstrap;const express_1=__importDefault(require("express")),cors_1=__importDefault(require("cors")),cookie_parser_1=__importDefault(require("cookie-parser")),auth_router_1=require("./modules/auth/auth.router"),base_router_1=require("./modules/base/base.router"),error_handler_controller_1=__importDefault(require("./modules/error-handler/error-handler.controller")),express_rate_limit_1=require("express-rate-limit"),compression_1=__importDefault(require("compression")),base_middlewares_1=require("./modules/base/base.middlewares"),prisma_helpers_1=require("./utils/helpers/prisma.helpers"),file_upload_router_1=require("./modules/file-upload/file-upload.router"),query_parser_helpers_1=require("./utils/helpers/query-parser.helpers"),deepmerge_helper_1=__importDefault(require("./utils/helpers/deepmerge.helper")),swagger_router_1=require("./modules/swagger/swagger.router");exports.app=(0,express_1.default)();async function bootstrap(e){await(0,prisma_helpers_1.loadPrismaModule)(),e?.configureApp&&await e.configureApp(exports.app);const i=e?.middlewares,t=i?.disable||[],a=i?.replace||{};t?.includes?.("compression")||exports.app.use(a.compression||(0,compression_1.default)(e?.compressionOptions)),t?.includes?.("global-rate-limit")||exports.app.use(a.globalRateLimit||(0,express_rate_limit_1.rateLimit)((0,deepmerge_helper_1.default)({windowMs:60*1e3,limit:500,standardHeaders:"draft-7",legacyHeaders:!1,handler:(r,s)=>{s.status(429).json({message:"Too many requests, please try again later"})}},e?.globalRequestRateLimitOptions||{}))),t?.includes?.("cors")||exports.app.use(a.cors||(0,cors_1.default)(e?.cors?.customHandler?e.cors.customHandler:(0,deepmerge_helper_1.default)({origin:(r,s)=>{const l=e?.cors?.allowedOrigins;l==="*"?s(null,!0):Array.isArray(l)?s(null,!r||l?.includes?.(r)):typeof l=="string"?s(null,!r||l===r):s(null,!1)},methods:["GET","POST","PUT","DELETE","PATCH","OPTIONS"],allowedHeaders:["Content-Type","Authorization","Connection"],credentials:!0},e?.cors?.options||{}))),t?.includes?.("express-json")||exports.app.use(a.expressJson||express_1.default.json(e?.jsonBodyParserOptions)),t?.includes?.("cookie-parser")||exports.app.use(a.cookieParser||(0,cookie_parser_1.default)(...e?.cookieParserParameters||[])),t?.includes?.("query-parser")||exports.app.use(a.queryParser||(0,query_parser_helpers_1.queryParser)((0,deepmerge_helper_1.default)({parseNull:!0,parseUndefined:!0,parseBoolean:!0},e?.queryParserOptions||{}))),t?.includes?.("database-connection")||exports.app.use(a.databaseConnection||prisma_helpers_1.checkDatabaseConnection),t?.includes?.("request-logger")||exports.app.use(a.requestLogger||base_middlewares_1.handleRequestLogs),e?.middlewares?.additional&&e.middlewares.additional.forEach(r=>{exports.app.use(r)});const u=e?.routers,p=u?.disable||[],o=u?.replace||{};if(p?.includes?.("welcome-endpoint")||exports.app.get("/api",o.welcomeEndpoint||((r,s)=>{s.status(200).json({message:e.welcomeMessage})})),!p?.includes?.("file-upload")){const r=o.fileUpload?await o.fileUpload(e):await(0,file_upload_router_1.getFileUploadRouter)(e);exports.app.use(r)}if(!p?.includes?.("auth-router")&&e.authentication){const r=o.authRouter?await o.authRouter(e):await(0,auth_router_1.getAuthRouter)(e);exports.app.use("/api",r)}if(!p?.includes?.("prisma-models-router")){const r=o.prismaModelsRouter?await o.prismaModelsRouter(e):await(0,base_router_1.getPrismaModelsRouter)(e);exports.app.use("/api",r)}return exports.app.use("/api",(0,base_router_1.getAvailableResourcesAndRoutesRouter)()),e.swagger&&(process.env.ARKOS_BUILD!=="true"||e.swagger.enableAfterBuild===!0)&&exports.app.use("/api",await(0,swagger_router_1.getSwaggerRouter)(e)),u?.additional&&u.additional.forEach(r=>{exports.app.use(r)}),t?.includes?.("global-error-handler")||exports.app.use(a.globalErrorHandler||error_handler_controller_1.default),exports.app.use("*",(r,s)=>{s.status(404).json({message:"Route not found!"})}),exports.app}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.BaseController=exports.fileUploadController=void 0;const base_controller_1=require("./../../modules/base/base.controller");Object.defineProperty(exports,"BaseController",{enumerable:!0,get:function(){return base_controller_1.BaseController}});const file_upload_controller_1=__importDefault(require("../../modules/file-upload/file-upload.controller"));exports.fileUploadController=file_upload_controller_1.default;
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.BaseController=exports.fileUploadController=void 0;const base_controller_1=require("./../../modules/base/base.controller");Object.defineProperty(exports,"BaseController",{enumerable:!0,get:function(){return base_controller_1.BaseController}});const file_upload_controller_1=__importDefault(require("../../modules/file-upload/file-upload.controller"));exports.fileUploadController=file_upload_controller_1.default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.AppError=exports.catchAsync=void 0;const catch_async_1=__importDefault(require("../../modules/error-handler/utils/catch-async"));exports.catchAsync=catch_async_1.default;const app_error_1=__importDefault(require("../../modules/error-handler/utils/app-error"));exports.AppError=app_error_1.default;
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.AppError=exports.catchAsync=void 0;const catch_async_1=__importDefault(require("../../modules/error-handler/utils/catch-async"));exports.catchAsync=catch_async_1.default;const app_error_1=__importDefault(require("../../modules/error-handler/utils/app-error"));exports.AppError=app_error_1.default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __createBinding=Object.create?function(u,e,i,r){r===void 0&&(r=i);var t=Object.getOwnPropertyDescriptor(e,i);(!t||("get"in t?!e.__esModule:t.writable||t.configurable))&&(t={enumerable:!0,get:function(){return e[i]}}),Object.defineProperty(u,r,t)}:function(u,e,i,r){r===void 0&&(r=i),u[r]=e[i]},__setModuleDefault=Object.create?function(u,e){Object.defineProperty(u,"default",{enumerable:!0,value:e})}:function(u,e){u.default=e},__importStar=function(){var u=function(e){return u=Object.getOwnPropertyNames||function(i){var r=[];for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&(r[r.length]=t);return r},u(e)};return function(e){if(e&&e.__esModule)return e;var i={};if(e!=null)for(var r=u(e),t=0;t<r.length;t++)r[t]!=="default"&&__createBinding(i,e,r[t]);return __setModuleDefault(i,e),i}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.FileUploadService=exports.getFileUploadServices=exports.EmailService=exports.emailService=exports.getBaseServices=exports.BaseService=exports.AuthService=exports.authService=void 0;const file_upload_service_1=require("../../modules/file-upload/file-upload.service");Object.defineProperty(exports,"getFileUploadServices",{enumerable:!0,get:function(){return file_upload_service_1.getFileUploadServices}}),Object.defineProperty(exports,"FileUploadService",{enumerable:!0,get:function(){return file_upload_service_1.FileUploadService}});const auth_service_1=__importStar(require("../../modules/auth/auth.service"));exports.authService=auth_service_1.default,Object.defineProperty(exports,"AuthService",{enumerable:!0,get:function(){return auth_service_1.AuthService}});const email_service_1=__importStar(require("../../modules/email/email.service"));exports.emailService=email_service_1.default,Object.defineProperty(exports,"EmailService",{enumerable:!0,get:function(){return email_service_1.EmailService}});const base_service_1=require("../../modules/base/base.service");Object.defineProperty(exports,"BaseService",{enumerable:!0,get:function(){return base_service_1.BaseService}}),Object.defineProperty(exports,"getBaseServices",{enumerable:!0,get:function(){return base_service_1.getBaseServices}});
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(u,e,i,r){r===void 0&&(r=i);var t=Object.getOwnPropertyDescriptor(e,i);(!t||("get"in t?!e.__esModule:t.writable||t.configurable))&&(t={enumerable:!0,get:function(){return e[i]}}),Object.defineProperty(u,r,t)}:function(u,e,i,r){r===void 0&&(r=i),u[r]=e[i]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(u,e){Object.defineProperty(u,"default",{enumerable:!0,value:e})}:function(u,e){u.default=e}),__importStar=this&&this.__importStar||function(){var u=function(e){return u=Object.getOwnPropertyNames||function(i){var r=[];for(var t in i)Object.prototype.hasOwnProperty.call(i,t)&&(r[r.length]=t);return r},u(e)};return function(e){if(e&&e.__esModule)return e;var i={};if(e!=null)for(var r=u(e),t=0;t<r.length;t++)r[t]!=="default"&&__createBinding(i,e,r[t]);return __setModuleDefault(i,e),i}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.FileUploadService=exports.getFileUploadServices=exports.EmailService=exports.emailService=exports.getBaseServices=exports.BaseService=exports.AuthService=exports.authService=void 0;const file_upload_service_1=require("../../modules/file-upload/file-upload.service");Object.defineProperty(exports,"getFileUploadServices",{enumerable:!0,get:function(){return file_upload_service_1.getFileUploadServices}}),Object.defineProperty(exports,"FileUploadService",{enumerable:!0,get:function(){return file_upload_service_1.FileUploadService}});const auth_service_1=__importStar(require("../../modules/auth/auth.service"));exports.authService=auth_service_1.default,Object.defineProperty(exports,"AuthService",{enumerable:!0,get:function(){return auth_service_1.AuthService}});const email_service_1=__importStar(require("../../modules/email/email.service"));exports.emailService=email_service_1.default,Object.defineProperty(exports,"EmailService",{enumerable:!0,get:function(){return email_service_1.EmailService}});const base_service_1=require("../../modules/base/base.service");Object.defineProperty(exports,"BaseService",{enumerable:!0,get:function(){return base_service_1.BaseService}}),Object.defineProperty(exports,"getBaseServices",{enumerable:!0,get:function(){return base_service_1.getBaseServices}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __createBinding=Object.create?function(n,e,t,r){r===void 0&&(r=t);var u=Object.getOwnPropertyDescriptor(e,t);(!u||("get"in u?!e.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,r,u)}:function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]},__setModuleDefault=Object.create?function(n,e){Object.defineProperty(n,"default",{enumerable:!0,value:e})}:function(n,e){n.default=e},__exportStar=function(n,e){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,n,t)},__importStar=function(){var n=function(e){return n=Object.getOwnPropertyNames||function(t){var r=[];for(var u in t)Object.prototype.hasOwnProperty.call(t,u)&&(r[r.length]=u);return r},n(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=n(e),u=0;u<r.length;u++)r[u]!=="default"&&__createBinding(t,e,r[u]);return __setModuleDefault(t,e),t}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.apiFeatures=exports.APIFeatures=void 0,__exportStar(require("../../utils/helpers/change-case.helpers"),exports);const api_features_1=__importStar(require("../../utils/features/api.features"));exports.APIFeatures=api_features_1.default,Object.defineProperty(exports,"apiFeatures",{enumerable:!0,get:function(){return api_features_1.apiFeatures}});
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(n,e,t,r){r===void 0&&(r=t);var u=Object.getOwnPropertyDescriptor(e,t);(!u||("get"in u?!e.__esModule:u.writable||u.configurable))&&(u={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(n,r,u)}:function(n,e,t,r){r===void 0&&(r=t),n[r]=e[t]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(n,e){Object.defineProperty(n,"default",{enumerable:!0,value:e})}:function(n,e){n.default=e}),__exportStar=this&&this.__exportStar||function(n,e){for(var t in n)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&__createBinding(e,n,t)},__importStar=this&&this.__importStar||function(){var n=function(e){return n=Object.getOwnPropertyNames||function(t){var r=[];for(var u in t)Object.prototype.hasOwnProperty.call(t,u)&&(r[r.length]=u);return r},n(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var r=n(e),u=0;u<r.length;u++)r[u]!=="default"&&__createBinding(t,e,r[u]);return __setModuleDefault(t,e),t}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.apiFeatures=exports.APIFeatures=void 0,__exportStar(require("../../utils/helpers/change-case.helpers"),exports);const api_features_1=__importStar(require("../../utils/features/api.features"));exports.APIFeatures=api_features_1.default,Object.defineProperty(exports,"apiFeatures",{enumerable:!0,get:function(){return api_features_1.apiFeatures}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateSchema=exports.validateDto=void 0;const validate_dto_1=__importDefault(require("../../utils/validate-dto"));exports.validateDto=validate_dto_1.default;const validate_schema_1=__importDefault(require("../../utils/validate-schema"));exports.validateSchema=validate_schema_1.default;
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.validateSchema=exports.validateDto=void 0;const validate_dto_1=__importDefault(require("../../utils/validate-dto"));exports.validateDto=validate_dto_1.default;const validate_schema_1=__importDefault(require("../../utils/validate-schema"));exports.validateSchema=validate_schema_1.default;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.authControllerFactory=exports.defaultExcludedUserFields=void 0;const catch_async_1=__importDefault(require("../error-handler/utils/catch-async")),app_error_1=__importDefault(require("../error-handler/utils/app-error")),auth_service_1=__importDefault(require("./auth.service")),base_service_1=require("../base/base.service"),arkos_env_1=__importDefault(require("../../utils/arkos-env")),server_1=require("../../server"),auth_controller_helpers_1=require("./utils/helpers/auth.controller.helpers");exports.defaultExcludedUserFields={password:!1};const authControllerFactory=async(n={})=>{const u=(0,base_service_1.getBaseServices)().user;return{getMe:(0,catch_async_1.default)(async(e,a,t)=>{const s=await u.findOne({id:e.user.id},e.prismaQueryOptions||{});if(Object.keys(exports.defaultExcludedUserFields).forEach(o=>{s&&delete s[o]}),n?.afterGetMe)return e.responseData={data:s},e.responseStatus=200,t();a.status(200).json({data:s})}),updateMe:(0,catch_async_1.default)(async(e,a,t)=>{if("password"in e.body)throw new app_error_1.default("In order to update password use the update-password endpoint.",400,{},"InvalidFieldPassword");const s=await u.updateOne({id:e.user.id},e.body,e.prismaQueryOptions||{});if(Object.keys(exports.defaultExcludedUserFields).forEach(o=>{s&&delete s[o]}),n?.afterUpdateMe)return e.responseData={data:s},e.responseStatus=200,t();a.status(200).json({data:s})}),logout:(0,catch_async_1.default)(async(e,a,t)=>{if(a.cookie("arkos_access_token","no-token",{expires:new Date(Date.now()+10*1e3),httpOnly:!0}),n?.afterLogout)return e.responseData=null,e.responseStatus=204,t();a.status(204).json()}),login:(0,catch_async_1.default)(async(e,a,t)=>{const s=(0,server_1.getArkosConfig)()?.authentication,o=(0,auth_controller_helpers_1.determineUsernameField)(e),r=o.split(".")[o.split(".").length-1],c=e.body[r],{password:d}=e.body;if(!c||!d)return t(new app_error_1.default(`Please provide both ${r} and password`,400));let i;if(o?.includes?.(".")){const f=(0,auth_controller_helpers_1.getNestedValue)(e.body,o);if(f===void 0)return t(new app_error_1.default(`Invalid ${o} provided`,400));i=(0,auth_controller_helpers_1.createPrismaWhereClause)(o,f)}else i={[o]:c};const l=await u.findOne(i,e.prismaQueryOptions||{});if(!l||!await auth_service_1.default.isCorrectPassword(d,l.password))return t(new app_error_1.default(`Incorrect ${r} or password`,401));const p=auth_service_1.default.signJwtToken(l.id),h={expires:new Date(Date.now()+Number((0,auth_controller_helpers_1.toMs)(s?.jwt?.expiresIn||process.env.JWT_EXPIRES_IN||arkos_env_1.default.JWT_EXPIRES_IN))),httpOnly:s?.jwt?.cookie?.httpOnly||process.env.JWT_COOKIE_HTTP_ONLY==="true"||!0,secure:s?.jwt?.cookie?.secure||process.env.JWT_COOKIE_SECURE==="true"||e.secure||e.headers["x-forwarded-proto"]==="https",sameSite:s?.jwt?.cookie?.sameSite||process.env.JWT_COOKIE_SAME_SITE||(process.env.NODE_ENV==="production"?"none":"lax")};if((s?.login?.sendAccessTokenThrough==="response-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough)&&(e.responseData={accessToken:p}),(s?.login?.sendAccessTokenThrough==="cookie-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough)&&a.cookie("arkos_access_token",p,h),n?.afterLogin)return e.additionalData={user:l},e.responseStatus=200,t();s?.login?.sendAccessTokenThrough==="response-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough?a.status(200).json(e.responseData):(s?.login?.sendAccessTokenThrough==="cookie-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough)&&a.status(200).send()}),signup:(0,catch_async_1.default)(async(e,a,t)=>{const s=await u.createOne(e.body,e.prismaQueryOptions||{});if(n?.afterSignup)return e.responseData={data:s},e.responseStatus=201,t();Object.keys(exports.defaultExcludedUserFields).forEach(o=>{delete s[o]}),a.status(201).json({data:s})}),deleteMe:(0,catch_async_1.default)(async(e,a,t)=>{const s=e.user.id,o=await u.updateOne({id:s},{deletedSelfAccountAt:new Date().toISOString()},e.prismaQueryOptions||{});if(n?.afterDeleteMe)return e.responseData={data:o},e.responseStatus=200,t();Object.keys(exports.defaultExcludedUserFields).forEach(r=>{delete o[r]}),a.status(200).json({message:"Account deleted successfully"})}),updatePassword:(0,catch_async_1.default)(async(e,a,t)=>{const{currentPassword:s,newPassword:o}=e.body;if(!s||!o)return t(new app_error_1.default("currentPassword and newPassword are required",400));const r=e.user;if(!r||r?.isActive===!1||r?.deletedSelfAccountAt)return t(new app_error_1.default("User not found!",404));const c=await auth_service_1.default.isCorrectPassword(String(s),String(r.password)),d=(0,server_1.getArkosConfig)(),i=d?.authentication;if(!c)return t(new app_error_1.default("Current password is incorrect.",400));if(!auth_service_1.default.isPasswordStrong(String(o))&&!d?.validation)return t(new app_error_1.default(i?.passwordValidation?.message||"The new password must contain at least one uppercase letter, one lowercase letter, and one number",400));if(await u.updateOne({id:r.id},{password:await auth_service_1.default.hashPassword(o),passwordChangedAt:new Date(Date.now())}),n?.afterUpdatePassword)return e.additionalData={user:r},e.responseData={status:"success",message:"Password updated successfully!"},e.responseStatus=200,t();a.status(200).json({status:"success",message:"Password updated successfully!"})})}};exports.authControllerFactory=authControllerFactory;
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.authControllerFactory=exports.defaultExcludedUserFields=void 0;const catch_async_1=__importDefault(require("../error-handler/utils/catch-async")),app_error_1=__importDefault(require("../error-handler/utils/app-error")),auth_service_1=__importDefault(require("./auth.service")),base_service_1=require("../base/base.service"),arkos_env_1=__importDefault(require("../../utils/arkos-env")),server_1=require("../../server"),auth_controller_helpers_1=require("./utils/helpers/auth.controller.helpers");exports.defaultExcludedUserFields={password:!1};const authControllerFactory=async(n={})=>{const u=(0,base_service_1.getBaseServices)().user;return{getMe:(0,catch_async_1.default)(async(e,a,t)=>{const s=await u.findOne({id:e.user.id},e.prismaQueryOptions||{});if(Object.keys(exports.defaultExcludedUserFields).forEach(o=>{s&&delete s[o]}),n?.afterGetMe)return e.responseData={data:s},e.responseStatus=200,t();a.status(200).json({data:s})}),updateMe:(0,catch_async_1.default)(async(e,a,t)=>{if("password"in e.body)throw new app_error_1.default("In order to update password use the update-password endpoint.",400,{},"InvalidFieldPassword");const s=await u.updateOne({id:e.user.id},e.body,e.prismaQueryOptions||{});if(Object.keys(exports.defaultExcludedUserFields).forEach(o=>{s&&delete s[o]}),n?.afterUpdateMe)return e.responseData={data:s},e.responseStatus=200,t();a.status(200).json({data:s})}),logout:(0,catch_async_1.default)(async(e,a,t)=>{if(a.cookie("arkos_access_token","no-token",{expires:new Date(Date.now()+10*1e3),httpOnly:!0}),n?.afterLogout)return e.responseData=null,e.responseStatus=204,t();a.status(204).json()}),login:(0,catch_async_1.default)(async(e,a,t)=>{const s=(0,server_1.getArkosConfig)()?.authentication,o=(0,auth_controller_helpers_1.determineUsernameField)(e),r=o.split(".")[o.split(".").length-1],c=e.body[r],{password:d}=e.body;if(!c||!d)return t(new app_error_1.default(`Please provide both ${r} and password`,400));let i;if(o?.includes?.(".")){const f=(0,auth_controller_helpers_1.getNestedValue)(e.body,o);if(f===void 0)return t(new app_error_1.default(`Invalid ${o} provided`,400));i=(0,auth_controller_helpers_1.createPrismaWhereClause)(o,f)}else i={[o]:c};const l=await u.findOne(i,e.prismaQueryOptions||{});if(!l||!await auth_service_1.default.isCorrectPassword(d,l.password))return t(new app_error_1.default(`Incorrect ${r} or password`,401));const p=auth_service_1.default.signJwtToken(l.id),h={expires:new Date(Date.now()+Number((0,auth_controller_helpers_1.toMs)(s?.jwt?.expiresIn||process.env.JWT_EXPIRES_IN||arkos_env_1.default.JWT_EXPIRES_IN))),httpOnly:s?.jwt?.cookie?.httpOnly||process.env.JWT_COOKIE_HTTP_ONLY==="true"||!0,secure:s?.jwt?.cookie?.secure||process.env.JWT_COOKIE_SECURE==="true"||e.secure||e.headers["x-forwarded-proto"]==="https",sameSite:s?.jwt?.cookie?.sameSite||process.env.JWT_COOKIE_SAME_SITE||(process.env.NODE_ENV==="production"?"none":"lax")};if((s?.login?.sendAccessTokenThrough==="response-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough)&&(e.responseData={accessToken:p}),(s?.login?.sendAccessTokenThrough==="cookie-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough)&&a.cookie("arkos_access_token",p,h),n?.afterLogin)return e.additionalData={user:l},e.responseStatus=200,t();s?.login?.sendAccessTokenThrough==="response-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough?a.status(200).json(e.responseData):(s?.login?.sendAccessTokenThrough==="cookie-only"||s?.login?.sendAccessTokenThrough==="both"||!s?.login?.sendAccessTokenThrough)&&a.status(200).send()}),signup:(0,catch_async_1.default)(async(e,a,t)=>{const s=await u.createOne(e.body,e.prismaQueryOptions||{});if(n?.afterSignup)return e.responseData={data:s},e.responseStatus=201,t();Object.keys(exports.defaultExcludedUserFields).forEach(o=>{delete s[o]}),a.status(201).json({data:s})}),deleteMe:(0,catch_async_1.default)(async(e,a,t)=>{const s=e.user.id,o=await u.updateOne({id:s},{deletedSelfAccountAt:new Date().toISOString()},e.prismaQueryOptions||{});if(n?.afterDeleteMe)return e.responseData={data:o},e.responseStatus=200,t();Object.keys(exports.defaultExcludedUserFields).forEach(r=>{delete o[r]}),a.status(200).json({message:"Account deleted successfully"})}),updatePassword:(0,catch_async_1.default)(async(e,a,t)=>{const{currentPassword:s,newPassword:o}=e.body;if(!s||!o)return t(new app_error_1.default("currentPassword and newPassword are required",400));const r=e.user;if(!r||r?.isActive===!1||r?.deletedSelfAccountAt)return t(new app_error_1.default("User not found!",404));const c=await auth_service_1.default.isCorrectPassword(String(s),String(r.password)),d=(0,server_1.getArkosConfig)(),i=d?.authentication;if(!c)return t(new app_error_1.default("Current password is incorrect.",400));if(!auth_service_1.default.isPasswordStrong(String(o))&&!d?.validation)return t(new app_error_1.default(i?.passwordValidation?.message||"The new password must contain at least one uppercase letter, one lowercase letter, and one number",400));if(await u.updateOne({id:r.id},{password:await auth_service_1.default.hashPassword(o),passwordChangedAt:new Date(Date.now())}),n?.afterUpdatePassword)return e.additionalData={user:r},e.responseData={status:"success",message:"Password updated successfully!"},e.responseStatus=200,t();a.status(200).json({status:"success",message:"Password updated successfully!"})})}};exports.authControllerFactory=authControllerFactory;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAuthRouter=getAuthRouter;const express_1=require("express"),auth_controller_1=require("./auth.controller"),auth_service_1=__importDefault(require("./auth.service")),express_rate_limit_1=__importDefault(require("express-rate-limit")),models_helpers_1=require("../../utils/helpers/models.helpers"),base_middlewares_1=require("../base/base.middlewares"),deepmerge_helper_1=__importDefault(require("../../utils/helpers/deepmerge.helper")),routers_helpers_1=require("../../utils/helpers/routers.helpers"),router=(0,express_1.Router)();async function getAuthRouter(s){const{middlewares:e,dtos:i,schemas:u,prismaQueryOptions:r}=await(0,models_helpers_1.importPrismaModelModules)("auth",s),t=await(0,auth_controller_1.authControllerFactory)(e),a=d=>{const o=s?.validation;if(o?.resolver==="class-validator")return i?.[d];if(o?.resolver==="zod")return u?.[d]};return router.get("/users/me",auth_service_1.default.authenticate,(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(r,"getMe"),...(0,routers_helpers_1.processMiddleware)(e?.beforeGetMe),t.getMe,...(0,routers_helpers_1.processMiddleware)(e?.afterGetMe),base_middlewares_1.sendResponse).patch("/users/me",auth_service_1.default.authenticate,(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(a("updateMe")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(r,"updateMe"),...(0,routers_helpers_1.processMiddleware)(e?.beforeUpdateMe),t.updateMe,...(0,routers_helpers_1.processMiddleware)(e?.afterUpdateMe),base_middlewares_1.sendResponse).delete("/users/me",auth_service_1.default.authenticate,(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(r,"deleteMe"),...(0,routers_helpers_1.processMiddleware)(e?.beforeDeleteMe),t.deleteMe,...(0,routers_helpers_1.processMiddleware)(e?.afterDeleteMe),base_middlewares_1.sendResponse),router.use("/auth",(0,express_rate_limit_1.default)((0,deepmerge_helper_1.default)({windowMs:5e3,limit:10,standardHeaders:"draft-7",legacyHeaders:!1,handler:(d,o)=>{o.status(429).json({message:"Too many requests, please try again later"})}},s?.authentication?.requestRateLimitOptions||{}))),router.post("/auth/login",(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(a("login")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(r,"login"),...(0,routers_helpers_1.processMiddleware)(e?.beforeLogin),t.login,...(0,routers_helpers_1.processMiddleware)(e?.afterLogin),base_middlewares_1.sendResponse),router.delete("/auth/logout",auth_service_1.default.authenticate,...(0,routers_helpers_1.processMiddleware)(e?.beforeLogout),t.logout,...(0,routers_helpers_1.processMiddleware)(e?.afterLogout),base_middlewares_1.sendResponse),router.post("/auth/signup",(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(a("signup")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(r,"signup"),...(0,routers_helpers_1.processMiddleware)(e?.beforeSignup),t.signup,...(0,routers_helpers_1.processMiddleware)(e?.afterSignup),base_middlewares_1.sendResponse),router.post("/auth/update-password",auth_service_1.default.authenticate,(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(a("updatePassword")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(r,"updatePassword"),...(0,routers_helpers_1.processMiddleware)(e?.beforeUpdatePassword),t.updatePassword,...(0,routers_helpers_1.processMiddleware)(e?.afterUpdatePassword),base_middlewares_1.sendResponse),router}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAuthRouter=getAuthRouter;const express_1=require("express"),auth_controller_1=require("./auth.controller"),auth_service_1=__importDefault(require("./auth.service")),express_rate_limit_1=__importDefault(require("express-rate-limit")),models_helpers_1=require("../../utils/helpers/models.helpers"),base_middlewares_1=require("../base/base.middlewares"),deepmerge_helper_1=__importDefault(require("../../utils/helpers/deepmerge.helper")),routers_helpers_1=require("../../utils/helpers/routers.helpers"),router=(0,express_1.Router)();async function getAuthRouter(s){const{middlewares:e,dtos:i,schemas:u,prismaQueryOptions:r}=await(0,models_helpers_1.importPrismaModelModules)("auth",s),t=await(0,auth_controller_1.authControllerFactory)(e),a=d=>{const o=s?.validation;if(o?.resolver==="class-validator")return i?.[d];if(o?.resolver==="zod")return u?.[d]};return router.get("/users/me",auth_service_1.default.authenticate,(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(r,"getMe"),...(0,routers_helpers_1.processMiddleware)(e?.beforeGetMe),t.getMe,...(0,routers_helpers_1.processMiddleware)(e?.afterGetMe),base_middlewares_1.sendResponse).patch("/users/me",auth_service_1.default.authenticate,(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(a("updateMe")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(r,"updateMe"),...(0,routers_helpers_1.processMiddleware)(e?.beforeUpdateMe),t.updateMe,...(0,routers_helpers_1.processMiddleware)(e?.afterUpdateMe),base_middlewares_1.sendResponse).delete("/users/me",auth_service_1.default.authenticate,(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(r,"deleteMe"),...(0,routers_helpers_1.processMiddleware)(e?.beforeDeleteMe),t.deleteMe,...(0,routers_helpers_1.processMiddleware)(e?.afterDeleteMe),base_middlewares_1.sendResponse),router.use("/auth",(0,express_rate_limit_1.default)((0,deepmerge_helper_1.default)({windowMs:5e3,limit:10,standardHeaders:"draft-7",legacyHeaders:!1,handler:(d,o)=>{o.status(429).json({message:"Too many requests, please try again later"})}},s?.authentication?.requestRateLimitOptions||{}))),router.post("/auth/login",(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(a("login")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(r,"login"),...(0,routers_helpers_1.processMiddleware)(e?.beforeLogin),t.login,...(0,routers_helpers_1.processMiddleware)(e?.afterLogin),base_middlewares_1.sendResponse),router.delete("/auth/logout",auth_service_1.default.authenticate,...(0,routers_helpers_1.processMiddleware)(e?.beforeLogout),t.logout,...(0,routers_helpers_1.processMiddleware)(e?.afterLogout),base_middlewares_1.sendResponse),router.post("/auth/signup",(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(a("signup")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(r,"signup"),...(0,routers_helpers_1.processMiddleware)(e?.beforeSignup),t.signup,...(0,routers_helpers_1.processMiddleware)(e?.afterSignup),base_middlewares_1.sendResponse),router.post("/auth/update-password",auth_service_1.default.authenticate,(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(a("updatePassword")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(r,"updatePassword"),...(0,routers_helpers_1.processMiddleware)(e?.beforeUpdatePassword),t.updatePassword,...(0,routers_helpers_1.processMiddleware)(e?.afterUpdatePassword),base_middlewares_1.sendResponse),router}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.AuthService=void 0;const jsonwebtoken_1=__importDefault(require("jsonwebtoken")),bcryptjs_1=__importDefault(require("bcryptjs")),catch_async_1=__importDefault(require("../error-handler/utils/catch-async")),app_error_1=__importDefault(require("../error-handler/utils/app-error")),base_middlewares_1=require("../base/base.middlewares"),server_1=require("../../server"),arkos_env_1=__importDefault(require("../../utils/arkos-env")),prisma_helpers_1=require("../../utils/helpers/prisma.helpers");class AuthService{constructor(){this.authenticate=(0,catch_async_1.default)(async(e,t,s)=>{if(!(0,server_1.getArkosConfig)()?.authentication){s();return}e.user=await this.getAuthenticatedUser(e),s()})}signJwtToken(e,t,s){const{authentication:r}=(0,server_1.getArkosConfig)();if(process.env.NODE_ENV==="production"&&!process.env.JWT_SECRET&&!r?.jwt?.secret)throw new app_error_1.default("Missing JWT secret on production!",500,{},"MissingJWTOnProduction");return s=s||r?.jwt?.secret||process.env.JWT_SECRET||arkos_env_1.default.JWT_SECRET,t=t||r?.jwt?.expiresIn||process.env.JWT_EXPIRES_IN||arkos_env_1.default.JWT_EXPIRES_IN,jsonwebtoken_1.default.sign({id:e},s,{expiresIn:t})}isPasswordHashed(e){return!Number.isNaN(bcryptjs_1.default.getRounds(e)*1)}async isCorrectPassword(e,t){return await bcryptjs_1.default.compare(e,t)}async hashPassword(e){return await bcryptjs_1.default.hash(e,12)}isPasswordStrong(e){return((0,server_1.getArkosConfig)()?.authentication?.passwordValidation?.regex||/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d).+$/).test(e)}userChangedPasswordAfter(e,t){if(e.passwordChangedAt){const s=parseInt(String(e.passwordChangedAt.getTime()/1e3),10);return t<s}return!1}async verifyJwtToken(e,t){const{authentication:s}=(0,server_1.getArkosConfig)();if(process.env.NODE_ENV==="production"&&!process.env.JWT_SECRET&&!s?.jwt?.secret)throw new app_error_1.default("Missing JWT secret!",500);return t=t||s?.jwt?.secret||process.env.JWT_SECRET||arkos_env_1.default.JWT_SECRET,new Promise((r,o)=>{jsonwebtoken_1.default.verify(e,t,(i,n)=>{i?o(i):r(n)})})}handleAccessControl(e,t,s){return(0,catch_async_1.default)(async(r,o,i)=>{if(r.user){const n=r.user,d=(0,prisma_helpers_1.getPrismaInstance)(),c=(0,server_1.getArkosConfig)();if(n.isSuperUser){i();return}if(c?.authentication?.mode==="dynamic"){if(!await d.userRole.findFirst({where:{userId:r.user.id,role:{permissions:{some:{resource:t,action:e}}}},select:{id:!0}}))return i(new app_error_1.default("You do not have permission to perfom this action",403))}else if(c?.authentication?.mode==="static"){let u=[];if(!s)return i(new app_error_1.default("You do not have permission to perform this action",403));if(Array.isArray(s)?u=s:s[e]&&(u=s[e]||[]),!(Array.isArray(n?.roles)?n.roles:[n.role]).some(l=>u.includes(l)))return i(new app_error_1.default("You do not have permission to perform this action",403))}}i()})}async getAuthenticatedUser(e){if(!(0,server_1.getArkosConfig)()?.authentication)return null;const s=(0,prisma_helpers_1.getPrismaInstance)();let r;if(e?.headers?.authorization&&e?.headers?.authorization.startsWith("Bearer")?r=e?.headers?.authorization.split(" ")[1]:e?.cookies?.arkos_access_token!=="no-token"&&e.cookies&&(r=e?.cookies?.arkos_access_token),!r)throw new app_error_1.default("You are not logged in! please log in to get access",401,{},"LoginRequired");let o;try{o=await this.verifyJwtToken(r)}catch{throw new app_error_1.default("Your auth token is invalid, please login again.",401,{},"InvalidAuthToken")}if(!o?.id)throw new app_error_1.default("Your auth token is invalid, please login again.",401,{},"InvalidAuthToken");const i=await s.user.findUnique({where:{id:String(o.id)}});if(!i)throw new app_error_1.default("The user belonging to this token does no longer exists",401);if(this.userChangedPasswordAfter(i,o.iat)&&!e.path?.includes?.("logout"))throw new app_error_1.default("User recently changed password! Please log in again.",401,{},"PasswordChanged");return i}handleAuthenticationControl(e,t){if(t&&typeof t=="object"){if(t[e]===!1)return base_middlewares_1.callNext;if(t[e]===!0)return this.authenticate}else return this.authenticate;return this.authenticate}}exports.AuthService=AuthService;const authService=new AuthService;exports.default=authService;
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.AuthService=void 0;const jsonwebtoken_1=__importDefault(require("jsonwebtoken")),bcryptjs_1=__importDefault(require("bcryptjs")),catch_async_1=__importDefault(require("../error-handler/utils/catch-async")),app_error_1=__importDefault(require("../error-handler/utils/app-error")),base_middlewares_1=require("../base/base.middlewares"),server_1=require("../../server"),arkos_env_1=__importDefault(require("../../utils/arkos-env")),prisma_helpers_1=require("../../utils/helpers/prisma.helpers");class AuthService{constructor(){this.authenticate=(0,catch_async_1.default)(async(e,t,s)=>{if(!(0,server_1.getArkosConfig)()?.authentication){s();return}e.user=await this.getAuthenticatedUser(e),s()})}signJwtToken(e,t,s){const{authentication:r}=(0,server_1.getArkosConfig)();if(process.env.NODE_ENV==="production"&&!process.env.JWT_SECRET&&!r?.jwt?.secret)throw new app_error_1.default("Missing JWT secret on production!",500,{},"MissingJWTOnProduction");return s=s||r?.jwt?.secret||process.env.JWT_SECRET||arkos_env_1.default.JWT_SECRET,t=t||r?.jwt?.expiresIn||process.env.JWT_EXPIRES_IN||arkos_env_1.default.JWT_EXPIRES_IN,jsonwebtoken_1.default.sign({id:e},s,{expiresIn:t})}isPasswordHashed(e){return!Number.isNaN(bcryptjs_1.default.getRounds(e)*1)}async isCorrectPassword(e,t){return await bcryptjs_1.default.compare(e,t)}async hashPassword(e){return await bcryptjs_1.default.hash(e,12)}isPasswordStrong(e){return((0,server_1.getArkosConfig)()?.authentication?.passwordValidation?.regex||/^(?=.*[A-Z])(?=.*[a-z])(?=.*\d).+$/).test(e)}userChangedPasswordAfter(e,t){if(e.passwordChangedAt){const s=parseInt(String(e.passwordChangedAt.getTime()/1e3),10);return t<s}return!1}async verifyJwtToken(e,t){const{authentication:s}=(0,server_1.getArkosConfig)();if(process.env.NODE_ENV==="production"&&!process.env.JWT_SECRET&&!s?.jwt?.secret)throw new app_error_1.default("Missing JWT secret!",500);return t=t||s?.jwt?.secret||process.env.JWT_SECRET||arkos_env_1.default.JWT_SECRET,new Promise((r,o)=>{jsonwebtoken_1.default.verify(e,t,(i,n)=>{i?o(i):r(n)})})}handleAccessControl(e,t,s){return(0,catch_async_1.default)(async(r,o,i)=>{if(r.user){const n=r.user,d=(0,prisma_helpers_1.getPrismaInstance)(),c=(0,server_1.getArkosConfig)();if(n.isSuperUser){i();return}if(c?.authentication?.mode==="dynamic"){if(!await d.userRole.findFirst({where:{userId:r.user.id,role:{permissions:{some:{resource:t,action:e}}}},select:{id:!0}}))return i(new app_error_1.default("You do not have permission to perfom this action",403))}else if(c?.authentication?.mode==="static"){let u=[];if(!s)return i(new app_error_1.default("You do not have permission to perform this action",403));if(Array.isArray(s)?u=s:s[e]&&(u=s[e]||[]),!(Array.isArray(n?.roles)?n.roles:[n.role]).some(l=>u.includes(l)))return i(new app_error_1.default("You do not have permission to perform this action",403))}}i()})}async getAuthenticatedUser(e){if(!(0,server_1.getArkosConfig)()?.authentication)return null;const s=(0,prisma_helpers_1.getPrismaInstance)();let r;if(e?.headers?.authorization&&e?.headers?.authorization.startsWith("Bearer")?r=e?.headers?.authorization.split(" ")[1]:e?.cookies?.arkos_access_token!=="no-token"&&e.cookies&&(r=e?.cookies?.arkos_access_token),!r)throw new app_error_1.default("You are not logged in! please log in to get access",401,{},"LoginRequired");let o;try{o=await this.verifyJwtToken(r)}catch{throw new app_error_1.default("Your auth token is invalid, please login again.",401,{},"InvalidAuthToken")}if(!o?.id)throw new app_error_1.default("Your auth token is invalid, please login again.",401,{},"InvalidAuthToken");const i=await s.user.findUnique({where:{id:String(o.id)}});if(!i)throw new app_error_1.default("The user belonging to this token does no longer exists",401);if(this.userChangedPasswordAfter(i,o.iat)&&!e.path?.includes?.("logout"))throw new app_error_1.default("User recently changed password! Please log in again.",401,{},"PasswordChanged");return i}handleAuthenticationControl(e,t){if(t&&typeof t=="object"){if(t[e]===!1)return base_middlewares_1.callNext;if(t[e]===!0)return this.authenticate}else return this.authenticate;return this.authenticate}}exports.AuthService=AuthService;const authService=new AuthService;exports.default=authService;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getNestedValue=exports.createPrismaWhereClause=exports.determineUsernameField=void 0,exports.toMs=toMs;const server_1=require("../../../../server"),app_error_1=__importDefault(require("../../../error-handler/utils/app-error")),determineUsernameField=e=>{const s=(0,server_1.getArkosConfig)()?.authentication;if(e.query?.usernameField&&typeof e.query?.usernameField=="string"&&s?.login?.allowedUsernames?.includes?.(e.query.usernameField))return e.query.usernameField;if(e.query?.usernameField)throw new app_error_1.default("Invalid usernameField parameter, it is not allowed!",400);return s?.login?.allowedUsernames?.[0]||"username"};exports.determineUsernameField=determineUsernameField;const createPrismaWhereClause=(e,s)=>{if(!e)return{};const r=e.split("."),t={};if(r.length===1)return t[r[0]]=s,t;let n=t;for(let i=0;i<r.length-1;i++){const a=r[i];n[a]={},n=n[a]}return n[r[r.length-1]]=s,t};exports.createPrismaWhereClause=createPrismaWhereClause;const getNestedValue=(e,s)=>{if(!e||!s)return;const r=s.split("."),t=r[r.length-1];if(t in e)return e[t]};exports.getNestedValue=getNestedValue;function normalizeDuration(e){return e.toLowerCase().replace(/years?|yr|year/g,"y").replace(/minutes?|min/g,"m").replace(/seconds?|sec|secs/g,"s").replace(/hours?|hr/g,"h").replace(/days?/g,"d").replace(/weeks?/g,"w").replace(/milliseconds?/g,"ms")}function toMs(e){if(typeof e=="number")return e*1e3;const s=normalizeDuration(e.trim()),r=/^(\d+(?:\.\d+)?)(ms|s|m|h|d|w|y)$/i,t=s.match(r);if(!t)throw new Error(`Invalid time format: ${e}`);const n=parseFloat(t[1]),i=t[2].toLowerCase();return n*{ms:1,s:1e3,m:6e4,h:36e5,d:864e5,w:6048e5,y:315576e5}[i]}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getNestedValue=exports.createPrismaWhereClause=exports.determineUsernameField=void 0,exports.toMs=toMs;const server_1=require("../../../../server"),app_error_1=__importDefault(require("../../../error-handler/utils/app-error")),determineUsernameField=e=>{const s=(0,server_1.getArkosConfig)()?.authentication;if(e.query?.usernameField&&typeof e.query?.usernameField=="string"&&s?.login?.allowedUsernames?.includes?.(e.query.usernameField))return e.query.usernameField;if(e.query?.usernameField)throw new app_error_1.default("Invalid usernameField parameter, it is not allowed!",400);return s?.login?.allowedUsernames?.[0]||"username"};exports.determineUsernameField=determineUsernameField;const createPrismaWhereClause=(e,s)=>{if(!e)return{};const r=e.split("."),t={};if(r.length===1)return t[r[0]]=s,t;let n=t;for(let i=0;i<r.length-1;i++){const a=r[i];n[a]={},n=n[a]}return n[r[r.length-1]]=s,t};exports.createPrismaWhereClause=createPrismaWhereClause;const getNestedValue=(e,s)=>{if(!e||!s)return;const r=s.split("."),t=r[r.length-1];if(t in e)return e[t]};exports.getNestedValue=getNestedValue;function normalizeDuration(e){return e.toLowerCase().replace(/years?|yr|year/g,"y").replace(/minutes?|min/g,"m").replace(/seconds?|sec|secs/g,"s").replace(/hours?|hr/g,"h").replace(/days?/g,"d").replace(/weeks?/g,"w").replace(/milliseconds?/g,"ms")}function toMs(e){if(typeof e=="number")return e*1e3;const s=normalizeDuration(e.trim()),r=/^(\d+(?:\.\d+)?)(ms|s|m|h|d|w|y)$/i,t=s.match(r);if(!t)throw new Error(`Invalid time format: ${e}`);const n=parseFloat(t[1]),i=t[2].toLowerCase();return n*{ms:1,s:1e3,m:6e4,h:36e5,d:864e5,w:6048e5,y:315576e5}[i]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAvailableResources=exports.BaseController=void 0,exports.getAvalibleRoutes=getAvalibleRoutes;const catch_async_1=__importDefault(require("../error-handler/utils/catch-async")),api_features_1=__importDefault(require("../../utils/features/api.features")),base_service_1=require("./base.service"),app_error_1=__importDefault(require("../error-handler/utils/app-error")),change_case_helpers_1=require("../../utils/helpers/change-case.helpers"),models_helpers_1=require("../../utils/helpers/models.helpers"),base_controller_helpers_1=require("./utils/helpers/base.controller.helpers"),pluralize_1=__importDefault(require("pluralize"));class BaseController{constructor(o){this.createOne=(0,catch_async_1.default)(async(e,a,t)=>{const s=await this.service.createOne(e.body,e.prismaQueryOptions);if(this.middlewares.afterCreateOne)return e.responseData={data:s},e.responseStatus=201,t();a.status(201).json({data:s})}),this.createMany=(0,catch_async_1.default)(async(e,a,t)=>{const s=await this.service.createMany(e.body,e.prismaQueryOptions);if(!s)return t(new app_error_1.default("Failed to create the resources. Please check your input.",400,{},"MissingRequestBody"));if(this.middlewares.afterCreateMany)return e.responseData={data:s},e.responseStatus=201,t();a.status(201).json({data:s})}),this.findMany=(0,catch_async_1.default)(async(e,a,t)=>{const{filters:{where:s,...i}}=new api_features_1.default(e,this.modelName).filter().sort().limitFields().paginate(),[r,u]=await Promise.all([this.service.findMany(s,i),this.service.count(s)]);if(this.middlewares.afterFindMany)return e.responseData={total:u,results:r.length,data:r},e.responseStatus=200,t();a.status(200).json({total:u,results:r.length,data:r})}),this.findOne=(0,catch_async_1.default)(async(e,a,t)=>{const s=await this.service.findOne(e.params,e.prismaQueryOptions);if(!s)return Object.keys(e.params).length===1&&"id"in e.params&&e.params.id!=="me"?t(new app_error_1.default(`${(0,change_case_helpers_1.pascalCase)(String(this.modelName))} with ID ${e.params?.id} not found`,404,{},"NotFound")):t(new app_error_1.default(`${(0,change_case_helpers_1.pascalCase)(String(this.modelName))} not found`,404,{},"NotFound"));if(this.middlewares.afterFindOne)return e.responseData={data:s},e.responseStatus=200,t();a.status(200).json({data:s})}),this.updateOne=(0,catch_async_1.default)(async(e,a,t)=>{const s=await this.service.updateOne(e.params,e.body,e.prismaQueryOptions);if(!s)return Object.keys(e.params).length===1&&"id"in e.params?t(new app_error_1.default(`${(0,change_case_helpers_1.pascalCase)(String(this.modelName))} with ID ${e.params?.id} not found`,404,{},"NotFound")):t(new app_error_1.default(`${(0,change_case_helpers_1.pascalCase)(String(this.modelName))} not found`,404,{},"NotFound"));if(this.middlewares.afterUpdateOne)return e.responseData={data:s},e.responseStatus=200,t();a.status(200).json({data:s})}),this.updateMany=(0,catch_async_1.default)(async(e,a,t)=>{if(!Object.keys(e.query).some(u=>u!=="prismaQueryOptions"))return t(new app_error_1.default("Filter criteria not provided for bulk update.",400,{},"MissingRequestQueryParameters"));e.query.filterMode=e.query?.filterMode||"AND";const{filters:{where:s,...i}}=new api_features_1.default(e,this.modelName).filter().sort();delete i.include;const r=await this.service.updateMany(s,e.body,i);if(!r||r.count===0)return t(new app_error_1.default(`${(0,pluralize_1.default)((0,change_case_helpers_1.pascalCase)(String(this.modelName)))} not found`,404));if(this.middlewares.afterUpdateMany)return e.responseData={results:r.count,data:r},e.responseStatus=200,t();a.status(200).json({results:r.count,data:r})}),this.deleteOne=(0,catch_async_1.default)(async(e,a,t)=>{const s=await this.service.deleteOne(e.params);if(!s)return Object.keys(e.params).length===1&&"id"in e.params?t(new app_error_1.default(`${(0,change_case_helpers_1.pascalCase)(String(this.modelName))} with ID ${e.params?.id} not found`,404,{},"NotFound")):t(new app_error_1.default(`${(0,change_case_helpers_1.pascalCase)(String(this.modelName))} not found`,404,{},"NotFound"));if(this.middlewares.afterDeleteOne)return e.additionalData={data:s},e.responseStatus=204,t();a.status(204).send()}),this.deleteMany=(0,catch_async_1.default)(async(e,a,t)=>{if(!Object.keys(e.query).some(r=>r!=="prismaQueryOptions"))return t(new app_error_1.default("Filter criteria not provided for bulk deletion.",400,{},"MissingRequestQueryParameters"));e.query.filterMode=e.query?.filterMode||"AND";const{filters:{where:s}}=new api_features_1.default(e,this.modelName).filter().sort(),i=await this.service.deleteMany(s);if(!i||i.count===0)return t(new app_error_1.default("No records found to delete",404,{},"NotFound"));if(this.middlewares.afterDeleteMany)return e.responseData={results:i.count,data:i},e.responseStatus=200,t();a.status(200).json({results:i.count,data:i})}),this.modelName=o,this.service=new base_service_1.BaseService(o),this.middlewares=(0,models_helpers_1.getModelModules)(o)?.middlewares||{}}}exports.BaseController=BaseController;function getAvalibleRoutes(n,o,e){const a=(0,base_controller_helpers_1.getAppRoutes)();o.json(a)}exports.getAvailableResources=(0,catch_async_1.default)(async(n,o,e)=>{const a=(0,models_helpers_1.getModels)();o.status(200).json({data:[...a.map(t=>(0,change_case_helpers_1.kebabCase)(t)),"file-upload"]})});
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getAvailableResources=exports.BaseController=void 0,exports.getAvalibleRoutes=getAvalibleRoutes;const catch_async_1=__importDefault(require("../error-handler/utils/catch-async")),api_features_1=__importDefault(require("../../utils/features/api.features")),base_service_1=require("./base.service"),app_error_1=__importDefault(require("../error-handler/utils/app-error")),change_case_helpers_1=require("../../utils/helpers/change-case.helpers"),models_helpers_1=require("../../utils/helpers/models.helpers"),base_controller_helpers_1=require("./utils/helpers/base.controller.helpers"),pluralize_1=__importDefault(require("pluralize"));class BaseController{constructor(o){this.createOne=(0,catch_async_1.default)(async(e,a,t)=>{const s=await this.service.createOne(e.body,e.prismaQueryOptions);if(this.middlewares.afterCreateOne)return e.responseData={data:s},e.responseStatus=201,t();a.status(201).json({data:s})}),this.createMany=(0,catch_async_1.default)(async(e,a,t)=>{const s=await this.service.createMany(e.body,e.prismaQueryOptions);if(!s)return t(new app_error_1.default("Failed to create the resources. Please check your input.",400,{},"MissingRequestBody"));if(this.middlewares.afterCreateMany)return e.responseData={data:s},e.responseStatus=201,t();a.status(201).json({data:s})}),this.findMany=(0,catch_async_1.default)(async(e,a,t)=>{const{filters:{where:s,...i}}=new api_features_1.default(e,this.modelName).filter().sort().limitFields().paginate(),[r,u]=await Promise.all([this.service.findMany(s,i),this.service.count(s)]);if(this.middlewares.afterFindMany)return e.responseData={total:u,results:r.length,data:r},e.responseStatus=200,t();a.status(200).json({total:u,results:r.length,data:r})}),this.findOne=(0,catch_async_1.default)(async(e,a,t)=>{const s=await this.service.findOne(e.params,e.prismaQueryOptions);if(!s)return Object.keys(e.params).length===1&&"id"in e.params&&e.params.id!=="me"?t(new app_error_1.default(`${(0,change_case_helpers_1.pascalCase)(String(this.modelName))} with ID ${e.params?.id} not found`,404,{},"NotFound")):t(new app_error_1.default(`${(0,change_case_helpers_1.pascalCase)(String(this.modelName))} not found`,404,{},"NotFound"));if(this.middlewares.afterFindOne)return e.responseData={data:s},e.responseStatus=200,t();a.status(200).json({data:s})}),this.updateOne=(0,catch_async_1.default)(async(e,a,t)=>{const s=await this.service.updateOne(e.params,e.body,e.prismaQueryOptions);if(!s)return Object.keys(e.params).length===1&&"id"in e.params?t(new app_error_1.default(`${(0,change_case_helpers_1.pascalCase)(String(this.modelName))} with ID ${e.params?.id} not found`,404,{},"NotFound")):t(new app_error_1.default(`${(0,change_case_helpers_1.pascalCase)(String(this.modelName))} not found`,404,{},"NotFound"));if(this.middlewares.afterUpdateOne)return e.responseData={data:s},e.responseStatus=200,t();a.status(200).json({data:s})}),this.updateMany=(0,catch_async_1.default)(async(e,a,t)=>{if(!Object.keys(e.query).some(u=>u!=="prismaQueryOptions"))return t(new app_error_1.default("Filter criteria not provided for bulk update.",400,{},"MissingRequestQueryParameters"));e.query.filterMode=e.query?.filterMode||"AND";const{filters:{where:s,...i}}=new api_features_1.default(e,this.modelName).filter().sort();delete i.include;const r=await this.service.updateMany(s,e.body,i);if(!r||r.count===0)return t(new app_error_1.default(`${(0,pluralize_1.default)((0,change_case_helpers_1.pascalCase)(String(this.modelName)))} not found`,404));if(this.middlewares.afterUpdateMany)return e.responseData={results:r.count,data:r},e.responseStatus=200,t();a.status(200).json({results:r.count,data:r})}),this.deleteOne=(0,catch_async_1.default)(async(e,a,t)=>{const s=await this.service.deleteOne(e.params);if(!s)return Object.keys(e.params).length===1&&"id"in e.params?t(new app_error_1.default(`${(0,change_case_helpers_1.pascalCase)(String(this.modelName))} with ID ${e.params?.id} not found`,404,{},"NotFound")):t(new app_error_1.default(`${(0,change_case_helpers_1.pascalCase)(String(this.modelName))} not found`,404,{},"NotFound"));if(this.middlewares.afterDeleteOne)return e.additionalData={data:s},e.responseStatus=204,t();a.status(204).send()}),this.deleteMany=(0,catch_async_1.default)(async(e,a,t)=>{if(!Object.keys(e.query).some(r=>r!=="prismaQueryOptions"))return t(new app_error_1.default("Filter criteria not provided for bulk deletion.",400,{},"MissingRequestQueryParameters"));e.query.filterMode=e.query?.filterMode||"AND";const{filters:{where:s}}=new api_features_1.default(e,this.modelName).filter().sort(),i=await this.service.deleteMany(s);if(!i||i.count===0)return t(new app_error_1.default("No records found to delete",404,{},"NotFound"));if(this.middlewares.afterDeleteMany)return e.responseData={results:i.count,data:i},e.responseStatus=200,t();a.status(200).json({results:i.count,data:i})}),this.modelName=o,this.service=new base_service_1.BaseService(o),this.middlewares=(0,models_helpers_1.getModelModules)(o)?.middlewares||{}}}exports.BaseController=BaseController;function getAvalibleRoutes(n,o,e){const a=(0,base_controller_helpers_1.getAppRoutes)();o.json(a)}exports.getAvailableResources=(0,catch_async_1.default)(async(n,o,e)=>{const a=(0,models_helpers_1.getModels)();o.status(200).json({data:[...a.map(t=>(0,change_case_helpers_1.kebabCase)(t)),"file-upload"]})});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.callNext=callNext,exports.sendResponse=sendResponse,exports.addRouteMiddlwaresAndConfigs=addRouteMiddlwaresAndConfigs,exports.addPrismaQueryOptionsToRequest=addPrismaQueryOptionsToRequest,exports.handleRequestLogs=handleRequestLogs,exports.handleRequestBodyValidationAndTransformation=handleRequestBodyValidationAndTransformation;const server_1=require("../../server"),deepmerge_helper_1=__importDefault(require("../../utils/helpers/deepmerge.helper")),error_handler_1=require("../../exports/error-handler"),validate_dto_1=__importDefault(require("../../utils/validate-dto")),validate_schema_1=__importDefault(require("../../utils/validate-schema")),base_middlewares_helpers_1=require("./utils/helpers/base.middlewares.helpers");function callNext(e,s,o){o()}function sendResponse(e,s){Number(e?.responseStatus)===204?s.status(Number(e?.responseStatus)).send():e.responseData&&e?.responseStatus?s.status(Number(e?.responseStatus)).json(e.responseData):Number(e?.responseStatus)&&!e.responseData?s.status(Number(e?.responseStatus)).send():s.status(500).json({message:"No status or data attached to the response"})}function addRouteMiddlwaresAndConfigs(){}function addPrismaQueryOptionsToRequest(e,s){return(o,a,r)=>{const n=(0,server_1.getArkosConfig)(),t=(0,base_middlewares_helpers_1.resolvePrismaQueryOptions)(e,s),i=n?.request?.parameters?.allowDangerousPrismaQueryOptions?JSON.parse(o.query?.prismaQueryOptions||"{}"):{};o.prismaQueryOptions=(0,deepmerge_helper_1.default)(t,i),r()}}function handleRequestLogs(e,s,o){const a=Date.now(),r={GET:"\x1B[36m",POST:"\x1B[32m",PUT:"\x1B[33m",PATCH:"\x1B[33m",DELETE:"\x1B[31m",HEAD:"\x1B[34m",OPTIONS:"\x1B[34m"},n=t=>t>=200&&t<300?"\x1B[32m":t>=300&&t<400||t>=400&&t<500?"\x1B[33m":t>=500?"\x1B[31m":"\x1B[0m";s.on("finish",()=>{const t=Date.now()-a,u=new Date().toTimeString().split(" ")[0],d=r[e.method]||"\x1B[0m",l=n(s.statusCode);console.info(`[\x1B[36mInfo\x1B[0m] \x1B[90m${u}\x1B[0m ${d}${e.method}\x1B[0m ${decodeURIComponent(e.originalUrl)} ${l}${s.statusCode}\x1B[0m \x1B[35m${t}ms\x1B[0m`)}),o()}function handleRequestBodyValidationAndTransformation(e,s){return(0,error_handler_1.catchAsync)(async(o,a,r)=>{const n=(0,server_1.getArkosConfig)()?.validation;let t=o.body;n?.resolver==="class-validator"&&e?o.body=await(0,validate_dto_1.default)(e,t,(0,deepmerge_helper_1.default)({whitelist:!0,...s},n?.validationOptions||{})):n?.resolver==="zod"&&e&&(o.body=await(0,validate_schema_1.default)(e,t)),r()})}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.callNext=callNext,exports.sendResponse=sendResponse,exports.addRouteMiddlwaresAndConfigs=addRouteMiddlwaresAndConfigs,exports.addPrismaQueryOptionsToRequest=addPrismaQueryOptionsToRequest,exports.handleRequestLogs=handleRequestLogs,exports.handleRequestBodyValidationAndTransformation=handleRequestBodyValidationAndTransformation;const server_1=require("../../server"),deepmerge_helper_1=__importDefault(require("../../utils/helpers/deepmerge.helper")),error_handler_1=require("../../exports/error-handler"),validate_dto_1=__importDefault(require("../../utils/validate-dto")),validate_schema_1=__importDefault(require("../../utils/validate-schema")),base_middlewares_helpers_1=require("./utils/helpers/base.middlewares.helpers");function callNext(e,s,o){o()}function sendResponse(e,s){Number(e?.responseStatus)===204?s.status(Number(e?.responseStatus)).send():e.responseData&&e?.responseStatus?s.status(Number(e?.responseStatus)).json(e.responseData):Number(e?.responseStatus)&&!e.responseData?s.status(Number(e?.responseStatus)).send():s.status(500).json({message:"No status or data attached to the response"})}function addRouteMiddlwaresAndConfigs(){}function addPrismaQueryOptionsToRequest(e,s){return(o,a,r)=>{const n=(0,server_1.getArkosConfig)(),t=(0,base_middlewares_helpers_1.resolvePrismaQueryOptions)(e,s),i=n?.request?.parameters?.allowDangerousPrismaQueryOptions?JSON.parse(o.query?.prismaQueryOptions||"{}"):{};o.prismaQueryOptions=(0,deepmerge_helper_1.default)(t,i),r()}}function handleRequestLogs(e,s,o){const a=Date.now(),r={GET:"\x1B[36m",POST:"\x1B[32m",PUT:"\x1B[33m",PATCH:"\x1B[33m",DELETE:"\x1B[31m",HEAD:"\x1B[34m",OPTIONS:"\x1B[34m"},n=t=>t>=200&&t<300?"\x1B[32m":t>=300&&t<400||t>=400&&t<500?"\x1B[33m":t>=500?"\x1B[31m":"\x1B[0m";s.on("finish",()=>{const t=Date.now()-a,u=new Date().toTimeString().split(" ")[0],d=r[e.method]||"\x1B[0m",l=n(s.statusCode);console.info(`[\x1B[36mInfo\x1B[0m] \x1B[90m${u}\x1B[0m ${d}${e.method}\x1B[0m ${decodeURIComponent(e.originalUrl)} ${l}${s.statusCode}\x1B[0m \x1B[35m${t}ms\x1B[0m`)}),o()}function handleRequestBodyValidationAndTransformation(e,s){return(0,error_handler_1.catchAsync)(async(o,a,r)=>{const n=(0,server_1.getArkosConfig)()?.validation;let t=o.body;n?.resolver==="class-validator"&&e?o.body=await(0,validate_dto_1.default)(e,t,(0,deepmerge_helper_1.default)({whitelist:!0,...s},n?.validationOptions||{})):n?.resolver==="zod"&&e&&(o.body=await(0,validate_schema_1.default)(e,t)),r()})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getPrismaModelsRouter=getPrismaModelsRouter,exports.getAvailableResourcesAndRoutesRouter=getAvailableResourcesAndRoutesRouter;const express_1=require("express"),base_controller_1=require("./base.controller"),models_helpers_1=require("../../utils/helpers/models.helpers"),auth_service_1=__importDefault(require("../auth/auth.service")),base_router_helpers_1=require("./utils/helpers/base.router.helpers");async function getPrismaModelsRouter(e){const t=(0,express_1.Router)();return await Promise.all((0,base_router_helpers_1.setupRouters)((0,models_helpers_1.getModels)(),t,e)),t}function getAvailableResourcesAndRoutesRouter(){const e=(0,express_1.Router)();return e.get("/available-routes",auth_service_1.default?.authenticate,base_controller_1.getAvalibleRoutes),e.get("/available-resources",auth_service_1.default?.authenticate,base_controller_1.getAvailableResources),e}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getPrismaModelsRouter=getPrismaModelsRouter,exports.getAvailableResourcesAndRoutesRouter=getAvailableResourcesAndRoutesRouter;const express_1=require("express"),base_controller_1=require("./base.controller"),models_helpers_1=require("../../utils/helpers/models.helpers"),auth_service_1=__importDefault(require("../auth/auth.service")),base_router_helpers_1=require("./utils/helpers/base.router.helpers");async function getPrismaModelsRouter(e){const t=(0,express_1.Router)();return await Promise.all((0,base_router_helpers_1.setupRouters)((0,models_helpers_1.getModels)(),t,e)),t}function getAvailableResourcesAndRoutesRouter(){const e=(0,express_1.Router)();return e.get("/available-routes",auth_service_1.default?.authenticate,base_controller_1.getAvalibleRoutes),e.get("/available-resources",auth_service_1.default?.authenticate,base_controller_1.getAvailableResources),e}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.BaseService=void 0,exports.getBaseServices=getBaseServices;const change_case_helpers_1=require("../../utils/helpers/change-case.helpers"),models_helpers_1=require("../../utils/helpers/models.helpers"),deepmerge_helper_1=__importDefault(require("../../utils/helpers/deepmerge.helper")),base_service_helpers_1=require("./utils/helpers/base.service.helpers"),prisma_helpers_1=require("../../utils/helpers/prisma.helpers"),auth_service_1=__importDefault(require("../auth/auth.service"));class BaseService{constructor(e){this.modelName=(0,change_case_helpers_1.camelCase)(e),this.relationFields=(0,models_helpers_1.getPrismaModelRelations)((0,change_case_helpers_1.pascalCase)(e))}async createOne(e,s){(0,change_case_helpers_1.kebabCase)(this.modelName)==="user"&&e.password&&(auth_service_1.default.isPasswordHashed(e.password)||(e.password=await auth_service_1.default.hashPassword(e.password)));const a=(0,prisma_helpers_1.getPrismaInstance)(),t=(0,base_service_helpers_1.handleRelationFieldsInBody)(e,{...this.relationFields},["delete","disconnect","update"]);return await a[this.modelName].create((0,deepmerge_helper_1.default)({data:t},s||{}))}async createMany(e,s){const a=(0,prisma_helpers_1.getPrismaInstance)(),t=[];return Array.isArray(e)&&await new Promise(n=>{e.forEach(async(d,i)=>{"password"in d&&this.modelName==="user"&&(auth_service_1.default.isPasswordHashed(d.password)||(e[i].password=await auth_service_1.default.hashPassword(d?.password))),t[i]=(0,base_service_helpers_1.handleRelationFieldsInBody)(e[i],{...this.relationFields},["delete","disconnect","update"]),i===e.length-1&&n(null)})}),await a[this.modelName].createMany((0,deepmerge_helper_1.default)({data:t},s||{}))}async count(e){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].count({where:e})}async findMany(e,s){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].findMany((0,deepmerge_helper_1.default)({where:e},s||{}))}async findById(e,s){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].findUnique((0,deepmerge_helper_1.default)({where:{id:e}},s||{}))}async findOne(e,s){const a=(0,prisma_helpers_1.getPrismaInstance)();return Object.keys(e).length===1&&"id"in e&&e.id!=="me"?a[this.modelName].findUnique((0,deepmerge_helper_1.default)({where:e},s||{})):await a[this.modelName].findFirst((0,deepmerge_helper_1.default)({where:e},s||{}))}async updateOne(e,s,a){const t=(0,prisma_helpers_1.getPrismaInstance)();(0,change_case_helpers_1.kebabCase)(this.modelName)==="user"&&s?.password&&(auth_service_1.default.isPasswordHashed(s.password)||(s.password=await auth_service_1.default.hashPassword(s?.password)));const n=(0,base_service_helpers_1.handleRelationFieldsInBody)(s,{...this.relationFields});return await t[this.modelName].update((0,deepmerge_helper_1.default)({where:e,data:n},a||{}))}async updateMany(e,s,a){const t=(0,prisma_helpers_1.getPrismaInstance)();Array.isArray(s)&&this.modelName==="user"&&await new Promise(d=>{s.forEach(async(i,l)=>{"password"in s[l]&&(auth_service_1.default.isPasswordHashed(i.password)||(s[l].password=await auth_service_1.default.hashPassword(i.password))),l===s.length-1&&d(void 0)})});const n=(0,deepmerge_helper_1.default)({data:s},a||{});return await t[this.modelName].updateMany((0,deepmerge_helper_1.default)({where:e},n))}async deleteOne(e){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].delete({where:e})}async deleteMany(e){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].deleteMany({where:e})}}exports.BaseService=BaseService;function getBaseServices(){const r=(0,models_helpers_1.getModels)(),e={};return r.forEach(s=>{e[`${(0,change_case_helpers_1.camelCase)(s)}`]=new BaseService(s)}),e}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.BaseService=void 0,exports.getBaseServices=getBaseServices;const change_case_helpers_1=require("../../utils/helpers/change-case.helpers"),models_helpers_1=require("../../utils/helpers/models.helpers"),deepmerge_helper_1=__importDefault(require("../../utils/helpers/deepmerge.helper")),base_service_helpers_1=require("./utils/helpers/base.service.helpers"),prisma_helpers_1=require("../../utils/helpers/prisma.helpers"),auth_service_1=__importDefault(require("../auth/auth.service"));class BaseService{constructor(e){this.modelName=(0,change_case_helpers_1.camelCase)(e),this.relationFields=(0,models_helpers_1.getPrismaModelRelations)((0,change_case_helpers_1.pascalCase)(e))}async createOne(e,s){(0,change_case_helpers_1.kebabCase)(this.modelName)==="user"&&e.password&&(auth_service_1.default.isPasswordHashed(e.password)||(e.password=await auth_service_1.default.hashPassword(e.password)));const a=(0,prisma_helpers_1.getPrismaInstance)(),t=(0,base_service_helpers_1.handleRelationFieldsInBody)(e,{...this.relationFields},["delete","disconnect","update"]);return await a[this.modelName].create((0,deepmerge_helper_1.default)({data:t},s||{}))}async createMany(e,s){const a=(0,prisma_helpers_1.getPrismaInstance)(),t=[];return Array.isArray(e)&&await new Promise(n=>{e.forEach(async(d,i)=>{"password"in d&&this.modelName==="user"&&(auth_service_1.default.isPasswordHashed(d.password)||(e[i].password=await auth_service_1.default.hashPassword(d?.password))),t[i]=(0,base_service_helpers_1.handleRelationFieldsInBody)(e[i],{...this.relationFields},["delete","disconnect","update"]),i===e.length-1&&n(null)})}),await a[this.modelName].createMany((0,deepmerge_helper_1.default)({data:t},s||{}))}async count(e){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].count({where:e})}async findMany(e,s){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].findMany((0,deepmerge_helper_1.default)({where:e},s||{}))}async findById(e,s){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].findUnique((0,deepmerge_helper_1.default)({where:{id:e}},s||{}))}async findOne(e,s){const a=(0,prisma_helpers_1.getPrismaInstance)();return Object.keys(e).length===1&&"id"in e&&e.id!=="me"?a[this.modelName].findUnique((0,deepmerge_helper_1.default)({where:e},s||{})):await a[this.modelName].findFirst((0,deepmerge_helper_1.default)({where:e},s||{}))}async updateOne(e,s,a){const t=(0,prisma_helpers_1.getPrismaInstance)();(0,change_case_helpers_1.kebabCase)(this.modelName)==="user"&&s?.password&&(auth_service_1.default.isPasswordHashed(s.password)||(s.password=await auth_service_1.default.hashPassword(s?.password)));const n=(0,base_service_helpers_1.handleRelationFieldsInBody)(s,{...this.relationFields});return await t[this.modelName].update((0,deepmerge_helper_1.default)({where:e,data:n},a||{}))}async updateMany(e,s,a){const t=(0,prisma_helpers_1.getPrismaInstance)();Array.isArray(s)&&this.modelName==="user"&&await new Promise(d=>{s.forEach(async(i,l)=>{"password"in s[l]&&(auth_service_1.default.isPasswordHashed(i.password)||(s[l].password=await auth_service_1.default.hashPassword(i.password))),l===s.length-1&&d(void 0)})});const n=(0,deepmerge_helper_1.default)({data:s},a||{});return await t[this.modelName].updateMany((0,deepmerge_helper_1.default)({where:e},n))}async deleteOne(e){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].delete({where:e})}async deleteMany(e){return await(0,prisma_helpers_1.getPrismaInstance)()[this.modelName].deleteMany({where:e})}}exports.BaseService=BaseService;function getBaseServices(){const r=(0,models_helpers_1.getModels)(),e={};return r.forEach(s=>{e[`${(0,change_case_helpers_1.camelCase)(s)}`]=new BaseService(s)}),e}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolvePrismaQueryOptions=resolvePrismaQueryOptions;const deepmerge_helper_1=__importDefault(require("../../../../utils/helpers/deepmerge.helper"));function resolvePrismaQueryOptions(t,r){if(!t)return{};const n=t,s=n[r]||{};let e=n.queryOptions||{};n.global&&(e=(0,deepmerge_helper_1.default)(e,n.global));const a=getGeneralOptionsForAction(n,r);return a&&(e=(0,deepmerge_helper_1.default)(e,a)),s&&(e=(0,deepmerge_helper_1.default)(e,s)),e}function getGeneralOptionsForAction(t,r){const s={findMany:["find"],findOne:["find"],create:["create","save"],createOne:["create","save","saveOne"],createMany:["create","save","saveMany"],update:["update","save"],updateOne:["update","save","saveOne"],updateMany:["update","save","saveMany"],delete:["delete"],deleteOne:["delete"],deleteMany:["delete"]}[r]||[];let e={};for(const a of s)t[a]&&(e=(0,deepmerge_helper_1.default)(e,t[a]));return Object.keys(e).length>0?e:null}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.resolvePrismaQueryOptions=resolvePrismaQueryOptions;const deepmerge_helper_1=__importDefault(require("../../../../utils/helpers/deepmerge.helper"));function resolvePrismaQueryOptions(t,r){if(!t)return{};const n=t,s=n[r]||{};let e=n.queryOptions||{};n.global&&(e=(0,deepmerge_helper_1.default)(e,n.global));const a=getGeneralOptionsForAction(n,r);return a&&(e=(0,deepmerge_helper_1.default)(e,a)),s&&(e=(0,deepmerge_helper_1.default)(e,s)),e}function getGeneralOptionsForAction(t,r){const s={findMany:["find"],findOne:["find"],create:["create","save"],createOne:["create","save","saveOne"],createMany:["create","save","saveMany"],update:["update","save"],updateOne:["update","save","saveOne"],updateMany:["update","save","saveMany"],delete:["delete"],deleteOne:["delete"],deleteMany:["delete"]}[r]||[];let e={};for(const a of s)t[a]&&(e=(0,deepmerge_helper_1.default)(e,t[a]));return Object.keys(e).length>0?e:null}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupRouters=setupRouters,exports.isEndpointDisabled=isEndpointDisabled,exports.isParentEndpointAllowed=isParentEndpointAllowed;const pluralize_1=__importDefault(require("pluralize")),utils_1=require("../../../../exports/utils"),models_helpers_1=require("../../../../utils/helpers/models.helpers"),auth_service_1=__importDefault(require("../../../auth/auth.service")),base_controller_1=require("../../base.controller"),base_middlewares_1=require("../../base.middlewares"),routers_helpers_1=require("../../../../utils/helpers/routers.helpers");function setupRouters(n,s,p){return n.map(async y=>{const o=(0,utils_1.kebabCase)(y),M=await(0,models_helpers_1.importPrismaModelModules)(o,p),{middlewares:t,authConfigs:a,prismaQueryOptions:d,router:h,dtos:b,schemas:m}=M,e=pluralize_1.default.plural(o),i=new base_controller_1.BaseController(y),r=h?.config||{},O=h||{},l=(c,C)=>O.stack?.some(f=>(f.path===`/api/${c}`||f.path===`api/${c}`||f.path===`api/${c}/`||f.path===`/api/${c}/`)&&f.method.toLowerCase()===C.toLowerCase()),u=c=>{const C=p?.validation;if(C?.resolver==="class-validator")return b?.[c];if(C?.resolver==="zod")return m?.[c]};h?.default&&!r?.disable&&s.use(`/${e}`,h.default),!isEndpointDisabled(r,"createOne")&&!l(`/${e}`,"post")&&s.post(`/${e}`,auth_service_1.default.handleAuthenticationControl("Create",a?.authenticationControl),auth_service_1.default.handleAccessControl("Create",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("create")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"createOne"),...(0,routers_helpers_1.processMiddleware)(t?.beforeCreateOne),i.createOne,...(0,routers_helpers_1.processMiddleware)(t?.afterCreateOne),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"findMany")&&!l(`/${e}`,"get")&&s.get(`/${e}`,auth_service_1.default.handleAuthenticationControl("View",a?.authenticationControl),auth_service_1.default.handleAccessControl("View",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"findMany"),...(0,routers_helpers_1.processMiddleware)(t?.beforeFindMany),i.findMany,...(0,routers_helpers_1.processMiddleware)(t?.afterFindMany),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"createMany")&&!l(`/${e}/many`,"post")&&s.post(`/${e}/many`,auth_service_1.default.handleAuthenticationControl("Create",a?.authenticationControl),auth_service_1.default.handleAccessControl("Create",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("createMany")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"createMany"),...(0,routers_helpers_1.processMiddleware)(t?.beforeCreateMany),i.createMany,...(0,routers_helpers_1.processMiddleware)(t?.afterCreateMany),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"updateMany")&&!l(`/${e}/many`,"patch")&&s.patch(`/${e}/many`,auth_service_1.default.handleAuthenticationControl("Update",a?.authenticationControl),auth_service_1.default.handleAccessControl("Update",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("updateMany")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"updateMany"),...(0,routers_helpers_1.processMiddleware)(t?.beforeUpdateMany),i.updateMany,...(0,routers_helpers_1.processMiddleware)(t?.afterUpdateMany),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"deleteMany")&&!l(`/${e}/many`,"delete")&&s.delete(`/${e}/many`,auth_service_1.default.handleAuthenticationControl("Delete",a?.authenticationControl),auth_service_1.default.handleAccessControl("Delete",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("deleteMany")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"deleteMany"),...(0,routers_helpers_1.processMiddleware)(t?.beforeDeleteMany),i.deleteMany,...(0,routers_helpers_1.processMiddleware)(t?.afterDeleteMany),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"findOne")&&!l(`/${e}/:id`,"get")&&s.get(`/${e}/:id`,auth_service_1.default.handleAuthenticationControl("View",a?.authenticationControl),auth_service_1.default.handleAccessControl("View",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("findOne")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"findOne"),...(0,routers_helpers_1.processMiddleware)(t?.beforeFindOne),i.findOne,...(0,routers_helpers_1.processMiddleware)(t?.afterFindOne),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"updateOne")&&!l(`/${e}/:id`,"patch")&&s.patch(`/${e}/:id`,auth_service_1.default.handleAuthenticationControl("Update",a?.authenticationControl),auth_service_1.default.handleAccessControl("Update",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("update")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"updateOne"),...(0,routers_helpers_1.processMiddleware)(t?.beforeUpdateOne),i.updateOne,...(0,routers_helpers_1.processMiddleware)(t?.afterUpdateOne),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"deleteOne")&&!l(`/${e}/:id`,"delete")&&s.delete(`/${e}/:id`,auth_service_1.default.handleAuthenticationControl("Delete",a?.authenticationControl),auth_service_1.default.handleAccessControl("Delete",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("delete")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"deleteOne"),...(0,routers_helpers_1.processMiddleware)(t?.beforeDeleteOne),i.deleteOne,...(0,routers_helpers_1.processMiddleware)(t?.afterDeleteOne),base_middlewares_1.sendResponse)})}function isEndpointDisabled(n,s){return n?.disable?n.disable===!0?!0:typeof n.disable=="object"?n.disable[s]===!0:!1:!1}function isParentEndpointAllowed(n,s){if(!n?.parent)return!1;const p=n.parent.endpoints;return p==="*"?!0:Array.isArray(p)?p.includes(s):!0}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(n){return n&&n.__esModule?n:{default:n}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.setupRouters=setupRouters,exports.isEndpointDisabled=isEndpointDisabled,exports.isParentEndpointAllowed=isParentEndpointAllowed;const pluralize_1=__importDefault(require("pluralize")),utils_1=require("../../../../exports/utils"),models_helpers_1=require("../../../../utils/helpers/models.helpers"),auth_service_1=__importDefault(require("../../../auth/auth.service")),base_controller_1=require("../../base.controller"),base_middlewares_1=require("../../base.middlewares"),routers_helpers_1=require("../../../../utils/helpers/routers.helpers");function setupRouters(n,s,p){return n.map(async y=>{const o=(0,utils_1.kebabCase)(y),M=await(0,models_helpers_1.importPrismaModelModules)(o,p),{middlewares:t,authConfigs:a,prismaQueryOptions:d,router:h,dtos:b,schemas:m}=M,e=pluralize_1.default.plural(o),i=new base_controller_1.BaseController(y),r=h?.config||{},O=h||{},l=(c,C)=>O.stack?.some(f=>(f.path===`/api/${c}`||f.path===`api/${c}`||f.path===`api/${c}/`||f.path===`/api/${c}/`)&&f.method.toLowerCase()===C.toLowerCase()),u=c=>{const C=p?.validation;if(C?.resolver==="class-validator")return b?.[c];if(C?.resolver==="zod")return m?.[c]};h?.default&&!r?.disable&&s.use(`/${e}`,h.default),!isEndpointDisabled(r,"createOne")&&!l(`/${e}`,"post")&&s.post(`/${e}`,auth_service_1.default.handleAuthenticationControl("Create",a?.authenticationControl),auth_service_1.default.handleAccessControl("Create",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("create")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"createOne"),...(0,routers_helpers_1.processMiddleware)(t?.beforeCreateOne),i.createOne,...(0,routers_helpers_1.processMiddleware)(t?.afterCreateOne),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"findMany")&&!l(`/${e}`,"get")&&s.get(`/${e}`,auth_service_1.default.handleAuthenticationControl("View",a?.authenticationControl),auth_service_1.default.handleAccessControl("View",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"findMany"),...(0,routers_helpers_1.processMiddleware)(t?.beforeFindMany),i.findMany,...(0,routers_helpers_1.processMiddleware)(t?.afterFindMany),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"createMany")&&!l(`/${e}/many`,"post")&&s.post(`/${e}/many`,auth_service_1.default.handleAuthenticationControl("Create",a?.authenticationControl),auth_service_1.default.handleAccessControl("Create",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("createMany")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"createMany"),...(0,routers_helpers_1.processMiddleware)(t?.beforeCreateMany),i.createMany,...(0,routers_helpers_1.processMiddleware)(t?.afterCreateMany),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"updateMany")&&!l(`/${e}/many`,"patch")&&s.patch(`/${e}/many`,auth_service_1.default.handleAuthenticationControl("Update",a?.authenticationControl),auth_service_1.default.handleAccessControl("Update",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("updateMany")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"updateMany"),...(0,routers_helpers_1.processMiddleware)(t?.beforeUpdateMany),i.updateMany,...(0,routers_helpers_1.processMiddleware)(t?.afterUpdateMany),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"deleteMany")&&!l(`/${e}/many`,"delete")&&s.delete(`/${e}/many`,auth_service_1.default.handleAuthenticationControl("Delete",a?.authenticationControl),auth_service_1.default.handleAccessControl("Delete",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("deleteMany")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"deleteMany"),...(0,routers_helpers_1.processMiddleware)(t?.beforeDeleteMany),i.deleteMany,...(0,routers_helpers_1.processMiddleware)(t?.afterDeleteMany),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"findOne")&&!l(`/${e}/:id`,"get")&&s.get(`/${e}/:id`,auth_service_1.default.handleAuthenticationControl("View",a?.authenticationControl),auth_service_1.default.handleAccessControl("View",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("findOne")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"findOne"),...(0,routers_helpers_1.processMiddleware)(t?.beforeFindOne),i.findOne,...(0,routers_helpers_1.processMiddleware)(t?.afterFindOne),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"updateOne")&&!l(`/${e}/:id`,"patch")&&s.patch(`/${e}/:id`,auth_service_1.default.handleAuthenticationControl("Update",a?.authenticationControl),auth_service_1.default.handleAccessControl("Update",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("update")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"updateOne"),...(0,routers_helpers_1.processMiddleware)(t?.beforeUpdateOne),i.updateOne,...(0,routers_helpers_1.processMiddleware)(t?.afterUpdateOne),base_middlewares_1.sendResponse),!isEndpointDisabled(r,"deleteOne")&&!l(`/${e}/:id`,"delete")&&s.delete(`/${e}/:id`,auth_service_1.default.handleAuthenticationControl("Delete",a?.authenticationControl),auth_service_1.default.handleAccessControl("Delete",(0,utils_1.kebabCase)(pluralize_1.default.singular(o)),a?.accessControl||{}),(0,base_middlewares_1.handleRequestBodyValidationAndTransformation)(u("delete")),(0,base_middlewares_1.addPrismaQueryOptionsToRequest)(d,"deleteOne"),...(0,routers_helpers_1.processMiddleware)(t?.beforeDeleteOne),i.deleteOne,...(0,routers_helpers_1.processMiddleware)(t?.afterDeleteOne),base_middlewares_1.sendResponse)})}function isEndpointDisabled(n,s){return n?.disable?n.disable===!0?!0:typeof n.disable=="object"?n.disable[s]===!0:!1:!1}function isParentEndpointAllowed(n,s){if(!n?.parent)return!1;const p=n.parent.endpoints;return p==="*"?!0:Array.isArray(p)?p.includes(s):!0}
|
|
@@ -1 +1 @@
|
|
|
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
|
+
"use strict";var __importDefault=this&&this.__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,4 +1,4 @@
|
|
|
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(`
|
|
1
|
+
"use strict";var __createBinding=this&&this.__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=this&&this.__setModuleDefault||(Object.create?function(e,n){Object.defineProperty(e,"default",{enumerable:!0,value:n})}:function(e,n){e.default=n}),__importStar=this&&this.__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=this&&this.__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
2
|
`)[e.message.split(`
|
|
3
3
|
`).length-1],stack:e.stack?.split(`
|
|
4
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,3 +1,3 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.handleJWTError=handleJWTError,exports.handleJWTExpired=handleJWTExpired,exports.handlePrismaClientValidationError=handlePrismaClientValidationError,exports.handleAuthenticationError=handleAuthenticationError,exports.handleServerNotReachableError=handleServerNotReachableError,exports.handleConnectionTimeoutError=handleConnectionTimeoutError,exports.handleDatabaseNotFoundError=handleDatabaseNotFoundError,exports.handleEnvironmentVariableError=handleEnvironmentVariableError,exports.handleFieldValueTooLargeError=handleFieldValueTooLargeError,exports.handleRecordNotFoundError=handleRecordNotFoundError,exports.handleUniqueConstraintError=handleUniqueConstraintError,exports.handleForeignKeyConstraintError=handleForeignKeyConstraintError,exports.handleConstraintFailedError=handleConstraintFailedError,exports.handleInvalidFieldValueError=handleInvalidFieldValueError,exports.handleInvalidFieldProvidedError=handleInvalidFieldProvidedError,exports.handleDataValidationError=handleDataValidationError,exports.handleQueryParsingError=handleQueryParsingError,exports.handleInvalidQueryFormatError=handleInvalidQueryFormatError,exports.handleRawQueryExecutionError=handleRawQueryExecutionError,exports.handleNullConstraintViolationError=handleNullConstraintViolationError,exports.handleSchemaCreationFailedError=handleSchemaCreationFailedError,exports.handleMigrationAlreadyAppliedError=handleMigrationAlreadyAppliedError,exports.handleMigrationScriptFailedError=handleMigrationScriptFailedError,exports.handleVersionMismatchError=handleVersionMismatchError,exports.handleMigrationFileReadError=handleMigrationFileReadError,exports.handleSchemaDriftError=handleSchemaDriftError,exports.handleSchemaSyntaxError=handleSchemaSyntaxError,exports.handleClientTypeError=handleClientTypeError,exports.handleDynamicQueryError=handleDynamicQueryError,exports.handleRelationLoadingError=handleRelationLoadingError,exports.handleBinaryError=handleBinaryError,exports.handleNetworkError=handleNetworkError,exports.handleUnhandledPromiseError=handleUnhandledPromiseError,exports.handleDataTypeError=handleDataTypeError,exports.handleEmptyResultError=handleEmptyResultError,exports.handleNonExistingRecord=handleNonExistingRecord;const app_error_1=__importDefault(require("./app-error"));function handleJWTError(){return new app_error_1.default("Invalid token. Please log in again!",401)}function handleJWTExpired(){return new app_error_1.default("Your token has expired, Please log again!",401)}function handlePrismaClientValidationError(e){const r=e?.message.split(`
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.handleJWTError=handleJWTError,exports.handleJWTExpired=handleJWTExpired,exports.handlePrismaClientValidationError=handlePrismaClientValidationError,exports.handleAuthenticationError=handleAuthenticationError,exports.handleServerNotReachableError=handleServerNotReachableError,exports.handleConnectionTimeoutError=handleConnectionTimeoutError,exports.handleDatabaseNotFoundError=handleDatabaseNotFoundError,exports.handleEnvironmentVariableError=handleEnvironmentVariableError,exports.handleFieldValueTooLargeError=handleFieldValueTooLargeError,exports.handleRecordNotFoundError=handleRecordNotFoundError,exports.handleUniqueConstraintError=handleUniqueConstraintError,exports.handleForeignKeyConstraintError=handleForeignKeyConstraintError,exports.handleConstraintFailedError=handleConstraintFailedError,exports.handleInvalidFieldValueError=handleInvalidFieldValueError,exports.handleInvalidFieldProvidedError=handleInvalidFieldProvidedError,exports.handleDataValidationError=handleDataValidationError,exports.handleQueryParsingError=handleQueryParsingError,exports.handleInvalidQueryFormatError=handleInvalidQueryFormatError,exports.handleRawQueryExecutionError=handleRawQueryExecutionError,exports.handleNullConstraintViolationError=handleNullConstraintViolationError,exports.handleSchemaCreationFailedError=handleSchemaCreationFailedError,exports.handleMigrationAlreadyAppliedError=handleMigrationAlreadyAppliedError,exports.handleMigrationScriptFailedError=handleMigrationScriptFailedError,exports.handleVersionMismatchError=handleVersionMismatchError,exports.handleMigrationFileReadError=handleMigrationFileReadError,exports.handleSchemaDriftError=handleSchemaDriftError,exports.handleSchemaSyntaxError=handleSchemaSyntaxError,exports.handleClientTypeError=handleClientTypeError,exports.handleDynamicQueryError=handleDynamicQueryError,exports.handleRelationLoadingError=handleRelationLoadingError,exports.handleBinaryError=handleBinaryError,exports.handleNetworkError=handleNetworkError,exports.handleUnhandledPromiseError=handleUnhandledPromiseError,exports.handleDataTypeError=handleDataTypeError,exports.handleEmptyResultError=handleEmptyResultError,exports.handleNonExistingRecord=handleNonExistingRecord;const app_error_1=__importDefault(require("./app-error"));function handleJWTError(){return new app_error_1.default("Invalid token. Please log in again!",401)}function handleJWTExpired(){return new app_error_1.default("Your token has expired, Please log again!",401)}function handlePrismaClientValidationError(e){const r=e?.message.split(`
|
|
2
2
|
`)[e?.message.split(`
|
|
3
3
|
`).length-1];return new app_error_1.default(r,400)}function handleAuthenticationError(e){const r="Authentication failed against the database server. Please check your credentials.";return new app_error_1.default(r,401)}function handleServerNotReachableError(e){const r="The database server is not reachable. Verify your connection string or ensure the server is online.";return new app_error_1.default(r,503)}function handleConnectionTimeoutError(e){const r="Connection to the database timed out. Please check server performance or network connectivity.";return new app_error_1.default(r,504)}function handleDatabaseNotFoundError(e){const r="The specified database does not exist on the server.";return new app_error_1.default(r,404)}function handleEnvironmentVariableError(e){const n=`Missing or invalid environment variables: ${e?.missing||"unknown environment variables"}. Please check your configuration.`;return new app_error_1.default(n,500)}function handleFieldValueTooLargeError(e){const r=`The value for the field "${e?.meta?.field_name}" is too large. Please provide a smaller value.`;return new app_error_1.default(r,400)}function handleRecordNotFoundError(e){const r="No record found for the given query. Ensure the query parameters are correct.";return new app_error_1.default(r,404)}function handleUniqueConstraintError(e){const n=`Duplicate value detected for the unique field(s): ${e?.meta?.target||"unknown field"}. Please use a different value.`;return new app_error_1.default(n,409)}function handleForeignKeyConstraintError(e){const r="Foreign key constraint violation. Ensure that the referenced record exists.";return new app_error_1.default(r,400)}function handleConstraintFailedError(e){const n=`A database constraint "${e?.meta?.constraint||"unknown constraint"}" failed. Please review your input data.`;return new app_error_1.default(n,400)}function handleInvalidFieldValueError(e){const n=`Invalid value provided for the field "${e?.meta?.field_name||"unknown field"}". Please provide a valid value.`;return new app_error_1.default(n,400)}function handleInvalidFieldProvidedError(e){const n=`The field "${e?.meta?.field_name||"unknown field"}" has been provided with an invalid value. Check the data and try again.`;return new app_error_1.default(n,400)}function handleDataValidationError(e){const r="Data validation error occurred. Please ensure all fields meet the required criteria.";return new app_error_1.default(r,400)}function handleQueryParsingError(e){const n=`Failed to parse the query: "${e?.meta?.query||"unknown query"}". Check the syntax and structure.`;return new app_error_1.default(n,400)}function handleInvalidQueryFormatError(e){const n=`The query format is invalid: "${e?.meta?.query||"unknown query"}". Ensure the query adheres to the expected format.`;return new app_error_1.default(n,400)}function handleRawQueryExecutionError(e){const r="An error occurred during the execution of a raw query. Verify the query and try again.";return new app_error_1.default(r,500)}function handleNullConstraintViolationError(e){const n=`The field "${e?.meta?.field_name||"unknown field"}" cannot be null. Please provide a value.`;return new app_error_1.default(n,400)}function handleSchemaCreationFailedError(e){const r="Failed to create the database schema. Verify the schema definition and try again.";return new app_error_1.default(r,500)}function handleMigrationAlreadyAppliedError(e){const n=`The migration "${e?.meta?.migration||"unknown migration"}" has already been applied to the database.`;return new app_error_1.default(n,409)}function handleMigrationScriptFailedError(e){const n=`The migration script "${e?.meta?.migration||"unknown migration"}" failed. Review the script and resolve any issues.`;return new app_error_1.default(n,500)}function handleVersionMismatchError(e){const r="Version mismatch: The database schema and migration versions are inconsistent. Please check and resolve this issue.";return new app_error_1.default(r,400)}function handleMigrationFileReadError(e){const n=`Failed to read the migration file "${e?.meta?.migration_file||"unknown file"}". Ensure the file exists and is accessible.`;return new app_error_1.default(n,500)}function handleSchemaDriftError(e){const r="Schema drift detected: The database schema differs from the expected state. Run migrations or sync schema to resolve.";return new app_error_1.default(r,400)}function handleSchemaSyntaxError(e){const r="Syntax error in the schema file. Please check for typos or invalid syntax in your schema definition.";return new app_error_1.default(r,500)}function handleClientTypeError(e){const r="Type error, Ensure proper usage of methods and correct data types.";return new app_error_1.default(r,400)}function handleDynamicQueryError(e){const r="Error constructing or executing a dynamic query. Verify query structure and parameters.";return new app_error_1.default(r,400)}function handleRelationLoadingError(e){const n=`Error loading relation "${e?.meta?.relation||"unknown relation"}". Ensure it is correctly defined and included in the query.`;return new app_error_1.default(n,400)}function handleBinaryError(e){const n=`Error with Prisma binary "${e?.meta?.binary||"unknown binary"}". Ensure the binary is properly installed and compatible.`;return new app_error_1.default(n,500)}function handleNetworkError(e){const r="Network error: Unable to connect to the database or internet. Please check your network connection.";return new app_error_1.default(r,500)}function handleUnhandledPromiseError(e){const r="Unhandled promise rejection detected. Please check asynchronous code for proper error handling.";return new app_error_1.default(r,500)}function handleDataTypeError(e){const r=e?.meta?.field||"unknown field",n=e?.meta?.expected_type||"unknown type",t=`Invalid data type for field "${r}". Expected type: ${n}.`;return new app_error_1.default(t,400)}function handleEmptyResultError(e){const r="Empty result: No data was found for the given query. Ensure the query criteria are correct.";return new app_error_1.default(r,404)}function handleNonExistingRecord(e){const r=e?.meta?.cause||"Operation could not be completed as the required record was not found";return new app_error_1.default(r,404,e.meta||{},"PrismaRecordNotFound")}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(v){return v&&v.__esModule?v:{default:v}};Object.defineProperty(exports,"__esModule",{value:!0});const app_error_1=__importDefault(require("../error-handler/utils/app-error")),file_upload_service_1=require("./file-upload.service"),path_1=__importDefault(require("path")),fs_1=__importDefault(require("fs")),catch_async_1=__importDefault(require("../error-handler/utils/catch-async")),server_1=require("../../server"),file_upload_helpers_1=require("./utils/helpers/file-upload.helpers"),fs_helpers_1=require("../../utils/helpers/fs.helpers"),models_helpers_1=require("../../utils/helpers/models.helpers");class FileUploadController{constructor(){this.uploadFile=(0,catch_async_1.default)(async(e,i,s)=>{this.middlewares=(0,models_helpers_1.getModelModules)("file-upload")?.middlewares||{};const{fileType:t}=e.params,{format:a,width:p,height:w,resizeTo:n}=e.query,f={format:a,width:p,height:w,resizeTo:n},{documentUploadService:l,fileUploadService:c,imageUploadService:u,videoUploadService:h}=(0,file_upload_service_1.getFileUploadServices)(),{fileUpload:F}=(0,server_1.getArkosConfig)(),U=F?.baseUploadDir||"/uploads",b=path_1.default.resolve(process.cwd(),U,t);try{await(0,fs_helpers_1.accessAsync)(b)}catch{await(0,fs_helpers_1.mkdirAsync)(b,{recursive:!0})}let y;switch(t){case"images":y=u;break;case"videos":y=h;break;case"documents":y=l;break;case"files":y=c;break;default:return s(new app_error_1.default("Invalid file type",400))}y.handleMultipleUpload()(e,i,async d=>{if(d)return s(d);let o;if(e.files&&Array.isArray(e.files)&&e.files.length>0)t==="images"?o=await Promise.all(e.files.map(g=>(0,file_upload_helpers_1.processImage)(e,g.path,f))):o=await Promise.all(e.files.map(g=>(0,file_upload_helpers_1.processFile)(e,g.path))),o=o.filter(g=>g!==null);else if(e.file)t==="images"?o=await(0,file_upload_helpers_1.processImage)(e,e.file.path,f):o=await(0,file_upload_helpers_1.processFile)(e,e.file.path);else return s(new app_error_1.default("No file uploaded",400));const r={success:!0,data:o,message:Array.isArray(o)?`${o.length} files uploaded successfully`:"File uploaded successfully"};if(this.middlewares?.afterUploadFile)return e.responseData=r,e.responseStatus=200,s();i.status(200).json(r)})}),this.deleteFile=(0,catch_async_1.default)(async(e,i,s)=>{this.middlewares=(0,models_helpers_1.getModelModules)("file-upload")?.middlewares||{};const{fileType:t,fileName:a}=e.params,{documentUploadService:p,fileUploadService:w,imageUploadService:n,videoUploadService:f}=(0,file_upload_service_1.getFileUploadServices)();let l;switch(t){case"images":l=n;break;case"videos":l=f;break;case"documents":l=p;break;case"files":l=w;break;default:return s(new app_error_1.default("Invalid file type",400))}try{const{fileUpload:c}=(0,server_1.getArkosConfig)(),u=c?.baseRoute||"/api/uploads";if(new RegExp(`${u}/${t}/${a}`).test(e.originalUrl)){const U=`${e.protocol}://${e.get("host")}${e.originalUrl}`;await l.deleteFileByUrl(U)}else await l.deleteFileByName(a,t);if(this.middlewares.afterDeleteFile)return e.responseStatus=204,s();i.status(204).json()}catch(c){return c instanceof app_error_1.default?s(c):s(new app_error_1.default("File not found",404))}}),this.updateFile=(0,catch_async_1.default)(async(e,i,s)=>{this.middlewares=(0,models_helpers_1.getModelModules)("file-upload")?.middlewares||{};const{fileType:t,fileName:a}=e.params,{format:p,width:w,height:n,resizeTo:f}=e.query,l={format:p,width:w,height:n,resizeTo:f},{documentUploadService:c,fileUploadService:u,imageUploadService:h,videoUploadService:F}=(0,file_upload_service_1.getFileUploadServices)(),{fileUpload:U}=(0,server_1.getArkosConfig)(),b=U?.baseUploadDir||"/uploads",y=path_1.default.resolve(process.cwd(),b,t);try{await(0,fs_helpers_1.accessAsync)(y)}catch{await(0,fs_helpers_1.mkdirAsync)(y,{recursive:!0})}let d;switch(t){case"images":d=h;break;case"videos":d=F;break;case"documents":d=c;break;case"files":d=u;break;default:return s(new app_error_1.default("Invalid file type",400))}d.handleMultipleUpload()(e,i,async o=>{if(o)return s(o);if(!e.file&&(!e.files||!Array.isArray(e.files)||e.files.length===0))return s(new app_error_1.default("No new file uploaded",400));if(a&&a.trim()!=="")try{const m=U?.baseRoute||"/api/uploads";if(new RegExp(`${m}/${t}/${a}`).test(e.originalUrl)){const S=`${e.protocol}://${e.get("host")}${e.originalUrl}`;await d.deleteFileByUrl(S)}else await d.deleteFileByName(a,t)}catch(m){console.warn(`Could not delete old file: ${a}`,m)}let r;e.files&&Array.isArray(e.files)&&e.files.length>0?(t==="images"?r=await Promise.all(e.files.map(m=>(0,file_upload_helpers_1.processImage)(e,m.path,l))):r=await Promise.all(e.files.map(m=>(0,file_upload_helpers_1.processFile)(e,m.path))),r=r.filter(m=>m!==null)):e.file&&(t==="images"?r=await(0,file_upload_helpers_1.processImage)(e,e.file.path,l):r=await(0,file_upload_helpers_1.processFile)(e,e.file.path));const g={success:!0,data:r,message:Array.isArray(r)?a&&a.trim()!==""?`File updated successfully. ${r.length} new files uploaded`:`${r.length} files uploaded successfully`:a&&a.trim()!==""?"File updated successfully":"File uploaded successfully"};if(this.middlewares.afterUpdateFile)return e.responseData=g,e.responseStatus=200,s();i.status(200).json(g)})}),this.streamFile=(0,catch_async_1.default)(async(e,i,s)=>{const{fileName:t,fileType:a}=e.params,p=path_1.default.join(".","uploads",a,t);try{await(0,fs_helpers_1.accessAsync)(p)}catch{throw new app_error_1.default("File not found",404)}const n=(await(0,fs_helpers_1.statAsync)(p)).size,f=e.headers.range;if(f){const[l,c]=f.replace(/bytes=/,"").split("-"),u=parseInt(l,10)||0,h=c?parseInt(c,10):n-1;if(u>=n||h>=n){i.status(416).json({error:"Range Not Satisfiable"});return}i.writeHead(206,{"Content-Range":`bytes ${u}-${h}/${n}`,"Accept-Ranges":"bytes","Content-Length":h-u+1,"Content-Type":"application/octet-stream","Content-Disposition":`inline; filename="${t}"`}),fs_1.default.createReadStream(p,{start:u,end:h}).pipe(i)}else i.writeHead(200,{"Content-Length":n,"Content-Type":"application/octet-stream","Content-Disposition":`inline; filename="${t}"`}),fs_1.default.createReadStream(p).pipe(i)})}}const fileUploadController=new FileUploadController;exports.default=fileUploadController;
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(v){return v&&v.__esModule?v:{default:v}};Object.defineProperty(exports,"__esModule",{value:!0});const app_error_1=__importDefault(require("../error-handler/utils/app-error")),file_upload_service_1=require("./file-upload.service"),path_1=__importDefault(require("path")),fs_1=__importDefault(require("fs")),catch_async_1=__importDefault(require("../error-handler/utils/catch-async")),server_1=require("../../server"),file_upload_helpers_1=require("./utils/helpers/file-upload.helpers"),fs_helpers_1=require("../../utils/helpers/fs.helpers"),models_helpers_1=require("../../utils/helpers/models.helpers");class FileUploadController{constructor(){this.uploadFile=(0,catch_async_1.default)(async(e,i,s)=>{this.middlewares=(0,models_helpers_1.getModelModules)("file-upload")?.middlewares||{};const{fileType:t}=e.params,{format:a,width:p,height:w,resizeTo:n}=e.query,f={format:a,width:p,height:w,resizeTo:n},{documentUploadService:l,fileUploadService:c,imageUploadService:u,videoUploadService:h}=(0,file_upload_service_1.getFileUploadServices)(),{fileUpload:F}=(0,server_1.getArkosConfig)(),U=F?.baseUploadDir||"/uploads",b=path_1.default.resolve(process.cwd(),U,t);try{await(0,fs_helpers_1.accessAsync)(b)}catch{await(0,fs_helpers_1.mkdirAsync)(b,{recursive:!0})}let y;switch(t){case"images":y=u;break;case"videos":y=h;break;case"documents":y=l;break;case"files":y=c;break;default:return s(new app_error_1.default("Invalid file type",400))}y.handleMultipleUpload()(e,i,async d=>{if(d)return s(d);let o;if(e.files&&Array.isArray(e.files)&&e.files.length>0)t==="images"?o=await Promise.all(e.files.map(g=>(0,file_upload_helpers_1.processImage)(e,g.path,f))):o=await Promise.all(e.files.map(g=>(0,file_upload_helpers_1.processFile)(e,g.path))),o=o.filter(g=>g!==null);else if(e.file)t==="images"?o=await(0,file_upload_helpers_1.processImage)(e,e.file.path,f):o=await(0,file_upload_helpers_1.processFile)(e,e.file.path);else return s(new app_error_1.default("No file uploaded",400));const r={success:!0,data:o,message:Array.isArray(o)?`${o.length} files uploaded successfully`:"File uploaded successfully"};if(this.middlewares?.afterUploadFile)return e.responseData=r,e.responseStatus=200,s();i.status(200).json(r)})}),this.deleteFile=(0,catch_async_1.default)(async(e,i,s)=>{this.middlewares=(0,models_helpers_1.getModelModules)("file-upload")?.middlewares||{};const{fileType:t,fileName:a}=e.params,{documentUploadService:p,fileUploadService:w,imageUploadService:n,videoUploadService:f}=(0,file_upload_service_1.getFileUploadServices)();let l;switch(t){case"images":l=n;break;case"videos":l=f;break;case"documents":l=p;break;case"files":l=w;break;default:return s(new app_error_1.default("Invalid file type",400))}try{const{fileUpload:c}=(0,server_1.getArkosConfig)(),u=c?.baseRoute||"/api/uploads";if(new RegExp(`${u}/${t}/${a}`).test(e.originalUrl)){const U=`${e.protocol}://${e.get("host")}${e.originalUrl}`;await l.deleteFileByUrl(U)}else await l.deleteFileByName(a,t);if(this.middlewares.afterDeleteFile)return e.responseStatus=204,s();i.status(204).json()}catch(c){return c instanceof app_error_1.default?s(c):s(new app_error_1.default("File not found",404))}}),this.updateFile=(0,catch_async_1.default)(async(e,i,s)=>{this.middlewares=(0,models_helpers_1.getModelModules)("file-upload")?.middlewares||{};const{fileType:t,fileName:a}=e.params,{format:p,width:w,height:n,resizeTo:f}=e.query,l={format:p,width:w,height:n,resizeTo:f},{documentUploadService:c,fileUploadService:u,imageUploadService:h,videoUploadService:F}=(0,file_upload_service_1.getFileUploadServices)(),{fileUpload:U}=(0,server_1.getArkosConfig)(),b=U?.baseUploadDir||"/uploads",y=path_1.default.resolve(process.cwd(),b,t);try{await(0,fs_helpers_1.accessAsync)(y)}catch{await(0,fs_helpers_1.mkdirAsync)(y,{recursive:!0})}let d;switch(t){case"images":d=h;break;case"videos":d=F;break;case"documents":d=c;break;case"files":d=u;break;default:return s(new app_error_1.default("Invalid file type",400))}d.handleMultipleUpload()(e,i,async o=>{if(o)return s(o);if(!e.file&&(!e.files||!Array.isArray(e.files)||e.files.length===0))return s(new app_error_1.default("No new file uploaded",400));if(a&&a.trim()!=="")try{const m=U?.baseRoute||"/api/uploads";if(new RegExp(`${m}/${t}/${a}`).test(e.originalUrl)){const S=`${e.protocol}://${e.get("host")}${e.originalUrl}`;await d.deleteFileByUrl(S)}else await d.deleteFileByName(a,t)}catch(m){console.warn(`Could not delete old file: ${a}`,m)}let r;e.files&&Array.isArray(e.files)&&e.files.length>0?(t==="images"?r=await Promise.all(e.files.map(m=>(0,file_upload_helpers_1.processImage)(e,m.path,l))):r=await Promise.all(e.files.map(m=>(0,file_upload_helpers_1.processFile)(e,m.path))),r=r.filter(m=>m!==null)):e.file&&(t==="images"?r=await(0,file_upload_helpers_1.processImage)(e,e.file.path,l):r=await(0,file_upload_helpers_1.processFile)(e,e.file.path));const g={success:!0,data:r,message:Array.isArray(r)?a&&a.trim()!==""?`File updated successfully. ${r.length} new files uploaded`:`${r.length} files uploaded successfully`:a&&a.trim()!==""?"File updated successfully":"File uploaded successfully"};if(this.middlewares.afterUpdateFile)return e.responseData=g,e.responseStatus=200,s();i.status(200).json(g)})}),this.streamFile=(0,catch_async_1.default)(async(e,i,s)=>{const{fileName:t,fileType:a}=e.params,p=path_1.default.join(".","uploads",a,t);try{await(0,fs_helpers_1.accessAsync)(p)}catch{throw new app_error_1.default("File not found",404)}const n=(await(0,fs_helpers_1.statAsync)(p)).size,f=e.headers.range;if(f){const[l,c]=f.replace(/bytes=/,"").split("-"),u=parseInt(l,10)||0,h=c?parseInt(c,10):n-1;if(u>=n||h>=n){i.status(416).json({error:"Range Not Satisfiable"});return}i.writeHead(206,{"Content-Range":`bytes ${u}-${h}/${n}`,"Accept-Ranges":"bytes","Content-Length":h-u+1,"Content-Type":"application/octet-stream","Content-Disposition":`inline; filename="${t}"`}),fs_1.default.createReadStream(p,{start:u,end:h}).pipe(i)}else i.writeHead(200,{"Content-Length":n,"Content-Type":"application/octet-stream","Content-Disposition":`inline; filename="${t}"`}),fs_1.default.createReadStream(p).pipe(i)})}}const fileUploadController=new FileUploadController;exports.default=fileUploadController;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getFileUploadRouter=getFileUploadRouter;const express_1=require("express"),models_helpers_1=require("../../utils/helpers/models.helpers"),auth_service_1=__importDefault(require("../auth/auth.service")),file_upload_controller_1=__importDefault(require("./file-upload.controller")),path_1=__importDefault(require("path")),express_2=__importDefault(require("express")),deepmerge_helper_1=__importDefault(require("../../utils/helpers/deepmerge.helper")),base_middlewares_1=require("../base/base.middlewares"),routers_helpers_1=require("../../utils/helpers/routers.helpers"),file_upload_helpers_1=require("./utils/helpers/file-upload.helpers"),router=(0,express_1.Router)();async function getFileUploadRouter(r){const{fileUpload:s}=r,o=await(0,models_helpers_1.importPrismaModelModules)("file-upload",r);let{middlewares:l={},authConfigs:t={}}={};o&&({middlewares:l={},authConfigs:t={}}=o);let e=s?.baseRoute||"/api/uploads/";return e.startsWith("/")||(e="/"+e),e.endsWith("/")||(e=e+"/"),router.get(`${e}*`,auth_service_1.default.handleAuthenticationControl("View",t.authenticationControl),auth_service_1.default.handleAccessControl("View","file-upload",t.accessControl),...(0,routers_helpers_1.processMiddleware)(l?.beforeFindFile),file_upload_helpers_1.adjustRequestUrl,express_2.default.static(path_1.default.resolve(process.cwd(),s?.baseUploadDir||"uploads"),(0,deepmerge_helper_1.default)({maxAge:"1y",etag:!0,lastModified:!0,dotfiles:"ignore",fallthrough:!0,index:!1,cacheControl:!0},s?.expressStaticOptions||{}))),router.post(`${e}:fileType`,auth_service_1.default.handleAuthenticationControl("Create",t.authenticationControl),auth_service_1.default.handleAccessControl("Create","file-upload",t.accessControl),...(0,routers_helpers_1.processMiddleware)(l?.beforeUploadFile),file_upload_controller_1.default.uploadFile,...(0,routers_helpers_1.processMiddleware)(l?.afterUploadFile),base_middlewares_1.sendResponse),router.patch(`${e}:fileType/:fileName`,auth_service_1.default.handleAuthenticationControl("Update",t.authenticationControl),auth_service_1.default.handleAccessControl("Update","file-upload",t.accessControl),...(0,routers_helpers_1.processMiddleware)(l?.beforeUpdateFile),file_upload_controller_1.default.updateFile,...(0,routers_helpers_1.processMiddleware)(l?.afterUpdateFile),base_middlewares_1.sendResponse),router.delete(`${e}:fileType/:fileName`,auth_service_1.default.handleAuthenticationControl("Delete",t.authenticationControl),auth_service_1.default.handleAccessControl("Delete","file-upload",t.accessControl),...(0,routers_helpers_1.processMiddleware)(l?.beforeDeleteFile),file_upload_controller_1.default.deleteFile,...(0,routers_helpers_1.processMiddleware)(l?.afterDeleteFile),base_middlewares_1.sendResponse),router}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getFileUploadRouter=getFileUploadRouter;const express_1=require("express"),models_helpers_1=require("../../utils/helpers/models.helpers"),auth_service_1=__importDefault(require("../auth/auth.service")),file_upload_controller_1=__importDefault(require("./file-upload.controller")),path_1=__importDefault(require("path")),express_2=__importDefault(require("express")),deepmerge_helper_1=__importDefault(require("../../utils/helpers/deepmerge.helper")),base_middlewares_1=require("../base/base.middlewares"),routers_helpers_1=require("../../utils/helpers/routers.helpers"),file_upload_helpers_1=require("./utils/helpers/file-upload.helpers"),router=(0,express_1.Router)();async function getFileUploadRouter(r){const{fileUpload:s}=r,o=await(0,models_helpers_1.importPrismaModelModules)("file-upload",r);let{middlewares:l={},authConfigs:t={}}={};o&&({middlewares:l={},authConfigs:t={}}=o);let e=s?.baseRoute||"/api/uploads/";return e.startsWith("/")||(e="/"+e),e.endsWith("/")||(e=e+"/"),router.get(`${e}*`,auth_service_1.default.handleAuthenticationControl("View",t.authenticationControl),auth_service_1.default.handleAccessControl("View","file-upload",t.accessControl),...(0,routers_helpers_1.processMiddleware)(l?.beforeFindFile),file_upload_helpers_1.adjustRequestUrl,express_2.default.static(path_1.default.resolve(process.cwd(),s?.baseUploadDir||"uploads"),(0,deepmerge_helper_1.default)({maxAge:"1y",etag:!0,lastModified:!0,dotfiles:"ignore",fallthrough:!0,index:!1,cacheControl:!0},s?.expressStaticOptions||{}))),router.post(`${e}:fileType`,auth_service_1.default.handleAuthenticationControl("Create",t.authenticationControl),auth_service_1.default.handleAccessControl("Create","file-upload",t.accessControl),...(0,routers_helpers_1.processMiddleware)(l?.beforeUploadFile),file_upload_controller_1.default.uploadFile,...(0,routers_helpers_1.processMiddleware)(l?.afterUploadFile),base_middlewares_1.sendResponse),router.patch(`${e}:fileType/:fileName`,auth_service_1.default.handleAuthenticationControl("Update",t.authenticationControl),auth_service_1.default.handleAccessControl("Update","file-upload",t.accessControl),...(0,routers_helpers_1.processMiddleware)(l?.beforeUpdateFile),file_upload_controller_1.default.updateFile,...(0,routers_helpers_1.processMiddleware)(l?.afterUpdateFile),base_middlewares_1.sendResponse),router.delete(`${e}:fileType/:fileName`,auth_service_1.default.handleAuthenticationControl("Delete",t.authenticationControl),auth_service_1.default.handleAccessControl("Delete","file-upload",t.accessControl),...(0,routers_helpers_1.processMiddleware)(l?.beforeDeleteFile),file_upload_controller_1.default.deleteFile,...(0,routers_helpers_1.processMiddleware)(l?.afterDeleteFile),base_middlewares_1.sendResponse),router}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getFileUploadServices=exports.FileUploadService=void 0;const multer_1=__importDefault(require("multer")),path_1=__importDefault(require("path")),fs_1=__importDefault(require("fs")),app_error_1=__importDefault(require("../error-handler/utils/app-error")),util_1=require("util"),server_1=require("../../server"),deepmerge_helper_1=__importDefault(require("../../utils/helpers/deepmerge.helper")),file_upload_helpers_1=require("./utils/helpers/file-upload.helpers"),text_helpers_1=require("../../utils/helpers/text.helpers");class FileUploadService{constructor(e,i=1024*1024*5,t=/.*/,l=30){this.fileFilter=(a,s,o)=>{const r=this.allowedFileTypes.test(path_1.default.extname(s.originalname).toLowerCase());this.allowedFileTypes.test(s.mimetype)&&r?o(null,!0):o(new app_error_1.default("Invalid file type",400))},e=e.startsWith("/")?e.substring(1):e,e=e.endsWith("/")?e.slice(0,-1):e,this.uploadDir=path_1.default.resolve(process.cwd(),`${e}/`),this.fileSizeLimit=i,this.allowedFileTypes=t,this.maxCount=l,fs_1.default.existsSync(this.uploadDir)||fs_1.default.mkdirSync(this.uploadDir,{recursive:!0}),this.storage=multer_1.default.diskStorage({destination:(a,s,o)=>{o(null,this.uploadDir)},filename:(a,s,o)=>{const r=Date.now()+"-"+Math.round(Math.random()*1e9);o(null,`${r}${path_1.default.extname(s.originalname)}`)}})}getUpload(){return(0,multer_1.default)({storage:this.storage,fileFilter:this.fileFilter,limits:{fileSize:this.fileSizeLimit}})}handleSingleUpload(e){return(i,t,l)=>{this.getUpload().single(this.getFieldName())(i,t,async s=>{if(s instanceof multer_1.default.MulterError)return l(s);if(s)return l(s);if(e){const{fileUpload:o}=(0,server_1.getArkosConfig)(),r=path_1.default.resolve(process.cwd(),(0,text_helpers_1.removeBothSlashes)(o?.baseUploadDir),(0,text_helpers_1.removeBothSlashes)(e));try{await(0,util_1.promisify)(fs_1.default.stat)(r)&&await(0,util_1.promisify)(fs_1.default.unlink)(r)}catch(d){console.error(d)}}l()})}}handleMultipleUpload(){return(e,i,t)=>{this.getUpload().array(this.getFieldName(),this.maxCount)(e,i,a=>{if(a instanceof multer_1.default.MulterError)return t(a);if(a)return t(a);t()})}}handleDeleteSingleFile(e){return async(i,t,l)=>{const a=path_1.default.join(e);try{await(0,util_1.promisify)(fs_1.default.stat)(a)&&await(0,util_1.promisify)(fs_1.default.unlink)(a)}catch(s){console.error(s)}l()}}async deleteFileByUrl(e){try{const{fileUpload:i}=(0,server_1.getArkosConfig)(),t=i?.baseRoute||"/api/uploads";let l;e.startsWith("http")?l=new URL(e).pathname:l=e;const a=l.indexOf(t);if(a===-1)throw new app_error_1.default("Invalid file URL: base route not found",400);const s=l.substring(a+t.length),o=s.startsWith("/")?s.substring(1):s,r=["images","videos","documents","files"];let d=null,p=null;for(const m of r){const f=o.indexOf(m+"/");if(f!==-1){d=m,p=o.substring(f+m.length+1);break}}if(!d||!p)throw new app_error_1.default("Unable to determine file type or file name from URL",400);const{documentUploadService:h,fileUploadService:g,imageUploadService:c,videoUploadService:v}=(0,exports.getFileUploadServices)();let n;switch(d){case"images":n=path_1.default.join(c.uploadDir,p);break;case"videos":n=path_1.default.join(v.uploadDir,p);break;case"documents":n=path_1.default.join(h.uploadDir,p);break;case"files":n=path_1.default.join(g.uploadDir,p);break;default:throw new app_error_1.default(`Unsupported file type: ${d}`,400)}return await(0,util_1.promisify)(fs_1.default.stat)(n),await(0,util_1.promisify)(fs_1.default.unlink)(n),!0}catch(i){throw i instanceof app_error_1.default?i:i.code==="ENOENT"?new app_error_1.default("File not found",404):new app_error_1.default(`Failed to delete file: ${i.message}`,500)}}getFieldName(){let e="files";return(this.uploadDir.endsWith("images")||this.uploadDir.endsWith("images/"))&&(e="images"),(this.uploadDir.endsWith("videos")||this.uploadDir.endsWith("videos/"))&&(e="videos"),(this.uploadDir.endsWith("documents")||this.uploadDir.endsWith("documents/"))&&(e="documents"),(this.uploadDir.endsWith("files")||this.uploadDir.endsWith("files/"))&&(e="files"),e}async upload(e,i,t={}){const{fileUpload:l}=(0,server_1.getArkosConfig)(),a=l?.baseRoute||"/api/uploads";return new Promise((s,o)=>{((Array.isArray(e.query.multiple)?e.query.multiple[0]=="true":e.query.multiple=="true")?this.getUpload().array(this.getFieldName(),this.maxCount):this.getUpload().single(this.getFieldName()))(e,i,async p=>{if(p)return o(p);try{const g=`${e.get("host")?.includes?.("localhost")?"http":"https"}://${e.get("host")}`,c=this.uploadDir.split("/"),v=(this.uploadDir.endsWith("/")?c[c.length-2]:c[c.length-1])||"files";let n;if(e.files&&Array.isArray(e.files)&&e.files.length>0)this.uploadDir?.includes?.("/images")?n=await Promise.all(e.files.map(f=>(0,file_upload_helpers_1.processImage)(e,f.path,t))):n=await Promise.all(e.files.map(f=>(0,file_upload_helpers_1.processFile)(e,f.path))),n=n.filter(f=>f!==null);else if(e.file)this.uploadDir?.includes?.("/images")?n=await(0,file_upload_helpers_1.processImage)(e,e.file.path,t):n=await(0,file_upload_helpers_1.processFile)(e,e.file.path);else return o(new app_error_1.default("No file uploaded",400));s(n)}catch(h){o(h)}})})}async deleteFileByName(e,i){try{if(!i)throw new app_error_1.default("File type parameter is required",400);const t=["images","videos","documents","files"];if(!t.includes(i))throw new app_error_1.default(`Invalid file type: ${i}. Must be one of: ${t.join(", ")}`,400);const{documentUploadService:l,fileUploadService:a,imageUploadService:s,videoUploadService:o}=(0,exports.getFileUploadServices)();let r;switch(i){case"images":r=s;break;case"videos":r=o;break;case"documents":r=l;break;case"files":r=a;break;default:throw new app_error_1.default(`Unsupported file type: ${i}`,400)}const d=path_1.default.join(r.uploadDir,e);return await(0,util_1.promisify)(fs_1.default.stat)(d),await(0,util_1.promisify)(fs_1.default.unlink)(d),!0}catch(t){throw t instanceof app_error_1.default?t:t.code==="ENOENT"?new app_error_1.default("File not found",404):new app_error_1.default(`Failed to delete file: ${t.message}`,500)}}}exports.FileUploadService=FileUploadService;const getFileUploadServices=()=>{const{fileUpload:u}=(0,server_1.getArkosConfig)(),e=u?.baseUploadDir||"/uploads",i={images:{maxCount:30,maxSize:1024*1024*15,supportedFilesRegex:/jpeg|jpg|png|gif|webp|svg|bmp|tiff|heif|heic|ico|jfif|raw|cr2|nef|orf|sr2|arw|dng|pef|raf|rw2|psd|ai|eps|xcf|jxr|wdp|hdp|jp2|j2k|jpf|jpx|jpm|mj2|avif/},videos:{maxCount:10,maxSize:1024*1024*5096,supportedFilesRegex:/mp4|avi|mov|mkv|flv|wmv|webm|mpg|mpeg|3gp|m4v|ts|rm|rmvb|vob|ogv|dv|qt|asf|m2ts|mts|divx|f4v|swf|mxf|roq|nsv|mvb|svi|mpe|m2v|mp2|mpv|h264|h265|hevc/},documents:{maxCount:30,maxSize:1024*1024*50,supportedFilesRegex:/pdf|doc|docx|xls|xlsx|ppt|pptx|odt|ods|odg|odp|txt|rtf|csv|epub|md|tex|pages|numbers|key|xml|json|yaml|yml|ini|cfg|conf|log|html|htm|xhtml|djvu|mobi|azw|azw3|fb2|lit|ps|wpd|wps|dot|dotx|xlt|xltx|pot|potx|oft|one|onetoc2|opf|oxps|hwp/},files:{maxCount:10,maxSize:1024*1024*5096,supportedFilesRegex:/.*/}},t=u?.restrictions?(0,deepmerge_helper_1.default)(i,u.restrictions):i,l=new FileUploadService(`${e}/images`,t.images.maxSize,t.images.supportedFilesRegex,t.images.maxCount),a=new FileUploadService(`${e}/videos`,t.videos.maxSize,t.videos.supportedFilesRegex,t.videos.maxCount),s=new FileUploadService(`${e}/documents`,t.documents.maxSize,t.documents.supportedFilesRegex,t.documents.maxCount),o=new FileUploadService(`${e}/files`,t.files.maxSize,t.files.supportedFilesRegex,t.files.maxCount);return{imageUploadService:l,videoUploadService:a,documentUploadService:s,fileUploadService:o}};exports.getFileUploadServices=getFileUploadServices;
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getFileUploadServices=exports.FileUploadService=void 0;const multer_1=__importDefault(require("multer")),path_1=__importDefault(require("path")),fs_1=__importDefault(require("fs")),app_error_1=__importDefault(require("../error-handler/utils/app-error")),util_1=require("util"),server_1=require("../../server"),deepmerge_helper_1=__importDefault(require("../../utils/helpers/deepmerge.helper")),file_upload_helpers_1=require("./utils/helpers/file-upload.helpers"),text_helpers_1=require("../../utils/helpers/text.helpers");class FileUploadService{constructor(e,i=1024*1024*5,t=/.*/,l=30){this.fileFilter=(a,s,o)=>{const r=this.allowedFileTypes.test(path_1.default.extname(s.originalname).toLowerCase());this.allowedFileTypes.test(s.mimetype)&&r?o(null,!0):o(new app_error_1.default("Invalid file type",400))},e=e.startsWith("/")?e.substring(1):e,e=e.endsWith("/")?e.slice(0,-1):e,this.uploadDir=path_1.default.resolve(process.cwd(),`${e}/`),this.fileSizeLimit=i,this.allowedFileTypes=t,this.maxCount=l,fs_1.default.existsSync(this.uploadDir)||fs_1.default.mkdirSync(this.uploadDir,{recursive:!0}),this.storage=multer_1.default.diskStorage({destination:(a,s,o)=>{o(null,this.uploadDir)},filename:(a,s,o)=>{const r=Date.now()+"-"+Math.round(Math.random()*1e9);o(null,`${r}${path_1.default.extname(s.originalname)}`)}})}getUpload(){return(0,multer_1.default)({storage:this.storage,fileFilter:this.fileFilter,limits:{fileSize:this.fileSizeLimit}})}handleSingleUpload(e){return(i,t,l)=>{this.getUpload().single(this.getFieldName())(i,t,async s=>{if(s instanceof multer_1.default.MulterError)return l(s);if(s)return l(s);if(e){const{fileUpload:o}=(0,server_1.getArkosConfig)(),r=path_1.default.resolve(process.cwd(),(0,text_helpers_1.removeBothSlashes)(o?.baseUploadDir),(0,text_helpers_1.removeBothSlashes)(e));try{await(0,util_1.promisify)(fs_1.default.stat)(r)&&await(0,util_1.promisify)(fs_1.default.unlink)(r)}catch(d){console.error(d)}}l()})}}handleMultipleUpload(){return(e,i,t)=>{this.getUpload().array(this.getFieldName(),this.maxCount)(e,i,a=>{if(a instanceof multer_1.default.MulterError)return t(a);if(a)return t(a);t()})}}handleDeleteSingleFile(e){return async(i,t,l)=>{const a=path_1.default.join(e);try{await(0,util_1.promisify)(fs_1.default.stat)(a)&&await(0,util_1.promisify)(fs_1.default.unlink)(a)}catch(s){console.error(s)}l()}}async deleteFileByUrl(e){try{const{fileUpload:i}=(0,server_1.getArkosConfig)(),t=i?.baseRoute||"/api/uploads";let l;e.startsWith("http")?l=new URL(e).pathname:l=e;const a=l.indexOf(t);if(a===-1)throw new app_error_1.default("Invalid file URL: base route not found",400);const s=l.substring(a+t.length),o=s.startsWith("/")?s.substring(1):s,r=["images","videos","documents","files"];let d=null,p=null;for(const m of r){const f=o.indexOf(m+"/");if(f!==-1){d=m,p=o.substring(f+m.length+1);break}}if(!d||!p)throw new app_error_1.default("Unable to determine file type or file name from URL",400);const{documentUploadService:h,fileUploadService:g,imageUploadService:c,videoUploadService:v}=(0,exports.getFileUploadServices)();let n;switch(d){case"images":n=path_1.default.join(c.uploadDir,p);break;case"videos":n=path_1.default.join(v.uploadDir,p);break;case"documents":n=path_1.default.join(h.uploadDir,p);break;case"files":n=path_1.default.join(g.uploadDir,p);break;default:throw new app_error_1.default(`Unsupported file type: ${d}`,400)}return await(0,util_1.promisify)(fs_1.default.stat)(n),await(0,util_1.promisify)(fs_1.default.unlink)(n),!0}catch(i){throw i instanceof app_error_1.default?i:i.code==="ENOENT"?new app_error_1.default("File not found",404):new app_error_1.default(`Failed to delete file: ${i.message}`,500)}}getFieldName(){let e="files";return(this.uploadDir.endsWith("images")||this.uploadDir.endsWith("images/"))&&(e="images"),(this.uploadDir.endsWith("videos")||this.uploadDir.endsWith("videos/"))&&(e="videos"),(this.uploadDir.endsWith("documents")||this.uploadDir.endsWith("documents/"))&&(e="documents"),(this.uploadDir.endsWith("files")||this.uploadDir.endsWith("files/"))&&(e="files"),e}async upload(e,i,t={}){const{fileUpload:l}=(0,server_1.getArkosConfig)(),a=l?.baseRoute||"/api/uploads";return new Promise((s,o)=>{((Array.isArray(e.query.multiple)?e.query.multiple[0]=="true":e.query.multiple=="true")?this.getUpload().array(this.getFieldName(),this.maxCount):this.getUpload().single(this.getFieldName()))(e,i,async p=>{if(p)return o(p);try{const g=`${e.get("host")?.includes?.("localhost")?"http":"https"}://${e.get("host")}`,c=this.uploadDir.split("/"),v=(this.uploadDir.endsWith("/")?c[c.length-2]:c[c.length-1])||"files";let n;if(e.files&&Array.isArray(e.files)&&e.files.length>0)this.uploadDir?.includes?.("/images")?n=await Promise.all(e.files.map(f=>(0,file_upload_helpers_1.processImage)(e,f.path,t))):n=await Promise.all(e.files.map(f=>(0,file_upload_helpers_1.processFile)(e,f.path))),n=n.filter(f=>f!==null);else if(e.file)this.uploadDir?.includes?.("/images")?n=await(0,file_upload_helpers_1.processImage)(e,e.file.path,t):n=await(0,file_upload_helpers_1.processFile)(e,e.file.path);else return o(new app_error_1.default("No file uploaded",400));s(n)}catch(h){o(h)}})})}async deleteFileByName(e,i){try{if(!i)throw new app_error_1.default("File type parameter is required",400);const t=["images","videos","documents","files"];if(!t.includes(i))throw new app_error_1.default(`Invalid file type: ${i}. Must be one of: ${t.join(", ")}`,400);const{documentUploadService:l,fileUploadService:a,imageUploadService:s,videoUploadService:o}=(0,exports.getFileUploadServices)();let r;switch(i){case"images":r=s;break;case"videos":r=o;break;case"documents":r=l;break;case"files":r=a;break;default:throw new app_error_1.default(`Unsupported file type: ${i}`,400)}const d=path_1.default.join(r.uploadDir,e);return await(0,util_1.promisify)(fs_1.default.stat)(d),await(0,util_1.promisify)(fs_1.default.unlink)(d),!0}catch(t){throw t instanceof app_error_1.default?t:t.code==="ENOENT"?new app_error_1.default("File not found",404):new app_error_1.default(`Failed to delete file: ${t.message}`,500)}}}exports.FileUploadService=FileUploadService;const getFileUploadServices=()=>{const{fileUpload:u}=(0,server_1.getArkosConfig)(),e=u?.baseUploadDir||"/uploads",i={images:{maxCount:30,maxSize:1024*1024*15,supportedFilesRegex:/jpeg|jpg|png|gif|webp|svg|bmp|tiff|heif|heic|ico|jfif|raw|cr2|nef|orf|sr2|arw|dng|pef|raf|rw2|psd|ai|eps|xcf|jxr|wdp|hdp|jp2|j2k|jpf|jpx|jpm|mj2|avif/},videos:{maxCount:10,maxSize:1024*1024*5096,supportedFilesRegex:/mp4|avi|mov|mkv|flv|wmv|webm|mpg|mpeg|3gp|m4v|ts|rm|rmvb|vob|ogv|dv|qt|asf|m2ts|mts|divx|f4v|swf|mxf|roq|nsv|mvb|svi|mpe|m2v|mp2|mpv|h264|h265|hevc/},documents:{maxCount:30,maxSize:1024*1024*50,supportedFilesRegex:/pdf|doc|docx|xls|xlsx|ppt|pptx|odt|ods|odg|odp|txt|rtf|csv|epub|md|tex|pages|numbers|key|xml|json|yaml|yml|ini|cfg|conf|log|html|htm|xhtml|djvu|mobi|azw|azw3|fb2|lit|ps|wpd|wps|dot|dotx|xlt|xltx|pot|potx|oft|one|onetoc2|opf|oxps|hwp/},files:{maxCount:10,maxSize:1024*1024*5096,supportedFilesRegex:/.*/}},t=u?.restrictions?(0,deepmerge_helper_1.default)(i,u.restrictions):i,l=new FileUploadService(`${e}/images`,t.images.maxSize,t.images.supportedFilesRegex,t.images.maxCount),a=new FileUploadService(`${e}/videos`,t.videos.maxSize,t.videos.supportedFilesRegex,t.videos.maxCount),s=new FileUploadService(`${e}/documents`,t.documents.maxSize,t.documents.supportedFilesRegex,t.documents.maxCount),o=new FileUploadService(`${e}/files`,t.files.maxSize,t.files.supportedFilesRegex,t.files.maxCount);return{imageUploadService:l,videoUploadService:a,documentUploadService:s,fileUploadService:o}};exports.getFileUploadServices=getFileUploadServices;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.processImage=exports.processFile=void 0,exports.adjustRequestUrl=adjustRequestUrl,exports.extractRequestInfo=extractRequestInfo;const fs_1=__importDefault(require("fs")),path_1=__importDefault(require("path")),sharp_1=__importDefault(require("sharp")),util_1=require("util"),server_1=require("../../../../server"),mimetype_1=__importDefault(require("mimetype")),fs_helpers_1=require("../../../../utils/helpers/fs.helpers");function adjustRequestUrl(e,a,r){const{fileUpload:t}=(0,server_1.getArkosConfig)();e.url=e.url.replace(t?.baseRoute+"/"||"/api/uploads/","/"),e.url=e.url.replace(t?.baseRoute||"/api/uploads/","/"),r()}function extractRequestInfo(e){const{fileUpload:a}=(0,server_1.getArkosConfig)(),t=`${e.headers["x-forwarded-proto"]==="https"?"https":"http"}://${e.get?.("host")}`,i=a?.baseRoute||"/api/uploads";return{baseURL:t,baseRoute:i}}const generateRelativePath=(e,a)=>{const{fileUpload:r}=(0,server_1.getArkosConfig)(),t=r?.baseUploadDir||"/uploads";return t.startsWith("..")?path_1.default.join(a,path_1.default.basename(e)):(0,fs_helpers_1.fullCleanCwd)(e.replace(`${t}/`,"").replace(`/${t}/`,"").replace(`/${t}`,"").replace(`${t}`,""))},processFile=async(e,a)=>{const{baseURL:r,baseRoute:t}=extractRequestInfo(e),i=generateRelativePath(a,e.params.fileType);return`${r}${t==="/"?"":t}/${i}`};exports.processFile=processFile;const processImage=async(e,a,r)=>{const{baseURL:t,baseRoute:i}=extractRequestInfo(e),l=path_1.default.extname(a).toLowerCase(),p=l.replace(".",""),u=r.format||p;if(!mimetype_1.default.lookup(l)?.includes?.("image")){const s=generateRelativePath(a,e.params.fileType);return`${t}${i}/${s}`}const d=`${path_1.default.basename(a,l)}_${Date.now()}${l}`,n=path_1.default.join(path_1.default.dirname(a),d);try{let s=(0,sharp_1.default)(a);const o=await s.metadata();if(r.resizeTo&&o.width&&o.height){const c=r.resizeTo/Math.min(o.width,o.height),h=Math.round(o.width*c),m=Math.round(o.height*c);s=s.resize(h,m)}else(r.width||r.height)&&(s=s.resize(r.width||null,r.height||null,{fit:"inside"}));u==="webp"?s=s.toFormat("webp"):(u==="jpeg"||u==="jpg")&&(s=s.toFormat("jpeg")),await s.toFile(n),await(0,util_1.promisify)(fs_1.default.rename)(n,a);const f=generateRelativePath(a,e?.params.fileType);return`${t}${i}/${f}`}catch(s){try{await(0,util_1.promisify)(fs_1.default.stat)(n),await(0,util_1.promisify)(fs_1.default.unlink)(n)}catch{}throw s}};exports.processImage=processImage;
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.processImage=exports.processFile=void 0,exports.adjustRequestUrl=adjustRequestUrl,exports.extractRequestInfo=extractRequestInfo;const fs_1=__importDefault(require("fs")),path_1=__importDefault(require("path")),sharp_1=__importDefault(require("sharp")),util_1=require("util"),server_1=require("../../../../server"),mimetype_1=__importDefault(require("mimetype")),fs_helpers_1=require("../../../../utils/helpers/fs.helpers");function adjustRequestUrl(e,a,r){const{fileUpload:t}=(0,server_1.getArkosConfig)();e.url=e.url.replace(t?.baseRoute+"/"||"/api/uploads/","/"),e.url=e.url.replace(t?.baseRoute||"/api/uploads/","/"),r()}function extractRequestInfo(e){const{fileUpload:a}=(0,server_1.getArkosConfig)(),t=`${e.headers["x-forwarded-proto"]==="https"?"https":"http"}://${e.get?.("host")}`,i=a?.baseRoute||"/api/uploads";return{baseURL:t,baseRoute:i}}const generateRelativePath=(e,a)=>{const{fileUpload:r}=(0,server_1.getArkosConfig)(),t=r?.baseUploadDir||"/uploads";return t.startsWith("..")?path_1.default.join(a,path_1.default.basename(e)):(0,fs_helpers_1.fullCleanCwd)(e.replace(`${t}/`,"").replace(`/${t}/`,"").replace(`/${t}`,"").replace(`${t}`,""))},processFile=async(e,a)=>{const{baseURL:r,baseRoute:t}=extractRequestInfo(e),i=generateRelativePath(a,e.params.fileType);return`${r}${t==="/"?"":t}/${i}`};exports.processFile=processFile;const processImage=async(e,a,r)=>{const{baseURL:t,baseRoute:i}=extractRequestInfo(e),l=path_1.default.extname(a).toLowerCase(),p=l.replace(".",""),u=r.format||p;if(!mimetype_1.default.lookup(l)?.includes?.("image")){const s=generateRelativePath(a,e.params.fileType);return`${t}${i}/${s}`}const d=`${path_1.default.basename(a,l)}_${Date.now()}${l}`,n=path_1.default.join(path_1.default.dirname(a),d);try{let s=(0,sharp_1.default)(a);const o=await s.metadata();if(r.resizeTo&&o.width&&o.height){const c=r.resizeTo/Math.min(o.width,o.height),h=Math.round(o.width*c),m=Math.round(o.height*c);s=s.resize(h,m)}else(r.width||r.height)&&(s=s.resize(r.width||null,r.height||null,{fit:"inside"}));u==="webp"?s=s.toFormat("webp"):(u==="jpeg"||u==="jpg")&&(s=s.toFormat("jpeg")),await s.toFile(n),await(0,util_1.promisify)(fs_1.default.rename)(n,a);const f=generateRelativePath(a,e?.params.fileType);return`${t}${i}/${f}`}catch(s){try{await(0,util_1.promisify)(fs_1.default.stat)(n),await(0,util_1.promisify)(fs_1.default.unlink)(n)}catch{}throw s}};exports.processImage=processImage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __createBinding=Object.create?function(t,e,n,r){r===void 0&&(r=n);var s=Object.getOwnPropertyDescriptor(e,n);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,s)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]},__setModuleDefault=Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e},__importStar=function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(r[r.length]=s);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),s=0;s<r.length;s++)r[s]!=="default"&&__createBinding(n,e,r[s]);return __setModuleDefault(n,e),n}}(),__importDefault=function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSwaggerRouter=getSwaggerRouter;const express_1=require("express"),swagger_jsdoc_1=__importDefault(require("swagger-jsdoc")),deepmerge_helper_1=__importDefault(require("../../utils/helpers/deepmerge.helper")),swagger_router_helpers_1=require("./utils/helpers/swagger.router.helpers"),missing_json_schemas_generator_1=__importDefault(require("./utils/helpers/missing-json-schemas-generator")),get_swagger_default_configs_1=__importDefault(require("./utils/helpers/get-swagger-default-configs")),scalar=__importStar(require("@scalar/express-api-reference")),swaggerRouter=(0,express_1.Router)();async function getSwaggerRouter(t){let e=await(0,swagger_router_helpers_1.getOpenAPIJsonSchemasByConfigMode)(t);const n=await(0,swagger_router_helpers_1.generatePathsForModels)(t);e={...e,...await missing_json_schemas_generator_1.default.generateMissingJsonSchemas(n,e,t)};const r=(0,deepmerge_helper_1.default)(await(0,get_swagger_default_configs_1.default)(n,e)||{},t.swagger||{}),{definition:s,...a}=r?.options,i=(0,swagger_jsdoc_1.default)({definition:s,...a});return swaggerRouter.use(r.endpoint,scalar.apiReference({content:i,...r?.scalarApiReferenceConfiguration})),swaggerRouter}
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(t,e,n,r){r===void 0&&(r=n);var s=Object.getOwnPropertyDescriptor(e,n);(!s||("get"in s?!e.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return e[n]}}),Object.defineProperty(t,r,s)}:function(t,e,n,r){r===void 0&&(r=n),t[r]=e[n]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}:function(t,e){t.default=e}),__importStar=this&&this.__importStar||function(){var t=function(e){return t=Object.getOwnPropertyNames||function(n){var r=[];for(var s in n)Object.prototype.hasOwnProperty.call(n,s)&&(r[r.length]=s);return r},t(e)};return function(e){if(e&&e.__esModule)return e;var n={};if(e!=null)for(var r=t(e),s=0;s<r.length;s++)r[s]!=="default"&&__createBinding(n,e,r[s]);return __setModuleDefault(n,e),n}}(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getSwaggerRouter=getSwaggerRouter;const express_1=require("express"),swagger_jsdoc_1=__importDefault(require("swagger-jsdoc")),deepmerge_helper_1=__importDefault(require("../../utils/helpers/deepmerge.helper")),swagger_router_helpers_1=require("./utils/helpers/swagger.router.helpers"),missing_json_schemas_generator_1=__importDefault(require("./utils/helpers/missing-json-schemas-generator")),get_swagger_default_configs_1=__importDefault(require("./utils/helpers/get-swagger-default-configs")),scalar=__importStar(require("@scalar/express-api-reference")),swaggerRouter=(0,express_1.Router)();async function getSwaggerRouter(t){let e=await(0,swagger_router_helpers_1.getOpenAPIJsonSchemasByConfigMode)(t);const n=await(0,swagger_router_helpers_1.generatePathsForModels)(t);e={...e,...await missing_json_schemas_generator_1.default.generateMissingJsonSchemas(n,e,t)};const r=(0,deepmerge_helper_1.default)(await(0,get_swagger_default_configs_1.default)(n,e)||{},t.swagger||{}),{definition:s,...a}=r?.options,i=(0,swagger_jsdoc_1.default)({definition:s,...a});return swaggerRouter.use(r.endpoint,scalar.apiReference({content:i,...r?.scalarApiReferenceConfiguration})),swaggerRouter}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=getSwaggerDefaultConfig;const text_helpers_1=require("../../../../utils/helpers/text.helpers"),port_and_host_allocator_1=__importDefault(require("../../../../utils/features/port-and-host-allocator"));async function getSwaggerDefaultConfig(e,r){const t=await port_and_host_allocator_1.default.getHostAndAvailablePort({});return{endpoint:"/docs",mode:"prisma",strict:!1,options:{definition:{openapi:"3.0.0",info:{title:"Powered By Arkos.js",version:"1.0.0",description:"This API was automatically generated by Arkos.js, read more about at www.arkosjs.com"},servers:[{url:`http://${t.host}:${t.port}`,description:`Local ${(0,text_helpers_1.capitalize)(process.env.NODE_ENV||"development")} Server`}],paths:e,components:{schemas:r||{},securitySchemes:{BearerAuth:{type:"http",scheme:"bearer",bearerFormat:"JWT"}}},security:[]},apis:["./src/routers/*.router.{ts,js}","./src/modules/**/*.router.{ts,js}"],deepLinking:!0,tryItOutEnabled:!0,persistAuthorization:!1},scalarApiReferenceConfiguration:{theme:"deepSpace",darkMode:!0,layout:"modern",showSidebar:!0,hideDownloadButton:!1,metaData:{title:"Arkos.js API Documentation",description:"API documentation generated by Arkos.js"},pageTitle:"Arkos.js API Documentation"}}}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=getSwaggerDefaultConfig;const text_helpers_1=require("../../../../utils/helpers/text.helpers"),port_and_host_allocator_1=__importDefault(require("../../../../utils/features/port-and-host-allocator"));async function getSwaggerDefaultConfig(e,r){const t=await port_and_host_allocator_1.default.getHostAndAvailablePort({});return{endpoint:"/docs",mode:"prisma",strict:!1,options:{definition:{openapi:"3.0.0",info:{title:"Powered By Arkos.js",version:"1.0.0",description:"This API was automatically generated by Arkos.js, read more about at www.arkosjs.com"},servers:[{url:`http://${t.host}:${t.port}`,description:`Local ${(0,text_helpers_1.capitalize)(process.env.NODE_ENV||"development")} Server`}],paths:e,components:{schemas:r||{},securitySchemes:{BearerAuth:{type:"http",scheme:"bearer",bearerFormat:"JWT"}}},security:[]},apis:["./src/routers/*.router.{ts,js}","./src/modules/**/*.router.{ts,js}"],deepLinking:!0,tryItOutEnabled:!0,persistAuthorization:!1},scalarApiReferenceConfiguration:{theme:"deepSpace",darkMode:!0,layout:"modern",showSidebar:!0,hideDownloadButton:!1,metaData:{title:"Arkos.js API Documentation",description:"API documentation generated by Arkos.js"},pageTitle:"Arkos.js API Documentation"}}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.generatePrismaJsonSchemas=generatePrismaJsonSchemas;const models_helpers_1=require("../../../../../utils/helpers/models.helpers"),enhaced_prisma_json_schema_generator_1=__importDefault(require("../../../../../utils/prisma/enhaced-prisma-json-schema-generator"));async function generatePrismaJsonSchemas(e){const t=[...(0,models_helpers_1.getModels)(),"auth"];try{return(await Promise.all(t.map(async s=>await enhaced_prisma_json_schema_generator_1.default.generateModelSchemas({modelName:s,arkosConfig:e})))).reduce((s,a)=>({...s,...a}),{})}catch(r){throw console.error(r),r}}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.generatePrismaJsonSchemas=generatePrismaJsonSchemas;const models_helpers_1=require("../../../../../utils/helpers/models.helpers"),enhaced_prisma_json_schema_generator_1=__importDefault(require("../../../../../utils/prisma/enhaced-prisma-json-schema-generator"));async function generatePrismaJsonSchemas(e){const t=[...(0,models_helpers_1.getModels)(),"auth"];try{return(await Promise.all(t.map(async s=>await enhaced_prisma_json_schema_generator_1.default.generateModelSchemas({modelName:s,arkosConfig:e})))).reduce((s,a)=>({...s,...a}),{})}catch(r){throw console.error(r),r}}
|
package/dist/cjs/modules/swagger/utils/helpers/json-schema-generators/generate-zod-json-schemas.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=generateZodJsonSchemas;const models_helpers_1=require("../../../../../utils/helpers/models.helpers"),zod_to_json_schema_1=__importDefault(require("zod-to-json-schema")),swagger_router_helpers_1=require("../swagger.router.helpers");async function generateZodJsonSchemas(){const e=[...(0,models_helpers_1.getModels)(),"auth"],r={};return e.forEach(s=>{const o=(0,models_helpers_1.getModelModules)(s);o?.schemas&&Object.entries(o.schemas).forEach(([c,a])=>{if(a)try{const t=(0,zod_to_json_schema_1.default)(a),n=(0,swagger_router_helpers_1.getCorrectJsonSchemaName)(c,s,"Schema");r[n]=t}catch(t){console.warn(`Failed to generate schema for ${c} ${s}:`,t)}})}),r}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=generateZodJsonSchemas;const models_helpers_1=require("../../../../../utils/helpers/models.helpers"),zod_to_json_schema_1=__importDefault(require("zod-to-json-schema")),swagger_router_helpers_1=require("../swagger.router.helpers");async function generateZodJsonSchemas(){const e=[...(0,models_helpers_1.getModels)(),"auth"],r={};return e.forEach(s=>{const o=(0,models_helpers_1.getModelModules)(s);o?.schemas&&Object.entries(o.schemas).forEach(([c,a])=>{if(a)try{const t=(0,zod_to_json_schema_1.default)(a),n=(0,swagger_router_helpers_1.getCorrectJsonSchemaName)(c,s,"Schema");r[n]=t}catch(t){console.warn(`Failed to generate schema for ${c} ${s}:`,t)}})}),r}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.generatePrismaModelMainRoutesPaths=generatePrismaModelMainRoutesPaths;const swagger_router_helpers_1=require("../../swagger.router.helpers"),pluralize_1=__importDefault(require("pluralize")),base_router_helpers_1=require("../../../../../base/utils/helpers/base.router.helpers"),utils_1=require("../../../../../../exports/utils"),models_helpers_1=require("../../../../../../utils/helpers/models.helpers");async function generatePrismaModelMainRoutesPaths(a,i={},c){const p=(0,utils_1.kebabCase)(a),t=pluralize_1.default.plural(p),n=(0,utils_1.pascalCase)(a),e=(0,swagger_router_helpers_1.kebabToHuman)(p),r=pluralize_1.default.plural(e),o=(await(0,models_helpers_1.importPrismaModelModules)(a,c))?.router?.config;if(o?.disable===!0)return i;const d=async s=>{const u=c.swagger?.mode;if(c.swagger?.strict)return u||"prisma";const l=s;return await(0,models_helpers_1.localValidatorFileExists)(l,a,c)&&u||"prisma"};if(!(0,base_router_helpers_1.isEndpointDisabled)(o,"createOne")){i[`/api/${t}`]||(i[`/api/${t}`]={});const s=await d("create");i[`/api/${t}`].post={tags:[r],summary:`Create a new ${e}`,description:`Creates a new ${e} record in the system`,operationId:`create${n}`,requestBody:{description:`${e} data to create`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`Create${n}`,s)}}}},responses:{201:{description:`${e} created successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`${n}`,s)}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"}},security:[{BearerAuth:[]}]}}if(!(0,base_router_helpers_1.isEndpointDisabled)(o,"findMany")){i[`/api/${t}`]||(i[`/api/${t}`]={});const s=await d("findMany");i[`/api/${t}`].get={tags:[r],summary:`Get ${r}`,description:`Retrieves a paginated list of ${r} with optional filtering and sorting`,operationId:`find${pluralize_1.default.plural(n)}`,parameters:[{name:"filters",in:"query",description:"Filter criteria in JSON format",schema:{type:"string"}},{name:"sort",in:"query",description:"Sort field (prefix with '-' for descending order)",schema:{type:"string"}},{name:"page",in:"query",description:"Page number (starts from 1)",schema:{type:"integer",minimum:1}},{name:"limit",in:"query",description:"Number of items per page",schema:{type:"integer",minimum:1,maximum:100}},{name:"fields",in:"query",description:"Comma-separated list of fields to include in response",schema:{type:"string"}}],responses:{200:{description:`List of ${r} retrieved successfully`,content:{"application/json":{schema:{type:"object",properties:{total:{type:"integer",description:"Total number of records matching the criteria"},results:{type:"integer",description:"Number of records returned in current page"},data:{type:"array",items:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`FindMany${n}`,s)}}}}}}},401:{description:"Authentication required"},403:{description:"Insufficient permissions"}},security:[{BearerAuth:[]}]}}if(!(0,base_router_helpers_1.isEndpointDisabled)(o,"createMany")){const s=await d("createMany");i[`/api/${t}/many`]={post:{tags:[r],summary:`Create multiple ${r}`,description:`Creates multiple ${r} records in a single batch operation`,operationId:`createMany${n}`,requestBody:{description:`Array of ${e} data to create`,required:!0,content:{"application/json":{schema:{type:"array",items:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`CreateMany${n}`,s)}}}}},responses:{201:{description:`${r} created successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records created"}}}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"}},security:[{BearerAuth:[]}]}}}if(!(0,base_router_helpers_1.isEndpointDisabled)(o,"updateMany")){i[`/api/${t}/many`]||(i[`/api/${t}/many`]={});const s=await d("updateMany");i[`/api/${t}/many`].patch={tags:[r],summary:`Update multiple ${r}`,description:`Updates multiple ${r} records that match the specified filter criteria`,operationId:`updateMany${n}`,parameters:[{name:"filters",in:"query",description:"Filter criteria in JSON format (required)",required:!0,schema:{type:"string"}}],requestBody:{description:`Partial ${e} data to update`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`UpdateMany${n}`,s)}}}},responses:{200:{description:`${r} updated successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records updated"}}}}}},400:{description:"Invalid input data or missing filter criteria"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"}},security:[{BearerAuth:[]}]}}if((0,base_router_helpers_1.isEndpointDisabled)(o,"deleteMany")||(i[`/api/${t}/many`]||(i[`/api/${t}/many`]={}),i[`/api/${t}/many`].delete={tags:[r],summary:`Delete multiple ${r}`,description:`Deletes multiple ${r} records that match the specified filter criteria`,operationId:`deleteMany${n}`,parameters:[{name:"filters",in:"query",description:"Filter criteria in JSON format (required)",required:!0,schema:{type:"string"}}],responses:{200:{description:`${r} deleted successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records deleted"}}}}}},400:{description:"Missing filter criteria"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"}},security:[{BearerAuth:[]}]}),!(0,base_router_helpers_1.isEndpointDisabled)(o,"findOne")){const s=await d("findOne");i[`/api/${t}/{id}`]={get:{tags:[r],summary:`Get ${e} by ID`,description:`Retrieves a single ${e} record by its unique identifier`,operationId:`find${n}ById`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}}],responses:{200:{description:`${e} retrieved successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`FindOne${n}`,s)}}}},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}}if(!(0,base_router_helpers_1.isEndpointDisabled)(o,"updateOne")){i[`/api/${t}/{id}`]||(i[`/api/${t}/{id}`]={});const s=await d("update");i[`/api/${t}/{id}`].patch={tags:[r],summary:`Update ${e} by ID`,description:`Updates a single ${e} record by its unique identifier`,operationId:`update${n}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}}],requestBody:{description:`Partial ${e} data to update`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`Update${n}`,s)}}}},responses:{200:{description:`${e} updated successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`${n}`,s)}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}(0,base_router_helpers_1.isEndpointDisabled)(o,"deleteOne")||(i[`/api/${t}/{id}`]||(i[`/api/${t}/{id}`]={}),i[`/api/${t}/{id}`].delete={tags:[r],summary:`Delete ${e} by ID`,description:`Permanently deletes a single ${e} record by its unique identifier`,operationId:`delete${n}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}}],responses:{204:{description:`${e} deleted successfully`},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]})}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(a){return a&&a.__esModule?a:{default:a}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.generatePrismaModelMainRoutesPaths=generatePrismaModelMainRoutesPaths;const swagger_router_helpers_1=require("../../swagger.router.helpers"),pluralize_1=__importDefault(require("pluralize")),base_router_helpers_1=require("../../../../../base/utils/helpers/base.router.helpers"),utils_1=require("../../../../../../exports/utils"),models_helpers_1=require("../../../../../../utils/helpers/models.helpers");async function generatePrismaModelMainRoutesPaths(a,i={},c){const p=(0,utils_1.kebabCase)(a),t=pluralize_1.default.plural(p),n=(0,utils_1.pascalCase)(a),e=(0,swagger_router_helpers_1.kebabToHuman)(p),r=pluralize_1.default.plural(e),o=(await(0,models_helpers_1.importPrismaModelModules)(a,c))?.router?.config;if(o?.disable===!0)return i;const d=async s=>{const u=c.swagger?.mode;if(c.swagger?.strict)return u||"prisma";const l=s;return await(0,models_helpers_1.localValidatorFileExists)(l,a,c)&&u||"prisma"};if(!(0,base_router_helpers_1.isEndpointDisabled)(o,"createOne")){i[`/api/${t}`]||(i[`/api/${t}`]={});const s=await d("create");i[`/api/${t}`].post={tags:[r],summary:`Create a new ${e}`,description:`Creates a new ${e} record in the system`,operationId:`create${n}`,requestBody:{description:`${e} data to create`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`Create${n}`,s)}}}},responses:{201:{description:`${e} created successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`${n}`,s)}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"}},security:[{BearerAuth:[]}]}}if(!(0,base_router_helpers_1.isEndpointDisabled)(o,"findMany")){i[`/api/${t}`]||(i[`/api/${t}`]={});const s=await d("findMany");i[`/api/${t}`].get={tags:[r],summary:`Get ${r}`,description:`Retrieves a paginated list of ${r} with optional filtering and sorting`,operationId:`find${pluralize_1.default.plural(n)}`,parameters:[{name:"filters",in:"query",description:"Filter criteria in JSON format",schema:{type:"string"}},{name:"sort",in:"query",description:"Sort field (prefix with '-' for descending order)",schema:{type:"string"}},{name:"page",in:"query",description:"Page number (starts from 1)",schema:{type:"integer",minimum:1}},{name:"limit",in:"query",description:"Number of items per page",schema:{type:"integer",minimum:1,maximum:100}},{name:"fields",in:"query",description:"Comma-separated list of fields to include in response",schema:{type:"string"}}],responses:{200:{description:`List of ${r} retrieved successfully`,content:{"application/json":{schema:{type:"object",properties:{total:{type:"integer",description:"Total number of records matching the criteria"},results:{type:"integer",description:"Number of records returned in current page"},data:{type:"array",items:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`FindMany${n}`,s)}}}}}}},401:{description:"Authentication required"},403:{description:"Insufficient permissions"}},security:[{BearerAuth:[]}]}}if(!(0,base_router_helpers_1.isEndpointDisabled)(o,"createMany")){const s=await d("createMany");i[`/api/${t}/many`]={post:{tags:[r],summary:`Create multiple ${r}`,description:`Creates multiple ${r} records in a single batch operation`,operationId:`createMany${n}`,requestBody:{description:`Array of ${e} data to create`,required:!0,content:{"application/json":{schema:{type:"array",items:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`CreateMany${n}`,s)}}}}},responses:{201:{description:`${r} created successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records created"}}}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"}},security:[{BearerAuth:[]}]}}}if(!(0,base_router_helpers_1.isEndpointDisabled)(o,"updateMany")){i[`/api/${t}/many`]||(i[`/api/${t}/many`]={});const s=await d("updateMany");i[`/api/${t}/many`].patch={tags:[r],summary:`Update multiple ${r}`,description:`Updates multiple ${r} records that match the specified filter criteria`,operationId:`updateMany${n}`,parameters:[{name:"filters",in:"query",description:"Filter criteria in JSON format (required)",required:!0,schema:{type:"string"}}],requestBody:{description:`Partial ${e} data to update`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`UpdateMany${n}`,s)}}}},responses:{200:{description:`${r} updated successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records updated"}}}}}},400:{description:"Invalid input data or missing filter criteria"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"}},security:[{BearerAuth:[]}]}}if((0,base_router_helpers_1.isEndpointDisabled)(o,"deleteMany")||(i[`/api/${t}/many`]||(i[`/api/${t}/many`]={}),i[`/api/${t}/many`].delete={tags:[r],summary:`Delete multiple ${r}`,description:`Deletes multiple ${r} records that match the specified filter criteria`,operationId:`deleteMany${n}`,parameters:[{name:"filters",in:"query",description:"Filter criteria in JSON format (required)",required:!0,schema:{type:"string"}}],responses:{200:{description:`${r} deleted successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records deleted"}}}}}},400:{description:"Missing filter criteria"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"}},security:[{BearerAuth:[]}]}),!(0,base_router_helpers_1.isEndpointDisabled)(o,"findOne")){const s=await d("findOne");i[`/api/${t}/{id}`]={get:{tags:[r],summary:`Get ${e} by ID`,description:`Retrieves a single ${e} record by its unique identifier`,operationId:`find${n}ById`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}}],responses:{200:{description:`${e} retrieved successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`FindOne${n}`,s)}}}},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}}if(!(0,base_router_helpers_1.isEndpointDisabled)(o,"updateOne")){i[`/api/${t}/{id}`]||(i[`/api/${t}/{id}`]={});const s=await d("update");i[`/api/${t}/{id}`].patch={tags:[r],summary:`Update ${e} by ID`,description:`Updates a single ${e} record by its unique identifier`,operationId:`update${n}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}}],requestBody:{description:`Partial ${e} data to update`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`Update${n}`,s)}}}},responses:{200:{description:`${e} updated successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`${n}`,s)}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}(0,base_router_helpers_1.isEndpointDisabled)(o,"deleteOne")||(i[`/api/${t}/{id}`]||(i[`/api/${t}/{id}`]={}),i[`/api/${t}/{id}`].delete={tags:[r],summary:`Delete ${e} by ID`,description:`Permanently deletes a single ${e} record by its unique identifier`,operationId:`delete${n}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}}],responses:{204:{description:`${e} deleted successfully`},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(c){return c&&c.__esModule?c:{default:c}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=generatePrismaModelParentRoutesPaths;const pluralize_1=__importDefault(require("pluralize")),utils_1=require("../../../../../../exports/utils"),swagger_router_helpers_1=require("../../swagger.router.helpers"),models_helpers_1=require("../../../../../../utils/helpers/models.helpers"),models_helpers_2=require("../../../../../../utils/helpers/models.helpers");async function generatePrismaModelParentRoutesPaths(c,r,m){const $=(0,utils_1.kebabCase)(c),n=pluralize_1.default.plural($),o=(0,utils_1.pascalCase)(c),i=(0,swagger_router_helpers_1.kebabToHuman)($),t=pluralize_1.default.plural(i),f=(await(0,models_helpers_1.importPrismaModelModules)(c,m))?.router?.config;if(f?.disable===!0||!f?.parent)return;const d=f.parent.model,s=pluralize_1.default.plural((0,utils_1.kebabCase)(d)),e=(0,swagger_router_helpers_1.kebabToHuman)((0,utils_1.kebabCase)(d)),p=a=>{const u=f?.parent?.endpoints;return!u||u==="*"?!0:Array.isArray(u)?u.includes(a):!1},l=async a=>{const u=m.swagger?.mode;if(m.swagger?.strict)return u||"prisma";const y=a;return await(0,models_helpers_2.localValidatorFileExists)(y,c,m)&&u||"prisma"};if(p("createOne")){const a=await l("create");r[`/api/${s}/{id}/${n}`]={post:{tags:[t],summary:`Create ${i} for ${e}`,description:`Creates a new ${i} record associated with the specified ${e}`,operationId:`create${o}For${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}}],requestBody:{description:`${i} data to create`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`Create${o}`,a)}}}},responses:{201:{description:`${i} created successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`${o}`,a)}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}}if(p("findMany")){r[`/api/${s}/{id}/${n}`]||(r[`/api/${s}/{id}/${n}`]={});const a=await l("findMany");r[`/api/${s}/{id}/${n}`].get={tags:[t],summary:`Get ${t} for ${e}`,description:`Retrieves all ${t} associated with the specified ${e}`,operationId:`get${pluralize_1.default.plural(o)}For${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"filters",in:"query",description:"Additional filters criteria in JSON format",schema:{type:"string"}},{name:"sort",in:"query",description:"Sort field (prefix with '-' for descending order)",schema:{type:"string"}},{name:"page",in:"query",description:"Page number (starts from 1)",schema:{type:"integer",minimum:1}},{name:"limit",in:"query",description:"Number of items per page",schema:{type:"integer",minimum:1,maximum:100}},{name:"fields",in:"query",description:"Comma-separated list of fields to include in response",schema:{type:"string"}}],responses:{200:{description:`List of ${t} retrieved successfully`,content:{"application/json":{schema:{type:"object",properties:{total:{type:"integer",description:"Total number of records matching the criteria"},results:{type:"integer",description:"Number of records returned in current page"},data:{type:"array",items:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`FindMany${o}`,a)}}}}}}},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}if(p("createMany")){const a=await l("createMany");r[`/api/${s}/{id}/${n}/many`]={post:{tags:[t],summary:`Create multiple ${t} for ${e}`,description:`Creates multiple ${t} records associated with the specified ${e}`,operationId:`createMany${o}For${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}}],requestBody:{description:`Array of ${i} data to create`,required:!0,content:{"application/json":{schema:{type:"array",items:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`CreateMany${o}`,a)}}}}},responses:{201:{description:`${t} created successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records created"}}}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}}if(p("updateMany")){r[`/api/${s}/{id}/${n}/many`]||(r[`/api/${s}/{id}/${n}/many`]={});const a=await l("updateMany");r[`/api/${s}/{id}/${n}/many`].patch={tags:[t],summary:`Update multiple ${t} for ${e}`,description:`Updates multiple ${t} records associated with the specified ${e}`,operationId:`updateMany${o}For${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"filters",in:"query",description:"Additional filters criteria in JSON format",schema:{type:"string"}}],requestBody:{description:`Partial ${i} data to update`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`UpdateMany${o}`,a)}}}},responses:{200:{description:`${t} updated successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records updated"}}}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}if(p("deleteMany")&&(r[`/api/${s}/{id}/${n}/many`]||(r[`/api/${s}/{id}/${n}/many`]={}),r[`/api/${s}/{id}/${n}/many`].delete={tags:[t],summary:`Delete multiple ${t} for ${e}`,description:`Deletes multiple ${t} records associated with the specified ${e}`,operationId:`deleteMany${o}For${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"filters",in:"query",description:"Additional filters criteria in JSON format",schema:{type:"string"}}],responses:{200:{description:`${t} deleted successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records deleted"}}}}}},400:{description:"Missing filter criteria"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}),p("findOne")){const a=await l("findOne");r[`/api/${s}/{id}/${n}/{childId}`]={get:{tags:[t],summary:`Get ${i} by ID for ${e}`,description:`Retrieves a single ${i} record by its unique identifier associated with the specified ${e}`,operationId:`get${o}ByIdFor${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"childId",in:"path",description:`Unique identifier of the ${i}`,required:!0,schema:{type:"string"}}],responses:{200:{description:`${i} retrieved successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`FindOne${o}`,a)}}}},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${i} or ${e} not found`}},security:[{BearerAuth:[]}]}}}if(p("updateOne")){r[`/api/${s}/{id}/${n}/{childId}`]||(r[`/api/${s}/{id}/${n}/{childId}`]={});const a=await l("update");r[`/api/${s}/{id}/${n}/{childId}`].patch={tags:[t],summary:`Update ${i} by ID for ${e}`,description:`Updates a single ${i} record by its unique identifier associated with the specified ${e}`,operationId:`update${o}ByIdFor${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"childId",in:"path",description:`Unique identifier of the ${i}`,required:!0,schema:{type:"string"}}],requestBody:{description:`Partial ${i} data to update`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`Update${o}`,a)}}}},responses:{200:{description:`${i} updated successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`${o}`,a)}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${i} or ${e} not found`}},security:[{BearerAuth:[]}]}}p("deleteOne")&&(r[`/api/${s}/{id}/${n}/{childId}`]||(r[`/api/${s}/{id}/${n}/{childId}`]={}),r[`/api/${s}/{id}/${n}/{childId}`].delete={tags:[t],summary:`Delete ${i} by ID for ${e}`,description:`Permanently deletes a single ${i} record by its unique identifier associated with the specified ${e}`,operationId:`delete${o}ByIdFor${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"childId",in:"path",description:`Unique identifier of the ${i}`,required:!0,schema:{type:"string"}}],responses:{204:{description:`${i} deleted successfully`},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${i} or ${e} not found`}},security:[{BearerAuth:[]}]})}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(c){return c&&c.__esModule?c:{default:c}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=generatePrismaModelParentRoutesPaths;const pluralize_1=__importDefault(require("pluralize")),utils_1=require("../../../../../../exports/utils"),swagger_router_helpers_1=require("../../swagger.router.helpers"),models_helpers_1=require("../../../../../../utils/helpers/models.helpers"),models_helpers_2=require("../../../../../../utils/helpers/models.helpers");async function generatePrismaModelParentRoutesPaths(c,r,m){const $=(0,utils_1.kebabCase)(c),n=pluralize_1.default.plural($),o=(0,utils_1.pascalCase)(c),i=(0,swagger_router_helpers_1.kebabToHuman)($),t=pluralize_1.default.plural(i),f=(await(0,models_helpers_1.importPrismaModelModules)(c,m))?.router?.config;if(f?.disable===!0||!f?.parent)return;const d=f.parent.model,s=pluralize_1.default.plural((0,utils_1.kebabCase)(d)),e=(0,swagger_router_helpers_1.kebabToHuman)((0,utils_1.kebabCase)(d)),p=a=>{const u=f?.parent?.endpoints;return!u||u==="*"?!0:Array.isArray(u)?u.includes(a):!1},l=async a=>{const u=m.swagger?.mode;if(m.swagger?.strict)return u||"prisma";const y=a;return await(0,models_helpers_2.localValidatorFileExists)(y,c,m)&&u||"prisma"};if(p("createOne")){const a=await l("create");r[`/api/${s}/{id}/${n}`]={post:{tags:[t],summary:`Create ${i} for ${e}`,description:`Creates a new ${i} record associated with the specified ${e}`,operationId:`create${o}For${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}}],requestBody:{description:`${i} data to create`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`Create${o}`,a)}}}},responses:{201:{description:`${i} created successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`${o}`,a)}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}}if(p("findMany")){r[`/api/${s}/{id}/${n}`]||(r[`/api/${s}/{id}/${n}`]={});const a=await l("findMany");r[`/api/${s}/{id}/${n}`].get={tags:[t],summary:`Get ${t} for ${e}`,description:`Retrieves all ${t} associated with the specified ${e}`,operationId:`get${pluralize_1.default.plural(o)}For${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"filters",in:"query",description:"Additional filters criteria in JSON format",schema:{type:"string"}},{name:"sort",in:"query",description:"Sort field (prefix with '-' for descending order)",schema:{type:"string"}},{name:"page",in:"query",description:"Page number (starts from 1)",schema:{type:"integer",minimum:1}},{name:"limit",in:"query",description:"Number of items per page",schema:{type:"integer",minimum:1,maximum:100}},{name:"fields",in:"query",description:"Comma-separated list of fields to include in response",schema:{type:"string"}}],responses:{200:{description:`List of ${t} retrieved successfully`,content:{"application/json":{schema:{type:"object",properties:{total:{type:"integer",description:"Total number of records matching the criteria"},results:{type:"integer",description:"Number of records returned in current page"},data:{type:"array",items:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`FindMany${o}`,a)}}}}}}},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}if(p("createMany")){const a=await l("createMany");r[`/api/${s}/{id}/${n}/many`]={post:{tags:[t],summary:`Create multiple ${t} for ${e}`,description:`Creates multiple ${t} records associated with the specified ${e}`,operationId:`createMany${o}For${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}}],requestBody:{description:`Array of ${i} data to create`,required:!0,content:{"application/json":{schema:{type:"array",items:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`CreateMany${o}`,a)}}}}},responses:{201:{description:`${t} created successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records created"}}}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}}if(p("updateMany")){r[`/api/${s}/{id}/${n}/many`]||(r[`/api/${s}/{id}/${n}/many`]={});const a=await l("updateMany");r[`/api/${s}/{id}/${n}/many`].patch={tags:[t],summary:`Update multiple ${t} for ${e}`,description:`Updates multiple ${t} records associated with the specified ${e}`,operationId:`updateMany${o}For${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"filters",in:"query",description:"Additional filters criteria in JSON format",schema:{type:"string"}}],requestBody:{description:`Partial ${i} data to update`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`UpdateMany${o}`,a)}}}},responses:{200:{description:`${t} updated successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records updated"}}}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}}if(p("deleteMany")&&(r[`/api/${s}/{id}/${n}/many`]||(r[`/api/${s}/{id}/${n}/many`]={}),r[`/api/${s}/{id}/${n}/many`].delete={tags:[t],summary:`Delete multiple ${t} for ${e}`,description:`Deletes multiple ${t} records associated with the specified ${e}`,operationId:`deleteMany${o}For${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"filters",in:"query",description:"Additional filters criteria in JSON format",schema:{type:"string"}}],responses:{200:{description:`${t} deleted successfully`,content:{"application/json":{schema:{type:"object",properties:{count:{type:"integer",description:"Number of records deleted"}}}}}},400:{description:"Missing filter criteria"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${e} not found`}},security:[{BearerAuth:[]}]}),p("findOne")){const a=await l("findOne");r[`/api/${s}/{id}/${n}/{childId}`]={get:{tags:[t],summary:`Get ${i} by ID for ${e}`,description:`Retrieves a single ${i} record by its unique identifier associated with the specified ${e}`,operationId:`get${o}ByIdFor${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"childId",in:"path",description:`Unique identifier of the ${i}`,required:!0,schema:{type:"string"}}],responses:{200:{description:`${i} retrieved successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`FindOne${o}`,a)}}}},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${i} or ${e} not found`}},security:[{BearerAuth:[]}]}}}if(p("updateOne")){r[`/api/${s}/{id}/${n}/{childId}`]||(r[`/api/${s}/{id}/${n}/{childId}`]={});const a=await l("update");r[`/api/${s}/{id}/${n}/{childId}`].patch={tags:[t],summary:`Update ${i} by ID for ${e}`,description:`Updates a single ${i} record by its unique identifier associated with the specified ${e}`,operationId:`update${o}ByIdFor${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"childId",in:"path",description:`Unique identifier of the ${i}`,required:!0,schema:{type:"string"}}],requestBody:{description:`Partial ${i} data to update`,required:!0,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`Update${o}`,a)}}}},responses:{200:{description:`${i} updated successfully`,content:{"application/json":{schema:{$ref:(0,swagger_router_helpers_1.getSchemaRef)(`${o}`,a)}}}},400:{description:"Invalid input data provided"},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${i} or ${e} not found`}},security:[{BearerAuth:[]}]}}p("deleteOne")&&(r[`/api/${s}/{id}/${n}/{childId}`]||(r[`/api/${s}/{id}/${n}/{childId}`]={}),r[`/api/${s}/{id}/${n}/{childId}`].delete={tags:[t],summary:`Delete ${i} by ID for ${e}`,description:`Permanently deletes a single ${i} record by its unique identifier associated with the specified ${e}`,operationId:`delete${o}ByIdFor${(0,utils_1.pascalCase)(d)}`,parameters:[{name:"id",in:"path",description:`Unique identifier of the ${e}`,required:!0,schema:{type:"string"}},{name:"childId",in:"path",description:`Unique identifier of the ${i}`,required:!0,schema:{type:"string"}}],responses:{204:{description:`${i} deleted successfully`},401:{description:"Authentication required"},403:{description:"Insufficient permissions"},404:{description:`${i} or ${e} not found`}},security:[{BearerAuth:[]}]})}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(m){return m&&m.__esModule?m:{default:m}};Object.defineProperty(exports,"__esModule",{value:!0});const enhaced_prisma_json_schema_generator_1=__importDefault(require("../../../../utils/prisma/enhaced-prisma-json-schema-generator"));class MissingJsonSchemasGenerator{extractModelNameFromSchemaRef(e){const t=e.match(/#\/components\/schemas\/(?:Create|Update|UpdateMany|FindOne|FindMany|CreateMany)?(.+?)(?:ModelSchema|Schema)$/);if(t){let n=t[1];return n.toLowerCase()==="auth"||n.toLowerCase()==="login"||n.toLowerCase()==="signup"||n.toLowerCase()==="getme"||n.toLowerCase()==="updateme"||n.toLowerCase()==="updatepassword"?"Auth":n}return null}extractActionFromOperationId(e){return e?e.includes("createMany")?"createMany":e.includes("updateMany")?"updateMany":e.includes("deleteMany")?"deleteMany":e.includes("updateMe")?"updateMe":e.includes("updatePassword")?"updatePassword":e.startsWith("create")?"createOne":e.startsWith("update")?"updateOne":e.startsWith("delete")?"deleteOne":e.startsWith("find")&&(e.includes("ById")||e.includes("One"))?"findOne":e.startsWith("find")?"findMany":e.includes("login")||e==="login"?"login":e.includes("signup")||e==="signup"?"signup":e.includes("getMe")||e==="getMe"?"getMe":e.includes("updateMe")||e==="updateMe"?"updateMe":e.includes("updatePassword")||e==="updatePassword"?"updatePassword":null:null}extractModelNameFromOperationId(e){if(!e)return null;let t=e.replace(/^(create|update|delete|find)Many/i,"").replace(/^(create|update|delete|find)/i,"").replace(/ById$/i,"").replace(/s$/,"");return e.toLowerCase().includes("login")||e.toLowerCase().includes("signup")||e.toLowerCase().includes("getme")||e.toLowerCase().includes("updateme")||e.toLowerCase().includes("updatepassword")?"Auth":t||null}extractSchemaRefsWithContext(e,t=new Map,n={}){return typeof e!="object"||e===null?t:Array.isArray(e)?(e.forEach(c=>this.extractSchemaRefsWithContext(c,t,n)),t):(e.operationId&&typeof e.operationId=="string"&&(n={...n,operationId:e.operationId}),e.$ref&&typeof e.$ref=="string"&&t.set(e.$ref,{...n}),Object.values(e).forEach(c=>{this.extractSchemaRefsWithContext(c,t,n)}),t)}extractPathSchemaRefs(e){const t=new Map;return Object.entries(e).forEach(([n,c])=>{c&&Object.entries(c).forEach(([f,u])=>{if(!u||typeof u!="object")return;const o={method:f,path:n,operationId:u.operationId};this.extractSchemaRefsWithContext(u,t,o)})}),t}getSchemaNameFromRef(e){const t=e.match(/#\/components\/schemas\/(.+)$/);return t?t[1]:null}async generateMissingJsonSchemas(e,t,n){const c={},f=this.extractPathSchemaRefs(e),u=new Map;for(const[o,d]of f){const i=this.getSchemaNameFromRef(o);if(!i||t[i]||!i.includes("ModelSchema")&&!i.includes("Schema"))continue;let s=null,a=null;d.operationId&&(s=this.extractModelNameFromOperationId(d.operationId),a=this.extractActionFromOperationId(d.operationId)),(!s||!a)&&(s=s||this.extractModelNameFromSchemaRef(o),a=a||this.extractActionFromSchemaRef(o)),s&&a&&(u.has(s)||u.set(s,new Set),u.get(s).add(a))}for(const[o,d]of u)try{const i=Array.from(d),s=await enhaced_prisma_json_schema_generator_1.default.generateModelSchemas({modelName:o,arkosConfig:n,schemasToGenerate:i});Object.entries(s).forEach(([a,l])=>{let r=a;["auth","login","me","password","me"].includes(o.toLowerCase())?a==="LoginSchema"?r="LoginSchema":a==="SignupSchema"?r="SignupSchema":a==="GetMeSchema"?r="GetMeSchema":a==="UpdateMeSchema"?r="UpdateMeSchema":a==="UpdatePasswordSchema"&&(r="UpdatePasswordSchema"):a.includes("ModelSchema")?r=a:r=`${a}ModelSchema`,c[r]=l})}catch{}return c}extractActionFromSchemaRef(e){return e.includes("CreateMany")?"createMany":e.includes("Create")?"createOne":e.includes("UpdateMany")?"updateMany":e.includes("Update")&&!e.includes("UpdateMe")&&!e.includes("UpdatePassword")?"updateOne":e.includes("FindMany")?"findMany":e.includes("FindOne")?"findOne":e.includes("Login")?"login":e.includes("Signup")?"signup":e.includes("GetMe")?"getMe":e.includes("UpdateMe")?"updateMe":e.includes("UpdatePassword")?"updatePassword":null}analyzeMissingSchemas(e,t){const n=this.extractPathSchemaRefs(e),c=[],f=[],u=[],o=[];for(const[d,i]of n){const s={ref:d,context:i};c.push(s);const a=this.getSchemaNameFromRef(d);if(a)if(t[a])u.push(s);else{f.push(s);let l=null,r=null;i.operationId&&(l=this.extractModelNameFromOperationId(i.operationId),r=this.extractActionFromOperationId(i.operationId)),(!l||!r)&&(l=l||this.extractModelNameFromSchemaRef(d),r=r||this.extractActionFromSchemaRef(d)),l&&r&&o.push({model:l,action:r,ref:d,operationId:i.operationId})}}return{allRefs:c,missingRefs:f,existingRefs:u,modelActions:o}}}const missingJsonSchemaGenerator=new MissingJsonSchemasGenerator;exports.default=missingJsonSchemaGenerator;
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(m){return m&&m.__esModule?m:{default:m}};Object.defineProperty(exports,"__esModule",{value:!0});const enhaced_prisma_json_schema_generator_1=__importDefault(require("../../../../utils/prisma/enhaced-prisma-json-schema-generator"));class MissingJsonSchemasGenerator{extractModelNameFromSchemaRef(e){const t=e.match(/#\/components\/schemas\/(?:Create|Update|UpdateMany|FindOne|FindMany|CreateMany)?(.+?)(?:ModelSchema|Schema)$/);if(t){let n=t[1];return n.toLowerCase()==="auth"||n.toLowerCase()==="login"||n.toLowerCase()==="signup"||n.toLowerCase()==="getme"||n.toLowerCase()==="updateme"||n.toLowerCase()==="updatepassword"?"Auth":n}return null}extractActionFromOperationId(e){return e?e.includes("createMany")?"createMany":e.includes("updateMany")?"updateMany":e.includes("deleteMany")?"deleteMany":e.includes("updateMe")?"updateMe":e.includes("updatePassword")?"updatePassword":e.startsWith("create")?"createOne":e.startsWith("update")?"updateOne":e.startsWith("delete")?"deleteOne":e.startsWith("find")&&(e.includes("ById")||e.includes("One"))?"findOne":e.startsWith("find")?"findMany":e.includes("login")||e==="login"?"login":e.includes("signup")||e==="signup"?"signup":e.includes("getMe")||e==="getMe"?"getMe":e.includes("updateMe")||e==="updateMe"?"updateMe":e.includes("updatePassword")||e==="updatePassword"?"updatePassword":null:null}extractModelNameFromOperationId(e){if(!e)return null;let t=e.replace(/^(create|update|delete|find)Many/i,"").replace(/^(create|update|delete|find)/i,"").replace(/ById$/i,"").replace(/s$/,"");return e.toLowerCase().includes("login")||e.toLowerCase().includes("signup")||e.toLowerCase().includes("getme")||e.toLowerCase().includes("updateme")||e.toLowerCase().includes("updatepassword")?"Auth":t||null}extractSchemaRefsWithContext(e,t=new Map,n={}){return typeof e!="object"||e===null?t:Array.isArray(e)?(e.forEach(c=>this.extractSchemaRefsWithContext(c,t,n)),t):(e.operationId&&typeof e.operationId=="string"&&(n={...n,operationId:e.operationId}),e.$ref&&typeof e.$ref=="string"&&t.set(e.$ref,{...n}),Object.values(e).forEach(c=>{this.extractSchemaRefsWithContext(c,t,n)}),t)}extractPathSchemaRefs(e){const t=new Map;return Object.entries(e).forEach(([n,c])=>{c&&Object.entries(c).forEach(([f,u])=>{if(!u||typeof u!="object")return;const o={method:f,path:n,operationId:u.operationId};this.extractSchemaRefsWithContext(u,t,o)})}),t}getSchemaNameFromRef(e){const t=e.match(/#\/components\/schemas\/(.+)$/);return t?t[1]:null}async generateMissingJsonSchemas(e,t,n){const c={},f=this.extractPathSchemaRefs(e),u=new Map;for(const[o,d]of f){const i=this.getSchemaNameFromRef(o);if(!i||t[i]||!i.includes("ModelSchema")&&!i.includes("Schema"))continue;let s=null,a=null;d.operationId&&(s=this.extractModelNameFromOperationId(d.operationId),a=this.extractActionFromOperationId(d.operationId)),(!s||!a)&&(s=s||this.extractModelNameFromSchemaRef(o),a=a||this.extractActionFromSchemaRef(o)),s&&a&&(u.has(s)||u.set(s,new Set),u.get(s).add(a))}for(const[o,d]of u)try{const i=Array.from(d),s=await enhaced_prisma_json_schema_generator_1.default.generateModelSchemas({modelName:o,arkosConfig:n,schemasToGenerate:i});Object.entries(s).forEach(([a,l])=>{let r=a;["auth","login","me","password","me"].includes(o.toLowerCase())?a==="LoginSchema"?r="LoginSchema":a==="SignupSchema"?r="SignupSchema":a==="GetMeSchema"?r="GetMeSchema":a==="UpdateMeSchema"?r="UpdateMeSchema":a==="UpdatePasswordSchema"&&(r="UpdatePasswordSchema"):a.includes("ModelSchema")?r=a:r=`${a}ModelSchema`,c[r]=l})}catch{}return c}extractActionFromSchemaRef(e){return e.includes("CreateMany")?"createMany":e.includes("Create")?"createOne":e.includes("UpdateMany")?"updateMany":e.includes("Update")&&!e.includes("UpdateMe")&&!e.includes("UpdatePassword")?"updateOne":e.includes("FindMany")?"findMany":e.includes("FindOne")?"findOne":e.includes("Login")?"login":e.includes("Signup")?"signup":e.includes("GetMe")?"getMe":e.includes("UpdateMe")?"updateMe":e.includes("UpdatePassword")?"updatePassword":null}analyzeMissingSchemas(e,t){const n=this.extractPathSchemaRefs(e),c=[],f=[],u=[],o=[];for(const[d,i]of n){const s={ref:d,context:i};c.push(s);const a=this.getSchemaNameFromRef(d);if(a)if(t[a])u.push(s);else{f.push(s);let l=null,r=null;i.operationId&&(l=this.extractModelNameFromOperationId(i.operationId),r=this.extractActionFromOperationId(i.operationId)),(!l||!r)&&(l=l||this.extractModelNameFromSchemaRef(d),r=r||this.extractActionFromSchemaRef(d)),l&&r&&o.push({model:l,action:r,ref:d,operationId:i.operationId})}}return{allRefs:c,missingRefs:f,existingRefs:u,modelActions:o}}}const missingJsonSchemaGenerator=new MissingJsonSchemasGenerator;exports.default=missingJsonSchemaGenerator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getOpenAPIJsonSchemasByConfigMode=getOpenAPIJsonSchemasByConfigMode,exports.getCorrectJsonSchemaName=getCorrectJsonSchemaName,exports.kebabToHuman=kebabToHuman,exports.getSchemaRef=getSchemaRef,exports.generatePathsForModels=generatePathsForModels;const models_helpers_1=require("../../../../utils/helpers/models.helpers"),utils_1=require("../../../../exports/utils"),get_system_json_schema_paths_1=require("./get-system-json-schema-paths"),get_authentication_json_schema_paths_1=__importDefault(require("./get-authentication-json-schema-paths")),generate_zod_json_schemas_1=__importDefault(require("./json-schema-generators/generate-zod-json-schemas")),generate_class_validator_json_schemas_1=require("./json-schema-generators/generate-class-validator-json-schemas"),generate_prisma_json_schemas_1=require("./json-schema-generators/generate-prisma-json-schemas"),generate_prisma_model_main_routes_paths_1=require("./json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths"),generate_prisma_model_parent_routes_paths_1=__importDefault(require("./json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths")),sheu_1=__importDefault(require("../../../../utils/sheu"));async function getOpenAPIJsonSchemasByConfigMode(e){switch(e?.swagger.mode){case"prisma":return await(0,generate_prisma_json_schemas_1.generatePrismaJsonSchemas)(e);case"class-validator":return await(0,generate_class_validator_json_schemas_1.generateClassValidatorJsonSchemas)();case"zod":return await(0,generate_zod_json_schemas_1.default)();default:throw Error("Unknown mode for auto documentation, supported values are prisma, class-validator, zod or json-schemas")}}function getCorrectJsonSchemaName(e,t,a){const s=(0,utils_1.pascalCase)(t);return`${{model:s,create:`Create${s}`,createMany:`CreateMany${s}`,findOne:`FindOne${s}`,findMany:`FindMany${s}`,update:`Update${s}`,updateMany:`UpdateMany${s}`,query:`Query${s}`,login:"Login",signup:"Signup",updateMe:"UpdateMe",updatePassword:"UpdatePassword"}[e]??(0,utils_1.pascalCase)(e)}${a}`}function kebabToHuman(e){return e.split("-").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function getSchemaRef(e,t){if(e=(0,utils_1.pascalCase)(e),["getme","updateme","login","signup","updatepassword","password","me"].some(r=>r===e.toLowerCase())&&t==="prisma")return`#/components/schemas/${e}Schema`;switch(t){case"prisma":return`#/components/schemas/${e}ModelSchema`;case"zod":return`#/components/schemas/${e}Schema`;case"class-validator":return`#/components/schemas/${e}Dto`;default:return sheu_1.default.error(`Unknown Arkos.js swagger documentation provided, available options are prisma, zod or class-validator but received ${t}`),""}}async function generatePathsForModels(e){if(!e?.swagger)return{};let a={};const s=(0,models_helpers_1.getModels)();for(const r of s)await(0,generate_prisma_model_main_routes_paths_1.generatePrismaModelMainRoutesPaths)(r,a,e),await(0,generate_prisma_model_parent_routes_paths_1.default)(r,a,e);return a={...a,...(0,get_system_json_schema_paths_1.getSystemJsonSchemaPaths)()},a={...a,...await(0,get_authentication_json_schema_paths_1.default)(e)||{}},a}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getOpenAPIJsonSchemasByConfigMode=getOpenAPIJsonSchemasByConfigMode,exports.getCorrectJsonSchemaName=getCorrectJsonSchemaName,exports.kebabToHuman=kebabToHuman,exports.getSchemaRef=getSchemaRef,exports.generatePathsForModels=generatePathsForModels;const models_helpers_1=require("../../../../utils/helpers/models.helpers"),utils_1=require("../../../../exports/utils"),get_system_json_schema_paths_1=require("./get-system-json-schema-paths"),get_authentication_json_schema_paths_1=__importDefault(require("./get-authentication-json-schema-paths")),generate_zod_json_schemas_1=__importDefault(require("./json-schema-generators/generate-zod-json-schemas")),generate_class_validator_json_schemas_1=require("./json-schema-generators/generate-class-validator-json-schemas"),generate_prisma_json_schemas_1=require("./json-schema-generators/generate-prisma-json-schemas"),generate_prisma_model_main_routes_paths_1=require("./json-schema-generators/prisma-models/generate-prisma-model-main-routes-paths"),generate_prisma_model_parent_routes_paths_1=__importDefault(require("./json-schema-generators/prisma-models/generate-prisma-model-parent-routes-paths")),sheu_1=__importDefault(require("../../../../utils/sheu"));async function getOpenAPIJsonSchemasByConfigMode(e){switch(e?.swagger.mode){case"prisma":return await(0,generate_prisma_json_schemas_1.generatePrismaJsonSchemas)(e);case"class-validator":return await(0,generate_class_validator_json_schemas_1.generateClassValidatorJsonSchemas)();case"zod":return await(0,generate_zod_json_schemas_1.default)();default:throw Error("Unknown mode for auto documentation, supported values are prisma, class-validator, zod or json-schemas")}}function getCorrectJsonSchemaName(e,t,a){const s=(0,utils_1.pascalCase)(t);return`${{model:s,create:`Create${s}`,createMany:`CreateMany${s}`,findOne:`FindOne${s}`,findMany:`FindMany${s}`,update:`Update${s}`,updateMany:`UpdateMany${s}`,query:`Query${s}`,login:"Login",signup:"Signup",updateMe:"UpdateMe",updatePassword:"UpdatePassword"}[e]??(0,utils_1.pascalCase)(e)}${a}`}function kebabToHuman(e){return e.split("-").map(t=>t.charAt(0).toUpperCase()+t.slice(1)).join(" ")}function getSchemaRef(e,t){if(e=(0,utils_1.pascalCase)(e),["getme","updateme","login","signup","updatepassword","password","me"].some(r=>r===e.toLowerCase())&&t==="prisma")return`#/components/schemas/${e}Schema`;switch(t){case"prisma":return`#/components/schemas/${e}ModelSchema`;case"zod":return`#/components/schemas/${e}Schema`;case"class-validator":return`#/components/schemas/${e}Dto`;default:return sheu_1.default.error(`Unknown Arkos.js swagger documentation provided, available options are prisma, zod or class-validator but received ${t}`),""}}async function generatePathsForModels(e){if(!e?.swagger)return{};let a={};const s=(0,models_helpers_1.getModels)();for(const r of s)await(0,generate_prisma_model_main_routes_paths_1.generatePrismaModelMainRoutesPaths)(r,a,e),await(0,generate_prisma_model_parent_routes_paths_1.default)(r,a,e);return a={...a,...(0,get_system_json_schema_paths_1.getSystemJsonSchemaPaths)()},a={...a,...await(0,get_authentication_json_schema_paths_1.default)(e)||{}},a}
|
package/dist/cjs/paths.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ROOT_DIR=void 0;const path_1=__importDefault(require("path"));exports.ROOT_DIR=path_1.default.resolve(__dirname,"../..");
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ROOT_DIR=void 0;const path_1=__importDefault(require("path"));exports.ROOT_DIR=path_1.default.resolve(__dirname,"../..");
|
package/dist/cjs/server.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.server=exports._arkosConfig=void 0,exports.terminateApplicationRunningProcessAndServer=terminateApplicationRunningProcessAndServer,exports.getArkosConfig=getArkosConfig,exports.getExpressApp=getExpressApp,exports.initApp=initApp;const app_1=require("./app"),deepmerge_helper_1=__importDefault(require("./utils/helpers/deepmerge.helper")),http_1=__importDefault(require("http")),models_helpers_1=require("./utils/helpers/models.helpers"),sheu_1=__importDefault(require("./utils/sheu")),text_helpers_1=require("./utils/helpers/text.helpers"),port_and_host_allocator_1=__importDefault(require("./utils/features/port-and-host-allocator"));process.on("uncaughtException",e=>{e.message.includes("EPIPE")||(sheu_1.default.error(`
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.server=exports._arkosConfig=void 0,exports.terminateApplicationRunningProcessAndServer=terminateApplicationRunningProcessAndServer,exports.getArkosConfig=getArkosConfig,exports.getExpressApp=getExpressApp,exports.initApp=initApp;const app_1=require("./app"),deepmerge_helper_1=__importDefault(require("./utils/helpers/deepmerge.helper")),http_1=__importDefault(require("http")),models_helpers_1=require("./utils/helpers/models.helpers"),sheu_1=__importDefault(require("./utils/sheu")),text_helpers_1=require("./utils/helpers/text.helpers"),port_and_host_allocator_1=__importDefault(require("./utils/features/port-and-host-allocator"));process.on("uncaughtException",e=>{e.message.includes("EPIPE")||(sheu_1.default.error(`
|
|
2
2
|
UNCAUGHT EXCEPTION! SHUTTING DOWN...
|
|
3
3
|
`,{timestamp:!0,bold:!0}),console.error(e.name,e.message),console.error(e),process.exit(1))});let server,_app;exports._arkosConfig={welcomeMessage:"Welcome to our RESTful API generated by Arkos, find out more about Arkos at www.arkosjs.com",port:Number(process.env.CLI_PORT)||Number(process.env.PORT)||8e3,host:process.env.CLI_HOST||process.env.HOST||"localhost",fileUpload:{baseUploadDir:"uploads",baseRoute:"/api/uploads"},available:!1};async function initApp(e={}){exports._arkosConfig.available=!0;const r=await port_and_host_allocator_1.default.getHostAndAvailablePort(process.env,e);(0,models_helpers_1.initializePrismaModels)(),exports._arkosConfig=(0,deepmerge_helper_1.default)(exports._arkosConfig,e),_app=await(0,app_1.bootstrap)(exports._arkosConfig);const t=new Date().toTimeString().split(" ")[0];return"port"in e&&e?.port!==void 0||!("port"in e)?(exports.server=server=http_1.default.createServer(_app),exports._arkosConfig?.configureServer&&await exports._arkosConfig.configureServer(server),server.listen(Number(r?.port),r.host,()=>{const o=`${sheu_1.default.gray(t)} {{server}} waiting on http://${r?.host}:${r?.port}`;sheu_1.default.ready(o.replace("{{server}}",`${(0,text_helpers_1.capitalize)(process.env.NODE_ENV||"development")} server`)),exports._arkosConfig?.swagger?.mode&&sheu_1.default.ready(`${o.replace("{{server}}","Documentation")}${exports._arkosConfig?.swagger?.endpoint||"/api/docs"}`)})):sheu_1.default.warn(`${sheu_1.default.gray(t)} Port set to undefined, hence no internal http server was setup.`),_app}process.on("unhandledRejection",e=>{sheu_1.default.error(`
|
|
4
4
|
UNHANDLED REJECTION! SHUTTING DOWN...
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildCommand=buildCommand;const path_1=__importDefault(require("path")),fs_1=__importDefault(require("fs")),child_process_1=require("child_process"),fs_helpers_1=require("../helpers/fs.helpers"),dotenv_helpers_1=require("../dotenv.helpers"),cli_helpers_1=require("./utils/cli.helpers"),global_helpers_1=require("../helpers/global.helpers"),sheu_1=__importDefault(require("../sheu")),BUILD_DIR=".build",MODULE_TYPES=["cjs","esm"];function buildCommand(e={}){const s=(0,fs_helpers_1.getUserFileExtension)();process.env.NODE_ENV="production",process.env.NODE_ENV="true";const t=(0,dotenv_helpers_1.loadEnvironmentVariables)(),n=validateModuleType(e.module);try{console.info(` \x1B[1m\x1B[36m Arkos.js ${(0,cli_helpers_1.getVersion)()}\x1B[0m`),console.info(` - Environments: ${(0,fs_helpers_1.fullCleanCwd)(t?.join(", ")||"").replaceAll(`${process.cwd()}/`,"").replaceAll("/","")}`),console.info(`
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.buildCommand=buildCommand;const path_1=__importDefault(require("path")),fs_1=__importDefault(require("fs")),child_process_1=require("child_process"),fs_helpers_1=require("../helpers/fs.helpers"),dotenv_helpers_1=require("../dotenv.helpers"),cli_helpers_1=require("./utils/cli.helpers"),global_helpers_1=require("../helpers/global.helpers"),sheu_1=__importDefault(require("../sheu")),BUILD_DIR=".build",MODULE_TYPES=["cjs","esm"];function buildCommand(e={}){const s=(0,fs_helpers_1.getUserFileExtension)();process.env.NODE_ENV="production",process.env.NODE_ENV="true";const t=(0,dotenv_helpers_1.loadEnvironmentVariables)(),n=validateModuleType(e.module);try{console.info(` \x1B[1m\x1B[36m Arkos.js ${(0,cli_helpers_1.getVersion)()}\x1B[0m`),console.info(` - Environments: ${(0,fs_helpers_1.fullCleanCwd)(t?.join(", ")||"").replaceAll(`${process.cwd()}/`,"").replaceAll("/","")}`),console.info(`
|
|
2
2
|
Creating an optimized production build...`),ensureBuildDir(),s==="ts"?buildTypeScriptProject(e,n):buildJavaScriptProject(e,n);const r=(0,global_helpers_1.detectPackageManagerFromUserAgent)();console.info(`
|
|
3
3
|
\x1B[1m\x1B[32m Build complete!\x1B[0m
|
|
4
4
|
`),console.info(" \x1B[1mNext step:\x1B[0m"),console.info(` Run it using \x1B[1m\x1B[36m${r} run start\x1B[0m
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.devCommand=devCommand,exports.killDevelopmentServerChildProcess=killDevelopmentServerChildProcess;const child_process_1=require("child_process"),chokidar_1=require("chokidar"),fs_helpers_1=require("../helpers/fs.helpers"),cli_helpers_1=require("./utils/cli.helpers"),dotenv_helpers_1=require("../dotenv.helpers"),global_helpers_1=require("../helpers/global.helpers"),fs_1=__importDefault(require("fs")),path_1=__importDefault(require("path")),sheu_1=__importDefault(require("../sheu")),port_and_host_allocator_1=__importDefault(require("../features/port-and-host-allocator"));let child=null,envFiles;async function devCommand(r={}){process.env.NODE_ENV="development",envFiles=(0,dotenv_helpers_1.loadEnvironmentVariables)(),child=null;let s=null;try{const{port:i,host:p}=r;let f=!1,c=new Set;const h=(0,fs_helpers_1.getUserFileExtension)(),l=path_1.default.resolve(process.cwd(),`src/app.${h}`);fs_1.default.existsSync(l)||(console.error(`Could not find application entry point at ${l}`),process.exit(1));const a=()=>({NODE_ENV:"development",...process.env,...i&&{CLI_PORT:i},...p&&{CLI_HOST:p}}),d=()=>{child&&(child.kill(),child=null);const t=a();h==="ts"?child=(0,child_process_1.spawn)("npx",["ts-node-dev","--respawn","--notify=false","--ignore-watch","node_modules","--ignore-watch","dist","--ignore-watch","build","--ignore-watch",".dist","--ignore-watch",".build","--watch","src",l],{stdio:"inherit",env:t,shell:!0}):child=(0,child_process_1.spawn)("npx",["node-dev","--respawn","--notify=false","--ignore","node_modules","--ignore","dist","--ignore","build","--ignore",".dist","--ignore",".build",l],{stdio:"inherit",env:t,shell:!0}),child&&(child.on("error",e=>{console.error("Failed to start server:",e)}),child.on("exit",(e,o)=>{!f&&o!=="SIGTERM"&&o!=="SIGINT"&&(console.info(`Server exited with code ${e}, restarting...`),d())}))},g=(t,e)=>{e&&c.add(e),s&&clearTimeout(s);const n=new Date().toTimeString().split(" ")[0];f=!0,child&&(child.kill(),child=null),s=setTimeout(()=>{sheu_1.default.info(`\x1B[90m${n}\x1B[0m Restarting: ${t.toLowerCase()}`),d(),s=null,c.delete(e)},1e3)},w=()=>{const t=(0,chokidar_1.watch)((0,fs_helpers_1.fullCleanCwd)(envFiles?.join(",")||"").replaceAll("/","").split(",")||[],{ignoreInitial:!0,persistent:!0});return t.on("all",(e,o)=>{try{envFiles=(0,dotenv_helpers_1.loadEnvironmentVariables)(),g("Environments files changed",o)}catch(n){console.error(`Error reloading ${o}:`,n)}}),t},_=()=>{const t=(0,chokidar_1.watch)(["src","package.json","tsconfig.json","jsconfig.json","arkos.config.ts","arkos.config.js"],{ignoreInitial:!0,ignored:[/node_modules/,/\.git/,/\.dist/,/\.build/,/dist/,/build/,/\.env.*/],awaitWriteFinish:{stabilityThreshold:3e3}});return t.on("add",e=>{c.has(e)||g(`${(0,fs_helpers_1.fullCleanCwd)(e)} has been created`,e)}),t};d();const v=w(),m=_(),b=async()=>{try{const{getArkosConfig:t}=await(0,global_helpers_1.importModule)("../../server"),e=t();if(e&&e.available){const o=a(),n=await port_and_host_allocator_1.default.getHostAndAvailablePort(o,{...e,logWarning:!0,caller:"dev"});return console.info(`
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.devCommand=devCommand,exports.killDevelopmentServerChildProcess=killDevelopmentServerChildProcess;const child_process_1=require("child_process"),chokidar_1=require("chokidar"),fs_helpers_1=require("../helpers/fs.helpers"),cli_helpers_1=require("./utils/cli.helpers"),dotenv_helpers_1=require("../dotenv.helpers"),global_helpers_1=require("../helpers/global.helpers"),fs_1=__importDefault(require("fs")),path_1=__importDefault(require("path")),sheu_1=__importDefault(require("../sheu")),port_and_host_allocator_1=__importDefault(require("../features/port-and-host-allocator"));let child=null,envFiles;async function devCommand(r={}){process.env.NODE_ENV="development",envFiles=(0,dotenv_helpers_1.loadEnvironmentVariables)(),child=null;let s=null;try{const{port:i,host:p}=r;let f=!1,c=new Set;const h=(0,fs_helpers_1.getUserFileExtension)(),l=path_1.default.resolve(process.cwd(),`src/app.${h}`);fs_1.default.existsSync(l)||(console.error(`Could not find application entry point at ${l}`),process.exit(1));const a=()=>({NODE_ENV:"development",...process.env,...i&&{CLI_PORT:i},...p&&{CLI_HOST:p}}),d=()=>{child&&(child.kill(),child=null);const t=a();h==="ts"?child=(0,child_process_1.spawn)("npx",["ts-node-dev","--respawn","--notify=false","--ignore-watch","node_modules","--ignore-watch","dist","--ignore-watch","build","--ignore-watch",".dist","--ignore-watch",".build","--watch","src",l],{stdio:"inherit",env:t,shell:!0}):child=(0,child_process_1.spawn)("npx",["node-dev","--respawn","--notify=false","--ignore","node_modules","--ignore","dist","--ignore","build","--ignore",".dist","--ignore",".build",l],{stdio:"inherit",env:t,shell:!0}),child&&(child.on("error",e=>{console.error("Failed to start server:",e)}),child.on("exit",(e,o)=>{!f&&o!=="SIGTERM"&&o!=="SIGINT"&&(console.info(`Server exited with code ${e}, restarting...`),d())}))},g=(t,e)=>{e&&c.add(e),s&&clearTimeout(s);const n=new Date().toTimeString().split(" ")[0];f=!0,child&&(child.kill(),child=null),s=setTimeout(()=>{sheu_1.default.info(`\x1B[90m${n}\x1B[0m Restarting: ${t.toLowerCase()}`),d(),s=null,c.delete(e)},1e3)},w=()=>{const t=(0,chokidar_1.watch)((0,fs_helpers_1.fullCleanCwd)(envFiles?.join(",")||"").replaceAll("/","").split(",")||[],{ignoreInitial:!0,persistent:!0});return t.on("all",(e,o)=>{try{envFiles=(0,dotenv_helpers_1.loadEnvironmentVariables)(),g("Environments files changed",o)}catch(n){console.error(`Error reloading ${o}:`,n)}}),t},_=()=>{const t=(0,chokidar_1.watch)(["src","package.json","tsconfig.json","jsconfig.json","arkos.config.ts","arkos.config.js"],{ignoreInitial:!0,ignored:[/node_modules/,/\.git/,/\.dist/,/\.build/,/dist/,/build/,/\.env.*/],awaitWriteFinish:{stabilityThreshold:3e3}});return t.on("add",e=>{c.has(e)||g(`${(0,fs_helpers_1.fullCleanCwd)(e)} has been created`,e)}),t};d();const v=w(),m=_(),b=async()=>{try{const{getArkosConfig:t}=await(0,global_helpers_1.importModule)("../../server"),e=t();if(e&&e.available){const o=a(),n=await port_and_host_allocator_1.default.getHostAndAvailablePort(o,{...e,logWarning:!0,caller:"dev"});return console.info(`
|
|
2
2
|
\x1B[1m\x1B[36m Arkos.js ${(0,cli_helpers_1.getVersion)()}\x1B[0m`),e?.port!==void 0&&console.info(` - Local: http://${n.host}:${n.port}`),console.info(` - Environments: ${(0,fs_helpers_1.fullCleanCwd)(envFiles?.join(", ")||"").replaceAll(`${process.cwd()}/`,"").replaceAll("/","")}
|
|
3
3
|
`),!0}return!1}catch(t){const e=t?.message;return!e.includes("../../server")&&!e.includes("cjs/server")&&console.info(t),!1}};(async()=>{let t=0;const e=15;for(;t<e&&!await b();)await new Promise(n=>setTimeout(n,100)),t++;if(t>=e){const o=a(),n=await port_and_host_allocator_1.default.getHostAndAvailablePort(o,{logWarning:!0});console.info(`
|
|
4
4
|
\x1B[1m\x1B[36m Arkos.js ${(0,cli_helpers_1.getVersion)()}\x1B[0m`),console.info(` - Local: http://${n?.host}:${n?.port}`),console.info(` - Environments: ${(0,fs_helpers_1.fullCleanCwd)(envFiles?.join(", ")||"").replaceAll(`${process.cwd()}/`,"").replaceAll("/","")}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.generateCommand=void 0;const fs_1=__importDefault(require("fs")),path_1=__importDefault(require("path")),template_generators_1=require("./utils/template-generators"),cli_helpers_1=require("./utils/cli.helpers"),change_case_helpers_1=require("../helpers/change-case.helpers"),fs_helpers_1=require("../helpers/fs.helpers");exports.generateCommand={controller:async t=>{const e=t.model;e||(console.error(`
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.generateCommand=void 0;const fs_1=__importDefault(require("fs")),path_1=__importDefault(require("path")),template_generators_1=require("./utils/template-generators"),cli_helpers_1=require("./utils/cli.helpers"),change_case_helpers_1=require("../helpers/change-case.helpers"),fs_helpers_1=require("../helpers/fs.helpers");exports.generateCommand={controller:async t=>{const e=t.model;e||(console.error(`
|
|
2
2
|
\u274C Model name is required`),process.exit(1));const{path:c="src/modules"}=t,s={pascal:(0,change_case_helpers_1.pascalCase)(e),camel:(0,change_case_helpers_1.camelCase)(e),kebab:(0,change_case_helpers_1.kebabCase)(e)},n=(0,fs_helpers_1.getUserFileExtension)(),r=path_1.default.join(process.cwd(),c,s.kebab),a=path_1.default.join(r,`${s.kebab}.controller.${n}`);try{(0,cli_helpers_1.ensureDirectoryExists)(r);const o=(0,template_generators_1.generateTemplate)("controller",{modelName:s,imports:{baseController:"arkos/controllers"}});fs_1.default.writeFileSync(a,o),console.info(`
|
|
3
3
|
Controller generated: ${a.replace(process.cwd(),"")}`)}catch(o){console.error("\u274C Failed to generate controller:",o),process.exit(1)}},service:async t=>{const e=t.model;e||(console.error(`
|
|
4
4
|
\u274C Model name is required`),process.exit(1));const{path:c="src/modules"}=t,s={pascal:(0,change_case_helpers_1.pascalCase)(e),camel:(0,change_case_helpers_1.camelCase)(e),kebab:(0,change_case_helpers_1.kebabCase)(e)},n=(0,fs_helpers_1.getUserFileExtension)(),r=path_1.default.join(process.cwd(),c,s.kebab),a=path_1.default.join(r,`${s.kebab}.service.${n}`);try{(0,cli_helpers_1.ensureDirectoryExists)(r);const o=(0,template_generators_1.generateTemplate)("service",{modelName:s,imports:{baseService:"arkos/services"}});fs_1.default.writeFileSync(a,o),console.info(`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.startCommand=startCommand,exports.killProductionServerChildProcess=killProductionServerChildProcess;const path_1=__importDefault(require("path")),fs_1=__importDefault(require("fs")),child_process_1=require("child_process"),dotenv_helpers_1=require("../dotenv.helpers"),global_helpers_1=require("../helpers/global.helpers"),fs_helpers_1=require("../helpers/fs.helpers"),port_and_host_allocator_1=__importDefault(require("../features/port-and-host-allocator")),watermark_stamper_1=__importDefault(require("./utils/watermark-stamper"));let child=null,envFiles;async function startCommand(o={}){process.env.NODE_ENV="production",envFiles=(0,dotenv_helpers_1.loadEnvironmentVariables)();try{const{port:s,host:l}=o,n=path_1.default.join(process.cwd(),".build","src","app.js");fs_1.default.existsSync(path_1.default.join(n))||(console.error(`\u274C Could not find built application entry point at ${(0,fs_helpers_1.fullCleanCwd)(n)}`),process.exit(1));const e={...process.env,NODE_ENV:"production",...s&&{CLI_PORT:s},...l&&{CLI_HOST:l},ARKOS_BUILD:"true"};child=(0,child_process_1.spawn)("node",[n],{stdio:"inherit",env:e,shell:!0}),process.on("SIGINT",()=>{child&&child.kill(),process.exit(0)});const a=async()=>{try{const{getArkosConfig:t}=await(0,global_helpers_1.importModule)("../../server"),r=t();if(r&&r.available){const i=await port_and_host_allocator_1.default.getHostAndAvailablePort(e,{...r,logWarning:!0});return watermark_stamper_1.default.stamp({envFiles,port:"port"in r&&r?.port!==void 0?i.port:void 0,host:i.host}),!0}return!1}catch(t){return t?.message?.includes("../../server")||console.error(t),!1}};(async()=>{let t=0;const r=15;for(;t<r&&!await a();)await new Promise(c=>setTimeout(c,100)),t++;t>=r&&((e.CLI_PORT||e.PORT)&&port_and_host_allocator_1.default.logWarnings(),watermark_stamper_1.default.stamp({envFiles,host:e.CLI_HOST||e.HOST,port:e.CLI_PORT||e.PORT}))})()}catch(s){console.error("\u274C Production server failed to start:",s),process.exit(1)}}function killProductionServerChildProcess(){child?.kill?.(),child=null}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.startCommand=startCommand,exports.killProductionServerChildProcess=killProductionServerChildProcess;const path_1=__importDefault(require("path")),fs_1=__importDefault(require("fs")),child_process_1=require("child_process"),dotenv_helpers_1=require("../dotenv.helpers"),global_helpers_1=require("../helpers/global.helpers"),fs_helpers_1=require("../helpers/fs.helpers"),port_and_host_allocator_1=__importDefault(require("../features/port-and-host-allocator")),watermark_stamper_1=__importDefault(require("./utils/watermark-stamper"));let child=null,envFiles;async function startCommand(o={}){process.env.NODE_ENV="production",envFiles=(0,dotenv_helpers_1.loadEnvironmentVariables)();try{const{port:s,host:l}=o,n=path_1.default.join(process.cwd(),".build","src","app.js");fs_1.default.existsSync(path_1.default.join(n))||(console.error(`\u274C Could not find built application entry point at ${(0,fs_helpers_1.fullCleanCwd)(n)}`),process.exit(1));const e={...process.env,NODE_ENV:"production",...s&&{CLI_PORT:s},...l&&{CLI_HOST:l},ARKOS_BUILD:"true"};child=(0,child_process_1.spawn)("node",[n],{stdio:"inherit",env:e,shell:!0}),process.on("SIGINT",()=>{child&&child.kill(),process.exit(0)});const a=async()=>{try{const{getArkosConfig:t}=await(0,global_helpers_1.importModule)("../../server"),r=t();if(r&&r.available){const i=await port_and_host_allocator_1.default.getHostAndAvailablePort(e,{...r,logWarning:!0});return watermark_stamper_1.default.stamp({envFiles,port:"port"in r&&r?.port!==void 0?i.port:void 0,host:i.host}),!0}return!1}catch(t){return t?.message?.includes("../../server")||console.error(t),!1}};(async()=>{let t=0;const r=15;for(;t<r&&!await a();)await new Promise(c=>setTimeout(c,100)),t++;t>=r&&((e.CLI_PORT||e.PORT)&&port_and_host_allocator_1.default.logWarnings(),watermark_stamper_1.default.stamp({envFiles,host:e.CLI_HOST||e.HOST,port:e.CLI_PORT||e.PORT}))})()}catch(s){console.error("\u274C Production server failed to start:",s),process.exit(1)}}function killProductionServerChildProcess(){child?.kill?.(),child=null}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ensureDirectoryExists=ensureDirectoryExists,exports.killServerChildProcess=killServerChildProcess,exports.getVersion=getVersion;const fs_1=__importDefault(require("fs")),dev_1=require("../dev"),start_1=require("../start");function ensureDirectoryExists(e){fs_1.default.existsSync(e)||fs_1.default.mkdirSync(e,{recursive:!0})}function killServerChildProcess(){(0,dev_1.killDevelopmentServerChildProcess)(),(0,start_1.killProductionServerChildProcess)()}function getVersion(){return"1.2.15-test.
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ensureDirectoryExists=ensureDirectoryExists,exports.killServerChildProcess=killServerChildProcess,exports.getVersion=getVersion;const fs_1=__importDefault(require("fs")),dev_1=require("../dev"),start_1=require("../start");function ensureDirectoryExists(e){fs_1.default.existsSync(e)||fs_1.default.mkdirSync(e,{recursive:!0})}function killServerChildProcess(){(0,dev_1.killDevelopmentServerChildProcess)(),(0,start_1.killProductionServerChildProcess)()}function getVersion(){return"1.2.15-test.3"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.generateRouterTemplate=generateRouterTemplate;const pluralize_1=__importDefault(require("pluralize")),fs_helpers_1=require("../../../../helpers/fs.helpers");function generateRouterTemplate(r){const{modelName:e,imports:o}=r;if(!e)throw new Error("Model name is required for router template");const t=(0,fs_helpers_1.getUserFileExtension)(),n=o?.controller||`./${e.kebab}.controller.${t}`,s=t==="ts"?": RouterConfig":"",c=t==="ts"?"import { RouterConfig } from 'arkos'":"",l=(0,fs_helpers_1.checkFileExists)(n),i=l?`import ${e.camel}Controller from "${o?.controller||`./${e.kebab}.controller`}"`:`// import ${e.camel}Controller from "${o?.controller||`./${e.kebab}.controller`}"`,a=l?` ${e.camel}Controller.someHandler`:` // ${e.camel}Controller.someHandler`;return`import { Router } from 'express'
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.generateRouterTemplate=generateRouterTemplate;const pluralize_1=__importDefault(require("pluralize")),fs_helpers_1=require("../../../../helpers/fs.helpers");function generateRouterTemplate(r){const{modelName:e,imports:o}=r;if(!e)throw new Error("Model name is required for router template");const t=(0,fs_helpers_1.getUserFileExtension)(),n=o?.controller||`./${e.kebab}.controller.${t}`,s=t==="ts"?": RouterConfig":"",c=t==="ts"?"import { RouterConfig } from 'arkos'":"",l=(0,fs_helpers_1.checkFileExists)(n),i=l?`import ${e.camel}Controller from "${o?.controller||`./${e.kebab}.controller`}"`:`// import ${e.camel}Controller from "${o?.controller||`./${e.kebab}.controller`}"`,a=l?` ${e.camel}Controller.someHandler`:` // ${e.camel}Controller.someHandler`;return`import { Router } from 'express'
|
|
2
2
|
import { authService } from 'arkos/services'
|
|
3
3
|
${i}
|
|
4
4
|
${c}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.loadEnvironmentVariables=loadEnvironmentVariables;const path_1=__importDefault(require("path")),fs_1=__importDefault(require("fs")),dotenv_1=__importDefault(require("dotenv"));function loadEnvironmentVariables(){const e=process.env.NODE_ENV,n=process.cwd();let o=[];[path_1.default.resolve(n,".env.defaults"),path_1.default.resolve(n,`.env.${e}`),path_1.default.resolve(n,`.env.${e}.local`),path_1.default.resolve(n,".env.local"),path_1.default.resolve(n,".env")].forEach(r=>{if(fs_1.default.existsSync(r))if(e==="production"&&r.endsWith(".local"))console.info(`Skipping the local ${r.replace(n,"")} files in production`);else{const t=dotenv_1.default.config({path:r,override:!0});t.error?console.warn(`Warning: Error loading ${r}`,t.error):o.push(r)}});const s=["DATABASE_URL"].filter(r=>!process.env[r]);if(s.length>0&&console.error("Missing required environment variables:",s.join(", ")),o)return o}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.loadEnvironmentVariables=loadEnvironmentVariables;const path_1=__importDefault(require("path")),fs_1=__importDefault(require("fs")),dotenv_1=__importDefault(require("dotenv"));function loadEnvironmentVariables(){const e=process.env.NODE_ENV,n=process.cwd();let o=[];[path_1.default.resolve(n,".env.defaults"),path_1.default.resolve(n,`.env.${e}`),path_1.default.resolve(n,`.env.${e}.local`),path_1.default.resolve(n,".env.local"),path_1.default.resolve(n,".env")].forEach(r=>{if(fs_1.default.existsSync(r))if(e==="production"&&r.endsWith(".local"))console.info(`Skipping the local ${r.replace(n,"")} files in production`);else{const t=dotenv_1.default.config({path:r,override:!0});t.error?console.warn(`Warning: Error loading ${r}`,t.error):o.push(r)}});const s=["DATABASE_URL"].filter(r=>!process.env[r]);if(s.length>0&&console.error("Missing required environment variables:",s.join(", ")),o)return o}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.apiFeatures=void 0;const deepmerge_helper_1=__importDefault(require("../helpers/deepmerge.helper")),api_features_helpers_1=require("../helpers/api.features.helpers"),app_error_1=__importDefault(require("../../modules/error-handler/utils/app-error")),prisma_helpers_1=require("../helpers/prisma.helpers");class APIFeatures{constructor(e,s){if(this.filters={},this.reqFiltersSearchParam={},this.excludedFields=["page","filters","sort","limit","fields","addFields","removeFields","search","include","filterMode","where","prismaQueryOptions","ignoredFields"],e){const{filters:t="{}",...h}=e.query;this.req=e,this.searchParams=(0,deepmerge_helper_1.default)((0,api_features_helpers_1.parseQueryParamsWithModifiers)(h),(0,api_features_helpers_1.parseQueryParamsWithModifiers)(JSON.parse(t))),e.finalPrismaQueryOptions=this.searchParams}s&&(this.modelName=s),this.filters={...this.filters}}setup(e,s){if(e){const{filters:t="{}",...h}=e.query;this.req=e,this.searchParams=(0,deepmerge_helper_1.default)((0,api_features_helpers_1.parseQueryParamsWithModifiers)(h),(0,api_features_helpers_1.parseQueryParamsWithModifiers)(JSON.parse(t))),e.finalPrismaQueryOptions=this.searchParams}return s&&(this.modelName=s),this.filters={...this.filters},this}filter(){if(!this.req)throw new Error("Trying to use APIFeatures.filter() without passing request on class constructor or APIFeatures.setup() method. read more about at www.arkosjs.com/docs/advanced-guide/api-features-class");const e=[],s={...this.searchParams};this.excludedFields.forEach(a=>delete s[a]);const t={...this.req.params,...s},h=Object.keys(t).map(a=>({[a]:t[a]}));let i=h.length>0?{[this.req.query?.filterMode??"OR"]:h}:{};if(this.searchParams.search){const a=(0,prisma_helpers_1.getPrismaInstance)();this.modelName&&Object.keys(a[this.modelName].fields).forEach(l=>{const d=a[this.modelName].fields[l];d?.typeName==="String"&&l!=="id"&&l!=="password"&&!d.isList&&!l?.includes?.("Id")&&!l?.includes?.("ID")&&e.push({[`${l}`]:{contains:this.searchParams.search,mode:"insensitive"}})}),i=(0,deepmerge_helper_1.default)({OR:e},i)}const r=(0,deepmerge_helper_1.default)({where:i},this.req.prismaQueryOptions||{});return this.filters=(0,deepmerge_helper_1.default)(r,this.filters),this}search(){this.searchParams?.search&&(this.filters=(0,deepmerge_helper_1.default)(this.filters,{where:{OR:[]}}))}sort(){if(this.searchParams.sort){const e=this.searchParams?.sort?.split(",")?.map(s=>({[s.startsWith("-")?s.substring(1):s]:s.startsWith("-")?"desc":"asc"}));this.filters=(0,deepmerge_helper_1.default)(this.filters,{orderBy:e})}return this}limitFields(){if(this.searchParams?.fields){const e=this.searchParams.fields.split(","),s=e.filter(r=>!r.startsWith("+")&&!r.startsWith("-")),t=e.filter(r=>r.startsWith("+")).map(r=>r.substring(1)),h=e.filter(r=>r.startsWith("-")).map(r=>r.substring(1));let i={};s.length>0?i=s.reduce((r,a)=>(r[a]=!0,r),{}):(i=this.filters.include||{},t.forEach(r=>{i[r]=!0}),h.forEach(r=>{i[r]=!1})),this.filters={...this.filters,select:i},this.filters.include&&delete this.filters.include}if(this.searchParams?.addFields||this.searchParams?.removeFields)throw new app_error_1.default("The addFields and removeFields parameters are deprecated. Please use fields with + and - prefixes instead.",400);return this}paginate(){const e=parseInt(this.searchParams.page,10)||1,s=parseInt(this.searchParams.limit,10)||30,t=(e-1)*s;return this.filters={...this.filters,skip:t,take:s},this}}exports.default=APIFeatures,exports.apiFeatures=new APIFeatures;
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.apiFeatures=void 0;const deepmerge_helper_1=__importDefault(require("../helpers/deepmerge.helper")),api_features_helpers_1=require("../helpers/api.features.helpers"),app_error_1=__importDefault(require("../../modules/error-handler/utils/app-error")),prisma_helpers_1=require("../helpers/prisma.helpers");class APIFeatures{constructor(e,s){if(this.filters={},this.reqFiltersSearchParam={},this.excludedFields=["page","filters","sort","limit","fields","addFields","removeFields","search","include","filterMode","where","prismaQueryOptions","ignoredFields"],e){const{filters:t="{}",...h}=e.query;this.req=e,this.searchParams=(0,deepmerge_helper_1.default)((0,api_features_helpers_1.parseQueryParamsWithModifiers)(h),(0,api_features_helpers_1.parseQueryParamsWithModifiers)(JSON.parse(t))),e.finalPrismaQueryOptions=this.searchParams}s&&(this.modelName=s),this.filters={...this.filters}}setup(e,s){if(e){const{filters:t="{}",...h}=e.query;this.req=e,this.searchParams=(0,deepmerge_helper_1.default)((0,api_features_helpers_1.parseQueryParamsWithModifiers)(h),(0,api_features_helpers_1.parseQueryParamsWithModifiers)(JSON.parse(t))),e.finalPrismaQueryOptions=this.searchParams}return s&&(this.modelName=s),this.filters={...this.filters},this}filter(){if(!this.req)throw new Error("Trying to use APIFeatures.filter() without passing request on class constructor or APIFeatures.setup() method. read more about at www.arkosjs.com/docs/advanced-guide/api-features-class");const e=[],s={...this.searchParams};this.excludedFields.forEach(a=>delete s[a]);const t={...this.req.params,...s},h=Object.keys(t).map(a=>({[a]:t[a]}));let i=h.length>0?{[this.req.query?.filterMode??"OR"]:h}:{};if(this.searchParams.search){const a=(0,prisma_helpers_1.getPrismaInstance)();this.modelName&&Object.keys(a[this.modelName].fields).forEach(l=>{const d=a[this.modelName].fields[l];d?.typeName==="String"&&l!=="id"&&l!=="password"&&!d.isList&&!l?.includes?.("Id")&&!l?.includes?.("ID")&&e.push({[`${l}`]:{contains:this.searchParams.search,mode:"insensitive"}})}),i=(0,deepmerge_helper_1.default)({OR:e},i)}const r=(0,deepmerge_helper_1.default)({where:i},this.req.prismaQueryOptions||{});return this.filters=(0,deepmerge_helper_1.default)(r,this.filters),this}search(){this.searchParams?.search&&(this.filters=(0,deepmerge_helper_1.default)(this.filters,{where:{OR:[]}}))}sort(){if(this.searchParams.sort){const e=this.searchParams?.sort?.split(",")?.map(s=>({[s.startsWith("-")?s.substring(1):s]:s.startsWith("-")?"desc":"asc"}));this.filters=(0,deepmerge_helper_1.default)(this.filters,{orderBy:e})}return this}limitFields(){if(this.searchParams?.fields){const e=this.searchParams.fields.split(","),s=e.filter(r=>!r.startsWith("+")&&!r.startsWith("-")),t=e.filter(r=>r.startsWith("+")).map(r=>r.substring(1)),h=e.filter(r=>r.startsWith("-")).map(r=>r.substring(1));let i={};s.length>0?i=s.reduce((r,a)=>(r[a]=!0,r),{}):(i=this.filters.include||{},t.forEach(r=>{i[r]=!0}),h.forEach(r=>{i[r]=!1})),this.filters={...this.filters,select:i},this.filters.include&&delete this.filters.include}if(this.searchParams?.addFields||this.searchParams?.removeFields)throw new app_error_1.default("The addFields and removeFields parameters are deprecated. Please use fields with + and - prefixes instead.",400);return this}paginate(){const e=parseInt(this.searchParams.page,10)||1,s=parseInt(this.searchParams.limit,10)||30,t=(e-1)*s;return this.filters={...this.filters,skip:t,take:s},this}}exports.default=APIFeatures,exports.apiFeatures=new APIFeatures;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __createBinding=Object.create?function(s,e,t,a){a===void 0&&(a=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,a,r)}:function(s,e,t,a){a===void 0&&(a=t),s[a]=e[t]},__setModuleDefault=Object.create?function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}:function(s,e){s.default=e},__importStar=function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var a=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(a[a.length]=r);return a},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var a=s(e),r=0;r<a.length;r++)a[r]!=="default"&&__createBinding(t,e,a[r]);return __setModuleDefault(t,e),t}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.snakeCase=exports.sentenceCase=exports.pathCase=exports.pascalCase=exports.kebabCase=exports.noCase=exports.trainCase=exports.dotCase=exports.constantCase=exports.capitalCase=exports.camelCase=void 0;const changeCase=__importStar(require("../helpers/change-case.helpers")),isObject=s=>s!==null&&typeof s=="object";function changeKeysFactory(s){return function e(t,a=1,r){if(a===0||!isObject(t))return t;if(Array.isArray(t))return t.map(n=>e(n,a-1,r));const o=Object.create(Object.getPrototypeOf(t));return Object.keys(t).forEach(n=>{const c=t[n],u=s(n,r),i=e(c,a-1,r);o[u]=i}),o}}exports.camelCase=changeKeysFactory(changeCase.camelCase),exports.capitalCase=changeKeysFactory(changeCase.capitalCase),exports.constantCase=changeKeysFactory(changeCase.constantCase),exports.dotCase=changeKeysFactory(changeCase.dotCase),exports.trainCase=changeKeysFactory(changeCase.trainCase),exports.noCase=changeKeysFactory(changeCase.noCase),exports.kebabCase=changeKeysFactory(changeCase.kebabCase),exports.pascalCase=changeKeysFactory(changeCase.pascalCase),exports.pathCase=changeKeysFactory(changeCase.pathCase),exports.sentenceCase=changeKeysFactory(changeCase.sentenceCase),exports.snakeCase=changeKeysFactory(changeCase.snakeCase);
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(s,e,t,a){a===void 0&&(a=t);var r=Object.getOwnPropertyDescriptor(e,t);(!r||("get"in r?!e.__esModule:r.writable||r.configurable))&&(r={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(s,a,r)}:function(s,e,t,a){a===void 0&&(a=t),s[a]=e[t]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(s,e){Object.defineProperty(s,"default",{enumerable:!0,value:e})}:function(s,e){s.default=e}),__importStar=this&&this.__importStar||function(){var s=function(e){return s=Object.getOwnPropertyNames||function(t){var a=[];for(var r in t)Object.prototype.hasOwnProperty.call(t,r)&&(a[a.length]=r);return a},s(e)};return function(e){if(e&&e.__esModule)return e;var t={};if(e!=null)for(var a=s(e),r=0;r<a.length;r++)a[r]!=="default"&&__createBinding(t,e,a[r]);return __setModuleDefault(t,e),t}}();Object.defineProperty(exports,"__esModule",{value:!0}),exports.snakeCase=exports.sentenceCase=exports.pathCase=exports.pascalCase=exports.kebabCase=exports.noCase=exports.trainCase=exports.dotCase=exports.constantCase=exports.capitalCase=exports.camelCase=void 0;const changeCase=__importStar(require("../helpers/change-case.helpers")),isObject=s=>s!==null&&typeof s=="object";function changeKeysFactory(s){return function e(t,a=1,r){if(a===0||!isObject(t))return t;if(Array.isArray(t))return t.map(n=>e(n,a-1,r));const o=Object.create(Object.getPrototypeOf(t));return Object.keys(t).forEach(n=>{const c=t[n],u=s(n,r),i=e(c,a-1,r);o[u]=i}),o}}exports.camelCase=changeKeysFactory(changeCase.camelCase),exports.capitalCase=changeKeysFactory(changeCase.capitalCase),exports.constantCase=changeKeysFactory(changeCase.constantCase),exports.dotCase=changeKeysFactory(changeCase.dotCase),exports.trainCase=changeKeysFactory(changeCase.trainCase),exports.noCase=changeKeysFactory(changeCase.noCase),exports.kebabCase=changeKeysFactory(changeCase.kebabCase),exports.pascalCase=changeKeysFactory(changeCase.pascalCase),exports.pathCase=changeKeysFactory(changeCase.pathCase),exports.sentenceCase=changeKeysFactory(changeCase.sentenceCase),exports.snakeCase=changeKeysFactory(changeCase.snakeCase);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __createBinding=Object.create?function(o,t,e,r){r===void 0&&(r=e);var n=Object.getOwnPropertyDescriptor(t,e);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[e]}}),Object.defineProperty(o,r,n)}:function(o,t,e,r){r===void 0&&(r=e),o[r]=t[e]},__setModuleDefault=Object.create?function(o,t){Object.defineProperty(o,"default",{enumerable:!0,value:t})}:function(o,t){o.default=t},__importStar=function(){var o=function(t){return o=Object.getOwnPropertyNames||function(e){var r=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(r[r.length]=n);return r},o(t)};return function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r=o(t),n=0;n<r.length;n++)r[n]!=="default"&&__createBinding(e,t,r[n]);return __setModuleDefault(e,t),e}}(),__importDefault=function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(exports,"__esModule",{value:!0});const net=__importStar(require("net")),sheu_1=__importDefault(require("../sheu"));class PortAndHostAllocator{constructor(){this.prevWarnings=new Set}getCorrectHostAndPortToUse(t,e){const r=t?.CLI_HOST||e?.host||t?.HOST||"localhost",n=t?.CLI_PORT||e?.port||t?.PORT||"8000";return{host:String(r),port:String(n)}}async getHostAndAvailablePort(t,e){if(this.port&&this.host)return e?.logWarning&&this.prevWarnings.size>0&&(console.info(""),Array.from(this.prevWarnings).forEach(s=>sheu_1.default.warn(s))),{port:this.port,host:this.host};const{host:r,port:n}=this.getCorrectHostAndPortToUse(t,e);let i=parseInt(n,10);for(;;){if(await this.isPortAvailable(r,i))return this.port=i.toString(),this.host=r,{host:r,port:i.toString()};const a=`Port ${i} is in use, trying port ${i+1} instead...`;this.prevWarnings.add(a),e?.logWarning&&(console.info(""),sheu_1.default.warn(`${a}`)),i++}}async isPortAvailable(t,e){return new Promise(r=>{const n=net.createServer(),i=[e,["localhost","127.0.0.1"].includes(t)?void 0:t].filter(s=>!!s);n.listen(...i,()=>{n.close(()=>{r(!0)})}),n.on("error",()=>{r(!1)})})}logWarnings(){console.info(""),Array.from(this.prevWarnings).forEach(t=>sheu_1.default.warn(t))}}const portAndHostAllocator=new PortAndHostAllocator;exports.default=portAndHostAllocator;
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(o,t,e,r){r===void 0&&(r=e);var n=Object.getOwnPropertyDescriptor(t,e);(!n||("get"in n?!t.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return t[e]}}),Object.defineProperty(o,r,n)}:function(o,t,e,r){r===void 0&&(r=e),o[r]=t[e]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(o,t){Object.defineProperty(o,"default",{enumerable:!0,value:t})}:function(o,t){o.default=t}),__importStar=this&&this.__importStar||function(){var o=function(t){return o=Object.getOwnPropertyNames||function(e){var r=[];for(var n in e)Object.prototype.hasOwnProperty.call(e,n)&&(r[r.length]=n);return r},o(t)};return function(t){if(t&&t.__esModule)return t;var e={};if(t!=null)for(var r=o(t),n=0;n<r.length;n++)r[n]!=="default"&&__createBinding(e,t,r[n]);return __setModuleDefault(e,t),e}}(),__importDefault=this&&this.__importDefault||function(o){return o&&o.__esModule?o:{default:o}};Object.defineProperty(exports,"__esModule",{value:!0});const net=__importStar(require("net")),sheu_1=__importDefault(require("../sheu"));class PortAndHostAllocator{constructor(){this.prevWarnings=new Set}getCorrectHostAndPortToUse(t,e){const r=t?.CLI_HOST||e?.host||t?.HOST||"localhost",n=t?.CLI_PORT||e?.port||t?.PORT||"8000";return{host:String(r),port:String(n)}}async getHostAndAvailablePort(t,e){if(this.port&&this.host)return e?.logWarning&&this.prevWarnings.size>0&&(console.info(""),Array.from(this.prevWarnings).forEach(s=>sheu_1.default.warn(s))),{port:this.port,host:this.host};const{host:r,port:n}=this.getCorrectHostAndPortToUse(t,e);let i=parseInt(n,10);for(;;){if(await this.isPortAvailable(r,i))return this.port=i.toString(),this.host=r,{host:r,port:i.toString()};const a=`Port ${i} is in use, trying port ${i+1} instead...`;this.prevWarnings.add(a),e?.logWarning&&(console.info(""),sheu_1.default.warn(`${a}`)),i++}}async isPortAvailable(t,e){return new Promise(r=>{const n=net.createServer(),i=[e,["localhost","127.0.0.1"].includes(t)?void 0:t].filter(s=>!!s);n.listen(...i,()=>{n.close(()=>{r(!0)})}),n.on("error",()=>{r(!1)})})}logWarnings(){console.info(""),Array.from(this.prevWarnings).forEach(t=>sheu_1.default.warn(t))}}const portAndHostAllocator=new PortAndHostAllocator;exports.default=portAndHostAllocator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseQueryParamsWithModifiers=parseQueryParamsWithModifiers;const deepmerge_helper_1=__importDefault(require("./deepmerge.helper")),DEFAULT_FIELD_CONFIG={dateFields:["createdAt","updatedAt","deletedAt","date"],booleanFields:["isActive","isDeleted","isPublished","isArchived"],numericFields:["age","price","quantity","amount","rating"]};function parseQueryParamsWithModifiers(e,s=DEFAULT_FIELD_CONFIG){const o=Object.entries(JSON.parse(JSON.stringify(e)));let d={};for(const[b,i]of o){const t=b.split("__");if(!i&&i!==!1&&i!=="false"&&t.length<2)continue;const r=Array.isArray(i)?i[0]?.toString():i;let u={};if(t.length<2)u[b]=typeof i=="string"&&!Number.isNaN(i)?convertValue(r,t[0],s):i;else{const l=t[0];if(l==="orderBy"&&t.length===2)u.orderBy={},u.orderBy[t[1]]=r;else if(t.length===1)u[l]={equals:convertValue(r,l,s)};else{let p={},n=p,a=l;for(let c=1;c<t.length-1;c++)n[a]={},n=n[a],a=t[c];const f=t[t.length-1];switch(f){case"icontains":n[a]={contains:r,mode:"insensitive"};break;case"contains":n[a]={contains:r,mode:"sensitive"};break;case"in":case"notIn":n[a]={[f]:r.split(",").map(h=>convertValue(h.trim(),l,s))};break;case"or":const c=r.split(",");p.OR=c.map(h=>({[l]:{equals:convertValue(h.trim(),l,s)}}));break;case"isNull":n[a]={equals:r.toLowerCase()==="true"?null:void 0};break;case"isEmpty":n[a]={equals:r.toLowerCase()==="true"?"":void 0};break;default:n[a]={[f]:convertValue(r,l,s)}}u=p}}d=(0,deepmerge_helper_1.default)(d,u)}return d}function convertValue(e,s,o){return o.dateFields?.includes?.(s)&&e?new Date(e):o.booleanFields?.includes?.(s)&&e?e.toLowerCase()==="true":o.numericFields?.includes?.(s)&&e?Number(e):e}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.parseQueryParamsWithModifiers=parseQueryParamsWithModifiers;const deepmerge_helper_1=__importDefault(require("./deepmerge.helper")),DEFAULT_FIELD_CONFIG={dateFields:["createdAt","updatedAt","deletedAt","date"],booleanFields:["isActive","isDeleted","isPublished","isArchived"],numericFields:["age","price","quantity","amount","rating"]};function parseQueryParamsWithModifiers(e,s=DEFAULT_FIELD_CONFIG){const o=Object.entries(JSON.parse(JSON.stringify(e)));let d={};for(const[b,i]of o){const t=b.split("__");if(!i&&i!==!1&&i!=="false"&&t.length<2)continue;const r=Array.isArray(i)?i[0]?.toString():i;let u={};if(t.length<2)u[b]=typeof i=="string"&&!Number.isNaN(i)?convertValue(r,t[0],s):i;else{const l=t[0];if(l==="orderBy"&&t.length===2)u.orderBy={},u.orderBy[t[1]]=r;else if(t.length===1)u[l]={equals:convertValue(r,l,s)};else{let p={},n=p,a=l;for(let c=1;c<t.length-1;c++)n[a]={},n=n[a],a=t[c];const f=t[t.length-1];switch(f){case"icontains":n[a]={contains:r,mode:"insensitive"};break;case"contains":n[a]={contains:r,mode:"sensitive"};break;case"in":case"notIn":n[a]={[f]:r.split(",").map(h=>convertValue(h.trim(),l,s))};break;case"or":const c=r.split(",");p.OR=c.map(h=>({[l]:{equals:convertValue(h.trim(),l,s)}}));break;case"isNull":n[a]={equals:r.toLowerCase()==="true"?null:void 0};break;case"isEmpty":n[a]={equals:r.toLowerCase()==="true"?"":void 0};break;default:n[a]={[f]:convertValue(r,l,s)}}u=p}}d=(0,deepmerge_helper_1.default)(d,u)}return d}function convertValue(e,s,o){return o.dateFields?.includes?.(s)&&e?new Date(e):o.booleanFields?.includes?.(s)&&e?e.toLowerCase()==="true":o.numericFields?.includes?.(s)&&e?Number(e):e}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getUserFileExtension=exports.userFileExtension=exports.crd=exports.mkdirAsync=exports.accessAsync=exports.statAsync=void 0,exports.fullCleanCwd=fullCleanCwd,exports.checkFileExists=checkFileExists;const util_1=require("util"),fs_1=__importDefault(require("fs")),path_1=__importDefault(require("path"));exports.statAsync=(0,util_1.promisify)(fs_1.default.stat),exports.accessAsync=(0,util_1.promisify)(fs_1.default.access),exports.mkdirAsync=(0,util_1.promisify)(fs_1.default.mkdir);const crd=()=>process.env.ARKOS_BUILD==="true"?process.cwd()+"/.build/":process.cwd();exports.crd=crd;function fullCleanCwd(e){if(typeof e!="string")throw new Error("Path must be a string");const t=process.cwd().replace(/\/+$/,"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.replace(new RegExp(`${t}/?`,"g"),"")}const getUserFileExtension=()=>{if(exports.userFileExtension)return exports.userFileExtension;try{const e=process.cwd(),s=fs_1.default.existsSync(path_1.default.join(e,"tsconfig.json")),t=fs_1.default.existsSync(path_1.default.join(e,"src","app.ts")),r=fs_1.default.existsSync(path_1.default.join(e,"src","app.js"));return process.env.ARKOS_BUILD==="true"?exports.userFileExtension="js":s||t&&!r?exports.userFileExtension="ts":exports.userFileExtension="js",exports.userFileExtension}catch{return exports.userFileExtension="js",exports.userFileExtension}};exports.getUserFileExtension=getUserFileExtension;function checkFileExists(e){try{return fs_1.default.existsSync(path_1.default.resolve(e))}catch{return!1}}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getUserFileExtension=exports.userFileExtension=exports.crd=exports.mkdirAsync=exports.accessAsync=exports.statAsync=void 0,exports.fullCleanCwd=fullCleanCwd,exports.checkFileExists=checkFileExists;const util_1=require("util"),fs_1=__importDefault(require("fs")),path_1=__importDefault(require("path"));exports.statAsync=(0,util_1.promisify)(fs_1.default.stat),exports.accessAsync=(0,util_1.promisify)(fs_1.default.access),exports.mkdirAsync=(0,util_1.promisify)(fs_1.default.mkdir);const crd=()=>process.env.ARKOS_BUILD==="true"?process.cwd()+"/.build/":process.cwd();exports.crd=crd;function fullCleanCwd(e){if(typeof e!="string")throw new Error("Path must be a string");const t=process.cwd().replace(/\/+$/,"").replace(/[.*+?^${}()|[\]\\]/g,"\\$&");return e.replace(new RegExp(`${t}/?`,"g"),"")}const getUserFileExtension=()=>{if(exports.userFileExtension)return exports.userFileExtension;try{const e=process.cwd(),s=fs_1.default.existsSync(path_1.default.join(e,"tsconfig.json")),t=fs_1.default.existsSync(path_1.default.join(e,"src","app.ts")),r=fs_1.default.existsSync(path_1.default.join(e,"src","app.js"));return process.env.ARKOS_BUILD==="true"?exports.userFileExtension="js":s||t&&!r?exports.userFileExtension="ts":exports.userFileExtension="js",exports.userFileExtension}catch{return exports.userFileExtension="js",exports.userFileExtension}};exports.getUserFileExtension=getUserFileExtension;function checkFileExists(e){try{return fs_1.default.existsSync(path_1.default.resolve(e))}catch{return!1}}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __createBinding=Object.create?function(e,r,u,n){n===void 0&&(n=u);var t=Object.getOwnPropertyDescriptor(r,u);(!t||("get"in t?!r.__esModule:t.writable||t.configurable))&&(t={enumerable:!0,get:function(){return r[u]}}),Object.defineProperty(e,n,t)}:function(e,r,u,n){n===void 0&&(n=u),e[n]=r[u]},__setModuleDefault=Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r},__importStar=function(){var e=function(r){return e=Object.getOwnPropertyNames||function(u){var n=[];for(var t in u)Object.prototype.hasOwnProperty.call(u,t)&&(n[n.length]=t);return n},e(r)};return function(r){if(r&&r.__esModule)return r;var u={};if(r!=null)for(var n=e(r),t=0;t<n.length;t++)n[t]!=="default"&&__createBinding(u,r,n[t]);return __setModuleDefault(u,r),u}}(),__importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getPackageJson=getPackageJson,exports.isEsm=isEsm,exports.importModule=importModule,exports.detectPackageManagerFromUserAgent=detectPackageManagerFromUserAgent;const fs_1=__importDefault(require("fs")),path_1=__importDefault(require("path")),module_1=require("module"),url_1=require("url");function getPackageJson(){try{const e=path_1.default.join(process.cwd(),"package.json");if(fs_1.default.existsSync(e))return JSON.parse(fs_1.default.readFileSync(e,"utf8"))}catch(e){console.error("Error checking package.json:",e)}}function isEsm(){return getPackageJson()?.type==="module"}async function importModule(e,r={fixExtension:!0}){if(!r.fixExtension||e.endsWith(".ts")||!isEsm())return await Promise.resolve(`${e}`).then(t=>__importStar(require(t)));const n=(0,module_1.createRequire)((0,url_1.pathToFileURL)(process.cwd()+"/package.json")).resolve(e);return await Promise.resolve(`${(0,url_1.pathToFileURL)(n)}`).then(t=>__importStar(require(t)))}function detectPackageManagerFromUserAgent(){const e=process.env.npm_config_user_agent||"";return e?e.includes("cnpm")?"cnpm":e.includes("pnpm")?"pnpm":e.includes("yarn")?"yarn":e.includes("npm")?"npm":e.includes("bun")?"bun":e.includes("corepack")?"corepack":e.includes("deno")?"deno":"npm":"npm"}
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?function(e,r,u,n){n===void 0&&(n=u);var t=Object.getOwnPropertyDescriptor(r,u);(!t||("get"in t?!r.__esModule:t.writable||t.configurable))&&(t={enumerable:!0,get:function(){return r[u]}}),Object.defineProperty(e,n,t)}:function(e,r,u,n){n===void 0&&(n=u),e[n]=r[u]}),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?function(e,r){Object.defineProperty(e,"default",{enumerable:!0,value:r})}:function(e,r){e.default=r}),__importStar=this&&this.__importStar||function(){var e=function(r){return e=Object.getOwnPropertyNames||function(u){var n=[];for(var t in u)Object.prototype.hasOwnProperty.call(u,t)&&(n[n.length]=t);return n},e(r)};return function(r){if(r&&r.__esModule)return r;var u={};if(r!=null)for(var n=e(r),t=0;t<n.length;t++)n[t]!=="default"&&__createBinding(u,r,n[t]);return __setModuleDefault(u,r),u}}(),__importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.getPackageJson=getPackageJson,exports.isEsm=isEsm,exports.importModule=importModule,exports.detectPackageManagerFromUserAgent=detectPackageManagerFromUserAgent;const fs_1=__importDefault(require("fs")),path_1=__importDefault(require("path")),module_1=require("module"),url_1=require("url");function getPackageJson(){try{const e=path_1.default.join(process.cwd(),"package.json");if(fs_1.default.existsSync(e))return JSON.parse(fs_1.default.readFileSync(e,"utf8"))}catch(e){console.error("Error checking package.json:",e)}}function isEsm(){return getPackageJson()?.type==="module"}async function importModule(e,r={fixExtension:!0}){if(!r.fixExtension||e.endsWith(".ts")||!isEsm())return await Promise.resolve(`${e}`).then(t=>__importStar(require(t)));const n=(0,module_1.createRequire)((0,url_1.pathToFileURL)(process.cwd()+"/package.json")).resolve(e);return await Promise.resolve(`${(0,url_1.pathToFileURL)(n)}`).then(t=>__importStar(require(t)))}function detectPackageManagerFromUserAgent(){const e=process.env.npm_config_user_agent||"";return e?e.includes("cnpm")?"cnpm":e.includes("pnpm")?"pnpm":e.includes("yarn")?"yarn":e.includes("npm")?"npm":e.includes("bun")?"bun":e.includes("corepack")?"corepack":e.includes("deno")?"deno":"npm":"npm"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.prismaModelsUniqueFields=exports.prismaSchemasContent=exports.models=exports.prismaModelRelationFields=void 0,exports.setModelModules=setModelModules,exports.getModelModules=getModelModules,exports.getFileModelModulesFileStructure=getFileModelModulesFileStructure,exports.processSubdir=processSubdir,exports.validateNamingConventions=validateNamingConventions,exports.assignModuleToResult=assignModuleToResult,exports.importPrismaModelModules=importPrismaModelModules,exports.getAllPrismaFiles=getAllPrismaFiles,exports.initializePrismaModels=initializePrismaModels,exports.getPrismaModelRelations=getPrismaModelRelations,exports.getPrismaSchemasContent=getPrismaSchemasContent,exports.localValidatorFileExists=localValidatorFileExists,exports.getModels=getModels,exports.getModelUniqueFields=getModelUniqueFields;const path_1=__importDefault(require("path")),fs_1=__importDefault(require("fs")),change_case_helpers_1=require("../../utils/helpers/change-case.helpers"),fs_helpers_1=require("./fs.helpers"),global_helpers_1=require("./global.helpers"),cli_helpers_1=require("../cli/utils/cli.helpers"),sheu_1=__importDefault(require("../sheu"));let prismaModelsModules={};function setModelModules(s,e){prismaModelsModules[(0,change_case_helpers_1.kebabCase)(s)]=e}function getModelModules(s){return prismaModelsModules[(0,change_case_helpers_1.kebabCase)(s)]}function getFileModelModulesFileStructure(s){const e=(0,change_case_helpers_1.kebabCase)(s).toLowerCase(),o=s.toLowerCase()==="auth",t=(0,fs_helpers_1.getUserFileExtension)();return{core:{service:`${e}.service.${t}`,controller:`${e}.controller.${t}`,middlewares:`${e}.middlewares.${t}`,authConfigs:`${e}.auth-configs.${t}`,authConfigsNew:`${e}.auth.${t}`,prismaQueryOptions:`${e}.prisma-query-options.${t}`,prismaQueryOptionsNew:`${e}.query.${t}`,router:`${e}.router.${t}`},dtos:o?{login:`login.dto.${t}`,signup:`signup.dto.${t}`,getMe:`get-me.dto.${t}`,updateMe:`update-me.dto.${t}`,updatePassword:`update-password.dto.${t}`}:{model:`${e}.dto.${t}`,create:`create-${e}.dto.${t}`,createOne:`create-${e}.dto.${t}`,createMany:`create-many-${e}.dto.${t}`,update:`update-${e}.dto.${t}`,updateOne:`update-${e}.dto.${t}`,updateMany:`update-many-${e}.dto.${t}`,query:`query-${e}.dto.${t}`,findOne:`find-one-${e}.dto.${t}`,findMany:`find-many-${e}.dto.${t}`},schemas:o?{login:`login.schema.${t}`,signup:`signup.schema.${t}`,getMe:`get-me.schema.${t}`,updateMe:`update-me.schema.${t}`,updatePassword:`update-password.schema.${t}`}:{model:`${e}.schema.${t}`,create:`create-${e}.schema.${t}`,createOne:`create-${e}.schema.${t}`,createMany:`create-many-${e}.schema.${t}`,update:`update-${e}.schema.${t}`,updateOne:`update-${e}.schema.${t}`,updateMany:`update-many-${e}.schema.${t}`,query:`query-${e}.schema.${t}`,findOne:`find-one-${e}.schema.${t}`,findMany:`find-many-${e}.schema.${t}`}}}async function processSubdir(s,e){const o=path_1.default.resolve((0,fs_helpers_1.crd)(),"src","modules",(0,change_case_helpers_1.kebabCase)(s)),t=path_1.default.join(o,e),n=getFileModelModulesFileStructure(s),a={};try{await fs_1.default.promises.access(t).catch(()=>{}),await Promise.all(Object.entries(n[e]).map(async([c,d])=>{const u=path_1.default.join(t,d);try{const r=await(0,global_helpers_1.importModule)(u).catch(l=>{l.message.includes("Cannot find module")||(sheu_1.default.error(`Failed to import ${d}:`),console.error(l),(0,cli_helpers_1.killServerChildProcess)(),process.exit(1))});r&&(a[c]=r.default)}catch(r){console.error(r)}}))}catch(c){console.error(c)}return a}function validateNamingConventions(s,e,o){if(s==="prismaQueryOptions"){if(o.prismaQueryOptions)throw(0,cli_helpers_1.killServerChildProcess)(),new Error(`
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(s){return s&&s.__esModule?s:{default:s}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.prismaModelsUniqueFields=exports.prismaSchemasContent=exports.models=exports.prismaModelRelationFields=void 0,exports.setModelModules=setModelModules,exports.getModelModules=getModelModules,exports.getFileModelModulesFileStructure=getFileModelModulesFileStructure,exports.processSubdir=processSubdir,exports.validateNamingConventions=validateNamingConventions,exports.assignModuleToResult=assignModuleToResult,exports.importPrismaModelModules=importPrismaModelModules,exports.getAllPrismaFiles=getAllPrismaFiles,exports.initializePrismaModels=initializePrismaModels,exports.getPrismaModelRelations=getPrismaModelRelations,exports.getPrismaSchemasContent=getPrismaSchemasContent,exports.localValidatorFileExists=localValidatorFileExists,exports.getModels=getModels,exports.getModelUniqueFields=getModelUniqueFields;const path_1=__importDefault(require("path")),fs_1=__importDefault(require("fs")),change_case_helpers_1=require("../../utils/helpers/change-case.helpers"),fs_helpers_1=require("./fs.helpers"),global_helpers_1=require("./global.helpers"),cli_helpers_1=require("../cli/utils/cli.helpers"),sheu_1=__importDefault(require("../sheu"));let prismaModelsModules={};function setModelModules(s,e){prismaModelsModules[(0,change_case_helpers_1.kebabCase)(s)]=e}function getModelModules(s){return prismaModelsModules[(0,change_case_helpers_1.kebabCase)(s)]}function getFileModelModulesFileStructure(s){const e=(0,change_case_helpers_1.kebabCase)(s).toLowerCase(),o=s.toLowerCase()==="auth",t=(0,fs_helpers_1.getUserFileExtension)();return{core:{service:`${e}.service.${t}`,controller:`${e}.controller.${t}`,middlewares:`${e}.middlewares.${t}`,authConfigs:`${e}.auth-configs.${t}`,authConfigsNew:`${e}.auth.${t}`,prismaQueryOptions:`${e}.prisma-query-options.${t}`,prismaQueryOptionsNew:`${e}.query.${t}`,router:`${e}.router.${t}`},dtos:o?{login:`login.dto.${t}`,signup:`signup.dto.${t}`,getMe:`get-me.dto.${t}`,updateMe:`update-me.dto.${t}`,updatePassword:`update-password.dto.${t}`}:{model:`${e}.dto.${t}`,create:`create-${e}.dto.${t}`,createOne:`create-${e}.dto.${t}`,createMany:`create-many-${e}.dto.${t}`,update:`update-${e}.dto.${t}`,updateOne:`update-${e}.dto.${t}`,updateMany:`update-many-${e}.dto.${t}`,query:`query-${e}.dto.${t}`,findOne:`find-one-${e}.dto.${t}`,findMany:`find-many-${e}.dto.${t}`},schemas:o?{login:`login.schema.${t}`,signup:`signup.schema.${t}`,getMe:`get-me.schema.${t}`,updateMe:`update-me.schema.${t}`,updatePassword:`update-password.schema.${t}`}:{model:`${e}.schema.${t}`,create:`create-${e}.schema.${t}`,createOne:`create-${e}.schema.${t}`,createMany:`create-many-${e}.schema.${t}`,update:`update-${e}.schema.${t}`,updateOne:`update-${e}.schema.${t}`,updateMany:`update-many-${e}.schema.${t}`,query:`query-${e}.schema.${t}`,findOne:`find-one-${e}.schema.${t}`,findMany:`find-many-${e}.schema.${t}`}}}async function processSubdir(s,e){const o=path_1.default.resolve((0,fs_helpers_1.crd)(),"src","modules",(0,change_case_helpers_1.kebabCase)(s)),t=path_1.default.join(o,e),n=getFileModelModulesFileStructure(s),a={};try{await fs_1.default.promises.access(t).catch(()=>{}),await Promise.all(Object.entries(n[e]).map(async([c,d])=>{const u=path_1.default.join(t,d);try{const r=await(0,global_helpers_1.importModule)(u).catch(l=>{l.message.includes("Cannot find module")||(sheu_1.default.error(`Failed to import ${d}:`),console.error(l),(0,cli_helpers_1.killServerChildProcess)(),process.exit(1))});r&&(a[c]=r.default)}catch(r){console.error(r)}}))}catch(c){console.error(c)}return a}function validateNamingConventions(s,e,o){if(s==="prismaQueryOptions"){if(o.prismaQueryOptions)throw(0,cli_helpers_1.killServerChildProcess)(),new Error(`
|
|
2
2
|
Cannot use both ${e} and ${e.replace("prisma-query-options","query")} at once, please choose only one name convention.
|
|
3
3
|
`)}else if(s==="prismaQueryOptionsNew"){if(o.prismaQueryOptions)throw(0,cli_helpers_1.killServerChildProcess)(),new Error(`
|
|
4
4
|
Cannot use both ${e} and ${e.replace("query","prisma-query-options")} at once, please choose only one name convention.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.checkDatabaseConnection=exports.prismaInstance=void 0,exports.loadPrismaModule=loadPrismaModule,exports.getPrismaInstance=getPrismaInstance;const fs_1=__importDefault(require("fs")),catch_async_1=__importDefault(require("../../modules/error-handler/utils/catch-async")),app_error_1=__importDefault(require("../../modules/error-handler/utils/app-error")),fs_helpers_1=require("./fs.helpers"),global_helpers_1=require("./global.helpers");exports.prismaInstance=null;async function loadPrismaModule(){if(!exports.prismaInstance)try{let e=`${(0,fs_helpers_1.crd)()}/src/utils/prisma.${(0,fs_helpers_1.getUserFileExtension)()}`;if(fs_1.default.existsSync(e)||(e=`${(0,fs_helpers_1.crd)()}/src/utils/prisma/index.${(0,fs_helpers_1.getUserFileExtension)()}`),!fs_1.default.existsSync(e))throw new Error(`Could not found exported prisma insteance at ${e}`);const r=await(0,global_helpers_1.importModule)(e,{fixExtension:!1});if(exports.prismaInstance=r.default||r.prisma,!exports.prismaInstance)throw new Error("Prisma not found")}catch(e){throw e.message==="Prisma not found"?new app_error_1.default(`Could not initialize Prisma module. Make sure your prisma instance is exported under src/utils/prisma.${(0,fs_helpers_1.getUserFileExtension)()} or src/utils/prisma/index.${(0,fs_helpers_1.getUserFileExtension)()}, read more about Arkos.js Project Structure under https://www.arkosjs.com/docs/project-structure#root-structure`,500,{},"PrismaInstanceNotFound"):e}return exports.prismaInstance}function getPrismaInstance(){return exports.prismaInstance}exports.checkDatabaseConnection=(0,catch_async_1.default)(async(e,r,s)=>{const a=await loadPrismaModule();try{await a.$connect(),s()}catch(t){console.error("Database connection error",t.message),s(new app_error_1.default(t.message,503))}});
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.checkDatabaseConnection=exports.prismaInstance=void 0,exports.loadPrismaModule=loadPrismaModule,exports.getPrismaInstance=getPrismaInstance;const fs_1=__importDefault(require("fs")),catch_async_1=__importDefault(require("../../modules/error-handler/utils/catch-async")),app_error_1=__importDefault(require("../../modules/error-handler/utils/app-error")),fs_helpers_1=require("./fs.helpers"),global_helpers_1=require("./global.helpers");exports.prismaInstance=null;async function loadPrismaModule(){if(!exports.prismaInstance)try{let e=`${(0,fs_helpers_1.crd)()}/src/utils/prisma.${(0,fs_helpers_1.getUserFileExtension)()}`;if(fs_1.default.existsSync(e)||(e=`${(0,fs_helpers_1.crd)()}/src/utils/prisma/index.${(0,fs_helpers_1.getUserFileExtension)()}`),!fs_1.default.existsSync(e))throw new Error(`Could not found exported prisma insteance at ${e}`);const r=await(0,global_helpers_1.importModule)(e,{fixExtension:!1});if(exports.prismaInstance=r.default||r.prisma,!exports.prismaInstance)throw new Error("Prisma not found")}catch(e){throw e.message==="Prisma not found"?new app_error_1.default(`Could not initialize Prisma module. Make sure your prisma instance is exported under src/utils/prisma.${(0,fs_helpers_1.getUserFileExtension)()} or src/utils/prisma/index.${(0,fs_helpers_1.getUserFileExtension)()}, read more about Arkos.js Project Structure under https://www.arkosjs.com/docs/project-structure#root-structure`,500,{},"PrismaInstanceNotFound"):e}return exports.prismaInstance}function getPrismaInstance(){return exports.prismaInstance}exports.checkDatabaseConnection=(0,catch_async_1.default)(async(e,r,s)=>{const a=await loadPrismaModule();try{await a.$connect(),s()}catch(t){console.error("Database connection error",t.message),s(new app_error_1.default(t.message,503))}});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.processMiddleware=exports.safeCatchAsync=void 0;const catch_async_1=__importDefault(require("../../modules/error-handler/utils/catch-async")),safeCatchAsync=e=>e?(0,catch_async_1.default)(e):void 0;exports.safeCatchAsync=safeCatchAsync;const processMiddleware=e=>e?Array.isArray(e)?e.filter(s=>!!s).map(s=>(0,exports.safeCatchAsync)(s)):[(0,exports.safeCatchAsync)(e)]:[];exports.processMiddleware=processMiddleware;
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.processMiddleware=exports.safeCatchAsync=void 0;const catch_async_1=__importDefault(require("../../modules/error-handler/utils/catch-async")),safeCatchAsync=e=>e?(0,catch_async_1.default)(e):void 0;exports.safeCatchAsync=safeCatchAsync;const processMiddleware=e=>e?Array.isArray(e)?e.filter(s=>!!s).map(s=>(0,exports.safeCatchAsync)(s)):[(0,exports.safeCatchAsync)(e)]:[];exports.processMiddleware=processMiddleware;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.EnhancedPrismaJsonSchemaGenerator=void 0;const deepmerge_helper_1=__importDefault(require("../helpers/deepmerge.helper")),models_helpers_1=require("../helpers/models.helpers"),prisma_schema_parser_1=__importDefault(require("./prisma-schema-parser"));class EnhancedPrismaJsonSchemaGenerator{constructor(){this.schema=prisma_schema_parser_1.default.parse()}async generateModelSchemas(t){const{modelName:i,arkosConfig:e,schemasToGenerate:n=["model","login","signup","getMe","updateMe","updatePassword","create","createOne","createMany","update","updateOne","updateMany","query","findOne","findMany"]}=t,a=await(0,models_helpers_1.importPrismaModelModules)(i,e),s=a?.router?.config||{},r=a?.prismaQueryOptions||{},o=["auth","me","password","signup","login"].includes(i.toLowerCase());if(e?.swagger?.strict&&e.swagger.mode!=="prisma")return{};if(s?.disable===!0)return{};const d=this.schema.models.find(l=>l.name.toLowerCase()===i.toLowerCase());if(!d&&!o)return{};const p={};return o?await this.generateAuthSchemas(this.schema.models.find(l=>l.name.toLowerCase()==="user"),p,e,n,r):d&&await this.generateCrudSchemas(d,p,e,n,r,s),{...p}}async generateAuthSchemas(t,i,e,n,a,s){const r="Auth";if(!e?.authentication)return i;n.includes("login")&&!this.isEndpointDisabled("login",s)&&!await(0,models_helpers_1.localValidatorFileExists)("login",r,e)&&(i.LoginSchema=this.generateLoginSchema(e)),n.includes("signup")&&!this.isEndpointDisabled("signup",s)&&!await(0,models_helpers_1.localValidatorFileExists)("signup",r,e)&&(i.SignupSchema=this.generateSignupSchema(t,a?.signup)),n.includes("updateMe")&&!this.isEndpointDisabled("updateMe",s)&&!await(0,models_helpers_1.localValidatorFileExists)("updateMe",r,e)&&(i.UpdateMeSchema=this.generateUpdateMeSchema(t,a?.updateMe)),n.includes("updatePassword")&&!this.isEndpointDisabled("updatePassword",s)&&!await(0,models_helpers_1.localValidatorFileExists)("updatePassword",r,e)&&(i.UpdatePasswordSchema=this.generateUpdatePasswordSchema(t,a?.updatePassword)),n.includes("getMe")&&!this.isEndpointDisabled("getMe",s)&&!await(0,models_helpers_1.localValidatorFileExists)("getMe",r,e)&&(i.GetMeSchema=this.generateResponseSchema(t,a?.getMe||{},"findOne"))}async generateCrudSchemas(t,i,e,n,a,s){const r=t.name,c=async(o,d)=>{const p=e.validation?.resolver==="zod"?"Schema":"Dto",l=o==="Create"?"createOne":"updateOne";if(await(0,models_helpers_1.localValidatorFileExists)(l,d,e))return`${o}${d}${p}`;{const m=`${o}${d}ModelSchema`;return i[m]||(o==="Create"?i[m]=this.generateCreateSchema(t,this.resolvePrismaQueryOptions(a,"createOne")):o==="Update"&&(i[m]=this.generateUpdateSchema(t,this.resolvePrismaQueryOptions(a,"updateOne")))),m}};if(n.includes("createOne")&&!this.isEndpointDisabled("createOne",s)&&!await(0,models_helpers_1.localValidatorFileExists)("createOne",r,e)&&(i[`Create${r}ModelSchema`]=this.generateCreateSchema(t,this.resolvePrismaQueryOptions(a,"createOne"))),n.includes("createMany")&&!this.isEndpointDisabled("createMany",s)&&!await(0,models_helpers_1.localValidatorFileExists)("createMany",r,e)){const o=await c("Create",r);i[`CreateMany${r}ModelSchema`]={type:"array",items:{$ref:`#/components/schemas/${o}`}}}if(n.includes("updateOne")&&!this.isEndpointDisabled("updateOne",s)&&!await(0,models_helpers_1.localValidatorFileExists)("updateOne",r,e)&&(i[`Update${r}ModelSchema`]=this.generateUpdateSchema(t,this.resolvePrismaQueryOptions(a,"updateOne"))),n.includes("updateMany")&&!this.isEndpointDisabled("updateMany",s)&&!await(0,models_helpers_1.localValidatorFileExists)("updateMany",r,e)){const o=await c("Update",r);i[`UpdateMany${r}ModelSchema`]={type:"object",properties:{data:{type:"object",$ref:`#/components/schemas/${o}`},where:{type:"object"}},required:["data"]}}n.includes("findOne")&&!this.isEndpointDisabled("findOne",s)&&!await(0,models_helpers_1.localValidatorFileExists)("findOne",r,e)&&(i[`FindOne${r}ModelSchema`]=this.generateResponseSchema(t,this.resolvePrismaQueryOptions(a,"findOne"),"findOne")),n.includes("findMany")&&!this.isEndpointDisabled("findMany",s)&&!await(0,models_helpers_1.localValidatorFileExists)("findMany",r,e)&&(i[`FindMany${r}ModelSchema`]={type:"array",items:this.generateResponseSchema(t,this.resolvePrismaQueryOptions(a,"findMany"),"findMany")})}generateCreateSchema(t,i){const e={},n=[],a=["createdAt","updatedAt","deletedAt","id"];t.name.toLowerCase()==="auth"&&a.push("roles","role","isActive","isStaff","isSuperUser","passwordChangedAt","deletedSelfAccountAt","lastLoginAt");for(const s of t.fields){if(s.isId||a.includes(s.name))continue;if(this.isModelRelation(s.type)){s.isArray||(e[s.connectionField]={type:this.mapPrismaTypeToJsonSchema(t.fields.find(c=>c.name===s.connectionField)?.type||"String")},!s.isOptional&&s.defaultValue===void 0&&n.push(s.name));continue}const r=this.convertFieldToJsonSchema(s);e[s.name]=r,!s.isOptional&&s.defaultValue===void 0&&!s.isArray&&n.push(s.name)}return{type:"object",properties:e,required:n}}generateUpdateSchema(t,i){const e={},n=["createdAt","updatedAt","deletedAt","id"];for(const a of t.fields){if(a.isId||n.includes(a.name))continue;if(this.isModelRelation(a.type)){a.isArray||(e[a.connectionField]={type:this.mapPrismaTypeToJsonSchema(t.fields.find(r=>r.name===a.connectionField)?.type||"String")});continue}const s=this.convertFieldToJsonSchema(a);e[a.name]=s}return{type:"object",properties:e,required:[]}}generateResponseSchema(t,i,e){const n={},a=[],s=i?.select,r=i?.omit,c=i?.include;for(const o of t.fields){if(o.name==="password"||r&&r[o.name]||s&&!s[o.name])continue;if(this.isModelRelation(o.type)){if(c?.[o.name]){const p=this.schema.models.find(l=>l.name===o.type);if(p){const l=this.generateNestedRelationSchema(p,c[o.name]);n[o.name]=o.isArray?{type:"array",items:l}:l}}continue}const d=this.convertFieldToJsonSchema(o);n[o.name]=d,o.isOptional||a.push(o.name)}return{type:"object",properties:n,required:a}}generateNestedRelationSchema(t,i){const e={},n=[],a=i?.select,s=i?.include;for(const r of t.fields){if(r.name.toLowerCase().includes("password")||a&&!a[r.name])continue;if(this.isModelRelation(r.type)){if(s?.[r.name]){const o=this.schema.models.find(d=>d.name===r.type);if(o){const d=this.generateNestedRelationSchema(o,s[r.name]);e[r.name]=r.isArray?{type:"array",items:d}:d}}continue}const c=this.convertFieldToJsonSchema(r);e[r.name]=c,r.isOptional||n.push(r.name)}return{type:"object",properties:e,required:n}}generateLoginSchema(t){const i=t?.authentication?.login?.allowedUsernames||[],e=a=>a.includes(".")&&a.split(".").pop()||a,n={type:"object",properties:{password:{type:"string",minLength:8}},required:["password"]};if(i.forEach(a=>{const s=e(a);n.properties[s]={type:"string",format:"string",description:`Username field: ${a}`}}),i.length>0){const a=i.map(e);return{...n,anyOf:a.map(()=>({required:[...n.required]}))}}return n}generateSignupSchema(t,i){const e=this.generateCreateSchema(t,i||{});return["roles","role","isActive","isStaff","isSuperUser","passwordChangedAt","deletedSelfAccountAt","lastLoginAt"].forEach(a=>{delete e?.properties?.[a]}),e}generateUpdateMeSchema(t,i){const e=this.generateUpdateSchema(t,i||{});return["roles","role","isActive","isStaff","isSuperUser","passwordChangedAt","deletedSelfAccountAt","password","lastLoginAt"].forEach(a=>{delete e?.properties?.[a]}),e}generateUpdatePasswordSchema(t,i){return{type:"object",properties:{currentPassword:{type:"string"},newPassword:{type:"string",minLength:8}},required:["currentPassword","newPassword"]}}resolvePrismaQueryOptions(t,i){if(!t||!i)return{};const e=t,n=e[i]||{};let a=e.queryOptions||{};e.global&&(a=(0,deepmerge_helper_1.default)(a,e.global));const s=this.getGeneralOptionsForAction(e,i);return s&&(a=(0,deepmerge_helper_1.default)(a,s)),n&&(a=(0,deepmerge_helper_1.default)(a,n)),a}getGeneralOptionsForAction(t,i){const e={find:["findOne","findMany"],create:["createOne","createMany"],update:["updateOne","updateMany"],delete:["deleteOne","deleteMany"],save:["createOne","createMany","updateOne","updateMany"],saveOne:["createOne","updateOne"],saveMany:["createMany","updateMany"]};for(const[n,a]of Object.entries(e))if(a.includes(i)&&t[n])return t[n];return null}isEndpointDisabled(t,i){return i?.disable?typeof i.disable=="boolean"?i.disable:i.disable[t]||!1:!1}isModelRelation(t){return this.schema.models.some(i=>i.name===t)}convertFieldToJsonSchema(t){const e={type:this.mapPrismaTypeToJsonSchema(t.type)};if(t.isArray&&(e.type="array",e.items={type:this.mapPrismaTypeToJsonSchema(t.type)}),t.defaultValue!==void 0&&(e.default=t.defaultValue),t.type==="DateTime"&&(e.format="date-time"),this.isEnum(t.type)){const n=this.schema.enums.find(a=>a.name===t.type);n&&(e.enum=n.values)}return e}mapPrismaTypeToJsonSchema(t){const i={String:"string",Int:"number",Float:"number",Boolean:"boolean",DateTime:"string",Json:"object",Bytes:"string"};return i[t]?i[t]:this.isEnum(t)?"string":this.isModelRelation(t)?"object":"string"}isEnum(t){return this.schema.enums.some(i=>i.name===t)}}exports.EnhancedPrismaJsonSchemaGenerator=EnhancedPrismaJsonSchemaGenerator;const enhancedPrismaJsonSchemaGenerator=new EnhancedPrismaJsonSchemaGenerator;exports.default=enhancedPrismaJsonSchemaGenerator;
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(u){return u&&u.__esModule?u:{default:u}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.EnhancedPrismaJsonSchemaGenerator=void 0;const deepmerge_helper_1=__importDefault(require("../helpers/deepmerge.helper")),models_helpers_1=require("../helpers/models.helpers"),prisma_schema_parser_1=__importDefault(require("./prisma-schema-parser"));class EnhancedPrismaJsonSchemaGenerator{constructor(){this.schema=prisma_schema_parser_1.default.parse()}async generateModelSchemas(t){const{modelName:i,arkosConfig:e,schemasToGenerate:n=["model","login","signup","getMe","updateMe","updatePassword","create","createOne","createMany","update","updateOne","updateMany","query","findOne","findMany"]}=t,a=await(0,models_helpers_1.importPrismaModelModules)(i,e),s=a?.router?.config||{},r=a?.prismaQueryOptions||{},o=["auth","me","password","signup","login"].includes(i.toLowerCase());if(e?.swagger?.strict&&e.swagger.mode!=="prisma")return{};if(s?.disable===!0)return{};const d=this.schema.models.find(l=>l.name.toLowerCase()===i.toLowerCase());if(!d&&!o)return{};const p={};return o?await this.generateAuthSchemas(this.schema.models.find(l=>l.name.toLowerCase()==="user"),p,e,n,r):d&&await this.generateCrudSchemas(d,p,e,n,r,s),{...p}}async generateAuthSchemas(t,i,e,n,a,s){const r="Auth";if(!e?.authentication)return i;n.includes("login")&&!this.isEndpointDisabled("login",s)&&!await(0,models_helpers_1.localValidatorFileExists)("login",r,e)&&(i.LoginSchema=this.generateLoginSchema(e)),n.includes("signup")&&!this.isEndpointDisabled("signup",s)&&!await(0,models_helpers_1.localValidatorFileExists)("signup",r,e)&&(i.SignupSchema=this.generateSignupSchema(t,a?.signup)),n.includes("updateMe")&&!this.isEndpointDisabled("updateMe",s)&&!await(0,models_helpers_1.localValidatorFileExists)("updateMe",r,e)&&(i.UpdateMeSchema=this.generateUpdateMeSchema(t,a?.updateMe)),n.includes("updatePassword")&&!this.isEndpointDisabled("updatePassword",s)&&!await(0,models_helpers_1.localValidatorFileExists)("updatePassword",r,e)&&(i.UpdatePasswordSchema=this.generateUpdatePasswordSchema(t,a?.updatePassword)),n.includes("getMe")&&!this.isEndpointDisabled("getMe",s)&&!await(0,models_helpers_1.localValidatorFileExists)("getMe",r,e)&&(i.GetMeSchema=this.generateResponseSchema(t,a?.getMe||{},"findOne"))}async generateCrudSchemas(t,i,e,n,a,s){const r=t.name,c=async(o,d)=>{const p=e.validation?.resolver==="zod"?"Schema":"Dto",l=o==="Create"?"createOne":"updateOne";if(await(0,models_helpers_1.localValidatorFileExists)(l,d,e))return`${o}${d}${p}`;{const m=`${o}${d}ModelSchema`;return i[m]||(o==="Create"?i[m]=this.generateCreateSchema(t,this.resolvePrismaQueryOptions(a,"createOne")):o==="Update"&&(i[m]=this.generateUpdateSchema(t,this.resolvePrismaQueryOptions(a,"updateOne")))),m}};if(n.includes("createOne")&&!this.isEndpointDisabled("createOne",s)&&!await(0,models_helpers_1.localValidatorFileExists)("createOne",r,e)&&(i[`Create${r}ModelSchema`]=this.generateCreateSchema(t,this.resolvePrismaQueryOptions(a,"createOne"))),n.includes("createMany")&&!this.isEndpointDisabled("createMany",s)&&!await(0,models_helpers_1.localValidatorFileExists)("createMany",r,e)){const o=await c("Create",r);i[`CreateMany${r}ModelSchema`]={type:"array",items:{$ref:`#/components/schemas/${o}`}}}if(n.includes("updateOne")&&!this.isEndpointDisabled("updateOne",s)&&!await(0,models_helpers_1.localValidatorFileExists)("updateOne",r,e)&&(i[`Update${r}ModelSchema`]=this.generateUpdateSchema(t,this.resolvePrismaQueryOptions(a,"updateOne"))),n.includes("updateMany")&&!this.isEndpointDisabled("updateMany",s)&&!await(0,models_helpers_1.localValidatorFileExists)("updateMany",r,e)){const o=await c("Update",r);i[`UpdateMany${r}ModelSchema`]={type:"object",properties:{data:{type:"object",$ref:`#/components/schemas/${o}`},where:{type:"object"}},required:["data"]}}n.includes("findOne")&&!this.isEndpointDisabled("findOne",s)&&!await(0,models_helpers_1.localValidatorFileExists)("findOne",r,e)&&(i[`FindOne${r}ModelSchema`]=this.generateResponseSchema(t,this.resolvePrismaQueryOptions(a,"findOne"),"findOne")),n.includes("findMany")&&!this.isEndpointDisabled("findMany",s)&&!await(0,models_helpers_1.localValidatorFileExists)("findMany",r,e)&&(i[`FindMany${r}ModelSchema`]={type:"array",items:this.generateResponseSchema(t,this.resolvePrismaQueryOptions(a,"findMany"),"findMany")})}generateCreateSchema(t,i){const e={},n=[],a=["createdAt","updatedAt","deletedAt","id"];t.name.toLowerCase()==="auth"&&a.push("roles","role","isActive","isStaff","isSuperUser","passwordChangedAt","deletedSelfAccountAt","lastLoginAt");for(const s of t.fields){if(s.isId||a.includes(s.name))continue;if(this.isModelRelation(s.type)){s.isArray||(e[s.connectionField]={type:this.mapPrismaTypeToJsonSchema(t.fields.find(c=>c.name===s.connectionField)?.type||"String")},!s.isOptional&&s.defaultValue===void 0&&n.push(s.name));continue}const r=this.convertFieldToJsonSchema(s);e[s.name]=r,!s.isOptional&&s.defaultValue===void 0&&!s.isArray&&n.push(s.name)}return{type:"object",properties:e,required:n}}generateUpdateSchema(t,i){const e={},n=["createdAt","updatedAt","deletedAt","id"];for(const a of t.fields){if(a.isId||n.includes(a.name))continue;if(this.isModelRelation(a.type)){a.isArray||(e[a.connectionField]={type:this.mapPrismaTypeToJsonSchema(t.fields.find(r=>r.name===a.connectionField)?.type||"String")});continue}const s=this.convertFieldToJsonSchema(a);e[a.name]=s}return{type:"object",properties:e,required:[]}}generateResponseSchema(t,i,e){const n={},a=[],s=i?.select,r=i?.omit,c=i?.include;for(const o of t.fields){if(o.name==="password"||r&&r[o.name]||s&&!s[o.name])continue;if(this.isModelRelation(o.type)){if(c?.[o.name]){const p=this.schema.models.find(l=>l.name===o.type);if(p){const l=this.generateNestedRelationSchema(p,c[o.name]);n[o.name]=o.isArray?{type:"array",items:l}:l}}continue}const d=this.convertFieldToJsonSchema(o);n[o.name]=d,o.isOptional||a.push(o.name)}return{type:"object",properties:n,required:a}}generateNestedRelationSchema(t,i){const e={},n=[],a=i?.select,s=i?.include;for(const r of t.fields){if(r.name.toLowerCase().includes("password")||a&&!a[r.name])continue;if(this.isModelRelation(r.type)){if(s?.[r.name]){const o=this.schema.models.find(d=>d.name===r.type);if(o){const d=this.generateNestedRelationSchema(o,s[r.name]);e[r.name]=r.isArray?{type:"array",items:d}:d}}continue}const c=this.convertFieldToJsonSchema(r);e[r.name]=c,r.isOptional||n.push(r.name)}return{type:"object",properties:e,required:n}}generateLoginSchema(t){const i=t?.authentication?.login?.allowedUsernames||[],e=a=>a.includes(".")&&a.split(".").pop()||a,n={type:"object",properties:{password:{type:"string",minLength:8}},required:["password"]};if(i.forEach(a=>{const s=e(a);n.properties[s]={type:"string",format:"string",description:`Username field: ${a}`}}),i.length>0){const a=i.map(e);return{...n,anyOf:a.map(()=>({required:[...n.required]}))}}return n}generateSignupSchema(t,i){const e=this.generateCreateSchema(t,i||{});return["roles","role","isActive","isStaff","isSuperUser","passwordChangedAt","deletedSelfAccountAt","lastLoginAt"].forEach(a=>{delete e?.properties?.[a]}),e}generateUpdateMeSchema(t,i){const e=this.generateUpdateSchema(t,i||{});return["roles","role","isActive","isStaff","isSuperUser","passwordChangedAt","deletedSelfAccountAt","password","lastLoginAt"].forEach(a=>{delete e?.properties?.[a]}),e}generateUpdatePasswordSchema(t,i){return{type:"object",properties:{currentPassword:{type:"string"},newPassword:{type:"string",minLength:8}},required:["currentPassword","newPassword"]}}resolvePrismaQueryOptions(t,i){if(!t||!i)return{};const e=t,n=e[i]||{};let a=e.queryOptions||{};e.global&&(a=(0,deepmerge_helper_1.default)(a,e.global));const s=this.getGeneralOptionsForAction(e,i);return s&&(a=(0,deepmerge_helper_1.default)(a,s)),n&&(a=(0,deepmerge_helper_1.default)(a,n)),a}getGeneralOptionsForAction(t,i){const e={find:["findOne","findMany"],create:["createOne","createMany"],update:["updateOne","updateMany"],delete:["deleteOne","deleteMany"],save:["createOne","createMany","updateOne","updateMany"],saveOne:["createOne","updateOne"],saveMany:["createMany","updateMany"]};for(const[n,a]of Object.entries(e))if(a.includes(i)&&t[n])return t[n];return null}isEndpointDisabled(t,i){return i?.disable?typeof i.disable=="boolean"?i.disable:i.disable[t]||!1:!1}isModelRelation(t){return this.schema.models.some(i=>i.name===t)}convertFieldToJsonSchema(t){const e={type:this.mapPrismaTypeToJsonSchema(t.type)};if(t.isArray&&(e.type="array",e.items={type:this.mapPrismaTypeToJsonSchema(t.type)}),t.defaultValue!==void 0&&(e.default=t.defaultValue),t.type==="DateTime"&&(e.format="date-time"),this.isEnum(t.type)){const n=this.schema.enums.find(a=>a.name===t.type);n&&(e.enum=n.values)}return e}mapPrismaTypeToJsonSchema(t){const i={String:"string",Int:"number",Float:"number",Boolean:"boolean",DateTime:"string",Json:"object",Bytes:"string"};return i[t]?i[t]:this.isEnum(t)?"string":this.isModelRelation(t)?"object":"string"}isEnum(t){return this.schema.enums.some(i=>i.name===t)}}exports.EnhancedPrismaJsonSchemaGenerator=EnhancedPrismaJsonSchemaGenerator;const enhancedPrismaJsonSchemaGenerator=new EnhancedPrismaJsonSchemaGenerator;exports.default=enhancedPrismaJsonSchemaGenerator;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=validateDto;const class_transformer_1=require("class-transformer"),class_validator_1=require("class-validator"),app_error_1=__importDefault(require("../modules/error-handler/utils/app-error"));async function validateDto(e,a,s){const r=(0,class_transformer_1.plainToInstance)(e,a),t=await(0,class_validator_1.validate)(r,s);if(t.length>0)throw new app_error_1.default("Invalid request body",400,t,"invalid_request_body");return r}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=validateDto;const class_transformer_1=require("class-transformer"),class_validator_1=require("class-validator"),app_error_1=__importDefault(require("../modules/error-handler/utils/app-error"));async function validateDto(e,a,s){const r=(0,class_transformer_1.plainToInstance)(e,a),t=await(0,class_validator_1.validate)(r,s);if(t.length>0)throw new app_error_1.default("Invalid request body",400,t,"invalid_request_body");return r}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";var __importDefault=function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=validateSchema;const app_error_1=__importDefault(require("../modules/error-handler/utils/app-error"));async function validateSchema(e,t){const r=e.safeParse(t);if(!r.success)throw new app_error_1.default("Invalid request body",400,r.error.format(),"invalid_request_body");return r.data}
|
|
1
|
+
"use strict";var __importDefault=this&&this.__importDefault||function(e){return e&&e.__esModule?e:{default:e}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.default=validateSchema;const app_error_1=__importDefault(require("../modules/error-handler/utils/app-error"));async function validateSchema(e,t){const r=e.safeParse(t);if(!r.success)throw new app_error_1.default("Invalid request body",400,r.error.format(),"invalid_request_body");return r.data}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
"use strict";import e from"fs";import{killDevelopmentServerChildProcess as o}from"../dev.js";import{killProductionServerChildProcess as i}from"../start.js";export function ensureDirectoryExists(r){e.existsSync(r)||e.mkdirSync(r,{recursive:!0})}export function killServerChildProcess(){o(),i()}export function getVersion(){return"1.2.15-test.
|
|
1
|
+
"use strict";import e from"fs";import{killDevelopmentServerChildProcess as o}from"../dev.js";import{killProductionServerChildProcess as i}from"../start.js";export function ensureDirectoryExists(r){e.existsSync(r)||e.mkdirSync(r,{recursive:!0})}export function killServerChildProcess(){o(),i()}export function getVersion(){return"1.2.15-test.3"}
|
package/package.json
CHANGED