@jantstack/adonis-authz 2.0.0-alpha.1 → 2.4.0-alpha.10
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +934 -40
- package/build/commands/authz_catalog_diff.d.ts.map +1 -1
- package/build/commands/authz_catalog_diff.js +1 -2
- package/build/commands/authz_catalog_diff.js.map +1 -1
- package/build/commands/authz_catalog_prune_orphans.d.ts +78 -0
- package/build/commands/authz_catalog_prune_orphans.d.ts.map +1 -0
- package/build/commands/authz_catalog_prune_orphans.js +135 -0
- package/build/commands/authz_catalog_prune_orphans.js.map +1 -0
- package/build/commands/authz_catalog_sync.d.ts +17 -0
- package/build/commands/authz_catalog_sync.d.ts.map +1 -1
- package/build/commands/authz_catalog_sync.js +27 -4
- package/build/commands/authz_catalog_sync.js.map +1 -1
- package/build/commands/authz_freeze.d.ts +44 -0
- package/build/commands/authz_freeze.d.ts.map +1 -0
- package/build/commands/authz_freeze.js +94 -0
- package/build/commands/authz_freeze.js.map +1 -0
- package/build/commands/authz_reconcile.d.ts +111 -0
- package/build/commands/authz_reconcile.d.ts.map +1 -0
- package/build/commands/authz_reconcile.js +417 -0
- package/build/commands/authz_reconcile.js.map +1 -0
- package/build/commands/authz_relations_reconcile.d.ts +144 -0
- package/build/commands/authz_relations_reconcile.d.ts.map +1 -0
- package/build/commands/authz_relations_reconcile.js +438 -0
- package/build/commands/authz_relations_reconcile.js.map +1 -0
- package/build/commands/authz_scopes_relay.d.ts +97 -0
- package/build/commands/authz_scopes_relay.d.ts.map +1 -0
- package/build/commands/authz_scopes_relay.js +344 -0
- package/build/commands/authz_scopes_relay.js.map +1 -0
- package/build/commands/authz_scopes_requeue.d.ts +80 -0
- package/build/commands/authz_scopes_requeue.d.ts.map +1 -0
- package/build/commands/authz_scopes_requeue.js +230 -0
- package/build/commands/authz_scopes_requeue.js.map +1 -0
- package/build/commands/authz_unfreeze.d.ts +45 -0
- package/build/commands/authz_unfreeze.d.ts.map +1 -0
- package/build/commands/authz_unfreeze.js +157 -0
- package/build/commands/authz_unfreeze.js.map +1 -0
- package/build/commands/main.d.ts +16 -8
- package/build/commands/main.d.ts.map +1 -1
- package/build/commands/main.js +59 -6
- package/build/commands/main.js.map +1 -1
- package/build/commands/openfga_provision.d.ts +92 -4
- package/build/commands/openfga_provision.d.ts.map +1 -1
- package/build/commands/openfga_provision.js +155 -7
- package/build/commands/openfga_provision.js.map +1 -1
- package/build/configure.d.ts +11 -0
- package/build/configure.d.ts.map +1 -1
- package/build/configure.js +37 -1
- package/build/configure.js.map +1 -1
- package/build/index.d.ts +50 -11
- package/build/index.d.ts.map +1 -1
- package/build/index.js +49 -7
- package/build/index.js.map +1 -1
- package/build/providers/authz_provider.d.ts +31 -2
- package/build/providers/authz_provider.d.ts.map +1 -1
- package/build/providers/authz_provider.js +65 -2
- package/build/providers/authz_provider.js.map +1 -1
- package/build/services/relations.d.ts +14 -0
- package/build/services/relations.d.ts.map +1 -0
- package/build/services/relations.js +17 -0
- package/build/services/relations.js.map +1 -0
- package/build/src/{catalog.d.ts → catalog/catalog.d.ts} +41 -2
- package/build/src/catalog/catalog.d.ts.map +1 -0
- package/build/src/{catalog.js → catalog/catalog.js} +120 -14
- package/build/src/catalog/catalog.js.map +1 -0
- package/build/src/{catalog_cache.d.ts → catalog/catalog_cache.d.ts} +46 -22
- package/build/src/catalog/catalog_cache.d.ts.map +1 -0
- package/build/src/{catalog_cache.js → catalog/catalog_cache.js} +53 -43
- package/build/src/catalog/catalog_cache.js.map +1 -0
- package/build/src/define_config.d.ts +206 -3
- package/build/src/define_config.d.ts.map +1 -1
- package/build/src/define_config.js +11 -0
- package/build/src/define_config.js.map +1 -1
- package/build/src/drivers/database_driver.d.ts +128 -7
- package/build/src/drivers/database_driver.d.ts.map +1 -1
- package/build/src/drivers/database_driver.js +510 -24
- package/build/src/drivers/database_driver.js.map +1 -1
- package/build/src/drivers/database_relations_driver.d.ts +140 -0
- package/build/src/drivers/database_relations_driver.d.ts.map +1 -0
- package/build/src/drivers/database_relations_driver.js +748 -0
- package/build/src/drivers/database_relations_driver.js.map +1 -0
- package/build/src/drivers/openfga_driver.d.ts +777 -122
- package/build/src/drivers/openfga_driver.d.ts.map +1 -1
- package/build/src/drivers/openfga_driver.js +2228 -477
- package/build/src/drivers/openfga_driver.js.map +1 -1
- package/build/src/drivers/openfga_facts.d.ts +384 -0
- package/build/src/drivers/openfga_facts.d.ts.map +1 -0
- package/build/src/drivers/openfga_facts.js +836 -0
- package/build/src/drivers/openfga_facts.js.map +1 -0
- package/build/src/drivers/openfga_relations_driver.d.ts +186 -0
- package/build/src/drivers/openfga_relations_driver.d.ts.map +1 -0
- package/build/src/drivers/openfga_relations_driver.js +724 -0
- package/build/src/drivers/openfga_relations_driver.js.map +1 -0
- package/build/src/errors.d.ts +430 -6
- package/build/src/errors.d.ts.map +1 -1
- package/build/src/errors.js +453 -6
- package/build/src/errors.js.map +1 -1
- package/build/src/freeze.d.ts +200 -0
- package/build/src/freeze.d.ts.map +1 -0
- package/build/src/freeze.js +306 -0
- package/build/src/freeze.js.map +1 -0
- package/build/src/http/app_access_middleware.d.ts.map +1 -0
- package/build/src/http/app_access_middleware.js.map +1 -0
- package/build/src/http/resource_access_middleware.d.ts +105 -0
- package/build/src/http/resource_access_middleware.d.ts.map +1 -0
- package/build/src/http/resource_access_middleware.js +81 -0
- package/build/src/http/resource_access_middleware.js.map +1 -0
- package/build/src/identity.d.ts +74 -1
- package/build/src/identity.d.ts.map +1 -1
- package/build/src/identity.js +100 -2
- package/build/src/identity.js.map +1 -1
- package/build/src/manager.d.ts +549 -6
- package/build/src/manager.d.ts.map +1 -1
- package/build/src/manager.js +2243 -193
- package/build/src/manager.js.map +1 -1
- package/build/src/models/authz_assignment.d.ts +7 -7
- package/build/src/models/authz_assignment.d.ts.map +1 -1
- package/build/src/models/authz_deny.d.ts +7 -7
- package/build/src/models/authz_deny.d.ts.map +1 -1
- package/build/src/models/authz_permission.d.ts +7 -7
- package/build/src/models/authz_permission.d.ts.map +1 -1
- package/build/src/models/authz_role.d.ts +7 -7
- package/build/src/models/authz_role.d.ts.map +1 -1
- package/build/src/models/authz_role_permission.d.ts +7 -7
- package/build/src/models/authz_role_permission.d.ts.map +1 -1
- package/build/src/openfga.d.ts +18 -2
- package/build/src/openfga.d.ts.map +1 -1
- package/build/src/openfga.js +15 -1
- package/build/src/openfga.js.map +1 -1
- package/build/src/reconcile.d.ts +37 -0
- package/build/src/reconcile.d.ts.map +1 -0
- package/build/src/reconcile.js +69 -0
- package/build/src/reconcile.js.map +1 -0
- package/build/src/relation_partition_trigger.d.ts +8 -0
- package/build/src/relation_partition_trigger.d.ts.map +1 -0
- package/build/src/relation_partition_trigger.js +93 -0
- package/build/src/relation_partition_trigger.js.map +1 -0
- package/build/src/relations/define_relations_config.d.ts +109 -0
- package/build/src/relations/define_relations_config.d.ts.map +1 -0
- package/build/src/relations/define_relations_config.js +211 -0
- package/build/src/relations/define_relations_config.js.map +1 -0
- package/build/src/relations/manager.d.ts +138 -0
- package/build/src/relations/manager.d.ts.map +1 -0
- package/build/src/relations/manager.js +494 -0
- package/build/src/relations/manager.js.map +1 -0
- package/build/src/relations/reconcile.d.ts +137 -0
- package/build/src/relations/reconcile.d.ts.map +1 -0
- package/build/src/relations/reconcile.js +294 -0
- package/build/src/relations/reconcile.js.map +1 -0
- package/build/src/relations_config_store.d.ts +22 -0
- package/build/src/relations_config_store.d.ts.map +1 -0
- package/build/src/relations_config_store.js +74 -0
- package/build/src/relations_config_store.js.map +1 -0
- package/build/src/scope_outbox.d.ts +123 -0
- package/build/src/scope_outbox.d.ts.map +1 -0
- package/build/src/scope_outbox.js +532 -0
- package/build/src/scope_outbox.js.map +1 -0
- package/build/src/{drivers → shared}/backend_guard.d.ts +42 -0
- package/build/src/shared/backend_guard.d.ts.map +1 -0
- package/build/src/{drivers → shared}/backend_guard.js +78 -1
- package/build/src/shared/backend_guard.js.map +1 -0
- package/build/src/{drivers → shared}/sql_expiry.d.ts +2 -0
- package/build/src/shared/sql_expiry.d.ts.map +1 -0
- package/build/src/{drivers → shared}/sql_expiry.js +4 -0
- package/build/src/shared/sql_expiry.js.map +1 -0
- package/build/src/shared/transaction_guard.d.ts +53 -0
- package/build/src/shared/transaction_guard.d.ts.map +1 -0
- package/build/src/shared/transaction_guard.js +74 -0
- package/build/src/shared/transaction_guard.js.map +1 -0
- package/build/src/sql_descendants.d.ts +55 -1
- package/build/src/sql_descendants.d.ts.map +1 -1
- package/build/src/sql_descendants.js +75 -1
- package/build/src/sql_descendants.js.map +1 -1
- package/build/src/testing/contract.d.ts +129 -4
- package/build/src/testing/contract.d.ts.map +1 -1
- package/build/src/testing/contract.js +915 -177
- package/build/src/testing/contract.js.map +1 -1
- package/build/src/testing/main.d.ts +10 -2
- package/build/src/testing/main.d.ts.map +1 -1
- package/build/src/testing/main.js +5 -1
- package/build/src/testing/main.js.map +1 -1
- package/build/src/testing/migration_contract.d.ts +293 -0
- package/build/src/testing/migration_contract.d.ts.map +1 -0
- package/build/src/testing/migration_contract.js +589 -0
- package/build/src/testing/migration_contract.js.map +1 -0
- package/build/src/testing/relations_contract.d.ts +73 -0
- package/build/src/testing/relations_contract.d.ts.map +1 -0
- package/build/src/testing/relations_contract.js +1238 -0
- package/build/src/testing/relations_contract.js.map +1 -0
- package/build/src/testing/relations_reconcile_contract.d.ts +24 -0
- package/build/src/testing/relations_reconcile_contract.d.ts.map +1 -0
- package/build/src/testing/relations_reconcile_contract.js +220 -0
- package/build/src/testing/relations_reconcile_contract.js.map +1 -0
- package/build/src/testing/scope_outbox_contract.d.ts +98 -0
- package/build/src/testing/scope_outbox_contract.d.ts.map +1 -0
- package/build/src/testing/scope_outbox_contract.js +677 -0
- package/build/src/testing/scope_outbox_contract.js.map +1 -0
- package/build/src/traits/authz_scopes.js +1 -1
- package/build/src/traits/authz_scopes.js.map +1 -1
- package/build/src/traits/has_uuid.d.ts +8 -8
- package/build/src/traits/has_uuid.d.ts.map +1 -1
- package/build/src/types.d.ts +1537 -84
- package/build/src/types.d.ts.map +1 -1
- package/build/src/types.js +65 -0
- package/build/src/types.js.map +1 -1
- package/build/stubs/config/authorization.stub +149 -5
- package/build/stubs/migration.stub +136 -0
- package/build/stubs/scopes_outbox_migration.stub +57 -0
- package/package.json +4 -2
- package/build/commands/openfga_import.d.ts +0 -34
- package/build/commands/openfga_import.d.ts.map +0 -1
- package/build/commands/openfga_import.js +0 -97
- package/build/commands/openfga_import.js.map +0 -1
- package/build/src/catalog.d.ts.map +0 -1
- package/build/src/catalog.js.map +0 -1
- package/build/src/catalog_cache.d.ts.map +0 -1
- package/build/src/catalog_cache.js.map +0 -1
- package/build/src/drivers/backend_guard.d.ts.map +0 -1
- package/build/src/drivers/backend_guard.js.map +0 -1
- package/build/src/drivers/sql_expiry.d.ts.map +0 -1
- package/build/src/drivers/sql_expiry.js.map +0 -1
- package/build/src/middleware/app_access_middleware.d.ts.map +0 -1
- package/build/src/middleware/app_access_middleware.js.map +0 -1
- /package/build/src/{middleware → http}/app_access_middleware.d.ts +0 -0
- /package/build/src/{middleware → http}/app_access_middleware.js +0 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog.js","sourceRoot":"","sources":["../../../src/catalog/catalog.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { TransactionClientContract } from '@adonisjs/lucid/types/database';
|
|
2
|
-
import type { CatalogRole, CatalogRoleRef, ScopeType } from '
|
|
2
|
+
import type { CatalogRole, CatalogRoleRef, ScopeType } from '../types.js';
|
|
3
3
|
export type { CatalogRole, CatalogRoleRef };
|
|
4
4
|
/**
|
|
5
5
|
* Memo del CATÁLOGO (roles, permisos y vínculos rol→permiso), y de nada más.
|
|
@@ -101,6 +101,14 @@ export interface CatalogView {
|
|
|
101
101
|
* `scopes.detached` tiene que purgar para que el scope no deje roles
|
|
102
102
|
* huérfanos que bloqueen su `(slug, nivel)` para siempre. Copia por llamada.
|
|
103
103
|
*/
|
|
104
|
+
/**
|
|
105
|
+
* TODOS los roles LOCALES (owner ≠ `global`), sea cual sea su owner
|
|
106
|
+
* (3b-2e · E1). Es lo que el barrido de `scopes.moved` del driver `facts`
|
|
107
|
+
* necesita para saber qué bindings pueden haber dejado de ser visibles: un
|
|
108
|
+
* rol GLOBAL no cambia nunca de visibilidad, así que un catálogo SIN roles
|
|
109
|
+
* locales hace que el barrido cueste CERO requests. Copia por llamada.
|
|
110
|
+
*/
|
|
111
|
+
localRoles(): CatalogRole[];
|
|
104
112
|
rolesOwnedBy(ownerKey: string): CatalogRole[];
|
|
105
113
|
/** Roles que conceden el permiso (con su owner), agrupados por nivel (`scope_type`). Copia por llamada. */
|
|
106
114
|
rolesGranting(permissionUuid: string): Map<ScopeType, CatalogRoleRef[]>;
|
|
@@ -124,6 +132,13 @@ export interface CatalogView {
|
|
|
124
132
|
export declare function invalidateAuthzCatalog(): void;
|
|
125
133
|
/** Deadline de cada consulta de carga (el mismo default que el catálogo). */
|
|
126
134
|
export declare const DEFAULT_CATALOG_CACHE_TIMEOUT_MS = 5000;
|
|
135
|
+
/**
|
|
136
|
+
* Cota por defecto de `readLocalRoles` (3b-0b · AB2): cuántos roles LOCALES
|
|
137
|
+
* puede devolver una pasada de `prune-orphans` antes de rendirse con 500.
|
|
138
|
+
* Es del mismo orden que `maxScopes`/`maxDescendants`: una lectura sin
|
|
139
|
+
* `LIMIT` sobre una tabla que el consumidor hace crecer.
|
|
140
|
+
*/
|
|
141
|
+
export declare const DEFAULT_MAX_LOCAL_ROLES = 10000;
|
|
127
142
|
/** Lo mínimo que se necesita de un cliente de Lucid para leer la fila. */
|
|
128
143
|
export interface CatalogVersionClient {
|
|
129
144
|
from(table: string): any;
|
|
@@ -178,34 +193,43 @@ export declare function bumpAuthzCatalogVersion(trx: CatalogVersionTransaction,
|
|
|
178
193
|
timeoutMs?: number;
|
|
179
194
|
}): Promise<void>;
|
|
180
195
|
/**
|
|
181
|
-
*
|
|
182
|
-
*
|
|
196
|
+
* TODOS los roles LOCALES (owner ≠ `global`) leídos de la BASE, en fresco y
|
|
197
|
+
* con sus permisos.
|
|
183
198
|
*
|
|
184
|
-
* `
|
|
185
|
-
* `
|
|
186
|
-
*
|
|
187
|
-
*
|
|
188
|
-
*
|
|
189
|
-
* transacción; M4 no.
|
|
199
|
+
* Lo usa `AuthorizationManager.pruneOrphanRoles` —el motor de
|
|
200
|
+
* `authz:catalog:prune-orphans` (3b-0 · Z2)—, que necesita mirar el catálogo
|
|
201
|
+
* ENTERO: los roles cuyo owner ya no resuelve son precisamente los que nadie
|
|
202
|
+
* enumera desde el árbol (no cuelgan de ningún scope vivo), así que no hay
|
|
203
|
+
* lista de owners con la que preguntar.
|
|
190
204
|
*
|
|
191
|
-
*
|
|
192
|
-
*
|
|
193
|
-
*
|
|
194
|
-
* un abrazo mortal con un pool de 1. Es una carrera que el tenant pierde de
|
|
195
|
-
* todas formas —define un rol en un scope que se está borrando— y la
|
|
196
|
-
* siguiente notificación (o `authz:reconcile`, 3b) lo recoge.
|
|
205
|
+
* De la BASE y no del memo: con `catalogRevalidate: { everyMs }` —config
|
|
206
|
+
* legal y documentada— la foto puede no tener lo que otro proceso acaba de
|
|
207
|
+
* confirmar (auditor A2 bis), y aquí se decide qué se BORRA.
|
|
197
208
|
*
|
|
198
209
|
* El orden es ESTABLE por `uuid` (3F · U5, tester 3E · §4.3): sin `ORDER BY`
|
|
199
|
-
* lo
|
|
200
|
-
* auditoría
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
*
|
|
210
|
+
* lo pone el motor, así que la lista del `--dry-run`, la secuencia de
|
|
211
|
+
* `role_purged` que ve el hook de auditoría y el rol por el que seguiría una
|
|
212
|
+
* pasada interrumpida cambiaban entre PostgreSQL, MySQL y SQLite. Con uuid
|
|
213
|
+
* v7 es además el orden de creación.
|
|
214
|
+
*
|
|
215
|
+
* **Lo que NO devuelve son los HECHOS del rol** (3b-2j). Hasta aquí contaba
|
|
216
|
+
* también sus asignaciones vigentes (3b-0b · AA1) leyendo
|
|
217
|
+
* `authz_assignments`, que es la tabla del driver `database`: con `openfga`
|
|
218
|
+
* los hechos viven en el store y ese conteo era siempre cero, así que el
|
|
219
|
+
* `stillGranting` del barrido —«falso ⇒ no concede SEGURO», leído justo
|
|
220
|
+
* antes de un borrado destructivo— mentía. Contarlos es ahora una pregunta
|
|
221
|
+
* del PUERTO (`AuthorizationDriver.countRoleAssignments`), que es de quien
|
|
222
|
+
* son los hechos.
|
|
223
|
+
*
|
|
224
|
+
* Cota `maxLocalRoles` (3b-0b · AB2, default 10 000): la lectura es una sola
|
|
225
|
+
* consulta y un catálogo local enorme la convierte en amplificación. Se pide
|
|
226
|
+
* una fila de más y, si aparece, 500 `E_AUTHZ_TOO_MANY_LOCAL_ROLES` — nunca
|
|
227
|
+
* una lista parcial, que aquí sería purgar a ciegas la mitad del catálogo.
|
|
205
228
|
*/
|
|
206
|
-
export declare function
|
|
229
|
+
export declare function readLocalRoles(options?: {
|
|
207
230
|
timeoutMs?: number;
|
|
208
231
|
driver?: string;
|
|
232
|
+
maxLocalRoles?: number;
|
|
209
233
|
}): Promise<Array<{
|
|
210
234
|
role: CatalogRole;
|
|
211
235
|
permissions: string[];
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog_cache.d.ts","sourceRoot":"","sources":["../../../src/catalog/catalog_cache.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import db from '@adonisjs/lucid/services/db';
|
|
2
|
-
import { guardSql, isAuthzError, isSqlDriverError, isTimeoutLike } from '
|
|
3
|
-
import { AmbiguousRoleError, AuthorizationBackendError, AuthorizationBackendTimeoutError, AuthorizationConfigError, AuthorizationInternalError, } from '
|
|
4
|
-
import { isValidScopeType, scopeFromKey } from '
|
|
5
|
-
import { systemClock } from '
|
|
6
|
-
import { isSqliteDialect } from '
|
|
2
|
+
import { guardSql, isAuthzError, isSqlDriverError, isTimeoutLike } from '../shared/backend_guard.js';
|
|
3
|
+
import { AmbiguousRoleError, AuthorizationBackendError, AuthorizationBackendTimeoutError, AuthorizationConfigError, AuthorizationInternalError, TooManyLocalRolesError, } from '../errors.js';
|
|
4
|
+
import { isValidScopeType, scopeFromKey } from '../identity.js';
|
|
5
|
+
import { systemClock } from '../clock.js';
|
|
6
|
+
import { isSqliteDialect } from '../shared/sql_expiry.js';
|
|
7
7
|
/**
|
|
8
8
|
* Memo del CATÁLOGO (roles, permisos y vínculos rol→permiso), y de nada más.
|
|
9
9
|
*
|
|
@@ -78,6 +78,13 @@ export function invalidateAuthzCatalog() {
|
|
|
78
78
|
}
|
|
79
79
|
/** Deadline de cada consulta de carga (el mismo default que el catálogo). */
|
|
80
80
|
export const DEFAULT_CATALOG_CACHE_TIMEOUT_MS = 5_000;
|
|
81
|
+
/**
|
|
82
|
+
* Cota por defecto de `readLocalRoles` (3b-0b · AB2): cuántos roles LOCALES
|
|
83
|
+
* puede devolver una pasada de `prune-orphans` antes de rendirse con 500.
|
|
84
|
+
* Es del mismo orden que `maxScopes`/`maxDescendants`: una lectura sin
|
|
85
|
+
* `LIMIT` sobre una tabla que el consumidor hace crecer.
|
|
86
|
+
*/
|
|
87
|
+
export const DEFAULT_MAX_LOCAL_ROLES = 10_000;
|
|
81
88
|
function describeClient(client) {
|
|
82
89
|
if (client === null)
|
|
83
90
|
return 'null';
|
|
@@ -188,54 +195,56 @@ export async function bumpAuthzCatalogVersion(trx, options = {}) {
|
|
|
188
195
|
}
|
|
189
196
|
}
|
|
190
197
|
/**
|
|
191
|
-
*
|
|
192
|
-
*
|
|
198
|
+
* TODOS los roles LOCALES (owner ≠ `global`) leídos de la BASE, en fresco y
|
|
199
|
+
* con sus permisos.
|
|
193
200
|
*
|
|
194
|
-
* `
|
|
195
|
-
* `
|
|
196
|
-
*
|
|
197
|
-
*
|
|
198
|
-
*
|
|
199
|
-
* transacción; M4 no.
|
|
201
|
+
* Lo usa `AuthorizationManager.pruneOrphanRoles` —el motor de
|
|
202
|
+
* `authz:catalog:prune-orphans` (3b-0 · Z2)—, que necesita mirar el catálogo
|
|
203
|
+
* ENTERO: los roles cuyo owner ya no resuelve son precisamente los que nadie
|
|
204
|
+
* enumera desde el árbol (no cuelgan de ningún scope vivo), así que no hay
|
|
205
|
+
* lista de owners con la que preguntar.
|
|
200
206
|
*
|
|
201
|
-
*
|
|
202
|
-
*
|
|
203
|
-
*
|
|
204
|
-
* un abrazo mortal con un pool de 1. Es una carrera que el tenant pierde de
|
|
205
|
-
* todas formas —define un rol en un scope que se está borrando— y la
|
|
206
|
-
* siguiente notificación (o `authz:reconcile`, 3b) lo recoge.
|
|
207
|
+
* De la BASE y no del memo: con `catalogRevalidate: { everyMs }` —config
|
|
208
|
+
* legal y documentada— la foto puede no tener lo que otro proceso acaba de
|
|
209
|
+
* confirmar (auditor A2 bis), y aquí se decide qué se BORRA.
|
|
207
210
|
*
|
|
208
211
|
* El orden es ESTABLE por `uuid` (3F · U5, tester 3E · §4.3): sin `ORDER BY`
|
|
209
|
-
* lo
|
|
210
|
-
* auditoría
|
|
211
|
-
*
|
|
212
|
-
*
|
|
213
|
-
*
|
|
214
|
-
*
|
|
212
|
+
* lo pone el motor, así que la lista del `--dry-run`, la secuencia de
|
|
213
|
+
* `role_purged` que ve el hook de auditoría y el rol por el que seguiría una
|
|
214
|
+
* pasada interrumpida cambiaban entre PostgreSQL, MySQL y SQLite. Con uuid
|
|
215
|
+
* v7 es además el orden de creación.
|
|
216
|
+
*
|
|
217
|
+
* **Lo que NO devuelve son los HECHOS del rol** (3b-2j). Hasta aquí contaba
|
|
218
|
+
* también sus asignaciones vigentes (3b-0b · AA1) leyendo
|
|
219
|
+
* `authz_assignments`, que es la tabla del driver `database`: con `openfga`
|
|
220
|
+
* los hechos viven en el store y ese conteo era siempre cero, así que el
|
|
221
|
+
* `stillGranting` del barrido —«falso ⇒ no concede SEGURO», leído justo
|
|
222
|
+
* antes de un borrado destructivo— mentía. Contarlos es ahora una pregunta
|
|
223
|
+
* del PUERTO (`AuthorizationDriver.countRoleAssignments`), que es de quien
|
|
224
|
+
* son los hechos.
|
|
225
|
+
*
|
|
226
|
+
* Cota `maxLocalRoles` (3b-0b · AB2, default 10 000): la lectura es una sola
|
|
227
|
+
* consulta y un catálogo local enorme la convierte en amplificación. Se pide
|
|
228
|
+
* una fila de más y, si aparece, 500 `E_AUTHZ_TOO_MANY_LOCAL_ROLES` — nunca
|
|
229
|
+
* una lista parcial, que aquí sería purgar a ciegas la mitad del catálogo.
|
|
215
230
|
*/
|
|
216
|
-
export async function
|
|
217
|
-
const owners = [...new Set(ownerKeys)].filter((key) => key !== GLOBAL_OWNER_KEY);
|
|
218
|
-
if (owners.length === 0)
|
|
219
|
-
return [];
|
|
231
|
+
export async function readLocalRoles(options = {}) {
|
|
220
232
|
const timeoutMs = options.timeoutMs ?? DEFAULT_CATALOG_CACHE_TIMEOUT_MS;
|
|
221
233
|
const driver = options.driver ?? 'catalog';
|
|
222
|
-
const
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
.
|
|
234
|
+
const maxLocalRoles = options.maxLocalRoles ?? DEFAULT_MAX_LOCAL_ROLES;
|
|
235
|
+
const rows = await guardSql(driver, 'catalog.localRoles', timeoutMs, () => db
|
|
236
|
+
.from('authz_roles')
|
|
237
|
+
.whereNot('owner_scope_key', GLOBAL_OWNER_KEY)
|
|
238
|
+
.orderBy('uuid', 'asc')
|
|
239
|
+
.limit(maxLocalRoles + 1)
|
|
240
|
+
.select('uuid', 'slug', 'scope_type', 'rank', 'owner_scope_key'));
|
|
241
|
+
if (rows.length > maxLocalRoles) {
|
|
242
|
+
throw new TooManyLocalRolesError(`El catálogo tiene más de ${maxLocalRoles} roles locales (cota 'maxLocalRoles'). No se devuelve una lista ` +
|
|
243
|
+
`parcial: quien lee esto decide qué se BORRA. Sube la cota a sabiendas si tu catálogo local es así de grande.`);
|
|
232
244
|
}
|
|
233
245
|
if (rows.length === 0)
|
|
234
246
|
return [];
|
|
235
|
-
|
|
236
|
-
// del conjunto entero se fija aquí.
|
|
237
|
-
rows.sort((a, b) => String(a.uuid).localeCompare(String(b.uuid)));
|
|
238
|
-
const links = await guardSql(driver, 'catalog.rolePermissionsOwnedBy', timeoutMs, () => db
|
|
247
|
+
const links = await guardSql(driver, 'catalog.localRolePermissions', timeoutMs, () => db
|
|
239
248
|
.from('authz_role_permissions')
|
|
240
249
|
.join('authz_permissions', 'authz_permissions.uuid', 'authz_role_permissions.permission_uuid')
|
|
241
250
|
.whereIn('authz_role_permissions.role_uuid', rows.map((row) => String(row.uuid)))
|
|
@@ -638,6 +647,7 @@ function buildCatalogView(permissions, roles, links, loadedAt, version) {
|
|
|
638
647
|
},
|
|
639
648
|
rolesNamed: (slug, scopeType) => [...(rolesByKey.get(roleKey(slug, scopeType)) ?? [])],
|
|
640
649
|
rolesOwnedBy: (ownerKey) => [...(rolesByOwner.get(ownerKey) ?? [])],
|
|
650
|
+
localRoles: () => [...rolesByOwner.values()].flat(),
|
|
641
651
|
roleByUuid: (uuid) => roleByUuid.get(uuid) ?? null,
|
|
642
652
|
rolesFor: (scopeType, ownerKeys) => {
|
|
643
653
|
const owners = new Set(ownerKeys);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog_cache.js","sourceRoot":"","sources":["../../../src/catalog/catalog_cache.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,6BAA6B,CAAA;AAG5C,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAA;AACpG,OAAO,EACL,kBAAkB,EAClB,yBAAyB,EACzB,gCAAgC,EAChC,wBAAwB,EACxB,0BAA0B,EAC1B,sBAAsB,GACvB,MAAM,cAAc,CAAA;AACrB,OAAO,EAAE,gBAAgB,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAA;AAC/D,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACzC,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAA;AAIzD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA0CG;AAEH,wEAAwE;AACxE,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAA;AAC5D,MAAM,sBAAsB,GAAG,CAAC,CAAA;AAQhC;;;;GAIG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAG,QAAQ,CAAA;AAExC,8FAA8F;AAC9F,MAAM,UAAU,iBAAiB,CAAC,IAAuB,EAAE,SAAkD;IAC3G,IAAI,IAAI,CAAC,KAAK,KAAK,gBAAgB;QAAE,OAAO,IAAI,CAAA;IAChD,OAAO,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAE,SAAiC,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACvH,CAAC;AAmED;;;;;GAKG;AACH,IAAI,cAAc,GAAG,CAAC,CAAA;AAEtB;;;GAGG;AACH,MAAM,UAAU,sBAAsB;IACpC,cAAc,IAAI,CAAC,CAAA;AACrB,CAAC;AAED,6EAA6E;AAC7E,MAAM,CAAC,MAAM,gCAAgC,GAAG,KAAK,CAAA;AAErD;;;;;GAKG;AACH,MAAM,CAAC,MAAM,uBAAuB,GAAG,MAAM,CAAA;AAkB7C,SAAS,cAAc,CAAC,MAAe;IACrC,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,MAAM,CAAA;IAClC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,MAAM,CAAA;IACvC,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,OAAO,MAAM,KAAK,UAAU;QAAE,OAAO,MAAM,OAAO,MAAM,EAAE,CAAA;IAC5F,MAAM,CAAC,GAAG,MAAsE,CAAA;IAChF,IAAI,CAAC,CAAC,aAAa,KAAK,KAAK;QAAE,OAAO,yCAAyC,CAAC,CAAC,WAAW,EAAE,IAAI,IAAI,QAAQ,GAAG,CAAA;IACjH,OAAO,MAAM,CAAC,CAAC,WAAW,EAAE,IAAI,IAAI,QAAQ,oBAAoB,CAAA;AAClE,CAAC;AAED;;;;;;GAMG;AACH,SAAS,uBAAuB,CAAC,MAAe,EAAE,SAAiB;IACjE,MAAM,CAAC,GAAG,MAA+D,CAAA;IACzE,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,UAAU,IAAI,OAAO,CAAC,CAAC,KAAK,KAAK,UAAU,IAAI,CAAC,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QACpG,MAAM,IAAI,wBAAwB,CAChC,GAAG,SAAS,6FAA6F;YACvG,GAAG,cAAc,CAAC,MAAM,CAAC,qFAAqF;YAC9G,gGAAgG;YAChG,2GAA2G;YAC3G,gCAAgC,CACnC,CAAA;IACH,CAAC;IACD,OAAO,CAA8B,CAAA;AACvC,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAClC,MAAc,EACd,OAA2D;IAE3D,IAAI,OAAO,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,iBAAiB,KAAK,SAAS,EAAE,CAAC;QAC7E,MAAM,IAAI,wBAAwB,CAChC,GAAG,MAAM,0FAA0F;YACjG,oGAAoG;YACpG,2EAA2E,CAC9E,CAAA;IACH,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,SAAS,oBAAoB,CAAC,MAAc,EAAE,GAAW;IACvD,MAAM,KAAK,GAAG,IAAI,yBAAyB,CAAC,MAAM,EAAE,iBAAiB,EAAE,IAAI,KAAK,CAAC,GAAG,CAAC,CAAC,CAAA;IACtF,KAAK,CAAC,OAAO;QACX,+BAA+B,MAAM,gDAAgD,qBAAqB,IAAI;YAC9G,QAAQ,sBAAsB,MAAM,GAAG,uEAAuE;YAC9G,uCAAuC,CAAA;IACzC,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,UAAkF,EAAE;IAEpF,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,EAAE,CAAA;IACnC,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAA;IAC1C,MAAM,IAAI,GAAgC,MAAM,QAAQ,CACtD,MAAM,EACN,iBAAiB,EACjB,OAAO,CAAC,SAAS,IAAI,gCAAgC,EACrD,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,CAC/F,CAAA;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,oBAAoB,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAA;IAC9E,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,OAAO,CAAA;IAC3B,MAAM,OAAO,GAAG,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAA;IAC7H,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;QAAE,MAAM,oBAAoB,CAAC,MAAM,EAAE,2BAA2B,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;IAC3G,OAAO,OAAO,CAAA;AAChB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,GAA8B,EAC9B,UAAmD,EAAE;IAErD,MAAM,MAAM,GAAG,uBAAuB,CAAC,GAAG,EAAE,yBAAyB,CAAC,CAAA;IACtE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAA;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,gCAAgC,CAAA;IACvE,MAAM,MAAM,GAAG,GAAG,EAAE,CAClB,QAAQ,CAAC,MAAM,EAAE,sBAAsB,EAAE,SAAS,EAAE,GAAG,EAAE,CACvD,MAAM;SACH,IAAI,CAAC,qBAAqB,CAAC;SAC3B,KAAK,CAAC,IAAI,EAAE,sBAAsB,CAAC;SACnC,SAAS,CAAC,SAAS,EAAE,CAAC,CAAC,CAC3B,CAAA;IACH,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,MAAM,EAAE,CAAC,CAAA;IACtC,IAAI,OAAO,GAAG,CAAC;QAAE,OAAM;IACvB,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,MAAM,EAAE,sBAAsB,EAAE,SAAS,EAAE,GAAG,EAAE,CAC7D,MAAM,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,sBAAsB,EAAE,OAAO,EAAE,CAAC,EAAE,UAAU,EAAE,WAAW,EAAE,EAAE,CAAC,CAClH,CAAA;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,4EAA4E;QAC5E,IAAI,MAAM,CAAC,MAAM,MAAM,EAAE,CAAC,KAAK,CAAC;YAAE,MAAM,KAAK,CAAA;IAC/C,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,UAA2E,EAAE;IAE7E,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,gCAAgC,CAAA;IACvE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAA;IAC1C,MAAM,aAAa,GAAG,OAAO,CAAC,aAAa,IAAI,uBAAuB,CAAA;IACtE,MAAM,IAAI,GAAU,MAAM,QAAQ,CAAC,MAAM,EAAE,oBAAoB,EAAE,SAAS,EAAE,GAAG,EAAE,CAC/E,EAAE;SACC,IAAI,CAAC,aAAa,CAAC;SACnB,QAAQ,CAAC,iBAAiB,EAAE,gBAAgB,CAAC;SAC7C,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC;SACtB,KAAK,CAAC,aAAa,GAAG,CAAC,CAAC;SACxB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,EAAE,iBAAiB,CAAC,CACnE,CAAA;IACD,IAAI,IAAI,CAAC,MAAM,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,IAAI,sBAAsB,CAC9B,4BAA4B,aAAa,kEAAkE;YACzG,8GAA8G,CACjH,CAAA;IACH,CAAC;IACD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAA;IAChC,MAAM,KAAK,GAAU,MAAM,QAAQ,CAAC,MAAM,EAAE,8BAA8B,EAAE,SAAS,EAAE,GAAG,EAAE,CAC1F,EAAE;SACC,IAAI,CAAC,wBAAwB,CAAC;SAC9B,IAAI,CAAC,mBAAmB,EAAE,wBAAwB,EAAE,wCAAwC,CAAC;SAC7F,OAAO,CACN,kCAAkC,EAClC,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CACpC;SACA,MAAM,CAAC,+CAA+C,EAAE,2CAA2C,CAAC,CACxG,CAAA;IACD,MAAM,aAAa,GAAG,IAAI,GAAG,EAAoB,CAAA;IACjD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,EAAE,CAAA;QAC5D,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAA;QACvC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,CAAC,CAAA;IACjD,CAAC;IACD,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;QACxB,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC;YAClB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACtB,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;YACtB,SAAS,EAAE,MAAM,CAAC,GAAG,CAAC,UAAU,CAAc;YAC9C,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC;YAClC,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC;SACvB,CAAC;QACF,WAAW,EAAE,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE;KAChE,CAAC,CAAC,CAAA;AACL,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,KAAK,UAAU,mBAAmB,CAChC,GAA8B,EAC9B,OAA8C;IAE9C,iEAAiE;IACjE,IAAI,eAAe,CAAC,GAAG,CAAC;QAAE,OAAM;IAChC,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,cAAc,EAAE,OAAO,CAAC,SAAS,EAAE,GAAG,EAAE,CACrE,GAAG,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,sBAAsB,CAAC,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,SAAS,CAAC,CAClG,CAAA;AACH,CAAC;AAWD;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,EAAkD,EAClD,UAAoC,EAAE;IAEtC,IAAI,OAAO,EAAE,KAAK,UAAU,EAAE,CAAC;QAC7B,MAAM,IAAI,wBAAwB,CAChC,0FAA0F,OAAO,EAAE,EAAE,CACtG,CAAA;IACH,CAAC;IACD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAA;IAC1C,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,gCAAgC,CAAA;IACvE,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAA;IAC9E,4EAA4E;IAC5E,8DAA8D;IAC9D,IAAI,aAAa,GAA8B,IAAI,CAAA;IACnD,IAAI,CAAC;QACH,OAAO,MAAM,UAAU,CAAC,WAAW,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;YAChD,qEAAqE;YACrE,kCAAkC;YAClC,MAAM,mBAAmB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;YACrD,IAAI,MAAS,CAAA;YACb,IAAI,CAAC;gBACH,MAAM,GAAG,MAAM,EAAE,CAAC,GAAG,CAAC,CAAA;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,aAAa,GAAG,EAAE,KAAK,EAAE,CAAA;gBACzB,MAAM,KAAK,CAAA;YACb,CAAC;YACD,MAAM,uBAAuB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC,CAAA;YACzD,OAAO,MAAM,CAAA;QACf,CAAC,CAAC,CAAA;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,oEAAoE;QACpE,qEAAqE;QACrE,wEAAwE;QACxE,uEAAuE;QACvE,0EAA0E;QAC1E,sEAAsE;QACtE,6DAA6D;QAC7D,MAAM,YAAY,GAAG,aAAa,KAAK,IAAI,IAAK,aAAoC,CAAC,KAAK,KAAK,KAAK,CAAA;QACpG,IAAI,YAAY,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;YAAE,MAAM,KAAK,CAAA;QACzD,IAAI,YAAY,CAAC,KAAK,CAAC;YAAE,MAAM,KAAK,CAAA;QACpC,IAAI,aAAa,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,gCAAgC,CAAC,MAAM,EAAE,eAAe,EAAE,SAAS,EAAE,KAAK,CAAC,CAAA;QAC/G,MAAM,IAAI,yBAAyB,CAAC,MAAM,EAAE,eAAe,EAAE,KAAK,CAAC,CAAA;IACrE,CAAC;AACH,CAAC;AA2BD,MAAM,OAAO,YAAY;IACvB,KAAK,GAAuB,IAAI,CAAA;IAChC,QAAQ,GAAG,CAAC,CAAC,CAAA;IACb,0GAA0G;IAC1G,WAAW,GAAG,CAAC,CAAA;IACf,iBAAiB,GAAG,CAAC,CAAC,CAAA;IACtB,QAAQ,GAAgC,IAAI,CAAA;IAC5C,SAAS,GAAgC,IAAI,CAAA;IAC7C,oGAAoG;IACpG,UAAU,GAAG,CAAC,CAAA;IACL,QAAQ,CAAe;IACvB,UAAU,CAAQ;IAClB,OAAO,CAAQ;IACxB,sEAAsE;IAC7D,IAAI,CAAc;IAE3B,YAAY,UAA+B,EAAE;QAC3C,MAAM,UAAU,GAAG,OAAO,CAAC,UAAU,IAAI,QAAQ,CAAA;QACjD,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;YAC5B,MAAM,OAAO,GAAI,UAAoC,EAAE,OAAO,CAAA;YAC9D,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC,CAAC,EAAE,CAAC;gBAC9E,MAAM,IAAI,SAAS,CACjB,+EAA+E,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,GAAG,CAC7G,CAAA;YACH,CAAC;YACD,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACzB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;QACtB,CAAC;QACD,IAAI,CAAC,UAAU,GAAG,OAAO,CAAC,SAAS,IAAI,gCAAgC,CAAA;QACvE,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC,MAAM,IAAI,SAAS,CAAA;QAC1C,IAAI,OAAO,CAAC,GAAG,KAAK,SAAS,IAAI,OAAO,OAAO,CAAC,GAAG,KAAK,UAAU,EAAE,CAAC;YACnE,MAAM,IAAI,SAAS,CAAC,iDAAiD,OAAO,OAAO,CAAC,GAAG,GAAG,CAAC,CAAA;QAC7F,CAAC;QACD,IAAI,CAAC,IAAI,GAAG,OAAO,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE,CAAC,CAAA;IACtD,CAAC;IAED;;;;;;;;;OASG;IACH,KAAK,CAAC,IAAI;QACR,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAA;QAC1B,IAAI,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YAC/B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE;gBAAE,OAAO,OAAO,CAAA;YACvC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;gBACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;oBACtD,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;gBACvB,CAAC,CAAC,CAAA;YACJ,CAAC;YACD,OAAO,IAAI,CAAC,SAAS,CAAA;QACvB,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,EAAE,CAAA;IACvB,CAAC;IAED,8GAA8G;IAC9G,OAAO,CAAC,YAAqB;QAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE;gBACpD,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAA;YACtB,CAAC,CAAC,CAAA;QACJ,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAA;IACtB,CAAC;IAED;;;;OAIG;IACH,UAAU;QACR,IAAI,CAAC,WAAW,IAAI,CAAC,CAAA;IACvB,CAAC;IAED,yHAAyH;IACzH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,KAAK,KAAK,IAAI,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAA;IAC/C,CAAC;IAED,QAAQ;QACN,OAAO,IAAI,CAAC,QAAQ,KAAK,cAAc,IAAI,IAAI,CAAC,iBAAiB,KAAK,IAAI,CAAC,WAAW,CAAA;IACxF,CAAC;IAED,WAAW;QACT,IAAI,IAAI,CAAC,QAAQ,KAAK,IAAI;YAAE,OAAO,IAAI,CAAA;QACvC,OAAO,IAAI,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,QAAQ,CAAA;IACvD,CAAC;IAED,IAAI,CAAC,SAAiB,EAAE,EAAa;QACnC,OAAO,QAAQ,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;IAC/D,CAAC;IAED,YAAY;QACV,OAAO,uBAAuB,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,UAAU,EAAE,CAAC,CAAA;IACtF,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CAAC,OAAoB;QACpC,MAAM,SAAS,GAAG,MAAM,IAAI,CAAC,YAAY,EAAE,CAAA;QAC3C,IAAI,IAAI,CAAC,KAAK,KAAK,OAAO;YAAE,OAAO,IAAI,CAAC,IAAI,EAAE,CAAA;QAC9C,IAAI,SAAS,KAAK,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,EAAE,EAAE,CAAC;YACrD,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;YAC7B,OAAO,OAAO,CAAA;QAChB,CAAC;QACD,OAAO,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAA;IAChC,CAAC;IAED,KAAK,CAAC,KAAK,CAAC,YAAqB;QAC/B,0EAA0E;QAC1E,uEAAuE;QACvE,mEAAmE;QACnE,iEAAiE;QACjE,MAAM,OAAO,GAAG,cAAc,CAAA;QAC9B,MAAM,UAAU,GAAG,IAAI,CAAC,WAAW,CAAA;QACnC,MAAM,SAAS,GAAG,YAAY,IAAI,CAAC,MAAM,IAAI,CAAC,YAAY,EAAE,CAAC,CAAA;QAC7D,MAAM,WAAW,GAAoB,MAAM,IAAI,CAAC,IAAI,CAAC,qBAAqB,EAAE,GAAG,EAAE,CAC/E,EAAE,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,CACrE,CAAA;QACD,MAAM,KAAK,GAAc,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CAC7D,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,CAAC,CACvF,CAAA;QACD,MAAM,KAAK,GAA0D,MAAM,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,GAAG,EAAE,CACzG,EAAE,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,iBAAiB,CAAC,CACzE,CAAA;QACD,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,OAAO,EAAE,EAAE,SAAS,CAAC,CAAA;QAC5F,IAAI,CAAC,KAAK,GAAG,IAAI,CAAA;QACjB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAA;QACvB,IAAI,CAAC,iBAAiB,GAAG,UAAU,CAAA;QACnC,kFAAkF;QAClF,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,IAAI,EAAE,CAAA;QAC7B,OAAO,IAAI,CAAA;IACb,CAAC;CACF;AAED;;;;GAIG;AACH,SAAS,OAAO,CAAC,IAAY,EAAE,SAAiB;IAC9C,OAAO,GAAG,IAAI,SAAS,SAAS,EAAE,CAAA;AACpC,CAAC;AAgBD;;;;;;GAMG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAY,EAAE,GAAY;IAC1D,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,IAAI,CAAA;IAClD,IAAI,MAAM,GAAY,GAAG,CAAA;IACzB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,IAAI,CAAC;YACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;QAC1B,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,GAAG,SAAS,CAAA;QACpB,CAAC;IACH,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACxH,MAAM,IAAI,0BAA0B,CAClC,gDAAgD,IAAI,4DAA4D;YAC9G,UAAU,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,GAAG,wDAAwD,CAC/G,CAAA;IACH,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,IAAI,GAAG,CAAC,MAAkB,CAAC,CAAC,CAAC,CAAA;AACxD,CAAC;AAED;;;;;;;;;GASG;AACH,SAAS,OAAO,CAAC,GAAY;IAC3B,MAAM,KAAK,GAAG,GAAG,CAAC,eAAe,CAAA;IACjC,MAAM,KAAK,GAAG,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,KAAK,gBAAgB,IAAI,YAAY,CAAC,KAAK,CAAC,EAAE,IAAI,IAAI,IAAI,CAAC,CAAA;IAC5G,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,IAAI,0BAA0B,CAClC,wCAAwC,GAAG,CAAC,IAAI,IAAI,GAAG,CAAC,UAAU,MAAM,GAAG,CAAC,IAAI,6BAA6B;YAC3G,UAAU,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,KAAK,eAAe;YAC1G,IAAI,gBAAgB,gGAAgG,CACvH,CAAA;IACH,CAAC;IACD,OAAO,KAAe,CAAA;AACxB,CAAC;AAED,SAAS,gBAAgB,CACvB,WAA4B,EAC5B,KAAgB,EAChB,KAA4D,EAC5D,QAAgB,EAChB,OAAe;IAEf,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAA6B,CAAA;IAC7D,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAkB,CAAA;IACtD,KAAK,MAAM,CAAC,IAAI,WAAW,EAAE,CAAC;QAC5B,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,YAAY,EAAE,iBAAiB,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,aAAa,CAAC,EAAE,CAAC,CAAC,CAAA;QACvH,oBAAoB,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;IAC1C,CAAC;IAED,2EAA2E;IAC3E,qEAAqE;IACrE,MAAM,UAAU,GAAG,IAAI,GAAG,EAAyB,CAAA;IACnD,MAAM,UAAU,GAAG,IAAI,GAAG,EAAuB,CAAA;IACjD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAA;IACrD,MAAM,YAAY,GAAG,IAAI,GAAG,EAAyB,CAAA;IACrD,IAAI,aAAa,GAAG,CAAC,CAAA;IACrB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;QACtB,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,CAAC,CAAA;QACxB,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAA;QAChC,MAAM,IAAI,GAAgB,MAAM,CAAC,MAAM,CAAC;YACtC,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,IAAI,EAAE,CAAC,CAAC,IAAI;YACZ,SAAS,EAAE,CAAC,CAAC,UAAU;YACvB,KAAK;YACL,IAAI,EAAE,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;SACvC,CAAC,CAAA;QACF,MAAM,GAAG,GAAG,OAAO,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,UAAU,CAAC,CAAA;QACzC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,UAAU,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAA;QACjD,IAAI,KAAK,KAAK,gBAAgB,EAAE,CAAC;YAC/B,UAAU,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAA;YAClC,IAAI,IAAI,CAAC,IAAI,GAAG,aAAa;gBAAE,aAAa,GAAG,IAAI,CAAC,IAAI,CAAA;QAC1D,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,GAAG,CAAC,GAAG,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACjC,CAAC;QACD,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;QAC5B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC;YAAE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,EAAE,EAAE,CAAC,CAAA;QACvE,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,UAAU,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,KAAK,KAAK,gBAAgB,EAAE,CAAC;YAC/B,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,KAAK,CAAC;gBAAE,YAAY,CAAC,GAAG,CAAC,KAAK,EAAE,EAAE,CAAC,CAAA;YACzD,YAAY,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACrC,CAAC;IACH,CAAC;IAED,sEAAsE;IACtE,+DAA+D;IAC/D,MAAM,oBAAoB,GAAG,IAAI,GAAG,EAAyC,CAAA;IAC7E,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAuB,CAAA;IACxD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QAC3C,IAAI,CAAC,IAAI;YAAE,SAAQ;QACnB,MAAM,IAAI,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC3D,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC;gBAAE,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,GAAG,EAAE,CAAC,CAAA;YAC5F,iBAAiB,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAClD,CAAC;QACD,IAAI,OAAO,GAAG,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,CAAC,CAAA;QAC5D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,GAAG,IAAI,GAAG,EAAE,CAAA;YACnB,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,eAAe,EAAE,OAAO,CAAC,CAAA;QACzD,CAAC;QACD,IAAI,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;QACtC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,GAAG,EAAE,CAAA;YACT,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,CAAC,CAAA;QACnC,CAAC;QACD,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAA;IACpG,CAAC;IAED,MAAM,SAAS,GAAgB,IAAI,GAAG,EAAE,CAAA;IACxC,MAAM,eAAe,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,GAAG,gBAAgB,CAAC,IAAI,EAAE,CAAC,CAAC,CAAA;IACnE,OAAO;QACL,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI;QACxD,IAAI,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,KAAK,gBAAgB,CAAC,IAAI,IAAI;QAC7H,WAAW,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE;YAC1C,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,CAAA;YACtD,IAAI,CAAC,KAAK;gBAAE,OAAO,IAAI,CAAA;YACvB,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAA;YACjC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAA;YACvE,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO,IAAI,CAAA;YACrC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACvB,+DAA+D;gBAC/D,iEAAiE;gBACjE,qEAAqE;gBACrE,sCAAsC;gBACtC,EAAE;gBACF,+DAA+D;gBAC/D,oEAAoE;gBACpE,mEAAmE;gBACnE,iEAAiE;gBACjE,MAAM,IAAI,kBAAkB,CAC1B,IAAI,IAAI,aAAa,SAAS,2BAA2B,OAAO,CAAC,MAAM,iCAAiC;oBACtG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,UAAU,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,sCAAsC;oBACrG,yGAAyG;oBACzG,qGAAqG;oBACrG,2GAA2G,CAC9G,CAAA;YACH,CAAC;YACD,OAAO,OAAO,CAAC,CAAC,CAAC,CAAA;QACnB,CAAC;QACD,UAAU,EAAE,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,SAAS,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACtF,YAAY,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC,CAAC;QACnE,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,IAAI,EAAE;QACnD,UAAU,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI;QAClD,QAAQ,EAAE,CAAC,SAAS,EAAE,SAAS,EAAE,EAAE;YACjC,MAAM,MAAM,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAA;YACjC,OAAO,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iBAAiB,CAAC,CAAC,EAAE,MAAM,CAAC,CAAC,CAAA;QACxF,CAAC;QACD,8EAA8E;QAC9E,aAAa,EAAE,CAAC,cAAc,EAAE,EAAE,CAChC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,oBAAoB,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACpG,iBAAiB,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,SAAS,CAAC;QACtF,cAAc,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,oBAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,IAAI;QAChE,eAAe;QACf,aAAa;QACb,QAAQ;QACR,OAAO;KACR,CAAA;AACH,CAAC"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import type { AuthorizationDriverFactory, AuthzCatalogWriteEvent, AuthzWriteEvent, HolderTypeMap, ScopeChainResolver, ScopeDescendantsResolver } from './types.js';
|
|
2
|
-
import type { CatalogSource } from './catalog.js';
|
|
1
|
+
import type { AuthorizationDriverFactory, AuthzCatalogWriteEvent, AuthzWriteEvent, HolderTypeMap, RelationRef, RelationWriteEvent, RelationsDriverFactory, ScopeChainResolver, ScopeDescendantsResolver, ScopeEdgesEnumerator, ScopeOutbox } from './types.js';
|
|
2
|
+
import type { CatalogSource } from './catalog/catalog.js';
|
|
3
|
+
import type { RelationsConfig } from './relations/define_relations_config.js';
|
|
3
4
|
/**
|
|
4
5
|
* Config del sistema de autorización. Todo lo específico del consumidor
|
|
5
6
|
* entra por aquí: qué drivers existen, cuál está activo, cómo se llaman sus
|
|
@@ -25,7 +26,7 @@ export interface AuthorizationConfig {
|
|
|
25
26
|
/**
|
|
26
27
|
* Holders del consumidor: morph name (`@MorphMap` del modelo) → tipo del
|
|
27
28
|
* modelo FGA. Lo necesitan el driver `openfga` y los comandos
|
|
28
|
-
* `openfga:provision
|
|
29
|
+
* `openfga:provision`; el driver `database` lo ignora.
|
|
29
30
|
*/
|
|
30
31
|
holderTypes?: HolderTypeMap;
|
|
31
32
|
/**
|
|
@@ -58,6 +59,25 @@ export interface AuthorizationConfig {
|
|
|
58
59
|
* con columna padre (PG y SQLite).
|
|
59
60
|
*/
|
|
60
61
|
descendantsOf?: ScopeDescendantsResolver;
|
|
62
|
+
/**
|
|
63
|
+
* **El árbol entero, paginado** (3b-3a): lo que `authz:reconcile` usa
|
|
64
|
+
* para reconstruir —y para PODAR— el árbol de un driver que lo guarda
|
|
65
|
+
* como hechos propios (`openfga` en modo `facts`). `resolveChain`
|
|
66
|
+
* responde por un scope; esto los enumera todos.
|
|
67
|
+
*
|
|
68
|
+
* scopes: {
|
|
69
|
+
* resolveChain,
|
|
70
|
+
* enumerateEdges: sqlScopeEdges({
|
|
71
|
+
* table: 'organization_nodes', uuidColumn: 'uuid',
|
|
72
|
+
* parentColumn: 'parent_uuid', typeColumn: 'kind',
|
|
73
|
+
* }),
|
|
74
|
+
* }
|
|
75
|
+
*
|
|
76
|
+
* Solo lo usa `authz:reconcile`: sin él la migración del ÁRBOL no se
|
|
77
|
+
* hace y el comando lo dice (500 `E_AUTHZ_CONFIG`) en vez de suponer que
|
|
78
|
+
* el árbol del backend ya está bien.
|
|
79
|
+
*/
|
|
80
|
+
enumerateEdges?: ScopeEdgesEnumerator;
|
|
61
81
|
/**
|
|
62
82
|
* Tope de scopes que `authorizedScopes` devuelve (default 1000); superado
|
|
63
83
|
* ⇒ 422 `E_AUTHZ_TOO_MANY_SCOPES`, nunca parcial. Se puede bajar por
|
|
@@ -72,6 +92,62 @@ export interface AuthorizationConfig {
|
|
|
72
92
|
* hacen, 2.5-B · ⚪6).
|
|
73
93
|
*/
|
|
74
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;
|
|
119
|
+
/**
|
|
120
|
+
* **La outbox del árbol** (3b-2d, panel 2 cruce 4 · S5). Con ella,
|
|
121
|
+
* `manager.scopes.attached/moved/detached` NO escriben en el backend:
|
|
122
|
+
* ENCOLAN el cambio —pásale tu transacción en
|
|
123
|
+
* `{ transaction }`— y lo aplica después `node ace authz:scopes:relay`.
|
|
124
|
+
*
|
|
125
|
+
* Sin ella, el paquete escribe en el backend dentro de TU transacción y
|
|
126
|
+
* un `rollback` posterior no lo deshace: el árbol del backend queda
|
|
127
|
+
* adelantado al tuyo y, en `hierarchy: 'facts'` (donde FGA es el PDP),
|
|
128
|
+
* eso es una escalada persistente e invisible desde tu base. Por eso el
|
|
129
|
+
* driver `facts` se niega a construirse sin outbox y sin
|
|
130
|
+
* `acceptScopeDriftRisk: true`.
|
|
131
|
+
*
|
|
132
|
+
* El paquete no impone tabla: `sqlScopeOutbox(...)` implementa el puerto
|
|
133
|
+
* sobre Lucid y `stubs/scopes_outbox_migration.stub` es la migración que
|
|
134
|
+
* puedes copiar, pero cualquier implementación del puerto vale.
|
|
135
|
+
*
|
|
136
|
+
* Lo que la outbox NO arregla: durante el lag del relay (segundos) el
|
|
137
|
+
* backend decide con el árbol VIEJO. Es un fail-open temporal —el tenant
|
|
138
|
+
* antiguo conserva acceso tras un `moved`, los denies heredados no
|
|
139
|
+
* aplican tras un `attached`—. No hay 2PC.
|
|
140
|
+
*/
|
|
141
|
+
outbox?: ScopeOutbox;
|
|
142
|
+
/**
|
|
143
|
+
* «Sé que sin outbox un `rollback` de mi transacción deja el árbol del
|
|
144
|
+
* backend adelantado al mío, y lo asumo» (3b-2e · E3). Es la salida
|
|
145
|
+
* explícita del gate del MANAGER, que es quien encola: declarar la outbox
|
|
146
|
+
* solo en el driver dejaba el gate del driver contento y la mitigación
|
|
147
|
+
* APAGADA. Tiene que ser el booleano `true`: un valor «truthy» no es una
|
|
148
|
+
* aceptación.
|
|
149
|
+
*/
|
|
150
|
+
acceptScopeDriftRisk?: boolean;
|
|
75
151
|
};
|
|
76
152
|
/**
|
|
77
153
|
* Catálogos de roles/permisos del consumidor (uno por módulo: plataforma,
|
|
@@ -93,6 +169,19 @@ export interface AuthorizationConfig {
|
|
|
93
169
|
* NO es el reloj monótono de `forRequest({ maxAgeMs })`.
|
|
94
170
|
*/
|
|
95
171
|
clock?: () => Date;
|
|
172
|
+
/**
|
|
173
|
+
* Deadline TOTAL (ms, default 5000) de la lectura de la **barrera del
|
|
174
|
+
* freeze** que precede a toda escritura (fila `id = 2` de
|
|
175
|
+
* `authz_catalog_version`, 2.3). La barrera se lee SIEMPRE por la conexión
|
|
176
|
+
* del motor, nunca por la transacción del llamante (L-1 · 🟠 8: la
|
|
177
|
+
* autoridad no comparte snapshot con quien escribe), así que
|
|
178
|
+
* `{ transaction }` en `scopes.*` exige **pool ≥ 2**: con pool 1 (SQLite
|
|
179
|
+
* `:memory:`) la barrera no consigue conexión mientras el llamante sostiene
|
|
180
|
+
* la suya y la escritura sale 503 `E_AUTHZ_BACKEND_TIMEOUT` al vencer este
|
|
181
|
+
* deadline — fail-closed, jamás un cuelgue ni un bypass. El mismo valor lo
|
|
182
|
+
* hereda el `RelationsManager` del provider.
|
|
183
|
+
*/
|
|
184
|
+
freezeTimeoutMs?: number;
|
|
96
185
|
/**
|
|
97
186
|
* Toda escritura (`grant`, `revoke`, `deny`, `removeDeny`, `scopes.*`)
|
|
98
187
|
* tiene que llevar `actor` (2.1, B7); sin él, 422 `E_AUTHZ_ACTOR_REQUIRED`
|
|
@@ -100,6 +189,20 @@ export interface AuthorizationConfig {
|
|
|
100
189
|
* al construirse (ver `warnOnOptInSecurity`).
|
|
101
190
|
*/
|
|
102
191
|
requireActor?: boolean;
|
|
192
|
+
/**
|
|
193
|
+
* **Puerta 2 de `{ transaction }`** (L-2, opt-in): con `true`, el driver
|
|
194
|
+
* ACTIVO tiene que declarar `capabilities.transactionalWrites: true` o el
|
|
195
|
+
* manager falla **al resolverlo** (500 `E_AUTHZ_CONFIG`) — toda lectura y
|
|
196
|
+
* escritura, `manager.driver()` incluido: el despliegue no arranca. Es lo
|
|
197
|
+
* que convierte «`{ transaction }` a un driver `openfga` es 500 por
|
|
198
|
+
* llamada» (puerta 1, siempre activa) en un fallo en toda la flota en vez
|
|
199
|
+
* de en una ruta poco transitada. Default `false`: el roadmap decía «el
|
|
200
|
+
* manager falla al construirse si el driver no la soporta» y eso haría
|
|
201
|
+
* `openfga` inconstruible en cualquier app que solo lo tenga registrado;
|
|
202
|
+
* quien quiera fallar al arrancar, lo pide. Lo hereda el `RelationsManager`
|
|
203
|
+
* del provider salvo `relations.requireTransactionalWrites`.
|
|
204
|
+
*/
|
|
205
|
+
requireTransactionalWrites?: boolean;
|
|
103
206
|
/**
|
|
104
207
|
* Las SEIS escrituras (`grant`, `revoke`, `deny`, `removeDeny`,
|
|
105
208
|
* `scopes.attached/moved/detached`) tienen que declarar `within` (2.1, B1;
|
|
@@ -131,6 +234,97 @@ export interface AuthorizationConfig {
|
|
|
131
234
|
* tiene que tener cada permiso EFECTIVO en el owner (sin deny).
|
|
132
235
|
*/
|
|
133
236
|
delegablePermissions?: string[];
|
|
237
|
+
/**
|
|
238
|
+
* **ReBAC genérico** (Fase 4, `relations/`). Los drivers del puerto
|
|
239
|
+
* `RelationsDriver`, por clave, análogos a `drivers` de roles, más la CONFIG
|
|
240
|
+
* de relaciones (`defineRelationsConfig`) que declara los tipos y sus
|
|
241
|
+
* relaciones. La factory del driver `openfga` de relaciones entra por el
|
|
242
|
+
* subpath `/openfga` DENTRO de ella, como la de roles, así que ningún comando
|
|
243
|
+
* importa el SDK.
|
|
244
|
+
*
|
|
245
|
+
* const relationsConfig = defineRelationsConfig({
|
|
246
|
+
* objectTypes: [{ type: 'document', relations: [{ name: 'viewer' }] }],
|
|
247
|
+
* holderTypes: ['user'],
|
|
248
|
+
* })
|
|
249
|
+
* relations: {
|
|
250
|
+
* config: relationsConfig,
|
|
251
|
+
* default: env.get('AUTHZ_DRIVER', 'database'),
|
|
252
|
+
* drivers: {
|
|
253
|
+
* database: () => new DatabaseRelationsDriver(relationsConfig),
|
|
254
|
+
* openfga: () => new OpenFgaRelationsDriver(relationsConfig, { ... }),
|
|
255
|
+
* },
|
|
256
|
+
* }
|
|
257
|
+
*
|
|
258
|
+
* Con `config` declarado, el paquete cablea el `RelationsManager` como
|
|
259
|
+
* singleton (servicio `@jantstack/adonis-authz/services/relations`, análogo
|
|
260
|
+
* al de roles) y `openfga:provision` incluye los tipos de relación en el
|
|
261
|
+
* modelo `facts` que publica (así un store recién aprovisionado ya acepta
|
|
262
|
+
* tuplas de relación sin un `authz:catalog:sync` previo). `drivers` los usa
|
|
263
|
+
* además `authz:relations:reconcile` para el ORIGEN y el DESTINO de una
|
|
264
|
+
* migración de tuplas.
|
|
265
|
+
*/
|
|
266
|
+
relations?: {
|
|
267
|
+
/**
|
|
268
|
+
* La config de relaciones (`defineRelationsConfig(...)`): los tipos de
|
|
269
|
+
* objeto y sus relaciones. Es lo que el `RelationsManager` de servicio usa
|
|
270
|
+
* para F-05 (rechazar un tipo/relación no declarado) y lo que
|
|
271
|
+
* `openfga:provision` mete en el modelo `facts`. Es la MISMA instancia que
|
|
272
|
+
* las factories de `drivers` capturan para construir sus drivers.
|
|
273
|
+
*/
|
|
274
|
+
config?: RelationsConfig;
|
|
275
|
+
/**
|
|
276
|
+
* Clave del driver de relaciones ACTIVO (en `drivers`) que el singleton de
|
|
277
|
+
* servicio resuelve. Default: el `default` de roles (los drivers de
|
|
278
|
+
* relaciones se nombran igual que los de roles).
|
|
279
|
+
*/
|
|
280
|
+
default?: string;
|
|
281
|
+
drivers?: Record<string, RelationsDriverFactory>;
|
|
282
|
+
/**
|
|
283
|
+
* La puerta 2 de `{ transaction }` para el puerto de RELACIONES (L-2):
|
|
284
|
+
* con `true`, el driver de relaciones activo tiene que declarar
|
|
285
|
+
* `transactionalWrites: true` o `buildRelationsManager` falla al
|
|
286
|
+
* resolverlo (500 `E_AUTHZ_CONFIG`). Default: el
|
|
287
|
+
* `requireTransactionalWrites` del raíz (una sola política, como
|
|
288
|
+
* `requireActor`); `false` aquí lo anula solo para este puerto.
|
|
289
|
+
*/
|
|
290
|
+
requireTransactionalWrites?: boolean;
|
|
291
|
+
/**
|
|
292
|
+
* **Gate de policy del consumidor sobre cada tupla (R-13)** — cableado al
|
|
293
|
+
* `RelationsManager` de servicio desde 2.4.0-alpha.3 (hasta entonces solo
|
|
294
|
+
* existía construyendo el manager a mano). SÍNCRONO, PURO y sin `actor` a
|
|
295
|
+
* propósito: recibe la referencia completa (sujeto, relación, objeto,
|
|
296
|
+
* partición, operación, `expiresAt`) y LANZA para rechazarla; corre
|
|
297
|
+
* después de F-05 y ANTES de tocar el driver (cero llamadas, cero
|
|
298
|
+
* eventos). **Devolver una promesa es 500 `E_AUTHZ_CONFIG`** antes de
|
|
299
|
+
* escribir, no un rechazo ignorado: un `assertWrite: async (ref) => …`
|
|
300
|
+
* compila (una función que devuelve `Promise<void>` es asignable a
|
|
301
|
+
* `void`) y hasta alpha.3 la promesa se descartaba y la escritura
|
|
302
|
+
* ENTRABA. La policy que necesita actor, BD o `await` va en tu servicio,
|
|
303
|
+
* antes de llamar a `relate`/`unrelate`. Las purgas no pasan por aquí.
|
|
304
|
+
* Vive en `relations` y no en `hooks`: un solo home para el puerto.
|
|
305
|
+
*/
|
|
306
|
+
assertWrite?: (ref: RelationRef) => void;
|
|
307
|
+
/**
|
|
308
|
+
* **Auditoría de las CUATRO escrituras de relaciones** (`relate`,
|
|
309
|
+
* `unrelate`, `purgeObject`, `purgeSubject`) por el servicio
|
|
310
|
+
* `authz.relations`, con las MISMAS garantías que `hooks.onWrite`
|
|
311
|
+
* (2.4.0-alpha.3): se llama cuando el driver vuelve, con el `actor` ya
|
|
312
|
+
* validado; si lanza (sync o async) se registra y NO tumba la escritura
|
|
313
|
+
* ya aplicada; con `{ transaction }` el evento lleva `transactional:
|
|
314
|
+
* true`; y una escritura que vence el deadline notifica `indeterminate:
|
|
315
|
+
* true` ANTES de propagar el 503 (invariante 13). Ver `RelationWriteEvent`.
|
|
316
|
+
*/
|
|
317
|
+
onRelationWrite?: (event: RelationWriteEvent) => void | Promise<void>;
|
|
318
|
+
/**
|
|
319
|
+
* `actor` obligatorio en las CUATRO escrituras de relaciones — purgas
|
|
320
|
+
* incluidas desde 2.4.0-alpha.3 — solo para este puerto. Default: el
|
|
321
|
+
* `requireActor` del raíz (`relations.requireActor ?? requireActor`, el
|
|
322
|
+
* MISMO patrón que `requireTransactionalWrites`): sin declararlo se
|
|
323
|
+
* hereda; `true` aquí lo exige aunque el raíz no; `false` aquí lo anula
|
|
324
|
+
* aunque el raíz lo exija (el opt-out explícito por puerto).
|
|
325
|
+
*/
|
|
326
|
+
requireActor?: boolean;
|
|
327
|
+
};
|
|
134
328
|
/**
|
|
135
329
|
* Hooks del consumidor. `onWrite` se llama tras cada escritura del motor
|
|
136
330
|
* (grant/extended/revoke/deny/removeDeny/scope_purged) — el sitio natural
|
|
@@ -145,5 +339,14 @@ export interface AuthorizationConfig {
|
|
|
145
339
|
onCatalogWrite?: (event: AuthzCatalogWriteEvent) => Promise<void>;
|
|
146
340
|
};
|
|
147
341
|
}
|
|
342
|
+
/**
|
|
343
|
+
* **La clave del driver de RELACIONES activo** (2.4.0-alpha.10): `relations.default`
|
|
344
|
+
* y, si falta, el `default` de roles — las relaciones cambian de driver con él.
|
|
345
|
+
* UN solo sitio para esta regla: la usan el provider (qué driver sirve
|
|
346
|
+
* `services/relations`) y el guard de la dirección rancia de
|
|
347
|
+
* `authz:relations:reconcile` (qué destino es el activo). Dos copias eran dos
|
|
348
|
+
* respuestas.
|
|
349
|
+
*/
|
|
350
|
+
export declare function activeRelationsDriverKey(config: Pick<AuthorizationConfig, 'default' | 'relations'>): string;
|
|
148
351
|
export declare function defineConfig<T extends AuthorizationConfig>(config: T): T;
|
|
149
352
|
//# sourceMappingURL=define_config.d.ts.map
|