arkos 1.3.2-canary.4 → 1.3.3-canary.1

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.
Files changed (29) hide show
  1. package/README.md +8 -4
  2. package/dist/cjs/exports/utils/index.js +5 -25
  3. package/dist/cjs/exports/utils/index.js.map +1 -1
  4. package/dist/cjs/modules/base/types/base.service.types.js.map +1 -1
  5. package/dist/cjs/utils/cli/prisma-generate.js +0 -1
  6. package/dist/cjs/utils/cli/prisma-generate.js.map +1 -1
  7. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -1
  8. package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js +34 -10
  9. package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -1
  10. package/dist/cjs/utils/cli/utils/template-generator/templates/hooks-template.js +30 -35
  11. package/dist/cjs/utils/cli/utils/template-generator/templates/hooks-template.js.map +1 -1
  12. package/dist/cjs/utils/features/api.features.js +121 -67
  13. package/dist/cjs/utils/features/api.features.js.map +1 -1
  14. package/dist/esm/exports/utils/index.js +2 -2
  15. package/dist/esm/exports/utils/index.js.map +1 -1
  16. package/dist/esm/modules/base/types/base.service.types.js.map +1 -1
  17. package/dist/esm/utils/cli/prisma-generate.js +0 -1
  18. package/dist/esm/utils/cli/prisma-generate.js.map +1 -1
  19. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
  20. package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js +34 -10
  21. package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -1
  22. package/dist/esm/utils/cli/utils/template-generator/templates/hooks-template.js +30 -35
  23. package/dist/esm/utils/cli/utils/template-generator/templates/hooks-template.js.map +1 -1
  24. package/dist/esm/utils/features/api.features.js +121 -66
  25. package/dist/esm/utils/features/api.features.js.map +1 -1
  26. package/dist/types/exports/utils/index.d.ts +2 -2
  27. package/dist/types/modules/base/types/base.service.types.d.ts +8 -8
  28. package/dist/types/utils/features/api.features.d.ts +2 -4
  29. package/package.json +1 -1
