@jantstack/adonis-authz 2.0.0-alpha.1 → 2.4.0-alpha.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 (224) hide show
  1. package/README.md +934 -40
  2. package/build/commands/authz_catalog_diff.d.ts.map +1 -1
  3. package/build/commands/authz_catalog_diff.js +1 -2
  4. package/build/commands/authz_catalog_diff.js.map +1 -1
  5. package/build/commands/authz_catalog_prune_orphans.d.ts +78 -0
  6. package/build/commands/authz_catalog_prune_orphans.d.ts.map +1 -0
  7. package/build/commands/authz_catalog_prune_orphans.js +135 -0
  8. package/build/commands/authz_catalog_prune_orphans.js.map +1 -0
  9. package/build/commands/authz_catalog_sync.d.ts +17 -0
  10. package/build/commands/authz_catalog_sync.d.ts.map +1 -1
  11. package/build/commands/authz_catalog_sync.js +27 -4
  12. package/build/commands/authz_catalog_sync.js.map +1 -1
  13. package/build/commands/authz_freeze.d.ts +44 -0
  14. package/build/commands/authz_freeze.d.ts.map +1 -0
  15. package/build/commands/authz_freeze.js +94 -0
  16. package/build/commands/authz_freeze.js.map +1 -0
  17. package/build/commands/authz_reconcile.d.ts +111 -0
  18. package/build/commands/authz_reconcile.d.ts.map +1 -0
  19. package/build/commands/authz_reconcile.js +417 -0
  20. package/build/commands/authz_reconcile.js.map +1 -0
  21. package/build/commands/authz_relations_reconcile.d.ts +144 -0
  22. package/build/commands/authz_relations_reconcile.d.ts.map +1 -0
  23. package/build/commands/authz_relations_reconcile.js +438 -0
  24. package/build/commands/authz_relations_reconcile.js.map +1 -0
  25. package/build/commands/authz_scopes_relay.d.ts +97 -0
  26. package/build/commands/authz_scopes_relay.d.ts.map +1 -0
  27. package/build/commands/authz_scopes_relay.js +344 -0
  28. package/build/commands/authz_scopes_relay.js.map +1 -0
  29. package/build/commands/authz_scopes_requeue.d.ts +80 -0
  30. package/build/commands/authz_scopes_requeue.d.ts.map +1 -0
  31. package/build/commands/authz_scopes_requeue.js +230 -0
  32. package/build/commands/authz_scopes_requeue.js.map +1 -0
  33. package/build/commands/authz_unfreeze.d.ts +45 -0
  34. package/build/commands/authz_unfreeze.d.ts.map +1 -0
  35. package/build/commands/authz_unfreeze.js +157 -0
  36. package/build/commands/authz_unfreeze.js.map +1 -0
  37. package/build/commands/main.d.ts +16 -8
  38. package/build/commands/main.d.ts.map +1 -1
  39. package/build/commands/main.js +59 -6
  40. package/build/commands/main.js.map +1 -1
  41. package/build/commands/openfga_provision.d.ts +92 -4
  42. package/build/commands/openfga_provision.d.ts.map +1 -1
  43. package/build/commands/openfga_provision.js +155 -7
  44. package/build/commands/openfga_provision.js.map +1 -1
  45. package/build/configure.d.ts +11 -0
  46. package/build/configure.d.ts.map +1 -1
  47. package/build/configure.js +37 -1
  48. package/build/configure.js.map +1 -1
  49. package/build/index.d.ts +50 -11
  50. package/build/index.d.ts.map +1 -1
  51. package/build/index.js +49 -7
  52. package/build/index.js.map +1 -1
  53. package/build/providers/authz_provider.d.ts +31 -2
  54. package/build/providers/authz_provider.d.ts.map +1 -1
  55. package/build/providers/authz_provider.js +65 -2
  56. package/build/providers/authz_provider.js.map +1 -1
  57. package/build/services/relations.d.ts +14 -0
  58. package/build/services/relations.d.ts.map +1 -0
  59. package/build/services/relations.js +17 -0
  60. package/build/services/relations.js.map +1 -0
  61. package/build/src/{catalog.d.ts → catalog/catalog.d.ts} +41 -2
  62. package/build/src/catalog/catalog.d.ts.map +1 -0
  63. package/build/src/{catalog.js → catalog/catalog.js} +120 -14
  64. package/build/src/catalog/catalog.js.map +1 -0
  65. package/build/src/{catalog_cache.d.ts → catalog/catalog_cache.d.ts} +46 -22
  66. package/build/src/catalog/catalog_cache.d.ts.map +1 -0
  67. package/build/src/{catalog_cache.js → catalog/catalog_cache.js} +53 -43
  68. package/build/src/catalog/catalog_cache.js.map +1 -0
  69. package/build/src/define_config.d.ts +206 -3
  70. package/build/src/define_config.d.ts.map +1 -1
  71. package/build/src/define_config.js +11 -0
  72. package/build/src/define_config.js.map +1 -1
  73. package/build/src/drivers/database_driver.d.ts +128 -7
  74. package/build/src/drivers/database_driver.d.ts.map +1 -1
  75. package/build/src/drivers/database_driver.js +510 -24
  76. package/build/src/drivers/database_driver.js.map +1 -1
  77. package/build/src/drivers/database_relations_driver.d.ts +140 -0
  78. package/build/src/drivers/database_relations_driver.d.ts.map +1 -0
  79. package/build/src/drivers/database_relations_driver.js +748 -0
  80. package/build/src/drivers/database_relations_driver.js.map +1 -0
  81. package/build/src/drivers/openfga_driver.d.ts +777 -122
  82. package/build/src/drivers/openfga_driver.d.ts.map +1 -1
  83. package/build/src/drivers/openfga_driver.js +2228 -477
  84. package/build/src/drivers/openfga_driver.js.map +1 -1
  85. package/build/src/drivers/openfga_facts.d.ts +384 -0
  86. package/build/src/drivers/openfga_facts.d.ts.map +1 -0
  87. package/build/src/drivers/openfga_facts.js +836 -0
  88. package/build/src/drivers/openfga_facts.js.map +1 -0
  89. package/build/src/drivers/openfga_relations_driver.d.ts +186 -0
  90. package/build/src/drivers/openfga_relations_driver.d.ts.map +1 -0
  91. package/build/src/drivers/openfga_relations_driver.js +724 -0
  92. package/build/src/drivers/openfga_relations_driver.js.map +1 -0
  93. package/build/src/errors.d.ts +430 -6
  94. package/build/src/errors.d.ts.map +1 -1
  95. package/build/src/errors.js +453 -6
  96. package/build/src/errors.js.map +1 -1
  97. package/build/src/freeze.d.ts +200 -0
  98. package/build/src/freeze.d.ts.map +1 -0
  99. package/build/src/freeze.js +306 -0
  100. package/build/src/freeze.js.map +1 -0
  101. package/build/src/http/app_access_middleware.d.ts.map +1 -0
  102. package/build/src/http/app_access_middleware.js.map +1 -0
  103. package/build/src/http/resource_access_middleware.d.ts +105 -0
  104. package/build/src/http/resource_access_middleware.d.ts.map +1 -0
  105. package/build/src/http/resource_access_middleware.js +81 -0
  106. package/build/src/http/resource_access_middleware.js.map +1 -0
  107. package/build/src/identity.d.ts +74 -1
  108. package/build/src/identity.d.ts.map +1 -1
  109. package/build/src/identity.js +100 -2
  110. package/build/src/identity.js.map +1 -1
  111. package/build/src/manager.d.ts +549 -6
  112. package/build/src/manager.d.ts.map +1 -1
  113. package/build/src/manager.js +2243 -193
  114. package/build/src/manager.js.map +1 -1
  115. package/build/src/models/authz_assignment.d.ts +7 -7
  116. package/build/src/models/authz_assignment.d.ts.map +1 -1
  117. package/build/src/models/authz_deny.d.ts +7 -7
  118. package/build/src/models/authz_deny.d.ts.map +1 -1
  119. package/build/src/models/authz_permission.d.ts +7 -7
  120. package/build/src/models/authz_permission.d.ts.map +1 -1
  121. package/build/src/models/authz_role.d.ts +7 -7
  122. package/build/src/models/authz_role.d.ts.map +1 -1
  123. package/build/src/models/authz_role_permission.d.ts +7 -7
  124. package/build/src/models/authz_role_permission.d.ts.map +1 -1
  125. package/build/src/openfga.d.ts +18 -2
  126. package/build/src/openfga.d.ts.map +1 -1
  127. package/build/src/openfga.js +15 -1
  128. package/build/src/openfga.js.map +1 -1
  129. package/build/src/reconcile.d.ts +37 -0
  130. package/build/src/reconcile.d.ts.map +1 -0
  131. package/build/src/reconcile.js +69 -0
  132. package/build/src/reconcile.js.map +1 -0
  133. package/build/src/relation_partition_trigger.d.ts +8 -0
  134. package/build/src/relation_partition_trigger.d.ts.map +1 -0
  135. package/build/src/relation_partition_trigger.js +93 -0
  136. package/build/src/relation_partition_trigger.js.map +1 -0
  137. package/build/src/relations/define_relations_config.d.ts +109 -0
  138. package/build/src/relations/define_relations_config.d.ts.map +1 -0
  139. package/build/src/relations/define_relations_config.js +211 -0
  140. package/build/src/relations/define_relations_config.js.map +1 -0
  141. package/build/src/relations/manager.d.ts +138 -0
  142. package/build/src/relations/manager.d.ts.map +1 -0
  143. package/build/src/relations/manager.js +494 -0
  144. package/build/src/relations/manager.js.map +1 -0
  145. package/build/src/relations/reconcile.d.ts +137 -0
  146. package/build/src/relations/reconcile.d.ts.map +1 -0
  147. package/build/src/relations/reconcile.js +294 -0
  148. package/build/src/relations/reconcile.js.map +1 -0
  149. package/build/src/relations_config_store.d.ts +22 -0
  150. package/build/src/relations_config_store.d.ts.map +1 -0
  151. package/build/src/relations_config_store.js +74 -0
  152. package/build/src/relations_config_store.js.map +1 -0
  153. package/build/src/scope_outbox.d.ts +123 -0
  154. package/build/src/scope_outbox.d.ts.map +1 -0
  155. package/build/src/scope_outbox.js +532 -0
  156. package/build/src/scope_outbox.js.map +1 -0
  157. package/build/src/{drivers → shared}/backend_guard.d.ts +42 -0
  158. package/build/src/shared/backend_guard.d.ts.map +1 -0
  159. package/build/src/{drivers → shared}/backend_guard.js +78 -1
  160. package/build/src/shared/backend_guard.js.map +1 -0
  161. package/build/src/{drivers → shared}/sql_expiry.d.ts +2 -0
  162. package/build/src/shared/sql_expiry.d.ts.map +1 -0
  163. package/build/src/{drivers → shared}/sql_expiry.js +4 -0
  164. package/build/src/shared/sql_expiry.js.map +1 -0
  165. package/build/src/shared/transaction_guard.d.ts +53 -0
  166. package/build/src/shared/transaction_guard.d.ts.map +1 -0
  167. package/build/src/shared/transaction_guard.js +74 -0
  168. package/build/src/shared/transaction_guard.js.map +1 -0
  169. package/build/src/sql_descendants.d.ts +55 -1
  170. package/build/src/sql_descendants.d.ts.map +1 -1
  171. package/build/src/sql_descendants.js +75 -1
  172. package/build/src/sql_descendants.js.map +1 -1
  173. package/build/src/testing/contract.d.ts +129 -4
  174. package/build/src/testing/contract.d.ts.map +1 -1
  175. package/build/src/testing/contract.js +915 -177
  176. package/build/src/testing/contract.js.map +1 -1
  177. package/build/src/testing/main.d.ts +10 -2
  178. package/build/src/testing/main.d.ts.map +1 -1
  179. package/build/src/testing/main.js +5 -1
  180. package/build/src/testing/main.js.map +1 -1
  181. package/build/src/testing/migration_contract.d.ts +293 -0
  182. package/build/src/testing/migration_contract.d.ts.map +1 -0
  183. package/build/src/testing/migration_contract.js +589 -0
  184. package/build/src/testing/migration_contract.js.map +1 -0
  185. package/build/src/testing/relations_contract.d.ts +73 -0
  186. package/build/src/testing/relations_contract.d.ts.map +1 -0
  187. package/build/src/testing/relations_contract.js +1238 -0
  188. package/build/src/testing/relations_contract.js.map +1 -0
  189. package/build/src/testing/relations_reconcile_contract.d.ts +24 -0
  190. package/build/src/testing/relations_reconcile_contract.d.ts.map +1 -0
  191. package/build/src/testing/relations_reconcile_contract.js +220 -0
  192. package/build/src/testing/relations_reconcile_contract.js.map +1 -0
  193. package/build/src/testing/scope_outbox_contract.d.ts +98 -0
  194. package/build/src/testing/scope_outbox_contract.d.ts.map +1 -0
  195. package/build/src/testing/scope_outbox_contract.js +677 -0
  196. package/build/src/testing/scope_outbox_contract.js.map +1 -0
  197. package/build/src/traits/authz_scopes.js +1 -1
  198. package/build/src/traits/authz_scopes.js.map +1 -1
  199. package/build/src/traits/has_uuid.d.ts +8 -8
  200. package/build/src/traits/has_uuid.d.ts.map +1 -1
  201. package/build/src/types.d.ts +1537 -84
  202. package/build/src/types.d.ts.map +1 -1
  203. package/build/src/types.js +65 -0
  204. package/build/src/types.js.map +1 -1
  205. package/build/stubs/config/authorization.stub +149 -5
  206. package/build/stubs/migration.stub +136 -0
  207. package/build/stubs/scopes_outbox_migration.stub +57 -0
  208. package/package.json +4 -2
  209. package/build/commands/openfga_import.d.ts +0 -34
  210. package/build/commands/openfga_import.d.ts.map +0 -1
  211. package/build/commands/openfga_import.js +0 -97
  212. package/build/commands/openfga_import.js.map +0 -1
  213. package/build/src/catalog.d.ts.map +0 -1
  214. package/build/src/catalog.js.map +0 -1
  215. package/build/src/catalog_cache.d.ts.map +0 -1
  216. package/build/src/catalog_cache.js.map +0 -1
  217. package/build/src/drivers/backend_guard.d.ts.map +0 -1
  218. package/build/src/drivers/backend_guard.js.map +0 -1
  219. package/build/src/drivers/sql_expiry.d.ts.map +0 -1
  220. package/build/src/drivers/sql_expiry.js.map +0 -1
  221. package/build/src/middleware/app_access_middleware.d.ts.map +0 -1
  222. package/build/src/middleware/app_access_middleware.js.map +0 -1
  223. /package/build/src/{middleware → http}/app_access_middleware.d.ts +0 -0
  224. /package/build/src/{middleware → http}/app_access_middleware.js +0 -0
