@jantstack/adonis-authz 2.4.0-alpha.3 → 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 +92 -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 +16 -13
- package/build/commands/main.d.ts.map +1 -1
- package/build/commands/main.js +59 -11
- package/build/commands/main.js.map +1 -1
- package/build/commands/openfga_provision.d.ts +49 -3
- package/build/commands/openfga_provision.d.ts.map +1 -1
- package/build/commands/openfga_provision.js +72 -7
- package/build/commands/openfga_provision.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 +4 -2
- package/build/src/drivers/openfga_driver.d.ts.map +1 -1
- package/build/src/drivers/openfga_driver.js +38 -5
- 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 +106 -5
- package/build/src/manager.d.ts.map +1 -1
- package/build/src/manager.js +425 -26
- package/build/src/manager.js.map +1 -1
- package/build/src/relations/manager.d.ts +13 -1
- package/build/src/relations/manager.d.ts.map +1 -1
- package/build/src/relations/manager.js +15 -1
- package/build/src/relations/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/sql_descendants.d.ts +8 -0
- package/build/src/sql_descendants.d.ts.map +1 -1
- package/build/src/sql_descendants.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 +255 -18
- package/build/src/types.d.ts.map +1 -1
- package/build/src/types.js +51 -0
- package/build/src/types.js.map +1 -1
- package/package.json +1 -1
|
@@ -16,4 +16,6 @@ export { runRelationsDriverContract, registerRelationsDriverContract, makeRelati
|
|
|
16
16
|
export type { RelationsDriverContractHarness, RelationsContractTransactions, MakeRelationsDriverOptions, } from './relations_contract.js';
|
|
17
17
|
export { runRelationsReconcileContract, registerRelationsReconcileContract, } from './relations_reconcile_contract.js';
|
|
18
18
|
export type { RelationsReconcileHarness } from './relations_reconcile_contract.js';
|
|
19
|
+
export { runScopeOutboxContract, registerScopeOutboxContract, makeScopeOutbox, SCOPE_OUTBOX_CAPABILITY_KEYS, } from './scope_outbox_contract.js';
|
|
20
|
+
export type { ScopeOutboxCapabilities, ScopeOutboxContractHarness, ScopeOutboxContractTransactions, MakeScopeOutboxOptions, } from './scope_outbox_contract.js';
|
|
19
21
|
//# sourceMappingURL=main.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/testing/main.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AACzF,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACnH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACpF,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,wBAAwB,GACzB,MAAM,yBAAyB,CAAA;AAChC,YAAY,EACV,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,YAAY,GACb,MAAM,yBAAyB,CAAA;AAChC,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,yBAAyB,CAAA;AAChC,YAAY,EACV,8BAA8B,EAC9B,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,6BAA6B,EAC7B,kCAAkC,GACnC,MAAM,mCAAmC,CAAA;AAC1C,YAAY,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA"}
|
|
1
|
+
{"version":3,"file":"main.d.ts","sourceRoot":"","sources":["../../../src/testing/main.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AACzF,YAAY,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,eAAe,CAAA;AACnH,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACpF,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,wBAAwB,GACzB,MAAM,yBAAyB,CAAA;AAChC,YAAY,EACV,wBAAwB,EACxB,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,gBAAgB,EAChB,YAAY,GACb,MAAM,yBAAyB,CAAA;AAChC,YAAY,EAAE,iBAAiB,EAAE,MAAM,iBAAiB,CAAA;AACxD,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,yBAAyB,CAAA;AAChC,YAAY,EACV,8BAA8B,EAC9B,6BAA6B,EAC7B,0BAA0B,GAC3B,MAAM,yBAAyB,CAAA;AAChC,OAAO,EACL,6BAA6B,EAC7B,kCAAkC,GACnC,MAAM,mCAAmC,CAAA;AAC1C,YAAY,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAA;AAClF,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,eAAe,EACf,4BAA4B,GAC7B,MAAM,4BAA4B,CAAA;AACnC,YAAY,EACV,uBAAuB,EACvB,0BAA0B,EAC1B,+BAA+B,EAC/B,sBAAsB,GACvB,MAAM,4BAA4B,CAAA"}
|
|
@@ -11,4 +11,5 @@ export { memoryScopeTree, resolveChainFrom, descendantsFrom } from './scope_tree
|
|
|
11
11
|
export { runMigrationContract, registerMigrationContract, runMigrationDirection, makeMigrationSeed, migrationQuestions, plantMigrationFacts, plantMigrationTree, MIGRATION_CATALOG, MIGRATION_PERMISSIONS, MIGRATION_ROLES, MIGRATION_QUESTION_COUNT, } from './migration_contract.js';
|
|
12
12
|
export { runRelationsDriverContract, registerRelationsDriverContract, makeRelationsDriver, contractRelationsConfig, RELATIONS_HOLDER_TYPES, lucidRelationsContractTransactions, } from './relations_contract.js';
|
|
13
13
|
export { runRelationsReconcileContract, registerRelationsReconcileContract, } from './relations_reconcile_contract.js';
|
|
14
|
+
export { runScopeOutboxContract, registerScopeOutboxContract, makeScopeOutbox, SCOPE_OUTBOX_CAPABILITY_KEYS, } from './scope_outbox_contract.js';
|
|
14
15
|
//# sourceMappingURL=main.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/testing/main.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AAEzF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACpF,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,wBAAwB,GACzB,MAAM,yBAAyB,CAAA;AAUhC,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,yBAAyB,CAAA;AAMhC,OAAO,EACL,6BAA6B,EAC7B,kCAAkC,GACnC,MAAM,mCAAmC,CAAA"}
|
|
1
|
+
{"version":3,"file":"main.js","sourceRoot":"","sources":["../../../src/testing/main.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,eAAe,CAAA;AAEzF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAA;AACpF,OAAO,EACL,oBAAoB,EACpB,yBAAyB,EACzB,qBAAqB,EACrB,iBAAiB,EACjB,kBAAkB,EAClB,mBAAmB,EACnB,kBAAkB,EAClB,iBAAiB,EACjB,qBAAqB,EACrB,eAAe,EACf,wBAAwB,GACzB,MAAM,yBAAyB,CAAA;AAUhC,OAAO,EACL,0BAA0B,EAC1B,+BAA+B,EAC/B,mBAAmB,EACnB,uBAAuB,EACvB,sBAAsB,EACtB,kCAAkC,GACnC,MAAM,yBAAyB,CAAA;AAMhC,OAAO,EACL,6BAA6B,EAC7B,kCAAkC,GACnC,MAAM,mCAAmC,CAAA;AAE1C,OAAO,EACL,sBAAsB,EACtB,2BAA2B,EAC3B,eAAe,EACf,4BAA4B,GAC7B,MAAM,4BAA4B,CAAA"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
import type { ScopeOutbox } from '../types.js';
|
|
2
|
+
import type { ContractTestApi } from './contract.js';
|
|
3
|
+
/**
|
|
4
|
+
* Lo que una outbox DECLARA. Cada clave es un par: la cara `true` juzga el
|
|
5
|
+
* deber, la `false` juzga la ausencia (el manager lo dice, o la
|
|
6
|
+
* implementación degrada hacia lo seguro).
|
|
7
|
+
*/
|
|
8
|
+
export interface ScopeOutboxCapabilities {
|
|
9
|
+
/**
|
|
10
|
+
* `enqueue` escribe por `context.transaction`: un rollback del llamante no
|
|
11
|
+
* deja intención ninguna, un commit sí. Es TODO el mecanismo de la
|
|
12
|
+
* mitigación (README, «The tree outbox»). Exige `transactions` en el
|
|
13
|
+
* harness. `false` = la implementación ignora la transacción (un doble en
|
|
14
|
+
* memoria): la cara juzga solo que encolar sin transacción funciona, y la
|
|
15
|
+
* mitigación queda APAGADA — dilo en tu README.
|
|
16
|
+
*/
|
|
17
|
+
transactionalEnqueue: boolean;
|
|
18
|
+
/** `pending(limit, after, { ids })` filtra EN EL PUERTO (alpha.5 · R1). `false` ⇒ el manager corta `only` con 500. */
|
|
19
|
+
filter: boolean;
|
|
20
|
+
/** `markFailed(id, error, { transient: true })` NO cuenta el intento (alpha.5 · R2a). `false` ⇒ cuenta siempre (lo de alpha.4). */
|
|
21
|
+
transient: boolean;
|
|
22
|
+
/** `dead()` existe: tras `limits.maxAttempts` fallos la entrada sale de `pending()` y entra en `dead()` (3b-2h). */
|
|
23
|
+
dead: boolean;
|
|
24
|
+
/** `acquire()` existe: lease SOSTENIDO y exclusivo (3b-2h · 🟠 4). `false` ⇒ el relay corre sin lease y lo dice el README. */
|
|
25
|
+
acquire: boolean;
|
|
26
|
+
/** `earlierPending(id, scopes)` existe (alpha.5 · R1). `false` ⇒ el manager pagina `pending()` y el veredicto es el mismo. */
|
|
27
|
+
earlierPending: boolean;
|
|
28
|
+
/** `requeue(ids)` Y `laterApplied(id, scopes, limit)` existen (alpha.5 · R2b). Exige `dead: true`. `false` ⇒ `requeueScopeChanges` es 500. */
|
|
29
|
+
requeue: boolean;
|
|
30
|
+
}
|
|
31
|
+
export declare const SCOPE_OUTBOX_CAPABILITY_KEYS: ReadonlyArray<keyof ScopeOutboxCapabilities>;
|
|
32
|
+
export interface ScopeOutboxContractHarness {
|
|
33
|
+
name: string;
|
|
34
|
+
capabilities: ScopeOutboxCapabilities;
|
|
35
|
+
/** Una outbox FRESCA por caso, sobre una cola VACÍA (el harness la vacía en `cleanup`). */
|
|
36
|
+
makeOutbox(): ScopeOutbox | Promise<ScopeOutbox>;
|
|
37
|
+
/** Vacía la cola antes de cada caso. */
|
|
38
|
+
cleanup?(): Promise<void>;
|
|
39
|
+
/**
|
|
40
|
+
* Con `dead: true` (y por tanto `requeue: true`): el `maxAttempts` con el
|
|
41
|
+
* que está construida la outbox, ≥ 3 (los casos cuentan dos fallos sin
|
|
42
|
+
* aparcar y luego aparcan de verdad).
|
|
43
|
+
*/
|
|
44
|
+
limits?: {
|
|
45
|
+
maxAttempts?: number;
|
|
46
|
+
};
|
|
47
|
+
/** Con `transactionalEnqueue: true`: cómo abre el juez una transacción de LA CONEXIÓN de la outbox. */
|
|
48
|
+
transactions?: ScopeOutboxContractTransactions;
|
|
49
|
+
}
|
|
50
|
+
/** Ver `ScopeOutboxContractHarness.transactions`. */
|
|
51
|
+
export interface ScopeOutboxContractTransactions {
|
|
52
|
+
begin(): Promise<{
|
|
53
|
+
client: unknown;
|
|
54
|
+
commit(): Promise<unknown>;
|
|
55
|
+
rollback(): Promise<unknown>;
|
|
56
|
+
}>;
|
|
57
|
+
}
|
|
58
|
+
export interface MakeScopeOutboxOptions {
|
|
59
|
+
capabilities: ScopeOutboxCapabilities;
|
|
60
|
+
/** Solo con `dead: true` (default 5). */
|
|
61
|
+
maxAttempts?: number;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Una outbox EN MEMORIA que implementa el puerto entero y expone SOLO lo que
|
|
65
|
+
* declara: con `filter: false` ignora `ids`, con `transient: false` cuenta
|
|
66
|
+
* siempre, con `dead: false` no aparca (y no tiene `dead`), y sin `acquire`/
|
|
67
|
+
* `earlierPending`/`requeue` no trae esos métodos. Es la forma de ejercer LAS
|
|
68
|
+
* DOS CARAS de cada par sin servidor. No escribe por ninguna transacción:
|
|
69
|
+
* `transactionalEnqueue` tiene que ser `false` (lanza si no).
|
|
70
|
+
*/
|
|
71
|
+
export declare function makeScopeOutbox(options: MakeScopeOutboxOptions): ScopeOutbox;
|
|
72
|
+
export declare function runScopeOutboxContract(harness: ScopeOutboxContractHarness): {
|
|
73
|
+
registered: number;
|
|
74
|
+
covered: Set<keyof ScopeOutboxCapabilities>;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* El MOTOR del runner (registro de casos), separado para que el propio
|
|
78
|
+
* paquete pueda contar los casos (`scope_outbox_harness.spec.ts`). Devuelve
|
|
79
|
+
* el nº de casos registrados y las capacidades cubiertas.
|
|
80
|
+
*/
|
|
81
|
+
export declare function registerScopeOutboxContract(harness: ScopeOutboxContractHarness, api: {
|
|
82
|
+
group: ContractTestApi['group'];
|
|
83
|
+
test: ContractTestApi['test'];
|
|
84
|
+
}): {
|
|
85
|
+
registered: number;
|
|
86
|
+
covered: Set<keyof ScopeOutboxCapabilities>;
|
|
87
|
+
};
|
|
88
|
+
//# sourceMappingURL=scope_outbox_contract.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scope_outbox_contract.d.ts","sourceRoot":"","sources":["../../../src/testing/scope_outbox_contract.ts"],"names":[],"mappings":"AA2BA,OAAO,KAAK,EAA0B,WAAW,EAA6D,MAAM,aAAa,CAAA;AACjI,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,eAAe,CAAA;AAIpD;;;;GAIG;AACH,MAAM,WAAW,uBAAuB;IACtC;;;;;;;OAOG;IACH,oBAAoB,EAAE,OAAO,CAAA;IAC7B,sHAAsH;IACtH,MAAM,EAAE,OAAO,CAAA;IACf,mIAAmI;IACnI,SAAS,EAAE,OAAO,CAAA;IAClB,oHAAoH;IACpH,IAAI,EAAE,OAAO,CAAA;IACb,8HAA8H;IAC9H,OAAO,EAAE,OAAO,CAAA;IAChB,8HAA8H;IAC9H,cAAc,EAAE,OAAO,CAAA;IACvB,8IAA8I;IAC9I,OAAO,EAAE,OAAO,CAAA;CACjB;AAED,eAAO,MAAM,4BAA4B,EAAE,aAAa,CAAC,MAAM,uBAAuB,CAQrF,CAAA;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,EAAE,MAAM,CAAA;IACZ,YAAY,EAAE,uBAAuB,CAAA;IACrC,2FAA2F;IAC3F,UAAU,IAAI,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC,CAAA;IAChD,wCAAwC;IACxC,OAAO,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAA;IACzB;;;;OAIG;IACH,MAAM,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;IACjC,uGAAuG;IACvG,YAAY,CAAC,EAAE,+BAA+B,CAAA;CAC/C;AAED,qDAAqD;AACrD,MAAM,WAAW,+BAA+B;IAC9C,KAAK,IAAI,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAC;QAAC,MAAM,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;QAAC,QAAQ,IAAI,OAAO,CAAC,OAAO,CAAC,CAAA;KAAE,CAAC,CAAA;CAChG;AAID,MAAM,WAAW,sBAAsB;IACrC,YAAY,EAAE,uBAAuB,CAAA;IACrC,yCAAyC;IACzC,WAAW,CAAC,EAAE,MAAM,CAAA;CACrB;AAUD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,OAAO,EAAE,sBAAsB,GAAG,WAAW,CA4F5E;AAID,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,0BAA0B;gBAgCzD,MAAM;aAAW,GAAG,CAAC,MAAM,uBAAuB,CAAC;EA3BnE;AAmBD;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,0BAA0B,EACnC,GAAG,EAAE;IAAE,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,CAAA;CAAE,GACtE;IAAE,UAAU,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,GAAG,CAAC,MAAM,uBAAuB,CAAC,CAAA;CAAE,CAwfrE"}
|