@jantstack/adonis-authz 2.5.0-alpha.1 → 2.5.0-alpha.2

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 (71) hide show
  1. package/README.md +174 -17
  2. package/build/commands/authz_relations_reconcile.d.ts +7 -62
  3. package/build/commands/authz_relations_reconcile.d.ts.map +1 -1
  4. package/build/commands/authz_relations_reconcile.js +94 -118
  5. package/build/commands/authz_relations_reconcile.js.map +1 -1
  6. package/build/index.d.ts +1 -1
  7. package/build/index.d.ts.map +1 -1
  8. package/build/index.js +1 -1
  9. package/build/index.js.map +1 -1
  10. package/build/providers/authz_provider.d.ts.map +1 -1
  11. package/build/providers/authz_provider.js +4 -1
  12. package/build/providers/authz_provider.js.map +1 -1
  13. package/build/src/define_config.d.ts +32 -0
  14. package/build/src/define_config.d.ts.map +1 -1
  15. package/build/src/define_config.js +109 -0
  16. package/build/src/define_config.js.map +1 -1
  17. package/build/src/drivers/database_relations_driver.d.ts.map +1 -1
  18. package/build/src/drivers/database_relations_driver.js +3 -2
  19. package/build/src/drivers/database_relations_driver.js.map +1 -1
  20. package/build/src/drivers/openfga_driver.d.ts +30 -4
  21. package/build/src/drivers/openfga_driver.d.ts.map +1 -1
  22. package/build/src/drivers/openfga_driver.js +49 -9
  23. package/build/src/drivers/openfga_driver.js.map +1 -1
  24. package/build/src/drivers/openfga_relations_driver.d.ts +66 -9
  25. package/build/src/drivers/openfga_relations_driver.d.ts.map +1 -1
  26. package/build/src/drivers/openfga_relations_driver.js +145 -21
  27. package/build/src/drivers/openfga_relations_driver.js.map +1 -1
  28. package/build/src/errors.d.ts +36 -0
  29. package/build/src/errors.d.ts.map +1 -1
  30. package/build/src/errors.js +36 -0
  31. package/build/src/errors.js.map +1 -1
  32. package/build/src/manager.d.ts.map +1 -1
  33. package/build/src/manager.js +6 -1
  34. package/build/src/manager.js.map +1 -1
  35. package/build/src/openfga.d.ts +1 -1
  36. package/build/src/openfga.d.ts.map +1 -1
  37. package/build/src/openfga.js +1 -1
  38. package/build/src/openfga.js.map +1 -1
  39. package/build/src/relations/define_relations_config.d.ts +74 -1
  40. package/build/src/relations/define_relations_config.d.ts.map +1 -1
  41. package/build/src/relations/define_relations_config.js +201 -7
  42. package/build/src/relations/define_relations_config.js.map +1 -1
  43. package/build/src/relations/manager.d.ts.map +1 -1
  44. package/build/src/relations/manager.js +4 -2
  45. package/build/src/relations/manager.js.map +1 -1
  46. package/build/src/relations/reconcile.d.ts +77 -13
  47. package/build/src/relations/reconcile.d.ts.map +1 -1
  48. package/build/src/relations/reconcile.js +247 -36
  49. package/build/src/relations/reconcile.js.map +1 -1
  50. package/build/src/relations_config_store.d.ts.map +1 -1
  51. package/build/src/relations_config_store.js +29 -7
  52. package/build/src/relations_config_store.js.map +1 -1
  53. package/build/src/relations_reconcile.d.ts +79 -0
  54. package/build/src/relations_reconcile.d.ts.map +1 -0
  55. package/build/src/relations_reconcile.js +85 -0
  56. package/build/src/relations_reconcile.js.map +1 -0
  57. package/build/src/scope_outbox.d.ts +9 -5
  58. package/build/src/scope_outbox.d.ts.map +1 -1
  59. package/build/src/scope_outbox.js +7 -4
  60. package/build/src/scope_outbox.js.map +1 -1
  61. package/build/src/testing/relations_contract.d.ts.map +1 -1
  62. package/build/src/testing/relations_contract.js +72 -2
  63. package/build/src/testing/relations_contract.js.map +1 -1
  64. package/build/src/testing/scope_outbox_contract.d.ts +14 -1
  65. package/build/src/testing/scope_outbox_contract.d.ts.map +1 -1
  66. package/build/src/testing/scope_outbox_contract.js +126 -48
  67. package/build/src/testing/scope_outbox_contract.js.map +1 -1
  68. package/build/src/types.d.ts +7 -3
  69. package/build/src/types.d.ts.map +1 -1
  70. package/build/src/types.js.map +1 -1
  71. package/package.json +2 -1