@@ -84,6 +84,84 @@ export class InvalidSlugError extends Exception {
84
84
  export class AuthorizationConfigError extends Exception {
85
85
  static status = 500;
86
86
  static code = 'E_AUTHZ_CONFIG';
87
+ /**
88
+ * **`assertWrite` devolvió una promesa** (2.4.0-alpha.3 · D3, hallazgo H2).
89
+ * `assertWrite(ref): void` es SÍNCRONO y puro a propósito (R-13), pero
90
+ * TypeScript no lo defiende: `assertWrite: async (ref) => { throw … }`
91
+ * compila —una función que devuelve `Promise<void>` es asignable a `void`—,
92
+ * y hasta alpha.3 la promesa se descartaba y la ESCRITURA ENTRABA (un gate
93
+ * de policy que no rechaza nada, en silencio). Se cierra fail-closed: 500
94
+ * ANTES de tocar el driver, nombrando la causa y la receta. La letra la
95
+ * fija `tests/relations_events_docs.spec.ts` byte a byte.
96
+ */
97
+ static asyncAssertWrite(operation) {
98
+ return new AuthorizationConfigError(`${operation}: assertWrite devolvió una promesa (thenable) y tiene que ser SÍNCRONO y puro (R-13): ` +
99
+ `el manager no la espera, así que un rechazo asíncrono no habría rechazado nada y la escritura ` +
100
+ `habría entrado (fail-open). No se ha tocado el driver. La policy que necesita actor, base de datos ` +
101
+ `o await va en el servicio del consumidor, ANTES de llamar a relate/unrelate; assertWrite solo ` +
102
+ `recibe la referencia de la tupla y lanza o vuelve.`);
103
+ }
104
+ /**
105
+ * **`assertWrite` devolvió un VEREDICTO** (2.4.0-alpha.3, cierre del 🟠 3 /
106
+ * 🟡 4 del auditor): `assertWrite: (ref) => allowed.has(ref.object.type)`
107
+ * compila bajo `--strict` (cualquier retorno es asignable a `void`) y hasta
108
+ * el cierre el `false` se IGNORABA y la escritura entraba — el mismo
109
+ * fail-open que H2, y más frecuente que el `async`. `assertWrite` no
110
+ * devuelve veredictos: LANZA o no lanza. Todo retorno distinto de
111
+ * `undefined` es 500 ANTES del driver — también un `true` (un veredicto
112
+ * positivo es el mismo error de modelo: quien lo escribió cree que el
113
+ * `false` deniega) y también una FUNCIÓN con `.then` (el thenable que no
114
+ * es `typeof 'object'` y esquivaba la guarda de H2).
115
+ */
116
+ static assertWriteReturned(operation, result) {
117
+ if (isThenable(result))
118
+ return AuthorizationConfigError.asyncAssertWrite(operation);
119
+ const shape = result === null ? 'null' : Array.isArray(result) ? 'array' : typeof result;
120
+ return new AuthorizationConfigError(`${operation}: assertWrite devolvió un valor (${shape}) y assertWrite no devuelve veredictos: LANZA ` +
121
+ `para rechazar o vuelve sin valor para permitir (R-13). Un 'false' devuelto no denegaba nada y la ` +
122
+ `escritura entraba (fail-open); un 'true' es el mismo error de modelo. No se ha tocado el driver. ` +
123
+ `La policy que necesita actor, base de datos o await va en el servicio del consumidor, ANTES de ` +
124
+ `llamar a relate/unrelate.`);
125
+ }
126
+ }
127
+ /** Un thenable, sea objeto o FUNCIÓN con `.then` (la forma que esquivaba `typeof result === 'object'`). */
128
+ export function isThenable(value) {
129
+ return (value !== null &&
130
+ (typeof value === 'object' || typeof value === 'function') &&
131
+ typeof value.then === 'function');
132
+ }
133
+ /**
134
+ * **Marca de ESCRITURA PARCIAL** (invariante 13, `2.4.0-alpha.3`, cierre del
135
+ * 🟡 6 del auditor). Una escritura del puerto que NO es una sola sentencia ni
136
+ * un solo `Write` —la purga de `openfga`, que recorre ortografías × tipos con
137
+ * varios `Read`+`deleteTuples`— puede fallar DESPUÉS de haber borrado parte:
138
+ * ese fallo no es «esa escritura no ocurrió» (que es lo que un 503 no-timeout
139
+ * significa para una escritura atómica) sino «puede haber ocurrido», lo mismo
140
+ * que un deadline vencido. El driver marca el error con `markPartialWrite`
141
+ * antes de propagarlo, y el manager (`#write`) notifica `onRelationWrite` con
142
+ * `indeterminate: true` ANTES de propagar, exactamente como con
143
+ * `AuthorizationBackendTimeoutError`. La marca es una propiedad
144
+ * (`partialWrite: true`) y no una clase: el error que se propaga conserva su
145
+ * clase y su `code` (503 `E_AUTHZ_BACKEND_UNAVAILABLE`, 500
146
+ * `E_AUTHZ_PURGE_INCOMPLETE`…) — lo que cambia es solo la auditoría. Un driver
147
+ * de terceros cuya purga sea multi-request tiene el mismo deber.
148
+ */
149
+ export function markPartialWrite(error) {
150
+ try {
151
+ Object.defineProperty(error, 'partialWrite', { value: true, enumerable: false, configurable: true });
152
+ }
153
+ catch {
154
+ // Cierre-2 (⚪ 4 del re-ataque): un error CONGELADO (`Object.freeze`, un SDK
155
+ // o una capa intermedia) no admite la propiedad. Lanzar aquí sustituiría el
156
+ // 503/500 real por un `TypeError` sin `code` ni `status`, justo en el camino
157
+ // de una purga que ya borró: se propaga el ORIGINAL sin marca (se pierde el
158
+ // `indeterminate` de esa purga, no la clasificación del error).
159
+ }
160
+ return error;
161
+ }
162
+ /** ¿El error viene marcado como escritura parcial (`markPartialWrite`)? */
163
+ export function isPartialWrite(error) {
164
+ return error !== null && typeof error === 'object' && error.partialWrite === true;
87
165
  }
88
166
  /**
89
167
  * Invariante interno del motor violado (una escritura sin scopes, un batchCheck
@@ -250,6 +328,26 @@ export class RoleIsNotAccessError extends Exception {
250
328
  `appAccess({ permission: 'admin:access' }).`);
251
329
  }
252
330
  }
331
+ /**
332
+ * `requeueScopeChanges` se NIEGA (2.4.0-alpha.5 · R2b): devolver la entrada
333
+ * aparcada a la cola reaplicaría un cambio ANTERIOR a otro ya APLICADO sobre
334
+ * la misma clave de scope — el árbol del store quedaría en un orden que
335
+ * nunca existió (auditor 🔴 2, medido: el `moved` viejo tras el nuevo deja
336
+ * el padre VIEJO con un solo padre, y nada lo delata). 500 y no 422: la
337
+ * pregunta está bien formada, es el estado de la cola el que la prohíbe; y
338
+ * nunca se reencola «lo que se pueda»: es todo o nada. `conflicts` es el
339
+ * diff —cada aparcada y las aplicadas posteriores que revertiría—; el
340
+ * comando lo imprime y solo `--force` (en el comando ace) lo salta.
341
+ */
342
+ export class ScopeRequeueRefusedError extends Exception {
343
+ static status = 500;
344
+ static code = 'E_AUTHZ_REQUEUE_REFUSED';
345
+ conflicts;
346
+ constructor(message, conflicts) {
347
+ super(message);
348
+ this.conflicts = conflicts;
349
+ }
350
+ }
253
351
  /**
254
352
  * Colgar `child` de `parent` cerraría un ciclo (el padre desciende del hijo,
255
353
  * o son el mismo). FGA no detecta ciclos de `parent`: los evalúa, y un grant
@@ -270,14 +368,19 @@ export class PurgeIncompleteError extends Exception {
270
368
  static code = 'E_AUTHZ_PURGE_INCOMPLETE';
271
369
  }
272
370
  /**
273
- * `openfga:import` sobre un store con tuplas y sin `--reconcile`. En FGA la
274
- * condición no es parte de la clave: escribir "ignorando duplicados" sobre
275
- * una tupla existente dejaba la caducidad vieja (o ninguna) y reportaba
276
- * éxito (S7). 409: el estado del destino no es el que el comando espera.
371
+ * Una escritura del driver `openfga` chocó una y otra vez con otra
372
+ * transacción sobre las MISMAS tuplas (3b-2f · R3). FGA responde
373
+ * `Aborted` (HTTP 409) cuando dos `Write` transaccionales tocan una tupla a
374
+ * la vez, y responde `write_failed_due_to_invalid_input` cuando la tupla ya
375
+ * existía: las dos dicen "otro escritor llegó antes", y el driver las trata
376
+ * releyendo y re-aplicando. Si tras varias vueltas el store sigue en
377
+ * conflicto, el llamante se entera con un **409** —el estado del destino no
378
+ * es el que esta escritura esperaba, y reintentar es lo correcto—, nunca con
379
+ * un 503 "el backend no respondió": respondió, y dijo exactamente qué pasa.
277
380
  */
278
- export class StoreNotEmptyError extends Exception {
381
+ export class WriteConflictError extends Exception {
279
382
  static status = 409;
280
- static code = 'E_AUTHZ_STORE_NOT_EMPTY';
383
+ static code = 'E_AUTHZ_WRITE_CONFLICT';
281
384
  }
282
385
  /**
283
386
  * `config.requireActor: true` y una escritura llegó sin `actor` (2.1, B7).
@@ -350,6 +453,25 @@ export class ScopeTooDeepError extends Exception {
350
453
  static status = 500;
351
454
  static code = 'E_AUTHZ_SCOPE_TOO_DEEP';
352
455
  }
456
+ /**
457
+ * `scopes.attached`/`scopes.moved` dejarían al hijo a más de `scopes.maxDepth`
458
+ * saltos de `app` (2.4.0-alpha.5 · R0; opt-in por config). 422 y no 500: la
459
+ * pregunta está bien formada, es el árbol el que no cabe en el techo que el
460
+ * dueño declaró — y se dice ANTES de escribir o encolar. Distinto de
461
+ * `E_AUTHZ_SCOPE_TOO_DEEP` (500): aquel es `hierarchicalScopeResolver` que no
462
+ * puede TERMINAR una cadena ya existente; este es una escritura que se niega.
463
+ */
464
+ export class ScopeDepthLimitError extends Exception {
465
+ static status = 422;
466
+ static code = 'E_AUTHZ_SCOPE_DEPTH_LIMIT';
467
+ constructor(message, details) {
468
+ super(message);
469
+ // NO enumerable (cierre alpha.8, 🟡 3 del auditor): `JSON.stringify(error)` —lo
470
+ // que un handler de errores genérico manda al tenant— no puede enseñar el
471
+ // backend ni el mando del servidor. Legible por `error.details` para el log.
472
+ Object.defineProperty(this, 'details', { value: details, enumerable: false, configurable: true, writable: false });
473
+ }
474
+ }
353
475
  /**
354
476
  * Una primitiva de 2.1 necesita un método OPCIONAL del puerto que el driver
355
477
  * activo no implementa (2.1, B5): se nombra el método y se lanza. 500 porque
@@ -363,6 +485,58 @@ export class UnsupportedOperationError extends Exception {
363
485
  super(`${primitive} necesita '${method}' y el driver '${driver}' no lo implementa: es un método opcional del ` +
364
486
  `puerto (2.1) que este driver tiene que añadir para usar esta primitiva.` + (hint ? ` ${hint}` : ''));
365
487
  }
488
+ /**
489
+ * **Puerta 1 de `{ transaction }`** (L-2, panel `{trx}` (C)): la operación
490
+ * pidió escribir en la transacción del consumidor y el driver activo no
491
+ * declara `transactionalWrites: true`. 500 y no 422 por precedente
492
+ * (`membersOf`, `purgeRole`): no es una pregunta mal formada, es un
493
+ * despliegue que no casa con lo que se le pidió. La letra lleva la salida.
494
+ */
495
+ static transactional(operation, driver, port) {
496
+ const error = new UnsupportedOperationError('transactionalWrites', operation, driver);
497
+ error.message =
498
+ `${operation}: se pidió escribir en la transacción del consumidor ({ transaction }) y el driver '${driver}' ` +
499
+ `declara transactionalWrites: false (o no la declara): no puede inscribir la escritura en tu transacción ` +
500
+ `(«los dos o ninguno» sería falso; en openfga una tupla no entra en una transacción SQL). No se ha tocado el ` +
501
+ `driver. Salidas: usa el driver 'database' para ${port === 'roles' ? 'los hechos' : 'las relaciones'}, o ` +
502
+ `declara requireTransactionalWrites: true en config/authorization.ts` +
503
+ `${port === 'relations' ? ' (o en relations.requireTransactionalWrites)' : ''} para que esto falle al ARRANCAR ` +
504
+ `en vez de en esta ruta. Sin { transaction } la misma llamada entra.`;
505
+ return error;
506
+ }
507
+ /**
508
+ * **El mismo rechazo, dicho por el DRIVER `openfga`** (L-5, defensa en
509
+ * profundidad como F-05 en L-0): `manager.driver()` es la salida documentada
510
+ * de las barreras y con `{ transaction }` entraría por aquí saltándose la
511
+ * puerta 1; el driver no puede intentar un `Write` que finja ir en la
512
+ * transacción del consumidor. Misma clase, mismo `code`, misma letra; la
513
+ * frase final dice que no hay salida por el driver — la alternativa que SÍ
514
+ * existe para el ÁRBOL es la outbox de scopes (encola en tu transacción);
515
+ * para HECHOS y relaciones no hay outbox (descartada por el panel `{trx}`:
516
+ * fail-open medido).
517
+ */
518
+ static transactionalDriver(operation, driver, port) {
519
+ const error = UnsupportedOperationError.transactional(operation, driver, port);
520
+ error.message +=
521
+ ` Rechazado por el DRIVER '${driver}' (no por el manager): entrar por manager.driver() no es una salida — ` +
522
+ `una tupla del store no puede inscribirse en tu transacción ni fingirlo. Para el ÁRBOL de scopes la salida ` +
523
+ `que existe es scopes.outbox (encola en tu transacción y authz:scopes:relay aplica); para hechos y relaciones no hay outbox.`;
524
+ return error;
525
+ }
526
+ /**
527
+ * La API de delegación no admite `{ transaction }` (L-2, §1.4 del veredicto):
528
+ * escribe el catálogo por `withAuthzCatalogWrite`, que ES el serializador
529
+ * entre procesos (invariante 14); moverla al commit del consumidor lo anula.
530
+ */
531
+ static transactionalCatalog(operation) {
532
+ const error = new UnsupportedOperationError('transactionalWrites', operation, 'catalog');
533
+ error.message =
534
+ `${operation}: { transaction } no se admite en la API de delegación: el catálogo se escribe por ` +
535
+ `withAuthzCatalogWrite (cerrojo de la fila de versión + bump como última sentencia, invariante 14), que es el ` +
536
+ `serializador del catálogo entre procesos; inscribirlo en tu transacción lo anularía. Solo grant/revoke/deny/` +
537
+ `removeDeny (hechos) y relate/unrelate/purge* (relaciones) admiten { transaction }.`;
538
+ return error;
539
+ }
366
540
  }
367
541
  /**
368
542
  * Una vista de `forRequest()` se usó para LEER después de `maxAgeMs` (2D ·
@@ -384,4 +558,277 @@ export class NoDescendantsResolverError extends Exception {
384
558
  static status = 500;
385
559
  static code = 'E_AUTHZ_NO_DESCENDANTS_RESOLVER';
386
560
  }
561
+ /**
562
+ * `pruneOrphanRoles({ force: true })` iba a purgar una fracción del catálogo
563
+ * local que solo tiene sentido si el ÁRBOL se ha quedado ciego (3b-0b · AA2,
564
+ * auditor 3b-0): TODOS los owners distintos huérfanos, o más del 50 % de los
565
+ * roles locales. Esa es exactamente la firma de un `resolveChain` filtrado
566
+ * por el tenant de la petición —patrón normal en multi-tenant— o corriendo
567
+ * sin contexto (un comando, una réplica atrasada): devuelve `null` para
568
+ * todo, así que TODO rol local parece huérfano y una pasada con `--force` se
569
+ * lleva el catálogo local de todos los tenants. 500 y no 422 porque el
570
+ * error está en el despliegue, no en la pregunta; el barrido legítimo de una
571
+ * poda grande de verdad pasa con `allowMassPurge: true`
572
+ * (`--allow-mass-purge`), que es una decisión humana, no un default.
573
+ */
574
+ export class MassPurgeRefusedError extends Exception {
575
+ static status = 500;
576
+ static code = 'E_AUTHZ_MASS_PURGE_REFUSED';
577
+ }
578
+ /**
579
+ * Un `purgeRole` falló a mitad del barrido de `prune-orphans`.
580
+ *
581
+ * La purga NO es transaccional entre roles: cada `purgeRole` es atómico, pero
582
+ * si el tercero revienta, los dos primeros ya están borrados. El valor de
583
+ * retorno —que es donde vivía la lista— nunca llega a producirse, así que
584
+ * quien recoge el error necesita saber **qué se fue** y **qué queda**, o la
585
+ * frase del CHANGELOG es papel mojado (tester 3b-1 §6.2).
586
+ *
587
+ * Por eso este error lleva `purged` y `skipped` con la misma forma que el
588
+ * valor de retorno, y envuelve el error del driver como `cause` en vez de
589
+ * dejarlo escapar crudo: la abstracción no filtra.
590
+ *
591
+ * Recuperación: los `role_purged` ya notificados nombran lo mismo que
592
+ * `purged`, y la siguiente pasada recoge el resto (los huérfanos que quedan
593
+ * lo siguen siendo).
594
+ */
595
+ export class PruneInterruptedError extends Exception {
596
+ purged;
597
+ skipped;
598
+ static status = 500;
599
+ static code = 'E_AUTHZ_PRUNE_INTERRUPTED';
600
+ constructor(message, purged, skipped, options) {
601
+ super(message, options);
602
+ this.purged = purged;
603
+ this.skipped = skipped;
604
+ }
605
+ }
606
+ /**
607
+ * `readLocalRoles()` (el barrido de `prune-orphans`) encontró más roles
608
+ * locales que su cota `maxLocalRoles` (3b-0b · AB2, auditor 3b-0 ⚪): la
609
+ * lectura es UNA consulta sin `LIMIT`, así que un catálogo local enorme la
610
+ * convierte en amplificación. 500 y nunca una lista parcial —truncar aquí
611
+ * sería decidir a ciegas qué se purga—: se sube la cota a sabiendas.
612
+ */
613
+ export class TooManyLocalRolesError extends Exception {
614
+ static status = 500;
615
+ static code = 'E_AUTHZ_TOO_MANY_LOCAL_ROLES';
616
+ }
617
+ /**
618
+ * El catálogo no cabe en un authorization model de OpenFGA (3b-2a · A3): el
619
+ * modo `facts` publica cada permiso como cuatro relaciones del modelo y el
620
+ * servidor tiene un techo de 262.144 bytes. **Cuántos permisos son esos bytes
621
+ * depende de tu catálogo** (3b-4 · C3): ~450 con slugs realistas
622
+ * (`recurso:accion`) y tres holder types, 691 si los permisos se llaman
623
+ * `p0`…`pN`, 272 con slugs de 40 caracteres. La tabla y de qué depende están
624
+ * en `FACTS_MODEL_MAX_BYTES`; el mensaje del error dice los bytes REALES y
625
+ * cuántos permisos tenía el catálogo que se intentó publicar.
626
+ * Se comprueba en `syncAuthzCatalog` ANTES de escribir: si se escribiera
627
+ * primero, el catálogo quedaría en la base sin poder proyectarse nunca y el
628
+ * store sin poder regenerarse. 500 porque es config de despliegue —el techo
629
+ * del servidor es del pliego de infraestructura—, no una pregunta inválida.
630
+ */
631
+ export class ModelTooLargeError extends Exception {
632
+ static status = 500;
633
+ static code = 'E_AUTHZ_MODEL_TOO_LARGE';
634
+ }
635
+ /**
636
+ * La config de relaciones ReBAC (Fase 4) no se puede FUSIONAR en el modelo
637
+ * `facts`. Es 422 (pregunta inválida del que declara la config), no 500: un
638
+ * tipo de objeto de relaciones que duplica un tipo o una familia de
639
+ * relaciones reservados del modelo `facts` (`scope`/`role`/`role_binding`/
640
+ * `deny_binding`/`group`, o `can_<P>`/`permits_<P>`/`denied_<P>`/`assignee`/
641
+ * `parent`/`rooted`), o una relación cuyo nombre choca con un permiso del
642
+ * catálogo (F-04), invalidaría el modelo compartido. Lo detecta el GENERADOR y
643
+ * lanza el PAQUETE —nunca el 400 opaco del servidor—, porque en el store
644
+ * compartido los ids de `facts` y los de relaciones viven en el mismo espacio
645
+ * (⚪4 del auditor, cierre por construcción del 🔴).
646
+ */
647
+ export class RelationConfigError extends Exception {
648
+ static status = 422;
649
+ static code = 'E_AUTHZ_RELATION_CONFIG';
650
+ }
651
+ /**
652
+ * El árbol materializado del store no es un árbol (3b-2b, cruce 8). El
653
+ * paquete escribe UNA arista `scope:<hijo>#parent@scope:<padre>` por nodo y
654
+ * la sustituye entera en cada `moved`, así que encontrar dos padres para el
655
+ * mismo scope significa que alguien MÁS está escribiendo ahí. No se
656
+ * "arregla": con dos padres la herencia ya está trayendo hechos de otra rama
657
+ * y elegir uno de los dos sería adivinar cuál de las dos concesiones vivas es
658
+ * la buena. 500 y se denuncia; lo reconstruye `authz:reconcile`.
659
+ */
660
+ export class ScopeTreeDriftError extends Exception {
661
+ static status = 500;
662
+ static code = 'E_AUTHZ_SCOPE_TREE_DRIFT';
663
+ }
664
+ /**
665
+ * El motor está CONGELADO por una operación de plataforma (`authz:reconcile`
666
+ * o la ventana de cutover de `authz:freeze`).
667
+ *
668
+ * Desde 3b-7 el freeze es DURABLE (la fila `id = 2` de
669
+ * `authz_catalog_version`): mientras está vivo, las ESCRITURAS del manager
670
+ * (`grant`/`revoke`/`deny`/`removeDeny`, las tres `scopes.*`, la API de
671
+ * delegación, el barrido de huérfanos y el relay) responden con este 503 **en
672
+ * todos los procesos que comparten esas tablas**, y las LECTURAS siguen
673
+ * funcionando: una migración que copia hechos de un backend a otro no puede
674
+ * competir con quien los está escribiendo —lo que entre entre la lectura del
675
+ * origen y la escritura del destino se pierde sin que nadie lo cuente— y
676
+ * dejar de leer sería tirar la aplicación entera por una operación de
677
+ * plataforma.
678
+ *
679
+ * **503 y REINTENTABLE** (`retryable: true`): no es una pregunta inválida ni
680
+ * un fallo del backend, es una ventana de mantenimiento acotada (por el
681
+ * lease, o por el `authz:unfreeze` del operador). El llamante puede
682
+ * reintentar tal cual; un 409 diría «tu estado no es el que esperaba» y un
683
+ * 422 «no vuelvas a intentarlo», y ninguna de las dos es cierta aquí.
684
+ */
685
+ export class AuthorizationFrozenError extends Exception {
686
+ static status = 503;
687
+ static code = 'E_AUTHZ_FROZEN';
688
+ /** Reintentar tal cual es lo correcto en cuanto termine la ventana. */
689
+ retryable = true;
690
+ }
691
+ /**
692
+ * Ya hay un freeze VIVO de otro dueño (3b-7, auditor A1.3).
693
+ *
694
+ * `freeze()` no puede ser idempotente entre procesos: dos `authz:reconcile`
695
+ * simultáneos que compartieran la fila se levantarían la barrera el uno al
696
+ * otro al terminar el primero — dos pasadas pisándose con el README diciendo
697
+ * que no puede pasar. El segundo dueño recibe este 423 con el motivo y el
698
+ * holder del freeze vivo; la excepción a propósito es el freeze de OPERADOR,
699
+ * que `reconcile` reconoce como su propio contexto (el cutover, F6) en vez
700
+ * de chocar con él.
701
+ */
702
+ export class FreezeHeldError extends Exception {
703
+ static status = 423;
704
+ static code = 'E_AUTHZ_FREEZE_HELD';
705
+ }
706
+ /**
707
+ * `authz:reconcile --prune` iba a borrar hechos del destino con un ORIGEN
708
+ * VACÍO (3b-3a; mismo patrón que `E_AUTHZ_MASS_PURGE_REFUSED`, 3b-0b · AA2).
709
+ *
710
+ * `--to=openfga` hace del store un espejo de `authz_assignments`/
711
+ * `authz_denies`, así que un origen sin una sola fila de hechos y un destino
712
+ * lleno significa casi siempre que **los hechos los está escribiendo el otro
713
+ * driver** (el store ES la fuente cuando `openfga` está activo) o que la
714
+ * conexión mira a la base equivocada. Con `--prune` eso se lleva por delante
715
+ * todo lo concedido, y sin manera de reconstruirlo. 500 antes de escribir
716
+ * nada, `allowMassDelete: true` (`--allow-mass-delete`) es la decisión
717
+ * humana, y `--dry-run` no lanza: lo marca en el reporte.
718
+ */
719
+ export class MassReconcileRefusedError extends Exception {
720
+ static status = 500;
721
+ static code = 'E_AUTHZ_MASS_RECONCILE_REFUSED';
722
+ }
723
+ /**
724
+ * Una operación iba a tomar el freeze y encontró la ventana del OPERADOR
725
+ * CADUCADA (2.4.0-alpha.10, S2 de la auditoría de sistema): motivo puesto,
726
+ * holder `operator:` y `untilMs` en el pasado. Hasta alpha.9 `acquireFreeze`
727
+ * pisaba esa fila en silencio —un lease vencido no bloquea la toma—, la pasada
728
+ * se certificaba con SU ventana de 15 s y al soltarla dejaba la fila a `NULL`:
729
+ * el último rastro de que la flota volvió a escribir a mitad del cutover lo
730
+ * borraba una pasada ajena, y `authz:unfreeze` decía «nada que levantar». 503
731
+ * antes de tomar nada; la salida es reconocerla con `authz:unfreeze` (que dice
732
+ * cuándo venció y limpia la fila) y reabrir la ventana con `authz:freeze`. La
733
+ * exclusión va DENTRO del `UPDATE` de `acquireFreezeOutcome` (cierre del
734
+ * auditor · R2): comprobar fuera y tomar después era un TOCTOU.
735
+ */
736
+ export class OperatorWindowExpiredError extends Exception {
737
+ static status = 503;
738
+ static code = 'E_AUTHZ_OPERATOR_WINDOW_EXPIRED';
739
+ }
740
+ /**
741
+ * `authz:reconcile --to=<driver ACTIVO> --from=<otro>`: la DIRECCIÓN RANCIA
742
+ * (2.4.0-alpha.10, 🔴 4 del sexto informe de COGNITIV; decisión del dueño del
743
+ * 2026-09-13 (4)).
744
+ *
745
+ * La regla 3b-5 dice que con `--from` manda el operador — **salvo hacia el
746
+ * driver activo**. Si el motor ya sirve desde `to`, sus hechos se escriben
747
+ * ahí desde el cutover y el origen dejó de verlos: con `openfga` activo,
748
+ * `--from=database` lee `authz_*` congeladas y re-escribe en el store vivo los
749
+ * roles revocados después, con o sin `--prune` (y el seguro de borrado masivo
750
+ * no salta: el origen no está vacío). 500 en el MANAGER —la API es la puerta,
751
+ * no el comando— antes de construir el origen, leer nada o congelar;
752
+ * `allowStaleSource: true` (`--allow-stale-source`) es la decisión humana y
753
+ * `dryRun` no lanza: lo marca en `report.staleSource`. Simétrico al seguro de
754
+ * `E_AUTHZ_MASS_PURGE_REFUSED`. El gemelo de relaciones lo lanza
755
+ * `runRelationsReconcile` (la única vía pública desde el cierre del auditor),
756
+ * juzgando el driver RESUELTO por su factory: un alias del activo también se
757
+ * niega. Límite declarado: «activo» es el `config.default` del PROCESO que corre
758
+ * la pasada (sello durable del driver activo: roadmap 2.5).
759
+ */
760
+ export class StaleSourceRefusedError extends Exception {
761
+ static status = 500;
762
+ static code = 'E_AUTHZ_STALE_SOURCE_REFUSED';
763
+ }
764
+ /**
765
+ * **El volcado del destino no cabe en la cota declarada** (3b-3b · B5).
766
+ *
767
+ * Reconciliar exige comparar contra el estado ENTERO del destino: sin esa
768
+ * foto no se puede saber qué sobra, y «lo que sobra» es la mitad del trabajo
769
+ * (las aristas que el consumidor ya no respalda, el nodo con dos padres, la
770
+ * basura de una versión anterior). El ORIGEN sí se lee por lotes con cursor;
771
+ * el destino no, y por eso hay una cota.
772
+ *
773
+ * Se declara en vez de esconderse: por encima de `maxTuples` la pasada se
774
+ * niega **antes de escribir nada**, con la cifra y la salida (subir la cota,
775
+ * o migrar por particiones, que hoy el paquete NO trae). Un OOM a mitad de
776
+ * migración deja el destino con las escrituras de MENOS que ya se aplicaron
777
+ * y sin reporte; esto no deja nada.
778
+ */
779
+ export class ReconcileTooLargeError extends Exception {
780
+ static status = 500;
781
+ static code = 'E_AUTHZ_RECONCILE_TOO_LARGE';
782
+ }
783
+ /**
784
+ * El driver se ha pedido en `hierarchy: 'facts'` —el árbol vive en el store
785
+ * de FGA— sin `scopes.outbox` y sin aceptar el riesgo por escrito (3b-2d,
786
+ * cruce 4 · S5). En ese montaje el paquete escribe la arista en FGA dentro
787
+ * de la transacción del consumidor y un `rollback` posterior NO la deshace:
788
+ * SQL dice un padre y FGA otro, FGA es quien decide, y la aplicación —que
789
+ * lista y audita contra SQL— no puede ver la escalada. No es un mal uso: el
790
+ * uso correcto fuga, sin crash, con un simple rollback.
791
+ *
792
+ * 500 y al construir, no al escribir: un puerto opcional que nadie declara
793
+ * no mitiga nada, y descubrirlo en la primera escritura de un tenant es
794
+ * tarde. `acceptScopeDriftRisk: true` es la salida explícita para quien
795
+ * mueve el árbol solo desde la plataforma y lo asume por escrito.
796
+ */
797
+ export class ScopeDriftUnguardedError extends Exception {
798
+ static status = 500;
799
+ static code = 'E_AUTHZ_SCOPE_DRIFT_UNGUARDED';
800
+ }
801
+ /**
802
+ * **F-05, la frontera de ESCRITURA de relaciones (Fase 4, cierre del 🔴 del
803
+ * auditor).** `relate`/`unrelate` recibieron un `object.type` que NO está
804
+ * declarado en `defineRelationsConfig`. Es 422 ANTES de tocar el driver: en el
805
+ * store COMPARTIDO los tipos de `facts` (`role_binding`, `scope`, `role`)
806
+ * viven en el MISMO espacio de ids, y la composición
807
+ * `<type>:<scopeKey(partition)>|<id>` reproduce byte a byte el id de un
808
+ * `role_binding` real. Sin este corte, `relate(evil, assignee,
809
+ * {type:'role_binding', id:<roleUuid>}, S)` escribía la tupla del binding y
810
+ * `check(evil, can_<P>, S)` devolvía `true` (escalada a `roles.authorize`,
811
+ * medida por el auditor). Junto con ⚪4 (un tipo reservado no se puede
812
+ * declarar) la colisión deja de existir en vez de vigilarse. **Desde L-0 el
813
+ * mismo 422 lo lanzan también los dos drivers** en `relate`/`unrelate`, antes
814
+ * de tocar el backend (`assertRelationDeclared`, una sola función): el
815
+ * manager cortaba, pero `manager.driver()` y `reconcileRelations` entran por
816
+ * el driver y la escalada seguía abierta por ahí (panel `{trx}`, 🔴 2).
817
+ */
818
+ export class RelationTypeUnknownError extends Exception {
819
+ static status = 422;
820
+ static code = 'E_AUTHZ_RELATION_TYPE_UNKNOWN';
821
+ }
822
+ /**
823
+ * **F-05, cara de la RELACIÓN.** El `object.type` está declarado, pero la
824
+ * `relation` no es una de las suyas en `defineRelationsConfig`. Mismo 422
825
+ * antes de tocar el driver —y, desde L-0, también en el driver antes de tocar
826
+ * el backend—: una relación no declarada podría, en un futuro modelo, mapear a
827
+ * una relación propia de `facts` (hoy `document#assignee` en `openfga` salía
828
+ * como un 503 mal clasificado del servidor).
829
+ */
830
+ export class RelationUnknownError extends Exception {
831
+ static status = 422;
832
+ static code = 'E_AUTHZ_RELATION_UNKNOWN';
833
+ }
387
834
  //# sourceMappingURL=errors.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}