package/README.md CHANGED
@@ -1,10 +1,8 @@
1
1
  ![Header Image](https://www.arkosjs.com/img/arkos-readme-header.webp)
2
2
 
3
- # Arkos.js
3
+ ## The Express And Prisma RESTful Framework
4
4
 
5
- ### The Express And Prisma RESTful Framework
6
-
7
- Arkos simplifies the development of secure and scalable RESTful APIs with minimal configuration, allowing developers to focus on what really matters for their business logic.
5
+ Arkos.js simplifies the development of secure and scalable RESTful APIs with minimal configuration, allowing developers to focus on what really matters for their business logic.
8
6
 
9
7
  ## Features
10
8
 
@@ -28,6 +26,12 @@ Get started with Arkos.js in seconds:
28
26
  npm create arkos@latest my-project
29
27
  ```
30
28
 
29
+ Or get our night updates:
30
+
31
+ ```bash
32
+ npm create arkos@canary my-project
33
+ ```
34
+
31
35
  ## Documentation
32
36
 
33
37
  For comprehensive guides, API reference, and examples, visit our [official documentation](https://arkosjs.com/docs/intro).
@@ -10,35 +10,15 @@ var __createBinding = (this && this.__createBinding) || (Object.create ? (functi
10
10
  if (k2 === undefined) k2 = k;
11
11
  o[k2] = m[k];
12
12
  }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
13
  var __exportStar = (this && this.__exportStar) || function(m, exports) {
19
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
20
15
  };
21
- var __importStar = (this && this.__importStar) || (function () {
22
- var ownKeys = function(o) {
23
- ownKeys = Object.getOwnPropertyNames || function (o) {
24
- var ar = [];
25
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
26
- return ar;
27
- };
28
- return ownKeys(o);
29
- };
30
- return function (mod) {
31
- if (mod && mod.__esModule) return mod;
32
- var result = {};
33
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
34
- __setModuleDefault(result, mod);
35
- return result;
36
- };
37
- })();
16
+ var __importDefault = (this && this.__importDefault) || function (mod) {
17
+ return (mod && mod.__esModule) ? mod : { "default": mod };
18
+ };
38
19
  Object.defineProperty(exports, "__esModule", { value: true });
39
- exports.apiFeatures = exports.APIFeatures = void 0;
20
+ exports.APIFeatures = void 0;
40
21
  __exportStar(require("../../utils/helpers/change-case.helpers"), exports);
41
- const api_features_1 = __importStar(require("../../utils/features/api.features"));
22
+ const api_features_1 = __importDefault(require("../../utils/features/api.features"));
42
23
  exports.APIFeatures = api_features_1.default;
43
- Object.defineProperty(exports, "apiFeatures", { enumerable: true, get: function () { return api_features_1.apiFeatures; } });
44
24
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/exports/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,0EAAwD;AAExD,kFAA6E;AAEpE,sBAFF,sBAAW,CAEE;AAAE,4FAFA,0BAAW,OAEA","sourcesContent":["export * from \"../../utils/helpers/change-case.helpers\";\nexport { MsDuration } from \"../../modules/auth/utils/helpers/auth.controller.helpers\";\nimport APIFeatures, { apiFeatures } from \"../../utils/features/api.features\";\n\nexport { APIFeatures, apiFeatures };\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/exports/utils/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,0EAAwD;AAExD,qFAA4D;AAEnD,sBAFF,sBAAW,CAEE","sourcesContent":["export * from \"../../utils/helpers/change-case.helpers\";\nexport { MsDuration } from \"../../modules/auth/utils/helpers/auth.controller.helpers\";\nimport APIFeatures from \"../../utils/features/api.features\";\n\nexport { APIFeatures };\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"base.service.types.js","sourceRoot":"","sources":["../../../../../src/modules/base/types/base.service.types.ts"],"names":[],"mappings":"","sourcesContent":["import { User } from \"../../../types\";\n\nexport type ModelDelegate = Record<string, any>;\nexport type ModelGetPayload<G, T = any> = G extends {\n $args: (arg: T) => infer R;\n}\n ? R\n : never;\n\n// Create Operations\nexport type CreateOneData<T extends ModelDelegate> = Parameters<\n T[\"create\"]\n>[0] extends { data: infer D; [x: string]: any }\n ? D\n : any;\n\nexport type CreateOneOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"create\"]>[0],\n \"data\"\n>;\n\nexport type CreateOneResult<T extends ModelDelegate> =\n T[\"create\"] extends (args: { data: any }) => infer R ? R : any;\n\nexport type CreateManyData<T extends ModelDelegate> = Parameters<\n T[\"createMany\"]\n>[0] extends { data: infer D; [x: string]: any }\n ? D\n : any;\n\nexport type CreateManyOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"createMany\"]>[0],\n \"data\"\n>;\n\nexport type CreateManyResult<T extends ModelDelegate> =\n T[\"createMany\"] extends (args: { data: any }) => infer R ? R : any;\n\n// Read Operations\nexport type CountFilters<T extends ModelDelegate> = Parameters<\n T[\"count\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type FindManyFilters<T extends ModelDelegate> = Parameters<\n T[\"findMany\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type FindManyOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"findMany\"]>[0],\n \"where\"\n>;\n\nexport type FindManyResult<\n T extends ModelDelegate,\n TOptions = any,\n> = T[\"findMany\"] extends (args: { where: any } & TOptions) => infer R\n ? R\n : any;\n\nexport type FindByIdOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"findUnique\"]>[0],\n \"where\"\n>;\n\nexport type FindByIdResult<T extends ModelDelegate> =\n T[\"findUnique\"] extends (args: { where: any }) => infer R ? R : any;\n\nexport type FindOneFilters<T extends ModelDelegate> = Parameters<\n T[\"findFirst\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type FindOneOptions<T extends ModelDelegate> =\n | Omit<Parameters<T[\"findFirst\"]>[0], \"where\">\n | Omit<Parameters<T[\"findUnique\"]>[0], \"where\">;\n\nexport type FindOneResult<T extends ModelDelegate> =\n T[\"findFirst\"] extends (args: { where: any }) => infer R\n ? R\n : T[\"findUnique\"] extends (args: { where: any }) => infer R2\n ? R2\n : any;\n\n// Update Operations\nexport type UpdateOneFilters<T extends ModelDelegate> = Parameters<\n T[\"update\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type UpdateOneData<T extends ModelDelegate> = Parameters<\n T[\"update\"]\n>[0] extends { data: infer D; [x: string]: any }\n ? D\n : any;\n\nexport type UpdateOneOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"update\"]>[0],\n \"where\" | \"data\"\n>;\n\nexport type UpdateOneResult<T extends ModelDelegate> =\n T[\"update\"] extends (args: { where: any; data: any }) => infer R ? R : any;\n\nexport type UpdateManyFilters<T extends ModelDelegate> = Parameters<\n T[\"updateMany\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type UpdateManyData<T extends ModelDelegate> = Parameters<\n T[\"updateMany\"]\n>[0] extends { data: infer D; [x: string]: any }\n ? D\n : any;\n\nexport type UpdateManyOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"updateMany\"]>[0],\n \"where\" | \"data\"\n>;\n\nexport type UpdateManyResult<T extends ModelDelegate> =\n T[\"updateMany\"] extends (args: { where: any; data: any }) => infer R\n ? R\n : any;\n\n// Delete Operations\nexport type DeleteOneFilters<T extends ModelDelegate> = Parameters<\n T[\"delete\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type DeleteOneResult<T extends ModelDelegate> = ReturnType<T[\"delete\"]>;\n\nexport type DeleteManyFilters<T extends ModelDelegate> = Parameters<\n T[\"deleteMany\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : Record<string, any>;\n\nexport type DeleteManyResult<T extends ModelDelegate> = ReturnType<\n T[\"deleteMany\"]\n>;\n\n// Service Hooks types\nexport interface ServiceBaseContext {\n /**\n * The authenticated user making the request\n */\n user?: User;\n\n /**\n * The access token from the request for authorization\n */\n accessToken?: string;\n\n /**\n * Array of hook types to skip for this operation.\n * - \"before\": Skip the before hook (e.g., beforeCreateOne)\n * - \"after\": Skip the after hook (e.g., afterCreateOne)\n * - \"error\": Skip the error hook (e.g., onCreateOneError)\n *\n * @example\n * ```typescript\n * // Skip before and error hooks\n * { skip: [\"before\", \"error\"] }\n *\n * // Skip all hooks\n * { skip: [\"before\", \"after\", \"error\"] }\n * ```\n */\n skip?:\n | (\"before\" | \"after\" | \"error\")[]\n | \"before\"\n | \"after\"\n | \"error\"\n | \"all\";\n\n /**\n * Whether to re-throw errors after error hooks have been executed.\n * - `true` (default): Error hooks run, then error is re-thrown\n * - `false`: Error hooks run, then method returns fallback value instead of throwing\n * @default true\n * ```\n */\n throwOnError?: boolean;\n}\n\nexport interface BeforeCreateOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n data: CreateOneData<T>;\n queryOptions?: CreateOneOptions<T>;\n context?: Context;\n}\n\nexport interface AfterCreateOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: CreateOneResult<T>;\n data: CreateOneData<T>;\n queryOptions?: CreateOneOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeCreateManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n data: CreateManyData<T>;\n queryOptions?: CreateManyOptions<T>;\n context?: Context;\n}\n\nexport interface AfterCreateManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: CreateManyResult<T>;\n queryOptions?: CreateManyOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeCountHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters?: CountFilters<T>;\n context?: Context;\n}\n\nexport interface AfterCountHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: number;\n filters?: CountFilters<T>;\n context?: Context;\n}\n\nexport interface BeforeFindManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters?: FindManyFilters<T>;\n queryOptions?: FindManyOptions<T>;\n context?: Context;\n}\n\nexport interface AfterFindManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: FindManyResult<T>;\n filters?: FindManyFilters<T>;\n queryOptions?: FindManyOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeFindOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: FindOneFilters<T>;\n queryOptions?: FindOneOptions<T>;\n context?: Context;\n}\n\nexport interface AfterFindOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: FindOneResult<T>;\n filters: FindOneFilters<T>;\n queryOptions?: FindOneOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeUpdateOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: UpdateOneFilters<T>;\n data: UpdateOneData<T>;\n queryOptions?: UpdateOneOptions<T>;\n context?: Context;\n}\n\nexport interface AfterUpdateOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: UpdateOneResult<T>;\n filters: UpdateOneFilters<T>;\n data: UpdateOneData<T>;\n queryOptions?: UpdateOneOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeUpdateManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: UpdateManyFilters<T>;\n data: UpdateManyData<T>;\n queryOptions?: UpdateManyOptions<T>;\n context?: Context;\n}\n\nexport interface AfterUpdateManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: UpdateManyResult<T>;\n filters: UpdateManyFilters<T>;\n data: UpdateManyData<T>;\n queryOptions?: UpdateManyOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeDeleteOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: DeleteOneFilters<T>;\n context?: Context;\n}\n\nexport interface AfterDeleteOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: DeleteOneResult<T>;\n filters: DeleteOneFilters<T>;\n context?: Context;\n}\n\nexport interface BeforeDeleteManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: DeleteManyFilters<T>;\n context?: Context;\n}\n\nexport interface AfterDeleteManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: DeleteManyResult<T>;\n filters: DeleteManyFilters<T>;\n context?: Context;\n}\n\nexport interface OnCreateOneErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeCreateOneHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnCreateManyErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeCreateManyHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnCountErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeCountHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnFindManyErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeFindManyHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnFindByIdErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n error: any;\n id: string | number;\n queryOptions?: FindByIdOptions<T>;\n context?: Context;\n}\n\nexport interface OnFindOneErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeFindOneHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnUpdateOneErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeUpdateOneHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnUpdateManyErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeUpdateManyHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnDeleteOneErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeDeleteOneHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnDeleteManyErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeDeleteManyHookArgs<T, Context> {\n error: any;\n}\n"]}
1
+ {"version":3,"file":"base.service.types.js","sourceRoot":"","sources":["../../../../../src/modules/base/types/base.service.types.ts"],"names":[],"mappings":"","sourcesContent":["import { User } from \"../../../types\";\n\nexport type ModelDelegate = Record<string, any>;\nexport type ModelGetPayload<G, T = any> = G extends {\n $args: (arg: T) => infer R;\n}\n ? R\n : never;\n\n// Create Operations\nexport type CreateOneData<T extends ModelDelegate> = Parameters<\n T[\"create\"]\n>[0] extends { data: infer D; [x: string]: any }\n ? D\n : any;\n\nexport type CreateOneOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"create\"]>[0],\n \"data\"\n>;\n\nexport type CreateOneResult<T extends ModelDelegate> =\n T[\"create\"] extends (args: { data: any }) => infer R ? R : any;\n\nexport type CreateManyData<T extends ModelDelegate> = Parameters<\n T[\"createMany\"]\n>[0] extends { data: infer D; [x: string]: any }\n ? D\n : any;\n\nexport type CreateManyOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"createMany\"]>[0],\n \"data\"\n>;\n\nexport type CreateManyResult<T extends ModelDelegate> =\n T[\"createMany\"] extends (args: { data: any }) => infer R ? R : any;\n\n// Read Operations\nexport type CountFilters<T extends ModelDelegate> = Parameters<\n T[\"count\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type FindManyFilters<T extends ModelDelegate> = Parameters<\n T[\"findMany\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type FindManyOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"findMany\"]>[0],\n \"where\"\n>;\n\nexport type FindManyResult<\n T extends ModelDelegate,\n TOptions = any,\n> = T[\"findMany\"] extends (args: { where: any } & TOptions) => infer R\n ? R\n : any;\n\nexport type FindByIdOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"findUnique\"]>[0],\n \"where\"\n>;\n\nexport type FindByIdResult<T extends ModelDelegate> =\n T[\"findUnique\"] extends (args: { where: any }) => infer R ? R : any;\n\nexport type FindOneFilters<T extends ModelDelegate> = Parameters<\n T[\"findFirst\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type FindOneOptions<T extends ModelDelegate> =\n | Omit<Parameters<T[\"findFirst\"]>[0], \"where\">\n | Omit<Parameters<T[\"findUnique\"]>[0], \"where\">;\n\nexport type FindOneResult<T extends ModelDelegate> =\n T[\"findFirst\"] extends (args: { where: any }) => infer R\n ? R\n : T[\"findUnique\"] extends (args: { where: any }) => infer R2\n ? R2\n : any;\n\n// Update Operations\nexport type UpdateOneFilters<T extends ModelDelegate> = Parameters<\n T[\"update\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type UpdateOneData<T extends ModelDelegate> = Parameters<\n T[\"update\"]\n>[0] extends { data: infer D; [x: string]: any }\n ? D\n : any;\n\nexport type UpdateOneOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"update\"]>[0],\n \"where\" | \"data\"\n>;\n\nexport type UpdateOneResult<T extends ModelDelegate> =\n T[\"update\"] extends (args: { where: any; data: any }) => infer R ? R : any;\n\nexport type UpdateManyFilters<T extends ModelDelegate> = Parameters<\n T[\"updateMany\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type UpdateManyData<T extends ModelDelegate> = Parameters<\n T[\"updateMany\"]\n>[0] extends { data: infer D; [x: string]: any }\n ? D\n : any;\n\nexport type UpdateManyOptions<T extends ModelDelegate> = Omit<\n Parameters<T[\"updateMany\"]>[0],\n \"where\" | \"data\"\n>;\n\nexport type UpdateManyResult<T extends ModelDelegate> =\n T[\"updateMany\"] extends (args: { where: any; data: any }) => infer R\n ? R\n : any;\n\n// Delete Operations\nexport type DeleteOneFilters<T extends ModelDelegate> = Parameters<\n T[\"delete\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : any;\n\nexport type DeleteOneResult<T extends ModelDelegate> = ReturnType<T[\"delete\"]>;\n\nexport type DeleteManyFilters<T extends ModelDelegate> = Parameters<\n T[\"deleteMany\"]\n>[0] extends { where?: infer W; [x: string]: any }\n ? W\n : Record<string, any>;\n\nexport type DeleteManyResult<T extends ModelDelegate> = ReturnType<\n T[\"deleteMany\"]\n>;\n\n// Service Hooks types\nexport interface ServiceBaseContext {\n /**\n * The authenticated user making the request\n */\n user?: User;\n\n /**\n * The access token from the request for authorization\n */\n accessToken?: string;\n\n /**\n * Array of hook types to skip for this operation.\n * - \"before\": Skip the before hook (e.g., beforeCreateOne)\n * - \"after\": Skip the after hook (e.g., afterCreateOne)\n * - \"error\": Skip the error hook (e.g., onCreateOneError)\n *\n * @example\n * ```typescript\n * // Skip before and error hooks\n * { skip: [\"before\", \"error\"] }\n *\n * // Skip all hooks\n * { skip: [\"before\", \"after\", \"error\"] }\n * ```\n */\n skip?:\n | (\"before\" | \"after\" | \"error\")[]\n | \"before\"\n | \"after\"\n | \"error\"\n | \"all\";\n\n /**\n * Whether to re-throw errors after error hooks have been executed.\n * - `true` (default): Error hooks run, then error is re-thrown\n * - `false`: Error hooks run, then method returns fallback value instead of throwing\n * @default true\n * ```\n */\n throwOnError?: boolean;\n}\n\nexport interface BeforeCreateOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n data: CreateOneData<T>;\n queryOptions?: CreateOneOptions<T>;\n context?: Context;\n}\n\nexport interface AfterCreateOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<CreateOneResult<T>>;\n data: CreateOneData<T>;\n queryOptions?: CreateOneOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeCreateManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n data: CreateManyData<T>;\n queryOptions?: CreateManyOptions<T>;\n context?: Context;\n}\n\nexport interface AfterCreateManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<CreateManyResult<T>>;\n queryOptions?: CreateManyOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeCountHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters?: CountFilters<T>;\n context?: Context;\n}\n\nexport interface AfterCountHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: number;\n filters?: CountFilters<T>;\n context?: Context;\n}\n\nexport interface BeforeFindManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters?: FindManyFilters<T>;\n queryOptions?: FindManyOptions<T>;\n context?: Context;\n}\n\nexport interface AfterFindManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<FindManyResult<T>>;\n filters?: FindManyFilters<T>;\n queryOptions?: FindManyOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeFindOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: FindOneFilters<T>;\n queryOptions?: FindOneOptions<T>;\n context?: Context;\n}\n\nexport interface AfterFindOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<FindOneResult<T>>;\n filters: FindOneFilters<T>;\n queryOptions?: FindOneOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeUpdateOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: UpdateOneFilters<T>;\n data: UpdateOneData<T>;\n queryOptions?: UpdateOneOptions<T>;\n context?: Context;\n}\n\nexport interface AfterUpdateOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<UpdateOneResult<T>>;\n filters: UpdateOneFilters<T>;\n data: UpdateOneData<T>;\n queryOptions?: UpdateOneOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeUpdateManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: UpdateManyFilters<T>;\n data: UpdateManyData<T>;\n queryOptions?: UpdateManyOptions<T>;\n context?: Context;\n}\n\nexport interface AfterUpdateManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<UpdateManyResult<T>>;\n filters: UpdateManyFilters<T>;\n data: UpdateManyData<T>;\n queryOptions?: UpdateManyOptions<T>;\n context?: Context;\n}\n\nexport interface BeforeDeleteOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: DeleteOneFilters<T>;\n context?: Context;\n}\n\nexport interface AfterDeleteOneHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<DeleteOneResult<T>>;\n filters: DeleteOneFilters<T>;\n context?: Context;\n}\n\nexport interface BeforeDeleteManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n filters: DeleteManyFilters<T>;\n context?: Context;\n}\n\nexport interface AfterDeleteManyHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n result: Awaited<DeleteManyResult<T>>;\n filters: DeleteManyFilters<T>;\n context?: Context;\n}\n\nexport interface OnCreateOneErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeCreateOneHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnCreateManyErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeCreateManyHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnCountErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeCountHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnFindManyErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeFindManyHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnFindByIdErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> {\n error: any;\n id: string | number;\n queryOptions?: FindByIdOptions<T>;\n context?: Context;\n}\n\nexport interface OnFindOneErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeFindOneHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnUpdateOneErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeUpdateOneHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnUpdateManyErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeUpdateManyHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnDeleteOneErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeDeleteOneHookArgs<T, Context> {\n error: any;\n}\n\nexport interface OnDeleteManyErrorHookArgs<\n T extends ModelDelegate,\n Context = ServiceBaseContext,\n> extends BeforeDeleteManyHookArgs<T, Context> {\n error: any;\n}\n"]}
@@ -115,7 +115,6 @@ export declare class BaseService<
115
115
  fs_1.default.writeFileSync(filePath, content, {
116
116
  encoding: "utf8",
117
117
  });
118
- console.info("");
119
118
  sheu_1.default.done("Types for @prisma/client and BaseService generated successfully!");
120
119
  }
