@jantstack/adonis-authz 2.4.0-alpha.1 → 2.4.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 (105) hide show
  1. package/README.md +248 -18
  2. package/build/commands/authz_relations_reconcile.d.ts +25 -1
  3. package/build/commands/authz_relations_reconcile.d.ts.map +1 -1
  4. package/build/commands/authz_relations_reconcile.js +94 -6
  5. package/build/commands/authz_relations_reconcile.js.map +1 -1
  6. package/build/index.d.ts +12 -1
  7. package/build/index.d.ts.map +1 -1
  8. package/build/index.js +10 -0
  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 +7 -0
  12. package/build/providers/authz_provider.js.map +1 -1
  13. package/build/src/define_config.d.ts +36 -0
  14. package/build/src/define_config.d.ts.map +1 -1
  15. package/build/src/define_config.js.map +1 -1
  16. package/build/src/drivers/database_driver.d.ts +53 -14
  17. package/build/src/drivers/database_driver.d.ts.map +1 -1
  18. package/build/src/drivers/database_driver.js +104 -32
  19. package/build/src/drivers/database_driver.js.map +1 -1
  20. package/build/src/drivers/database_relations_driver.d.ts +47 -9
  21. package/build/src/drivers/database_relations_driver.d.ts.map +1 -1
  22. package/build/src/drivers/database_relations_driver.js +318 -89
  23. package/build/src/drivers/database_relations_driver.js.map +1 -1
  24. package/build/src/drivers/openfga_driver.d.ts +17 -4
  25. package/build/src/drivers/openfga_driver.d.ts.map +1 -1
  26. package/build/src/drivers/openfga_driver.js +38 -3
  27. package/build/src/drivers/openfga_driver.js.map +1 -1
  28. package/build/src/drivers/openfga_facts.d.ts +15 -0
  29. package/build/src/drivers/openfga_facts.d.ts.map +1 -1
  30. package/build/src/drivers/openfga_facts.js +25 -2
  31. package/build/src/drivers/openfga_facts.js.map +1 -1
  32. package/build/src/drivers/openfga_relations_driver.d.ts +27 -6
  33. package/build/src/drivers/openfga_relations_driver.d.ts.map +1 -1
  34. package/build/src/drivers/openfga_relations_driver.js +140 -16
  35. package/build/src/drivers/openfga_relations_driver.js.map +1 -1
  36. package/build/src/errors.d.ts +35 -3
  37. package/build/src/errors.d.ts.map +1 -1
  38. package/build/src/errors.js +61 -3
  39. package/build/src/errors.js.map +1 -1
  40. package/build/src/freeze.d.ts +37 -16
  41. package/build/src/freeze.d.ts.map +1 -1
  42. package/build/src/freeze.js +53 -8
  43. package/build/src/freeze.js.map +1 -1
  44. package/build/src/manager.d.ts +16 -1
  45. package/build/src/manager.d.ts.map +1 -1
  46. package/build/src/manager.js +116 -25
  47. package/build/src/manager.js.map +1 -1
  48. package/build/src/models/authz_assignment.d.ts +2 -2
  49. package/build/src/models/authz_assignment.d.ts.map +1 -1
  50. package/build/src/models/authz_deny.d.ts +2 -2
  51. package/build/src/models/authz_deny.d.ts.map +1 -1
  52. package/build/src/models/authz_permission.d.ts +2 -2
  53. package/build/src/models/authz_permission.d.ts.map +1 -1
  54. package/build/src/models/authz_role.d.ts +2 -2
  55. package/build/src/models/authz_role.d.ts.map +1 -1
  56. package/build/src/models/authz_role_permission.d.ts +2 -2
  57. package/build/src/models/authz_role_permission.d.ts.map +1 -1
  58. package/build/src/relation_partition_trigger.d.ts.map +1 -1
  59. package/build/src/relation_partition_trigger.js +11 -3
  60. package/build/src/relation_partition_trigger.js.map +1 -1
  61. package/build/src/relations/define_relations_config.d.ts +17 -0
  62. package/build/src/relations/define_relations_config.d.ts.map +1 -1
  63. package/build/src/relations/define_relations_config.js +30 -1
  64. package/build/src/relations/define_relations_config.js.map +1 -1
  65. package/build/src/relations/manager.d.ts +25 -3
  66. package/build/src/relations/manager.d.ts.map +1 -1
  67. package/build/src/relations/manager.js +76 -19
  68. package/build/src/relations/manager.js.map +1 -1
  69. package/build/src/relations/reconcile.d.ts +53 -4
  70. package/build/src/relations/reconcile.d.ts.map +1 -1
  71. package/build/src/relations/reconcile.js +92 -30
  72. package/build/src/relations/reconcile.js.map +1 -1
  73. package/build/src/scope_outbox.d.ts.map +1 -1
  74. package/build/src/scope_outbox.js +17 -10
  75. package/build/src/scope_outbox.js.map +1 -1
  76. package/build/src/shared/backend_guard.d.ts +28 -0
  77. package/build/src/shared/backend_guard.d.ts.map +1 -1
  78. package/build/src/shared/backend_guard.js +52 -0
  79. package/build/src/shared/backend_guard.js.map +1 -1
  80. package/build/src/shared/transaction_guard.d.ts +50 -0
  81. package/build/src/shared/transaction_guard.d.ts.map +1 -0
  82. package/build/src/shared/transaction_guard.js +60 -0
  83. package/build/src/shared/transaction_guard.js.map +1 -0
  84. package/build/src/testing/contract.d.ts +55 -4
  85. package/build/src/testing/contract.d.ts.map +1 -1
  86. package/build/src/testing/contract.js +240 -8
  87. package/build/src/testing/contract.js.map +1 -1
  88. package/build/src/testing/main.d.ts +4 -4
  89. package/build/src/testing/main.d.ts.map +1 -1
  90. package/build/src/testing/main.js +2 -2
  91. package/build/src/testing/main.js.map +1 -1
  92. package/build/src/testing/relations_contract.d.ts +23 -1
  93. package/build/src/testing/relations_contract.d.ts.map +1 -1
  94. package/build/src/testing/relations_contract.js +432 -17
  95. package/build/src/testing/relations_contract.js.map +1 -1
  96. package/build/src/testing/relations_reconcile_contract.d.ts.map +1 -1
  97. package/build/src/testing/relations_reconcile_contract.js +49 -1
  98. package/build/src/testing/relations_reconcile_contract.js.map +1 -1
  99. package/build/src/traits/has_uuid.d.ts +2 -2
  100. package/build/src/traits/has_uuid.d.ts.map +1 -1
  101. package/build/src/types.d.ts +197 -10
  102. package/build/src/types.d.ts.map +1 -1
  103. package/build/src/types.js.map +1 -1
  104. package/build/stubs/migration.stub +20 -10
  105. package/package.json +1 -1
