@jantstack/adonis-authz 1.1.0 → 2.0.0-alpha.1
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/LICENSE +1 -1
- package/README.md +417 -58
- package/build/commands/authz_catalog_diff.d.ts +28 -0
- package/build/commands/authz_catalog_diff.d.ts.map +1 -0
- package/build/commands/authz_catalog_diff.js +67 -0
- package/build/commands/authz_catalog_diff.js.map +1 -0
- package/build/commands/authz_catalog_sync.d.ts +20 -0
- package/build/commands/authz_catalog_sync.d.ts.map +1 -0
- package/build/commands/authz_catalog_sync.js +58 -0
- package/build/commands/authz_catalog_sync.js.map +1 -0
- package/build/commands/main.d.ts +2 -0
- package/build/commands/main.d.ts.map +1 -1
- package/build/commands/main.js +2 -0
- package/build/commands/main.js.map +1 -1
- package/build/commands/openfga_import.d.ts +8 -2
- package/build/commands/openfga_import.d.ts.map +1 -1
- package/build/commands/openfga_import.js +29 -6
- package/build/commands/openfga_import.js.map +1 -1
- package/build/commands/openfga_provision.d.ts.map +1 -1
- package/build/commands/openfga_provision.js +2 -1
- package/build/commands/openfga_provision.js.map +1 -1
- package/build/index.d.ts +45 -6
- package/build/index.d.ts.map +1 -1
- package/build/index.js +37 -4
- package/build/index.js.map +1 -1
- package/build/src/catalog.d.ts +249 -2
- package/build/src/catalog.d.ts.map +1 -1
- package/build/src/catalog.js +709 -59
- package/build/src/catalog.js.map +1 -1
- package/build/src/catalog_cache.d.ts +300 -0
- package/build/src/catalog_cache.d.ts.map +1 -0
- package/build/src/catalog_cache.js +656 -0
- package/build/src/catalog_cache.js.map +1 -0
- package/build/src/clock.d.ts +24 -0
- package/build/src/clock.d.ts.map +1 -0
- package/build/src/clock.js +7 -0
- package/build/src/clock.js.map +1 -0
- package/build/src/define_config.d.ts +102 -6
- package/build/src/define_config.d.ts.map +1 -1
- package/build/src/define_config.js.map +1 -1
- package/build/src/drivers/backend_guard.d.ts +92 -0
- package/build/src/drivers/backend_guard.d.ts.map +1 -0
- package/build/src/drivers/backend_guard.js +221 -0
- package/build/src/drivers/backend_guard.js.map +1 -0
- package/build/src/drivers/database_driver.d.ts +242 -15
- package/build/src/drivers/database_driver.d.ts.map +1 -1
- package/build/src/drivers/database_driver.js +692 -127
- package/build/src/drivers/database_driver.js.map +1 -1
- package/build/src/drivers/openfga_driver.d.ts +341 -27
- package/build/src/drivers/openfga_driver.d.ts.map +1 -1
- package/build/src/drivers/openfga_driver.js +1020 -271
- package/build/src/drivers/openfga_driver.js.map +1 -1
- package/build/src/drivers/sql_expiry.d.ts +53 -0
- package/build/src/drivers/sql_expiry.d.ts.map +1 -0
- package/build/src/drivers/sql_expiry.js +66 -0
- package/build/src/drivers/sql_expiry.js.map +1 -0
- package/build/src/errors.d.ts +333 -0
- package/build/src/errors.d.ts.map +1 -1
- package/build/src/errors.js +352 -0
- package/build/src/errors.js.map +1 -1
- package/build/src/expiry.d.ts +27 -0
- package/build/src/expiry.d.ts.map +1 -0
- package/build/src/expiry.js +50 -0
- package/build/src/expiry.js.map +1 -0
- package/build/src/hierarchical_resolver.d.ts +56 -0
- package/build/src/hierarchical_resolver.d.ts.map +1 -0
- package/build/src/hierarchical_resolver.js +87 -0
- package/build/src/hierarchical_resolver.js.map +1 -0
- package/build/src/identity.d.ts +155 -0
- package/build/src/identity.d.ts.map +1 -0
- package/build/src/identity.js +359 -0
- package/build/src/identity.js.map +1 -0
- package/build/src/manager.d.ts +225 -7
- package/build/src/manager.d.ts.map +1 -1
- package/build/src/manager.js +1670 -23
- package/build/src/manager.js.map +1 -1
- package/build/src/memoize_ancestors.d.ts +23 -0
- package/build/src/memoize_ancestors.d.ts.map +1 -0
- package/build/src/memoize_ancestors.js +42 -0
- package/build/src/memoize_ancestors.js.map +1 -0
- package/build/src/middleware/app_access_middleware.d.ts +8 -6
- package/build/src/middleware/app_access_middleware.d.ts.map +1 -1
- package/build/src/middleware/app_access_middleware.js +10 -26
- package/build/src/middleware/app_access_middleware.js.map +1 -1
- package/build/src/models/authz_assignment.d.ts +5 -5
- package/build/src/models/authz_assignment.d.ts.map +1 -1
- package/build/src/models/authz_deny.d.ts +5 -5
- package/build/src/models/authz_deny.d.ts.map +1 -1
- package/build/src/models/authz_permission.d.ts +11 -5
- package/build/src/models/authz_permission.d.ts.map +1 -1
- package/build/src/models/authz_permission.js +4 -0
- package/build/src/models/authz_permission.js.map +1 -1
- package/build/src/models/authz_role.d.ts +13 -6
- package/build/src/models/authz_role.d.ts.map +1 -1
- package/build/src/models/authz_role.js +6 -1
- package/build/src/models/authz_role.js.map +1 -1
- package/build/src/models/authz_role_permission.d.ts +5 -5
- package/build/src/models/authz_role_permission.d.ts.map +1 -1
- package/build/src/openfga.d.ts +13 -0
- package/build/src/openfga.d.ts.map +1 -0
- package/build/src/openfga.js +12 -0
- package/build/src/openfga.js.map +1 -0
- package/build/src/sql_descendants.d.ts +51 -0
- package/build/src/sql_descendants.d.ts.map +1 -0
- package/build/src/sql_descendants.js +129 -0
- package/build/src/sql_descendants.js.map +1 -0
- package/build/src/testing/contract.d.ts +138 -7
- package/build/src/testing/contract.d.ts.map +1 -1
- package/build/src/testing/contract.js +2946 -24
- package/build/src/testing/contract.js.map +1 -1
- package/build/src/testing/main.d.ts +4 -2
- package/build/src/testing/main.d.ts.map +1 -1
- package/build/src/testing/main.js +2 -1
- package/build/src/testing/main.js.map +1 -1
- package/build/src/testing/scope_tree.d.ts +65 -0
- package/build/src/testing/scope_tree.d.ts.map +1 -0
- package/build/src/testing/scope_tree.js +145 -0
- package/build/src/testing/scope_tree.js.map +1 -0
- package/build/src/traits/authz_scopes.d.ts +30 -6
- package/build/src/traits/authz_scopes.d.ts.map +1 -1
- package/build/src/traits/authz_scopes.js +30 -18
- package/build/src/traits/authz_scopes.js.map +1 -1
- package/build/src/traits/has_uuid.d.ts +5 -5
- package/build/src/traits/has_uuid.d.ts.map +1 -1
- package/build/src/types.d.ts +530 -28
- package/build/src/types.d.ts.map +1 -1
- package/build/src/types.js +10 -4
- package/build/src/types.js.map +1 -1
- package/build/stubs/config/app_acl.stub +4 -2
- package/build/stubs/config/authorization.stub +66 -12
- package/build/stubs/migration.stub +57 -13
- package/package.json +11 -6
package/build/src/catalog.d.ts
CHANGED
|
@@ -1,3 +1,250 @@
|
|
|
1
|
-
import type { CatalogSpec } from './types.js';
|
|
2
|
-
|
|
1
|
+
import type { CatalogRoleRef, CatalogSpec, ScopeChainResolver, ScopeType } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* `assignableAt` de un permiso tal como se GUARDA (`authz_permissions.assignable_at`):
|
|
4
|
+
* JSON ordenado y sin duplicados, o `null` = cualquier nivel. Ordenado para
|
|
5
|
+
* que dos specs equivalentes sean la misma cadena (el sync compara texto).
|
|
6
|
+
*/
|
|
7
|
+
export declare function encodeAssignableAt(levels: ScopeType[] | undefined): string | null;
|
|
8
|
+
/**
|
|
9
|
+
* `assignable_at` tal como está EN LA BASE, normalizado a la forma en la que
|
|
10
|
+
* el spec lo codifica (3D · N5): es lo que permite que el sync y el diff
|
|
11
|
+
* comparen lo mismo. Hasta aquí el sync comparaba la cadena cruda y el diff
|
|
12
|
+
* la lista parseada, así que un valor desordenado a mano (`["unit","app"]`)
|
|
13
|
+
* salía «en sync» y el sync lo reescribía. Un valor CORRUPTO no lanza aquí:
|
|
14
|
+
* cuenta como distinto, para que el sync lo repare en vez de atragantarse
|
|
15
|
+
* (leerlo sí es 500, `parseAssignableAt`).
|
|
16
|
+
*/
|
|
17
|
+
export declare function storedAssignableAt(slug: string, raw: unknown): string | null;
|
|
18
|
+
/** Marca de `storedAssignableAt` para una fila que no se puede leer (3D · N5). */
|
|
19
|
+
export declare const CORRUPT_ASSIGNABLE_AT = "\0corrupto";
|
|
20
|
+
/** Un rol de nivel `scopeType` que lleva `permission` con esos `levels` (o `null`): legal, o 422 `E_AUTHZ_ROLE_NOT_ASSIGNABLE_AT`. */
|
|
21
|
+
export declare function assertAssignableAt(role: {
|
|
22
|
+
slug: string;
|
|
23
|
+
scopeType: ScopeType;
|
|
24
|
+
}, permission: string, levels: readonly ScopeType[] | null): void;
|
|
25
|
+
/**
|
|
26
|
+
* Longitud de `authz_permissions.assignable_at` (`varchar(500)` en el stub y
|
|
27
|
+
* en el espejo). El JSON codificado tiene que caber (3D · N3).
|
|
28
|
+
*/
|
|
29
|
+
export declare const ASSIGNABLE_AT_MAX = 500;
|
|
30
|
+
/** Deadline de cada consulta del catálogo (D15); configurable por `timeoutMs`. */
|
|
31
|
+
export declare const DEFAULT_CATALOG_TIMEOUT_MS = 5000;
|
|
32
|
+
/**
|
|
33
|
+
* Lo que un `syncAuthzCatalog` deja DICHO (3E · P1 b / P6). El sync del
|
|
34
|
+
* despliegue es todo-o-nada para lo que ESCRIBE, pero no puede abortar por
|
|
35
|
+
* lo que un tenant hizo en su scope: hasta 3E, un rol local homónimo tumbaba
|
|
36
|
+
* el catálogo entero de la plataforma (auditor A1: el actor de menor
|
|
37
|
+
* privilegio del sistema paraba el deploy). La política es **reportar y
|
|
38
|
+
* seguir**, nunca romper en silencio: se escribe el global —los globales
|
|
39
|
+
* ganan— y aquí queda quién se ve afectado.
|
|
40
|
+
*/
|
|
41
|
+
export interface CatalogSyncReport {
|
|
42
|
+
/**
|
|
43
|
+
* Roles LOCALES cuyo `(slug, nivel)` acaba de ocupar un rol GLOBAL del
|
|
44
|
+
* spec (3E · P1 b). El global manda; el local sigue en la base pero desde
|
|
45
|
+
* ya toda ruta por slug en su cadena es 422 `E_AUTHZ_AMBIGUOUS_ROLE` (M1,
|
|
46
|
+
* fail-closed): su tenant tiene que direccionar por `{ uuid }` o pedir que
|
|
47
|
+
* lo purguen. `authz:catalog:diff` los lista y sale con código ≠ 0.
|
|
48
|
+
*/
|
|
49
|
+
shadowedByGlobal: CatalogRoleRef[];
|
|
50
|
+
/**
|
|
51
|
+
* Vínculos rol→permiso que YA existían y que el `assignableAt` nuevo del
|
|
52
|
+
* config ya no admite (3E · P6): estrechar `assignableAt` no revalidaba
|
|
53
|
+
* los roles que ya llevaban el permiso —ni el diff los mencionaba—, así
|
|
54
|
+
* que la restricción entraba a medias y en silencio. No se borran (lo
|
|
55
|
+
* asignado sigue concediendo, invariante 1): se reportan para que el
|
|
56
|
+
* operador decida (`updateScopedRole`, `deleteScopedRole` o ampliar el
|
|
57
|
+
* `assignableAt`).
|
|
58
|
+
*/
|
|
59
|
+
assignableAtViolations: Array<{
|
|
60
|
+
role: CatalogRoleRef;
|
|
61
|
+
permission: string;
|
|
62
|
+
}>;
|
|
63
|
+
}
|
|
64
|
+
export interface SyncCatalogOptions {
|
|
65
|
+
/**
|
|
66
|
+
* Qué hacer con los vínculos rol→permiso que el spec YA NO lista, para los
|
|
67
|
+
* roles DEL SPEC (L0.9). `'links'` (default): se eliminan en la misma
|
|
68
|
+
* transacción. `'none'`: sync solo aditivo (el comportamiento de 1.x).
|
|
69
|
+
* Nunca se borran roles ni permisos, y los roles ajenos al spec no se
|
|
70
|
+
* tocan: dos catálogos (plataforma y tenant) coexisten.
|
|
71
|
+
*/
|
|
72
|
+
prune?: 'links' | 'none';
|
|
73
|
+
/**
|
|
74
|
+
* Deadline de cada consulta en ms (default 5000). La base caída o lenta
|
|
75
|
+
* es 503 `E_AUTHZ_BACKEND_UNAVAILABLE`/`_TIMEOUT`, no un error crudo del
|
|
76
|
+
* cliente SQL: el sync corre en el arranque de un despliegue (D15).
|
|
77
|
+
*/
|
|
78
|
+
timeoutMs?: number;
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Sincroniza un catálogo (roles + permisos + vínculos) a las tablas `authz_*`.
|
|
82
|
+
*
|
|
83
|
+
* Idempotente y transaccional. Permisos y roles se crean si faltan (nunca se
|
|
84
|
+
* borran: la limpieza de un rol o permiso retirado es una decisión explícita
|
|
85
|
+
* del consumidor, porque arrastra asignaciones). Los vínculos rol→permiso
|
|
86
|
+
* son la excepción: con `prune: 'links'` (default) el spec MANDA sobre los
|
|
87
|
+
* roles que declara. Antes el sync era solo aditivo y quitar un permiso de
|
|
88
|
+
* un rol en el config no lo quitaba de ningún entorno — la única fuente de
|
|
89
|
+
* verdad visible mentía sobre los permisos efectivos (L0.9, N1).
|
|
90
|
+
*
|
|
91
|
+
* Un rol que concede un permiso que no existe ni en este spec ni en la base
|
|
92
|
+
* (sincronizado por otro catálogo) es 422 `E_AUTHZ_UNKNOWN_PERMISSION`:
|
|
93
|
+
* antes se saltaba en silencio.
|
|
94
|
+
*
|
|
95
|
+
* Lo usan el seeder del nivel app, `authz:catalog:sync` y el harness de la
|
|
96
|
+
* suite de contrato. El catálogo es metadata compartida entre drivers: un
|
|
97
|
+
* driver externo (openfga) materializa aparte solo los hechos.
|
|
98
|
+
*/
|
|
99
|
+
export declare function syncAuthzCatalog(catalog: CatalogSpec, options?: SyncCatalogOptions): Promise<CatalogSyncReport>;
|
|
100
|
+
export interface CatalogLinkRef {
|
|
101
|
+
role: string;
|
|
102
|
+
scopeType: ScopeType;
|
|
103
|
+
permission: string;
|
|
104
|
+
}
|
|
105
|
+
export interface CatalogDiff {
|
|
106
|
+
/** Permisos del spec que no existen en la base. */
|
|
107
|
+
missingPermissions: string[];
|
|
108
|
+
/** Roles del spec que no existen en la base. */
|
|
109
|
+
missingRoles: Array<{
|
|
110
|
+
slug: string;
|
|
111
|
+
scopeType: ScopeType;
|
|
112
|
+
}>;
|
|
113
|
+
/** Vínculos que el spec declara y la base no tiene. */
|
|
114
|
+
missingLinks: CatalogLinkRef[];
|
|
115
|
+
/** Vínculos que la base tiene, en roles DEL SPEC, y el spec ya no lista (privilegio zombi). */
|
|
116
|
+
extraLinks: CatalogLinkRef[];
|
|
117
|
+
/** Roles cuyo rank en la base difiere del spec. */
|
|
118
|
+
rankMismatches: Array<{
|
|
119
|
+
role: string;
|
|
120
|
+
scopeType: ScopeType;
|
|
121
|
+
expected: number;
|
|
122
|
+
actual: number;
|
|
123
|
+
}>;
|
|
124
|
+
/**
|
|
125
|
+
* Permisos del spec cuyo `assignableAt` en la base difiere (3B · B5):
|
|
126
|
+
* `null` = cualquier nivel. `corrupt: true` (3E · P5) es una fila que no
|
|
127
|
+
* se puede leer (`assignable_at` que no es JSON de niveles): cuenta como
|
|
128
|
+
* diferencia —el sync la repara— y el diff la nombra en vez de morir.
|
|
129
|
+
*/
|
|
130
|
+
assignableAtMismatches: Array<{
|
|
131
|
+
permission: string;
|
|
132
|
+
expected: ScopeType[] | null;
|
|
133
|
+
actual: ScopeType[] | null;
|
|
134
|
+
corrupt?: boolean;
|
|
135
|
+
}>;
|
|
136
|
+
/**
|
|
137
|
+
* Roles LOCALES (3B): propios de un scope, definidos con `defineScopedRole`.
|
|
138
|
+
* Informativo: no son sobrantes ni faltantes (el spec solo declara
|
|
139
|
+
* globales) y no afectan a `catalogInSync`.
|
|
140
|
+
*/
|
|
141
|
+
scopedRoles: Array<{
|
|
142
|
+
slug: string;
|
|
143
|
+
scopeType: ScopeType;
|
|
144
|
+
owner: string;
|
|
145
|
+
}>;
|
|
146
|
+
/**
|
|
147
|
+
* `(slug, nivel)` con MÁS DE UN rol visible desde una misma cadena que la
|
|
148
|
+
* AUTORIDAD no sabe ordenar (3D · M2 d; 3F · S3). Desde 3F, la pareja
|
|
149
|
+
* global+local va a `shadowedByGlobal` y la de ancestro+descendiente a
|
|
150
|
+
* `shadowedByAncestor` —las dos son el orden de autoridad funcionando, no
|
|
151
|
+
* deriva—, así que aquí solo queda lo que NINGUNA regla ordena: dos
|
|
152
|
+
* locales que se declaran ancestro el uno del otro (un `resolveChain` con
|
|
153
|
+
* un ciclo o que se contradice). Eso sí es deriva REAL —`catalogInSync` es
|
|
154
|
+
* `false` y el comando sale con código ≠ 0—: mientras dure, toda ruta por
|
|
155
|
+
* slug ahí responde 422 `E_AUTHZ_AMBIGUOUS_ROLE` (M1) y el operador tiene
|
|
156
|
+
* que PURGAR uno (un rol local no se renombra: 3E · Q1). Las parejas de
|
|
157
|
+
* locales solo se juzgan con `resolveChain` (el árbol es del consumidor):
|
|
158
|
+
* sin resolutor se dice en el informe.
|
|
159
|
+
*/
|
|
160
|
+
ambiguousRoles: Array<{
|
|
161
|
+
slug: string;
|
|
162
|
+
scopeType: ScopeType;
|
|
163
|
+
owners: string[];
|
|
164
|
+
}>;
|
|
165
|
+
/**
|
|
166
|
+
* Roles LOCALES ensombrecidos por un rol GLOBAL homónimo: el del spec que
|
|
167
|
+
* el sync va a escribir (3E · P1 b) o uno que ya está en la base. **No es
|
|
168
|
+
* deriva** desde 3F · S3: es el orden de AUTORIDAD funcionando (global >
|
|
169
|
+
* local), igual que `shadowedByAncestor`. Se listan para que el operador
|
|
170
|
+
* los vea —mientras duren, ese slug es 422 `E_AUTHZ_AMBIGUOUS_ROLE` en la
|
|
171
|
+
* cadena de esos owners y se opera por `{ uuid }`—, pero no dejan el gate
|
|
172
|
+
* de CI en rojo: un tenant que ocupa un nombre no puede parar el deploy de
|
|
173
|
+
* la plataforma, ni siquiera por la vía del `exit 1` (auditor N1).
|
|
174
|
+
*/
|
|
175
|
+
shadowedByGlobal: Array<{
|
|
176
|
+
slug: string;
|
|
177
|
+
scopeType: ScopeType;
|
|
178
|
+
owner: string;
|
|
179
|
+
}>;
|
|
180
|
+
/**
|
|
181
|
+
* Roles LOCALES ensombrecidos por otro LOCAL homónimo cuyo owner es un
|
|
182
|
+
* ANCESTRO suyo (3F · S3): el dueño del árbol definió el suyo y el del
|
|
183
|
+
* descendiente queda tapado dentro de su propio subárbol. Como
|
|
184
|
+
* `shadowedByGlobal`: se lista, no es deriva.
|
|
185
|
+
*/
|
|
186
|
+
shadowedByAncestor: Array<{
|
|
187
|
+
slug: string;
|
|
188
|
+
scopeType: ScopeType;
|
|
189
|
+
owner: string;
|
|
190
|
+
shadowedBy: string;
|
|
191
|
+
}>;
|
|
192
|
+
/**
|
|
193
|
+
* Vínculos rol→permiso vivos que el `assignableAt` del spec ya no admite
|
|
194
|
+
* (3E · P6), en roles que el sync no toca (locales y globales de otro
|
|
195
|
+
* catálogo). El sync los reporta igual; el diff los dice antes.
|
|
196
|
+
*/
|
|
197
|
+
assignableAtViolations: Array<{
|
|
198
|
+
role: string;
|
|
199
|
+
scopeType: ScopeType;
|
|
200
|
+
owner: string;
|
|
201
|
+
permission: string;
|
|
202
|
+
}>;
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Compara un spec con lo que hay en `authz_*`, sin escribir. Igual que el
|
|
206
|
+
* sync, solo mira los roles del spec: lo ajeno (otro catálogo) no es una
|
|
207
|
+
* diferencia. Un diff limpio significa que `syncAuthzCatalog(spec)` sería un
|
|
208
|
+
* no-op.
|
|
209
|
+
*/
|
|
210
|
+
export declare function diffAuthzCatalog(catalog: CatalogSpec, options?: {
|
|
211
|
+
timeoutMs?: number;
|
|
212
|
+
resolveChain?: ScopeChainResolver;
|
|
213
|
+
}): Promise<CatalogDiff>;
|
|
214
|
+
export declare function catalogInSync(diff: CatalogDiff): boolean;
|
|
215
|
+
/** Líneas legibles del diff (vacío si está en sync). */
|
|
216
|
+
export declare function formatCatalogDiff(diff: CatalogDiff): string[];
|
|
217
|
+
/** Líneas informativas del diff (no son diferencias): los roles locales, propios de un scope. */
|
|
218
|
+
export declare function formatScopedRoles(diff: CatalogDiff): string[];
|
|
219
|
+
/**
|
|
220
|
+
* Líneas informativas del diff (3F · S3): los roles locales ENSOMBRECIDOS
|
|
221
|
+
* por una definición más autorizada —un global, o un local de un ancestro—.
|
|
222
|
+
* No son deriva: es el orden de autoridad funcionando. Se listan porque
|
|
223
|
+
* mientras duren, ese slug es 422 `E_AUTHZ_AMBIGUOUS_ROLE` en la cadena de
|
|
224
|
+
* su owner y hay que operar por `{ uuid }` (o purgar uno de los dos).
|
|
225
|
+
*/
|
|
226
|
+
export declare function formatShadowedRoles(diff: CatalogDiff): string[];
|
|
227
|
+
/** Fábricas de catálogo tal como se declaran en `config.catalogs`. */
|
|
228
|
+
export type CatalogSource = () => Promise<CatalogSpec> | CatalogSpec;
|
|
229
|
+
/**
|
|
230
|
+
* El diff de TODOS los catálogos del config. `inSync: false` ⇒ el comando
|
|
231
|
+
* sale con código ≠ 0 (para CI). Separado del comando para poder probarlo
|
|
232
|
+
* sin un kernel de ace.
|
|
233
|
+
*/
|
|
234
|
+
export declare function runCatalogDiff(catalogs: CatalogSource[], options?: {
|
|
235
|
+
resolveChain?: ScopeChainResolver;
|
|
236
|
+
failOnShadows?: boolean;
|
|
237
|
+
}): Promise<{
|
|
238
|
+
inSync: boolean;
|
|
239
|
+
lines: string[];
|
|
240
|
+
}>;
|
|
241
|
+
/**
|
|
242
|
+
* Sincroniza todos los catálogos del config, en orden (lo que hace
|
|
243
|
+
* `authz:catalog:sync`). Devuelve cuántos y lo que hay que DECIR (3E · P1 b
|
|
244
|
+
* / P6): el comando lo imprime como aviso — reportar y seguir, nunca romper
|
|
245
|
+
* en silencio.
|
|
246
|
+
*/
|
|
247
|
+
export declare function syncCatalogs(catalogs: CatalogSource[], options?: SyncCatalogOptions): Promise<{
|
|
248
|
+
count: number;
|
|
249
|
+
} & CatalogSyncReport>;
|
|
3
250
|
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/catalog.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/catalog.ts"],"names":[],"mappings":"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"}
|