arkos 1.1.48-test → 1.1.49-test

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.
@@ -105,17 +105,7 @@ function setupRouters(models, router, arkosConfigs) {
105
105
  : base_middlewares_1.sendResponse, base_middlewares_1.sendResponse);
106
106
  }
107
107
  if (customRouterModule?.default && !customRouterModule?.config?.disable) {
108
- customRouter.stack.forEach((layer) => {
109
- if (layer.route) {
110
- const route = layer.route;
111
- const path = route.path;
112
- route.stack.forEach((routeLayer) => {
113
- const method = routeLayer.method.toLowerCase();
114
- const handlers = route.stack.map((routeStack) => routeStack.handle);
115
- router[method](`/${routeName}/${path}`, ...handlers);
116
- });
117
- }
118
- });
108
+ router.use(customRouterModule);
119
109
  }
120
110
  });
121
111
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.router.helpers.js","sourceRoot":"","sources":["../../../../../../src/modules/base/utils/helpers/base.router.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Router } from \"express\";\nimport { singular, plural } from \"pluralize\";\nimport { ArkosConfig, RouterConfig } from \"../../../../exports\";\nimport { kebabCase } from \"../../../../exports/utils\";\nimport { PrismaQueryOptions } from \"../../../../types\";\nimport { RouterEndpoint } from \"../../../../types/router-config\";\nimport { importPrismaModelModules } from \"../../../../utils/helpers/models.helpers\";\nimport authService from \"../../../auth/auth.service\";\nimport { BaseController } from \"../../base.controller\";\nimport {\n addPrismaQueryOptionsToRequest,\n handleRequestBodyValidationAndTransformation,\n sendResponse,\n} from \"../../base.middlewares\";\n\nexport function setupRouters(\n models: string[],\n router: Router,\n arkosConfigs: ArkosConfig\n) {\n return models.map(async (model) => {\n const modelNameInKebab = kebabCase(model);\n const modelModules = await importPrismaModelModules(modelNameInKebab);\n const {\n middlewares,\n authConfigs,\n prismaQueryOptions,\n router: customRouterModule,\n dtos,\n schemas,\n } = modelModules;\n\n const routeName = plural(modelNameInKebab);\n const controller = new BaseController(model);\n\n // Check for router customization/disabling\n const routerConfig: RouterConfig = customRouterModule?.config;\n const disableConfig = routerConfig?.disable || {};\n const isCompletelyDisabled = disableConfig === true;\n\n // Check if custom implementation exists\n const customRouter = (customRouterModule?.default as Router) || {};\n const hasCustomImplementation = (path: string, method: string) => {\n return customRouter.stack?.some(\n (layer) =>\n layer.path === `/api/${path}` &&\n layer.method.toLowerCase() === method.toLowerCase()\n );\n };\n\n // Helper to determine if an endpoint should be disabled\n const isEndpointDisabled = (endpoint: RouterEndpoint): boolean => {\n if (isCompletelyDisabled) return true;\n return typeof disableConfig === \"object\" && !!disableConfig[endpoint];\n };\n\n // Helper to get the correct schema or DTO based on Arkos Config\n const getValidationSchemaOrDto = (\n key: keyof typeof dtos | keyof typeof schemas\n ) => {\n const validationConfigs = arkosConfigs?.validation;\n if (validationConfigs?.resolver === \"class-validator\") {\n return dtos?.[key];\n } else if (validationConfigs?.resolver === \"zod\") {\n return schemas?.[key];\n }\n return undefined;\n };\n\n // POST /{routeName} - Create One\n if (\n !isEndpointDisabled(\"createOne\") &&\n !hasCustomImplementation(`/${routeName}`, \"post\")\n ) {\n router.post(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"create\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createOne\"\n ),\n middlewares?.beforeCreateOne || controller.createOne,\n middlewares?.beforeCreateOne\n ? controller.createOne\n : middlewares?.afterCreateOne || sendResponse,\n middlewares?.beforeCreateOne && middlewares?.afterCreateOne\n ? middlewares?.afterCreateOne\n : sendResponse,\n sendResponse\n );\n }\n\n // GET /{routeName} - Find Many\n if (\n !isEndpointDisabled(\"findMany\") &&\n !hasCustomImplementation(`/${routeName}`, \"get\")\n ) {\n router.get(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findMany\"\n ),\n middlewares?.beforeFindMany || controller.findMany,\n middlewares?.beforeFindMany\n ? controller.findMany\n : middlewares?.afterFindMany || sendResponse,\n middlewares?.beforeFindMany && middlewares?.afterFindMany\n ? middlewares?.afterFindMany\n : sendResponse,\n sendResponse\n );\n }\n\n // POST /{routeName}/many - Create Many\n if (\n !isEndpointDisabled(\"createMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"post\")\n ) {\n router.post(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"createMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createMany\"\n ),\n middlewares?.beforeCreateMany || controller.createMany,\n middlewares?.beforeCreateMany\n ? controller.createMany\n : middlewares?.afterCreateMany || sendResponse,\n middlewares?.beforeCreateMany && middlewares?.afterCreateMany\n ? middlewares?.afterCreateMany\n : sendResponse,\n sendResponse\n );\n }\n\n // PATCH /{routeName}/many - Update Many\n if (\n !isEndpointDisabled(\"updateMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"updateMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateMany\"\n ),\n middlewares?.beforeUpdateMany || controller.updateMany,\n middlewares?.beforeUpdateMany\n ? controller.updateMany\n : middlewares?.afterUpdateMany || sendResponse,\n middlewares?.beforeUpdateMany && middlewares?.afterUpdateMany\n ? middlewares?.afterUpdateMany\n : sendResponse,\n sendResponse\n );\n }\n\n // DELETE /{routeName}/many - Delete Many\n if (\n !isEndpointDisabled(\"deleteMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"deleteMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteMany\"\n ),\n middlewares?.beforeDeleteMany || controller.deleteMany,\n middlewares?.beforeDeleteMany\n ? controller.deleteMany\n : middlewares?.afterDeleteMany || sendResponse,\n middlewares?.beforeDeleteMany && middlewares?.afterDeleteMany\n ? middlewares?.afterDeleteMany\n : sendResponse,\n sendResponse\n );\n }\n\n // GET /{routeName}/:id - Find One\n if (\n !isEndpointDisabled(\"findOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"get\")\n ) {\n router.get(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"findOne\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findOne\"\n ),\n middlewares?.beforeFindOne || controller.findOne,\n middlewares?.beforeFindOne\n ? controller.findOne\n : middlewares?.afterFindOne || sendResponse,\n middlewares?.beforeFindOne && middlewares?.afterFindOne\n ? middlewares?.afterFindOne\n : sendResponse,\n sendResponse\n );\n }\n\n // PATCH /{routeName}/:id - Update One\n if (\n !isEndpointDisabled(\"updateOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"update\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateOne\"\n ),\n middlewares?.beforeUpdateOne || controller.updateOne,\n middlewares?.beforeUpdateOne\n ? controller.updateOne\n : middlewares?.afterUpdateOne || sendResponse,\n middlewares?.beforeUpdateOne && middlewares?.afterUpdateOne\n ? middlewares?.afterUpdateOne\n : sendResponse,\n sendResponse\n );\n }\n\n // DELETE /{routeName}/:id - Delete One\n if (\n !isEndpointDisabled(\"deleteOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"delete\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteOne\"\n ),\n middlewares?.beforeDeleteOne || controller.deleteOne,\n middlewares?.beforeDeleteOne\n ? controller.deleteOne\n : middlewares?.afterDeleteOne || sendResponse,\n middlewares?.beforeDeleteOne && middlewares?.afterDeleteOne\n ? middlewares?.afterDeleteOne\n : sendResponse,\n sendResponse\n );\n }\n\n // If the custom router has its own routes, add them\n if (customRouterModule?.default && !customRouterModule?.config?.disable) {\n customRouter.stack.forEach((layer) => {\n if (layer.route) {\n const route = layer.route;\n const path = route.path;\n\n route.stack.forEach((routeLayer) => {\n const method = routeLayer.method.toLowerCase() as any;\n\n // Get all middleware handlers for this route\n const handlers = route.stack.map((routeStack) => routeStack.handle);\n\n // Apply all middleware handlers to the matching route method\n (router as any)[method](`/${routeName}/${path}`, ...handlers);\n });\n }\n });\n }\n });\n}\n"]}
1
+ {"version":3,"file":"base.router.helpers.js","sourceRoot":"","sources":["../../../../../../src/modules/base/utils/helpers/base.router.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Router } from \"express\";\nimport { singular, plural } from \"pluralize\";\nimport { ArkosConfig, RouterConfig } from \"../../../../exports\";\nimport { kebabCase } from \"../../../../exports/utils\";\nimport { PrismaQueryOptions } from \"../../../../types\";\nimport { RouterEndpoint } from \"../../../../types/router-config\";\nimport { importPrismaModelModules } from \"../../../../utils/helpers/models.helpers\";\nimport authService from \"../../../auth/auth.service\";\nimport { BaseController } from \"../../base.controller\";\nimport {\n addPrismaQueryOptionsToRequest,\n handleRequestBodyValidationAndTransformation,\n sendResponse,\n} from \"../../base.middlewares\";\n\nexport function setupRouters(\n models: string[],\n router: Router,\n arkosConfigs: ArkosConfig\n) {\n return models.map(async (model) => {\n const modelNameInKebab = kebabCase(model);\n const modelModules = await importPrismaModelModules(modelNameInKebab);\n const {\n middlewares,\n authConfigs,\n prismaQueryOptions,\n router: customRouterModule,\n dtos,\n schemas,\n } = modelModules;\n\n const routeName = plural(modelNameInKebab);\n const controller = new BaseController(model);\n\n // Check for router customization/disabling\n const routerConfig: RouterConfig = customRouterModule?.config;\n const disableConfig = routerConfig?.disable || {};\n const isCompletelyDisabled = disableConfig === true;\n\n // Check if custom implementation exists\n const customRouter = (customRouterModule?.default as Router) || {};\n const hasCustomImplementation = (path: string, method: string) => {\n return customRouter.stack?.some(\n (layer) =>\n layer.path === `/api/${path}` &&\n layer.method.toLowerCase() === method.toLowerCase()\n );\n };\n\n // Helper to determine if an endpoint should be disabled\n const isEndpointDisabled = (endpoint: RouterEndpoint): boolean => {\n if (isCompletelyDisabled) return true;\n return typeof disableConfig === \"object\" && !!disableConfig[endpoint];\n };\n\n // Helper to get the correct schema or DTO based on Arkos Config\n const getValidationSchemaOrDto = (\n key: keyof typeof dtos | keyof typeof schemas\n ) => {\n const validationConfigs = arkosConfigs?.validation;\n if (validationConfigs?.resolver === \"class-validator\") {\n return dtos?.[key];\n } else if (validationConfigs?.resolver === \"zod\") {\n return schemas?.[key];\n }\n return undefined;\n };\n\n // POST /{routeName} - Create One\n if (\n !isEndpointDisabled(\"createOne\") &&\n !hasCustomImplementation(`/${routeName}`, \"post\")\n ) {\n router.post(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"create\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createOne\"\n ),\n middlewares?.beforeCreateOne || controller.createOne,\n middlewares?.beforeCreateOne\n ? controller.createOne\n : middlewares?.afterCreateOne || sendResponse,\n middlewares?.beforeCreateOne && middlewares?.afterCreateOne\n ? middlewares?.afterCreateOne\n : sendResponse,\n sendResponse\n );\n }\n\n // GET /{routeName} - Find Many\n if (\n !isEndpointDisabled(\"findMany\") &&\n !hasCustomImplementation(`/${routeName}`, \"get\")\n ) {\n router.get(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findMany\"\n ),\n middlewares?.beforeFindMany || controller.findMany,\n middlewares?.beforeFindMany\n ? controller.findMany\n : middlewares?.afterFindMany || sendResponse,\n middlewares?.beforeFindMany && middlewares?.afterFindMany\n ? middlewares?.afterFindMany\n : sendResponse,\n sendResponse\n );\n }\n\n // POST /{routeName}/many - Create Many\n if (\n !isEndpointDisabled(\"createMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"post\")\n ) {\n router.post(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"createMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createMany\"\n ),\n middlewares?.beforeCreateMany || controller.createMany,\n middlewares?.beforeCreateMany\n ? controller.createMany\n : middlewares?.afterCreateMany || sendResponse,\n middlewares?.beforeCreateMany && middlewares?.afterCreateMany\n ? middlewares?.afterCreateMany\n : sendResponse,\n sendResponse\n );\n }\n\n // PATCH /{routeName}/many - Update Many\n if (\n !isEndpointDisabled(\"updateMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"updateMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateMany\"\n ),\n middlewares?.beforeUpdateMany || controller.updateMany,\n middlewares?.beforeUpdateMany\n ? controller.updateMany\n : middlewares?.afterUpdateMany || sendResponse,\n middlewares?.beforeUpdateMany && middlewares?.afterUpdateMany\n ? middlewares?.afterUpdateMany\n : sendResponse,\n sendResponse\n );\n }\n\n // DELETE /{routeName}/many - Delete Many\n if (\n !isEndpointDisabled(\"deleteMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"deleteMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteMany\"\n ),\n middlewares?.beforeDeleteMany || controller.deleteMany,\n middlewares?.beforeDeleteMany\n ? controller.deleteMany\n : middlewares?.afterDeleteMany || sendResponse,\n middlewares?.beforeDeleteMany && middlewares?.afterDeleteMany\n ? middlewares?.afterDeleteMany\n : sendResponse,\n sendResponse\n );\n }\n\n // GET /{routeName}/:id - Find One\n if (\n !isEndpointDisabled(\"findOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"get\")\n ) {\n router.get(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"findOne\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findOne\"\n ),\n middlewares?.beforeFindOne || controller.findOne,\n middlewares?.beforeFindOne\n ? controller.findOne\n : middlewares?.afterFindOne || sendResponse,\n middlewares?.beforeFindOne && middlewares?.afterFindOne\n ? middlewares?.afterFindOne\n : sendResponse,\n sendResponse\n );\n }\n\n // PATCH /{routeName}/:id - Update One\n if (\n !isEndpointDisabled(\"updateOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"update\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateOne\"\n ),\n middlewares?.beforeUpdateOne || controller.updateOne,\n middlewares?.beforeUpdateOne\n ? controller.updateOne\n : middlewares?.afterUpdateOne || sendResponse,\n middlewares?.beforeUpdateOne && middlewares?.afterUpdateOne\n ? middlewares?.afterUpdateOne\n : sendResponse,\n sendResponse\n );\n }\n\n // DELETE /{routeName}/:id - Delete One\n if (\n !isEndpointDisabled(\"deleteOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"delete\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteOne\"\n ),\n middlewares?.beforeDeleteOne || controller.deleteOne,\n middlewares?.beforeDeleteOne\n ? controller.deleteOne\n : middlewares?.afterDeleteOne || sendResponse,\n middlewares?.beforeDeleteOne && middlewares?.afterDeleteOne\n ? middlewares?.afterDeleteOne\n : sendResponse,\n sendResponse\n );\n }\n\n // If the custom router has its own routes, add them\n if (customRouterModule?.default && !customRouterModule?.config?.disable) {\n router.use(customRouterModule);\n // customRouter.stack.forEach((layer) => {\n // if (layer.route) {\n // const route = layer.route;\n // const path = route.path;\n\n // route.stack.forEach((routeLayer) => {\n // const method = routeLayer.method.toLowerCase() as any;\n\n // // Get all middleware handlers for this route\n // const handlers = route.stack.map((routeStack) => routeStack.handle);\n\n // // Apply all middleware handlers to the matching route method\n // (router as any)[method](`/${routeName}/${path}`, ...handlers);\n // });\n // }\n // });\n }\n });\n}\n"]}
@@ -99,17 +99,7 @@ export function setupRouters(models, router, arkosConfigs) {
99
99
  : sendResponse, sendResponse);
