@venizia/ignis-kernel 0.4.7-0 → 0.4.7-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 (161) hide show
  1. package/LICENSE.md +1 -4
  2. package/dist/esm/base/applications/cors.d.ts +12 -10
  3. package/dist/esm/base/applications/cors.d.ts.map +1 -1
  4. package/dist/esm/base/applications/cors.js +37 -35
  5. package/dist/esm/base/applications/cors.js.map +1 -1
  6. package/dist/esm/base/applications/rest.js +11 -11
  7. package/dist/esm/base/applications/rest.js.map +1 -1
  8. package/dist/esm/base/auth/authenticate/common/codecs.js +2 -2
  9. package/dist/esm/base/auth/authenticate/common/codecs.js.map +1 -1
  10. package/dist/esm/base/auth/authenticate/strategies/strategy-registry.d.ts +1 -1
  11. package/dist/esm/base/auth/authenticate/strategies/strategy-registry.js +1 -1
  12. package/dist/esm/base/auth/authenticate/strategies/strategy-registry.js.map +1 -1
  13. package/dist/esm/base/auth/authorize/providers/authorization.provider.js +7 -7
  14. package/dist/esm/base/auth/authorize/providers/authorization.provider.js.map +1 -1
  15. package/dist/esm/base/auth/authorize/providers/request-domain.d.ts +14 -11
  16. package/dist/esm/base/auth/authorize/providers/request-domain.d.ts.map +1 -1
  17. package/dist/esm/base/auth/authorize/providers/request-domain.js +42 -39
  18. package/dist/esm/base/auth/authorize/providers/request-domain.js.map +1 -1
  19. package/dist/esm/base/auth/base/abstract-auth-registry.js +2 -2
  20. package/dist/esm/base/auth/base/abstract-auth-registry.js.map +1 -1
  21. package/dist/esm/base/auth/models/requests/change-password.schema.js +3 -3
  22. package/dist/esm/base/auth/models/requests/change-password.schema.js.map +1 -1
  23. package/dist/esm/base/auth/models/requests/sign-in.schema.js +5 -5
  24. package/dist/esm/base/auth/models/requests/sign-in.schema.js.map +1 -1
  25. package/dist/esm/base/components/controller/rest/rest.component.js +2 -2
  26. package/dist/esm/base/components/controller/rest/rest.component.js.map +1 -1
  27. package/dist/esm/base/controllers/common/index.d.ts +0 -1
  28. package/dist/esm/base/controllers/common/index.d.ts.map +1 -1
  29. package/dist/esm/base/controllers/common/index.js +0 -1
  30. package/dist/esm/base/controllers/common/index.js.map +1 -1
  31. package/dist/esm/base/controllers/common/schema-builders.d.ts +0 -5
  32. package/dist/esm/base/controllers/common/schema-builders.d.ts.map +1 -1
  33. package/dist/esm/base/controllers/common/schema-builders.js +0 -14
  34. package/dist/esm/base/controllers/common/schema-builders.js.map +1 -1
  35. package/dist/esm/base/controllers/context.d.ts +7 -2
  36. package/dist/esm/base/controllers/context.d.ts.map +1 -1
  37. package/dist/esm/base/controllers/context.js +7 -4
  38. package/dist/esm/base/controllers/context.js.map +1 -1
  39. package/dist/esm/base/controllers/factory/controller.d.ts +33 -1
  40. package/dist/esm/base/controllers/factory/controller.d.ts.map +1 -1
  41. package/dist/esm/base/controllers/factory/controller.js +90 -6
  42. package/dist/esm/base/controllers/factory/controller.js.map +1 -1
  43. package/dist/esm/base/controllers/factory/definition.d.ts +1 -8
  44. package/dist/esm/base/controllers/factory/definition.d.ts.map +1 -1
  45. package/dist/esm/base/controllers/factory/definition.js +17 -24
  46. package/dist/esm/base/controllers/factory/definition.js.map +1 -1
  47. package/dist/esm/base/controllers/factory/index.d.ts +0 -1
  48. package/dist/esm/base/controllers/factory/index.d.ts.map +1 -1
  49. package/dist/esm/base/controllers/factory/index.js +0 -1
  50. package/dist/esm/base/controllers/factory/index.js.map +1 -1
  51. package/dist/esm/base/controllers/rest/abstract.d.ts.map +1 -1
  52. package/dist/esm/base/controllers/rest/abstract.js +6 -6
  53. package/dist/esm/base/controllers/rest/abstract.js.map +1 -1
  54. package/dist/esm/base/controllers/rest/base.d.ts +0 -5
  55. package/dist/esm/base/controllers/rest/base.d.ts.map +1 -1
  56. package/dist/esm/base/controllers/rest/base.js +14 -14
  57. package/dist/esm/base/controllers/rest/base.js.map +1 -1
  58. package/dist/esm/base/datasources/abstract.js +2 -2
  59. package/dist/esm/base/datasources/abstract.js.map +1 -1
  60. package/dist/esm/base/events/event-bus.js +4 -4
  61. package/dist/esm/base/events/event-bus.js.map +1 -1
  62. package/dist/esm/base/metadata/injectable.d.ts +7 -4
  63. package/dist/esm/base/metadata/injectable.d.ts.map +1 -1
  64. package/dist/esm/base/metadata/injectable.js +26 -23
  65. package/dist/esm/base/metadata/injectable.js.map +1 -1
  66. package/dist/esm/base/metadata/model-metadata.d.ts +27 -13
  67. package/dist/esm/base/metadata/model-metadata.d.ts.map +1 -1
  68. package/dist/esm/base/metadata/model-metadata.js +56 -26
  69. package/dist/esm/base/metadata/model-metadata.js.map +1 -1
  70. package/dist/esm/base/metadata/persistents.d.ts.map +1 -1
  71. package/dist/esm/base/metadata/persistents.js +21 -13
  72. package/dist/esm/base/metadata/persistents.js.map +1 -1
  73. package/dist/esm/base/metadata/routes/controller.d.ts.map +1 -1
  74. package/dist/esm/base/metadata/routes/controller.js +5 -2
  75. package/dist/esm/base/metadata/routes/controller.js.map +1 -1
  76. package/dist/esm/base/middlewares/app-error/app-error.middleware.js +7 -7
  77. package/dist/esm/base/middlewares/app-error/app-error.middleware.js.map +1 -1
  78. package/dist/esm/base/middlewares/app-error/database.handler.d.ts +14 -12
  79. package/dist/esm/base/middlewares/app-error/database.handler.d.ts.map +1 -1
  80. package/dist/esm/base/middlewares/app-error/database.handler.js +37 -35
  81. package/dist/esm/base/middlewares/app-error/database.handler.js.map +1 -1
  82. package/dist/esm/base/middlewares/app-error/zod.handler.d.ts +28 -23
  83. package/dist/esm/base/middlewares/app-error/zod.handler.d.ts.map +1 -1
  84. package/dist/esm/base/middlewares/app-error/zod.handler.js +56 -53
  85. package/dist/esm/base/middlewares/app-error/zod.handler.js.map +1 -1
  86. package/dist/esm/base/middlewares/emoji-favicon/emoji-favicon.middleware.d.ts +6 -4
  87. package/dist/esm/base/middlewares/emoji-favicon/emoji-favicon.middleware.d.ts.map +1 -1
  88. package/dist/esm/base/middlewares/emoji-favicon/emoji-favicon.middleware.js +14 -12
  89. package/dist/esm/base/middlewares/emoji-favicon/emoji-favicon.middleware.js.map +1 -1
  90. package/dist/esm/base/middlewares/form-body/form-body.middleware.d.ts +15 -11
  91. package/dist/esm/base/middlewares/form-body/form-body.middleware.d.ts.map +1 -1
  92. package/dist/esm/base/middlewares/form-body/form-body.middleware.js +25 -21
  93. package/dist/esm/base/middlewares/form-body/form-body.middleware.js.map +1 -1
  94. package/dist/esm/base/models/common/schemas.d.ts +184 -105
  95. package/dist/esm/base/models/common/schemas.d.ts.map +1 -1
  96. package/dist/esm/base/models/common/schemas.js +105 -54
  97. package/dist/esm/base/models/common/schemas.js.map +1 -1
  98. package/dist/esm/base/models/common/utilities.d.ts +10 -5
  99. package/dist/esm/base/models/common/utilities.d.ts.map +1 -1
  100. package/dist/esm/base/models/common/utilities.js +22 -16
  101. package/dist/esm/base/models/common/utilities.js.map +1 -1
  102. package/dist/esm/base/repositories/common/types/results.d.ts +15 -7
  103. package/dist/esm/base/repositories/common/types/results.d.ts.map +1 -1
  104. package/dist/esm/base/repositories/common/types/results.js +16 -7
  105. package/dist/esm/base/repositories/common/types/results.js.map +1 -1
  106. package/dist/esm/base/repositories/core/abstract.d.ts.map +1 -1
  107. package/dist/esm/base/repositories/core/abstract.js +5 -3
  108. package/dist/esm/base/repositories/core/abstract.js.map +1 -1
  109. package/dist/esm/base/repositories/query-schemas/index.d.ts +1 -1
  110. package/dist/esm/base/repositories/query-schemas/index.d.ts.map +1 -1
  111. package/dist/esm/base/repositories/query-schemas/index.js +3 -3
  112. package/dist/esm/base/repositories/query-schemas/index.js.map +1 -1
  113. package/dist/esm/helpers/inversion/common/relation-builder.js.map +1 -1
  114. package/dist/esm/helpers/inversion/index.d.ts +1 -1
  115. package/dist/esm/helpers/inversion/index.d.ts.map +1 -1
  116. package/dist/esm/helpers/inversion/index.js +1 -1
  117. package/dist/esm/helpers/inversion/index.js.map +1 -1
  118. package/dist/esm/helpers/inversion/mixins/repository.mixin.d.ts.map +1 -1
  119. package/dist/esm/helpers/inversion/mixins/repository.mixin.js +5 -5
  120. package/dist/esm/helpers/inversion/mixins/repository.mixin.js.map +1 -1
  121. package/dist/esm/metadata.d.ts +1 -1
  122. package/dist/esm/metadata.d.ts.map +1 -1
  123. package/dist/esm/metadata.js +1 -1
  124. package/dist/esm/metadata.js.map +1 -1
  125. package/dist/esm/repository.d.ts +2 -2
  126. package/dist/esm/repository.d.ts.map +1 -1
  127. package/dist/esm/repository.js +2 -2
  128. package/dist/esm/repository.js.map +1 -1
  129. package/dist/esm/utilities/index.d.ts +1 -1
  130. package/dist/esm/utilities/index.d.ts.map +1 -1
  131. package/dist/esm/utilities/index.js +1 -1
  132. package/dist/esm/utilities/index.js.map +1 -1
  133. package/dist/esm/utilities/not-supported.utility.d.ts +11 -0
  134. package/dist/esm/utilities/not-supported.utility.d.ts.map +1 -0
  135. package/dist/esm/utilities/not-supported.utility.js +19 -0
  136. package/dist/esm/utilities/not-supported.utility.js.map +1 -0
  137. package/package.json +6 -7
  138. package/dist/esm/base/controllers/common/html-response.d.ts +0 -70
  139. package/dist/esm/base/controllers/common/html-response.d.ts.map +0 -1
  140. package/dist/esm/base/controllers/common/html-response.js +0 -30
  141. package/dist/esm/base/controllers/common/html-response.js.map +0 -1
  142. package/dist/esm/base/controllers/factory/authorize-guard.d.ts +0 -19
  143. package/dist/esm/base/controllers/factory/authorize-guard.d.ts.map +0 -1
  144. package/dist/esm/base/controllers/factory/authorize-guard.js +0 -56
  145. package/dist/esm/base/controllers/factory/authorize-guard.js.map +0 -1
  146. package/dist/esm/base/controllers/factory/helper.d.ts +0 -2
  147. package/dist/esm/base/controllers/factory/helper.d.ts.map +0 -1
  148. package/dist/esm/base/controllers/factory/helper.js +0 -2
  149. package/dist/esm/base/controllers/factory/helper.js.map +0 -1
  150. package/dist/esm/base/controllers/factory/repository-injection.d.ts +0 -14
  151. package/dist/esm/base/controllers/factory/repository-injection.d.ts.map +0 -1
  152. package/dist/esm/base/controllers/factory/repository-injection.js +0 -27
  153. package/dist/esm/base/controllers/factory/repository-injection.js.map +0 -1
  154. package/dist/esm/base/metadata/model-settings.d.ts +0 -11
  155. package/dist/esm/base/metadata/model-settings.d.ts.map +0 -1
  156. package/dist/esm/base/metadata/model-settings.js +0 -30
  157. package/dist/esm/base/metadata/model-settings.js.map +0 -1
  158. package/dist/esm/utilities/error.utility.d.ts +0 -8
  159. package/dist/esm/utilities/error.utility.d.ts.map +0 -1
  160. package/dist/esm/utilities/error.utility.js +0 -14
  161. package/dist/esm/utilities/error.utility.js.map +0 -1
