@venizia/ignis-kernel 0.2.0-0 → 0.2.0-10

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 (217) hide show
  1. package/dist/cjs/base/auth/authenticate/common/constants.d.ts +28 -1
  2. package/dist/cjs/base/auth/authenticate/common/constants.d.ts.map +1 -1
  3. package/dist/cjs/base/auth/authenticate/common/constants.js +29 -2
  4. package/dist/cjs/base/auth/authenticate/common/constants.js.map +1 -1
  5. package/dist/cjs/base/auth/authenticate/common/errors.d.ts +40 -1
  6. package/dist/cjs/base/auth/authenticate/common/errors.d.ts.map +1 -1
  7. package/dist/cjs/base/auth/authenticate/common/errors.js +41 -1
  8. package/dist/cjs/base/auth/authenticate/common/errors.js.map +1 -1
  9. package/dist/cjs/base/auth/authenticate/common/keys.d.ts +2 -0
  10. package/dist/cjs/base/auth/authenticate/common/keys.d.ts.map +1 -1
  11. package/dist/cjs/base/auth/authenticate/common/keys.js +2 -0
  12. package/dist/cjs/base/auth/authenticate/common/keys.js.map +1 -1
  13. package/dist/cjs/base/auth/authenticate/common/types.d.ts +147 -1
  14. package/dist/cjs/base/auth/authenticate/common/types.d.ts.map +1 -1
  15. package/dist/cjs/base/auth/authenticate/strategies/strategy-registry.d.ts +37 -0
  16. package/dist/cjs/base/auth/authenticate/strategies/strategy-registry.d.ts.map +1 -1
  17. package/dist/cjs/base/auth/authenticate/strategies/strategy-registry.js +54 -0
  18. package/dist/cjs/base/auth/authenticate/strategies/strategy-registry.js.map +1 -1
  19. package/dist/cjs/base/auth/authorize/builders/policy.builder.d.ts +28 -33
  20. package/dist/cjs/base/auth/authorize/builders/policy.builder.d.ts.map +1 -1
  21. package/dist/cjs/base/auth/authorize/builders/policy.builder.js.map +1 -1
  22. package/dist/cjs/base/auth/authorize/common/constants.d.ts +25 -1
  23. package/dist/cjs/base/auth/authorize/common/constants.d.ts.map +1 -1
  24. package/dist/cjs/base/auth/authorize/common/constants.js +12 -18
  25. package/dist/cjs/base/auth/authorize/common/constants.js.map +1 -1
  26. package/dist/cjs/base/auth/authorize/common/errors.d.ts +9 -0
  27. package/dist/cjs/base/auth/authorize/common/errors.d.ts.map +1 -1
  28. package/dist/cjs/base/auth/authorize/common/errors.js +9 -0
  29. package/dist/cjs/base/auth/authorize/common/errors.js.map +1 -1
  30. package/dist/cjs/base/auth/authorize/common/types.d.ts +1 -1
  31. package/dist/cjs/base/auth/authorize/common/types.d.ts.map +1 -1
  32. package/dist/cjs/base/auth/authorize/enforcers/enforcer-registry.d.ts +17 -0
  33. package/dist/cjs/base/auth/authorize/enforcers/enforcer-registry.d.ts.map +1 -1
  34. package/dist/cjs/base/auth/authorize/enforcers/enforcer-registry.js +39 -3
  35. package/dist/cjs/base/auth/authorize/enforcers/enforcer-registry.js.map +1 -1
  36. package/dist/cjs/base/auth/authorize/providers/authorization.provider.d.ts.map +1 -1
  37. package/dist/cjs/base/auth/authorize/providers/authorization.provider.js +33 -10
  38. package/dist/cjs/base/auth/authorize/providers/authorization.provider.js.map +1 -1
  39. package/dist/cjs/base/auth/base/abstract-auth-registry.d.ts +10 -0
  40. package/dist/cjs/base/auth/base/abstract-auth-registry.d.ts.map +1 -1
  41. package/dist/cjs/base/auth/base/abstract-auth-registry.js +12 -0
  42. package/dist/cjs/base/auth/base/abstract-auth-registry.js.map +1 -1
  43. package/dist/cjs/base/auth/context-variables.d.ts +7 -1
  44. package/dist/cjs/base/auth/context-variables.d.ts.map +1 -1
  45. package/dist/cjs/base/controllers/factory/controller.d.ts +1 -1
  46. package/dist/cjs/base/controllers/factory/controller.d.ts.map +1 -1
  47. package/dist/cjs/base/controllers/factory/definition.d.ts +1 -1
  48. package/dist/cjs/base/controllers/factory/definition.d.ts.map +1 -1
  49. package/dist/cjs/base/controllers/factory/definition.js +3 -5
  50. package/dist/cjs/base/controllers/factory/definition.js.map +1 -1
  51. package/dist/cjs/base/controllers/rest/abstract.d.ts.map +1 -1
  52. package/dist/cjs/base/controllers/rest/abstract.js +10 -0
  53. package/dist/cjs/base/controllers/rest/abstract.js.map +1 -1
  54. package/dist/cjs/base/events/common/constants.d.ts +5 -0
  55. package/dist/cjs/base/events/common/constants.d.ts.map +1 -0
  56. package/dist/cjs/base/events/common/constants.js +9 -0
  57. package/dist/cjs/base/events/common/constants.js.map +1 -0
  58. package/dist/cjs/base/events/common/index.d.ts +3 -0
  59. package/dist/cjs/base/events/common/index.d.ts.map +1 -0
  60. package/dist/cjs/base/events/common/index.js +19 -0
  61. package/dist/cjs/base/events/common/index.js.map +1 -0
  62. package/dist/cjs/base/events/common/types.d.ts +26 -0
  63. package/dist/cjs/base/events/common/types.d.ts.map +1 -0
  64. package/dist/cjs/base/events/common/types.js +3 -0
  65. package/dist/cjs/base/events/common/types.js.map +1 -0
  66. package/dist/cjs/base/events/event-bus.d.ts +41 -0
  67. package/dist/cjs/base/events/event-bus.d.ts.map +1 -0
  68. package/dist/cjs/base/events/event-bus.js +100 -0
  69. package/dist/cjs/base/events/event-bus.js.map +1 -0
  70. package/dist/cjs/base/events/index.d.ts +3 -0
  71. package/dist/cjs/base/events/index.d.ts.map +1 -0
  72. package/dist/cjs/base/events/index.js +19 -0
  73. package/dist/cjs/base/events/index.js.map +1 -0
  74. package/dist/cjs/base/index.d.ts +1 -0
  75. package/dist/cjs/base/index.d.ts.map +1 -1
  76. package/dist/cjs/base/index.js +1 -5
  77. package/dist/cjs/base/index.js.map +1 -1
  78. package/dist/cjs/base/metadata/persistents.js +1 -1
  79. package/dist/cjs/base/metadata/persistents.js.map +1 -1
  80. package/dist/cjs/base/middlewares/not-found/not-found.middleware.d.ts.map +1 -1
  81. package/dist/cjs/base/middlewares/not-found/not-found.middleware.js +4 -1
  82. package/dist/cjs/base/middlewares/not-found/not-found.middleware.js.map +1 -1
  83. package/dist/cjs/base/repositories/common/constants.d.ts +26 -0
  84. package/dist/cjs/base/repositories/common/constants.d.ts.map +1 -1
  85. package/dist/cjs/base/repositories/common/constants.js +29 -1
  86. package/dist/cjs/base/repositories/common/constants.js.map +1 -1
  87. package/dist/cjs/base/repositories/core/abstract.d.ts +29 -0
  88. package/dist/cjs/base/repositories/core/abstract.d.ts.map +1 -1
  89. package/dist/cjs/base/repositories/core/abstract.js +71 -1
  90. package/dist/cjs/base/repositories/core/abstract.js.map +1 -1
  91. package/dist/cjs/base/repositories/index.d.ts +1 -0
  92. package/dist/cjs/base/repositories/index.d.ts.map +1 -1
  93. package/dist/cjs/base/repositories/index.js +1 -0
  94. package/dist/cjs/base/repositories/index.js.map +1 -1
  95. package/dist/cjs/base/repositories/query-schemas/index.d.ts +26 -3
  96. package/dist/cjs/base/repositories/query-schemas/index.d.ts.map +1 -1
  97. package/dist/cjs/base/repositories/query-schemas/index.js +26 -3
  98. package/dist/cjs/base/repositories/query-schemas/index.js.map +1 -1
  99. package/dist/cjs/base/repositories/sqls/index.d.ts +2 -0
  100. package/dist/cjs/base/repositories/sqls/index.d.ts.map +1 -0
  101. package/dist/cjs/base/repositories/sqls/index.js +18 -0
  102. package/dist/cjs/base/repositories/sqls/index.js.map +1 -0
  103. package/dist/cjs/base/repositories/sqls/recursive-tree.d.ts +56 -0
  104. package/dist/cjs/base/repositories/sqls/recursive-tree.d.ts.map +1 -0
  105. package/dist/cjs/base/repositories/sqls/recursive-tree.js +148 -0
  106. package/dist/cjs/base/repositories/sqls/recursive-tree.js.map +1 -0
  107. package/dist/cjs/helpers/inversion/common/types.d.ts +34 -4
  108. package/dist/cjs/helpers/inversion/common/types.d.ts.map +1 -1
  109. package/dist/esm/base/auth/authenticate/common/constants.d.ts +28 -1
  110. package/dist/esm/base/auth/authenticate/common/constants.d.ts.map +1 -1
  111. package/dist/esm/base/auth/authenticate/common/constants.js +27 -1
  112. package/dist/esm/base/auth/authenticate/common/constants.js.map +1 -1
  113. package/dist/esm/base/auth/authenticate/common/errors.d.ts +40 -1
  114. package/dist/esm/base/auth/authenticate/common/errors.d.ts.map +1 -1
  115. package/dist/esm/base/auth/authenticate/common/errors.js +41 -1
  116. package/dist/esm/base/auth/authenticate/common/errors.js.map +1 -1
  117. package/dist/esm/base/auth/authenticate/common/keys.d.ts +2 -0
  118. package/dist/esm/base/auth/authenticate/common/keys.d.ts.map +1 -1
  119. package/dist/esm/base/auth/authenticate/common/keys.js +2 -0
  120. package/dist/esm/base/auth/authenticate/common/keys.js.map +1 -1
  121. package/dist/esm/base/auth/authenticate/common/types.d.ts +147 -1
  122. package/dist/esm/base/auth/authenticate/common/types.d.ts.map +1 -1
  123. package/dist/esm/base/auth/authenticate/strategies/strategy-registry.d.ts +37 -0
  124. package/dist/esm/base/auth/authenticate/strategies/strategy-registry.d.ts.map +1 -1
  125. package/dist/esm/base/auth/authenticate/strategies/strategy-registry.js +54 -0
  126. package/dist/esm/base/auth/authenticate/strategies/strategy-registry.js.map +1 -1
  127. package/dist/esm/base/auth/authorize/builders/policy.builder.d.ts +28 -33
  128. package/dist/esm/base/auth/authorize/builders/policy.builder.d.ts.map +1 -1
  129. package/dist/esm/base/auth/authorize/builders/policy.builder.js.map +1 -1
  130. package/dist/esm/base/auth/authorize/common/constants.d.ts +25 -1
  131. package/dist/esm/base/auth/authorize/common/constants.d.ts.map +1 -1
  132. package/dist/esm/base/auth/authorize/common/constants.js +12 -18
  133. package/dist/esm/base/auth/authorize/common/constants.js.map +1 -1
  134. package/dist/esm/base/auth/authorize/common/errors.d.ts +9 -0
  135. package/dist/esm/base/auth/authorize/common/errors.d.ts.map +1 -1
  136. package/dist/esm/base/auth/authorize/common/errors.js +9 -0
  137. package/dist/esm/base/auth/authorize/common/errors.js.map +1 -1
  138. package/dist/esm/base/auth/authorize/common/types.d.ts +1 -1
  139. package/dist/esm/base/auth/authorize/common/types.d.ts.map +1 -1
  140. package/dist/esm/base/auth/authorize/enforcers/enforcer-registry.d.ts +17 -0
  141. package/dist/esm/base/auth/authorize/enforcers/enforcer-registry.d.ts.map +1 -1
  142. package/dist/esm/base/auth/authorize/enforcers/enforcer-registry.js +39 -3
  143. package/dist/esm/base/auth/authorize/enforcers/enforcer-registry.js.map +1 -1
  144. package/dist/esm/base/auth/authorize/providers/authorization.provider.d.ts.map +1 -1
  145. package/dist/esm/base/auth/authorize/providers/authorization.provider.js +33 -10
  146. package/dist/esm/base/auth/authorize/providers/authorization.provider.js.map +1 -1
  147. package/dist/esm/base/auth/base/abstract-auth-registry.d.ts +10 -0
  148. package/dist/esm/base/auth/base/abstract-auth-registry.d.ts.map +1 -1
  149. package/dist/esm/base/auth/base/abstract-auth-registry.js +12 -0
  150. package/dist/esm/base/auth/base/abstract-auth-registry.js.map +1 -1
  151. package/dist/esm/base/auth/context-variables.d.ts +7 -1
  152. package/dist/esm/base/auth/context-variables.d.ts.map +1 -1
  153. package/dist/esm/base/controllers/factory/controller.d.ts +1 -1
  154. package/dist/esm/base/controllers/factory/controller.d.ts.map +1 -1
  155. package/dist/esm/base/controllers/factory/definition.d.ts +1 -1
  156. package/dist/esm/base/controllers/factory/definition.d.ts.map +1 -1
  157. package/dist/esm/base/controllers/factory/definition.js +4 -6
  158. package/dist/esm/base/controllers/factory/definition.js.map +1 -1
  159. package/dist/esm/base/controllers/rest/abstract.d.ts.map +1 -1
  160. package/dist/esm/base/controllers/rest/abstract.js +10 -0
  161. package/dist/esm/base/controllers/rest/abstract.js.map +1 -1
  162. package/dist/esm/base/events/common/constants.d.ts +5 -0
  163. package/dist/esm/base/events/common/constants.d.ts.map +1 -0
  164. package/dist/esm/base/events/common/constants.js +5 -0
  165. package/dist/esm/base/events/common/constants.js.map +1 -0
  166. package/dist/esm/base/events/common/index.d.ts +3 -0
  167. package/dist/esm/base/events/common/index.d.ts.map +1 -0
  168. package/dist/esm/base/events/common/index.js +3 -0
  169. package/dist/esm/base/events/common/index.js.map +1 -0
  170. package/dist/esm/base/events/common/types.d.ts +26 -0
  171. package/dist/esm/base/events/common/types.d.ts.map +1 -0
  172. package/dist/esm/base/events/common/types.js +2 -0
  173. package/dist/esm/base/events/common/types.js.map +1 -0
  174. package/dist/esm/base/events/event-bus.d.ts +41 -0
  175. package/dist/esm/base/events/event-bus.d.ts.map +1 -0
  176. package/dist/esm/base/events/event-bus.js +93 -0
  177. package/dist/esm/base/events/event-bus.js.map +1 -0
  178. package/dist/esm/base/events/index.d.ts +3 -0
  179. package/dist/esm/base/events/index.d.ts.map +1 -0
  180. package/dist/esm/base/events/index.js +3 -0
  181. package/dist/esm/base/events/index.js.map +1 -0
  182. package/dist/esm/base/index.d.ts +1 -0
  183. package/dist/esm/base/index.d.ts.map +1 -1
  184. package/dist/esm/base/index.js +1 -5
  185. package/dist/esm/base/index.js.map +1 -1
  186. package/dist/esm/base/metadata/persistents.js +1 -1
  187. package/dist/esm/base/metadata/persistents.js.map +1 -1
  188. package/dist/esm/base/middlewares/not-found/not-found.middleware.d.ts.map +1 -1
  189. package/dist/esm/base/middlewares/not-found/not-found.middleware.js +4 -1
  190. package/dist/esm/base/middlewares/not-found/not-found.middleware.js.map +1 -1
  191. package/dist/esm/base/repositories/common/constants.d.ts +26 -0
  192. package/dist/esm/base/repositories/common/constants.d.ts.map +1 -1
  193. package/dist/esm/base/repositories/common/constants.js +26 -0
  194. package/dist/esm/base/repositories/common/constants.js.map +1 -1
  195. package/dist/esm/base/repositories/core/abstract.d.ts +29 -0
  196. package/dist/esm/base/repositories/core/abstract.d.ts.map +1 -1
  197. package/dist/esm/base/repositories/core/abstract.js +73 -3
  198. package/dist/esm/base/repositories/core/abstract.js.map +1 -1
  199. package/dist/esm/base/repositories/index.d.ts +1 -0
  200. package/dist/esm/base/repositories/index.d.ts.map +1 -1
  201. package/dist/esm/base/repositories/index.js +1 -0
  202. package/dist/esm/base/repositories/index.js.map +1 -1
  203. package/dist/esm/base/repositories/query-schemas/index.d.ts +26 -3
  204. package/dist/esm/base/repositories/query-schemas/index.d.ts.map +1 -1
  205. package/dist/esm/base/repositories/query-schemas/index.js +25 -2
  206. package/dist/esm/base/repositories/query-schemas/index.js.map +1 -1
  207. package/dist/esm/base/repositories/sqls/index.d.ts +2 -0
  208. package/dist/esm/base/repositories/sqls/index.d.ts.map +1 -0
  209. package/dist/esm/base/repositories/sqls/index.js +2 -0
  210. package/dist/esm/base/repositories/sqls/index.js.map +1 -0
  211. package/dist/esm/base/repositories/sqls/recursive-tree.d.ts +56 -0
  212. package/dist/esm/base/repositories/sqls/recursive-tree.d.ts.map +1 -0
  213. package/dist/esm/base/repositories/sqls/recursive-tree.js +143 -0
  214. package/dist/esm/base/repositories/sqls/recursive-tree.js.map +1 -0
  215. package/dist/esm/helpers/inversion/common/types.d.ts +34 -4
  216. package/dist/esm/helpers/inversion/common/types.d.ts.map +1 -1
  217. package/package.json +5 -5