100
100
  }
101
101
  if (customRouterModule?.default && !customRouterModule?.config?.disable) {
102
- customRouter.stack.forEach((layer) => {
103
- if (layer.route) {
104
- const route = layer.route;
105
- const path = route.path;
106
- route.stack.forEach((routeLayer) => {
107
- const method = routeLayer.method.toLowerCase();
108
- const handlers = route.stack.map((routeStack) => routeStack.handle);
109
- router[method](`/${routeName}/${path}`, ...handlers);
110
- });
111
- }
112
- });
102
+ router.use(customRouterModule);
113
103
  }
114
104
  });
115
105
  }
@@ -1 +1 @@
1
- {"version":3,"file":"base.router.helpers.js","sourceRoot":"","sources":["../../../../../../src/modules/base/utils/helpers/base.router.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Router } from \"express\";\nimport { singular, plural } from \"pluralize\";\nimport { ArkosConfig, RouterConfig } from \"../../../../exports\";\nimport { kebabCase } from \"../../../../exports/utils\";\nimport { PrismaQueryOptions } from \"../../../../types\";\nimport { RouterEndpoint } from \"../../../../types/router-config\";\nimport { importPrismaModelModules } from \"../../../../utils/helpers/models.helpers\";\nimport authService from \"../../../auth/auth.service\";\nimport { BaseController } from \"../../base.controller\";\nimport {\n addPrismaQueryOptionsToRequest,\n handleRequestBodyValidationAndTransformation,\n sendResponse,\n} from \"../../base.middlewares\";\n\nexport function setupRouters(\n models: string[],\n router: Router,\n arkosConfigs: ArkosConfig\n) {\n return models.map(async (model) => {\n const modelNameInKebab = kebabCase(model);\n const modelModules = await importPrismaModelModules(modelNameInKebab);\n const {\n middlewares,\n authConfigs,\n prismaQueryOptions,\n router: customRouterModule,\n dtos,\n schemas,\n } = modelModules;\n\n const routeName = plural(modelNameInKebab);\n const controller = new BaseController(model);\n\n // Check for router customization/disabling\n const routerConfig: RouterConfig = customRouterModule?.config;\n const disableConfig = routerConfig?.disable || {};\n const isCompletelyDisabled = disableConfig === true;\n\n // Check if custom implementation exists\n const customRouter = (customRouterModule?.default as Router) || {};\n const hasCustomImplementation = (path: string, method: string) => {\n return customRouter.stack?.some(\n (layer) =>\n layer.path === `/api/${path}` &&\n layer.method.toLowerCase() === method.toLowerCase()\n );\n };\n\n // Helper to determine if an endpoint should be disabled\n const isEndpointDisabled = (endpoint: RouterEndpoint): boolean => {\n if (isCompletelyDisabled) return true;\n return typeof disableConfig === \"object\" && !!disableConfig[endpoint];\n };\n\n // Helper to get the correct schema or DTO based on Arkos Config\n const getValidationSchemaOrDto = (\n key: keyof typeof dtos | keyof typeof schemas\n ) => {\n const validationConfigs = arkosConfigs?.validation;\n if (validationConfigs?.resolver === \"class-validator\") {\n return dtos?.[key];\n } else if (validationConfigs?.resolver === \"zod\") {\n return schemas?.[key];\n }\n return undefined;\n };\n\n // POST /{routeName} - Create One\n if (\n !isEndpointDisabled(\"createOne\") &&\n !hasCustomImplementation(`/${routeName}`, \"post\")\n ) {\n router.post(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"create\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createOne\"\n ),\n middlewares?.beforeCreateOne || controller.createOne,\n middlewares?.beforeCreateOne\n ? controller.createOne\n : middlewares?.afterCreateOne || sendResponse,\n middlewares?.beforeCreateOne && middlewares?.afterCreateOne\n ? middlewares?.afterCreateOne\n : sendResponse,\n sendResponse\n );\n }\n\n // GET /{routeName} - Find Many\n if (\n !isEndpointDisabled(\"findMany\") &&\n !hasCustomImplementation(`/${routeName}`, \"get\")\n ) {\n router.get(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findMany\"\n ),\n middlewares?.beforeFindMany || controller.findMany,\n middlewares?.beforeFindMany\n ? controller.findMany\n : middlewares?.afterFindMany || sendResponse,\n middlewares?.beforeFindMany && middlewares?.afterFindMany\n ? middlewares?.afterFindMany\n : sendResponse,\n sendResponse\n );\n }\n\n // POST /{routeName}/many - Create Many\n if (\n !isEndpointDisabled(\"createMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"post\")\n ) {\n router.post(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"createMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createMany\"\n ),\n middlewares?.beforeCreateMany || controller.createMany,\n middlewares?.beforeCreateMany\n ? controller.createMany\n : middlewares?.afterCreateMany || sendResponse,\n middlewares?.beforeCreateMany && middlewares?.afterCreateMany\n ? middlewares?.afterCreateMany\n : sendResponse,\n sendResponse\n );\n }\n\n // PATCH /{routeName}/many - Update Many\n if (\n !isEndpointDisabled(\"updateMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"updateMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateMany\"\n ),\n middlewares?.beforeUpdateMany || controller.updateMany,\n middlewares?.beforeUpdateMany\n ? controller.updateMany\n : middlewares?.afterUpdateMany || sendResponse,\n middlewares?.beforeUpdateMany && middlewares?.afterUpdateMany\n ? middlewares?.afterUpdateMany\n : sendResponse,\n sendResponse\n );\n }\n\n // DELETE /{routeName}/many - Delete Many\n if (\n !isEndpointDisabled(\"deleteMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"deleteMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteMany\"\n ),\n middlewares?.beforeDeleteMany || controller.deleteMany,\n middlewares?.beforeDeleteMany\n ? controller.deleteMany\n : middlewares?.afterDeleteMany || sendResponse,\n middlewares?.beforeDeleteMany && middlewares?.afterDeleteMany\n ? middlewares?.afterDeleteMany\n : sendResponse,\n sendResponse\n );\n }\n\n // GET /{routeName}/:id - Find One\n if (\n !isEndpointDisabled(\"findOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"get\")\n ) {\n router.get(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"findOne\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findOne\"\n ),\n middlewares?.beforeFindOne || controller.findOne,\n middlewares?.beforeFindOne\n ? controller.findOne\n : middlewares?.afterFindOne || sendResponse,\n middlewares?.beforeFindOne && middlewares?.afterFindOne\n ? middlewares?.afterFindOne\n : sendResponse,\n sendResponse\n );\n }\n\n // PATCH /{routeName}/:id - Update One\n if (\n !isEndpointDisabled(\"updateOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"update\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateOne\"\n ),\n middlewares?.beforeUpdateOne || controller.updateOne,\n middlewares?.beforeUpdateOne\n ? controller.updateOne\n : middlewares?.afterUpdateOne || sendResponse,\n middlewares?.beforeUpdateOne && middlewares?.afterUpdateOne\n ? middlewares?.afterUpdateOne\n : sendResponse,\n sendResponse\n );\n }\n\n // DELETE /{routeName}/:id - Delete One\n if (\n !isEndpointDisabled(\"deleteOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"delete\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteOne\"\n ),\n middlewares?.beforeDeleteOne || controller.deleteOne,\n middlewares?.beforeDeleteOne\n ? controller.deleteOne\n : middlewares?.afterDeleteOne || sendResponse,\n middlewares?.beforeDeleteOne && middlewares?.afterDeleteOne\n ? middlewares?.afterDeleteOne\n : sendResponse,\n sendResponse\n );\n }\n\n // If the custom router has its own routes, add them\n if (customRouterModule?.default && !customRouterModule?.config?.disable) {\n customRouter.stack.forEach((layer) => {\n if (layer.route) {\n const route = layer.route;\n const path = route.path;\n\n route.stack.forEach((routeLayer) => {\n const method = routeLayer.method.toLowerCase() as any;\n\n // Get all middleware handlers for this route\n const handlers = route.stack.map((routeStack) => routeStack.handle);\n\n // Apply all middleware handlers to the matching route method\n (router as any)[method](`/${routeName}/${path}`, ...handlers);\n });\n }\n });\n }\n });\n}\n"]}
1
+ {"version":3,"file":"base.router.helpers.js","sourceRoot":"","sources":["../../../../../../src/modules/base/utils/helpers/base.router.helpers.ts"],"names":[],"mappings":"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","sourcesContent":["import { Router } from \"express\";\nimport { singular, plural } from \"pluralize\";\nimport { ArkosConfig, RouterConfig } from \"../../../../exports\";\nimport { kebabCase } from \"../../../../exports/utils\";\nimport { PrismaQueryOptions } from \"../../../../types\";\nimport { RouterEndpoint } from \"../../../../types/router-config\";\nimport { importPrismaModelModules } from \"../../../../utils/helpers/models.helpers\";\nimport authService from \"../../../auth/auth.service\";\nimport { BaseController } from \"../../base.controller\";\nimport {\n addPrismaQueryOptionsToRequest,\n handleRequestBodyValidationAndTransformation,\n sendResponse,\n} from \"../../base.middlewares\";\n\nexport function setupRouters(\n models: string[],\n router: Router,\n arkosConfigs: ArkosConfig\n) {\n return models.map(async (model) => {\n const modelNameInKebab = kebabCase(model);\n const modelModules = await importPrismaModelModules(modelNameInKebab);\n const {\n middlewares,\n authConfigs,\n prismaQueryOptions,\n router: customRouterModule,\n dtos,\n schemas,\n } = modelModules;\n\n const routeName = plural(modelNameInKebab);\n const controller = new BaseController(model);\n\n // Check for router customization/disabling\n const routerConfig: RouterConfig = customRouterModule?.config;\n const disableConfig = routerConfig?.disable || {};\n const isCompletelyDisabled = disableConfig === true;\n\n // Check if custom implementation exists\n const customRouter = (customRouterModule?.default as Router) || {};\n const hasCustomImplementation = (path: string, method: string) => {\n return customRouter.stack?.some(\n (layer) =>\n layer.path === `/api/${path}` &&\n layer.method.toLowerCase() === method.toLowerCase()\n );\n };\n\n // Helper to determine if an endpoint should be disabled\n const isEndpointDisabled = (endpoint: RouterEndpoint): boolean => {\n if (isCompletelyDisabled) return true;\n return typeof disableConfig === \"object\" && !!disableConfig[endpoint];\n };\n\n // Helper to get the correct schema or DTO based on Arkos Config\n const getValidationSchemaOrDto = (\n key: keyof typeof dtos | keyof typeof schemas\n ) => {\n const validationConfigs = arkosConfigs?.validation;\n if (validationConfigs?.resolver === \"class-validator\") {\n return dtos?.[key];\n } else if (validationConfigs?.resolver === \"zod\") {\n return schemas?.[key];\n }\n return undefined;\n };\n\n // POST /{routeName} - Create One\n if (\n !isEndpointDisabled(\"createOne\") &&\n !hasCustomImplementation(`/${routeName}`, \"post\")\n ) {\n router.post(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"create\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createOne\"\n ),\n middlewares?.beforeCreateOne || controller.createOne,\n middlewares?.beforeCreateOne\n ? controller.createOne\n : middlewares?.afterCreateOne || sendResponse,\n middlewares?.beforeCreateOne && middlewares?.afterCreateOne\n ? middlewares?.afterCreateOne\n : sendResponse,\n sendResponse\n );\n }\n\n // GET /{routeName} - Find Many\n if (\n !isEndpointDisabled(\"findMany\") &&\n !hasCustomImplementation(`/${routeName}`, \"get\")\n ) {\n router.get(\n `/${routeName}`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findMany\"\n ),\n middlewares?.beforeFindMany || controller.findMany,\n middlewares?.beforeFindMany\n ? controller.findMany\n : middlewares?.afterFindMany || sendResponse,\n middlewares?.beforeFindMany && middlewares?.afterFindMany\n ? middlewares?.afterFindMany\n : sendResponse,\n sendResponse\n );\n }\n\n // POST /{routeName}/many - Create Many\n if (\n !isEndpointDisabled(\"createMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"post\")\n ) {\n router.post(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Create\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Create\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"createMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"createMany\"\n ),\n middlewares?.beforeCreateMany || controller.createMany,\n middlewares?.beforeCreateMany\n ? controller.createMany\n : middlewares?.afterCreateMany || sendResponse,\n middlewares?.beforeCreateMany && middlewares?.afterCreateMany\n ? middlewares?.afterCreateMany\n : sendResponse,\n sendResponse\n );\n }\n\n // PATCH /{routeName}/many - Update Many\n if (\n !isEndpointDisabled(\"updateMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"updateMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateMany\"\n ),\n middlewares?.beforeUpdateMany || controller.updateMany,\n middlewares?.beforeUpdateMany\n ? controller.updateMany\n : middlewares?.afterUpdateMany || sendResponse,\n middlewares?.beforeUpdateMany && middlewares?.afterUpdateMany\n ? middlewares?.afterUpdateMany\n : sendResponse,\n sendResponse\n );\n }\n\n // DELETE /{routeName}/many - Delete Many\n if (\n !isEndpointDisabled(\"deleteMany\") &&\n !hasCustomImplementation(`/${routeName}/many`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/many`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"deleteMany\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteMany\"\n ),\n middlewares?.beforeDeleteMany || controller.deleteMany,\n middlewares?.beforeDeleteMany\n ? controller.deleteMany\n : middlewares?.afterDeleteMany || sendResponse,\n middlewares?.beforeDeleteMany && middlewares?.afterDeleteMany\n ? middlewares?.afterDeleteMany\n : sendResponse,\n sendResponse\n );\n }\n\n // GET /{routeName}/:id - Find One\n if (\n !isEndpointDisabled(\"findOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"get\")\n ) {\n router.get(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"View\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"View\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"findOne\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"findOne\"\n ),\n middlewares?.beforeFindOne || controller.findOne,\n middlewares?.beforeFindOne\n ? controller.findOne\n : middlewares?.afterFindOne || sendResponse,\n middlewares?.beforeFindOne && middlewares?.afterFindOne\n ? middlewares?.afterFindOne\n : sendResponse,\n sendResponse\n );\n }\n\n // PATCH /{routeName}/:id - Update One\n if (\n !isEndpointDisabled(\"updateOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"patch\")\n ) {\n router.patch(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Update\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Update\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"update\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"updateOne\"\n ),\n middlewares?.beforeUpdateOne || controller.updateOne,\n middlewares?.beforeUpdateOne\n ? controller.updateOne\n : middlewares?.afterUpdateOne || sendResponse,\n middlewares?.beforeUpdateOne && middlewares?.afterUpdateOne\n ? middlewares?.afterUpdateOne\n : sendResponse,\n sendResponse\n );\n }\n\n // DELETE /{routeName}/:id - Delete One\n if (\n !isEndpointDisabled(\"deleteOne\") &&\n !hasCustomImplementation(`/${routeName}/:id`, \"delete\")\n ) {\n router.delete(\n `/${routeName}/:id`,\n authService.handleAuthenticationControl(\n \"Delete\",\n authConfigs?.authenticationControl\n ),\n authService.handleAccessControl(\n \"Delete\",\n kebabCase(singular(modelNameInKebab)),\n authConfigs?.accessControl || {}\n ),\n handleRequestBodyValidationAndTransformation(\n getValidationSchemaOrDto(\"delete\")\n ),\n addPrismaQueryOptionsToRequest<any>(\n prismaQueryOptions as PrismaQueryOptions<any>,\n \"deleteOne\"\n ),\n middlewares?.beforeDeleteOne || controller.deleteOne,\n middlewares?.beforeDeleteOne\n ? controller.deleteOne\n : middlewares?.afterDeleteOne || sendResponse,\n middlewares?.beforeDeleteOne && middlewares?.afterDeleteOne\n ? middlewares?.afterDeleteOne\n : sendResponse,\n sendResponse\n );\n }\n\n // If the custom router has its own routes, add them\n if (customRouterModule?.default && !customRouterModule?.config?.disable) {\n router.use(customRouterModule);\n // customRouter.stack.forEach((layer) => {\n // if (layer.route) {\n // const route = layer.route;\n // const path = route.path;\n\n // route.stack.forEach((routeLayer) => {\n // const method = routeLayer.method.toLowerCase() as any;\n\n // // Get all middleware handlers for this route\n // const handlers = route.stack.map((routeStack) => routeStack.handle);\n\n // // Apply all middleware handlers to the matching route method\n // (router as any)[method](`/${routeName}/${path}`, ...handlers);\n // });\n // }\n // });\n }\n });\n}\n"]}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arkos",
3
- "version": "1.1.48-test",
3
+ "version": "1.1.49-test",
4
4
  "description": "The Express & Prisma Framework For RESTful API",