121
120
  //# sourceMappingURL=prisma-generate.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"prisma-generate.js","sourceRoot":"","sources":["../../../../src/utils/cli/prisma-generate.ts"],"names":[],"mappings":";;;;;AAOA,wCAoHC;AA3HD,0FAAgE;AAChE,wEAA2D;AAC3D,4CAAoB;AACpB,iDAAyC;AACzC,mDAA2B;AAC3B,gDAAwB;AAExB,SAAwB,qBAAqB;IACzC,MAAM,OAAO,GAAG;;;;;;EAMlB,8BAAkB,CAAC,MAAM,CAAC,GAAG,CAC3B,CAAC,KAAK,EAAE,EAAE,CACN;OACD,IAAA,+BAAS,EAAC,KAAK,CAAC,IAAI,CAAC;2BACD,KAAK,CAAC,IAAI;6BACR,KAAK,CAAC,IAAI;+BACR,KAAK,CAAC,IAAI;gCACT,KAAK,CAAC,IAAI;6BACb,KAAK,CAAC,IAAI;iCACN,KAAK,CAAC,IAAI;6BACd,KAAK,CAAC,IAAI;iCACN,KAAK,CAAC,IAAI;6BACd,KAAK,CAAC,IAAI;iCACN,KAAK,CAAC,IAAI;4BACf,KAAK,CAAC,IAAI;;CAErC,CACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8EA,CAAC;IACE,IAAA,wBAAQ,EAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAEtD,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CACzB,SAAS,EACT,+CAA+C,CAClD,CAAC;IACF,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE;QAChC,QAAQ,EAAE,MAAM;KACnB,CAAC,CAAC;IACH,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,cAAI,CAAC,IAAI,CACL,kEAAkE,CACrE,CAAC;AACN,CAAC","sourcesContent":["import prismaSchemaParser from \"../prisma/prisma-schema-parser\";\nimport { kebabCase } from \"../helpers/change-case.helpers\";\nimport fs from \"fs\";\nimport { execSync } from \"child_process\";\nimport sheu from \"../sheu\";\nimport path from \"path\";\n\nexport default function prismaGenerateCommand() {\n const content = `\nimport { ModelGroupRelationFields } from \"./utils/helpers/base.service.helpers\";\nimport { ServiceBaseContext } from \"./types/base.service.types\";\nimport { Prisma } from \"@prisma/client\"\n\ndeclare type ModelsGetPayload<T extends Record<string, any>> = {\n${prismaSchemaParser.models.map(\n (model) =>\n `\n \"${kebabCase(model.name)}\": {\n Delegate: Prisma.${model.name}Delegate,\n GetPayload: Prisma.${model.name}GetPayload<T>,\n FindManyArgs: Prisma.${model.name}FindManyArgs,\n FindFirstArgs: Prisma.${model.name}FindFirstArgs,\n CreateArgs: Prisma.${model.name}CreateArgs,\n CreateManyArgs: Prisma.${model.name}CreateManyArgs,\n UpdateArgs: Prisma.${model.name}UpdateArgs,\n UpdateManyArgs: Prisma.${model.name}UpdateManyArgs,\n DeleteArgs: Prisma.${model.name}DeleteArgs,\n DeleteManyArgs: Prisma.${model.name}DeleteManyArgs,\n CountArgs: Prisma.${model.name}CountArgs\n }\n`\n)}\n}\n\nexport type ExtractFilters<T> = T extends { where?: infer W; [x: string]: any } ? W : any;\nexport type ExtractQueryOptions<T, K extends keyof T = never> = Omit<T, K>;\nexport type ExtractData<T> = T extends { data: infer D; [x: string]: any } ? D : any;\n\nexport declare class BaseService<\n TModelName extends keyof ModelsGetPayload<any>\n> {\n modelName: TModelName;\n relationFields: ModelGroupRelationFields;\n prisma: any;\n \n constructor(modelName: TModelName);\n \n createOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CreateArgs'], 'data'>>(\n data: ExtractData<ModelsGetPayload<any>[TModelName]['CreateArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;\n \n createMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CreateManyArgs'], 'data'>>(\n data: ExtractData<ModelsGetPayload<any>[TModelName]['CreateManyArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'][]>;\n \n count<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CountArgs'], 'where'>>(\n filters?: ExtractFilters<ModelsGetPayload<any>[TModelName]['CountArgs']>, \n queryOptions?: TOptions,\n context?: ServiceBaseContext\n ): Promise<number>;\n \n findMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindManyArgs'], 'where'>>(\n filters?: ExtractFilters<ModelsGetPayload<any>[TModelName]['FindManyArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'][]>;\n \n findById<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindFirstArgs'], 'where'>>(\n id: string | number, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'] | null>;\n \n findOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindFirstArgs'], 'where'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['FindManyArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'] | null>;\n \n updateOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['UpdateArgs'], 'where' | 'data'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['UpdateArgs']>, \n data: ExtractData<ModelsGetPayload<any>[TModelName]['UpdateArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;\n \n updateMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['UpdateManyArgs'], 'where' | 'data'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['UpdateManyArgs']>, \n data: ExtractData<ModelsGetPayload<any>[TModelName]['UpdateManyArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<{ count: number }>;\n \n deleteOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['DeleteArgs'], 'where'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['DeleteArgs']>, \n queryOptions?: TOptions,\n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;\n \n deleteMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['DeleteManyArgs'], 'where'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['DeleteManyArgs']>, \n queryOptions?: TOptions,\n context?: ServiceBaseContext\n ): Promise<{ count: number }>;\n}\n`;\n execSync(\"npx prisma generate\", { stdio: \"inherit\" });\n\n const filePath = path.resolve(\n __dirname,\n `../../../types/modules/base/base.service.d.ts`\n );\n fs.writeFileSync(filePath, content, {\n encoding: \"utf8\",\n });\n console.info(\"\");\n sheu.done(\n \"Types for @prisma/client and BaseService generated successfully!\"\n );\n}\n"]}