@@ -0,0 +1,148 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.RecursiveTreeSql = exports.RecursiveTreeDirections = void 0;
4
+ const core_1 = require("@venizia/ignis-helpers/core");
5
+ const drizzle_orm_1 = require("drizzle-orm");
6
+ const pg_core_1 = require("drizzle-orm/pg-core");
7
+ const sqlite_core_1 = require("drizzle-orm/sqlite-core");
8
+ /** Walk direction relative to `rootId`: DOWN follows `parentColumn -> idColumn` (descendants), UP follows the reverse (ancestors). */
9
+ class RecursiveTreeDirections {
10
+ static { this.UP = 'UP'; }
11
+ static { this.DOWN = 'DOWN'; }
12
+ static { this.SCHEME_SET = new Set([this.UP, this.DOWN]); }
13
+ static isValid(direction) {
14
+ return this.SCHEME_SET.has(direction);
15
+ }
16
+ }
17
+ exports.RecursiveTreeDirections = RecursiveTreeDirections;
18
+ /** Internal only - not part of {@link IRecursiveTreeOptions}. Derived from `table`, never accepted as an option. */
19
+ class RecursiveTreeEngines {
20
+ static { this.POSTGRES = 'POSTGRES'; }
21
+ static { this.SQLITE = 'SQLITE'; }
22
+ static { this.SCHEME_SET = new Set([this.POSTGRES, this.SQLITE]); }
23
+ }
24
+ /** A SQL identifier is safe to splice only after it matches this allowlist - see {@link RecursiveTreeSql.assertValidIdentifier}. */
25
+ const IDENTIFIER_PATTERN = /^[A-Za-z_][A-Za-z0-9_]*$/;
26
+ /**
27
+ * ASCII Unit Separator (0x1F) - chosen because it does not occur in real ids, unlike `/` or `,`.
28
+ * See {@link RecursiveTreeSql} for the exactness limitation this relies on.
29
+ */
30
+ const SQLITE_PATH_DELIMITER = drizzle_orm_1.sql.raw('char(31)');
31
+ /**
32
+ * Returns the CTE definition only - the caller writes its own `SELECT ... FROM <name>` around it.
33
+ * Engine is read off `table`, never asked of the caller, so no option can disagree with the schema.
34
+ * SQLite's `path` is `char(31)`-delimited text, not an array: exact unless an id contains that byte,
35
+ * which this class does not reject. Identifiers cannot be parameterized, so `name`/`idColumn`/
36
+ * `parentColumn`/`columns` are allowlist-checked before reaching a template.
37
+ */
38
+ class RecursiveTreeSql {
39
+ static assertValidIdentifier(opts) {
40
+ const { field, value } = opts;
41
+ if (!IDENTIFIER_PATTERN.test(value)) {
42
+ throw (0, core_1.getError)({
43
+ message: `[RecursiveTreeSql.walk] Invalid '${field}' | Expected letters, digits and underscores only, not starting with a digit | Got: ${value}`,
44
+ });
45
+ }
46
+ }
47
+ static walk(opts) {
48
+ const { name, table, rootId, direction, maxDepth, idColumn = 'id', parentColumn = 'parent_id', columns = [], recursiveFilter, trackPath = false, startDepth = 0, } = opts;
49
+ RecursiveTreeSql.assertValidIdentifier({ field: 'name', value: name });
50
+ RecursiveTreeSql.assertValidIdentifier({ field: 'idColumn', value: idColumn });
51
+ RecursiveTreeSql.assertValidIdentifier({ field: 'parentColumn', value: parentColumn });
52
+ columns.forEach(column => RecursiveTreeSql.assertValidIdentifier({ field: 'columns', value: column }));
53
+ if (!RecursiveTreeDirections.isValid(direction)) {
54
+ throw (0, core_1.getError)({
55
+ message: `[RecursiveTreeSql.walk] Invalid 'direction' | Expected ${RecursiveTreeDirections.UP} or ${RecursiveTreeDirections.DOWN} | Got: ${direction}`,
56
+ });
57
+ }
58
+ if (!Number.isInteger(maxDepth) || maxDepth <= 0) {
59
+ throw (0, core_1.getError)({
60
+ message: `[RecursiveTreeSql.walk] Invalid 'maxDepth' | Expected a positive integer | Got: ${maxDepth}`,
61
+ });
62
+ }
63
+ if (!(0, drizzle_orm_1.is)(table, drizzle_orm_1.Table)) {
64
+ throw (0, core_1.getError)({
65
+ message: `[RecursiveTreeSql.walk] Invalid 'table' | Expected a Drizzle table | Got: ${typeof table}`,
66
+ });
67
+ }
68
+ const engine = RecursiveTreeSql.detectEngine(table);
69
+ const tableName = (0, drizzle_orm_1.getTableName)(table);
70
+ RecursiveTreeSql.assertValidIdentifier({ field: 'table', value: tableName });
71
+ const tableIdentifier = drizzle_orm_1.sql.identifier(tableName);
72
+ const cteIdentifier = drizzle_orm_1.sql.identifier(name);
73
+ const idIdentifier = drizzle_orm_1.sql.identifier(idColumn);
74
+ const parentIdentifier = drizzle_orm_1.sql.identifier(parentColumn);
75
+ const extraIdentifiers = columns.map(column => drizzle_orm_1.sql.identifier(column));
76
+ const baseColumnList = drizzle_orm_1.sql.join([idIdentifier, parentIdentifier, ...extraIdentifiers], (0, drizzle_orm_1.sql) `, `);
77
+ const recursiveColumnList = drizzle_orm_1.sql.join([idIdentifier, parentIdentifier, ...extraIdentifiers].map(identifier => (0, drizzle_orm_1.sql) `t.${identifier}`), (0, drizzle_orm_1.sql) `, `);
78
+ const depthCast = RecursiveTreeSql.compileDepthCast({ engine, depth: startDepth });
79
+ const { basePathColumns, recursivePathColumns } = trackPath
80
+ ? RecursiveTreeSql.compileCycleGuardFragments({ engine, idIdentifier })
81
+ : { basePathColumns: (0, drizzle_orm_1.sql) ``, recursivePathColumns: (0, drizzle_orm_1.sql) `` };
82
+ const baseCase = (0, drizzle_orm_1.sql) `SELECT ${baseColumnList}, ${depthCast} AS depth${basePathColumns} FROM ${tableIdentifier} WHERE ${idIdentifier} = ${rootId}`;
83
+ // DOWN walks parent -> children (t.parentColumn = r.idColumn); UP walks child -> parent (t.idColumn = r.parentColumn).
84
+ const joinCondition = direction === RecursiveTreeDirections.DOWN
85
+ ? (0, drizzle_orm_1.sql) `t.${parentIdentifier} = r.${idIdentifier}`
86
+ : (0, drizzle_orm_1.sql) `t.${idIdentifier} = r.${parentIdentifier}`;
87
+ // `NOT r.is_cycle` stops expanding a row already flagged cyclic - the row itself stays in the
88
+ // result set with is_cycle = true, only its own children are cut off.
89
+ const cycleGuard = trackPath ? (0, drizzle_orm_1.sql) ` AND NOT r.is_cycle` : (0, drizzle_orm_1.sql) ``;
90
+ const extraFilter = recursiveFilter ? (0, drizzle_orm_1.sql) ` AND (${recursiveFilter})` : (0, drizzle_orm_1.sql) ``;
91
+ const recursiveCase = (0, drizzle_orm_1.sql) `SELECT ${recursiveColumnList}, r.depth + 1${recursivePathColumns} FROM ${tableIdentifier} t JOIN ${cteIdentifier} r ON ${joinCondition} WHERE r.depth + 1 <= ${maxDepth}${cycleGuard}${extraFilter}`;
92
+ return (0, drizzle_orm_1.sql) `WITH RECURSIVE ${cteIdentifier} AS (${baseCase} UNION ALL ${recursiveCase})`;
93
+ }
94
+ /** See {@link RecursiveTreeSql} for why there is no separate `engine` option. */
95
+ static detectEngine(table) {
96
+ if ((0, drizzle_orm_1.is)(table, pg_core_1.PgTable)) {
97
+ return RecursiveTreeEngines.POSTGRES;
98
+ }
99
+ if ((0, drizzle_orm_1.is)(table, sqlite_core_1.SQLiteTable)) {
100
+ return RecursiveTreeEngines.SQLITE;
101
+ }
102
+ throw (0, core_1.getError)({
103
+ message: `[RecursiveTreeSql.walk] Invalid 'table' | Expected a Postgres or SQLite Drizzle table | Got: ${(0, drizzle_orm_1.getTableName)(table)}`,
104
+ });
105
+ }
106
+ /** Postgres needs an explicit cast so the base and recursive terms agree on the `depth` column's type; SQLite's looser typing does not, but casts anyway for parity and to fail loudly on a non-numeric `startDepth`. */
107
+ static compileDepthCast(opts) {
108
+ const { engine, depth } = opts;
109
+ switch (engine) {
110
+ case RecursiveTreeEngines.POSTGRES: {
111
+ return (0, drizzle_orm_1.sql) `${depth}::int`;
112
+ }
113
+ case RecursiveTreeEngines.SQLITE: {
114
+ return (0, drizzle_orm_1.sql) `CAST(${depth} AS INTEGER)`;
115
+ }
116
+ default: {
117
+ throw (0, core_1.getError)({
118
+ message: `[RecursiveTreeSql.walk] Invalid 'engine' | Got: ${engine}`,
119
+ });
120
+ }
121
+ }
122
+ }
123
+ /** See {@link RecursiveTreeSql} for why Postgres and SQLite need different `path`/`is_cycle` shapes. */
124
+ static compileCycleGuardFragments(opts) {
125
+ const { engine, idIdentifier } = opts;
126
+ switch (engine) {
127
+ case RecursiveTreeEngines.POSTGRES: {
128
+ return {
129
+ basePathColumns: (0, drizzle_orm_1.sql) `, ARRAY[${idIdentifier}] AS path, false AS is_cycle`,
130
+ recursivePathColumns: (0, drizzle_orm_1.sql) `, r.path || t.${idIdentifier} AS path, t.${idIdentifier} = ANY(r.path) AS is_cycle`,
131
+ };
132
+ }
133
+ case RecursiveTreeEngines.SQLITE: {
134
+ return {
135
+ basePathColumns: (0, drizzle_orm_1.sql) `, ${SQLITE_PATH_DELIMITER} || ${idIdentifier} || ${SQLITE_PATH_DELIMITER} AS path, 0 AS is_cycle`,
136
+ recursivePathColumns: (0, drizzle_orm_1.sql) `, r.path || t.${idIdentifier} || ${SQLITE_PATH_DELIMITER} AS path, instr(r.path, ${SQLITE_PATH_DELIMITER} || t.${idIdentifier} || ${SQLITE_PATH_DELIMITER}) > 0 AS is_cycle`,
137
+ };
138
+ }
139
+ default: {
140
+ throw (0, core_1.getError)({
141
+ message: `[RecursiveTreeSql.walk] Invalid 'engine' | Got: ${engine}`,
142
+ });
143
+ }
144
+ }
145
+ }
146
+ }
147
+ exports.RecursiveTreeSql = RecursiveTreeSql;
148
+ //# sourceMappingURL=recursive-tree.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"recursive-tree.js","sourceRoot":"","sources":["../../../../../src/base/repositories/sqls/recursive-tree.ts"],"names":[],"mappings":";;;AACA,sDAAuD;AAEvD,6CAA2D;AAC3D,iDAA8C;AAC9C,yDAAsD;AAEtD,sIAAsI;AACtI,MAAa,uBAAuB;aAClB,OAAE,GAAG,IAAI,CAAC;aACV,SAAI,GAAG,MAAM,CAAC;aACd,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE3D,MAAM,CAAC,OAAO,CAAC,SAAiB;QAC9B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IACxC,CAAC;;AAPH,0DAQC;AAID,oHAAoH;AACpH,MAAM,oBAAoB;aACR,aAAQ,GAAG,UAAU,CAAC;aACtB,WAAM,GAAG,QAAQ,CAAC;aAClB,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;;AAKrE,oIAAoI;AACpI,MAAM,kBAAkB,GAAG,0BAA0B,CAAC;AAEtD;;;GAGG;AACH,MAAM,qBAAqB,GAAG,iBAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAoClD;;;;;;GAMG;AACH,MAAa,gBAAgB;IACnB,MAAM,CAAC,qBAAqB,CAAC,IAAsC;QACzE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAE9B,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACpC,MAAM,IAAA,eAAQ,EAAC;gBACb,OAAO,EAAE,oCAAoC,KAAK,uFAAuF,KAAK,EAAE;aACjJ,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,CAAC,IAAI,CAAC,IAA2B;QACrC,MAAM,EACJ,IAAI,EACJ,KAAK,EACL,MAAM,EACN,SAAS,EACT,QAAQ,EACR,QAAQ,GAAG,IAAI,EACf,YAAY,GAAG,WAAW,EAC1B,OAAO,GAAG,EAAE,EACZ,eAAe,EACf,SAAS,GAAG,KAAK,EACjB,UAAU,GAAG,CAAC,GACf,GAAG,IAAI,CAAC;QAET,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;QACvE,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/E,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;QACvF,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CACvB,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAC5E,CAAC;QAEF,IAAI,CAAC,uBAAuB,CAAC,OAAO,CAAC,SAAS,CAAC,EAAE,CAAC;YAChD,MAAM,IAAA,eAAQ,EAAC;gBACb,OAAO,EAAE,0DAA0D,uBAAuB,CAAC,EAAE,OAAO,uBAAuB,CAAC,IAAI,WAAW,SAAS,EAAE;aACvJ,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC,EAAE,CAAC;YACjD,MAAM,IAAA,eAAQ,EAAC;gBACb,OAAO,EAAE,mFAAmF,QAAQ,EAAE;aACvG,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,IAAA,gBAAE,EAAC,KAAK,EAAE,mBAAK,CAAC,EAAE,CAAC;YACtB,MAAM,IAAA,eAAQ,EAAC;gBACb,OAAO,EAAE,6EAA6E,OAAO,KAAK,EAAE;aACrG,CAAC,CAAC;QACL,CAAC;QAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QAEpD,MAAM,SAAS,GAAG,IAAA,0BAAY,EAAC,KAAK,CAAC,CAAC;QACtC,gBAAgB,CAAC,qBAAqB,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;QAE7E,MAAM,eAAe,GAAG,iBAAG,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;QAClD,MAAM,aAAa,GAAG,iBAAG,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC3C,MAAM,YAAY,GAAG,iBAAG,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;QAC9C,MAAM,gBAAgB,GAAG,iBAAG,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;QACtD,MAAM,gBAAgB,GAAG,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,iBAAG,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC;QAEvE,MAAM,cAAc,GAAG,iBAAG,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAAC,EAAE,IAAA,iBAAG,EAAA,IAAI,CAAC,CAAC;QAChG,MAAM,mBAAmB,GAAG,iBAAG,CAAC,IAAI,CAClC,CAAC,YAAY,EAAE,gBAAgB,EAAE,GAAG,gBAAgB,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC,IAAA,iBAAG,EAAA,KAAK,UAAU,EAAE,CAAC,EAC7F,IAAA,iBAAG,EAAA,IAAI,CACR,CAAC;QAEF,MAAM,SAAS,GAAG,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC;QACnF,MAAM,EAAE,eAAe,EAAE,oBAAoB,EAAE,GAAG,SAAS;YACzD,CAAC,CAAC,gBAAgB,CAAC,0BAA0B,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC;YACvE,CAAC,CAAC,EAAE,eAAe,EAAE,IAAA,iBAAG,EAAA,EAAE,EAAE,oBAAoB,EAAE,IAAA,iBAAG,EAAA,EAAE,EAAE,CAAC;QAE5D,MAAM,QAAQ,GAAG,IAAA,iBAAG,EAAA,UAAU,cAAc,KAAK,SAAS,YAAY,eAAe,SAAS,eAAe,UAAU,YAAY,MAAM,MAAM,EAAE,CAAC;QAElJ,uHAAuH;QACvH,MAAM,aAAa,GACjB,SAAS,KAAK,uBAAuB,CAAC,IAAI;YACxC,CAAC,CAAC,IAAA,iBAAG,EAAA,KAAK,gBAAgB,QAAQ,YAAY,EAAE;YAChD,CAAC,CAAC,IAAA,iBAAG,EAAA,KAAK,YAAY,QAAQ,gBAAgB,EAAE,CAAC;QAErD,8FAA8F;QAC9F,sEAAsE;QACtE,MAAM,UAAU,GAAG,SAAS,CAAC,CAAC,CAAC,IAAA,iBAAG,EAAA,qBAAqB,CAAC,CAAC,CAAC,IAAA,iBAAG,EAAA,EAAE,CAAC;QAChE,MAAM,WAAW,GAAG,eAAe,CAAC,CAAC,CAAC,IAAA,iBAAG,EAAA,SAAS,eAAe,GAAG,CAAC,CAAC,CAAC,IAAA,iBAAG,EAAA,EAAE,CAAC;QAE7E,MAAM,aAAa,GAAG,IAAA,iBAAG,EAAA,UAAU,mBAAmB,gBAAgB,oBAAoB,SAAS,eAAe,WAAW,aAAa,SAAS,aAAa,yBAAyB,QAAQ,GAAG,UAAU,GAAG,WAAW,EAAE,CAAC;QAE/N,OAAO,IAAA,iBAAG,EAAA,kBAAkB,aAAa,QAAQ,QAAQ,cAAc,aAAa,GAAG,CAAC;IAC1F,CAAC;IAED,iFAAiF;IACzE,MAAM,CAAC,YAAY,CAAC,KAAY;QACtC,IAAI,IAAA,gBAAE,EAAC,KAAK,EAAE,iBAAO,CAAC,EAAE,CAAC;YACvB,OAAO,oBAAoB,CAAC,QAAQ,CAAC;QACvC,CAAC;QAED,IAAI,IAAA,gBAAE,EAAC,KAAK,EAAE,yBAAW,CAAC,EAAE,CAAC;YAC3B,OAAO,oBAAoB,CAAC,MAAM,CAAC;QACrC,CAAC;QAED,MAAM,IAAA,eAAQ,EAAC;YACb,OAAO,EAAE,gGAAgG,IAAA,0BAAY,EAAC,KAAK,CAAC,EAAE;SAC/H,CAAC,CAAC;IACL,CAAC;IAED,yNAAyN;IACjN,MAAM,CAAC,gBAAgB,CAAC,IAAqD;QACnF,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAE/B,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACnC,OAAO,IAAA,iBAAG,EAAA,GAAG,KAAK,OAAO,CAAC;YAC5B,CAAC;YACD,KAAK,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;gBACjC,OAAO,IAAA,iBAAG,EAAA,QAAQ,KAAK,cAAc,CAAC;YACxC,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,IAAA,eAAQ,EAAC;oBACb,OAAO,EAAE,mDAAmD,MAAM,EAAE;iBACrE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IAED,wGAAwG;IAChG,MAAM,CAAC,0BAA0B,CAAC,IAGzC;QACC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,GAAG,IAAI,CAAC;QAEtC,QAAQ,MAAM,EAAE,CAAC;YACf,KAAK,oBAAoB,CAAC,QAAQ,CAAC,CAAC,CAAC;gBACnC,OAAO;oBACL,eAAe,EAAE,IAAA,iBAAG,EAAA,WAAW,YAAY,8BAA8B;oBACzE,oBAAoB,EAAE,IAAA,iBAAG,EAAA,iBAAiB,YAAY,eAAe,YAAY,4BAA4B;iBAC9G,CAAC;YACJ,CAAC;YACD,KAAK,oBAAoB,CAAC,MAAM,CAAC,CAAC,CAAC;gBACjC,OAAO;oBACL,eAAe,EAAE,IAAA,iBAAG,EAAA,KAAK,qBAAqB,OAAO,YAAY,OAAO,qBAAqB,yBAAyB;oBACtH,oBAAoB,EAAE,IAAA,iBAAG,EAAA,iBAAiB,YAAY,OAAO,qBAAqB,2BAA2B,qBAAqB,SAAS,YAAY,OAAO,qBAAqB,mBAAmB;iBACvM,CAAC;YACJ,CAAC;YACD,OAAO,CAAC,CAAC,CAAC;gBACR,MAAM,IAAA,eAAQ,EAAC;oBACb,OAAO,EAAE,mDAAmD,MAAM,EAAE;iBACrE,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAxJD,4CAwJC"}
@@ -1,10 +1,10 @@
1
+ import type { TAuthMode, TAuthStrategy } from '../../../base/auth/authenticate/common';
2
+ import type { IAuthorizationSpec } from '../../../base/auth/authorize/common/types';
1
3
  import type { ControllerTransports } from '../../../base/controllers/common/constants';