@@ -41,7 +41,13 @@ export interface RelationsReconcileOptions {
41
41
  * `skipped.undeclared`, de modo que `--dry-run` y la pasada real dan los
42
42
  * MISMOS números. Sin ella, la embuda el 422 del propio driver del destino
43
43
  * (la misma función, `assertRelationDeclared`) y se cuenta igual — pero
44
- * `--dry-run` no puede anticiparla (la reporta como `written`).
44
+ * `--dry-run` no puede anticiparla (la reporta como `written`). **Y en el
45
+ * DESTINO** (cierre 3 del lote B · 🟠 N9): la fila cuya relación o tipo no
46
+ * declara es residuo `undeclared` (`extra` + `details`, `pruned: false`,
47
+ * nunca en `toDelete`), con los mismos números en `--dry-run` y en la pasada
48
+ * real; sin ella, `--dry-run` la cuenta en `deleted` (no puede anticipar
49
+ * F-05) y la pasada real captura el 422 del driver, la clasifica igual y
50
+ * sigue — nunca un throw a mitad de pasada.
45
51
  */
46
52
  toConfig?: RelationsConfig;
47
53
  /**
@@ -68,22 +74,58 @@ export interface RelationsReconcileOptions {
68
74
  export interface RelationsReconcileDetail {
69
75
  /** De qué store llegó enumerada. */
70
76
  side: 'origen' | 'destino';
71
- reason: 'invalid-identity';
77
+ /**
78
+ * `invalid-identity` (⚪ R2): la identidad no entra en la gramática.
79
+ * `userset-unsupported` (cierre 1 del lote B · 🟠 1/🟠 2): el sujeto es un
80
+ * userset ≠ `group#member` — el residuo pre-2.5 de B3 (una fila inerte de
81
+ * `database` de antes de 2.5.0). Se clasifica en el PLAN, antes del driver,
82
+ * con o sin `toConfig` (`assertSupportedUserset`), así que `--dry-run` y la
83
+ * pasada real dan los MISMOS números; en el origen cuenta en
84
+ * `skipped.usersetUnsupported`, en el destino en `extra`, y en los dos lados
85
+ * es deriva (exit ≠ 0) con la receta SQL en la línea: **ningún `--prune` la
86
+ * toca** (nunca un DELETE de plataforma sobre una fila que la API no admite,
87
+ * decisión del coordinador 2026-10-15: se lista, exit ≠ 0, se borra a mano).
88
+ * `undeclared` (cierre 3 del lote B · 🟠 N9, solo `destino`): la fila cuya
89
+ * relación —o tipo— el DESTINO ya no declara (una relación RETIRADA de la
90
+ * config con filas vivas; `#enumerateRows`/`#sweep` filtran por tipo, no por
91
+ * relación). `unrelate` la rechaza por F-05 (422), así que es la tercera fila
92
+ * «que la API no admite» y lleva la MISMA regla: con `toConfig` la clasifica
93
+ * el plan (`classifyDestinationRow`, la misma `assertRelationDeclared` que el
94
+ * driver); sin ella la captura por `code` el bucle de poda en la pasada real
95
+ * (hasta el cierre 3 ese 422 salía como stack crudo a mitad de pasada,
96
+ * después de escribir, y `--prune` quedaba inutilizable para esa partición).
97
+ * Receta: retírala a mano o vuelve a declarar la relación en el destino.
98
+ */
99
+ reason: 'invalid-identity' | 'userset-unsupported' | 'undeclared';
72
100
  /** La tupla, legible: `<partición> <tipo>:<id>#<relación>@<sujeto>`. */
73
101
  tuple: string;
74
102
  /** El porqué: el mensaje de la gramática que la rechazó. */
75
103
  message: string;
76
104
  /**
77
- * Solo `destino` con `prune`: `true` = borrada (en `--dry-run`: se pedirá
78
- * borrar); `false` = la pasada real pidió borrarla y el DRIVER del destino
79
- * la rechazó por el puerto (su gramática en `unrelate`): sigue ahí y hay que
80
- * borrarla a mano (SQL/SDK). Ausente sin `prune` y en el origen.
105
+ * Solo `destino` con `prune`, y desde el cierre 2 del lote B (🟡 N3) siempre
106
+ * `false`: NO se borró y sigue ahí porque la pasada NO se la pide a nadie —
107
+ * ni `unrelate` por el puerto (los dos drivers del paquete la rechazan por su
108
+ * gramática, R-16) ni un DELETE de plataforma—, también en `--dry-run`, para
109
+ * los TRES motivos (`undeclared` desde el cierre 3 · 🟠 N9: con `toConfig` no
110
+ * se le pide; sin ella se le pidió, el driver dijo 422 y la pasada siguió).
111
+ * Hay que borrarla a mano (SQL/SDK) o, para `undeclared`, volver a declarar
112
+ * la relación. Ausente sin `prune` y en el origen. El tipo sigue siendo `boolean` por compatibilidad: `true`
113
+ * («borrada») lo producía el cierre-2 del lote A para `invalid-identity`
114
+ * cuando un driver sin gramática aceptaba el `unrelate`; el paquete ya no lo
115
+ * emite.
81
116
  */
82
117
  pruned?: boolean;
83
118
  }
