arkos 1.4.1-canary.8 → 1.5.0-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 (118) hide show
  1. package/dist/cjs/modules/auth/auth.controller.js +13 -0
  2. package/dist/cjs/modules/auth/auth.controller.js.map +1 -1
  3. package/dist/cjs/modules/auth/auth.service.js +40 -14
  4. package/dist/cjs/modules/auth/auth.service.js.map +1 -1
  5. package/dist/cjs/modules/auth/utils/services/auth-action.service.js +1 -1
  6. package/dist/cjs/modules/auth/utils/services/auth-action.service.js.map +1 -1
  7. package/dist/cjs/modules/base/base.middlewares.js +6 -4
  8. package/dist/cjs/modules/base/base.middlewares.js.map +1 -1
  9. package/dist/cjs/modules/base/utils/error-prettifier.js +185 -0
  10. package/dist/cjs/modules/base/utils/error-prettifier.js.map +1 -0
  11. package/dist/cjs/modules/email/email.service.js +4 -1
  12. package/dist/cjs/modules/email/email.service.js.map +1 -1
  13. package/dist/cjs/modules/error-handler/error-handler.controller.js.map +1 -1
  14. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js +9 -3
  15. package/dist/cjs/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  16. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js +3 -0
  17. package/dist/cjs/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -1
  18. package/dist/cjs/types/auth.js.map +1 -1
  19. package/dist/cjs/utils/arkos-router/index.js +7 -1
  20. package/dist/cjs/utils/arkos-router/index.js.map +1 -1
  21. package/dist/cjs/utils/arkos-router/types/index.js.map +1 -1
  22. package/dist/cjs/utils/arkos-router/utils/helpers/index.js +51 -0
  23. package/dist/cjs/utils/arkos-router/utils/helpers/index.js.map +1 -1
  24. package/dist/cjs/utils/cli/generate.js +38 -0
  25. package/dist/cjs/utils/cli/generate.js.map +1 -1
  26. package/dist/cjs/utils/cli/index.js +37 -4
  27. package/dist/cjs/utils/cli/index.js.map +1 -1
  28. package/dist/cjs/utils/cli/utils/cli.helpers.js +1 -1
  29. package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js +70 -37
  30. package/dist/cjs/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -1
  31. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +556 -0
  32. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +1 -0
  33. package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js +327 -0
  34. package/dist/cjs/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +1 -0
  35. package/dist/cjs/utils/cli/utils/template-generators.js +14 -8
  36. package/dist/cjs/utils/cli/utils/template-generators.js.map +1 -1
  37. package/dist/cjs/utils/dynamic-loader.js +2 -2
  38. package/dist/cjs/utils/dynamic-loader.js.map +1 -1
  39. package/dist/cjs/utils/helpers/routers.helpers.js +2 -3
  40. package/dist/cjs/utils/helpers/routers.helpers.js.map +1 -1
  41. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js +5 -5
  42. package/dist/cjs/utils/prisma/prisma-json-schema-generator.js.map +1 -1
  43. package/dist/esm/modules/auth/auth.controller.js +13 -0
  44. package/dist/esm/modules/auth/auth.controller.js.map +1 -1
  45. package/dist/esm/modules/auth/auth.service.js +40 -14
  46. package/dist/esm/modules/auth/auth.service.js.map +1 -1
  47. package/dist/esm/modules/auth/utils/services/auth-action.service.js +1 -1
  48. package/dist/esm/modules/auth/utils/services/auth-action.service.js.map +1 -1
  49. package/dist/esm/modules/base/base.middlewares.js +6 -4
  50. package/dist/esm/modules/base/base.middlewares.js.map +1 -1
  51. package/dist/esm/modules/base/utils/error-prettifier.js +181 -0
  52. package/dist/esm/modules/base/utils/error-prettifier.js.map +1 -0
  53. package/dist/esm/modules/email/email.service.js +4 -1
  54. package/dist/esm/modules/email/email.service.js.map +1 -1
  55. package/dist/esm/modules/error-handler/error-handler.controller.js.map +1 -1
  56. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js +9 -3
  57. package/dist/esm/modules/error-handler/utils/error-handler.helpers.js.map +1 -1
  58. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js +3 -0
  59. package/dist/esm/modules/swagger/utils/helpers/missing-json-schemas-generator.js.map +1 -1
  60. package/dist/esm/types/auth.js.map +1 -1
  61. package/dist/esm/utils/arkos-router/index.js +8 -2
  62. package/dist/esm/utils/arkos-router/index.js.map +1 -1
  63. package/dist/esm/utils/arkos-router/types/index.js.map +1 -1
  64. package/dist/esm/utils/arkos-router/utils/helpers/index.js +50 -0
  65. package/dist/esm/utils/arkos-router/utils/helpers/index.js.map +1 -1
  66. package/dist/esm/utils/cli/generate.js +38 -0
  67. package/dist/esm/utils/cli/generate.js.map +1 -1
  68. package/dist/esm/utils/cli/index.js +37 -4
  69. package/dist/esm/utils/cli/index.js.map +1 -1
  70. package/dist/esm/utils/cli/utils/cli.helpers.js +1 -1
  71. package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js +70 -37
  72. package/dist/esm/utils/cli/utils/template-generator/templates/auth-configs-template.js.map +1 -1
  73. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js +549 -0
  74. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator-dto-generator.js.map +1 -0
  75. package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js +320 -0
  76. package/dist/esm/utils/cli/utils/template-generator/templates/zod-schema-generator.js.map +1 -0
  77. package/dist/esm/utils/cli/utils/template-generators.js +14 -8
  78. package/dist/esm/utils/cli/utils/template-generators.js.map +1 -1
  79. package/dist/esm/utils/dynamic-loader.js +2 -2
  80. package/dist/esm/utils/dynamic-loader.js.map +1 -1
  81. package/dist/esm/utils/helpers/routers.helpers.js +2 -3
  82. package/dist/esm/utils/helpers/routers.helpers.js.map +1 -1
  83. package/dist/esm/utils/prisma/prisma-json-schema-generator.js +5 -5
  84. package/dist/esm/utils/prisma/prisma-json-schema-generator.js.map +1 -1
  85. package/dist/types/modules/auth/auth.service.d.ts +5 -0
  86. package/dist/types/modules/auth/utils/services/auth-action.service.d.ts +1 -1
  87. package/dist/types/modules/base/utils/error-prettifier.d.ts +19 -0
  88. package/dist/types/modules/email/email.service.d.ts +4 -8
  89. package/dist/types/types/auth.d.ts +3 -3
  90. package/dist/types/utils/arkos-router/index.d.ts +3 -1
  91. package/dist/types/utils/arkos-router/types/index.d.ts +2 -2
  92. package/dist/types/utils/arkos-router/utils/helpers/index.d.ts +4 -0
  93. package/dist/types/utils/cli/generate.d.ts +4 -0
  94. package/dist/types/utils/cli/utils/template-generator/templates/auth-configs-template.d.ts +3 -1
  95. package/dist/types/utils/cli/utils/template-generator/templates/class-validator-dto-generator.d.ts +18 -0
  96. package/dist/types/utils/cli/utils/template-generator/templates/zod-schema-generator.d.ts +14 -0
  97. package/dist/types/utils/helpers/routers.helpers.d.ts +1 -1
  98. package/package.json +1 -1
  99. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js +0 -187
  100. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js.map +0 -1
  101. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js +0 -181
  102. package/dist/cjs/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js.map +0 -1
  103. package/dist/cjs/utils/cli/utils/template-generator/templates/zod/create-schema-template.js +0 -106
  104. package/dist/cjs/utils/cli/utils/template-generator/templates/zod/create-schema-template.js.map +0 -1
  105. package/dist/cjs/utils/cli/utils/template-generator/templates/zod/update-schema-template.js +0 -104
  106. package/dist/cjs/utils/cli/utils/template-generator/templates/zod/update-schema-template.js.map +0 -1
  107. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js +0 -181
  108. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.js.map +0 -1
  109. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js +0 -175
  110. package/dist/esm/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.js.map +0 -1
  111. package/dist/esm/utils/cli/utils/template-generator/templates/zod/create-schema-template.js +0 -100
  112. package/dist/esm/utils/cli/utils/template-generator/templates/zod/create-schema-template.js.map +0 -1
  113. package/dist/esm/utils/cli/utils/template-generator/templates/zod/update-schema-template.js +0 -98
  114. package/dist/esm/utils/cli/utils/template-generator/templates/zod/update-schema-template.js.map +0 -1
  115. package/dist/types/utils/cli/utils/template-generator/templates/class-validator/create-dto-template.d.ts +0 -2
  116. package/dist/types/utils/cli/utils/template-generator/templates/class-validator/update-dto-template.d.ts +0 -2
  117. package/dist/types/utils/cli/utils/template-generator/templates/zod/create-schema-template.d.ts +0 -2
  118. package/dist/types/utils/cli/utils/template-generator/templates/zod/update-schema-template.d.ts +0 -2