@@ -1,4 +1,5 @@
1
- import type { RelObject, RelSubject, RelationObjectsPage, RelationSubjectsPage, RelationPage, RelationTuplePage, RelationsDriver, RelationsDriverCapabilities, RelationWriteOptions, ScopeRef } from '../types.js';
1
+ import type { Clock } from '../clock.js';
2
+ import type { RelObject, RelSubject, RelationObjectsPage, RelationSubjectsPage, RelationPage, RelationTuplePage, RelationsDriver, RelationsDriverCapabilities, RelationTransactionOptions, RelationWriteOptions, ScopeRef } from '../types.js';
2
3
  import type { HolderTypeMap } from './openfga_driver.js';
3
4
  import type { RelationsConfig } from '../relations/define_relations_config.js';
4
5
  export declare const DEFAULT_TIMEOUT_MS = 5000;
@@ -23,6 +24,14 @@ export interface OpenFgaRelationsDriverOptions {
23
24
  logger?: {
24
25
  warn(message: string): void;
25
26
  };
27
+ /**
28
+ * Reloj de pared que DECIDE la caducidad (R-15, 2.5 · J1): el `current_time`
29
+ * de cada `Check`/`ListObjects` (la condición `not_expired` se evalúa contra
30
+ * él), el filtro en cliente de `listSubjects` y los tres estados de
31
+ * `expiresAt` en `relate`. Default `systemClock`; en producción lo aplica el
32
+ * `RelationsManager` con `clock` (`withClock`).
33
+ */
34
+ now?: Clock;
26
35
  }
27
36
  export declare class OpenFgaRelationsDriver implements RelationsDriver {
28
37
  #private;
@@ -46,6 +55,8 @@ export declare class OpenFgaRelationsDriver implements RelationsDriver {
46
55
  * `group`), descartando las de `facts` (scope/role/role_binding).
47
56
  * - `listObjectsTruncation: true`: `ListObjects` trunca al tope del servidor
48
57
  * y este driver lo SEÑALA (medido contra el `:8103` de tope 3).
58
+ * - `injectableClock: true` (R-15): `withClock(now)` fija el reloj que viaja
59
+ * como `current_time` y filtra `listSubjects`, como el driver de roles.
49
60
  */
50
61
  readonly capabilities: RelationsDriverCapabilities;
51
62
  private readonly client;
@@ -53,8 +64,16 @@ export declare class OpenFgaRelationsDriver implements RelationsDriver {
53
64
  unparseableTuples: number;
54
65
  };
55
66
  constructor(config: RelationsConfig, options: OpenFgaRelationsDriverOptions);
56
- relate(subject: RelSubject, relation: string, object: RelObject, partition: ScopeRef, _options?: RelationWriteOptions): Promise<void>;
57
- unrelate(subject: RelSubject, relation: string, object: RelObject, partition: ScopeRef, _options?: RelationWriteOptions): Promise<void>;
67
+ /**
68
+ * Vista de este driver con OTRO reloj de pared (R-15, paridad con
69
+ * `AuthorizationDriver.withClock`): MISMO cliente (store, modelo, deadline),
70
+ * solo cambia el `now` que decide la caducidad. Se construye una instancia
71
+ * nueva y se le presta el cliente (el espía de «1 Check» envuelve
72
+ * `client.check` de la instancia base y tiene que seguir viéndolo).
73
+ */
74
+ withClock(now: Clock): RelationsDriver;
75
+ relate(subject: RelSubject, relation: string, object: RelObject, partition: ScopeRef, options?: RelationWriteOptions): Promise<void>;
76
+ unrelate(subject: RelSubject, relation: string, object: RelObject, partition: ScopeRef, options?: RelationWriteOptions): Promise<void>;
58
77
  /** `check` = UN solo `Check` (el modelo resuelve includes + usersets). */
59
78
  check(subject: RelSubject, relation: string, object: RelObject, partition: ScopeRef): Promise<boolean>;
60
79
  /**
@@ -97,7 +116,9 @@ export declare class OpenFgaRelationsDriver implements RelationsDriver {
97
116
  * `truncated`/paginación: `enumerateRelations` agota el `Read` (exhaustivo,
98
117
  * como `listSubjects`/`purge*`), así que devuelve TODO en una página sin
99
118
  * cursor —el reconcile itera hasta que no hay cursor—. Es el ORIGEN de una
100
- * migración: una tupla que no llegara aquí desaparecería sin rastro.
119
+ * migración: una tupla que no llegara aquí desaparecería sin rastro — por eso
120
+ * la CADUCADA también llega, con su `expiresAt` (R-15), para que el destino
121
+ * la cuente en `skipped`.
101
122
  */
102
123
  enumerateRelations(partition: ScopeRef, _page?: RelationPage): Promise<RelationTuplePage>;
103
124
  /**
@@ -107,7 +128,7 @@ export declare class OpenFgaRelationsDriver implements RelationsDriver {
107
128
  * alias concediendo tras una purga «exitosa». Si tras borrar quedan tuplas
108
129
  * ⇒ 500 `E_AUTHZ_PURGE_INCOMPLETE`.
109
130
  */
110
- purgeObject(object: RelObject, partition: ScopeRef): Promise<void>;
131
+ purgeObject(object: RelObject, partition: ScopeRef, options?: RelationTransactionOptions): Promise<void>;
111
132
  /**
112
133
  * Borra TODAS las tuplas cuyo SUJETO es este subject en la partición, en
113
134
  * cualquier tipo de objeto declarado, y demuestra cero. `Read` exige un
@@ -115,6 +136,6 @@ export declare class OpenFgaRelationsDriver implements RelationsDriver {
115
136
  * que se recorre cada tipo declarado (`group` + los del consumidor) con
116
137
  * `Read({ user, object: '<type>:' })`.
117
138
  */
118
- purgeSubject(subject: RelSubject, partition: ScopeRef): Promise<void>;
139
+ purgeSubject(subject: RelSubject, partition: ScopeRef, options?: RelationTransactionOptions): Promise<void>;
119
140
  }
