@jantstack/adonis-authz 2.4.0-alpha.4 → 2.4.0-alpha.5
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.
- package/README.md +72 -3
- package/build/commands/authz_reconcile.d.ts +5 -3
- package/build/commands/authz_reconcile.d.ts.map +1 -1
- package/build/commands/authz_reconcile.js +15 -3
- package/build/commands/authz_reconcile.js.map +1 -1
- package/build/commands/authz_scopes_relay.d.ts +18 -0
- package/build/commands/authz_scopes_relay.d.ts.map +1 -1
- package/build/commands/authz_scopes_relay.js +55 -7
- package/build/commands/authz_scopes_relay.js.map +1 -1
- package/build/commands/authz_scopes_requeue.d.ts +63 -0
- package/build/commands/authz_scopes_requeue.d.ts.map +1 -0
- package/build/commands/authz_scopes_requeue.js +154 -0
- package/build/commands/authz_scopes_requeue.js.map +1 -0
- package/build/commands/main.d.ts +2 -1
- package/build/commands/main.d.ts.map +1 -1
- package/build/commands/main.js +5 -3
- package/build/commands/main.js.map +1 -1
- package/build/index.d.ts +3 -3
- package/build/index.d.ts.map +1 -1
- package/build/index.js +2 -2
- package/build/index.js.map +1 -1
- package/build/src/define_config.d.ts +24 -0
- package/build/src/define_config.d.ts.map +1 -1
- package/build/src/define_config.js.map +1 -1
- package/build/src/drivers/openfga_driver.d.ts.map +1 -1
- package/build/src/drivers/openfga_driver.js +24 -1
- package/build/src/drivers/openfga_driver.js.map +1 -1
- package/build/src/errors.d.ts +30 -0
- package/build/src/errors.d.ts.map +1 -1
- package/build/src/errors.js +32 -0
- package/build/src/errors.js.map +1 -1
- package/build/src/manager.d.ts +77 -4
- package/build/src/manager.d.ts.map +1 -1
- package/build/src/manager.js +393 -25
- package/build/src/manager.js.map +1 -1
- package/build/src/scope_outbox.d.ts +21 -0
- package/build/src/scope_outbox.d.ts.map +1 -1
- package/build/src/scope_outbox.js +211 -24
- package/build/src/scope_outbox.js.map +1 -1
- package/build/src/testing/contract.d.ts.map +1 -1
- package/build/src/testing/contract.js +4 -1
- package/build/src/testing/contract.js.map +1 -1
- package/build/src/testing/main.d.ts +2 -0
- package/build/src/testing/main.d.ts.map +1 -1
- package/build/src/testing/main.js +1 -0
- package/build/src/testing/main.js.map +1 -1
- package/build/src/testing/scope_outbox_contract.d.ts +88 -0
- package/build/src/testing/scope_outbox_contract.d.ts.map +1 -0
- package/build/src/testing/scope_outbox_contract.js +607 -0
- package/build/src/testing/scope_outbox_contract.js.map +1 -0
- package/build/src/types.d.ts +226 -17
- package/build/src/types.d.ts.map +1 -1
- package/build/src/types.js.map +1 -1
- package/package.json +1 -1
package/build/src/manager.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { AuthorizationConfig } from './define_config.js';
|
|
2
2
|
import type { FreezeKind, FreezeToken } from './freeze.js';
|
|
3
|
-
import type { AuthorizationDriver, AuthorizationDriverCapabilities, AuthorizedScopes, CatalogRole, CatalogRoleRef, DenyOptions, DenyRef, ExcludedSubtree, GrantOptions, GrantOutcome, RoleQuery, ScopedRoleChanges, ScopedRoleSpec, ReconcileOptions, ReconcileReport, ScopedWriteOptions, ScopeRelayReport, ScopeRef, ScopeTreeWriteOptions, ScopeType, SubjectRef } from './types.js';
|
|
3
|
+
import type { AuthorizationDriver, AuthorizationDriverCapabilities, AuthorizedScopes, CatalogRole, CatalogRoleRef, DenyOptions, DenyRef, ExcludedSubtree, GrantOptions, GrantOutcome, RoleQuery, ScopedRoleChanges, ScopedRoleSpec, ReconcileOptions, ReconcileReport, ScopedWriteOptions, ScopeEnqueueReceipt, ScopeRequeueReport, ScopeRelayReport, ScopeRef, ScopeTreeWriteOptions, ScopeType, SubjectRef } from './types.js';
|
|
4
4
|
/**
|
|
5
5
|
* Lo que devuelve `AuthorizationManager.forRequest()`: la misma API que el
|
|
6
6
|
* manager (lecturas, escrituras, `scopes.*`), con los ancestros memoizados
|
|
@@ -34,6 +34,17 @@ export declare const MAX_SCOPE_BOUND = 10000000;
|
|
|
34
34
|
*/
|
|
35
35
|
export declare const DEFAULT_RELAY_BATCH = 100;
|
|
36
36
|
export declare const DEFAULT_RELAY_LIMIT = 10000;
|
|
37
|
+
/**
|
|
38
|
+
* **Cota PROPIA del censo de aparcadas** (alpha.5 · cierre, auditor 🟠 2). Las
|
|
39
|
+
* claves de `dead()` que taponan `attached`/`moved` se leen COMPLETAS en cada
|
|
40
|
+
* pasada, sean cuales sean `limit` y `batchSize` (con `--limit 50` o la receta
|
|
41
|
+
* inline `{ only, limit: 1 }` un censo acotado por `limit` dejaba a la aparcada
|
|
42
|
+
* 101 sin taponar y el `attached` colgaba del padre VIEJO — y la sonda de
|
|
43
|
+
* `only` no la ve porque `earlierPending` excluye lo aparcado). Si hay más
|
|
44
|
+
* aparcadas que esto, la pasada se NIEGA (500) en vez de aplicar con un tapón
|
|
45
|
+
* incompleto: una cola así es un incidente, no un lote.
|
|
46
|
+
*/
|
|
47
|
+
export declare const PARKED_CENSUS_MAX = 50000;
|
|
37
48
|
/** Vida por defecto de una vista de `forRequest()` para LEER (F9): un request, no un módulo. */
|
|
38
49
|
export declare const DEFAULT_VIEW_MAX_AGE_MS = 30000;
|
|
39
50
|
export interface ForRequestOptions {
|
|
@@ -224,7 +235,7 @@ export declare class AuthorizationManager {
|
|
|
224
235
|
* Espía: si la validación falla, cero llamadas al driver.
|
|
225
236
|
*/
|
|
226
237
|
readonly scopes: {
|
|
227
|
-
attached: (child: ScopeRef, parent: ScopeRef, options?: ScopeTreeWriteOptions) => Promise<
|
|
238
|
+
attached: (child: ScopeRef, parent: ScopeRef, options?: ScopeTreeWriteOptions) => Promise<ScopeEnqueueReceipt>;
|
|
228
239
|
/**
|
|
229
240
|
* `moved` NO vuelve a juzgar el catálogo, y no tiene por qué (3b-1 · D3,
|
|
230
241
|
* auditor 3G): mover un scope es un hecho del árbol, no una escritura de
|
|
@@ -238,7 +249,7 @@ export declare class AuthorizationManager {
|
|
|
238
249
|
* invariante del sistema. Es ruidosa: `authz:catalog:diff` la lista como
|
|
239
250
|
* `shadowedByAncestor` (y `--fail-on-shadows` la cuenta como deriva).
|
|
240
251
|
*/
|
|
241
|
-
moved: (child: ScopeRef, newParent: ScopeRef, options?: ScopeTreeWriteOptions) => Promise<
|
|
252
|
+
moved: (child: ScopeRef, newParent: ScopeRef, options?: ScopeTreeWriteOptions) => Promise<ScopeEnqueueReceipt>;
|
|
242
253
|
/**
|
|
243
254
|
* Hechos primero (el driver demuestra cero o lanza), arista después
|
|
244
255
|
* (S6): si la purga muere a medias, el subárbol sigue colgado y los
|
|
@@ -262,7 +273,7 @@ export declare class AuthorizationManager {
|
|
|
262
273
|
* O(1), sin rango que medir, sin árbol que enumerar y sin nada que
|
|
263
274
|
* declarar a medias.
|
|
264
275
|
*/
|
|
265
|
-
detached: (child: ScopeRef, options?: ScopeTreeWriteOptions) => Promise<
|
|
276
|
+
detached: (child: ScopeRef, options?: ScopeTreeWriteOptions) => Promise<ScopeEnqueueReceipt>;
|
|
266
277
|
};
|
|
267
278
|
/**
|
|
268
279
|
* **Drena la outbox del árbol y aplica los cambios al driver** (3b-2d).
|
|
@@ -307,12 +318,74 @@ export declare class AuthorizationManager {
|
|
|
307
318
|
* **fail-open temporal** —el tenant antiguo conserva acceso tras un
|
|
308
319
|
* `moved`, los denies heredados no aplican tras un `attached`—. No hay
|
|
309
320
|
* 2PC; es el precio de tener el árbol en dos sitios.
|
|
321
|
+
*
|
|
322
|
+
* **`only` (2.4.0-alpha.5 · R1)**: relevar SOLO estas entradas —los ids del
|
|
323
|
+
* recibo de `scopes.*` que ESTE proceso acaba de recibir, jamás del cuerpo
|
|
324
|
+
* de una petición— sin leer la cola de los demás (medido: 4 507 ms → 19 ms
|
|
325
|
+
* con 500 entradas ajenas por delante). El orden por clave NO se relaja:
|
|
326
|
+
* antes de aplicar cada entrada pedida se sondea la cola ENTERA
|
|
327
|
+
* (`earlierPending`, o paginando `pending()` si la outbox no lo tiene) y,
|
|
328
|
+
* si hay una pendiente ANTERIOR que comparte clave de scope con ella, sale
|
|
329
|
+
* `deferred` con `depends-on:<id>` — nunca aplicada fuera de orden (el 🔴 1
|
|
330
|
+
* del panel relay, medido: un `attached(child, unit)` aplicado antes que su
|
|
331
|
+
* `moved(unit → orgB)` dejaba al editor de la org VIEJA autorizando sobre el
|
|
332
|
+
* hijo). `remaining` y `dead` siguen siendo GLOBALES. `only: []` es 500
|
|
333
|
+
* (un `filter` vacío del consumidor no puede acabar en drenaje ni en un
|
|
334
|
+
* reporte vacío en verde), y una outbox que no honre el filtro también.
|
|
335
|
+
*
|
|
336
|
+
* **Lo aparcado tapona por clave (alpha.5 · R2a)**: las claves de `dead()`
|
|
337
|
+
* siembran el bloqueo al inicio de la pasada para lo que CONCEDE o recuelga
|
|
338
|
+
* (`attached`/`moved`, `deferred` con `parked:<id>`) y dejan pasar lo que
|
|
339
|
+
* RETIRA (`detached`: una purga nunca queda bloqueada, invariante 11). Y un
|
|
340
|
+
* 503 del backend NO consume intento (`markFailed(..., { transient })`).
|
|
310
341
|
*/
|
|
311
342
|
relayScopeChanges(options?: {
|
|
312
343
|
limit?: number;
|
|
313
344
|
batchSize?: number;
|
|
314
345
|
dryRun?: boolean;
|
|
346
|
+
only?: Array<string | number>;
|
|
315
347
|
}): Promise<ScopeRelayReport>;
|
|
348
|
+
/**
|
|
349
|
+
* **Devuelve entradas APARCADAS a la cola** (2.4.0-alpha.5 · R2b; panel
|
|
350
|
+
* relay, cuestión 2). Es lo que hay detrás de `node ace authz:scopes:requeue
|
|
351
|
+
* --id`. Operación de PLATAFORMA como `relayScopeChanges` y `driver()`: sin
|
|
352
|
+
* actor, sin `within`, **no se expone por HTTP**.
|
|
353
|
+
*
|
|
354
|
+
* **La sonda anti-reversión vive AQUÍ, no en la outbox**: reaplicar una
|
|
355
|
+
* entrada ANTERIOR a otra ya APLICADA sobre la misma clave de scope
|
|
356
|
+
* reescribe el árbol del store en un orden que nunca existió — el `moved`
|
|
357
|
+
* viejo tras el nuevo deja el padre VIEJO con UN solo padre, así que
|
|
358
|
+
* `assertOneParent` no lo delata y el tenant antiguo recupera el acceso
|
|
359
|
+
* (auditor 🔴 2, `relay-auditor-5.ts`, medido). Por eso, antes de tocar la
|
|
360
|
+
* cola, cada aparcada pedida se compara contra las aplicadas posteriores
|
|
361
|
+
* que compartan clave (`outbox.laterApplied`, espejo de `earlierPending`)
|
|
362
|
+
* y si hay alguna se NIEGA con 500 `E_AUTHZ_REQUEUE_REFUSED` nombrándola —
|
|
363
|
+
* todo o nada, cero filas tocadas—. El remedio correcto es
|
|
364
|
+
* `authz:reconcile --to=<driver>`, que recalcula con el árbol de HOY. La
|
|
365
|
+
* sonda es del manager porque necesita las claves del cambio
|
|
366
|
+
* (`#changeKeys`); `outbox.requeue` queda mecánico y una outbox de
|
|
367
|
+
* terceros la hereda gratis.
|
|
368
|
+
*
|
|
369
|
+
* **`force`** salta la sonda y devuelve el diff en `overrides`. Existe para
|
|
370
|
+
* el comando ace —que lo imprime y exige el flag explícito (decisión del
|
|
371
|
+
* dueño del 2026-09-09 (2))— y para nada más: llamarlo con `force: true`
|
|
372
|
+
* desde un endpoint es policy en una API sin policy.
|
|
373
|
+
*
|
|
374
|
+
* `attempts` queda en `maxAttempts − 1` (lo hace la outbox): si la causa
|
|
375
|
+
* sigue rota la entrada vuelve a aparcarse en UNA pasada y contamina su
|
|
376
|
+
* clave solo en esa pasada —un requeue automatizado de lo irreparable no
|
|
377
|
+
* es un grifo de aplazamiento permanente (auditor 🔴 2, segunda mitad)—; si
|
|
378
|
+
* el operador la arregló, entra a la primera. No hay bucle: lo aparcado no
|
|
379
|
+
* vuelve solo a `pending()`.
|
|
380
|
+
*
|
|
381
|
+
* Exige `dead`, `requeue` y `laterApplied` en el puerto (500
|
|
382
|
+
* `E_AUTHZ_UNSUPPORTED` nombrando el que falte): sin censo no se sabe qué
|
|
383
|
+
* se reencola y sin sonda no hay requeue. No pasa por la barrera del freeze:
|
|
384
|
+
* no escribe en el backend; la pasada que aplique la entrada sí la pasa.
|
|
385
|
+
*/
|
|
386
|
+
requeueScopeChanges(ids: Array<string | number>, options?: {
|
|
387
|
+
force?: boolean;
|
|
388
|
+
}): Promise<ScopeRequeueReport>;
|
|
316
389
|
/**
|
|
317
390
|
* **`authz:reconcile --to=<driver>`** (3b-3a): la ÚNICA primitiva de
|
|
318
391
|
* migración y verificación del paquete, y el motivo de la fase entera —
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manager.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;AA0B7D,OAAO,KAAK,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;
|
|
1
|
+
{"version":3,"file":"manager.d.ts","sourceRoot":"","sources":["../../src/manager.ts"],"names":[],"mappings":"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"}
|