@jantstack/adonis-authz 1.1.0 → 2.4.0-alpha.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 (236) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +837 -51
  3. package/build/commands/authz_catalog_diff.d.ts +28 -0
  4. package/build/commands/authz_catalog_diff.d.ts.map +1 -0
  5. package/build/commands/authz_catalog_diff.js +67 -0
  6. package/build/commands/authz_catalog_diff.js.map +1 -0
  7. package/build/commands/authz_catalog_prune_orphans.d.ts +78 -0
  8. package/build/commands/authz_catalog_prune_orphans.d.ts.map +1 -0
  9. package/build/commands/authz_catalog_prune_orphans.js +136 -0
  10. package/build/commands/authz_catalog_prune_orphans.js.map +1 -0
  11. package/build/commands/authz_catalog_sync.d.ts +37 -0
  12. package/build/commands/authz_catalog_sync.d.ts.map +1 -0
  13. package/build/commands/authz_catalog_sync.js +81 -0
  14. package/build/commands/authz_catalog_sync.js.map +1 -0
  15. package/build/commands/authz_freeze.d.ts +44 -0
  16. package/build/commands/authz_freeze.d.ts.map +1 -0
  17. package/build/commands/authz_freeze.js +95 -0
  18. package/build/commands/authz_freeze.js.map +1 -0
  19. package/build/commands/authz_reconcile.d.ts +102 -0
  20. package/build/commands/authz_reconcile.d.ts.map +1 -0
  21. package/build/commands/authz_reconcile.js +294 -0
  22. package/build/commands/authz_reconcile.js.map +1 -0
  23. package/build/commands/authz_relations_reconcile.d.ts +73 -0
  24. package/build/commands/authz_relations_reconcile.d.ts.map +1 -0
  25. package/build/commands/authz_relations_reconcile.js +225 -0
  26. package/build/commands/authz_relations_reconcile.js.map +1 -0
  27. package/build/commands/authz_scopes_relay.d.ts +47 -0
  28. package/build/commands/authz_scopes_relay.d.ts.map +1 -0
  29. package/build/commands/authz_scopes_relay.js +141 -0
  30. package/build/commands/authz_scopes_relay.js.map +1 -0
  31. package/build/commands/authz_unfreeze.d.ts +37 -0
  32. package/build/commands/authz_unfreeze.d.ts.map +1 -0
  33. package/build/commands/authz_unfreeze.js +92 -0
  34. package/build/commands/authz_unfreeze.js.map +1 -0
  35. package/build/commands/main.d.ts +8 -1
  36. package/build/commands/main.d.ts.map +1 -1
  37. package/build/commands/main.js +8 -1
  38. package/build/commands/main.js.map +1 -1
  39. package/build/commands/openfga_provision.d.ts +46 -4
  40. package/build/commands/openfga_provision.d.ts.map +1 -1
  41. package/build/commands/openfga_provision.js +91 -7
  42. package/build/commands/openfga_provision.js.map +1 -1
  43. package/build/configure.d.ts +11 -0
  44. package/build/configure.d.ts.map +1 -1
  45. package/build/configure.js +37 -1
  46. package/build/configure.js.map +1 -1
  47. package/build/index.d.ts +75 -7
  48. package/build/index.d.ts.map +1 -1
  49. package/build/index.js +67 -5
  50. package/build/index.js.map +1 -1
  51. package/build/providers/authz_provider.d.ts +26 -2
  52. package/build/providers/authz_provider.d.ts.map +1 -1
  53. package/build/providers/authz_provider.js +48 -2
  54. package/build/providers/authz_provider.js.map +1 -1
  55. package/build/services/relations.d.ts +14 -0
  56. package/build/services/relations.d.ts.map +1 -0
  57. package/build/services/relations.js +17 -0
  58. package/build/services/relations.js.map +1 -0
  59. package/build/src/catalog/catalog.d.ts +289 -0
  60. package/build/src/catalog/catalog.d.ts.map +1 -0
  61. package/build/src/catalog/catalog.js +859 -0
  62. package/build/src/catalog/catalog.js.map +1 -0
  63. package/build/src/catalog/catalog_cache.d.ts +324 -0
  64. package/build/src/catalog/catalog_cache.d.ts.map +1 -0
  65. package/build/src/catalog/catalog_cache.js +666 -0
  66. package/build/src/catalog/catalog_cache.js.map +1 -0
  67. package/build/src/clock.d.ts +24 -0
  68. package/build/src/clock.d.ts.map +1 -0
  69. package/build/src/clock.js +7 -0
  70. package/build/src/clock.js.map +1 -0
  71. package/build/src/define_config.d.ts +201 -7
  72. package/build/src/define_config.d.ts.map +1 -1
  73. package/build/src/define_config.js.map +1 -1
  74. package/build/src/drivers/database_driver.d.ts +324 -15
  75. package/build/src/drivers/database_driver.d.ts.map +1 -1
  76. package/build/src/drivers/database_driver.js +1107 -128
  77. package/build/src/drivers/database_driver.js.map +1 -1
  78. package/build/src/drivers/database_relations_driver.d.ts +75 -0
  79. package/build/src/drivers/database_relations_driver.d.ts.map +1 -0
  80. package/build/src/drivers/database_relations_driver.js +450 -0
  81. package/build/src/drivers/database_relations_driver.js.map +1 -0
  82. package/build/src/drivers/openfga_driver.d.ts +963 -55
  83. package/build/src/drivers/openfga_driver.d.ts.map +1 -1
  84. package/build/src/drivers/openfga_driver.js +2693 -372
  85. package/build/src/drivers/openfga_driver.js.map +1 -1
  86. package/build/src/drivers/openfga_facts.d.ts +369 -0
  87. package/build/src/drivers/openfga_facts.d.ts.map +1 -0
  88. package/build/src/drivers/openfga_facts.js +813 -0
  89. package/build/src/drivers/openfga_facts.js.map +1 -0
  90. package/build/src/drivers/openfga_relations_driver.d.ts +120 -0
  91. package/build/src/drivers/openfga_relations_driver.d.ts.map +1 -0
  92. package/build/src/drivers/openfga_relations_driver.js +466 -0
  93. package/build/src/drivers/openfga_relations_driver.js.map +1 -0
  94. package/build/src/errors.d.ts +586 -0
  95. package/build/src/errors.d.ts.map +1 -1
  96. package/build/src/errors.js +583 -0
  97. package/build/src/errors.js.map +1 -1
  98. package/build/src/expiry.d.ts +27 -0
  99. package/build/src/expiry.d.ts.map +1 -0
  100. package/build/src/expiry.js +50 -0
  101. package/build/src/expiry.js.map +1 -0
  102. package/build/src/freeze.d.ts +120 -0
  103. package/build/src/freeze.d.ts.map +1 -0
  104. package/build/src/freeze.js +172 -0
  105. package/build/src/freeze.js.map +1 -0
  106. package/build/src/hierarchical_resolver.d.ts +56 -0
  107. package/build/src/hierarchical_resolver.d.ts.map +1 -0
  108. package/build/src/hierarchical_resolver.js +87 -0
  109. package/build/src/hierarchical_resolver.js.map +1 -0
  110. package/build/src/{middleware → http}/app_access_middleware.d.ts +8 -6
  111. package/build/src/http/app_access_middleware.d.ts.map +1 -0
  112. package/build/src/{middleware → http}/app_access_middleware.js +10 -26
  113. package/build/src/http/app_access_middleware.js.map +1 -0
  114. package/build/src/http/resource_access_middleware.d.ts +105 -0
  115. package/build/src/http/resource_access_middleware.d.ts.map +1 -0
  116. package/build/src/http/resource_access_middleware.js +81 -0
  117. package/build/src/http/resource_access_middleware.js.map +1 -0
  118. package/build/src/identity.d.ts +228 -0
  119. package/build/src/identity.d.ts.map +1 -0
  120. package/build/src/identity.js +457 -0
  121. package/build/src/identity.js.map +1 -0
  122. package/build/src/manager.d.ts +536 -7
  123. package/build/src/manager.d.ts.map +1 -1
  124. package/build/src/manager.js +2676 -23
  125. package/build/src/manager.js.map +1 -1
  126. package/build/src/memoize_ancestors.d.ts +23 -0
  127. package/build/src/memoize_ancestors.d.ts.map +1 -0
  128. package/build/src/memoize_ancestors.js +42 -0
  129. package/build/src/memoize_ancestors.js.map +1 -0
  130. package/build/src/models/authz_assignment.d.ts +11 -11
  131. package/build/src/models/authz_assignment.d.ts.map +1 -1
  132. package/build/src/models/authz_deny.d.ts +11 -11
  133. package/build/src/models/authz_deny.d.ts.map +1 -1
  134. package/build/src/models/authz_permission.d.ts +17 -11
  135. package/build/src/models/authz_permission.d.ts.map +1 -1
  136. package/build/src/models/authz_permission.js +4 -0
  137. package/build/src/models/authz_permission.js.map +1 -1
  138. package/build/src/models/authz_role.d.ts +19 -12
  139. package/build/src/models/authz_role.d.ts.map +1 -1
  140. package/build/src/models/authz_role.js +6 -1
  141. package/build/src/models/authz_role.js.map +1 -1
  142. package/build/src/models/authz_role_permission.d.ts +11 -11
  143. package/build/src/models/authz_role_permission.d.ts.map +1 -1
  144. package/build/src/openfga.d.ts +29 -0
  145. package/build/src/openfga.d.ts.map +1 -0
  146. package/build/src/openfga.js +26 -0
  147. package/build/src/openfga.js.map +1 -0
  148. package/build/src/reconcile.d.ts +37 -0
  149. package/build/src/reconcile.d.ts.map +1 -0
  150. package/build/src/reconcile.js +69 -0
  151. package/build/src/reconcile.js.map +1 -0
  152. package/build/src/relation_partition_trigger.d.ts +8 -0
  153. package/build/src/relation_partition_trigger.d.ts.map +1 -0
  154. package/build/src/relation_partition_trigger.js +85 -0
  155. package/build/src/relation_partition_trigger.js.map +1 -0
  156. package/build/src/relations/define_relations_config.d.ts +58 -0
  157. package/build/src/relations/define_relations_config.d.ts.map +1 -0
  158. package/build/src/relations/define_relations_config.js +144 -0
  159. package/build/src/relations/define_relations_config.js.map +1 -0
  160. package/build/src/relations/manager.d.ts +38 -0
  161. package/build/src/relations/manager.d.ts.map +1 -0
  162. package/build/src/relations/manager.js +156 -0
  163. package/build/src/relations/manager.js.map +1 -0
  164. package/build/src/relations/reconcile.d.ts +62 -0
  165. package/build/src/relations/reconcile.d.ts.map +1 -0
  166. package/build/src/relations/reconcile.js +138 -0
  167. package/build/src/relations/reconcile.js.map +1 -0
  168. package/build/src/relations_config_store.d.ts +22 -0
  169. package/build/src/relations_config_store.d.ts.map +1 -0
  170. package/build/src/relations_config_store.js +74 -0
  171. package/build/src/relations_config_store.js.map +1 -0
  172. package/build/src/scope_outbox.d.ts +69 -0
  173. package/build/src/scope_outbox.d.ts.map +1 -0
  174. package/build/src/scope_outbox.js +291 -0
  175. package/build/src/scope_outbox.js.map +1 -0
  176. package/build/src/shared/backend_guard.d.ts +106 -0
  177. package/build/src/shared/backend_guard.d.ts.map +1 -0
  178. package/build/src/shared/backend_guard.js +246 -0
  179. package/build/src/shared/backend_guard.js.map +1 -0
  180. package/build/src/shared/sql_expiry.d.ts +53 -0
  181. package/build/src/shared/sql_expiry.d.ts.map +1 -0
  182. package/build/src/shared/sql_expiry.js +66 -0
  183. package/build/src/shared/sql_expiry.js.map +1 -0
  184. package/build/src/sql_descendants.d.ts +97 -0
  185. package/build/src/sql_descendants.d.ts.map +1 -0
  186. package/build/src/sql_descendants.js +203 -0
  187. package/build/src/sql_descendants.js.map +1 -0
  188. package/build/src/testing/contract.d.ts +212 -7
  189. package/build/src/testing/contract.d.ts.map +1 -1
  190. package/build/src/testing/contract.js +3449 -24
  191. package/build/src/testing/contract.js.map +1 -1
  192. package/build/src/testing/main.d.ts +10 -2
  193. package/build/src/testing/main.d.ts.map +1 -1
  194. package/build/src/testing/main.js +5 -1
  195. package/build/src/testing/main.js.map +1 -1
  196. package/build/src/testing/migration_contract.d.ts +284 -0
  197. package/build/src/testing/migration_contract.d.ts.map +1 -0
  198. package/build/src/testing/migration_contract.js +586 -0
  199. package/build/src/testing/migration_contract.js.map +1 -0
  200. package/build/src/testing/relations_contract.d.ts +51 -0
  201. package/build/src/testing/relations_contract.d.ts.map +1 -0
  202. package/build/src/testing/relations_contract.js +654 -0
  203. package/build/src/testing/relations_contract.js.map +1 -0
  204. package/build/src/testing/relations_reconcile_contract.d.ts +24 -0
  205. package/build/src/testing/relations_reconcile_contract.d.ts.map +1 -0
  206. package/build/src/testing/relations_reconcile_contract.js +172 -0
  207. package/build/src/testing/relations_reconcile_contract.js.map +1 -0
  208. package/build/src/testing/scope_tree.d.ts +65 -0
  209. package/build/src/testing/scope_tree.d.ts.map +1 -0
  210. package/build/src/testing/scope_tree.js +145 -0
  211. package/build/src/testing/scope_tree.js.map +1 -0
  212. package/build/src/traits/authz_scopes.d.ts +30 -6
  213. package/build/src/traits/authz_scopes.d.ts.map +1 -1
  214. package/build/src/traits/authz_scopes.js +30 -18
  215. package/build/src/traits/authz_scopes.js.map +1 -1
  216. package/build/src/traits/has_uuid.d.ts +12 -12
  217. package/build/src/traits/has_uuid.d.ts.map +1 -1
  218. package/build/src/types.d.ts +1313 -28
  219. package/build/src/types.d.ts.map +1 -1
  220. package/build/src/types.js +20 -4
  221. package/build/src/types.js.map +1 -1
  222. package/build/stubs/config/app_acl.stub +4 -2
  223. package/build/stubs/config/authorization.stub +168 -14
  224. package/build/stubs/migration.stub +183 -13
  225. package/build/stubs/scopes_outbox_migration.stub +57 -0
  226. package/package.json +14 -7
  227. package/build/commands/openfga_import.d.ts +0 -28
  228. package/build/commands/openfga_import.d.ts.map +0 -1
  229. package/build/commands/openfga_import.js +0 -74
  230. package/build/commands/openfga_import.js.map +0 -1
  231. package/build/src/catalog.d.ts +0 -3
  232. package/build/src/catalog.d.ts.map +0 -1
  233. package/build/src/catalog.js +0 -103
  234. package/build/src/catalog.js.map +0 -1
  235. package/build/src/middleware/app_access_middleware.d.ts.map +0 -1
  236. package/build/src/middleware/app_access_middleware.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"catalog_cache.js","sourceRoot":"","sources":["../../../src/catalog/catalog_cache.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ /**
2
+ * EL reloj del motor (2.5 · J1). Es el ÚNICO sitio de `src/` donde se lee la
3
+ * hora de pared (`new Date()`); lo vigila `tests/clock.spec.ts` con un grep
4
+ * sobre las fuentes. Todo lo que decide con el tiempo —la caducidad en SQL
5
+ * (`whereActive`), el `current_time` de cada check de FGA, el filtro de
6
+ * caducidad en cliente de las enumeraciones y los tres estados de
7
+ * `resolveGrantExpiry`— lo hace con un `now()` inyectable, por defecto este.
8
+ *
9
+ * Por qué: con `new Date()` suelto, la caducidad exacta, la renovación y
10
+ * «expira ahora mismo» solo eran observables durmiendo (el juez esperaba
11
+ * 1,5 s de reloj real). Con el reloj inyectado el juez fija el instante y
12
+ * pregunta; y un consumidor puede congelarlo en sus propios tests.
13
+ *
14
+ * Lo que NO es: no es el reloj MONÓTONO de `forRequest({ maxAgeMs })` ni del
15
+ * memo del catálogo (`everyMs`), que miden ventanas con `performance.now()`
16
+ * y no deben moverse con NTP. Aquí se habla de instantes de pared, que es lo
17
+ * que `expiresAt` significa.
18
+ */
19
+ export type Clock = () => Date;
20
+ /** Reloj de pared del proceso: el default de ambos drivers. */
21
+ export declare const systemClock: Clock;
22
+ /** `now` tiene que ser una función; se valida al construir (500 `E_AUTHZ_CONFIG` es del llamante). */
23
+ export declare function isClock(value: unknown): value is Clock;
24
+ //# sourceMappingURL=clock.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clock.d.ts","sourceRoot":"","sources":["../../src/clock.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,MAAM,KAAK,GAAG,MAAM,IAAI,CAAA;AAE9B,+DAA+D;AAC/D,eAAO,MAAM,WAAW,EAAE,KAAwB,CAAA;AAElD,sGAAsG;AACtG,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,KAAK,CAEtD"}
@@ -0,0 +1,7 @@
1
+ /** Reloj de pared del proceso: el default de ambos drivers. */
2
+ export const systemClock = () => new Date();
3
+ /** `now` tiene que ser una función; se valida al construir (500 `E_AUTHZ_CONFIG` es del llamante). */
4
+ export function isClock(value) {
5
+ return typeof value === 'function';
6
+ }
7
+ //# sourceMappingURL=clock.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"clock.js","sourceRoot":"","sources":["../../src/clock.ts"],"names":[],"mappings":"AAoBA,+DAA+D;AAC/D,MAAM,CAAC,MAAM,WAAW,GAAU,GAAG,EAAE,CAAC,IAAI,IAAI,EAAE,CAAA;AAElD,sGAAsG;AACtG,MAAM,UAAU,OAAO,CAAC,KAAc;IACpC,OAAO,OAAO,KAAK,KAAK,UAAU,CAAA;AACpC,CAAC"}
@@ -1,5 +1,6 @@
1
- import type { AuthorizationDriverFactory, AuthzWriteEvent } from './types.js';
2
- import type { HolderTypeMap } from './drivers/openfga_driver.js';
1
+ import type { AuthorizationDriverFactory, AuthzCatalogWriteEvent, AuthzWriteEvent, HolderTypeMap, RelationsDriverFactory, ScopeChainResolver, ScopeDescendantsResolver, ScopeEdgesEnumerator, ScopeOutbox } from './types.js';
2
+ import type { CatalogSource } from './catalog/catalog.js';
3
+ import type { RelationsConfig } from './relations/define_relations_config.js';
3
4
  /**
4
5
  * Config del sistema de autorización. Todo lo específico del consumidor
5
6
  * entra por aquí: qué drivers existen, cuál está activo, cómo se llaman sus
@@ -9,7 +10,7 @@ import type { HolderTypeMap } from './drivers/openfga_driver.js';
9
10
  * default: env.get('AUTHZ_DRIVER', 'database'),
10
11
  * holderTypes: { users: 'user', admins: 'admin' },
11
12
  * drivers: {
12
- * database: () => new DatabaseAuthorizationDriver({ resolveAncestors }),
13
+ * database: () => new DatabaseAuthorizationDriver({ resolveChain }),
13
14
  * 'mi-driver': () => new MiDriver(),
14
15
  * },
15
16
  * hooks: { onWrite: auditarEscritura },
@@ -25,7 +26,7 @@ export interface AuthorizationConfig {
25
26
  /**
26
27
  * Holders del consumidor: morph name (`@MorphMap` del modelo) → tipo del
27
28
  * modelo FGA. Lo necesitan el driver `openfga` y los comandos
28
- * `openfga:provision` / `openfga:import`; el driver `database` lo ignora.
29
+ * `openfga:provision`; el driver `database` lo ignora.
29
30
  */
30
31
  holderTypes?: HolderTypeMap;
31
32
  /**
@@ -39,14 +40,207 @@ export interface AuthorizationConfig {
39
40
  /** Nombre del store al provisionar. */
40
41
  storeName?: string;
41
42
  };