1
+ {"version":3,"file":"prisma-generate.js","sourceRoot":"","sources":["../../../../src/utils/cli/prisma-generate.ts"],"names":[],"mappings":";;;;;AAOA,wCAmHC;AA1HD,0FAAgE;AAChE,wEAA2D;AAC3D,4CAAoB;AACpB,iDAAyC;AACzC,mDAA2B;AAC3B,gDAAwB;AAExB,SAAwB,qBAAqB;IACzC,MAAM,OAAO,GAAG;;;;;;EAMlB,8BAAkB,CAAC,MAAM,CAAC,GAAG,CAC3B,CAAC,KAAK,EAAE,EAAE,CACN;OACD,IAAA,+BAAS,EAAC,KAAK,CAAC,IAAI,CAAC;2BACD,KAAK,CAAC,IAAI;6BACR,KAAK,CAAC,IAAI;+BACR,KAAK,CAAC,IAAI;gCACT,KAAK,CAAC,IAAI;6BACb,KAAK,CAAC,IAAI;iCACN,KAAK,CAAC,IAAI;6BACd,KAAK,CAAC,IAAI;iCACN,KAAK,CAAC,IAAI;6BACd,KAAK,CAAC,IAAI;iCACN,KAAK,CAAC,IAAI;4BACf,KAAK,CAAC,IAAI;;CAErC,CACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8EA,CAAC;IACE,IAAA,wBAAQ,EAAC,qBAAqB,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IAEtD,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CACzB,SAAS,EACT,+CAA+C,CAClD,CAAC;IACF,YAAE,CAAC,aAAa,CAAC,QAAQ,EAAE,OAAO,EAAE;QAChC,QAAQ,EAAE,MAAM;KACnB,CAAC,CAAC;IACH,cAAI,CAAC,IAAI,CACL,kEAAkE,CACrE,CAAC;AACN,CAAC","sourcesContent":["import prismaSchemaParser from \"../prisma/prisma-schema-parser\";\nimport { kebabCase } from \"../helpers/change-case.helpers\";\nimport fs from \"fs\";\nimport { execSync } from \"child_process\";\nimport sheu from \"../sheu\";\nimport path from \"path\";\n\nexport default function prismaGenerateCommand() {\n const content = `\nimport { ModelGroupRelationFields } from \"./utils/helpers/base.service.helpers\";\nimport { ServiceBaseContext } from \"./types/base.service.types\";\nimport { Prisma } from \"@prisma/client\"\n\ndeclare type ModelsGetPayload<T extends Record<string, any>> = {\n${prismaSchemaParser.models.map(\n (model) =>\n `\n \"${kebabCase(model.name)}\": {\n Delegate: Prisma.${model.name}Delegate,\n GetPayload: Prisma.${model.name}GetPayload<T>,\n FindManyArgs: Prisma.${model.name}FindManyArgs,\n FindFirstArgs: Prisma.${model.name}FindFirstArgs,\n CreateArgs: Prisma.${model.name}CreateArgs,\n CreateManyArgs: Prisma.${model.name}CreateManyArgs,\n UpdateArgs: Prisma.${model.name}UpdateArgs,\n UpdateManyArgs: Prisma.${model.name}UpdateManyArgs,\n DeleteArgs: Prisma.${model.name}DeleteArgs,\n DeleteManyArgs: Prisma.${model.name}DeleteManyArgs,\n CountArgs: Prisma.${model.name}CountArgs\n }\n`\n)}\n}\n\nexport type ExtractFilters<T> = T extends { where?: infer W; [x: string]: any } ? W : any;\nexport type ExtractQueryOptions<T, K extends keyof T = never> = Omit<T, K>;\nexport type ExtractData<T> = T extends { data: infer D; [x: string]: any } ? D : any;\n\nexport declare class BaseService<\n TModelName extends keyof ModelsGetPayload<any>\n> {\n modelName: TModelName;\n relationFields: ModelGroupRelationFields;\n prisma: any;\n \n constructor(modelName: TModelName);\n \n createOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CreateArgs'], 'data'>>(\n data: ExtractData<ModelsGetPayload<any>[TModelName]['CreateArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;\n \n createMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CreateManyArgs'], 'data'>>(\n data: ExtractData<ModelsGetPayload<any>[TModelName]['CreateManyArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'][]>;\n \n count<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['CountArgs'], 'where'>>(\n filters?: ExtractFilters<ModelsGetPayload<any>[TModelName]['CountArgs']>, \n queryOptions?: TOptions,\n context?: ServiceBaseContext\n ): Promise<number>;\n \n findMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindManyArgs'], 'where'>>(\n filters?: ExtractFilters<ModelsGetPayload<any>[TModelName]['FindManyArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'][]>;\n \n findById<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindFirstArgs'], 'where'>>(\n id: string | number, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'] | null>;\n \n findOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['FindFirstArgs'], 'where'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['FindManyArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload'] | null>;\n \n updateOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['UpdateArgs'], 'where' | 'data'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['UpdateArgs']>, \n data: ExtractData<ModelsGetPayload<any>[TModelName]['UpdateArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;\n \n updateMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['UpdateManyArgs'], 'where' | 'data'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['UpdateManyArgs']>, \n data: ExtractData<ModelsGetPayload<any>[TModelName]['UpdateManyArgs']>, \n queryOptions?: TOptions, \n context?: ServiceBaseContext\n ): Promise<{ count: number }>;\n \n deleteOne<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['DeleteArgs'], 'where'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['DeleteArgs']>, \n queryOptions?: TOptions,\n context?: ServiceBaseContext\n ): Promise<ModelsGetPayload<TOptions>[TModelName]['GetPayload']>;\n \n deleteMany<TOptions extends ExtractQueryOptions<ModelsGetPayload<any>[TModelName]['DeleteManyArgs'], 'where'>>(\n filters: ExtractFilters<ModelsGetPayload<any>[TModelName]['DeleteManyArgs']>, \n queryOptions?: TOptions,\n context?: ServiceBaseContext\n ): Promise<{ count: number }>;\n}\n`;\n execSync(\"npx prisma generate\", { stdio: \"inherit\" });\n\n const filePath = path.resolve(\n __dirname,\n `../../../types/modules/base/base.service.d.ts`\n );\n fs.writeFileSync(filePath, content, {\n encoding: \"utf8\",\n });\n sheu.done(\n \"Types for @prisma/client and BaseService generated successfully!\"\n );\n}\n"]}
@@ -19,6 +19,6 @@ function killServerChildProcess() {
19
19
  (0, start_1.killProductionServerChildProcess)();
20
20
  }