84
119
  export interface RelationsReconcileReport {
85
120
  /** ¿Fue `--dry-run` (sin escrituras)? */
86
121
  dryRun: boolean;
122
+ /**
123
+ * ¿Se pasó `prune` (cierre 2 del lote B · 🟡 N3)? El comando lo necesita
124
+ * para no aconsejar «repite con --prune» en una pasada que YA lo llevaba.
125
+ * Opcional en el tipo exportado (un reporte de terceros anterior sigue
126
+ * compilando; ausente = no pasado).
127
+ */
128
+ prune?: boolean;
87
129
  /** Tuplas nuevas escritas en el destino (o que se escribirían, en `--dry-run`). */
88
130
  written: number;
89
131
  /** Tuplas que sobraban en el destino y se borraron (solo con `prune`; o que se borrarían). */
@@ -97,8 +139,14 @@ export interface RelationsReconcileReport {
97
139
  /** Tuplas que ya estaban exactamente igual (misma clave y misma caducidad). */
98
140
  unchanged: number;
99
141
  /**
100
- * Tuplas del destino que el origen ya no respalda y que NO se borraron por
101
- * no pasar `--prune` (deriva recuperable; con `prune` pasan a `deleted`).
142
+ * Tuplas del destino que el origen ya no respalda y que NO se borraron: por
143
+ * no pasar `--prune` (deriva recuperable; con `prune` pasan a `deleted`) o
144
+ * porque son un RESIDUO que ningún driver del paquete borra —`invalid-identity`,
145
+ * `userset-unsupported` y, desde el cierre 3 (🟠 N9), `undeclared`, en
146
+ * `details`— y la pasada no se lo pide a nadie (o se lo pidió sin `toConfig`
147
+ * y el driver lo rechazó con un 422 de la familia, que se clasifica igual),
148
+ * con o sin `prune` (cierre 2 del lote B · 🟡 N3: una regla, no dos). El
149
+ * comando solo aconseja `--prune` por lo que `--prune` borra de verdad.
102
150
  */
103
151
  extra: number;
104
152
  /**
@@ -138,18 +186,34 @@ export interface RelationsReconcileReport {
138
186
  * no puede escribirlas en el destino, se listan en `details` y son
139
187
  * deriva. Opcional en el tipo (un reporte de terceros anterior sigue
140
188
  * compilando); ausente = 0.
189
+ * - `usersetUnsupported` (cierre 1 del lote B · 🟠 2) = tuplas del ORIGEN
190
+ * cuyo sujeto es un userset ≠ `group#member` (el residuo pre-2.5 de B3,
191
+ * `reason: 'userset-unsupported'` en `details`): el destino no las admite
192
+ * (422 por cualquier puerta), se clasifican en el PLAN —nunca llegan al
193
+ * driver; hasta el cierre `relateOrSkip` las tragaba como `undeclared`
194
+ * con un consejo falso y `--dry-run` decía «haría 1 escritura»— y son
195
+ * deriva con la receta SQL en la línea. Opcional; ausente = 0.
141
196
  */
142
197
  skipped: {
143
198
  expired: number;
144
199
  undeclared: number;
145
200
  invalid?: number;
201
+ usersetUnsupported?: number;
146
202
  };
147
203
  /**
148
- * **Lo enumerado con una identidad fuera de la gramática, una línea por
149
- * tupla** (⚪ R2): las del destino cuentan en `extra` (o en `deleted` con
150
- * `prune`, salvo las que el driver rechazó borrar: `pruned: false`, que
151
- * vuelven a `extra`); las del origen en `skipped.invalid`. Opcional en el
152
- * tipo exportado (paridad con `allowMassDelete`, ⚪ A12); ausente = `[]`.
204
+ * **Lo enumerado fuera de la gramática, con un userset no admitido O cuya
205
+ * relación/tipo el destino ya no declara, una línea por tupla** (⚪ R2; cierres
206
+ * 1, 2 y 3 del lote B): las del destino cuentan SIEMPRE en `extra` —los tres
207
+ * motivos, `invalid-identity`, `userset-unsupported` y `undeclared`, con
208
+ * `pruned: false` bajo `prune`: la pasada no se las pide a nadie (ningún
209
+ * driver del paquete las admite en `unrelate`, R-16/F-05, y nunca un DELETE
210
+ * de plataforma), y si sin `toConfig` se las pidió y el driver respondió con
211
+ * un 422 de la familia de relaciones, se clasifican por `code` y la poda
212
+ * sigue (🟠 N9: nunca un throw a mitad de pasada por una fila que el reporte
213
+ * puede contar); hasta el cierre 2 `invalid-identity` se le pedía al driver y
214
+ * podía salir en `deleted`—; las del origen en `skipped.invalid` /
215
+ * `skipped.usersetUnsupported`. Opcional en el tipo
216
+ * exportado (paridad con `allowMassDelete`, ⚪ A12); ausente = `[]`.
153
217
  */
154
218
  details?: RelationsReconcileDetail[];
155
219
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../../src/relations/reconcile.ts"],"names":[],"mappings":"AAsCA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,aAAa,CAAA;AAIxC,OAAO,KAAK,EAAiB,eAAe,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAC3E,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAcnE,MAAM,WAAW,yBAAyB;IACxC,oFAAoF;IACpF,IAAI,EAAE,eAAe,CAAA;IACrB,mGAAmG;IACnG,EAAE,EAAE,eAAe,CAAA;IACnB,sIAAsI;IACtI,SAAS,CAAC,EAAE,QAAQ,CAAA;IACpB;;;;;;;;;;OAUG;IACH,UAAU,CAAC,EAAE,QAAQ,EAAE,CAAA;IACvB,6FAA6F;IAC7F,MAAM,CAAC,EAAE,OAAO,CAAA;IAChB,qFAAqF;IACrF,KAAK,CAAC,EAAE,OAAO,CAAA;IACf;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;;;;;;;OASG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAA;IAC1B;;;;OAIG;IACH,GAAG,CAAC,EAAE,KAAK,CAAA;CACZ;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,wBAAwB;IACvC,oCAAoC;IACpC,IAAI,EAAE,QAAQ,GAAG,SAAS,CAAA;IAC1B,MAAM,EAAE,kBAAkB,CAAA;IAC1B,wEAAwE;IACxE,KAAK,EAAE,MAAM,CAAA;IACb,4DAA4D;IAC5D,OAAO,EAAE,MAAM,CAAA;IACf;;;;;OAKG;IACH,MAAM,CAAC,EAAE,OAAO,CAAA;CACjB;AAED,MAAM,WAAW,wBAAwB;IACvC,yCAAyC;IACzC,MAAM,EAAE,OAAO,CAAA;IACf,mFAAmF;IACnF,OAAO,EAAE,MAAM,CAAA;IACf,8FAA8F;IAC9F,OAAO,EAAE,MAAM,CAAA;IACf;;;;OAIG;IACH,OAAO,EAAE,MAAM,CAAA;IACf,+EAA+E;IAC/E,SAAS,EAAE,MAAM,CAAA;IACjB;;;OAGG;IACH,KAAK,EAAE,MAAM,CAAA;IACb;;;OAGG;IACH,UAAU,EAAE,MAAM,EAAE,CAAA;IACpB;;;;OAIG;IACH,UAAU,EAAE,OAAO,CAAA;IACnB;;;;;;;OAOG;IACH,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB;;;;;;;;;;;;;;;;;OAiBG;IACH,OAAO,EAAE;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IAClE;;;;;;OAMG;IACH,OAAO,CAAC,EAAE,wBAAwB,EAAE,CAAA;IACpC;;;;;;;OAOG;IACH,+GAA+G;IAC/G,MAAM,CAAC,EAAE;QAAE,OAAO,EAAE,IAAI,CAAC;QAAC,MAAM,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,MAAM,CAAC,EAAE,UAAU,GAAG,KAAK,GAAG,WAAW,CAAA;KAAE,CAAA;IACtJ;;;;;OAKG;IACH,WAAW,CAAC,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAA;CAC7D;AA0DD;;;;GAIG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,yBAAyB,GAAG,OAAO,CAAC,wBAAwB,CAAC,CAuH9G"}
1
+ {"version":3,"file":"reconcile.d.ts","sourceRoot":"","sources":["../../../src/relations/reconcile.ts"],"names":[],"mappings":"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"}
@@ -27,11 +27,12 @@
27
27
  * clave, niega la dirección rancia y congela; la guardia de superficie de
28
28
  * `command_flags.spec.ts` impide re-exportarlo por ningún subpath.
29
29
  */
30
- import { AuthorizationConfigError, InvalidIdentityError, MassReconcileRefusedError, RelationTypeUnknownError, RelationUnknownError, UnsupportedOperationError, } from '../errors.js';
30
+ import { AuthorizationConfigError, InvalidIdentityError, MassReconcileRefusedError, RelationTypeUnknownError, RelationUnknownError, RelationUsersetUnsupportedError, UnsupportedOperationError, } from '../errors.js';
31
31
  import { systemClock } from '../clock.js';
32
32
  import { isActiveExpiry, sameInstant } from '../expiry.js';
33
33
  import { assertPartition, scopeKey } from '../identity.js';
34
34
  import { isRelUserset } from '../types.js';
35
+ import { assertRelationDeclared, assertSupportedUserset } from './define_relations_config.js';
35
36
  import { relationTupleKey } from './tuple_key.js';
36
37
  /**
37
38
  * La clave con la que se casan origen y destino es `relationTupleKey` (plan
@@ -114,6 +115,7 @@ export async function reconcileRelations(options) {
114
115
  }
115
116
  const report = {
116
117
  dryRun,
118
+ prune,
117
119
  written: 0,
118
120
  updated: 0,
119
121
  deleted: 0,
@@ -122,7 +124,7 @@ export async function reconcileRelations(options) {
122
124
  modelDrift: [],
123
125
  massDelete: false,
124
126
  allowMassDelete,
125
- skipped: { expired: 0, undeclared: 0, invalid: 0 },
127
+ skipped: { expired: 0, undeclared: 0, invalid: 0, usersetUnsupported: 0 },
126
128
  details: [],
127
129
  };
128
130
  for (const plan of plans) {
@@ -136,9 +138,7 @@ export async function reconcileRelations(options) {
136
138
  if (plan.massDelete && !dryRun && !allowMassDelete) {
137
139
  throw new MassReconcileRefusedError(`authz:relations:reconcile --prune borraría ${plan.toDelete.length} tupla(s) de relación del destino` +
138
140
  `${partitions.length > 1 ? ` (partición ${scopeKey(plan.partition)})` : ''} y el ` +
139
- `ORIGEN no ha aportado NI UNA utilizable (${plan.enumerated} leídas` +
140
- `${toConfig ? ', todas de tipos que el destino no declara' : ''}` +
141
- `${plan.skipped.expired ? `, ${plan.skipped.expired} caducada(s)` : ''}). Eso es la firma de un --from ` +
141
+ `ORIGEN no ha aportado NI UNA utilizable (${plan.enumerated} leídas${describeSkipped(plan.skipped)}). Eso es la firma de un --from ` +
142
142
  `equivocado o de un store vacío, no de un destino que sobra: esta pasada dejaría la partición sin ` +
143
143
  `una sola relación. Comprueba el --from y el store; si de verdad quieres vaciarlo, --allow-mass-delete.` +
144
144
  `${partitions.length > 1 ? ' No se ha escrito nada en ninguna partición.' : ''}`);
@@ -147,6 +147,7 @@ export async function reconcileRelations(options) {
147
147
  report.skipped.expired += plan.skipped.expired;
148
148
  report.skipped.undeclared += plan.skipped.undeclared;
149
149
  report.skipped.invalid += plan.skipped.invalid;
150
+ report.skipped.usersetUnsupported += plan.skipped.usersetUnsupported;
150
151
  for (const type of plan.modelDrift)
151
152
  if (!report.modelDrift.includes(type))
152
153
  report.modelDrift.push(type);
@@ -175,9 +176,14 @@ export async function reconcileRelations(options) {
175
176
  updated -= 1;
176
177
  }
177
178
  }
178
- // ⚪ R2: lo enumerado fuera de la gramática se LISTA siempre (origen y
179
- // destino), con el veredicto de la poda cuando la hay.
180
- let refused = 0;
179
+ // ⚪ R2 + cierre 1 y cierre 2 del lote B (🟡 N3, una regla, no dos): lo
180
+ // enumerado fuera de la gramática (`invalid-identity`) y el residuo pre-2.5
181
+ // de B3 (`userset-unsupported`) se LISTAN siempre, en los dos lados; con
182
+ // `prune` el del destino lleva `pruned: false` desde el plan — también en
183
+ // `--dry-run`—, porque NADIE lo borra: ni `toDelete` lo contiene ni el driver
184
+ // lo ve (hasta el cierre 2 `invalid-identity` se le pedía al driver y los dos
185
+ // del paquete lo rechazaban por el puerto, R-16). Cuenta en `extra` (abajo)
186
+ // y es deriva en los cuatro modos.
181
187
  for (const invalid of plan.invalid) {
182
188
  const detail = {
183
189
  side: invalid.side,
@@ -186,38 +192,83 @@ export async function reconcileRelations(options) {
186
192
  message: invalid.message,
187
193
  };
188
194
  if (invalid.side === 'destino' && prune)
189
- detail.pruned = true;
195
+ detail.pruned = false;
196
+ report.details.push(detail);
197
+ }
198
+ for (const residue of plan.usersetResidue) {
199
+ const detail = {
200
+ side: residue.side,
201
+ reason: 'userset-unsupported',
202
+ tuple: residue.tuple,
203
+ message: residue.message,
204
+ };
205
+ if (residue.side === 'destino' && prune)
206
+ detail.pruned = false;
207
+ report.details.push(detail);
208
+ }
209
+ // Cierre 3 del lote B · 🟠 N9, capa 1: la fila del DESTINO cuya relación o
210
+ // tipo `toConfig` no declara (una relación RETIRADA con filas vivas) se
211
+ // clasifica en el PLAN con la MISMA regla que los otros dos motivos: `extra`
212
+ // + `details`, `pruned: false` bajo `prune` (también en `--dry-run`), nunca
213
+ // en `toDelete` — `unrelate` la rechazaría por F-05 y hasta el cierre 3 ese
214
+ // 422 tumbaba la pasada a mitad, después de escribir.
215
+ for (const residue of plan.undeclaredResidue) {
216
+ const detail = { side: 'destino', reason: 'undeclared', tuple: residue.tuple, message: residue.message };
217
+ if (prune)
218
+ detail.pruned = false;
190
219
  report.details.push(detail);
191
220
  }
221
+ let deleted = prune ? plan.toDelete.length : 0;
222
+ let refused = 0;
192
223
  if (!dryRun && prune) {
224
+ // Todo lo que hay en `toDelete` pasó la gramática Y, con `toConfig`, F-05
225
+ // del destino: un 422 del driver aquí es el driver diciendo otra cosa que
226
+ // el plan — o el plan sin `toConfig`, que no pudo anticipar F-05 (🟠 N9,
227
+ // capa 2). **La poda NUNCA lanza por un 422 de la familia de relaciones**:
228
+ // se clasifica por `code` con la MISMA regla (`extra` + `details`,
229
+ // `pruned: false`, deriva), se sigue con las demás filas y el comando sale
230
+ // ≠ 0 con la línea «sobra (<motivo>) destino:». Un 422 de OTRA familia o
231
+ // cualquier otro error sigue propagándose: eso sí es una contradicción que
232
+ // el reporte no sabe contar (R2-5: el plan clasifica, el driver no absorbe
233
+ // lo que no es suyo).
193
234
  for (const tuple of plan.toDelete) {
194
- // La tupla fuera de la gramática se le pide al DRIVER tal como él la
195
- // enumeró. Si la rechaza por el puerto (422 de su propia gramática, R-16
196
- // en `unrelate`) NO es la pregunta del llamante la que está mal: se
197
- // apunta `pruned: false`, sigue contando como `extra` y la pasada lo
198
- // dice (exit ≠ 0). Nunca un throw a mitad de pasada por un dato ajeno.
199
- const invalid = plan.invalid.find((i) => i.side === 'destino' && i.ref === tuple);
200
- try {
201
- await to.unrelate(tuple.subject, tuple.relation, tuple.object, tuple.partition);
202
- }
203
- catch (error) {
204
- if (!invalid || error?.status !== 422)
205
- throw error;
206
- refused += 1;
207
- const detail = report.details.find((d) => d.side === 'destino' && d.tuple === invalid.tuple);
208
- if (detail)
209
- detail.pruned = false;
210
- }
235
+ const refusal = await unrelateOrClassify(to, tuple);
236
+ if (refusal === null)
237
+ continue;
238
+ report.details.push({ side: 'destino', reason: refusal.reason, tuple: describeTuple(tuple), message: refusal.message, pruned: false });
239
+ refused += 1;
240
+ deleted -= 1;
211
241
  }
212
242
  }
213
243
  report.written += written;
214
244
  report.updated += updated;
215
- report.deleted += prune ? plan.toDelete.length - refused : 0;
245
+ report.deleted += deleted;
216
246
  report.unchanged += plan.unchanged;
217
- report.extra += prune ? refused : plan.toDelete.length;
247
+ // El residuo del destino (los tres motivos) sobra SIEMPRE, con o sin `prune`:
248
+ // no está en `toDelete`, así que se suma aparte — más lo que el driver
249
+ // rechazó con un 422 de la familia en la pasada real (capa 2 de N9).
250
+ report.extra += (prune ? 0 : plan.toDelete.length) + plan.destResidue + refused;
218
251
  }
219
252
  return report;
220
253
  }
254
+ /**
255
+ * ⚪ N8 (cierre 2 del lote B): el desglose del seguro R-17, cada motivo POR SU
256
+ * NOMBRE y solo si cuenta (> 0). Hasta el cierre decía «todas de tipos que el
257
+ * destino no declara» siempre que había `toConfig`, también cuando el único
258
+ * aporte era residuo B3 — y sin `toConfig` no nombraba nada.
259
+ */
260
+ function describeSkipped(skipped) {
261
+ const parts = [];
262
+ if (skipped.undeclared)
263
+ parts.push(`${skipped.undeclared} de tipo o relación que el destino no declara (skipped.undeclared)`);
264
+ if (skipped.usersetUnsupported)
265
+ parts.push(`${skipped.usersetUnsupported} con sujeto userset no admitido (B3, skipped.usersetUnsupported)`);
266
+ if (skipped.invalid)
267
+ parts.push(`${skipped.invalid} con identidad fuera de la gramática (skipped.invalid)`);
268
+ if (skipped.expired)
269
+ parts.push(`${skipped.expired} caducada(s)`);
270
+ return parts.length ? `: ${parts.join(', ')}` : '';
271
+ }
221
272
  /** Una tupla enumerada, legible, para la línea del reporte (sin validar nada: puede estar fuera de la gramática). */
222
273
  function describeTuple(tuple) {
223
274
  const s = tuple?.subject;
@@ -237,6 +288,38 @@ function enumeratedKey(tuple) {
237
288
  throw error;
238
289
  }
239
290
  }
291
+ /**
292
+ * **El sujeto de una tupla ENUMERADA, clasificado** (cierre 1 del lote B · 🟠 2;
293
+ * cierre 2 · 🟡 N2): `ok`, `userset-unsupported` (B3: userset ≠ `group#member`,
294
+ * con o sin config — `assertSupportedUserset` no necesita F-05), o `undeclared`
295
+ * (solo con `toConfig`: un `group#member` cuyo tipo/relación el destino no
296
+ * declara — F-05 del par; sin config esa cara la embuda el 422 del driver, como
297
+ * la del objeto). **La FORMA se juzga ANTES que F-05** (N2; decisión 3 del
298
+ * cierre 1 rechazada): un residuo B3 es inadmisible con cualquier config, así
299
+ * que un userset `folder#viewer` o `document#reader` que `toConfig` no declara
300
+ * es residuo con receta, nunca `undeclared` con el consejo falso «decláralo en
301
+ * el destino» (declarado, la pasada siguiente lo reclasificaba como residuo).
302
+ * Mutante «F-05 primero» ⇒ rojo. Nunca lanza por un dato del store
303
+ * (invariante 5).
304
+ */
305
+ function classifySubject(tuple, toConfig) {
306
+ const subject = tuple?.subject;
307
+ if (!isRelUserset(subject))
308
+ return { kind: 'ok' };
309
+ try {
310
+ assertSupportedUserset(subject);
311
+ if (toConfig)
312
+ assertRelationDeclared(toConfig, subject.object, subject.relation);
313
+ return { kind: 'ok' };
314
+ }
315
+ catch (error) {
316
+ if (error instanceof RelationUsersetUnsupportedError)
317
+ return { kind: 'userset-unsupported', message: error.message };
318
+ if (error instanceof RelationTypeUnknownError || error instanceof RelationUnknownError)
319
+ return { kind: 'undeclared' };
320
+ throw error;
321
+ }
322
+ }
240
323
  /** Exactamente uno de `partition` / `partitions` (y `partitions` no vacío): lo demás es 500 antes de leer nada. */
241
324
  function partitionsOf(options) {
242
325
  const { partition, partitions } = options;
@@ -282,10 +365,11 @@ function planPartition(partition, enumerated, destTuples, context) {
282
365
  // pasada real dan los mismos números— y tampoco respalda nada en el destino
283
366
  // (una que ya estuviera allí es `extra`, y `--prune` la barre). El tipo se
284
367
  // reporta además en `modelDrift` (deriva del modelo fusionado).
285
- const skipped = { expired: 0, undeclared: 0, invalid: 0 };
368
+ const skipped = { expired: 0, undeclared: 0, invalid: 0, usersetUnsupported: 0 };
286
369
  const modelDrift = [];
287
370
  const sourceTuples = [];
288
371
  const invalid = [];
372
+ const usersetResidue = [];
289
373
  for (const tuple of enumerated) {
290
374
  if (!isActiveExpiry(tuple.expiresAt ?? null, now)) {
291
375
  skipped.expired += 1;
@@ -300,6 +384,21 @@ function planPartition(partition, enumerated, destTuples, context) {
300
384
  invalid.push({ side: 'origen', tuple: describeTuple(tuple), message: keyed.message });
301
385
  continue;
302
386
  }
387
+ // Cierre 1 del lote B · 🟠 2: el residuo pre-2.5 de B3 en el ORIGEN se
388
+ // clasifica AQUÍ, con o sin `toConfig` — no se migra (ninguna puerta del
389
+ // destino lo admite), se lista con su receta y se cuenta aparte. Hasta el
390
+ // cierre llegaba al driver, que lo rechazaba con 422, y `relateOrSkip` lo
391
+ // tragaba como `undeclared` (consejo falso; `--dry-run` decía `written`).
392
+ const subject = classifySubject(tuple, toConfig);
393
+ if (subject.kind === 'userset-unsupported') {
394
+ skipped.usersetUnsupported += 1;
395
+ usersetResidue.push({ side: 'origen', tuple: describeTuple(tuple), message: subject.message });
396
+ continue;
397
+ }
398
+ if (subject.kind === 'undeclared') {
399
+ skipped.undeclared += 1;
400
+ continue;
401
+ }
303
402
  if (toConfig && !declaredIn(toConfig, tuple.object.type)) {
304
403
  skipped.undeclared += 1;
305
404
  if (!modelDrift.includes(tuple.object.type))
@@ -315,16 +414,49 @@ function planPartition(partition, enumerated, destTuples, context) {
315
414
  const sourceByKey = new Map();
316
415
  for (const tuple of sourceTuples)
317
416
  sourceByKey.set(tupleKey({ ...tuple, kind: 'allow' }), tuple);
318
- // ⚪ R2: una tupla del DESTINO fuera de la gramática es `extra` con motivo
319
- // (`invalid-identity`): nadie del origen puede respaldarla (la clave no se
320
- // puede ni componer), `--prune` pide borrarla y `--dry-run` la lista.
417
+ // ⚪ R2 + cierre 2 · N3: una tupla del DESTINO fuera de la gramática es
418
+ // `extra` con motivo (`invalid-identity`): nadie del origen puede respaldarla
419
+ // (la clave no se puede ni componer) y NADIE la borra — ni `toDelete` (los dos
420
+ // drivers del paquete la rechazan por el puerto, R-16; hasta el cierre 2 se les
421
+ // pedía igual) ni un DELETE de plataforma—: se lista con `pruned: false` y es
422
+ // deriva en los cuatro modos, exactamente como el residuo de B3 de abajo.
321
423
  const destByKey = new Map();
322
424
  const destInvalid = new Set();
425
+ const destResidue = new Set();
426
+ const undeclaredResidue = [];
323
427
  for (const tuple of destTuples) {
324
428
  const keyed = enumeratedKey(tuple);
325
429
  if ('message' in keyed) {
326
430
  destInvalid.add(tuple);
327
- invalid.push({ side: 'destino', tuple: describeTuple(tuple), message: keyed.message, ref: tuple });
431
+ invalid.push({ side: 'destino', tuple: describeTuple(tuple), message: keyed.message });
432
+ continue;
433
+ }
434
+ // Cierre 1 del lote B · 🟠 1: el residuo pre-2.5 de B3 en el DESTINO sobra
435
+ // (nadie del origen puede respaldarlo: el origen lo descarta arriba) pero
436
+ // NO entra en `toDelete`: la pasada no se lo pide al driver ni con `--prune`
437
+ // —`unrelate` lo rechazaría con 422 y hasta el cierre eso ABORTABA la pasada
438
+ // a mitad, con los `toWrite` ya escritos—. Se lista con `pruned: false` y
439
+ // la receta, cuenta en `extra` y es deriva. Solo la forma del userset: la
440
+ // F-05 del par del SUJETO no decide aquí (un userset que pasa la forma es
441
+ // `group#member`, declarado en toda config).
442
+ const subject = classifySubject(tuple, undefined);
443
+ if (subject.kind === 'userset-unsupported') {
444
+ destResidue.add(tuple);
445
+ usersetResidue.push({ side: 'destino', tuple: describeTuple(tuple), message: subject.message });
446
+ continue;
447
+ }
448
+ // Cierre 3 del lote B · 🟠 N9 (capa 1): la fila cuya RELACIÓN o TIPO el
449
+ // destino (`toConfig`) ya no declara — una relación retirada de la config con
450
+ // filas vivas (`#enumerateRows`/`#sweep` filtran por tipo, no por relación) o
451
+ // un driver con la config vieja — es la tercera fila que la API no admite:
452
+ // `unrelate` la rechaza por F-05, así que lleva la MISMA regla que las dos de
453
+ // arriba (nunca en `toDelete`, `pruned: false`, deriva, receta). La regla es
454
+ // por la FILA, no por el driver (N3): hasta el cierre 3 un driver viejo la
455
+ // borraba y el driver nuevo tumbaba la pasada a mitad con un stack crudo.
456
+ const undeclared = toConfig ? classifyDestinationRow(toConfig, tuple) : null;
457
+ if (undeclared !== null) {
458
+ destResidue.add(tuple);
459
+ undeclaredResidue.push({ tuple: describeTuple(tuple), message: undeclared });
328
460
  continue;
329
461
  }
330
462
  destByKey.set(keyed.key, tuple);
@@ -342,9 +474,81 @@ function planPartition(partition, enumerated, destTuples, context) {
342
474
  else
343
475
  unchanged += 1;
344
476
  }
345
- const toDelete = destTuples.filter((tuple) => destInvalid.has(tuple) || !sourceByKey.has(tupleKey({ ...tuple, kind: 'allow' })));
477
+ const toDelete = destTuples.filter((tuple) => !destResidue.has(tuple) && !destInvalid.has(tuple) && !sourceByKey.has(tupleKey({ ...tuple, kind: 'allow' })));
346
478
  const massDelete = prune && toDelete.length > 0 && sourceTuples.length === 0;
347
- return { partition, enumerated: enumerated.length, toWrite, toUpdate, toDelete, unchanged, skipped, modelDrift, massDelete, invalid };
479
+ return {
480
+ partition,
481
+ enumerated: enumerated.length,
482
+ toWrite,
483
+ toUpdate,
484
+ toDelete,
485
+ unchanged,
486
+ skipped,
487
+ modelDrift,
488
+ massDelete,
489
+ invalid,
490
+ usersetResidue,
491
+ undeclaredResidue,
492
+ destResidue: destResidue.size + destInvalid.size,
493
+ };
494
+ }
495
+ /**
496
+ * **F-05 del destino sobre una fila ENUMERADA del destino** (cierre 3 del lote B ·
497
+ * 🟠 N9, capa 1): la MISMA `assertRelationDeclared` que corre en la primera línea
498
+ * de `unrelate` de los dos drivers, aplicada en el plan para que `--dry-run` y la
499
+ * pasada real den los mismos números y la fila nunca llegue a un `unrelate` que
500
+ * la rechazaría. Devuelve el porqué (el mensaje de F-05: tipo o relación) o
501
+ * `null` si el destino la declara. Nunca lanza por un dato del store
502
+ * (invariante 5): cualquier otra excepción se propaga tal cual.
503
+ */
504
+ function classifyDestinationRow(toConfig, tuple) {
505
+ try {
506
+ assertRelationDeclared(toConfig, tuple.object, tuple.relation);
507
+ return null;
508
+ }
509
+ catch (error) {
510
+ if (error instanceof RelationTypeUnknownError || error instanceof RelationUnknownError)
511
+ return error.message;
512
+ throw error;
513
+ }
514
+ }
515
+ /**
516
+ * **Los 422 de la FAMILIA de relaciones, clasificados por `code`** (cierre 3 del
517
+ * lote B · 🟠 N9, capa 2): lo que el bucle de poda absorbe cuando el driver del
518
+ * destino rechaza un `unrelate` que el plan dio por bueno — sin `toConfig` el plan
519
+ * no puede anticipar F-05, y un driver de terceros puede decir cualquiera de los
520
+ * cuatro—. Por `code` y `status`, no por clase: un driver de terceros lanza su
521
+ * propia clase con el mismo código. Fuera de esta tabla NADA se absorbe.
522
+ */
523
+ const RELATION_422_REASONS = Object.freeze({
524
+ [RelationTypeUnknownError.code]: 'undeclared',
525
+ [RelationUnknownError.code]: 'undeclared',
526
+ [RelationUsersetUnsupportedError.code]: 'userset-unsupported',
527
+ [InvalidIdentityError.code]: 'invalid-identity',
528
+ });
529
+ /**
530
+ * Borra la tupla del destino; devuelve `null` si se borró (o ya no estaba) y el
531
+ * motivo + porqué si el DRIVER la rechazó con un 422 de la familia de relaciones
532
+ * (`RELATION_422_REASONS`): la pasada lo clasifica como residuo del destino con
533
+ * `pruned: false` y SIGUE con las demás filas (🟠 N9: nunca un throw a mitad de
534
+ * pasada por una fila que el reporte puede contar). Cualquier otro error —otro
535
+ * 422, un 503, un `Error`— se propaga tal cual: eso sí es el driver
536
+ * contradiciendo al plan por algo que la pasada no sabe contar.
537
+ */
538
+ async function unrelateOrClassify(to, tuple) {
539
+ try {
540
+ await to.unrelate(tuple.subject, tuple.relation, tuple.object, tuple.partition);
541
+ return null;
542
+ }
543
+ catch (error) {
544
+ // Por `status` Y por `code` PROPIO de la tabla (`Object.hasOwn`, repaso del cierre 3 · ⚪ N13): un 422 con un
545
+ // `code` heredado del prototipo (`constructor`, `toString`, `__proto__`) no es de la familia y se propaga.
546
+ const code = String(error?.code);
547
+ const reason = error?.status === 422 && Object.hasOwn(RELATION_422_REASONS, code) ? RELATION_422_REASONS[code] : undefined;
548
+ if (reason === undefined)
549
+ throw error;
550
+ return { reason, message: String(error?.message ?? error) };
551
+ }
348
552
  }
349
553
  /** ¿El tipo de objeto cabe en el modelo fusionado del destino? (`group` es built-in: `hasType` lo incluye.) */
350
554
  function declaredIn(config, objectType) {
@@ -353,7 +557,12 @@ function declaredIn(config, objectType) {
353
557
  /**
354
558
  * Escribe la tupla en el destino; `false` si el DRIVER la rechazó por F-05
355
559
  * (tipo o relación no declarados: 422 `E_AUTHZ_RELATION_TYPE_UNKNOWN` /
356
- * `E_AUTHZ_RELATION_UNKNOWN`). Cualquier otro error se propaga tal cual.
560
+ * `E_AUTHZ_RELATION_UNKNOWN`). Cualquier otro error se propaga tal cual —
561
+ * **también `E_AUTHZ_RELATION_USERSET_UNSUPPORTED`** (cierre 1 del lote B,
562
+ * decisión 4 rechazada): esa clase ya no hereda de F-05 y aquí no se absorbe;
563
+ * el residuo de B3 se clasifica en el PLAN y nunca llega a este `relate`. Un
564
+ * driver que lo lanzara por una tupla que el plan dio por buena está diciendo
565
+ * otra cosa, y eso se propaga (R2-5: el plan clasifica, el driver no absorbe).
357
566
  */
358
567
  async function relateOrSkip(to, tuple) {
359
568
  try {
@@ -363,6 +572,8 @@ async function relateOrSkip(to, tuple) {
363
572
  return true;
364
573
  }
365
574
  catch (error) {
575
+ if (error instanceof RelationUsersetUnsupportedError)
576
+ throw error;
366
577
  if (error instanceof RelationTypeUnknownError || error instanceof RelationUnknownError)
367
578
  return false;
368
579
  throw error;
@@ -1 +1 @@
1
- {"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../../src/relations/reconcile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reconcile.js","sourceRoot":"","sources":["../../../src/relations/reconcile.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"relations_config_store.d.ts","sourceRoot":"","sources":["../../src/relations_config_store.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAMlG,MAAM,WAAW,2BAA2B;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,mBAAmB,EACzB,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,eAAe,CAAC,CAc1B;AAED,kFAAkF;AAClF,wBAAsB,uBAAuB,CAC3C,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CAMrC;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAGjC"}
1
+ {"version":3,"file":"relations_config_store.d.ts","sourceRoot":"","sources":["../../src/relations_config_store.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,wCAAwC,CAAA;AAMlG,MAAM,WAAW,2BAA2B;IAC1C,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAMD;;;;;;GAMG;AACH,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,mBAAmB,EACzB,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,eAAe,CAAC,CAc1B;AAED,kFAAkF;AAClF,wBAAsB,uBAAuB,CAC3C,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,mBAAmB,GAAG,IAAI,CAAC,CA+BrC;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,GAAE,2BAAgC,GACxC,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAGjC"}