43
+ /**
44
+ * El árbol de scopes del consumidor: la ÚNICA costura entre su dominio y el
45
+ * motor. `resolveChain(scope)` devuelve la cadena canónica `[scope tal
46
+ * como está en tu tabla, ...ancestros]` (del más cercano a la raíz, `app`
47
+ * al final), o `null` si el scope no existe (2.5-B · K1: la identidad de un
48
+ * scope es la que devuelve el resolutor, nunca la forma con la que lo
49
+ * escribió el llamante). El mismo resolutor se pasa a los drivers; aquí lo
50
+ * usa el manager para validar `scopes.attached/moved` (padre existente,
51
+ * sin ciclos) antes de tocar el driver.
52
+ */
53
+ scopes?: {
54
+ resolveChain: ScopeChainResolver;
55
+ /**
56
+ * Descendientes de un scope (2.1, B2). Solo lo usa `authorizedScopes`;
57
+ * sin él esa primitiva lanza 500 `E_AUTHZ_NO_DESCENDANTS_RESOLVER` (nunca
58
+ * una lista incompleta). `sqlDescendantsOf(...)` lo genera para una tabla
59
+ * con columna padre (PG y SQLite).
60
+ */
61
+ descendantsOf?: ScopeDescendantsResolver;
62
+ /**
63
+ * **El árbol entero, paginado** (3b-3a): lo que `authz:reconcile` usa
64
+ * para reconstruir —y para PODAR— el árbol de un driver que lo guarda
65
+ * como hechos propios (`openfga` en modo `facts`). `resolveChain`
66
+ * responde por un scope; esto los enumera todos.
67
+ *
68
+ * scopes: {
69
+ * resolveChain,
70
+ * enumerateEdges: sqlScopeEdges({
71
+ * table: 'organization_nodes', uuidColumn: 'uuid',
72
+ * parentColumn: 'parent_uuid', typeColumn: 'kind',
73
+ * }),
74
+ * }
75
+ *
76
+ * Solo lo usa `authz:reconcile`: sin él la migración del ÁRBOL no se
77
+ * hace y el comando lo dice (500 `E_AUTHZ_CONFIG`) en vez de suponer que
78
+ * el árbol del backend ya está bien.
79
+ */
80
+ enumerateEdges?: ScopeEdgesEnumerator;
81
+ /**
82
+ * Tope de scopes que `authorizedScopes` devuelve (default 1000); superado
83
+ * ⇒ 422 `E_AUTHZ_TOO_MANY_SCOPES`, nunca parcial. Se puede bajar por
84
+ * llamada (`{ maxScopes }`).
85
+ */
86
+ maxScopes?: number;
87
+ /**
88
+ * Tope de nodos por llamada a `descendantsOf` (default 10 000): es el
89
+ * `maxNodes` que recibe el resolutor, y si devuelve más el manager lanza
90
+ * 422 `E_AUTHZ_TOO_MANY_SCOPES`. Ni esta cota ni `maxScopes` pueden
91
+ * superar `MAX_SCOPE_BOUND` (10 000 000; 500 `E_AUTHZ_CONFIG` si lo
92
+ * hacen, 2.5-B · ⚪6).
93
+ */
94
+ maxDescendants?: number;
95
+ /**
96
+ * **La outbox del árbol** (3b-2d, panel 2 cruce 4 · S5). Con ella,
97
+ * `manager.scopes.attached/moved/detached` NO escriben en el backend:
98
+ * ENCOLAN el cambio —pásale tu transacción en
99
+ * `{ transaction }`— y lo aplica después `node ace authz:scopes:relay`.
100
+ *
101
+ * Sin ella, el paquete escribe en el backend dentro de TU transacción y
102
+ * un `rollback` posterior no lo deshace: el árbol del backend queda
103
+ * adelantado al tuyo y, en `hierarchy: 'facts'` (donde FGA es el PDP),
104
+ * eso es una escalada persistente e invisible desde tu base. Por eso el
105
+ * driver `facts` se niega a construirse sin outbox y sin
106
+ * `acceptScopeDriftRisk: true`.
107
+ *
108
+ * El paquete no impone tabla: `sqlScopeOutbox(...)` implementa el puerto
109
+ * sobre Lucid y `stubs/scopes_outbox_migration.stub` es la migración que
110
+ * puedes copiar, pero cualquier implementación del puerto vale.
111
+ *
112
+ * Lo que la outbox NO arregla: durante el lag del relay (segundos) el
113
+ * backend decide con el árbol VIEJO. Es un fail-open temporal —el tenant
114
+ * antiguo conserva acceso tras un `moved`, los denies heredados no
115
+ * aplican tras un `attached`—. No hay 2PC.
116
+ */
117
+ outbox?: ScopeOutbox;
118
+ /**
119
+ * «Sé que sin outbox un `rollback` de mi transacción deja el árbol del
120
+ * backend adelantado al mío, y lo asumo» (3b-2e · E3). Es la salida
121
+ * explícita del gate del MANAGER, que es quien encola: declarar la outbox
122
+ * solo en el driver dejaba el gate del driver contento y la mitigación
123
+ * APAGADA. Tiene que ser el booleano `true`: un valor «truthy» no es una
124
+ * aceptación.
125
+ */
126
+ acceptScopeDriftRisk?: boolean;
127
+ };
128
+ /**
129
+ * Catálogos de roles/permisos del consumidor (uno por módulo: plataforma,
130
+ * tenant…). Los usan `authz:catalog:sync` (los sincroniza en orden, con
131
+ * poda de vínculos) y `authz:catalog:diff` (falla en CI si la base no
132
+ * coincide con el config). Funciones y no valores: un catálogo puede vivir
133
+ * en otro archivo y cargarse perezosamente.
134
+ */
135
+ catalogs?: CatalogSource[];
136
+ /**
137
+ * Reloj de pared del motor (2.5 · J1): el `now()` con el que TODO driver
138
+ * resuelto por este manager decide la caducidad (`expires_at` en SQL,
139
+ * `current_time` de FGA, filtros en cliente, los tres estados del
140
+ * re-grant). Default: `new Date()` en el driver. El manager lo aplica al
141
+ * resolver el driver (`driver.withClock(clock)`) y todas sus vistas de
142
+ * `forRequest()` lo comparten; un driver sin `withClock` con `clock`
143
+ * declarado es 500 `E_AUTHZ_CONFIG` (nunca un reloj ignorado en silencio).
144
+ * Para tests del consumidor y para un reloj corregido (NTP en el proceso);
145
+ * NO es el reloj monótono de `forRequest({ maxAgeMs })`.
146
+ */
147
+ clock?: () => Date;
148
+ /**
149
+ * Toda escritura (`grant`, `revoke`, `deny`, `removeDeny`, `scopes.*`)
150
+ * tiene que llevar `actor` (2.1, B7); sin él, 422 `E_AUTHZ_ACTOR_REQUIRED`
151
+ * antes de tocar el driver. Default `false`: opt-in, y el manager lo avisa
152
+ * al construirse (ver `warnOnOptInSecurity`).
153
+ */
154
+ requireActor?: boolean;
155
+ /**
156
+ * Las SEIS escrituras (`grant`, `revoke`, `deny`, `removeDeny`,
157
+ * `scopes.attached/moved/detached`) tienen que declarar `within` (2.1, B1;
158
+ * 2D · F2; en `moved`/`attached` contra destino Y origen, 2E · H1): sin él,
159
+ * 422 `E_AUTHZ_WITHIN_REQUIRED`. `within` se toma de la SESIÓN (tenant
160
+ * autenticado), nunca de la misma entrada que el scope. `'non-root'` exige
161
+ * además que `within` no sea `APP_SCOPE` (422 `E_AUTHZ_WITHIN_ROOT_FORBIDDEN`):
162
+ * la raíz contiene todo y como contención no dice nada; la plataforma, que
163
+ * sí escribe en la raíz, usa `manager.driver()` o una config sin el flag.
164
+ * Default `false` (auditor E2, aceptado y nombrado): la contención es
165
+ * opt-in en 2.1; con `false` un call-site que no la declare escribe donde
166
+ * le digan. Ponlo en `true`/`'non-root'` en cuanto todos los call-sites de
167
+ * tenant la pasen.
168
+ */
169
+ requireWithin?: boolean | 'non-root';
170
+ /**
171
+ * El manager avisa por `console.warn` UNA vez por config cuando
172
+ * `requireWithin`/`requireActor` no están en `true` (seguridad opt-in).
173
+ * `false` lo silencia: es la forma de decir "lo sé y lo asumo".
174
+ */
175
+ warnOnOptInSecurity?: boolean;
176
+ /**
177
+ * Lista BLANCA de permisos que la API de delegación puede meter en un rol
178
+ * local (3B · B3): `defineScopedRole`/`updateScopedRole` rechazan (422
179
+ * `E_AUTHZ_PERMISSION_NOT_DELEGABLE`) cualquier permiso fuera de ella,
180
+ * aunque el actor lo tenga. Default `[]`: nadie delega nada hasta que la
181
+ * plataforma declare qué se puede delegar (los permisos de plataforma
182
+ * —`app:*`, ajustes de organización— no deberían estar). Además el actor
183
+ * tiene que tener cada permiso EFECTIVO en el owner (sin deny).
184
+ */
185
+ delegablePermissions?: string[];
186
+ /**
187
+ * **ReBAC genérico** (Fase 4, `relations/`). Los drivers del puerto
188
+ * `RelationsDriver`, por clave, análogos a `drivers` de roles, más la CONFIG
189
+ * de relaciones (`defineRelationsConfig`) que declara los tipos y sus
190
+ * relaciones. La factory del driver `openfga` de relaciones entra por el
191
+ * subpath `/openfga` DENTRO de ella, como la de roles, así que ningún comando
192
+ * importa el SDK.
193
+ *
194
+ * const relationsConfig = defineRelationsConfig({
195
+ * objectTypes: [{ type: 'document', relations: [{ name: 'viewer' }] }],
196
+ * holderTypes: ['user'],
197
+ * })
198
+ * relations: {
199
+ * config: relationsConfig,
200
+ * default: env.get('AUTHZ_DRIVER', 'database'),
201
+ * drivers: {
202
+ * database: () => new DatabaseRelationsDriver(relationsConfig),
203
+ * openfga: () => new OpenFgaRelationsDriver(relationsConfig, { ... }),
204
+ * },
205
+ * }
206
+ *
207
+ * Con `config` declarado, el paquete cablea el `RelationsManager` como
208
+ * singleton (servicio `@jantstack/adonis-authz/services/relations`, análogo
209
+ * al de roles) y `openfga:provision` incluye los tipos de relación en el
210
+ * modelo `facts` que publica (así un store recién aprovisionado ya acepta
211
+ * tuplas de relación sin un `authz:catalog:sync` previo). `drivers` los usa
212
+ * además `authz:relations:reconcile` para el ORIGEN y el DESTINO de una
213
+ * migración de tuplas.
214
+ */
215
+ relations?: {
216
+ /**
217
+ * La config de relaciones (`defineRelationsConfig(...)`): los tipos de
218
+ * objeto y sus relaciones. Es lo que el `RelationsManager` de servicio usa
219
+ * para F-05 (rechazar un tipo/relación no declarado) y lo que
220
+ * `openfga:provision` mete en el modelo `facts`. Es la MISMA instancia que
221
+ * las factories de `drivers` capturan para construir sus drivers.
222
+ */
223
+ config?: RelationsConfig;
224
+ /**
225
+ * Clave del driver de relaciones ACTIVO (en `drivers`) que el singleton de
226
+ * servicio resuelve. Default: el `default` de roles (los drivers de
227
+ * relaciones se nombran igual que los de roles).
228
+ */
229
+ default?: string;
230
+ drivers?: Record<string, RelationsDriverFactory>;
231
+ };
42
232
  /**
43
233
  * Hooks del consumidor. `onWrite` se llama tras cada escritura del motor
44
- * (grant/revoke/deny/removeDeny) — el sitio natural para auditar o emitir
45
- * eventos. No debe lanzar: una escritura ya aplicada no se revierte por un
46
- * side-effect fallido.
234
+ * (grant/extended/revoke/deny/removeDeny/scope_purged) — el sitio natural
235
+ * para auditar o emitir eventos. `onCatalogWrite` (3B · B3) tras cada
236
+ * escritura del CATÁLOGO por la API de delegación (`role_defined`,
237
+ * `role_updated`, `role_purged`), siempre con actor. Ninguno debe lanzar:
238
+ * una escritura ya aplicada no se revierte por un side-effect fallido (se
239
+ * registra y se sigue).
47
240
  */