21
21
  function getVersion() {
22
- return "1.3.2-canary.4";
22
+ return "1.3.3-canary.1";
23
23
  }
24
24
  //# sourceMappingURL=cli.helpers.js.map
@@ -2,6 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.generateAuthConfigsTemplate = generateAuthConfigsTemplate;
4
4
  const fs_helpers_1 = require("../../../../helpers/fs.helpers");
5
+ const text_helpers_1 = require("../../../../helpers/text.helpers");
5
6
  function generateAuthConfigsTemplate(options) {
6
7
  const { modelName } = options;
7
8
  const ext = (0, fs_helpers_1.getUserFileExtension)();
@@ -13,20 +14,43 @@ function generateAuthConfigsTemplate(options) {
13
14
  : "";
14
15
  const typeAnnotation = isTypeScript ? `: AuthConfigs` : "";
15
16
  return `${imports}
17
+ import { authService } from "arkos/services";
18
+
19
+ export const ${modelName.camel}Permissions = {
20
+ canCreate: authService.permission("Create", "${modelName.kebab}"),
21
+ canUpdate: authService.permission("Update", "${modelName.kebab}"),
22
+ canDelete: authService.permission("Delete", "${modelName.kebab}"),
23
+ canView: authService.permission("View", "${modelName.kebab}"),
24
+ }
25
+
16
26
  const ${modelName.camel}AuthConfigs${typeAnnotation} = {
17
27
  authenticationControl: {
18
- // Create: true,
19
- // Update: true,
20
- // Delete: true,
21
- // View: false,
28
+ Create: true,
29
+ Update: true,
30
+ Delete: true,
31
+ View: true,
22
32
  },
23
-
24
- // Only when using Static RBAC
25
33
  accessControl: {
26
- // Create: ["Admin"],
27
- // Update: ["Admin", "Manager"],
28
- // Delete: ["Admin"],
29
- // View: ["User", "Admin", "Guest"],
34
+ // Create: {
35
+ // roles: [], // only when using static authentication
36
+ // name: Create ${(0, text_helpers_1.capitalize)(modelName.kebab.replaceAll("-", ""))},
37
+ // description: Permission to create new ${modelName.kebab.replaceAll("-", " ")} records,
38
+ // },
39
+ // Update: {
40
+ // roles: [], // only when using static authentication
41
+ // name: Update ${(0, text_helpers_1.capitalize)(modelName.kebab.replaceAll("-", ""))},
42
+ // description: Permission to update existing ${modelName.kebab.replaceAll("-", " ")} records,
43
+ // },
44
+ // Delete: {
45
+ // roles: [], // only when using static authentication
46
+ // name: Delete ${(0, text_helpers_1.capitalize)(modelName.kebab.replaceAll("-", ""))},
47
+ // description: Permission to delete ${modelName.kebab.replaceAll("-", " ")} records,
48
+ // },
49
+ // View: {
50
+ // roles: [], // only when using static authentication
51
+ // name: View ${(0, text_helpers_1.capitalize)(modelName.kebab.replaceAll("-", ""))},
52
+ // description: Permission to view ${modelName.kebab.replaceAll("-", " ")} records,
53
+ // },
30
54
  },
31
55
  };
32
56
 
@@ -1 +1 @@
1
- {"version":3,"file":"auth-configs-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/auth-configs-template.ts"],"names":[],"mappings":";;AAGA,kEAoCC;AAvCD,+DAAsE;AAGtE,SAAgB,2BAA2B,CAAC,OAAwB;IAClE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;IACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;IAElC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAGrE,MAAM,OAAO,GAAG,YAAY;QAC1B,CAAC,CAAC,6CAA6C;QAC/C,CAAC,CAAC,EAAE,CAAC;IAGP,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAE3D,OAAO,GAAG,OAAO;QACX,SAAS,CAAC,KAAK,cAAc,cAAc;;;;;;;;;;;;;;;;;iBAiBlC,SAAS,CAAC,KAAK;CAC/B,CAAC;AACF,CAAC","sourcesContent":["import { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generateAuthConfigsTemplate(options: TemplateOptions): string {\n const { modelName } = options;\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n\n if (!modelName)\n throw new Error(\"Model name is required for auth config template\");\n\n // Generate imports for TypeScript\n const imports = isTypeScript\n ? `import { AuthConfigs } from 'arkos/auth';\\n`\n : \"\";\n\n // Generate type annotation for TypeScript\n const typeAnnotation = isTypeScript ? `: AuthConfigs` : \"\";\n\n return `${imports}\nconst ${modelName.camel}AuthConfigs${typeAnnotation} = {\n authenticationControl: {\n // Create: true,\n // Update: true,\n // Delete: true,\n // View: false,\n },\n \n // Only when using Static RBAC\n accessControl: {\n // Create: [\"Admin\"],\n // Update: [\"Admin\", \"Manager\"],\n // Delete: [\"Admin\"],\n // View: [\"User\", \"Admin\", \"Guest\"],\n },\n};\n\nexport default ${modelName.camel}AuthConfigs;\n`;\n}\n"]}
1
+ {"version":3,"file":"auth-configs-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/auth-configs-template.ts"],"names":[],"mappings":";;AAIA,kEA2DC;AA/DD,+DAAsE;AACtE,mEAA8D;AAG9D,SAAgB,2BAA2B,CAAC,OAAwB;IAClE,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;IAC9B,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;IACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;IAElC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,iDAAiD,CAAC,CAAC;IAGrE,MAAM,OAAO,GAAG,YAAY;QAC1B,CAAC,CAAC,6CAA6C;QAC/C,CAAC,CAAC,EAAE,CAAC;IAGP,MAAM,cAAc,GAAG,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE,CAAC;IAE3D,OAAO,GAAG,OAAO;;;eAGJ,SAAS,CAAC,KAAK;iDACmB,SAAS,CAAC,KAAK;iDACf,SAAS,CAAC,KAAK;iDACf,SAAS,CAAC,KAAK;6CACnB,SAAS,CAAC,KAAK;;;QAGpD,SAAS,CAAC,KAAK,cAAc,cAAc;;;;;;;;;;wBAU3B,IAAA,yBAAU,EAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;iDACtB,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;;;;wBAI7D,IAAA,yBAAU,EAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;sDACjB,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;;;;wBAIlE,IAAA,yBAAU,EAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;6CAC1B,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;;;;sBAI3D,IAAA,yBAAU,EAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;2CAC1B,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;;;;;iBAK9D,SAAS,CAAC,KAAK;CAC/B,CAAC;AACF,CAAC","sourcesContent":["import { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\nimport { capitalize } from \"../../../../helpers/text.helpers\";\nimport { TemplateOptions } from \"../../template-generators\";\n\nexport function generateAuthConfigsTemplate(options: TemplateOptions): string {\n const { modelName } = options;\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n\n if (!modelName)\n throw new Error(\"Model name is required for auth config template\");\n\n // Generate imports for TypeScript\n const imports = isTypeScript\n ? `import { AuthConfigs } from 'arkos/auth';\\n`\n : \"\";\n\n // Generate type annotation for TypeScript\n const typeAnnotation = isTypeScript ? `: AuthConfigs` : \"\";\n\n return `${imports}\nimport { authService } from \"arkos/services\";\n\nexport const ${modelName.camel}Permissions = {\n canCreate: authService.permission(\"Create\", \"${modelName.kebab}\"),\n canUpdate: authService.permission(\"Update\", \"${modelName.kebab}\"),\n canDelete: authService.permission(\"Delete\", \"${modelName.kebab}\"),\n canView: authService.permission(\"View\", \"${modelName.kebab}\"),\n}\n\nconst ${modelName.camel}AuthConfigs${typeAnnotation} = {\n authenticationControl: {\n Create: true,\n Update: true,\n Delete: true,\n View: true,\n },\n accessControl: {\n // Create: {\n // roles: [], // only when using static authentication\n // name: Create ${capitalize(modelName.kebab.replaceAll(\"-\", \"\"))},\n // description: Permission to create new ${modelName.kebab.replaceAll(\"-\", \" \")} records,\n // },\n // Update: {\n // roles: [], // only when using static authentication\n // name: Update ${capitalize(modelName.kebab.replaceAll(\"-\", \"\"))},\n // description: Permission to update existing ${modelName.kebab.replaceAll(\"-\", \" \")} records,\n // },\n // Delete: {\n // roles: [], // only when using static authentication\n // name: Delete ${capitalize(modelName.kebab.replaceAll(\"-\", \"\"))},\n // description: Permission to delete ${modelName.kebab.replaceAll(\"-\", \" \")} records,\n // },\n // View: {\n // roles: [], // only when using static authentication\n // name: View ${capitalize(modelName.kebab.replaceAll(\"-\", \"\"))},\n // description: Permission to view ${modelName.kebab.replaceAll(\"-\", \" \")} records,\n // },\n },\n};\n\nexport default ${modelName.camel}AuthConfigs;\n`;\n}\n"]}
@@ -40,43 +40,39 @@ function generateHooksTemplate(options) {
40
40
  // OnDeleteManyErrorHookArgs
41
41
  // } from "arkos/services";`
42
42
  : ``;
43
- const prismaImport = `"../../utils/prisma${ext === "ts" ? "" : "." + "js"}";`;
44
43
  const serviceImport = `"./${modelName.kebab}.service${ext === "ts" ? "" : "." + "js"}";`;
45
- const delegateExport = isTypeScript
46
- ? `\nexport type ${modelName.pascal}Delegate = typeof prisma.${modelName.camel};`
47
- : "";
48
44
  const getHookArgsType = (hookName) => {
49
45
  if (!isTypeScript)
50
46
  return "";
51
47
  const typeMap = {
52
- beforeFindOne: `BeforeFindOneHookArgs<${modelName.pascal}Delegate>`,
53
- afterFindOne: `AfterFindOneHookArgs<${modelName.pascal}Delegate>`,
54
- beforeUpdateOne: `BeforeUpdateOneHookArgs<${modelName.pascal}Delegate>`,
55
- afterUpdateOne: `AfterUpdateOneHookArgs<${modelName.pascal}Delegate>`,
56
- beforeCreateOne: `BeforeCreateOneHookArgs<${modelName.pascal}Delegate>`,
57
- afterCreateOne: `AfterCreateOneHookArgs<${modelName.pascal}Delegate>`,
58
- beforeCreateMany: `BeforeCreateManyHookArgs<${modelName.pascal}Delegate>`,
59
- afterCreateMany: `AfterCreateManyHookArgs<${modelName.pascal}Delegate>`,
60
- beforeCount: `BeforeCountHookArgs<${modelName.pascal}Delegate>`,
61
- afterCount: `AfterCountHookArgs<${modelName.pascal}Delegate>`,
62
- beforeFindMany: `BeforeFindManyHookArgs<${modelName.pascal}Delegate>`,
63
- afterFindMany: `AfterFindManyHookArgs<${modelName.pascal}Delegate>`,
64
- beforeUpdateMany: `BeforeUpdateManyHookArgs<${modelName.pascal}Delegate>`,
65
- afterUpdateMany: `AfterUpdateManyHookArgs<${modelName.pascal}Delegate>`,
66
- beforeDeleteOne: `BeforeDeleteOneHookArgs<${modelName.pascal}Delegate>`,
67
- afterDeleteOne: `AfterDeleteOneHookArgs<${modelName.pascal}Delegate>`,
68
- beforeDeleteMany: `BeforeDeleteManyHookArgs<${modelName.pascal}Delegate>`,
69
- afterDeleteMany: `AfterDeleteManyHookArgs<${modelName.pascal}Delegate>`,
70
- onCreateOneError: `OnCreateOneErrorHookArgs<${modelName.pascal}Delegate>`,
71
- onCreateManyError: `OnCreateManyErrorHookArgs<${modelName.pascal}Delegate>`,
72
- onCountError: `OnCountErrorHookArgs<${modelName.pascal}Delegate>`,
73
- onFindManyError: `OnFindManyErrorHookArgs<${modelName.pascal}Delegate>`,
74
- onFindByIdError: `OnFindByIdErrorHookArgs<${modelName.pascal}Delegate>`,
75
- onFindOneError: `OnFindOneErrorHookArgs<${modelName.pascal}Delegate>`,
76
- onUpdateOneError: `OnUpdateOneErrorHookArgs<${modelName.pascal}Delegate>`,
77
- onUpdateManyError: `OnUpdateManyErrorHookArgs<${modelName.pascal}Delegate>`,
78
- onDeleteOneError: `OnDeleteOneErrorHookArgs<${modelName.pascal}Delegate>`,
79
- onDeleteManyError: `OnDeleteManyErrorHookArgs<${modelName.pascal}Delegate>`,
48
+ beforeFindOne: `BeforeFindOneHookArgs<Prisma.${modelName.pascal}Delegate>`,
49
+ afterFindOne: `AfterFindOneHookArgs<Prisma.${modelName.pascal}Delegate>`,
50
+ beforeUpdateOne: `BeforeUpdateOneHookArgs<Prisma.${modelName.pascal}Delegate>`,
51
+ afterUpdateOne: `AfterUpdateOneHookArgs<Prisma.${modelName.pascal}Delegate>`,
52
+ beforeCreateOne: `BeforeCreateOneHookArgs<Prisma.${modelName.pascal}Delegate>`,
53
+ afterCreateOne: `AfterCreateOneHookArgs<Prisma.${modelName.pascal}Delegate>`,
54
+ beforeCreateMany: `BeforeCreateManyHookArgs<Prisma.${modelName.pascal}Delegate>`,
55
+ afterCreateMany: `AfterCreateManyHookArgs<Prisma.${modelName.pascal}Delegate>`,
56
+ beforeCount: `BeforeCountHookArgs<Prisma.${modelName.pascal}Delegate>`,
57
+ afterCount: `AfterCountHookArgs<Prisma.${modelName.pascal}Delegate>`,
58
+ beforeFindMany: `BeforeFindManyHookArgs<Prisma.${modelName.pascal}Delegate>`,
59
+ afterFindMany: `AfterFindManyHookArgs<Prisma.${modelName.pascal}Delegate>`,
60
+ beforeUpdateMany: `BeforeUpdateManyHookArgs<Prisma.${modelName.pascal}Delegate>`,
61
+ afterUpdateMany: `AfterUpdateManyHookArgs<Prisma.${modelName.pascal}Delegate>`,
62
+ beforeDeleteOne: `BeforeDeleteOneHookArgs<Prisma.${modelName.pascal}Delegate>`,
63
+ afterDeleteOne: `AfterDeleteOneHookArgs<Prisma.${modelName.pascal}Delegate>`,
64
+ beforeDeleteMany: `BeforeDeleteManyHookArgs<Prisma.${modelName.pascal}Delegate>`,
65
+ afterDeleteMany: `AfterDeleteManyHookArgs<Prisma.${modelName.pascal}Delegate>`,
66
+ onCreateOneError: `OnCreateOneErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
67
+ onCreateManyError: `OnCreateManyErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
68
+ onCountError: `OnCountErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
69
+ onFindManyError: `OnFindManyErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
70
+ onFindByIdError: `OnFindByIdErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
71
+ onFindOneError: `OnFindOneErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
72
+ onUpdateOneError: `OnUpdateOneErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
73
+ onUpdateManyError: `OnUpdateManyErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
74
+ onDeleteOneError: `OnDeleteOneErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
75
+ onDeleteManyError: `OnDeleteManyErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,
80
76
  };
81
77
  return typeMap[hookName];
82
78
  };
@@ -85,7 +81,7 @@ function generateHooksTemplate(options) {
85
81
  const args = isTypeScript
86
82
  ? `{ ${params.join(", ")} }: ${argsType}`
87
83
  : `{ ${params.join(", ")} }`;
88
- return `async function ${hookName}(${args}) {}`;
84
+ return `async function (${args}) {}`;
89
85
  };
90
86
  const hooks = `
91
87
  // export const beforeFindOne = [
@@ -197,9 +193,8 @@ function generateHooksTemplate(options) {
197
193
  // ];
198
194
  `;
199
195
  return `${baseImports}
200
- // import prisma from ${prismaImport}
196
+ // import { Prisma } from "@prisma/client"
201
197
  // import ${modelName.camel}Service from ${serviceImport}
202
- ${delegateExport}
203
198
 
204
199
  ${hooks}`;
205
200
  }
@@ -1 +1 @@
1
- {"version":3,"file":"hooks-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/hooks-template.ts"],"names":[],"mappings":"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","sourcesContent":["// Import helper function to get user's file extension preference\nimport { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\n// Import template options interface\nimport { TemplateOptions } from \"../../template-generators\";\n\n// Main function to generate hooks template based on provided options\nexport default function generateHooksTemplate(\n options: TemplateOptions\n): string {\n // Destructure modelName from options\n const { modelName } = options;\n // Get user's preferred file extension (ts or js)\n const ext = getUserFileExtension();\n // Check if user is using TypeScript\n const isTypeScript = ext === \"ts\";\n\n // Throw error if modelName is not provided\n if (!modelName) throw new Error(\"Model name is required for hooks template\");\n\n // Define base imports for TypeScript - includes all hook argument types\n const baseImports = isTypeScript\n ? `// import { \n// BeforeFindOneHookArgs, \n// AfterFindOneHookArgs, \n// BeforeUpdateOneHookArgs, \n// AfterUpdateOneHookArgs,\n// BeforeCreateOneHookArgs,\n// AfterCreateOneHookArgs,\n// BeforeCreateManyHookArgs,\n// AfterCreateManyHookArgs,\n// BeforeCountHookArgs,\n// AfterCountHookArgs,\n// BeforeFindManyHookArgs,\n// AfterFindManyHookArgs,\n// BeforeUpdateManyHookArgs,\n// AfterUpdateManyHookArgs,\n// BeforeDeleteOneHookArgs,\n// AfterDeleteOneHookArgs,\n// BeforeDeleteManyHookArgs,\n// AfterDeleteManyHookArgs,\n// OnCreateOneErrorHookArgs,\n// OnCreateManyErrorHookArgs,\n// OnCountErrorHookArgs,\n// OnFindManyErrorHookArgs,\n// OnFindByIdErrorHookArgs,\n// OnFindOneErrorHookArgs,\n// OnUpdateOneErrorHookArgs,\n// OnUpdateManyErrorHookArgs,\n// OnDeleteOneErrorHookArgs,\n// OnDeleteManyErrorHookArgs\n// } from \"arkos/services\";`\n : ``;\n\n // Define prisma import path based on file extension\n const prismaImport = `\"../../utils/prisma${ext === \"ts\" ? \"\" : \".\" + \"js\"}\";`;\n\n // Define service import path based on file extension\n const serviceImport = `\"./${modelName.kebab}.service${ext === \"ts\" ? \"\" : \".\" + \"js\"}\";`;\n\n // Export delegate type for TypeScript only\n const delegateExport = isTypeScript\n ? `\\nexport type ${modelName.pascal}Delegate = typeof prisma.${modelName.camel};`\n : \"\";\n\n // Function to get the appropriate TypeScript type for each hook\n const getHookArgsType = (hookName: string) => {\n // Return empty string for JavaScript\n if (!isTypeScript) return \"\";\n\n // Map hook names to their corresponding TypeScript types\n const typeMap: Record<string, string> = {\n beforeFindOne: `BeforeFindOneHookArgs<${modelName.pascal}Delegate>`,\n afterFindOne: `AfterFindOneHookArgs<${modelName.pascal}Delegate>`,\n beforeUpdateOne: `BeforeUpdateOneHookArgs<${modelName.pascal}Delegate>`,\n afterUpdateOne: `AfterUpdateOneHookArgs<${modelName.pascal}Delegate>`,\n beforeCreateOne: `BeforeCreateOneHookArgs<${modelName.pascal}Delegate>`,\n afterCreateOne: `AfterCreateOneHookArgs<${modelName.pascal}Delegate>`,\n beforeCreateMany: `BeforeCreateManyHookArgs<${modelName.pascal}Delegate>`,\n afterCreateMany: `AfterCreateManyHookArgs<${modelName.pascal}Delegate>`,\n beforeCount: `BeforeCountHookArgs<${modelName.pascal}Delegate>`,\n afterCount: `AfterCountHookArgs<${modelName.pascal}Delegate>`,\n beforeFindMany: `BeforeFindManyHookArgs<${modelName.pascal}Delegate>`,\n afterFindMany: `AfterFindManyHookArgs<${modelName.pascal}Delegate>`,\n beforeUpdateMany: `BeforeUpdateManyHookArgs<${modelName.pascal}Delegate>`,\n afterUpdateMany: `AfterUpdateManyHookArgs<${modelName.pascal}Delegate>`,\n beforeDeleteOne: `BeforeDeleteOneHookArgs<${modelName.pascal}Delegate>`,\n afterDeleteOne: `AfterDeleteOneHookArgs<${modelName.pascal}Delegate>`,\n beforeDeleteMany: `BeforeDeleteManyHookArgs<${modelName.pascal}Delegate>`,\n afterDeleteMany: `AfterDeleteManyHookArgs<${modelName.pascal}Delegate>`,\n // Error hook types\n onCreateOneError: `OnCreateOneErrorHookArgs<${modelName.pascal}Delegate>`,\n onCreateManyError: `OnCreateManyErrorHookArgs<${modelName.pascal}Delegate>`,\n onCountError: `OnCountErrorHookArgs<${modelName.pascal}Delegate>`,\n onFindManyError: `OnFindManyErrorHookArgs<${modelName.pascal}Delegate>`,\n onFindByIdError: `OnFindByIdErrorHookArgs<${modelName.pascal}Delegate>`,\n onFindOneError: `OnFindOneErrorHookArgs<${modelName.pascal}Delegate>`,\n onUpdateOneError: `OnUpdateOneErrorHookArgs<${modelName.pascal}Delegate>`,\n onUpdateManyError: `OnUpdateManyErrorHookArgs<${modelName.pascal}Delegate>`,\n onDeleteOneError: `OnDeleteOneErrorHookArgs<${modelName.pascal}Delegate>`,\n onDeleteManyError: `OnDeleteManyErrorHookArgs<${modelName.pascal}Delegate>`,\n };\n\n // Return the corresponding type for the hook name\n return typeMap[hookName];\n };\n\n // Function to generate a hook function with proper TypeScript types\n const generateHookFunction = (hookName: string, params: string[]) => {\n // Get the TypeScript type for this hook\n const argsType = getHookArgsType(hookName);\n // Create function parameters with or without TypeScript types\n const args = isTypeScript\n ? `{ ${params.join(\", \")} }: ${argsType}`\n : `{ ${params.join(\", \")} }`;\n\n // Return the complete function definition\n return `async function ${hookName}(${args}) {}`;\n };\n\n // Generate all hook exports with their respective functions\n const hooks = `\n// export const beforeFindOne = [\n// ${generateHookFunction(\"beforeFindOne\", [\"context\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const afterFindOne = [\n// ${generateHookFunction(\"afterFindOne\", [\"context\", \"result\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const onFindOneError = [\n// ${generateHookFunction(\"onFindOneError\", [\"context\", \"error\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const beforeUpdateOne = [\n// ${generateHookFunction(\"beforeUpdateOne\", [\"context\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const afterUpdateOne = [\n// ${generateHookFunction(\"afterUpdateOne\", [\"context\", \"result\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const onUpdateOneError = [\n// ${generateHookFunction(\"onUpdateOneError\", [\"context\", \"error\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const beforeCreateOne = [\n// ${generateHookFunction(\"beforeCreateOne\", [\"context\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const afterCreateOne = [\n// ${generateHookFunction(\"afterCreateOne\", [\"context\", \"result\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const onCreateOneError = [\n// ${generateHookFunction(\"onCreateOneError\", [\"context\", \"error\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const beforeCreateMany = [\n// ${generateHookFunction(\"beforeCreateMany\", [\"context\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const afterCreateMany = [\n// ${generateHookFunction(\"afterCreateMany\", [\"context\", \"result\", \"queryOptions\"])}\n// ];\n\n// export const onCreateManyError = [\n// ${generateHookFunction(\"onCreateManyError\", [\"context\", \"error\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const beforeCount = [\n// ${generateHookFunction(\"beforeCount\", [\"context\", \"filters\"])}\n// ];\n\n// export const afterCount = [\n// ${generateHookFunction(\"afterCount\", [\"context\", \"result\", \"filters\"])}\n// ];\n\n// export const onCountError = [\n// ${generateHookFunction(\"onCountError\", [\"context\", \"error\", \"filters\"])}\n// ];\n\n// export const beforeFindMany = [\n// ${generateHookFunction(\"beforeFindMany\", [\"context\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const afterFindMany = [\n// ${generateHookFunction(\"afterFindMany\", [\"context\", \"result\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const onFindManyError = [\n// ${generateHookFunction(\"onFindManyError\", [\"context\", \"error\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const beforeUpdateMany = [\n// ${generateHookFunction(\"beforeUpdateMany\", [\"context\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const afterUpdateMany = [\n// ${generateHookFunction(\"afterUpdateMany\", [\"context\", \"result\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const onUpdateManyError = [\n// ${generateHookFunction(\"onUpdateManyError\", [\"context\", \"error\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const beforeDeleteOne = [\n// ${generateHookFunction(\"beforeDeleteOne\", [\"context\", \"filters\"])}\n// ];\n\n// export const afterDeleteOne = [\n// ${generateHookFunction(\"afterDeleteOne\", [\"context\", \"result\", \"filters\"])}\n// ];\n\n// export const onDeleteOneError = [\n// ${generateHookFunction(\"onDeleteOneError\", [\"context\", \"error\", \"filters\"])}\n// ];\n\n// export const beforeDeleteMany = [\n// ${generateHookFunction(\"beforeDeleteMany\", [\"context\", \"filters\"])}\n// ];\n\n// export const afterDeleteMany = [\n// ${generateHookFunction(\"afterDeleteMany\", [\"context\", \"result\", \"filters\"])}\n// ];\n\n// export const onDeleteManyError = [\n// ${generateHookFunction(\"onDeleteManyError\", [\"context\", \"error\", \"filters\"])}\n// ];\n`;\n\n // Return the complete template with imports, exports, and hook functions\n return `${baseImports}\n// import prisma from ${prismaImport}\n// import ${modelName.camel}Service from ${serviceImport}\n${delegateExport}\n\n${hooks}`;\n}\n"]}
1
+ {"version":3,"file":"hooks-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/hooks-template.ts"],"names":[],"mappings":"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","sourcesContent":["// Import helper function to get user's file extension preference\nimport { getUserFileExtension } from \"../../../../helpers/fs.helpers\";\n// Import template options interface\nimport { TemplateOptions } from \"../../template-generators\";\n\n// Main function to generate hooks template based on provided options\nexport default function generateHooksTemplate(\n options: TemplateOptions\n): string {\n // Destructure modelName from options\n const { modelName } = options;\n // Get user's preferred file extension (ts or js)\n const ext = getUserFileExtension();\n // Check if user is using TypeScript\n const isTypeScript = ext === \"ts\";\n\n // Throw error if modelName is not provided\n if (!modelName) throw new Error(\"Model name is required for hooks template\");\n\n // Define base imports for TypeScript - includes all hook argument types\n const baseImports = isTypeScript\n ? `// import { \n// BeforeFindOneHookArgs, \n// AfterFindOneHookArgs, \n// BeforeUpdateOneHookArgs, \n// AfterUpdateOneHookArgs,\n// BeforeCreateOneHookArgs,\n// AfterCreateOneHookArgs,\n// BeforeCreateManyHookArgs,\n// AfterCreateManyHookArgs,\n// BeforeCountHookArgs,\n// AfterCountHookArgs,\n// BeforeFindManyHookArgs,\n// AfterFindManyHookArgs,\n// BeforeUpdateManyHookArgs,\n// AfterUpdateManyHookArgs,\n// BeforeDeleteOneHookArgs,\n// AfterDeleteOneHookArgs,\n// BeforeDeleteManyHookArgs,\n// AfterDeleteManyHookArgs,\n// OnCreateOneErrorHookArgs,\n// OnCreateManyErrorHookArgs,\n// OnCountErrorHookArgs,\n// OnFindManyErrorHookArgs,\n// OnFindByIdErrorHookArgs,\n// OnFindOneErrorHookArgs,\n// OnUpdateOneErrorHookArgs,\n// OnUpdateManyErrorHookArgs,\n// OnDeleteOneErrorHookArgs,\n// OnDeleteManyErrorHookArgs\n// } from \"arkos/services\";`\n : ``;\n\n // Define service import path based on file extension\n const serviceImport = `\"./${modelName.kebab}.service${ext === \"ts\" ? \"\" : \".\" + \"js\"}\";`;\n\n // Function to get the appropriate TypeScript type for each hook\n const getHookArgsType = (hookName: string) => {\n // Return empty string for JavaScript\n if (!isTypeScript) return \"\";\n\n // Map hook names to their corresponding TypeScript types\n const typeMap: Record<string, string> = {\n beforeFindOne: `BeforeFindOneHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterFindOne: `AfterFindOneHookArgs<Prisma.${modelName.pascal}Delegate>`,\n beforeUpdateOne: `BeforeUpdateOneHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterUpdateOne: `AfterUpdateOneHookArgs<Prisma.${modelName.pascal}Delegate>`,\n beforeCreateOne: `BeforeCreateOneHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterCreateOne: `AfterCreateOneHookArgs<Prisma.${modelName.pascal}Delegate>`,\n beforeCreateMany: `BeforeCreateManyHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterCreateMany: `AfterCreateManyHookArgs<Prisma.${modelName.pascal}Delegate>`,\n beforeCount: `BeforeCountHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterCount: `AfterCountHookArgs<Prisma.${modelName.pascal}Delegate>`,\n beforeFindMany: `BeforeFindManyHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterFindMany: `AfterFindManyHookArgs<Prisma.${modelName.pascal}Delegate>`,\n beforeUpdateMany: `BeforeUpdateManyHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterUpdateMany: `AfterUpdateManyHookArgs<Prisma.${modelName.pascal}Delegate>`,\n beforeDeleteOne: `BeforeDeleteOneHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterDeleteOne: `AfterDeleteOneHookArgs<Prisma.${modelName.pascal}Delegate>`,\n beforeDeleteMany: `BeforeDeleteManyHookArgs<Prisma.${modelName.pascal}Delegate>`,\n afterDeleteMany: `AfterDeleteManyHookArgs<Prisma.${modelName.pascal}Delegate>`,\n // Error hook types\n onCreateOneError: `OnCreateOneErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onCreateManyError: `OnCreateManyErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onCountError: `OnCountErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onFindManyError: `OnFindManyErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onFindByIdError: `OnFindByIdErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onFindOneError: `OnFindOneErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onUpdateOneError: `OnUpdateOneErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onUpdateManyError: `OnUpdateManyErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onDeleteOneError: `OnDeleteOneErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n onDeleteManyError: `OnDeleteManyErrorHookArgs<Prisma.${modelName.pascal}Delegate>`,\n };\n\n // Return the corresponding type for the hook name\n return typeMap[hookName];\n };\n\n // Function to generate a hook function with proper TypeScript types\n const generateHookFunction = (hookName: string, params: string[]) => {\n // Get the TypeScript type for this hook\n const argsType = getHookArgsType(hookName);\n // Create function parameters with or without TypeScript types\n const args = isTypeScript\n ? `{ ${params.join(\", \")} }: ${argsType}`\n : `{ ${params.join(\", \")} }`;\n\n // Return the complete function definition\n return `async function (${args}) {}`;\n };\n\n // Generate all hook exports with their respective functions\n const hooks = `\n// export const beforeFindOne = [\n// ${generateHookFunction(\"beforeFindOne\", [\"context\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const afterFindOne = [\n// ${generateHookFunction(\"afterFindOne\", [\"context\", \"result\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const onFindOneError = [\n// ${generateHookFunction(\"onFindOneError\", [\"context\", \"error\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const beforeUpdateOne = [\n// ${generateHookFunction(\"beforeUpdateOne\", [\"context\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const afterUpdateOne = [\n// ${generateHookFunction(\"afterUpdateOne\", [\"context\", \"result\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const onUpdateOneError = [\n// ${generateHookFunction(\"onUpdateOneError\", [\"context\", \"error\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const beforeCreateOne = [\n// ${generateHookFunction(\"beforeCreateOne\", [\"context\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const afterCreateOne = [\n// ${generateHookFunction(\"afterCreateOne\", [\"context\", \"result\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const onCreateOneError = [\n// ${generateHookFunction(\"onCreateOneError\", [\"context\", \"error\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const beforeCreateMany = [\n// ${generateHookFunction(\"beforeCreateMany\", [\"context\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const afterCreateMany = [\n// ${generateHookFunction(\"afterCreateMany\", [\"context\", \"result\", \"queryOptions\"])}\n// ];\n\n// export const onCreateManyError = [\n// ${generateHookFunction(\"onCreateManyError\", [\"context\", \"error\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const beforeCount = [\n// ${generateHookFunction(\"beforeCount\", [\"context\", \"filters\"])}\n// ];\n\n// export const afterCount = [\n// ${generateHookFunction(\"afterCount\", [\"context\", \"result\", \"filters\"])}\n// ];\n\n// export const onCountError = [\n// ${generateHookFunction(\"onCountError\", [\"context\", \"error\", \"filters\"])}\n// ];\n\n// export const beforeFindMany = [\n// ${generateHookFunction(\"beforeFindMany\", [\"context\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const afterFindMany = [\n// ${generateHookFunction(\"afterFindMany\", [\"context\", \"result\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const onFindManyError = [\n// ${generateHookFunction(\"onFindManyError\", [\"context\", \"error\", \"filters\", \"queryOptions\"])}\n// ];\n\n// export const beforeUpdateMany = [\n// ${generateHookFunction(\"beforeUpdateMany\", [\"context\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const afterUpdateMany = [\n// ${generateHookFunction(\"afterUpdateMany\", [\"context\", \"result\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const onUpdateManyError = [\n// ${generateHookFunction(\"onUpdateManyError\", [\"context\", \"error\", \"filters\", \"data\", \"queryOptions\"])}\n// ];\n\n// export const beforeDeleteOne = [\n// ${generateHookFunction(\"beforeDeleteOne\", [\"context\", \"filters\"])}\n// ];\n\n// export const afterDeleteOne = [\n// ${generateHookFunction(\"afterDeleteOne\", [\"context\", \"result\", \"filters\"])}\n// ];\n\n// export const onDeleteOneError = [\n// ${generateHookFunction(\"onDeleteOneError\", [\"context\", \"error\", \"filters\"])}\n// ];\n\n// export const beforeDeleteMany = [\n// ${generateHookFunction(\"beforeDeleteMany\", [\"context\", \"filters\"])}\n// ];\n\n// export const afterDeleteMany = [\n// ${generateHookFunction(\"afterDeleteMany\", [\"context\", \"result\", \"filters\"])}\n// ];\n\n// export const onDeleteManyError = [\n// ${generateHookFunction(\"onDeleteManyError\", [\"context\", \"error\", \"filters\"])}\n// ];\n`;\n\n // Return the complete template with imports, exports, and hook functions\n return `${baseImports}\n// import { Prisma } from \"@prisma/client\"\n// import ${modelName.camel}Service from ${serviceImport}\n\n${hooks}`;\n}\n"]}