@@ -1,56 +0,0 @@
1
- import { AuthorizationActions } from '../../auth/authorize/common/constants/index.js';
2
- import { getError } from '@venizia/ignis-helpers/core';
3
- /** The generated routes that change data: the ones that must never be answered by a `read` permission. */
4
- const WRITE_VERBS = ['create', 'updateById', 'updateBy', 'deleteById', 'deleteBy'];
5
- const describeSpec = (spec) => {
6
- return `{ action: ${String(spec.action)}, resource: ${String(spec.resource)} }`;
7
- };
8
- /**
9
- * Refuses a CRUD controller whose enabled write verb would inherit a controller-level `authorize`
10
- * that is only a `read` permission: the verb would then answer to anyone who may read.
11
- *
12
- * A write verb is fine when it declares its own `authorize` (a spec, an array, or `{ skip: true }`),
13
- * skips authentication, is not enabled, or the controller is `readonly`. Only the literal action
14
- * `read` is detected; a custom action name is the application's own vocabulary. An array counts when
15
- * every spec in it is `read`, since the specs of one route must all pass.
16
- */
17
- export const assertWriteVerbsDeclareAuthorize = (opts) => {
18
- const { controllerName, authorize, routes, readonly, enabledRoutes } = opts;
19
- if (readonly || authorize == null) {
20
- return;
21
- }
22
- const specs = Array.isArray(authorize) ? authorize : [authorize];
23
- const isReadOnlyPermission = specs.length > 0 && specs.every((spec) => spec.action === AuthorizationActions.READ);
24
- if (!isReadOnlyPermission) {
25
- return;
26
- }
27
- const offending = WRITE_VERBS.filter((verb) => {
28
- const isEnabled = enabledRoutes
29
- ? enabledRoutes.includes(verb)
30
- : routes?.[verb]?.enabled !== false;
31
- if (!isEnabled) {
32
- return false;
33
- }
34
- const route = routes?.[verb];
35
- return route?.authenticate?.skip !== true && route?.authorize == null;
36
- });
37
- if (offending.length === 0) {
38
- return;
39
- }
40
- const inherited = specs.map(describeSpec).join(', ');
41
- const verbs = offending.map((verb) => `${controllerName}.${verb}`).join(', ');
42
- const hasBulkVerb = offending.some((verb) => verb === 'updateBy' || verb === 'deleteBy');
43
- throw getError({
44
- message: [
45
- `[defineCrudController] Write routes would inherit a read-only authorize | controller: ${controllerName} | routes: ${verbs} | inherited: ${inherited}`,
46
- 'Anyone allowed to read could then create, update or delete.',
47
- `Fix: declare routes.<verb>.authorize for each of them (a spec, an array or { skip: true }), or set controller.readonly, or leave them out of controller.enabledRoutes.`,
48
- ...(hasBulkVerb
49
- ? [
50
- 'updateBy and deleteBy are bulk routes on the collection and are generated unless controller.enabledRoutes lists the routes you want, so dropping them there closes this too.',
51
- ]
52
- : []),
53
- ].join(' | '),
54
- });
55
- };
56
- //# sourceMappingURL=authorize-guard.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"authorize-guard.js","sourceRoot":"","sources":["../../../../../src/base/controllers/factory/authorize-guard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,wCAAwC,CAAC;AAE9E,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAGvD,0GAA0G;AAC1G,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,YAAY,EAAE,UAAU,CAAU,CAAC;AAE5F,MAAM,YAAY,GAAG,CAAC,IAAwB,EAAU,EAAE;IACxD,OAAO,aAAa,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC;AAClF,CAAC,CAAC;AAEF;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,gCAAgC,GAAG,CAAC,IAMhD,EAAQ,EAAE;IACT,MAAM,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,aAAa,EAAE,GAAG,IAAI,CAAC;IAE5E,IAAI,QAAQ,IAAI,SAAS,IAAI,IAAI,EAAE,CAAC;QAClC,OAAO;IACT,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IACjE,MAAM,oBAAoB,GACxB,KAAK,CAAC,MAAM,GAAG,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,KAAK,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAEvF,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC1B,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;QAC5C,MAAM,SAAS,GAAG,aAAa;YAC7B,CAAC,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC9B,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,OAAO,KAAK,KAAK,CAAC;QACtC,IAAI,CAAC,SAAS,EAAE,CAAC;YACf,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,IAAI,CAAC,CAAC;QAC7B,OAAO,KAAK,EAAE,YAAY,EAAE,IAAI,KAAK,IAAI,IAAI,KAAK,EAAE,SAAS,IAAI,IAAI,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACrD,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,GAAG,cAAc,IAAI,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC9E,MAAM,WAAW,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC;IAEzF,MAAM,QAAQ,CAAC;QACb,OAAO,EAAE;YACP,yFAAyF,cAAc,cAAc,KAAK,iBAAiB,SAAS,EAAE;YACtJ,6DAA6D;YAC7D,wKAAwK;YACxK,GAAG,CAAC,WAAW;gBACb,CAAC,CAAC;oBACE,8KAA8K;iBAC/K;gBACH,CAAC,CAAC,EAAE,CAAC;SACR,CAAC,IAAI,CAAC,KAAK,CAAC;KACd,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { AuthorizationActions } from '@/base/auth/authorize/common/constants';\nimport type { IAuthorizationSpec } from '@/base/auth/authorize/common/types';\nimport { getError } from '@venizia/ignis-helpers/core';\nimport type { ICustomizableRoutes } from '../common';\n\n/** The generated routes that change data: the ones that must never be answered by a `read` permission. */\nconst WRITE_VERBS = ['create', 'updateById', 'updateBy', 'deleteById', 'deleteBy'] as const;\n\nconst describeSpec = (spec: IAuthorizationSpec): string => {\n return `{ action: ${String(spec.action)}, resource: ${String(spec.resource)} }`;\n};\n\n/**\n * Refuses a CRUD controller whose enabled write verb would inherit a controller-level `authorize`\n * that is only a `read` permission: the verb would then answer to anyone who may read.\n *\n * A write verb is fine when it declares its own `authorize` (a spec, an array, or `{ skip: true }`),\n * skips authentication, is not enabled, or the controller is `readonly`. Only the literal action\n * `read` is detected; a custom action name is the application's own vocabulary. An array counts when\n * every spec in it is `read`, since the specs of one route must all pass.\n */\nexport const assertWriteVerbsDeclareAuthorize = (opts: {\n controllerName: string;\n authorize: IAuthorizationSpec | IAuthorizationSpec[] | undefined;\n routes: ICustomizableRoutes | undefined;\n readonly: boolean | undefined;\n enabledRoutes: Array<keyof ICustomizableRoutes> | undefined;\n}): void => {\n const { controllerName, authorize, routes, readonly, enabledRoutes } = opts;\n\n if (readonly || authorize == null) {\n return;\n }\n\n const specs = Array.isArray(authorize) ? authorize : [authorize];\n const isReadOnlyPermission =\n specs.length > 0 && specs.every((spec) => spec.action === AuthorizationActions.READ);\n\n if (!isReadOnlyPermission) {\n return;\n }\n\n const offending = WRITE_VERBS.filter((verb) => {\n const isEnabled = enabledRoutes\n ? enabledRoutes.includes(verb)\n : routes?.[verb]?.enabled !== false;\n if (!isEnabled) {\n return false;\n }\n\n const route = routes?.[verb];\n return route?.authenticate?.skip !== true && route?.authorize == null;\n });\n\n if (offending.length === 0) {\n return;\n }\n\n const inherited = specs.map(describeSpec).join(', ');\n const verbs = offending.map((verb) => `${controllerName}.${verb}`).join(', ');\n const hasBulkVerb = offending.some((verb) => verb === 'updateBy' || verb === 'deleteBy');\n\n throw getError({\n message: [\n `[defineCrudController] Write routes would inherit a read-only authorize | controller: ${controllerName} | routes: ${verbs} | inherited: ${inherited}`,\n 'Anyone allowed to read could then create, update or delete.',\n `Fix: declare routes.<verb>.authorize for each of them (a spec, an array or { skip: true }), or set controller.readonly, or leave them out of controller.enabledRoutes.`,\n ...(hasBulkVerb\n ? [\n 'updateBy and deleteBy are bulk routes on the collection and are generated unless controller.enabledRoutes lists the routes you want, so dropping them there closes this too.',\n ]\n : []),\n ].join(' | '),\n });\n};\n"]}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=helper.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helper.d.ts","sourceRoot":"","sources":["../../../../../src/base/controllers/factory/helper.ts"],"names":[],"mappings":""}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=helper.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"helper.js","sourceRoot":"","sources":["../../../../../src/base/controllers/factory/helper.ts"],"names":[],"mappings":"","sourcesContent":[""]}
@@ -1,14 +0,0 @@
1
- import type { TClass } from '@venizia/ignis-helpers/common';
2
- /**
3
- * Injects `repositories.<repositoryName>` into constructor parameter 0 of a factory-generated
4
- * controller, so a subclass needs no constructor. Recorded as metadata rather than a parameter
5
- * decorator, which Bun drops in some configurations. A subclass that declares its own `@inject` at
6
- * index 0 wins, and a sibling subclass keeps the factory's key.
7
- */
8
- export declare const registerFactoryRepositoryInjection: (opts: {
9
- target: TClass<unknown>;
10
- factoryName: string;
11
- controllerName: string;
12
- repositoryName: string;
13
- }) => void;
14
- //# sourceMappingURL=repository-injection.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"repository-injection.d.ts","sourceRoot":"","sources":["../../../../../src/base/controllers/factory/repository-injection.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,+BAA+B,CAAC;AAG5D;;;;;GAKG;AACH,eAAO,MAAM,kCAAkC,GAAI,MAAM;IACvD,MAAM,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB,KAAG,IAkBH,CAAC"}
@@ -1,27 +0,0 @@
1
- import { BindingNamespaces } from '../../../common/bindings.js';
2
- import { BindingKeys, MetadataRegistry } from '../../../helpers/inversion/index.js';
3
- import { getError } from '@venizia/ignis-helpers/core';
4
- /**
5
- * Injects `repositories.<repositoryName>` into constructor parameter 0 of a factory-generated
6
- * controller, so a subclass needs no constructor. Recorded as metadata rather than a parameter
7
- * decorator, which Bun drops in some configurations. A subclass that declares its own `@inject` at
8
- * index 0 wins, and a sibling subclass keeps the factory's key.
9
- */
10
- export const registerFactoryRepositoryInjection = (opts) => {
11
- const { target, factoryName, controllerName, repositoryName } = opts;
12
- if (!repositoryName) {
13
- throw getError({
14
- message: `[${factoryName}] Invalid repository name | controller: ${controllerName} | repository.name must name the repository binding`,
15
- });
16
- }
17
- MetadataRegistry.getInstance().setInjectMetadata({
18
- target,
19
- index: 0,
20
- metadata: {
21
- key: BindingKeys.build({ namespace: BindingNamespaces.REPOSITORY, key: repositoryName }),
22
- index: 0,
23
- isOptional: false,
24
- },
25
- });
26
- };
27
- //# sourceMappingURL=repository-injection.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"repository-injection.js","sourceRoot":"","sources":["../../../../../src/base/controllers/factory/repository-injection.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AACtD,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAEpE,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,IAKlD,EAAQ,EAAE;IACT,MAAM,EAAE,MAAM,EAAE,WAAW,EAAE,cAAc,EAAE,cAAc,EAAE,GAAG,IAAI,CAAC;IAErE,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,MAAM,QAAQ,CAAC;YACb,OAAO,EAAE,IAAI,WAAW,2CAA2C,cAAc,qDAAqD;SACvI,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB,CAAC,WAAW,EAAE,CAAC,iBAAiB,CAAC;QAC/C,MAAM;QACN,KAAK,EAAE,CAAC;QACR,QAAQ,EAAE;YACR,GAAG,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,SAAS,EAAE,iBAAiB,CAAC,UAAU,EAAE,GAAG,EAAE,cAAc,EAAE,CAAC;YACxF,KAAK,EAAE,CAAC;YACR,UAAU,EAAE,KAAK;SAClB;KACF,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { BindingNamespaces } from '@/common/bindings';\nimport { BindingKeys, MetadataRegistry } from '@/helpers/inversion';\nimport type { TClass } from '@venizia/ignis-helpers/common';\nimport { getError } from '@venizia/ignis-helpers/core';\n\n/**\n * Injects `repositories.<repositoryName>` into constructor parameter 0 of a factory-generated\n * controller, so a subclass needs no constructor. Recorded as metadata rather than a parameter\n * decorator, which Bun drops in some configurations. A subclass that declares its own `@inject` at\n * index 0 wins, and a sibling subclass keeps the factory's key.\n */\nexport const registerFactoryRepositoryInjection = (opts: {\n target: TClass<unknown>;\n factoryName: string;\n controllerName: string;\n repositoryName: string;\n}): void => {\n const { target, factoryName, controllerName, repositoryName } = opts;\n\n if (!repositoryName) {\n throw getError({\n message: `[${factoryName}] Invalid repository name | controller: ${controllerName} | repository.name must name the repository binding`,\n });\n }\n\n MetadataRegistry.getInstance().setInjectMetadata({\n target,\n index: 0,\n metadata: {\n key: BindingKeys.build({ namespace: BindingNamespaces.REPOSITORY, key: repositoryName }),\n index: 0,\n isOptional: false,\n },\n });\n};\n"]}
@@ -1,11 +0,0 @@
1
- /**
2
- * Refuses a removed `@model` settings key. A model that still says `scopeFilter` would otherwise
3
- * lose its row scope without a sound (a plain-JavaScript or `any`-typed model gets no type error),
4
- * so the decorator throws instead, naming the key to use. `devz codemod model-settings --write` rewrites
5
- * the keys.
6
- */
7
- export declare const assertNoRemovedModelSettings: (opts: {
8
- model: string;
9
- settings: object | undefined;
10
- }) => void;
11
- //# sourceMappingURL=model-settings.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-settings.d.ts","sourceRoot":"","sources":["../../../../src/base/metadata/model-settings.ts"],"names":[],"mappings":"AAUA;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GAAI,MAAM;IACjD,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC9B,KAAG,IAiBH,CAAC"}
@@ -1,30 +0,0 @@
1
- import { getError } from '@venizia/ignis-helpers/core';
2
- /** The keys 0.4.2 deprecated and 0.4.3 removed, and the key that replaces each. */
3
- const REMOVED_MODEL_SETTINGS = {
4
- defaultFilter: 'query.filter',
5
- defaultLimit: 'query.limit.default',
6
- maxLimit: 'query.limit.max',
7
- scopeFilter: 'access',
8
- };
9
- /**
10
- * Refuses a removed `@model` settings key. A model that still says `scopeFilter` would otherwise
11
- * lose its row scope without a sound (a plain-JavaScript or `any`-typed model gets no type error),
12
- * so the decorator throws instead, naming the key to use. `devz codemod model-settings --write` rewrites
13
- * the keys.
14
- */
15
- export const assertNoRemovedModelSettings = (opts) => {
16
- const { model, settings } = opts;
17
- if (!settings) {
18
- return;
19
- }
20
- const removed = Object.keys(REMOVED_MODEL_SETTINGS).filter((key) => Object.hasOwn(settings, key));
21
- if (removed.length === 0) {
22
- return;
23
- }
24
- throw getError({
25
- message: `[model][${model}] Removed settings key(s): ${removed
26
- .map((key) => `settings.${key} (use settings.${REMOVED_MODEL_SETTINGS[key]})`)
27
- .join(', ')} | removed in 0.4.3 | run 'devz codemod model-settings --write' to rewrite them`,
28
- });
29
- };
30
- //# sourceMappingURL=model-settings.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"model-settings.js","sourceRoot":"","sources":["../../../../src/base/metadata/model-settings.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,mFAAmF;AACnF,MAAM,sBAAsB,GAA2B;IACrD,aAAa,EAAE,cAAc;IAC7B,YAAY,EAAE,qBAAqB;IACnC,QAAQ,EAAE,iBAAiB;IAC3B,WAAW,EAAE,QAAQ;CACtB,CAAC;AAEF;;;;;GAKG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,CAAC,IAG5C,EAAQ,EAAE;IACT,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC;IAEjC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC;IAClG,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO;IACT,CAAC;IAED,MAAM,QAAQ,CAAC;QACb,OAAO,EAAE,WAAW,KAAK,8BAA8B,OAAO;aAC3D,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,YAAY,GAAG,kBAAkB,sBAAsB,CAAC,GAAG,CAAC,GAAG,CAAC;aAC7E,IAAI,CAAC,IAAI,CAAC,iFAAiF;KAC/F,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { getError } from '@venizia/ignis-helpers/core';\n\n/** The keys 0.4.2 deprecated and 0.4.3 removed, and the key that replaces each. */\nconst REMOVED_MODEL_SETTINGS: Record<string, string> = {\n defaultFilter: 'query.filter',\n defaultLimit: 'query.limit.default',\n maxLimit: 'query.limit.max',\n scopeFilter: 'access',\n};\n\n/**\n * Refuses a removed `@model` settings key. A model that still says `scopeFilter` would otherwise\n * lose its row scope without a sound (a plain-JavaScript or `any`-typed model gets no type error),\n * so the decorator throws instead, naming the key to use. `devz codemod model-settings --write` rewrites\n * the keys.\n */\nexport const assertNoRemovedModelSettings = (opts: {\n model: string;\n settings: object | undefined;\n}): void => {\n const { model, settings } = opts;\n\n if (!settings) {\n return;\n }\n\n const removed = Object.keys(REMOVED_MODEL_SETTINGS).filter((key) => Object.hasOwn(settings, key));\n if (removed.length === 0) {\n return;\n }\n\n throw getError({\n message: `[model][${model}] Removed settings key(s): ${removed\n .map((key) => `settings.${key} (use settings.${REMOVED_MODEL_SETTINGS[key]})`)\n .join(', ')} | removed in 0.4.3 | run 'devz codemod model-settings --write' to rewrite them`,\n });\n};\n"]}
@@ -1,8 +0,0 @@
1
- import type { ILogger } from '@venizia/ignis-helpers/core';
2
- /** Standardized NotSupported error (HTTP 501) for a capability an implementation deliberately does not provide - logs a warning before throwing so the gap shows in operational logs, not just to the caller. */
3
- export declare const throwNotSupported: (opts: {
4
- scope: string;
5
- feature: string;
6
- logger: ILogger;
7
- }) => never;
8
- //# sourceMappingURL=error.utility.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error.utility.d.ts","sourceRoot":"","sources":["../../../src/utilities/error.utility.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,6BAA6B,CAAC;AAG3D,iNAAiN;AACjN,eAAO,MAAM,iBAAiB,GAAI,MAAM;IACtC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,OAAO,CAAC;CACjB,KAAG,KAUH,CAAC"}
@@ -1,14 +0,0 @@
1
- import { CoreErrorCodes } from '../common/error-codes.js';
2
- import { HTTP } from '@venizia/ignis-helpers/common';
3
- import { getError } from '@venizia/ignis-helpers/core';
4
- /** Standardized NotSupported error (HTTP 501) for a capability an implementation deliberately does not provide - logs a warning before throwing so the gap shows in operational logs, not just to the caller. */
5
- export const throwNotSupported = (opts) => {
6
- const { scope, feature, logger } = opts;
7
- logger.for(throwNotSupported.name).warn('%s is not supported | Scope: %s', feature, scope);
8
- throw getError({
9
- statusCode: HTTP.ResultCodes.RS_5.NotImplemented,
10
- messageCode: CoreErrorCodes.NOT_SUPPORTED,
11
- message: `[${scope}] ${feature} is not supported.`,
12
- });
13
- };
14
- //# sourceMappingURL=error.utility.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"error.utility.js","sourceRoot":"","sources":["../../../src/utilities/error.utility.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAErD,OAAO,EAAE,QAAQ,EAAE,MAAM,6BAA6B,CAAC;AAEvD,iNAAiN;AACjN,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,IAIjC,EAAS,EAAE;IACV,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;IAExC,MAAM,CAAC,GAAG,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iCAAiC,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IAE3F,MAAM,QAAQ,CAAC;QACb,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc;QAChD,WAAW,EAAE,cAAc,CAAC,aAAa;QACzC,OAAO,EAAE,IAAI,KAAK,KAAK,OAAO,oBAAoB;KACnD,CAAC,CAAC;AACL,CAAC,CAAC","sourcesContent":["import { CoreErrorCodes } from '@/common/error-codes';\nimport { HTTP } from '@venizia/ignis-helpers/common';\nimport type { ILogger } from '@venizia/ignis-helpers/core';\nimport { getError } from '@venizia/ignis-helpers/core';\n\n/** Standardized NotSupported error (HTTP 501) for a capability an implementation deliberately does not provide - logs a warning before throwing so the gap shows in operational logs, not just to the caller. */\nexport const throwNotSupported = (opts: {\n scope: string;\n feature: string;\n logger: ILogger;\n}): never => {\n const { scope, feature, logger } = opts;\n\n logger.for(throwNotSupported.name).warn('%s is not supported | Scope: %s', feature, scope);\n\n throw getError({\n statusCode: HTTP.ResultCodes.RS_5.NotImplemented,\n messageCode: CoreErrorCodes.NOT_SUPPORTED,\n message: `[${scope}] ${feature} is not supported.`,\n });\n};\n"]}