120
141
  //# sourceMappingURL=openfga_relations_driver.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"openfga_relations_driver.d.ts","sourceRoot":"","sources":["../../../src/drivers/openfga_relations_driver.ts"],"names":[],"mappings":"AAiDA,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EAEZ,iBAAiB,EACjB,eAAe,EACf,2BAA2B,EAC3B,oBAAoB,EACpB,QAAQ,EAET,MAAM,aAAa,CAAA;AACpB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AAExD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAA;AAE9E,eAAO,MAAM,kBAAkB,OAAQ,CAAA;AAgCvC,MAAM,WAAW,6BAA6B;IAC5C,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,wFAAwF;IACxF,WAAW,EAAE,aAAa,CAAA;IAC1B,oEAAoE;IACpE,SAAS,CAAC,EAAE,MAAM,CAAA;IAClB,+FAA+F;IAC/F,WAAW,CAAC,EAAE,oBAAoB,GAAG,kBAAkB,CAAA;IACvD;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAA;IAC9B,uEAAuE;IACvE,MAAM,CAAC,EAAE;QAAE,IAAI,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,CAAA;CACzC;AAED,qBAAa,sBAAuB,YAAW,eAAe;;IAC5D;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,QAAQ,CAAC,YAAY,EAAE,2BAA2B,CAOhD;IAEF,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAgB;IASvC,QAAQ,CAAC,WAAW;;MAA2B;gBAEnC,MAAM,EAAE,eAAe,EAAE,OAAO,EAAE,6BAA6B;IA+GrE,MAAM,CACV,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,QAAQ,EACnB,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,OAAO,CAAC,IAAI,CAAC;IAYV,QAAQ,CACZ,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,QAAQ,EACnB,QAAQ,CAAC,EAAE,oBAAoB,GAC9B,OAAO,CAAC,IAAI,CAAC;IAahB,0EAA0E;IACpE,KAAK,CAAC,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAW5G;;;;;;;;;;OAUG;IACG,WAAW,CACf,OAAO,EAAE,UAAU,EACnB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,QAAQ,EACnB,KAAK,CAAC,EAAE,YAAY,GACnB,OAAO,CAAC,mBAAmB,CAAC;IAuB/B;;;;;OAKG;IACG,YAAY,CAChB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,QAAQ,EACnB,KAAK,CAAC,EAAE,YAAY,GACnB,OAAO,CAAC,oBAAoB,CAAC;IAchC;;;;;;;OAOG;IACG,SAAS,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAYhD;;;;;;;;;;;;;OAaG;IACG,kBAAkB,CAAC,SAAS,EAAE,QAAQ,EAAE,KAAK,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,iBAAiB,CAAC;IA6B/F;;;;;;OAMG;IACG,WAAW,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAUxE;;;;;;OAMG;IACG,YAAY,CAAC,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CA+G5E"}
1
+ {"version":3,"file":"openfga_relations_driver.d.ts","sourceRoot":"","sources":["../../../src/drivers/openfga_relations_driver.ts"],"names":[],"mappings":"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"}
@@ -32,10 +32,13 @@
32
32
  * del SDK escapa (todo va por `#guard`, que clasifica a 503/timeout).
33
33
  */
34
34
  import { OpenFgaClient, ConsistencyPreference, ClientWriteRequestOnMissingDeletes, ClientWriteRequestOnDuplicateWrites, } from '@openfga/sdk';