@@ -4,54 +4,87 @@ exports.generateAuthConfigsTemplate = generateAuthConfigsTemplate;
4
4
  const fs_helpers_1 = require("../../../../helpers/fs.helpers");
5
5
  const text_helpers_1 = require("../../../../helpers/text.helpers");
6
6
  function generateAuthConfigsTemplate(options) {
7
- const { modelName } = options;
7
+ const { modelName, advanced = false } = options;
8
8
  const ext = (0, fs_helpers_1.getUserFileExtension)();
9
9
  const isTypeScript = ext === "ts";
10
10
  if (!modelName)
11
11
  throw new Error("Module name is required for auth config template");
12
+ const modelNameCapitalized = (0, text_helpers_1.capitalize)(modelName.kebab.replaceAll("-", " "));
13
+ const modelNameSpaced = modelName.kebab.replaceAll("-", " ");
12
14
  const imports = isTypeScript
13
15
  ? `import { AuthConfigs } from 'arkos/auth';\n`
14
16
  : "";
15
- const typeAnnotation = isTypeScript ? `: AuthConfigs` : "";
16
- return `${imports}
17
- import { authService } from "arkos/services";
17
+ const typeSatisfies = isTypeScript
18
+ ? ` as const satisfies AuthConfigs["accessControl"]`
19
+ : "";
20
+ const helperFunction = advanced
21
+ ? ``
22
+ : `
23
+ function create${modelName.pascal}Permission(action: string) {
24
+ return authService.permission(action, "${modelName.kebab}", ${modelName.camel}AccessControl);
25
+ }`;
26
+ const permissions = advanced
27
+ ? `
28
+ export const ${modelName.camel}Permissions = Object.keys(${modelName.camel}AccessControl).reduce(
29
+ (acc, key) => {
30
+ acc[\`can\${key}\` as const] = authService.permission(
31
+ key,
32
+ "${modelName.kebab}",
33
+ ${modelName.camel}AccessControl
34
+ );
35
+ return acc;
36
+ },
37
+ {} as Record<string, ReturnType<typeof authService.permission>>
38
+ )${isTypeScript
39
+ ? ` as {
40
+ [K in keyof typeof ${modelName.camel}AccessControl as \`can\${K & string}\`]: ReturnType<
41
+ typeof authService.permission
42
+ >;
43
+ }`
44
+ : ""};`
45
+ : `export const ${modelName.camel}Permissions = {
46
+ canCreate: create${modelName.pascal}Permission("Create"),
47
+ canUpdate: create${modelName.pascal}Permission("Update"),
48
+ canDelete: create${modelName.pascal}Permission("Delete"),
49
+ canView: create${modelName.pascal}Permission("View"),
50
+ };`;
51
+ return `${imports}import { authService } from "arkos/services";
18
52
 
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
- }
53
+ export const ${modelName.camel}AuthenticationControl = {
54
+ Create: true,
55
+ Update: true,
56
+ Delete: true,
57
+ View: true,
58
+ };
25
59
 
26
- const ${modelName.camel}AuthConfigs${typeAnnotation} = {
27
- authenticationControl: {
28
- Create: true,
29
- Update: true,
30
- Delete: true,
31
- View: true,
60
+ export const ${modelName.camel}AccessControl = {
61
+ Create: {
62
+ roles: [],
63
+ name: "Create ${modelNameCapitalized}",
64
+ description: "Permission to create new ${modelNameSpaced} records",
32
65
  },
33
- accessControl: {
34
- // Create: {
35
- // roles: [],
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: [],
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: [],
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: [],
51
- // name: "View ${(0, text_helpers_1.capitalize)(modelName.kebab.replaceAll("-", ""))}",
52
- // description: "Permission to view ${modelName.kebab.replaceAll("-", " ")} records"
53
- // },
66
+ Update: {
67
+ roles: [],
68
+ name: "Update ${modelNameCapitalized}",
69
+ description: "Permission to update existing ${modelNameSpaced} records",
54
70
  },
71
+ Delete: {
72
+ roles: [],
73
+ name: "Delete ${modelNameCapitalized}",
74
+ description: "Permission to delete ${modelNameSpaced} records",
75
+ },
76
+ View: {
77
+ roles: [],
78
+ name: "View ${modelNameCapitalized}",
79
+ description: "Permission to view ${modelNameSpaced} records",
80
+ },
81
+ }${typeSatisfies};
82
+ ${helperFunction}
83
+ ${permissions}
84
+
85
+ const ${modelName.camel}AuthConfigs${isTypeScript ? ": AuthConfigs" : ""} = {
86
+ authenticationControl: ${modelName.camel}AuthenticationControl,
87
+ accessControl: ${modelName.camel}AccessControl,
55
88
  };
56
89
 
57
90
  export default ${modelName.camel}AuthConfigs;
@@ -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":";;AAIA,kEAyDC;AA7DD,+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,kDAAkD,CAAC,CAAC;IAEtE,MAAM,OAAO,GAAG,YAAY;QAC1B,CAAC,CAAC,6CAA6C;QAC/C,CAAC,CAAC,EAAE,CAAC;IAEP,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;;;;;;;;;;yBAU1B,IAAA,yBAAU,EAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;kDACtB,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;;;;yBAI7D,IAAA,yBAAU,EAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;uDACjB,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;;;;yBAIlE,IAAA,yBAAU,EAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;8CAC1B,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;;;;uBAI3D,IAAA,yBAAU,EAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;4CAC1B,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC;;;;;iBAK/D,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(\"Module name is required for auth config template\");\n\n const imports = isTypeScript\n ? `import { AuthConfigs } from 'arkos/auth';\\n`\n : \"\";\n\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: [],\n // name: \"Create ${capitalize(modelName.kebab.replaceAll(\"-\", \"\"))}\",\n // description: \"Permission to create new ${modelName.kebab.replaceAll(\"-\", \" \")} records\"\n // },\n // Update: {\n // roles: [],\n // name: \"Update ${capitalize(modelName.kebab.replaceAll(\"-\", \"\"))}\",\n // description: \"Permission to update existing ${modelName.kebab.replaceAll(\"-\", \" \")} records\"\n // },\n // Delete: {\n // roles: [],\n // name: \"Delete ${capitalize(modelName.kebab.replaceAll(\"-\", \"\"))}\",\n // description: \"Permission to delete ${modelName.kebab.replaceAll(\"-\", \" \")} records\"\n // },\n // View: {\n // roles: [],\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"]}
1
+ {"version":3,"file":"auth-configs-template.js","sourceRoot":"","sources":["../../../../../../../src/utils/cli/utils/template-generator/templates/auth-configs-template.ts"],"names":[],"mappings":";;AAIA,kEAiGC;AArGD,+DAAsE;AACtE,mEAA8D;AAG9D,SAAgB,2BAA2B,CACzC,OAAiD;IAEjD,MAAM,EAAE,SAAS,EAAE,QAAQ,GAAG,KAAK,EAAE,GAAG,OAAO,CAAC;IAChD,MAAM,GAAG,GAAG,IAAA,iCAAoB,GAAE,CAAC;IACnC,MAAM,YAAY,GAAG,GAAG,KAAK,IAAI,CAAC;IAElC,IAAI,CAAC,SAAS;QACZ,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IAEtE,MAAM,oBAAoB,GAAG,IAAA,yBAAU,EAAC,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC,CAAC;IAC9E,MAAM,eAAe,GAAG,SAAS,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,CAAC;IAE7D,MAAM,OAAO,GAAG,YAAY;QAC1B,CAAC,CAAC,6CAA6C;QAC/C,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,aAAa,GAAG,YAAY;QAChC,CAAC,CAAC,kDAAkD;QACpD,CAAC,CAAC,EAAE,CAAC;IAEP,MAAM,cAAc,GAAG,QAAQ;QAC7B,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC;iBACW,SAAS,CAAC,MAAM;2CACU,SAAS,CAAC,KAAK,MAAM,SAAS,CAAC,KAAK;EAC7E,CAAC;IAED,MAAM,WAAW,GAAG,QAAQ;QAC1B,CAAC,CAAC;eACS,SAAS,CAAC,KAAK,6BAA6B,SAAS,CAAC,KAAK;;;;SAIjE,SAAS,CAAC,KAAK;QAChB,SAAS,CAAC,KAAK;;;;;GAMf,YAAY;YACV,CAAC,CAAC;uBACW,SAAS,CAAC,KAAK;;;EAGpC;YACQ,CAAC,CAAC,EACN,GAAG;QACL,CAAC,CAAC,gBAAgB,SAAS,CAAC,KAAK;qBAChB,SAAS,CAAC,MAAM;qBAChB,SAAS,CAAC,MAAM;qBAChB,SAAS,CAAC,MAAM;mBAClB,SAAS,CAAC,MAAM;GAChC,CAAC;IAEF,OAAO,GAAG,OAAO;;eAEJ,SAAS,CAAC,KAAK;;;;;;;eAOf,SAAS,CAAC,KAAK;;;oBAGV,oBAAoB;6CACK,eAAe;;;;oBAIxC,oBAAoB;kDACU,eAAe;;;;oBAI7C,oBAAoB;yCACC,eAAe;;;;kBAItC,oBAAoB;uCACC,eAAe;;GAEnD,aAAa;EACd,cAAc;EACd,WAAW;;QAEL,SAAS,CAAC,KAAK,cAAc,YAAY,CAAC,CAAC,CAAC,eAAe,CAAC,CAAC,CAAC,EAAE;2BAC7C,SAAS,CAAC,KAAK;mBACvB,SAAS,CAAC,KAAK;;;iBAGjB,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(\n options: TemplateOptions & { advanced?: boolean }\n): string {\n const { modelName, advanced = false } = options;\n const ext = getUserFileExtension();\n const isTypeScript = ext === \"ts\";\n\n if (!modelName)\n throw new Error(\"Module name is required for auth config template\");\n\n const modelNameCapitalized = capitalize(modelName.kebab.replaceAll(\"-\", \" \"));\n const modelNameSpaced = modelName.kebab.replaceAll(\"-\", \" \");\n\n const imports = isTypeScript\n ? `import { AuthConfigs } from 'arkos/auth';\\n`\n : \"\";\n\n const typeSatisfies = isTypeScript\n ? ` as const satisfies AuthConfigs[\"accessControl\"]`\n : \"\";\n\n const helperFunction = advanced\n ? ``\n : `\nfunction create${modelName.pascal}Permission(action: string) {\n return authService.permission(action, \"${modelName.kebab}\", ${modelName.camel}AccessControl);\n}`;\n\n const permissions = advanced\n ? `\nexport const ${modelName.camel}Permissions = Object.keys(${modelName.camel}AccessControl).reduce(\n (acc, key) => {\n acc[\\`can\\${key}\\` as const] = authService.permission(\n key,\n \"${modelName.kebab}\",\n ${modelName.camel}AccessControl\n );\n return acc;\n },\n {} as Record<string, ReturnType<typeof authService.permission>>\n)${\n isTypeScript\n ? ` as {\n [K in keyof typeof ${modelName.camel}AccessControl as \\`can\\${K & string}\\`]: ReturnType<\n typeof authService.permission\n >;\n}`\n : \"\"\n };`\n : `export const ${modelName.camel}Permissions = {\n canCreate: create${modelName.pascal}Permission(\"Create\"),\n canUpdate: create${modelName.pascal}Permission(\"Update\"),\n canDelete: create${modelName.pascal}Permission(\"Delete\"),\n canView: create${modelName.pascal}Permission(\"View\"),\n};`;\n\n return `${imports}import { authService } from \"arkos/services\";\n\nexport const ${modelName.camel}AuthenticationControl = {\n Create: true,\n Update: true,\n Delete: true,\n View: true,\n};\n\nexport const ${modelName.camel}AccessControl = {\n Create: {\n roles: [],\n name: \"Create ${modelNameCapitalized}\",\n description: \"Permission to create new ${modelNameSpaced} records\",\n },\n Update: {\n roles: [],\n name: \"Update ${modelNameCapitalized}\",\n description: \"Permission to update existing ${modelNameSpaced} records\",\n },\n Delete: {\n roles: [],\n name: \"Delete ${modelNameCapitalized}\",\n description: \"Permission to delete ${modelNameSpaced} records\",\n },\n View: {\n roles: [],\n name: \"View ${modelNameCapitalized}\",\n description: \"Permission to view ${modelNameSpaced} records\",\n },\n}${typeSatisfies};\n${helperFunction}\n${permissions}\n\nconst ${modelName.camel}AuthConfigs${isTypeScript ? \": AuthConfigs\" : \"\"} = {\n authenticationControl: ${modelName.camel}AuthenticationControl,\n accessControl: ${modelName.camel}AccessControl,\n};\n\nexport default ${modelName.camel}AuthConfigs;\n`;\n}\n"]}