48
241
  hooks?: {
49
242
  onWrite?: (event: AuthzWriteEvent) => Promise<void>;
243
+ onCatalogWrite?: (event: AuthzCatalogWriteEvent) => Promise<void>;
50
244
  };
51
245
  }
52
246
  export declare function defineConfig<T extends AuthorizationConfig>(config: T): T;
@@ -1 +1 @@
1
- {"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,0BAA0B,EAAE,eAAe,EAAE,MAAM,YAAY,CAAA;AAC7E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAA;AAEhE;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,mBAAmB;IAClC,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAA;IAEnD;;;;OAIG;IACH,WAAW,CAAC,EAAE,aAAa,CAAA;IAE3B;;;OAGG;IACH,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,uCAAuC;QACvC,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;IAED;;;;;OAKG;IACH,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KACpD,CAAA;CACF;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,mBAAmB,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAExE"}
1
+ {"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,0BAA0B,EAC1B,sBAAsB,EACtB,eAAe,EACf,aAAa,EACb,sBAAsB,EACtB,kBAAkB,EAClB,wBAAwB,EACxB,oBAAoB,EACpB,WAAW,EACZ,MAAM,YAAY,CAAA;AACnB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAA;AACzD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,wCAAwC,CAAA;AAE7E;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,mBAAmB;IAClC,qEAAqE;IACrE,OAAO,EAAE,MAAM,CAAA;IACf,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,0BAA0B,CAAC,CAAA;IAEnD;;;;OAIG;IACH,WAAW,CAAC,EAAE,aAAa,CAAA;IAE3B;;;OAGG;IACH,OAAO,CAAC,EAAE;QACR,GAAG,CAAC,EAAE,MAAM,CAAA;QACZ,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,uCAAuC;QACvC,SAAS,CAAC,EAAE,MAAM,CAAA;KACnB,CAAA;IAED;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE;QACP,YAAY,EAAE,kBAAkB,CAAA;QAChC;;;;;WAKG;QACH,aAAa,CAAC,EAAE,wBAAwB,CAAA;QACxC;;;;;;;;;;;;;;;;;WAiBG;QACH,cAAc,CAAC,EAAE,oBAAoB,CAAA;QACrC;;;;WAIG;QACH,SAAS,CAAC,EAAE,MAAM,CAAA;QAClB;;;;;;WAMG;QACH,cAAc,CAAC,EAAE,MAAM,CAAA;QACvB;;;;;;;;;;;;;;;;;;;;;WAqBG;QACH,MAAM,CAAC,EAAE,WAAW,CAAA;QACpB;;;;;;;WAOG;QACH,oBAAoB,CAAC,EAAE,OAAO,CAAA;KAC/B,CAAA;IAED;;;;;;OAMG;IACH,QAAQ,CAAC,EAAE,aAAa,EAAE,CAAA;IAE1B;;;;;;;;;;OAUG;IACH,KAAK,CAAC,EAAE,MAAM,IAAI,CAAA;IAElB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,OAAO,CAAA;IAEtB;;;;;;;;;;;;;OAaG;IACH,aAAa,CAAC,EAAE,OAAO,GAAG,UAAU,CAAA;IAEpC;;;;OAIG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAA;IAE7B;;;;;;;;OAQG;IACH,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAA;IAE/B;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,SAAS,CAAC,EAAE;QACV;;;;;;WAMG;QACH,MAAM,CAAC,EAAE,eAAe,CAAA;QACxB;;;;WAIG;QACH,OAAO,CAAC,EAAE,MAAM,CAAA;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,sBAAsB,CAAC,CAAA;KACjD,CAAA;IAED;;;;;;;;OAQG;IACH,KAAK,CAAC,EAAE;QACN,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,eAAe,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;QACnD,cAAc,CAAC,EAAE,CAAC,KAAK,EAAE,sBAAsB,KAAK,OAAO,CAAC,IAAI,CAAC,CAAA;KAClE,CAAA;CACF;AAED,wBAAgB,YAAY,CAAC,CAAC,SAAS,mBAAmB,EAAE,MAAM,EAAE,CAAC,GAAG,CAAC,CAExE"}
@@ -1 +1 @@
1
- {"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAwDA,MAAM,UAAU,YAAY,CAAgC,MAAS;IACnE,OAAO,MAAM,CAAA;AACf,CAAC"}
1
+ {"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AA4QA,MAAM,UAAU,YAAY,CAAgC,MAAS;IACnE,OAAO,MAAM,CAAA;AACf,CAAC"}