@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
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
|
|
2
|
+
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
|
|
3
|
+
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
|
|
4
|
+
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
|
|
5
|
+
return c > 3 && r && Object.defineProperty(target, key, r), r;
|
|
6
|
+
};
|
|
7
|
+
var __metadata = (this && this.__metadata) || function (k, v) {
|
|
8
|
+
if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
|
|
9
|
+
};
|
|
10
|
+
import { BaseCommand, flags } from '@adonisjs/core/ace';
|
|
11
|
+
/** Una entrada de la cola, en una línea (misma forma que en `authz:scopes:relay`). */
|
|
12
|
+
function linea(item) {
|
|
13
|
+
const { change } = item;
|
|
14
|
+
const scope = (s) => `${s.type}:${s.uuid ?? ''}`;
|
|
15
|
+
const destino = change.op === 'detached' ? '' : ` → ${scope(change.parent)}`;
|
|
16
|
+
const intentos = item.attempts ? ` (intentos: ${item.attempts})` : '';
|
|
17
|
+
const causa = item.lastError ? ` — ${item.lastError}` : '';
|
|
18
|
+
return `#${item.id} ${change.op} ${scope(change.child)}${destino}${intentos}${causa}`;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Las líneas del comando y si la ejecución es «limpia», en una función PURA
|
|
22
|
+
* (mismo patrón que `reconcileLines`/`orphanLines`): es lo único del comando
|
|
23
|
+
* que decide algo, y así tiene su caso sin montar un ace.
|
|
24
|
+
*
|
|
25
|
+
* - `refused`: el manager se NEGÓ (500 `E_AUTHZ_REQUEUE_REFUSED`). Se imprime
|
|
26
|
+
* el DIFF entero —cada aparcada y cada entrada APLICADA posterior que
|
|
27
|
+
* reaplicarla revertiría— y se sale ≠ 0, con las dos salidas: `--force`
|
|
28
|
+
* (que entra igual, con este mismo diff delante) y `authz:reconcile`.
|
|
29
|
+
* - `report`: se reencoló. Con `forced` y `overrides`, el diff se imprime
|
|
30
|
+
* como AVISO: forzar no es un éxito mudo.
|
|
31
|
+
*/
|
|
32
|
+
export function requeueLines(input) {
|
|
33
|
+
const lines = [];
|
|
34
|
+
const diff = (level, conflict) => {
|
|
35
|
+
lines.push({
|
|
36
|
+
level,
|
|
37
|
+
message: `${level === 'error' ? 'NEGADO' : 'FORZADO'}: ${linea(conflict.parked)} está APARCADA y hay ` +
|
|
38
|
+
`${conflict.applied.length} entrada(s) APLICADA(s) después sobre la misma clave de scope. Reencolarla las REVERTIRÍA ` +
|
|
39
|
+
`(el store quedaría con un árbol que nunca existió, y con UN solo padre nada lo delata):`,
|
|
40
|
+
});
|
|
41
|
+
for (const applied of conflict.applied)
|
|
42
|
+
lines.push({ level, message: ` revertiría ${linea(applied)}` });
|
|
43
|
+
if (conflict.truncated) {
|
|
44
|
+
lines.push({
|
|
45
|
+
level,
|
|
46
|
+
message: ` … y más: solo se listan las primeras ${conflict.applied.length} aplicadas posteriores sobre esa clave; el diff está CORTADO.`,
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
if (input.refused !== undefined) {
|
|
51
|
+
for (const conflict of input.refused)
|
|
52
|
+
diff('error', conflict);
|
|
53
|
+
lines.push({
|
|
54
|
+
level: 'warning',
|
|
55
|
+
message: 'No se ha reencolado NADA (todo o nada). Para recalcular el store con el árbol de HOY: ' +
|
|
56
|
+
'node ace authz:reconcile --to=<driver>. Si de verdad quieres revertir esas entradas, repite con --force: ' +
|
|
57
|
+
'imprime este mismo diff y entra igual.',
|
|
58
|
+
});
|
|
59
|
+
return { lines, clean: false };
|
|
60
|
+
}
|
|
61
|
+
const report = input.report;
|
|
62
|
+
if (report.forced)
|
|
63
|
+
for (const conflict of report.overrides)
|
|
64
|
+
diff('warning', conflict);
|
|
65
|
+
for (const item of report.requeued)
|
|
66
|
+
lines.push({ level: 'log', message: `reencolada: ${linea(item)}` });
|
|
67
|
+
lines.push({
|
|
68
|
+
level: 'success',
|
|
69
|
+
message: `${report.requeued.length} entrada(s) devuelta(s) a la cola con attempts = maxAttempts − 1: si la causa sigue rota ` +
|
|
70
|
+
'vuelve(n) a aparcarse en UNA pasada; si la arreglaste, entra(n) a la primera. Corre node ace authz:scopes:relay.',
|
|
71
|
+
});
|
|
72
|
+
return { lines, clean: true };
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* **Devuelve entradas APARCADAS de la outbox a la cola** (2.4.0-alpha.5 · R2b;
|
|
76
|
+
* panel relay, cuestión 2).
|
|
77
|
+
*
|
|
78
|
+
* node ace authz:scopes:requeue --id=12 # una
|
|
79
|
+
* node ace authz:scopes:requeue --id=12,13 # varias (o --id repetido)
|
|
80
|
+
* node ace authz:scopes:requeue --id=12 --force # aunque revierta lo aplicado después (diff impreso)
|
|
81
|
+
*
|
|
82
|
+
* Una entrada aparcada (`sqlScopeOutbox({ maxAttempts })`, 5 por defecto)
|
|
83
|
+
* no se reintenta sola: el relay la reporta en cada pasada y sale ≠ 0. Cuando
|
|
84
|
+
* el operador arregla la causa —el padre que faltaba vuelve, el store se
|
|
85
|
+
* reconcilia— este comando la devuelve a `pending()` con **`attempts =
|
|
86
|
+
* maxAttempts − 1`**: entra a la primera si está arreglada y vuelve a
|
|
87
|
+
* aparcarse en UNA sola pasada si no (así un requeue automatizado de lo
|
|
88
|
+
* irreparable no es un grifo de aplazamiento para el resto del scope).
|
|
89
|
+
*
|
|
90
|
+
* **La sonda anti-reversión es del manager y no tiene excepción**: si después
|
|
91
|
+
* de la aparcada se APLICÓ otra entrada sobre la misma clave de scope,
|
|
92
|
+
* reencolarla reaplicaría el cambio viejo por encima del nuevo —un `moved`
|
|
93
|
+
* viejo tras el nuevo deja el store con el padre VIEJO y un solo padre—. El
|
|
94
|
+
* comando imprime ese diff y sale ≠ 0. **`--force` existe SOLO aquí**
|
|
95
|
+
* (decisión del dueño del 2026-09-09 (2)): imprime el diff y entra igual. Nunca
|
|
96
|
+
* en una ruta alcanzable por HTTP.
|
|
97
|
+
*
|
|
98
|
+
* Es una operación de PLATAFORMA (como `authz:scopes:relay`): sin actor, sin
|
|
99
|
+
* `within`, y no se expone por HTTP.
|
|
100
|
+
*/
|
|
101
|
+
export default class AuthzScopesRequeue extends BaseCommand {
|
|
102
|
+
static commandName = 'authz:scopes:requeue';
|
|
103
|
+
static description = 'Return parked scope-tree outbox entries to the queue (refuses to revert later applied changes unless --force)';
|
|
104
|
+
static options = {
|
|
105
|
+
startApp: true,
|
|
106
|
+
};
|
|
107
|
+
/** `--id=12,13` o `--id=12 --id=13`: ids numéricos como número, el resto como cadena. */
|
|
108
|
+
static parseIds(values) {
|
|
109
|
+
if (values === undefined)
|
|
110
|
+
return undefined;
|
|
111
|
+
return values
|
|
112
|
+
.flatMap((value) => String(value).split(','))
|
|
113
|
+
.map((value) => value.trim())
|
|
114
|
+
.filter((value) => value.length > 0)
|
|
115
|
+
.map((value) => (/^\d+$/.test(value) ? Number(value) : value));
|
|
116
|
+
}
|
|
117
|
+
async run() {
|
|
118
|
+
const ids = AuthzScopesRequeue.parseIds(this.id);
|
|
119
|
+
if (ids === undefined || ids.length === 0) {
|
|
120
|
+
this.logger.error('Falta --id: di QUÉ entradas aparcadas reencolar (las que reporta authz:scopes:relay). Sin ids no se reencola nada.');
|
|
121
|
+
this.exitCode = 1;
|
|
122
|
+
return;
|
|
123
|
+
}
|
|
124
|
+
const { default: authorization } = await import('../services/main.js');
|
|
125
|
+
let result;
|
|
126
|
+
try {
|
|
127
|
+
const report = await authorization.requeueScopeChanges(ids, { force: this.force === true });
|
|
128
|
+
result = requeueLines({ report });
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
if (error?.code !== 'E_AUTHZ_REQUEUE_REFUSED')
|
|
132
|
+
throw error;
|
|
133
|
+
result = requeueLines({ refused: error.conflicts });
|
|
134
|
+
}
|
|
135
|
+
for (const line of result.lines)
|
|
136
|
+
this.logger[line.level](line.message);
|
|
137
|
+
if (!result.clean)
|
|
138
|
+
this.exitCode = 1;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
__decorate([
|
|
142
|
+
flags.array({
|
|
143
|
+
name: 'id',
|
|
144
|
+
description: 'Outbox ids to requeue (the parked entries the relay reports), comma-separated or repeated',
|
|
145
|
+
}),
|
|
146
|
+
__metadata("design:type", Object)
|
|
147
|
+
], AuthzScopesRequeue.prototype, "id", void 0);
|
|
148
|
+
__decorate([
|
|
149
|
+
flags.boolean({
|
|
150
|
+
description: 'Requeue even if a later APPLIED entry shares a scope key (the diff is printed; the store WILL be reverted)',
|
|
151
|
+
}),
|
|
152
|
+
__metadata("design:type", Object)
|
|
153
|
+
], AuthzScopesRequeue.prototype, "force", void 0);
|
|
154
|
+
//# sourceMappingURL=authz_scopes_requeue.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"authz_scopes_requeue.js","sourceRoot":"","sources":["../../commands/authz_scopes_requeue.ts"],"names":[],"mappings":"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"}
|
package/build/commands/main.d.ts
CHANGED
|
@@ -4,11 +4,12 @@ import AuthzCatalogDiff from './authz_catalog_diff.js';
|
|
|
4
4
|
import AuthzCatalogSync from './authz_catalog_sync.js';
|
|
5
5
|
import AuthzCatalogPruneOrphans from './authz_catalog_prune_orphans.js';
|
|
6
6
|
import AuthzScopesRelay from './authz_scopes_relay.js';
|
|
7
|
+
import AuthzScopesRequeue from './authz_scopes_requeue.js';
|
|
7
8
|
import AuthzReconcile from './authz_reconcile.js';
|
|
8
9
|
import AuthzRelationsReconcile from './authz_relations_reconcile.js';
|
|
9
10
|
import AuthzFreeze from './authz_freeze.js';
|
|
10
11
|
import AuthzUnfreeze from './authz_unfreeze.js';
|
|
11
|
-
export { OpenFgaProvision, AuthzCatalogDiff, AuthzCatalogSync, AuthzCatalogPruneOrphans, AuthzScopesRelay, AuthzReconcile, AuthzRelationsReconcile, AuthzFreeze, AuthzUnfreeze, };
|
|
12
|
+
export { OpenFgaProvision, AuthzCatalogDiff, AuthzCatalogSync, AuthzCatalogPruneOrphans, AuthzScopesRelay, AuthzScopesRequeue, AuthzReconcile, AuthzRelationsReconcile, AuthzFreeze, AuthzUnfreeze, };
|
|
12
13
|
/** Contrato de loader de ace (`LoadersContract.getMetaData`). */
|
|
13
14
|
export declare function getMetaData(): Promise<CommandMetaData[]>;
|
|
14
15
|
/** Contrato de loader de ace (`LoadersContract.getCommand`): la clase, o `null` si el nombre no es nuestro. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../commands/main.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,gBAAgB,MAAM,wBAAwB,CAAA;AACrD,OAAO,gBAAgB,MAAM,yBAAyB,CAAA;AACtD,OAAO,gBAAgB,MAAM,yBAAyB,CAAA;AACtD,OAAO,wBAAwB,MAAM,kCAAkC,CAAA;AACvE,OAAO,gBAAgB,MAAM,yBAAyB,CAAA;AACtD,OAAO,cAAc,MAAM,sBAAsB,CAAA;AACjD,OAAO,uBAAuB,MAAM,gCAAgC,CAAA;AACpE,OAAO,WAAW,MAAM,mBAAmB,CAAA;AAC3C,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAE/C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,WAAW,EACX,aAAa,GACd,CAAA;
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../commands/main.ts"],"names":[],"mappings":"AA6BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAA;AAC/D,OAAO,gBAAgB,MAAM,wBAAwB,CAAA;AACrD,OAAO,gBAAgB,MAAM,yBAAyB,CAAA;AACtD,OAAO,gBAAgB,MAAM,yBAAyB,CAAA;AACtD,OAAO,wBAAwB,MAAM,kCAAkC,CAAA;AACvE,OAAO,gBAAgB,MAAM,yBAAyB,CAAA;AACtD,OAAO,kBAAkB,MAAM,2BAA2B,CAAA;AAC1D,OAAO,cAAc,MAAM,sBAAsB,CAAA;AACjD,OAAO,uBAAuB,MAAM,gCAAgC,CAAA;AACpE,OAAO,WAAW,MAAM,mBAAmB,CAAA;AAC3C,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAE/C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EACvB,WAAW,EACX,aAAa,GACd,CAAA;AAgBD,iEAAiE;AACjE,wBAAgB,WAAW,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAExD;AAED,+GAA+G;AAC/G,wBAAgB,UAAU,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,GAAG,CAAC,CAElE"}
|
package/build/commands/main.js
CHANGED
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
* desenvolver `default` (mismo contrato que `@adonisjs/core/commands` y
|
|
11
11
|
* `@adonisjs/lucid/commands`, que leen un `commands.json` generado por el
|
|
12
12
|
* assembler; aquí no hay assembler, así que el loader es un `ListLoader`
|
|
13
|
-
* sobre las
|
|
13
|
+
* sobre las diez clases (nueve hasta alpha.4) y no hay índice que generar).
|
|
14
14
|
*
|
|
15
15
|
* Hasta alpha.3 este fichero re-exportaba las nueve clases y NADA más, de
|
|
16
16
|
* modo que en un consumidor configurado con `node ace configure` **`node ace`
|
|
@@ -32,18 +32,20 @@ import AuthzCatalogDiff from './authz_catalog_diff.js';
|
|
|
32
32
|
import AuthzCatalogSync from './authz_catalog_sync.js';
|
|
33
33
|
import AuthzCatalogPruneOrphans from './authz_catalog_prune_orphans.js';
|
|
34
34
|
import AuthzScopesRelay from './authz_scopes_relay.js';
|
|
35
|
+
import AuthzScopesRequeue from './authz_scopes_requeue.js';
|
|
35
36
|
import AuthzReconcile from './authz_reconcile.js';
|
|
36
37
|
import AuthzRelationsReconcile from './authz_relations_reconcile.js';
|
|
37
38
|
import AuthzFreeze from './authz_freeze.js';
|
|
38
39
|
import AuthzUnfreeze from './authz_unfreeze.js';
|
|
39
|
-
export { OpenFgaProvision, AuthzCatalogDiff, AuthzCatalogSync, AuthzCatalogPruneOrphans, AuthzScopesRelay, AuthzReconcile, AuthzRelationsReconcile, AuthzFreeze, AuthzUnfreeze, };
|
|
40
|
-
/** Los nueve, en el orden en que `node ace list` los enseña. */
|
|
40
|
+
export { OpenFgaProvision, AuthzCatalogDiff, AuthzCatalogSync, AuthzCatalogPruneOrphans, AuthzScopesRelay, AuthzScopesRequeue, AuthzReconcile, AuthzRelationsReconcile, AuthzFreeze, AuthzUnfreeze, };
|
|
41
|
+
/** Los diez (nueve hasta alpha.4; `authz:scopes:requeue` desde alpha.5), en el orden en que `node ace list` los enseña. */
|
|
41
42
|
const loader = new ListLoader([
|
|
42
43
|
OpenFgaProvision,
|
|
43
44
|
AuthzCatalogDiff,
|
|
44
45
|
AuthzCatalogSync,
|
|
45
46
|
AuthzCatalogPruneOrphans,
|
|
46
47
|
AuthzScopesRelay,
|
|
48
|
+
AuthzScopesRequeue,
|
|
47
49
|
AuthzReconcile,
|
|
48
50
|
AuthzRelationsReconcile,
|
|
49
51
|
AuthzFreeze,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../commands/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,gBAAgB,MAAM,wBAAwB,CAAA;AACrD,OAAO,gBAAgB,MAAM,yBAAyB,CAAA;AACtD,OAAO,gBAAgB,MAAM,yBAAyB,CAAA;AACtD,OAAO,wBAAwB,MAAM,kCAAkC,CAAA;AACvE,OAAO,gBAAgB,MAAM,yBAAyB,CAAA;AACtD,OAAO,cAAc,MAAM,sBAAsB,CAAA;AACjD,OAAO,uBAAuB,MAAM,gCAAgC,CAAA;AACpE,OAAO,WAAW,MAAM,mBAAmB,CAAA;AAC3C,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAE/C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,cAAc,EACd,uBAAuB,EACvB,WAAW,EACX,aAAa,GACd,CAAA;AAED,
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../commands/main.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,OAAO,gBAAgB,MAAM,wBAAwB,CAAA;AACrD,OAAO,gBAAgB,MAAM,yBAAyB,CAAA;AACtD,OAAO,gBAAgB,MAAM,yBAAyB,CAAA;AACtD,OAAO,wBAAwB,MAAM,kCAAkC,CAAA;AACvE,OAAO,gBAAgB,MAAM,yBAAyB,CAAA;AACtD,OAAO,kBAAkB,MAAM,2BAA2B,CAAA;AAC1D,OAAO,cAAc,MAAM,sBAAsB,CAAA;AACjD,OAAO,uBAAuB,MAAM,gCAAgC,CAAA;AACpE,OAAO,WAAW,MAAM,mBAAmB,CAAA;AAC3C,OAAO,aAAa,MAAM,qBAAqB,CAAA;AAE/C,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,wBAAwB,EACxB,gBAAgB,EAChB,kBAAkB,EAClB,cAAc,EACd,uBAAuB,EACvB,WAAW,EACX,aAAa,GACd,CAAA;AAED,2HAA2H;AAC3H,MAAM,MAAM,GAAG,IAAI,UAAU,CAAC;IAC5B,gBAAgB;IAChB,gBAAgB;IAChB,gBAAgB;IAChB,wBAAwB;IACxB,gBAAgB;IAChB,kBAAkB;IAClB,cAAc;IACd,uBAAuB;IACvB,WAAW;IACX,aAAa;CACP,CAAC,CAAA;AAET,iEAAiE;AACjE,MAAM,UAAU,WAAW;IACzB,OAAO,MAAM,CAAC,WAAW,EAAE,CAAA;AAC7B,CAAC;AAED,+GAA+G;AAC/G,MAAM,UAAU,UAAU,CAAC,QAAyB;IAClD,OAAO,MAAM,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAA;AACpC,CAAC"}
|
package/build/index.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Entrada pública del paquete.
|
|
3
3
|
* import { AuthorizationManager, APP_SCOPE } from '@jantstack/adonis-authz'
|
|
4
4
|
*/
|
|
5
|
-
export { AuthorizationManager, DEFAULT_MAX_SCOPES, DEFAULT_MAX_DESCENDANTS, MAX_SCOPE_BOUND, DEFAULT_VIEW_MAX_AGE_MS, expandExcludedSubtrees } from './src/manager.js';
|
|
5
|
+
export { AuthorizationManager, DEFAULT_MAX_SCOPES, DEFAULT_MAX_DESCENDANTS, MAX_SCOPE_BOUND, DEFAULT_VIEW_MAX_AGE_MS, PARKED_CENSUS_MAX, expandExcludedSubtrees } from './src/manager.js';
|
|
6
6
|
export type { AuthorizationView, ForRequestOptions } from './src/manager.js';
|
|
7
7
|
export { defineConfig } from './src/define_config.js';
|
|
8
8
|
export type { AuthorizationConfig } from './src/define_config.js';
|
|
@@ -50,7 +50,7 @@ export type { SqlScopeOutboxOptions } from './src/scope_outbox.js';
|
|
|
50
50
|
* obligaría a importar ese SDK — acoplando el call-site al backend que este
|
|
51
51
|
* paquete existe para abstraer.
|
|
52
52
|
*/
|
|
53
|
-
export { AuthorizationBackendError, AuthorizationBackendTimeoutError, ScopeResolverError, InvalidIdentityError, InvalidSlugError, AuthorizationConfigError, AuthorizationInternalError, UnknownScopeError, NoScopeResolverError, UnknownRoleError, UnknownPermissionError, CatalogConflictError, RoleIsNotAccessError, ScopeCycleError, PurgeIncompleteError, WriteConflictError, ActorRequiredError, NotWithinError, WithinRequiredError, WithinRootForbiddenError, TooManyScopesError, TooManyLocalRolesError, MassPurgeRefusedError, PruneInterruptedError, UnsupportedDialectError, ScopeTooDeepError, UnsupportedOperationError, NoDescendantsResolverError, ViewExpiredError, RoleNotVisibleError, AmbiguousRoleError, RoleImmutableError, RoleLevelAboveOwnerError, RoleNotAssignableAtError, PermissionNotDelegableError, RankExceededError, ModelTooLargeError, RelationConfigError, RelationTypeUnknownError, RelationUnknownError, ScopeTreeDriftError, ScopeDriftUnguardedError, AuthorizationFrozenError, FreezeHeldError, MassReconcileRefusedError, ReconcileTooLargeError, markPartialWrite, isPartialWrite, } from './src/errors.js';
|
|
53
|
+
export { AuthorizationBackendError, AuthorizationBackendTimeoutError, ScopeResolverError, InvalidIdentityError, InvalidSlugError, AuthorizationConfigError, AuthorizationInternalError, UnknownScopeError, NoScopeResolverError, UnknownRoleError, UnknownPermissionError, CatalogConflictError, RoleIsNotAccessError, ScopeCycleError, PurgeIncompleteError, WriteConflictError, ActorRequiredError, NotWithinError, WithinRequiredError, WithinRootForbiddenError, TooManyScopesError, TooManyLocalRolesError, MassPurgeRefusedError, PruneInterruptedError, UnsupportedDialectError, ScopeTooDeepError, ScopeDepthLimitError, ScopeRequeueRefusedError, UnsupportedOperationError, NoDescendantsResolverError, ViewExpiredError, RoleNotVisibleError, AmbiguousRoleError, RoleImmutableError, RoleLevelAboveOwnerError, RoleNotAssignableAtError, PermissionNotDelegableError, RankExceededError, ModelTooLargeError, RelationConfigError, RelationTypeUnknownError, RelationUnknownError, ScopeTreeDriftError, ScopeDriftUnguardedError, AuthorizationFrozenError, FreezeHeldError, MassReconcileRefusedError, ReconcileTooLargeError, markPartialWrite, isPartialWrite, } from './src/errors.js';
|
|
54
54
|
/**
|
|
55
55
|
* Validación de identidad y de slugs (422). La aplica el manager en cada
|
|
56
56
|
* llamada y los drivers por defensa en profundidad; se exporta para que un
|
|
@@ -84,7 +84,7 @@ export type { DatabaseDriverOptions } from './src/drivers/database_driver.js';
|
|
|
84
84
|
* opcional `@openfga/sdk`. Un consumidor solo-database arranca sin él (D9).
|
|
85
85
|
*/
|
|
86
86
|
export { APP_SCOPE, APP_SCOPE_TYPE, DEFAULT_RECONCILE_MAX_TUPLES } from './src/types.js';
|
|
87
|
-
export type { AuthorizationDriver, AuthorizationDriverFactory, AuthorizedScopes, AuthzWriteEvent, AuthzCatalogWriteEvent, CatalogPermissionSpec, CatalogRole, CatalogRoleSpec, CatalogSpec, ScopedRoleChanges, ScopedRoleSpec, DenyOptions, DenyRef, ExcludedSubtree, GrantOptions, GrantOutcome, HolderTypeMap, ReconcileCounts, ReconcileFact, ReconcileFactPage, ReconcileFactsEnumerator, ReconcileOptions, ReconcileReport, ReconcileSkip, ReconcileSource, RoleQuery, ScopeChainResolver, ScopeDescendantsResolver, ScopeEdge, ScopeEdgePage, ScopeEdgesEnumerator, ScopedWriteOptions, ScopeRef, ScopeType, SubjectRef, WriteOptions, AuthorizationDriverCapabilities, RelationsDriver, RelationsDriverCapabilities, RelObject, RelSubject, RelUserset, RelationRef, RelationWriteEvent, RelationWriteOptions, RelationTransactionOptions, RelationPurgeOptions, RelationPage, RelationObjectsPage, RelationSubjectsPage, RelationTuple, RelationTuplePage, } from './src/types.js';
|
|
87
|
+
export type { AuthorizationDriver, AuthorizationDriverFactory, AuthorizedScopes, AuthzWriteEvent, AuthzCatalogWriteEvent, CatalogPermissionSpec, CatalogRole, CatalogRoleSpec, CatalogSpec, ScopedRoleChanges, ScopedRoleSpec, DenyOptions, DenyRef, ExcludedSubtree, GrantOptions, GrantOutcome, HolderTypeMap, ReconcileCounts, ReconcileFact, ReconcileFactPage, ReconcileFactsEnumerator, ReconcileOptions, ReconcileReport, ReconcileSkip, ReconcileSource, RoleQuery, ScopeChainResolver, ScopeDescendantsResolver, ScopeEdge, ScopeEdgePage, ScopeEdgesEnumerator, ScopedWriteOptions, ScopeRef, ScopeType, SubjectRef, WriteOptions, AuthorizationDriverCapabilities, RelationsDriver, RelationsDriverCapabilities, RelObject, RelSubject, RelUserset, RelationRef, RelationWriteEvent, RelationWriteOptions, RelationTransactionOptions, RelationPurgeOptions, RelationPage, RelationObjectsPage, RelationSubjectsPage, RelationTuple, RelationTuplePage, ScopeOutbox, ScopeOutboxContext, ScopeOutboxLease, ScopeOutboxPendingFilter, ScopeOutboxFailure, ScopeRequeueConflict, ScopeRequeueReport, ScopeTreeChange, PendingScopeTreeChange, RelayedScopeChange, ScopeRelayReport, ScopeRelayFailure, ScopeRelayEntry, ScopeRelayEntryStatus, ScopeEnqueueReceipt, } from './src/types.js';
|
|
88
88
|
export { isRelUserset } from './src/types.js';
|
|
89
89
|
/**
|
|
90
90
|
* **¿De quién es esta transacción?** (L-1 · 🟠 9, regla del puerto `{trx}`):
|
package/build/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,eAAe,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
package/build/index.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* Entrada pública del paquete.
|
|
3
3
|
* import { AuthorizationManager, APP_SCOPE } from '@jantstack/adonis-authz'
|
|
4
4
|
*/
|
|
5
|
-
export { AuthorizationManager, DEFAULT_MAX_SCOPES, DEFAULT_MAX_DESCENDANTS, MAX_SCOPE_BOUND, DEFAULT_VIEW_MAX_AGE_MS, expandExcludedSubtrees } from './src/manager.js';
|
|
5
|
+
export { AuthorizationManager, DEFAULT_MAX_SCOPES, DEFAULT_MAX_DESCENDANTS, MAX_SCOPE_BOUND, DEFAULT_VIEW_MAX_AGE_MS, PARKED_CENSUS_MAX, expandExcludedSubtrees } from './src/manager.js';
|
|
6
6
|
export { defineConfig } from './src/define_config.js';
|
|
7
7
|
export { syncAuthzCatalog, diffAuthzCatalog, catalogInSync, formatCatalogDiff, formatScopedRoles, formatShadowedRoles, runCatalogDiff, syncCatalogs, } from './src/catalog/catalog.js';
|
|
8
8
|
/**
|
|
@@ -43,7 +43,7 @@ export { sqlScopeOutbox } from './src/scope_outbox.js';
|
|
|
43
43
|
* obligaría a importar ese SDK — acoplando el call-site al backend que este
|
|
44
44
|
* paquete existe para abstraer.
|
|
45
45
|
*/
|
|
46
|
-
export { AuthorizationBackendError, AuthorizationBackendTimeoutError, ScopeResolverError, InvalidIdentityError, InvalidSlugError, AuthorizationConfigError, AuthorizationInternalError, UnknownScopeError, NoScopeResolverError, UnknownRoleError, UnknownPermissionError, CatalogConflictError, RoleIsNotAccessError, ScopeCycleError, PurgeIncompleteError, WriteConflictError, ActorRequiredError, NotWithinError, WithinRequiredError, WithinRootForbiddenError, TooManyScopesError, TooManyLocalRolesError, MassPurgeRefusedError, PruneInterruptedError, UnsupportedDialectError, ScopeTooDeepError, UnsupportedOperationError, NoDescendantsResolverError, ViewExpiredError, RoleNotVisibleError, AmbiguousRoleError, RoleImmutableError, RoleLevelAboveOwnerError, RoleNotAssignableAtError, PermissionNotDelegableError, RankExceededError, ModelTooLargeError, RelationConfigError, RelationTypeUnknownError, RelationUnknownError, ScopeTreeDriftError, ScopeDriftUnguardedError, AuthorizationFrozenError, FreezeHeldError, MassReconcileRefusedError, ReconcileTooLargeError,
|
|
46
|
+
export { AuthorizationBackendError, AuthorizationBackendTimeoutError, ScopeResolverError, InvalidIdentityError, InvalidSlugError, AuthorizationConfigError, AuthorizationInternalError, UnknownScopeError, NoScopeResolverError, UnknownRoleError, UnknownPermissionError, CatalogConflictError, RoleIsNotAccessError, ScopeCycleError, PurgeIncompleteError, WriteConflictError, ActorRequiredError, NotWithinError, WithinRequiredError, WithinRootForbiddenError, TooManyScopesError, TooManyLocalRolesError, MassPurgeRefusedError, PruneInterruptedError, UnsupportedDialectError, ScopeTooDeepError, ScopeDepthLimitError, ScopeRequeueRefusedError, UnsupportedOperationError, NoDescendantsResolverError, ViewExpiredError, RoleNotVisibleError, AmbiguousRoleError, RoleImmutableError, RoleLevelAboveOwnerError, RoleNotAssignableAtError, PermissionNotDelegableError, RankExceededError, ModelTooLargeError, RelationConfigError, RelationTypeUnknownError, RelationUnknownError, ScopeTreeDriftError, ScopeDriftUnguardedError, AuthorizationFrozenError, FreezeHeldError, MassReconcileRefusedError, ReconcileTooLargeError,
|
|
47
47
|
// Cierre de alpha.3 (invariante 13 en purgas multi-request): un driver de
|
|
48
48
|
// relaciones de terceros marca con `markPartialWrite` el fallo que llega
|
|
49
49
|
// DESPUÉS de haber borrado parte; el manager notifica `indeterminate: true`.
|
package/build/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,eAAe,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,EAAE,oBAAoB,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,eAAe,EAAE,uBAAuB,EAAE,iBAAiB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAA;AAEzL,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAA;AAErD,OAAO,EACL,gBAAgB,EAChB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,cAAc,EACd,YAAY,GACb,MAAM,0BAA0B,CAAA;AAGjC;;;;;;;GAOG;AACH,OAAO,EACL,YAAY,EACZ,sBAAsB,EACtB,uBAAuB,EACvB,qBAAqB,EACrB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,gCAAgC,CAAA;AAYvC;;;GAGG;AACH,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAE7D;;;;GAIG;AACH,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAA;AAE1E,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAG1E;;;;;;;;;GASG;AACH,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAA;AAGtD;;;;;GAKG;AACH,OAAO,EACL,yBAAyB,EACzB,gCAAgC,EAChC,kBAAkB,EAClB,oBAAoB,EACpB,gBAAgB,EAChB,wBAAwB,EACxB,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,gBAAgB,EAChB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,eAAe,EACf,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,cAAc,EACd,mBAAmB,EACnB,wBAAwB,EACxB,kBAAkB,EAClB,sBAAsB,EACtB,qBAAqB,EACrB,qBAAqB,EACrB,uBAAuB,EACvB,iBAAiB,EACjB,oBAAoB,EACpB,wBAAwB,EACxB,yBAAyB,EACzB,0BAA0B,EAC1B,gBAAgB,EAChB,mBAAmB,EACnB,kBAAkB,EAClB,kBAAkB,EAClB,wBAAwB,EACxB,wBAAwB,EACxB,2BAA2B,EAC3B,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,wBAAwB,EACxB,oBAAoB,EACpB,mBAAmB,EACnB,wBAAwB,EACxB,wBAAwB,EACxB,eAAe,EACf,yBAAyB,EACzB,sBAAsB;AACtB,0EAA0E;AAC1E,yEAAyE;AACzE,6EAA6E;AAC7E,gBAAgB,EAChB,cAAc,GACf,MAAM,iBAAiB,CAAA;AAExB;;;;;GAKG;AACH,OAAO,EACL,cAAc,EACd,aAAa,EACb,WAAW,EACX,eAAe,EACf,eAAe,EACf,sBAAsB,EACtB,kBAAkB,EAClB,QAAQ,EACR,YAAY,EACZ,eAAe,EACf,eAAe,EACf,cAAc,EACd,sBAAsB,EACtB,oBAAoB,GACrB,MAAM,mBAAmB,CAAA;AAG1B;;;;;GAKG;AACH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4CAA4C,CAAA;AAQlF,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAA;AAE7D,OAAO,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAA;AAEjE,+EAA+E;AAC/E,8EAA8E;AAC9E,8DAA8D;AAC9D,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,uBAAuB,GACxB,MAAM,iCAAiC,CAAA;AAExC,iEAAiE;AACjE,0EAA0E;AAC1E,6EAA6E;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,4CAA4C,CAAA;AAEpF,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAA;AAEjF,OAAO,EAAE,2BAA2B,EAAE,iBAAiB,EAAE,MAAM,kCAAkC,CAAA;AAGjG;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,cAAc,EAAE,4BAA4B,EAAE,MAAM,gBAAgB,CAAA;AAyExF,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAE7C;;;;;;;;GAQG;AACH,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAA;AAG3E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,4BAA4B,CAAA;AACjE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,uCAAuC,CAAA;AACtF,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,kCAAkC,CAAA;AAC7E,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,4BAA4B,CAAA;AAEjE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAA;AAC9D,OAAO,EAAE,OAAO,EAAE,MAAM,0BAA0B,CAAA"}
|
|
@@ -92,6 +92,30 @@ export interface AuthorizationConfig {
|
|
|
92
92
|
* hacen, 2.5-B · ⚪6).
|
|
93
93
|
*/
|
|
94
94
|
maxDescendants?: number;
|
|
95
|
+
/**
|
|
96
|
+
* **Techo de profundidad del árbol, opt-in** (2.4.0-alpha.5 · R0; panel
|
|
97
|
+
* relay, cuestión 5). Profundidad = saltos `parent` hasta `app`. Con la
|
|
98
|
+
* opción, `scopes.attached`/`scopes.moved` rechazan con 422
|
|
99
|
+
* `E_AUTHZ_SCOPE_DEPTH_LIMIT` un hijo que quedaría a más de `maxDepth`
|
|
100
|
+
* saltos —la cadena del padre + 1— ANTES de escribir o encolar, y con
|
|
101
|
+
* cero I/O de más (la cadena del padre ya se resuelve para el anti-ciclo).
|
|
102
|
+
* Sin la opción no existe: `database` no tiene techo y no paga nada.
|
|
103
|
+
*
|
|
104
|
+
* Para qué: el modelo `facts` de `openfga` resuelve de forma fiable hasta
|
|
105
|
+
* `FACTS_MAX_RESOLVE_DEPTH` (22) saltos y más allá responde 503 —un DoS
|
|
106
|
+
* al alcance de quien pueda anidar sub-scopes— y además cada `attached`
|
|
107
|
+
* del relay cuesta ∝ la profundidad del vecino (medido: ×5,8 de 1 a 34).
|
|
108
|
+
* Declararlo aquí (y no como capacidad del driver, que es booleana por
|
|
109
|
+
* doctrina) es lo que hace que el árbol no crezca hasta donde su PDP no
|
|
110
|
+
* decide. Es el MISMO mando que usa `authz:reconcile` para reportar como
|
|
111
|
+
* deriva las cadenas que lo superan (`drift.tooDeep`).
|
|
112
|
+
*
|
|
113
|
+
* **PARCIAL, a propósito**: mira el DESTINO del hijo, no la altura del
|
|
114
|
+
* subárbol que se mueve —un `moved` de un subárbol de altura h deja sus
|
|
115
|
+
* hojas a `chain + h`—; medir eso exige `descendantsOf` en el camino de
|
|
116
|
+
* escritura, que está prohibido. Entero ≥ 1 (500 `E_AUTHZ_CONFIG` si no).
|
|
117
|
+
*/
|
|
118
|
+
maxDepth?: number;
|
|
95
119
|
/**
|
|
96
120
|
* **La outbox del árbol** (3b-2d, panel 2 cruce 4 · S5). Con ella,
|
|
97
121
|
* `manager.scopes.attached/moved/detached` NO escriben en el backend:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"define_config.d.ts","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"define_config.js","sourceRoot":"","sources":["../../src/define_config.ts"],"names":[],"mappings":"AAgXA,MAAM,UAAU,YAAY,CAAgC,MAAS;IACnE,OAAO,MAAM,CAAA;AACf,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openfga_driver.d.ts","sourceRoot":"","sources":["../../../src/drivers/openfga_driver.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,oBAAoB,EAAE,8BAA8B,EAAE,MAAM,cAAc,CAAA;AAkBxF,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EAGjB,OAAO,EACP,YAAY,EACZ,YAAY,EACZ,aAAa,EAGb,iBAAiB,EAEjB,gBAAgB,EAChB,eAAe,EAEf,eAAe,EACf,SAAS,EACT,kBAAkB,EAClB,WAAW,EACX,QAAQ,EACR,SAAS,EACT,UAAU,EACV,YAAY,EACb,MAAM,aAAa,CAAA;AA2CpB,OAAO,EAAE,YAAY,EAAoF,MAAM,6BAA6B,CAAA;AAC5I,OAAO,KAAK,EAAE,iBAAiB,EAAe,cAAc,EAAe,MAAM,6BAA6B,CAAA;AAC9G,OAAO,
|
|
1
|
+
{"version":3,"file":"openfga_driver.d.ts","sourceRoot":"","sources":["../../../src/drivers/openfga_driver.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,7 +8,7 @@ import { assertCatalogUuid, assertIdentity, assertScope, chainKeysFrom, isCatalo
|
|
|
8
8
|
import { resolveGrantExpiry, sameInstant, toExpiryDate } from '../expiry.js';
|
|
9
9
|
import { assertKnownScope, canonicalScope, canonicalScopeTargets, guardSql, isAuthzError, isTimeoutLike, resolveChain, rootOnlyResolver, withDeadline, } from '../shared/backend_guard.js';
|
|
10
10
|
import { CatalogCache, GLOBAL_OWNER_KEY, assertCatalogOptions, isRoleVisibleWith, withAuthzCatalogWrite } from '../catalog/catalog_cache.js';
|
|
11
|
-
import { FACTS_ASSIGNEE_RELATION, FACTS_BINDING_RELATION, FACTS_BINDING_TYPE, FACTS_DENIED_PREFIX, FACTS_PARENT_RELATION, FACTS_PERMITS_PREFIX, FACTS_ROLE_RELATION, FACTS_ROLE_TYPE, FACTS_ROOTED_RELATION, FACTS_SCOPE_TYPE, assertFactsModelPublishable, assertHolderTypes, factsBindingObject, factsBindingTuples, factsCatalogTuples, factsDenyTuple, factsParentTuple, factsRelationsOf, factsRootTuples, factsScopeBindingTuple, factsScopeObject, factsTupleId, openFgaFactsModel, } from './openfga_facts.js';
|
|
11
|
+
import { FACTS_ASSIGNEE_RELATION, FACTS_BINDING_RELATION, FACTS_BINDING_TYPE, FACTS_DENIED_PREFIX, FACTS_MAX_RESOLVE_DEPTH, FACTS_PARENT_RELATION, FACTS_PERMITS_PREFIX, FACTS_ROLE_RELATION, FACTS_ROLE_TYPE, FACTS_ROOTED_RELATION, FACTS_SCOPE_TYPE, assertFactsModelPublishable, assertHolderTypes, factsBindingObject, factsBindingTuples, factsCatalogTuples, factsDenyTuple, factsParentTuple, factsRelationsOf, factsRootTuples, factsScopeBindingTuple, factsScopeObject, factsTupleId, openFgaFactsModel, } from './openfga_facts.js';
|
|
12
12
|
import { readCatalogProjectionSnapshot } from '../catalog/catalog.js';
|
|
13
13
|
import { isSqliteDialect, sqlExpiryCodec } from '../shared/sql_expiry.js';
|
|
14
14
|
import { isClock, systemClock } from '../clock.js';
|
|
@@ -2061,6 +2061,18 @@ export class OpenFgaAuthorizationDriver {
|
|
|
2061
2061
|
chains.set(key, null);
|
|
2062
2062
|
return null;
|
|
2063
2063
|
};
|
|
2064
|
+
// **Las cadenas que superan el techo** (alpha.5 · R0, tester 4-6): el
|
|
2065
|
+
// verificador ya camina el árbol, así que lo dice aquí y no en el primer
|
|
2066
|
+
// tenant que lo alcance. Un solo mando: `scopes.maxDepth` del config si
|
|
2067
|
+
// llega, y si no la cota MEDIDA del modelo (22 saltos).
|
|
2068
|
+
const maxDepth = reconcileMaxDepth(source.maxDepth);
|
|
2069
|
+
const tooDeep = [];
|
|
2070
|
+
for (const key of parentOf.keys()) {
|
|
2071
|
+
const chain = chainOf(key);
|
|
2072
|
+
if (chain !== null && chain.length - 1 > maxDepth)
|
|
2073
|
+
tooDeep.push(key);
|
|
2074
|
+
}
|
|
2075
|
+
tooDeep.sort();
|
|
2064
2076
|
// 4. Los HECHOS, **de quien sea su fuente de verdad** (3b-5). `authz_*`
|
|
2065
2077
|
// lo es en la MIGRACIÓN `database` → `openfga`, y por eso esa
|
|
2066
2078
|
// dirección es la vía de salida de un store escrito por otra versión.
|
|
@@ -2089,6 +2101,8 @@ export class OpenFgaAuthorizationDriver {
|
|
|
2089
2101
|
roleVisibility: 0,
|
|
2090
2102
|
pendingRelay: 0,
|
|
2091
2103
|
deadRelay: 0,
|
|
2104
|
+
tooDeep,
|
|
2105
|
+
tooDeepLimit: maxDepth,
|
|
2092
2106
|
};
|
|
2093
2107
|
const deletes = [];
|
|
2094
2108
|
const writes = [];
|
|
@@ -2899,6 +2913,15 @@ function reconcileWriteForm(target) {
|
|
|
2899
2913
|
* arista que cierra el ciclo es la que se está clasificando, así que el mapa
|
|
2900
2914
|
* por el que se sube NUNCA tiene uno (el cinturón de `seen` es por si acaso).
|
|
2901
2915
|
*/
|
|
2916
|
+
/** El techo de profundidad del verificador: el del config, o la cota medida del modelo (500 si no es un entero ≥ 1). */
|
|
2917
|
+
function reconcileMaxDepth(declared) {
|
|
2918
|
+
if (declared === undefined)
|
|
2919
|
+
return FACTS_MAX_RESOLVE_DEPTH;
|
|
2920
|
+
if (!Number.isInteger(declared) || declared < 1) {
|
|
2921
|
+
throw new AuthorizationConfigError(`authz:reconcile: scopes.maxDepth debe ser un entero >= 1 (llegó ${String(declared)})`);
|
|
2922
|
+
}
|
|
2923
|
+
return declared;
|
|
2924
|
+
}
|
|
2902
2925
|
function walkUpTo(parentOf, from, target) {
|
|
2903
2926
|
const path = [];
|
|
2904
2927
|
const seen = new Set();
|