35
- import { AuthorizationBackendError, AuthorizationBackendTimeoutError, InvalidIdentityError, PurgeIncompleteError, UnsupportedOperationError, } from '../errors.js';
36
- import { assertScope, assertSubject, assertRelationId, scopeKey, scopeSpellings } from '../identity.js';
35
+ import { AuthorizationBackendError, AuthorizationBackendTimeoutError, AuthorizationConfigError, InvalidIdentityError, PurgeIncompleteError, UnsupportedOperationError, } from '../errors.js';
36
+ import { assertScope, assertSubject, assertRelationId, assertExpiresAt, scopeKey, scopeSpellings } from '../identity.js';
37
+ import { isClock, systemClock } from '../clock.js';
38
+ import { resolveGrantExpiry, sameInstant, toExpiryDate } from '../expiry.js';
37
39
  import { isRelUserset } from '../types.js';
38
- import { assertFgaObjectId, FACTS_GROUP_TYPE } from './openfga_facts.js';
40
+ import { assertFgaObjectId, FACTS_EXPIRY_CONDITION, FACTS_GROUP_TYPE, } from './openfga_facts.js';
41
+ import { assertRelationDeclared } from '../relations/define_relations_config.js';
39
42
  export const DEFAULT_TIMEOUT_MS = 5_000;
40
43
  /** Tope de operaciones por `Write` en FGA (`exceeded_entity_limit` a partir de 100). */
41
44
  const WRITE_BATCH_SIZE = 100;
@@ -58,7 +61,12 @@ const MAX_READ_PAGES = 10_000;
58
61
  * truncado FALSO (el servidor devolvió todo); por encima, se perdería el corte.
59
62
  */
60
63
  const DEFAULT_LIST_OBJECTS_MAX = 1_000;
61
- /** Ignora duplicados: las tuplas de relación no llevan condición (idénticas por construcción). */
64
+ /**
65
+ * Ignora duplicados en el `Write` de una tupla que NO estaba (idempotencia de
66
+ * dos `relate` concurrentes idénticos). Cambiar la caducidad de una que SÍ
67
+ * está es delete+write (R-15): FGA no admite reescribir la condición de una
68
+ * tupla existente y un `Ignore` la dejaría con la caducidad vieja en silencio.
69
+ */
62
70
  const IGNORE_DUPLICATE_WRITES = {
63
71
  conflict: { onDuplicateWrites: ClientWriteRequestOnDuplicateWrites.Ignore },
64
72
  };
@@ -87,6 +95,8 @@ export class OpenFgaRelationsDriver {
87
95
  * `group`), descartando las de `facts` (scope/role/role_binding).
88
96
  * - `listObjectsTruncation: true`: `ListObjects` trunca al tope del servidor
89
97
  * y este driver lo SEÑALA (medido contra el `:8103` de tope 3).
98
+ * - `injectableClock: true` (R-15): `withClock(now)` fija el reloj que viaja
99
+ * como `current_time` y filtra `listSubjects`, como el driver de roles.
90
100
  */