2
4
  import type { IDataSource, TDataSourceDriverClass } from '../../../base/datasources';
3
5
  import type { AbstractEntity } from '../../../base/models';
4
- import type { IRepository, TFilter, TRepositoryOperationScope } from '../../../base/repositories';
5
- import type { TAuthMode, TAuthStrategy } from '../../../base/auth/authenticate/common';
6
- import type { IAuthorizationSpec } from '../../../base/auth/authorize/common/types';
7
- import type { TClass, TGrpcMethod, TValueOrResolver } from '@venizia/ignis-helpers/common';
6
+ import type { IRepository, ScopeFilters, TFilter, TRepositoryOperationScope, TScopeFilterMissingBehavior, TWhere } from '../../../base/repositories';
7
+ import type { TClass, TGrpcMethod, TNullable, TValueOrResolver } from '@venizia/ignis-helpers/common';
8
8
  import { type IInjectMetadata as _IInjectMetadata, type IPropertyMetadata as _IPropertyMetadata } from '@venizia/ignis-inversion';
9
9
  interface IBaseControllerMetadata {
10
10
  path: string;
@@ -44,11 +44,41 @@ export interface IModelAuthorizeSettings {
44
44
  /** Extensible - consumers can add any extra authorization metadata. */
45
45
  [extra: string | symbol]: any;
46
46
  }
47
+ /**
48
+ * Row-scope resolver for `@model` settings.scopeFilter - resolved per query, so it can depend on
49
+ * the current request (tenant, org, membership). Framework-internal escape hatches aside, nothing
50
+ * short of removing this setting from the model turns scoping off.
51
+ */
52
+ export interface IScopeFilterSettings {
53
+ /**
54
+ * Returns the scope `where`; `ScopeFilters.UNRESTRICTED` to apply no scope for THIS call (an
55
+ * internal operator, a caller the application has decided sees everything); or null/undefined
56
+ * when this caller's scope cannot be determined at all.
57
+ */
58
+ resolve: () => TNullable<TWhere> | typeof ScopeFilters.UNRESTRICTED;
59
+ /**
60
+ * What `applyScopeFilter` does when `resolve()` returns null/undefined - no request context, no
61
+ * tenant, a background job. Defaults to `deny`: an unresolved scope matches zero rows, never
62
+ * every row. `allow` is an explicit, reviewed opt-out for migrations and background jobs, declared
63
+ * per MODEL - it cannot express a per-USER bypass; use `ScopeFilters.UNRESTRICTED` for that.
64
+ */
65
+ onMissing?: TScopeFilterMissingBehavior;
66
+ }
47
67
  export interface IModelSettings {
48
68
  /** Properties excluded from all query results at SQL level. */
49
69
  hiddenProperties?: string[];
50
70
  /** Default filter auto-applied to all repository operations. Bypassable via shouldSkipDefaultFilter. */
51
71
  defaultFilter?: TFilter;
72
+ /**
73
+ * Row scope: ANDed into every read and write whose scope is expressible as a filter clause, and
74
+ * NOT removable by `shouldSkipDefaultFilter`. Resolved per query, so it can depend on the current
75
+ * request. Ownership resolved per row or through a polymorphic reference is NOT expressible here -
76
+ * that check is still the application's to perform.
77
+ *
78
+ * Relational repositories only - a search-backed model (Typesense, Meilisearch) never reads
79
+ * this setting, so mirroring a scoped entity into a search index needs its own query-time scope.
80
+ */
81
+ scopeFilter?: IScopeFilterSettings;
52
82
  /** Default row limit when a query omits `limit`. Must be a positive integer. Falls back to DEFAULT_LIMIT (10). */
53
83
  defaultLimit?: number;
54
84
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/helpers/inversion/common/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/helpers/inversion/common/types.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,12 @@ import type { TConstValue } from '@venizia/ignis-helpers/common';
2
2
  export declare class AuthenticateStrategy {
3
3
  static readonly BASIC = "basic";
4
4
  static readonly JWT = "jwt";
5
+ static readonly SERVICE = "service";
6
+ /** The strategies the FRAMEWORK ships. An application registers its own beyond these. */
5
7
  static readonly SCHEME_SET: Set<string>;
6
8
  static isValid(input: string): boolean;
7
9
  }
8
- export type TAuthStrategy = TConstValue<typeof AuthenticateStrategy>;
10
+ export type TAuthStrategy = TConstValue<typeof AuthenticateStrategy> | (string & {});
9
11
  export declare class JOSEStandards {
10
12
  static readonly JWS = "JWS";
11
13
  static readonly JWKS = "JWKS";
@@ -16,6 +18,7 @@ export type TJOSEStandard = TConstValue<typeof JOSEStandards>;
16
18
  export declare class Authentication {
17
19
  static readonly STRATEGY_BASIC = "basic";
18
20
  static readonly STRATEGY_JWT = "jwt";
21
+ static readonly STRATEGY_SERVICE = "service";
19
22
  static readonly TYPE_BASIC = "Basic";
20
23
  static readonly TYPE_BEARER = "Bearer";
21
24
  static readonly AUTHENTICATION_STRATEGY = "authentication.strategy";
@@ -56,4 +59,28 @@ export declare class JWKSKeyFormats {
56
59
  static isValid(input: string): boolean;
57
60
  }
58
61
  export type TJWKSKeyFormat = TConstValue<typeof JWKSKeyFormats>;
62
+ /**
63
+ * Wire-level constants of the service assertion. Fixed rather than configurable: both ends of a
64
+ * call must agree on them, and a knob here would let two services disagree silently.
65
+ */
66
+ export declare class ServiceAssertion {
67
+ /** Its own header, so the end user's token keeps `Authorization` on the same request. */
68
+ static readonly HEADER = "x-service-assertion";
69
+ /** The JWS `typ`. What stops a user token being replayed as an assertion when one JWKS serves both. */
70
+ static readonly TYP = "svc+jwt";
71
+ static readonly ALGORITHM = "EdDSA";
72
+ static readonly DEFAULT_REST_PATH = "/svc-certs";
73
+ /** How long a minted assertion stays valid. */
74
+ static readonly DEFAULT_SIGN_LIFETIME_SECONDS = 60;
75
+ /** The oldest assertion a callee accepts, measured from `iat`. Its own decision, not the caller's. */
76
+ static readonly DEFAULT_ACCEPT_MAX_AGE_SECONDS = 60;
77
+ static readonly DEFAULT_CLOCK_TOLERANCE_SECONDS = 5;
78
+ /** Resolves the accepted age for one caller: its own override, then the service default. */
79
+ static resolveAcceptMaxAge(opts: {
80
+ callerOverride?: number;
81
+ serviceDefault?: number;
82
+ }): number;
83
+ static readonly DEFAULT_JWKS_CACHE_MAX_AGE_MS: number;
84
+ static readonly DEFAULT_JWKS_COOLDOWN_MS: number;
85
+ }
59
86
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/base/auth/authenticate/common/constants.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AAEjE,qBAAa,oBAAoB;IAC/B,MAAM,CAAC,QAAQ,CAAC,KAAK,WAAW;IAChC,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAE5B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAmC;IAE7D,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AACD,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAErE,qBAAa,aAAa;IACxB,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAE9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAkC;IAE5D,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC,OAAO,aAAa,CAAC,CAAC;AAE9D,qBAAa,cAAc;IAEzB,MAAM,CAAC,QAAQ,CAAC,cAAc,WAA8B;IAC5D,MAAM,CAAC,QAAQ,CAAC,YAAY,SAA4B;IAGxD,MAAM,CAAC,QAAQ,CAAC,UAAU,WAAW;IACrC,MAAM,CAAC,QAAQ,CAAC,WAAW,YAAY;IAEvC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,6BAA6B;IACpE,MAAM,CAAC,QAAQ,CAAC,mBAAmB,yBAAyB;IAE5D,MAAM,CAAC,QAAQ,CAAC,YAAY,uBAAuB;IACnD,MAAM,CAAC,QAAQ,CAAC,aAAa,mBAAmB;CACjD;AAED,qBAAa,wBAAwB;IACnC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,4BAA4B;IACnE,MAAM,CAAC,QAAQ,CAAC,iBAAiB,sBAAsB;IACvD,MAAM,CAAC,QAAQ,CAAC,kBAAkB,uBAAuB;CAC1D;AAED,qBAAa,mBAAmB;IAC9B,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAE5B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAiC;IAE3D,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,mBAAmB,CAAC,CAAC;AAEhE,qBAAa,SAAS;IACpB,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,QAAQ,cAAc;IAEtC,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAyC;IAEnE,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,MAAM,MAAM,SAAS,GAAG,WAAW,CAAC,OAAO,SAAS,CAAC,CAAC;AAEtD,qBAAa,cAAc;IACzB,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAC9B,MAAM,CAAC,QAAQ,CAAC,IAAI,UAAU;IAE9B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAmC;IAE7D,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,cAAc,CAAC,CAAC;AAEhE,qBAAa,cAAc;IACzB,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAC5B,MAAM,CAAC,QAAQ,CAAC,GAAG,SAAS;IAE5B,MAAM,CAAC,QAAQ,CAAC,UAAU,cAAiC;IAE3D,MAAM,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;CAGvC;AAED,MAAM,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,cAAc,CAAC,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../src/base/auth/authenticate/common/constants.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,9 @@
1
1
  export class AuthenticateStrategy {
2
2
  static { this.BASIC = 'basic'; }
3
3
  static { this.JWT = 'jwt'; }
4
- static { this.SCHEME_SET = new Set([this.BASIC, this.JWT]); }
4
+ static { this.SERVICE = 'service'; }
5
+ /** The strategies the FRAMEWORK ships. An application registers its own beyond these. */
6
+ static { this.SCHEME_SET = new Set([this.BASIC, this.JWT, this.SERVICE]); }
5
7
  static isValid(input) {
6
8
  return this.SCHEME_SET.has(input);
7
9
  }
@@ -18,6 +20,7 @@ export class Authentication {
18
20
  // Strategy
19
21
  static { this.STRATEGY_BASIC = AuthenticateStrategy.BASIC; }
20
22
  static { this.STRATEGY_JWT = AuthenticateStrategy.JWT; }
23
+ static { this.STRATEGY_SERVICE = AuthenticateStrategy.SERVICE; }
21
24
  // Token type
22
25
  static { this.TYPE_BASIC = 'Basic'; }
23
26
  static { this.TYPE_BEARER = 'Bearer'; }
@@ -63,4 +66,27 @@ export class JWKSKeyFormats {
63
66
  return this.SCHEME_SET.has(input);
64
67
  }
65
68
  }
69
+ /**
70
+ * Wire-level constants of the service assertion. Fixed rather than configurable: both ends of a
71
+ * call must agree on them, and a knob here would let two services disagree silently.
72
+ */
73
+ export class ServiceAssertion {
74
+ /** Its own header, so the end user's token keeps `Authorization` on the same request. */
75
+ static { this.HEADER = 'x-service-assertion'; }
76
+ /** The JWS `typ`. What stops a user token being replayed as an assertion when one JWKS serves both. */
77
+ static { this.TYP = 'svc+jwt'; }
78
+ static { this.ALGORITHM = 'EdDSA'; }
79
+ static { this.DEFAULT_REST_PATH = '/svc-certs'; }
80
+ /** How long a minted assertion stays valid. */
81
+ static { this.DEFAULT_SIGN_LIFETIME_SECONDS = 60; }
82
+ /** The oldest assertion a callee accepts, measured from `iat`. Its own decision, not the caller's. */
83
+ static { this.DEFAULT_ACCEPT_MAX_AGE_SECONDS = 60; }
84
+ static { this.DEFAULT_CLOCK_TOLERANCE_SECONDS = 5; }
85
+ /** Resolves the accepted age for one caller: its own override, then the service default. */
86
+ static resolveAcceptMaxAge(opts) {
87
+ return (opts.callerOverride ?? opts.serviceDefault ?? ServiceAssertion.DEFAULT_ACCEPT_MAX_AGE_SECONDS);
88
+ }
89
+ static { this.DEFAULT_JWKS_CACHE_MAX_AGE_MS = 10 * 60 * 1000; }
90
+ static { this.DEFAULT_JWKS_COOLDOWN_MS = 30 * 1000; }
91
+ }
66
92
  //# sourceMappingURL=constants.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../src/base/auth/authenticate/common/constants.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,oBAAoB;aACf,UAAK,GAAG,OAAO,CAAC;aAChB,QAAG,GAAG,KAAK,CAAC;aAEZ,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAE7D,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AAIH,MAAM,OAAO,aAAa;aACR,QAAG,GAAG,KAAK,CAAC;aACZ,SAAI,GAAG,MAAM,CAAC;aAEd,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE5D,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AAKH,MAAM,OAAO,cAAc;IACzB,WAAW;aACK,mBAAc,GAAG,oBAAoB,CAAC,KAAK,CAAC;aAC5C,iBAAY,GAAG,oBAAoB,CAAC,GAAG,CAAC;IAExD,aAAa;aACG,eAAU,GAAG,OAAO,CAAC;aACrB,gBAAW,GAAG,QAAQ,CAAC;aAEvB,4BAAuB,GAAG,yBAAyB,CAAC;aACpD,wBAAmB,GAAG,qBAAqB,CAAC;aAE5C,iBAAY,GAAG,mBAAmB,CAAC;aACnC,kBAAa,GAAG,eAAe,CAAC;;AAGlD,MAAM,OAAO,wBAAwB;aACnB,4BAAuB,GAAG,wBAAwB,CAAC;aACnD,sBAAiB,GAAG,kBAAkB,CAAC;aACvC,uBAAkB,GAAG,mBAAmB,CAAC;;AAG3D,MAAM,OAAO,mBAAmB;aACd,QAAG,GAAG,KAAK,CAAC;aACZ,QAAG,GAAG,KAAK,CAAC;aAEZ,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAE3D,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AAKH,MAAM,OAAO,SAAS;aACJ,WAAM,GAAG,QAAQ,CAAC;aAClB,aAAQ,GAAG,UAAU,CAAC;aAEtB,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC;IAEnE,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AAKH,MAAM,OAAO,cAAc;aACT,SAAI,GAAG,MAAM,CAAC;aACd,SAAI,GAAG,MAAM,CAAC;aAEd,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;IAE7D,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC;;AAKH,MAAM,OAAO,cAAc;aACT,QAAG,GAAG,KAAK,CAAC;aACZ,QAAG,GAAG,KAAK,CAAC;aAEZ,eAAU,GAAG,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IAE3D,MAAM,CAAC,OAAO,CAAC,KAAa;QAC1B,OAAO,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IACpC,CAAC"}
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../src/base/auth/authenticate/common/constants.ts"],"names":[],"mappings":"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"}
@@ -82,8 +82,47 @@ export declare const AuthenticationErrors: {
82
82
  readonly statusCode: 401;
83
83
  readonly category: "auth";
84
84
  };
85
+ readonly ASSERTION_MISSING: {
86
+ readonly message: {
87
+ readonly text: "Missing service assertion";
88
+ readonly code: "core.authentication.service.assertion_missing";
89
+ };
90
+ readonly statusCode: 401;
91
+ readonly category: "auth";
92
+ };
93
+ readonly ASSERTION_INVALID: {
94
+ readonly message: {
95
+ readonly text: "Invalid service assertion";
96
+ readonly code: "core.authentication.service.assertion_invalid";
97
+ };
98
+ readonly statusCode: 401;
99
+ readonly category: "auth";
100
+ };
101
+ readonly CALLER_NOT_ALLOWED: {
102
+ readonly message: {
103
+ readonly text: "Service caller is not allowed";
104
+ readonly code: "core.authentication.service.caller_not_allowed";
105
+ };
106
+ readonly statusCode: 401;
107
+ readonly category: "auth";
108
+ };
109
+ readonly REQUEST_BINDING_MISMATCH: {
110
+ readonly message: {
111
+ readonly text: "Service assertion does not match this request";
112
+ readonly code: "core.authentication.service.request_binding_mismatch";
113
+ };
114
+ readonly statusCode: 401;
115
+ readonly category: "auth";
116
+ };
117
+ readonly PRINCIPAL_UNRESOLVED: {
118
+ readonly message: {
119
+ readonly text: "Service caller resolved to no principal";
120
+ readonly code: "core.authentication.service.principal_unresolved";
121
+ };
122
+ readonly statusCode: 401;
123
+ readonly category: "auth";
124
+ };
85
125
  };
86
- /** Registers these codes with the shared key registry so a consumer gets autocomplete on `messageCode`. Augments the `/core` subpath, not the root barrel - kernel never imports the bare package, so nothing else in this program would make the root specifier resolvable for the merge. */
87
126
  declare module '@venizia/ignis-helpers/core' {
88
127
  interface IErrorKeyRegistry extends TRegisterErrors<typeof AuthenticationErrors> {
89
128
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../../../src/base/auth/authenticate/common/errors.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAIrF,kJAAkJ;AAClJ,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8B/B,iIAAiI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA2C9E,CAAC;AAEtD,8RAA8R;AAC9R,OAAO,QAAQ,6BAA6B,CAAC;IAC3C,UAAU,iBAAkB,SAAQ,eAAe,CAAC,OAAO,oBAAoB,CAAC;KAAG;CACpF"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../../../../../src/base/auth/authenticate/common/errors.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAGrF,kJAAkJ;AAClJ,eAAO,MAAM,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA8B/B,iIAAiI;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmF9E,CAAC;AAEtD,OAAO,QAAQ,6BAA6B,CAAC;IAC3C,UAAU,iBAAkB,SAAQ,eAAe,CAAC,OAAO,oBAAoB,CAAC;KAAG;CACpF"}
@@ -1,5 +1,5 @@
1
- import { ErrorScopes } from '@venizia/ignis-helpers/core';
2
1
  import { HTTP } from '@venizia/ignis-helpers/common';
2
+ import { ErrorScopes } from '@venizia/ignis-helpers/core';
3
3
  /** Codes a client branches on for a failed authentication. A throw site may override `message` for detail; the code and status come from here. */
4
4
  export const AuthenticationErrors = {
5
5
  HEADER_MISSING: {
@@ -74,5 +74,45 @@ export const AuthenticationErrors = {
74
74
  statusCode: HTTP.ResultCodes.RS_4.Unauthorized,
75
75
  category: ErrorScopes.AUTH,
76
76
  },
77
+ ASSERTION_MISSING: {
78
+ message: {
79
+ text: 'Missing service assertion',
80
+ code: 'core.authentication.service.assertion_missing',
81
+ },
82
+ statusCode: HTTP.ResultCodes.RS_4.Unauthorized,
83
+ category: ErrorScopes.AUTH,
84
+ },
85
+ ASSERTION_INVALID: {
86
+ message: {
87
+ text: 'Invalid service assertion',
88
+ code: 'core.authentication.service.assertion_invalid',
89
+ },
90
+ statusCode: HTTP.ResultCodes.RS_4.Unauthorized,
91
+ category: ErrorScopes.AUTH,
92
+ },
93
+ CALLER_NOT_ALLOWED: {
94
+ message: {
95
+ text: 'Service caller is not allowed',
96
+ code: 'core.authentication.service.caller_not_allowed',
97
+ },
98
+ statusCode: HTTP.ResultCodes.RS_4.Unauthorized,
99
+ category: ErrorScopes.AUTH,
100
+ },
101
+ REQUEST_BINDING_MISMATCH: {
102
+ message: {
103
+ text: 'Service assertion does not match this request',
104
+ code: 'core.authentication.service.request_binding_mismatch',
105
+ },
106
+ statusCode: HTTP.ResultCodes.RS_4.Unauthorized,
107
+ category: ErrorScopes.AUTH,
108
+ },
109
+ PRINCIPAL_UNRESOLVED: {
110
+ message: {
111
+ text: 'Service caller resolved to no principal',
112
+ code: 'core.authentication.service.principal_unresolved',
113
+ },
114
+ statusCode: HTTP.ResultCodes.RS_4.Unauthorized,
115
+ category: ErrorScopes.AUTH,
116
+ },
77
117
  };
78
118
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../../src/base/auth/authenticate/common/errors.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,6BAA6B,CAAC;AAC1D,OAAO,EAAE,IAAI,EAAE,MAAM,+BAA+B,CAAC;AAErD,kJAAkJ;AAClJ,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,cAAc,EAAE;QACd,OAAO,EAAE;YACP,IAAI,EAAE,8BAA8B;YACpC,IAAI,EAAE,oCAAoC;SAC3C;QACD,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY;QAC9C,QAAQ,EAAE,WAAW,CAAC,IAAI;KAC3B;IACD,cAAc,EAAE;QACd,OAAO,EAAE;YACP,IAAI,EAAE,kCAAkC;YACxC,IAAI,EAAE,oCAAoC;SAC3C;QACD,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY;QAC9C,QAAQ,EAAE,WAAW,CAAC,IAAI;KAC3B;IACD,gBAAgB,EAAE;QAChB,OAAO,EAAE;YACP,IAAI,EAAE,gCAAgC;YACtC,IAAI,EAAE,sCAAsC;SAC7C;QACD,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY;QAC9C,QAAQ,EAAE,WAAW,CAAC,IAAI;KAC3B;IACD,aAAa,EAAE;QACb,OAAO,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,mCAAmC,EAAE;QACrF,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY;QAC9C,QAAQ,EAAE,WAAW,CAAC,IAAI;KAC3B;IACD,iIAAiI;IACjI,aAAa,EAAE;QACb,OAAO,EAAE,EAAE,IAAI,EAAE,0BAA0B,EAAE,IAAI,EAAE,mCAAmC,EAAE;QACxF,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY;QAC9C,QAAQ,EAAE,WAAW,CAAC,IAAI;KAC3B;IACD,qBAAqB,EAAE;QACrB,OAAO,EAAE;YACP,IAAI,EAAE,uBAAuB;YAC7B,IAAI,EAAE,2CAA2C;SAClD;QACD,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY;QAC9C,QAAQ,EAAE,WAAW,CAAC,IAAI;KAC3B;IACD,qBAAqB,EAAE;QACrB,OAAO,EAAE;YACP,IAAI,EAAE,uBAAuB;YAC7B,IAAI,EAAE,2CAA2C;SAClD;QACD,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY;QAC9C,QAAQ,EAAE,WAAW,CAAC,IAAI;KAC3B;IACD,mBAAmB,EAAE;QACnB,OAAO,EAAE;YACP,IAAI,EAAE,8BAA8B;YACpC,IAAI,EAAE,yCAAyC;SAChD;QACD,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY;QAC9C,QAAQ,EAAE,WAAW,CAAC,IAAI;KAC3B;IACD,MAAM,EAAE;QACN,OAAO,EAAE,EAAE,IAAI,EAAE,uBAAuB,EAAE,IAAI,EAAE,4BAA4B,EAAE;QAC9E,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY;QAC9C,QAAQ,EAAE,WAAW,CAAC,IAAI;KAC3B;IACD,eAAe,EAAE;QACf,OAAO,EAAE;YACP,IAAI,EAAE,uCAAuC;YAC7C,IAAI,EAAE,qCAAqC;SAC5C;QACD,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,YAAY;QAC9C,QAAQ,EAAE,WAAW,CAAC,IAAI;KAC3B;CACkD,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../../../../../src/base/auth/authenticate/common/errors.ts"],"names":[],"mappings":"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"}
@@ -3,5 +3,7 @@ export declare class AuthenticateBindingKeys {
3
3
  static readonly JWT_OPTIONS = "@app/authenticate/jwt-options";
4
4
  static readonly JWKS_OPTIONS = "@app/authenticate/jwks-options";
5
5
  static readonly BASIC_OPTIONS = "@app/authenticate/basic-options";
6
+ static readonly SERVICE_OPTIONS = "@app/authenticate/service-options";
7
+ static readonly SERVICE_CERTS_PATH = "@app/authenticate/service-certs-path";
6
8
  }
7
9
  //# sourceMappingURL=keys.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../../../../src/base/auth/authenticate/common/keys.ts"],"names":[],"mappings":"AAAA,qBAAa,uBAAuB;IAClC,MAAM,CAAC,QAAQ,CAAC,YAAY,oCAAoC;IAChE,MAAM,CAAC,QAAQ,CAAC,WAAW,mCAAmC;IAC9D,MAAM,CAAC,QAAQ,CAAC,YAAY,oCAAoC;IAChE,MAAM,CAAC,QAAQ,CAAC,aAAa,qCAAqC;CACnE"}
1
+ {"version":3,"file":"keys.d.ts","sourceRoot":"","sources":["../../../../../../src/base/auth/authenticate/common/keys.ts"],"names":[],"mappings":"AAAA,qBAAa,uBAAuB;IAClC,MAAM,CAAC,QAAQ,CAAC,YAAY,oCAAoC;IAChE,MAAM,CAAC,QAAQ,CAAC,WAAW,mCAAmC;IAC9D,MAAM,CAAC,QAAQ,CAAC,YAAY,oCAAoC;IAChE,MAAM,CAAC,QAAQ,CAAC,aAAa,qCAAqC;IAClE,MAAM,CAAC,QAAQ,CAAC,eAAe,uCAAuC;IACtE,MAAM,CAAC,QAAQ,CAAC,kBAAkB,0CAA0C;CAC7E"}
@@ -3,5 +3,7 @@ export class AuthenticateBindingKeys {
3
3
  static { this.JWT_OPTIONS = '@app/authenticate/jwt-options'; }
4
4
  static { this.JWKS_OPTIONS = '@app/authenticate/jwks-options'; }
5
5
  static { this.BASIC_OPTIONS = '@app/authenticate/basic-options'; }
6
+ static { this.SERVICE_OPTIONS = '@app/authenticate/service-options'; }
7
+ static { this.SERVICE_CERTS_PATH = '@app/authenticate/service-certs-path'; }
6
8
  }
7
9
  //# sourceMappingURL=keys.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../../../../src/base/auth/authenticate/common/keys.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,uBAAuB;aAClB,iBAAY,GAAG,gCAAgC,CAAC;aAChD,gBAAW,GAAG,+BAA+B,CAAC;aAC9C,iBAAY,GAAG,gCAAgC,CAAC;aAChD,kBAAa,GAAG,iCAAiC,CAAC"}
1
+ {"version":3,"file":"keys.js","sourceRoot":"","sources":["../../../../../../src/base/auth/authenticate/common/keys.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,uBAAuB;aAClB,iBAAY,GAAG,gCAAgC,CAAC;aAChD,gBAAW,GAAG,+BAA+B,CAAC;aAC9C,iBAAY,GAAG,gCAAgC,CAAC;aAChD,kBAAa,GAAG,iCAAiC,CAAC;aAClD,oBAAe,GAAG,mCAAmC,CAAC;aACtD,uBAAkB,GAAG,sCAAsC,CAAC"}