5
5
  "main": "dist/cjs/exports/index.js",
6
6
  "module": "dist/es2020/exports/index.js",
@@ -73,6 +73,15 @@
73
73
  "error-handler": [
74
74
  "./dist/types/exports/error-handler/index.d.ts"
75
75
  ],
76
+ "prisma": [
77
+ "./dist/types/exports/prisma/index.d.ts"
78
+ ],
79
+ "auth": [
80
+ "./dist/types/exports/auth/index.d.ts"
81
+ ],
82
+ "middlewares": [
83
+ "./dist/types/exports/middlewares/index.d.ts"
84
+ ],
76
85
  "utils": [
77
86
  "./dist/types/exports/utils/index.d.ts"
78
87
  ]
@@ -83,7 +92,7 @@
83
92
  "build:types": "tsc -p tsconfig.types.json",
84
93
  "build:cjs": "tsc -p tsconfig.cjs.json",
85
94
  "postbuilda": "echo {\\\"type\":\"commonjs\\\"} > dist/cjs/package.json",
86
- "build": "pnpm test &&rimraf dist && pnpm run build:cjs && pnpm run build:es2020 && pnpm run build:types && pnpm run minify",
95
+ "build": "pnpm test && rimraf dist && pnpm run build:cjs && pnpm run build:es2020 && pnpm run build:types && pnpm run minify",
87
96
  "minify": "esbuild dist/**/*.js --minify --outdir=dist --allow-overwrite --log-limit=0 --define:process.env.NODE_ENV=process.env.NODE_ENV",
88
97
  "clean": "rm -r dist",
89
98
  "dev": "ts-node --watch",