91
101
  capabilities = Object.freeze({
92
102
  singleCheckRelations: true,
@@ -95,9 +105,27 @@ export class OpenFgaRelationsDriver {
95
105
  membersOfNative: false,
96
106
  enumerateRelations: true,
97
107
  listObjectsTruncation: true,
108
+ injectableClock: true,
109
+ // L-2/L-5 (panel `{trx}`, (C)): `false` EXPLÍCITO, y no puede ser otra
110
+ // cosa — una tupla no entra en una transacción SQL: el store es otro
111
+ // servicio y no hay 2PC, así que «los dos o ninguno» con la transacción
112
+ // del consumidor es una promesa que este driver no puede hacer, y no la
113
+ // hace. `{ transaction }` es 500 `E_AUTHZ_UNSUPPORTED` por llamada, en el
114
+ // `RelationsManager` (puerta 1) Y en el driver (`#rejectTransaction`,
115
+ // para quien entre por `manager.driver()` o por `reconcileRelations`),
116
+ // con CERO llamadas al store (L-5 lo fija contra el `:8101` con espía
117
+ // sobre el cliente). La alternativa que SÍ existe es para el ÁRBOL de
118
+ // scopes: `scopes.outbox` encola en tu transacción y `authz:scopes:relay`
119
+ // aplica. Para las RELACIONES no hay outbox (el panel la descartó:
120
+ // fail-open medido durante el lag); el consumidor lee esta capacidad y
121
+ // ajusta (usa `database` para lo que tenga que ir en su transacción, o
122
+ // `requireTransactionalWrites` para fallar al arrancar).
123
+ transactionalWrites: false,
98
124
  });
99
125
  client;
100
126
  #config;
127
+ #options;
128
+ #now;
101
129
  #holderTypes;
102
130
  #fgaToMorph;
103
131
  #timeoutMs;
@@ -107,6 +135,8 @@ export class OpenFgaRelationsDriver {
107
135
  diagnostics = { unparseableTuples: 0 };
108
136
  constructor(config, options) {
109
137
  this.#config = config;
138
+ this.#options = options;
139
+ this.#now = options.now ?? systemClock;
110
140
  this.#holderTypes = options.holderTypes;
111
141
  this.#fgaToMorph = Object.fromEntries(Object.entries(options.holderTypes).map(([morph, fga]) => [fga, morph]));
112
142
  this.#timeoutMs = options.timeoutMs ?? DEFAULT_TIMEOUT_MS;
@@ -124,6 +154,25 @@ export class OpenFgaRelationsDriver {
124
154
  retryParams: { maxRetry: 0 },
125
155
  });
126
156
  }
157
+ /**
158
+ * Vista de este driver con OTRO reloj de pared (R-15, paridad con
159
+ * `AuthorizationDriver.withClock`): MISMO cliente (store, modelo, deadline),
160
+ * solo cambia el `now` que decide la caducidad. Se construye una instancia
161
+ * nueva y se le presta el cliente (el espía de «1 Check» envuelve
162
+ * `client.check` de la instancia base y tiene que seguir viéndolo).
163
+ */
164
+ withClock(now) {
165
+ if (!isClock(now)) {
166
+ throw new AuthorizationConfigError(`withClock: now debe ser una función () => Date (llegó ${typeof now})`);
167
+ }
168
+ const view = new OpenFgaRelationsDriver(this.#config, { ...this.#options, now });
169
+ view.client = this.client;
170
+ return view;
171
+ }
172
+ /** El `context` de todo `Check`/`ListObjects`: la condición `not_expired` se evalúa contra este instante (un `now` por operación). */
173
+ #checkContext(at) {
174
+ return { current_time: at.toISOString() };
175
+ }
127
176
  /* ── Clasificación de fallos (la abstracción no filtra) ─────────────────── */
128
177
  async #guard(operation, fn) {
129
178
  try {
@@ -213,17 +262,72 @@ export class OpenFgaRelationsDriver {
213
262
  return { type: morph, uuid };
214
263
  }
215
264
  /* ── Escrituras ─────────────────────────────────────────────────────────── */
216
- async relate(subject, relation, object, partition, _options) {
265
+ /**
266
+ * `relate` con los tres estados de `expiresAt` (R-15, invariante 10). Se LEE
267
+ * primero la tupla exacta (un `Read` por clave, como `grant` de roles):
268
+ * - ausente ⇒ un `Write` (con la condición `not_expired` si caduca);
269
+ * - presente con la caducidad que toca ⇒ no-op (idempotente, invariante 6);
270
+ * - presente con OTRA ⇒ delete + write en DOS llamadas (FGA no admite
271
+ * delete+write de la misma clave en un `Write`, ni reescribir su
272
+ * condición): entre ambas hay un instante en el que `check` responde
273
+ * `false` —fail-closed, la misma ventana que el `grant` de roles—.
274
+ */
275
+ /**
276
+ * **`{ transaction }` se rechaza también AQUÍ** (L-5, defensa en
277
+ * profundidad como F-05 en L-0): la puerta 1 vive en el `RelationsManager`,
278
+ * pero `manager.driver()` y `reconcileRelations` entran por el driver; sin
279
+ * esta guarda un `{ transaction }` por ahí escribiría la tupla en el store
280
+ * IGNORANDO la transacción — una escritura que finge ir en tu transacción y
281
+ * que tu rollback no deshace, que es exactamente el fail-open que
282
+ * `transactionalWrites: false` declara no poder evitar. Primera línea de
283
+ * las cuatro escrituras, antes de F-05, del `Read` y del `Write`: CERO
284
+ * llamadas al cliente.
285
+ */
286
+ #rejectTransaction(operation, options) {
287
+ if (options?.transaction === undefined || options.transaction === null)
288
+ return;
289
+ throw UnsupportedOperationError.transactionalDriver(`relations.${operation}`, 'openfga', 'relations');
290
+ }
291
+ async relate(subject, relation, object, partition, options) {
292
+ this.#rejectTransaction('relate', options);
293
+ // L-0 · F-05 en el DRIVER (defensa en profundidad, la MISMA función que el
294
+ // manager): `manager.driver()` y `reconcileRelations` entran por aquí, y en
295
+ // el store COMPARTIDO un tipo no declarado (`role_binding`) compondría el
296
+ // id exacto de un binding de roles. Corta ANTES del `Read` y del `Write`.
297
+ assertRelationDeclared(this.#config, object, relation);
217
298
  assertScope(partition);
299
+ assertExpiresAt(options?.expiresAt);
218
300
  const partitionKey = scopeKey(partition);
219
301
  const objectId = this.#objectId(object.type, partitionKey, object.id);
220
302
  const user = this.#subjectUser(subject, partitionKey);
221
- await this.#guard('relate', () =>
222
- // Idempotente (invariante 6): un `Write` de una tupla que ya está es un
223
- // duplicado idéntico (sin condición), así que se ignora.
224
- this.client.write({ writes: [{ user, relation, object: objectId }] }, IGNORE_DUPLICATE_WRITES));
303
+ const key = { user, relation, object: objectId };
304
+ const now = this.#now();
305
+ const current = await this.#readTuple('relate', key);
306
+ const previous = current ? current.validUntil : null;
307
+ const expiresAt = resolveGrantExpiry(previous, options?.expiresAt, now);
308
+ if (current && sameInstant(previous, expiresAt))
309
+ return;
310
+ const tuple = expiresAt
311
+ ? { ...key, condition: { name: FACTS_EXPIRY_CONDITION, context: { valid_until: expiresAt.toISOString() } } }
312
+ : key;
313
+ if (current) {
314
+ await this.#guard('relate', () => this.client.write({ deletes: [key] }, IGNORE_MISSING_DELETES));
315
+ }
316
+ await this.#guard('relate', () => this.client.write({ writes: [tuple] }, IGNORE_DUPLICATE_WRITES));
317
+ }
318
+ /** La tupla EXACTA de una clave (un `Read` por clave completa), con su caducidad si la lleva. */
319
+ async #readTuple(operation, key) {
320
+ const response = await this.#guard(operation, () => this.client.read(key, { consistency: this.#consistency }));
321
+ const found = (response.tuples ?? []).map((t) => t.key).find((k) => k?.user === key.user && k?.relation === key.relation && k?.object === key.object);
322
+ if (!found)
323
+ return null;
324
+ return { ...key, validUntil: toExpiryDate(found.condition?.context?.valid_until) };
225
325
  }
226
- async unrelate(subject, relation, object, partition, _options) {
326
+ async unrelate(subject, relation, object, partition, options) {
327
+ this.#rejectTransaction('unrelate', options);
328
+ // L-0 · F-05 también al RETIRAR: un `unrelate(alice, assignee, role_binding)`
329
+ // sería un revoke de roles por la puerta de relaciones.
330
+ assertRelationDeclared(this.#config, object, relation);
227
331
  assertScope(partition);
228
332
  const partitionKey = scopeKey(partition);
229
333
  const objectId = this.#objectId(object.type, partitionKey, object.id);
@@ -239,7 +343,8 @@ export class OpenFgaRelationsDriver {
239
343
  const partitionKey = scopeKey(partition);
240
344
  const objectId = this.#objectId(object.type, partitionKey, object.id);
241
345
  const user = this.#subjectUser(subject, partitionKey);
242
- const response = await this.#guard('check', () => this.client.check({ user, relation, object: objectId }, { consistency: this.#consistency }));
346
+ const context = this.#checkContext(this.#now());
347
+ const response = await this.#guard('check', () => this.client.check({ user, relation, object: objectId, context }, { consistency: this.#consistency }));
243
348
  return response.allowed === true;
244
349
  }
245
350
  /**
@@ -257,7 +362,8 @@ export class OpenFgaRelationsDriver {
257
362
  assertScope(partition);
258
363
  const partitionKey = scopeKey(partition);
259
364
  const user = this.#subjectUser(subject, partitionKey);
260
- const response = await this.#guard('listObjects', () => this.client.listObjects({ user, relation, type: objectType }, { consistency: this.#consistency }));
365
+ const context = this.#checkContext(this.#now());
366
+ const response = await this.#guard('listObjects', () => this.client.listObjects({ user, relation, type: objectType, context }, { consistency: this.#consistency }));
261
367
  const raw = response.objects ?? [];
262
368
  const truncated = raw.length >= this.#listObjectsMax;
263
369
  const objects = [];
@@ -284,9 +390,15 @@ export class OpenFgaRelationsDriver {
284
390
  assertScope(partition);
285
391
  const partitionKey = scopeKey(partition);
286
392
  const objectId = this.#objectId(object.type, partitionKey, object.id);
393
+ // `Read` devuelve tuplas ESCRITAS, no evaluadas: la caducidad se filtra en
394
+ // cliente con el MISMO reloj del driver (R-15, estricta: la que vence en
395
+ // `now` ya no cuenta), como las enumeraciones del driver de roles.
396
+ const now = this.#now();
287
397
  const tuples = await this.#readAll('listSubjects', { object: objectId, relation });
288
398
  const subjects = [];
289
399
  for (const t of tuples) {
400
+ if (t.validUntil && t.validUntil.getTime() <= now.getTime())
401
+ continue;
290
402
  const subject = this.#userToSubject(t.user);
291
403
  if (subject)
292
404
  subjects.push(subject);
@@ -320,7 +432,9 @@ export class OpenFgaRelationsDriver {
320
432
  * `truncated`/paginación: `enumerateRelations` agota el `Read` (exhaustivo,
321
433
  * como `listSubjects`/`purge*`), así que devuelve TODO en una página sin
322
434
  * cursor —el reconcile itera hasta que no hay cursor—. Es el ORIGEN de una
323
- * migración: una tupla que no llegara aquí desaparecería sin rastro.
435
+ * migración: una tupla que no llegara aquí desaparecería sin rastro — por eso
436
+ * la CADUCADA también llega, con su `expiresAt` (R-15), para que el destino
437
+ * la cuente en `skipped`.
324
438
  */
325
439
  async enumerateRelations(partition, _page) {
326
440
  assertScope(partition);
@@ -346,6 +460,7 @@ export class OpenFgaRelationsDriver {
346
460
  relation: key.relation,
347
461
  object: { type: parsed.type, id: parsed.objectUuid },
348
462
  partition,
463
+ expiresAt: key.validUntil,
349
464
  });
350
465
  }
351
466
  return { tuples };
@@ -358,7 +473,8 @@ export class OpenFgaRelationsDriver {
358
473
  * alias concediendo tras una purga «exitosa». Si tras borrar quedan tuplas
359
474
  * ⇒ 500 `E_AUTHZ_PURGE_INCOMPLETE`.
360
475
  */
361
- async purgeObject(object, partition) {
476
+ async purgeObject(object, partition, options) {
477
+ this.#rejectTransaction('purgeObject', options);
362
478
  assertScope(partition);
363
479
  const objectIds = this.#partitionSpellings(partition).map((key) => this.#objectId(object.type, key, object.id));
364
480
  for (const objectId of objectIds) {
@@ -372,7 +488,8 @@ export class OpenFgaRelationsDriver {
372
488
  * que se recorre cada tipo declarado (`group` + los del consumidor) con
373
489
  * `Read({ user, object: '<type>:' })`.
374
490
  */
375
- async purgeSubject(subject, partition) {
491
+ async purgeSubject(subject, partition, options) {
492
+ this.#rejectTransaction('purgeSubject', options);
376
493
  assertScope(partition);
377
494
  if (!isRelUserset(subject))
378
495
  assertSubject(subject);
@@ -430,7 +547,14 @@ export class OpenFgaRelationsDriver {
430
547
  this.#warnUnparseable(operation, JSON.stringify(key ?? null));
431
548
  continue;
432
549
  }
433
- keys.push({ user: key.user, relation: key.relation, object: key.object });
550
+ // Con su caducidad (R-15): quien la lee decide si filtra (`listSubjects`),
551
+ // la emite (`enumerateRelations`) o la ignora (`purge*` borra TODO).
552
+ keys.push({
553
+ user: key.user,
554
+ relation: key.relation,
555
+ object: key.object,
556
+ validUntil: toExpiryDate(key.condition?.context?.valid_until),
557
+ });
434
558
  }
435
559
  continuationToken = response.continuation_token || undefined;
436
560
  if (continuationToken) {
@@ -1 +1 @@
1
- {"version":3,"file":"openfga_relations_driver.js","sourceRoot":"","sources":["../../../src/drivers/openfga_relations_driver.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"openfga_relations_driver.js","sourceRoot":"","sources":["../../../src/drivers/openfga_relations_driver.ts"],"names":[],"mappings":"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"}
@@ -347,6 +347,32 @@ export declare class UnsupportedOperationError extends Exception {
347
347
  static status: number;
348
348
  static code: string;
349
349
  constructor(method: string, primitive: string, driver: string, hint?: string);
350
+ /**
351
+ * **Puerta 1 de `{ transaction }`** (L-2, panel `{trx}` (C)): la operación
352
+ * pidió escribir en la transacción del consumidor y el driver activo no
353
+ * declara `transactionalWrites: true`. 500 y no 422 por precedente
354
+ * (`membersOf`, `purgeRole`): no es una pregunta mal formada, es un
355
+ * despliegue que no casa con lo que se le pidió. La letra lleva la salida.
356
+ */
357
+ static transactional(operation: string, driver: string, port: 'roles' | 'relations'): UnsupportedOperationError;
358
+ /**
359
+ * **El mismo rechazo, dicho por el DRIVER `openfga`** (L-5, defensa en
360
+ * profundidad como F-05 en L-0): `manager.driver()` es la salida documentada
361
+ * de las barreras y con `{ transaction }` entraría por aquí saltándose la
362
+ * puerta 1; el driver no puede intentar un `Write` que finja ir en la
363
+ * transacción del consumidor. Misma clase, mismo `code`, misma letra; la
364
+ * frase final dice que no hay salida por el driver — la alternativa que SÍ
365
+ * existe para el ÁRBOL es la outbox de scopes (encola en tu transacción);
366
+ * para HECHOS y relaciones no hay outbox (descartada por el panel `{trx}`:
367
+ * fail-open medido).
368
+ */
369
+ static transactionalDriver(operation: string, driver: string, port: 'roles' | 'relations'): UnsupportedOperationError;
370
+ /**
371
+ * La API de delegación no admite `{ transaction }` (L-2, §1.4 del veredicto):
372
+ * escribe el catálogo por `withAuthzCatalogWrite`, que ES el serializador
373
+ * entre procesos (invariante 14); moverla al commit del consumidor lo anula.
374
+ */
375
+ static transactionalCatalog(operation: string): UnsupportedOperationError;
350
376
  }
351
377
  /**
352
378
  * Una vista de `forRequest()` se usó para LEER después de `maxAgeMs` (2D ·
@@ -600,7 +626,11 @@ export declare class ScopeDriftUnguardedError extends Exception {
600
626
  * {type:'role_binding', id:<roleUuid>}, S)` escribía la tupla del binding y
601
627
  * `check(evil, can_<P>, S)` devolvía `true` (escalada a `roles.authorize`,
602
628
  * medida por el auditor). Junto con ⚪4 (un tipo reservado no se puede
603
- * declarar) la colisión deja de existir en vez de vigilarse.
629
+ * declarar) la colisión deja de existir en vez de vigilarse. **Desde L-0 el
630
+ * mismo 422 lo lanzan también los dos drivers** en `relate`/`unrelate`, antes
631
+ * de tocar el backend (`assertRelationDeclared`, una sola función): el
632
+ * manager cortaba, pero `manager.driver()` y `reconcileRelations` entran por
633
+ * el driver y la escalada seguía abierta por ahí (panel `{trx}`, 🔴 2).
604
634
  */
605
635
  export declare class RelationTypeUnknownError extends Exception {
606
636
  static status: number;
@@ -609,8 +639,10 @@ export declare class RelationTypeUnknownError extends Exception {
609
639
  /**
610
640
  * **F-05, cara de la RELACIÓN.** El `object.type` está declarado, pero la
611
641
  * `relation` no es una de las suyas en `defineRelationsConfig`. Mismo 422
612
- * antes de tocar el driver: una relación no declarada podría, en un futuro
613
- * modelo, mapear a una relación propia de `facts`.
642
+ * antes de tocar el driver —y, desde L-0, también en el driver antes de tocar
643
+ * el backend—: una relación no declarada podría, en un futuro modelo, mapear a
644
+ * una relación propia de `facts` (hoy `document#assignee` en `openfga` salía
645
+ * como un 503 mal clasificado del servidor).
614
646
  */
615
647
  export declare class RelationUnknownError extends Exception {
616
648
  static status: number;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"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"}
@@ -368,6 +368,58 @@ export class UnsupportedOperationError extends Exception {
368
368
  super(`${primitive} necesita '${method}' y el driver '${driver}' no lo implementa: es un método opcional del ` +
369
369
  `puerto (2.1) que este driver tiene que añadir para usar esta primitiva.` + (hint ? ` ${hint}` : ''));
370
370
  }
371
+ /**
372
+ * **Puerta 1 de `{ transaction }`** (L-2, panel `{trx}` (C)): la operación
373
+ * pidió escribir en la transacción del consumidor y el driver activo no
374
+ * declara `transactionalWrites: true`. 500 y no 422 por precedente
375
+ * (`membersOf`, `purgeRole`): no es una pregunta mal formada, es un
376
+ * despliegue que no casa con lo que se le pidió. La letra lleva la salida.
377
+ */
378
+ static transactional(operation, driver, port) {
379
+ const error = new UnsupportedOperationError('transactionalWrites', operation, driver);
380
+ error.message =
381
+ `${operation}: se pidió escribir en la transacción del consumidor ({ transaction }) y el driver '${driver}' ` +
382
+ `declara transactionalWrites: false (o no la declara): no puede inscribir la escritura en tu transacción ` +
383
+ `(«los dos o ninguno» sería falso; en openfga una tupla no entra en una transacción SQL). No se ha tocado el ` +
384
+ `driver. Salidas: usa el driver 'database' para ${port === 'roles' ? 'los hechos' : 'las relaciones'}, o ` +
385
+ `declara requireTransactionalWrites: true en config/authorization.ts` +
386
+ `${port === 'relations' ? ' (o en relations.requireTransactionalWrites)' : ''} para que esto falle al ARRANCAR ` +
387
+ `en vez de en esta ruta. Sin { transaction } la misma llamada entra.`;
388
+ return error;
389
+ }
390
+ /**
391
+ * **El mismo rechazo, dicho por el DRIVER `openfga`** (L-5, defensa en
392
+ * profundidad como F-05 en L-0): `manager.driver()` es la salida documentada
393
+ * de las barreras y con `{ transaction }` entraría por aquí saltándose la
394
+ * puerta 1; el driver no puede intentar un `Write` que finja ir en la
395
+ * transacción del consumidor. Misma clase, mismo `code`, misma letra; la
396
+ * frase final dice que no hay salida por el driver — la alternativa que SÍ
397
+ * existe para el ÁRBOL es la outbox de scopes (encola en tu transacción);
398
+ * para HECHOS y relaciones no hay outbox (descartada por el panel `{trx}`:
399
+ * fail-open medido).
400
+ */
401
+ static transactionalDriver(operation, driver, port) {
402
+ const error = UnsupportedOperationError.transactional(operation, driver, port);
403
+ error.message +=
404
+ ` Rechazado por el DRIVER '${driver}' (no por el manager): entrar por manager.driver() no es una salida — ` +
405
+ `una tupla del store no puede inscribirse en tu transacción ni fingirlo. Para el ÁRBOL de scopes la salida ` +
406
+ `que existe es scopes.outbox (encola en tu transacción y authz:scopes:relay aplica); para hechos y relaciones no hay outbox.`;
407
+ return error;
408
+ }
409
+ /**
410
+ * La API de delegación no admite `{ transaction }` (L-2, §1.4 del veredicto):
411
+ * escribe el catálogo por `withAuthzCatalogWrite`, que ES el serializador
412
+ * entre procesos (invariante 14); moverla al commit del consumidor lo anula.
413
+ */
414
+ static transactionalCatalog(operation) {
415
+ const error = new UnsupportedOperationError('transactionalWrites', operation, 'catalog');
416
+ error.message =
417
+ `${operation}: { transaction } no se admite en la API de delegación: el catálogo se escribe por ` +
418
+ `withAuthzCatalogWrite (cerrojo de la fila de versión + bump como última sentencia, invariante 14), que es el ` +
419
+ `serializador del catálogo entre procesos; inscribirlo en tu transacción lo anularía. Solo grant/revoke/deny/` +
420
+ `removeDeny (hechos) y relate/unrelate/purge* (relaciones) admiten { transaction }.`;
421
+ return error;
422
+ }
371
423
  }
372
424
  /**
373
425
  * Una vista de `forRequest()` se usó para LEER después de `maxAgeMs` (2D ·
@@ -599,7 +651,11 @@ export class ScopeDriftUnguardedError extends Exception {
599
651
  * {type:'role_binding', id:<roleUuid>}, S)` escribía la tupla del binding y
600
652
  * `check(evil, can_<P>, S)` devolvía `true` (escalada a `roles.authorize`,
601
653
  * medida por el auditor). Junto con ⚪4 (un tipo reservado no se puede
602
- * declarar) la colisión deja de existir en vez de vigilarse.
654
+ * declarar) la colisión deja de existir en vez de vigilarse. **Desde L-0 el
655
+ * mismo 422 lo lanzan también los dos drivers** en `relate`/`unrelate`, antes
656
+ * de tocar el backend (`assertRelationDeclared`, una sola función): el
657
+ * manager cortaba, pero `manager.driver()` y `reconcileRelations` entran por
658
+ * el driver y la escalada seguía abierta por ahí (panel `{trx}`, 🔴 2).
603
659
  */
604
660
  export class RelationTypeUnknownError extends Exception {
605
661
  static status = 422;
@@ -608,8 +664,10 @@ export class RelationTypeUnknownError extends Exception {
608
664
  /**
609
665
  * **F-05, cara de la RELACIÓN.** El `object.type` está declarado, pero la
610
666
  * `relation` no es una de las suyas en `defineRelationsConfig`. Mismo 422
611
- * antes de tocar el driver: una relación no declarada podría, en un futuro
612
- * modelo, mapear a una relación propia de `facts`.
667
+ * antes de tocar el driver —y, desde L-0, también en el driver antes de tocar
668
+ * el backend—: una relación no declarada podría, en un futuro modelo, mapear a
669
+ * una relación propia de `facts` (hoy `document#assignee` en `openfga` salía
670
+ * como un 503 mal clasificado del servidor).
613
671
  */
614
672
  export class RelationUnknownError extends Exception {
615
673
  static status = 422;