@jantstack/adonis-authz 2.4.0-alpha.4 → 2.4.0-alpha.6

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.
Files changed (66) hide show
  1. package/README.md +102 -4
  2. package/build/commands/authz_reconcile.d.ts +5 -3
  3. package/build/commands/authz_reconcile.d.ts.map +1 -1
  4. package/build/commands/authz_reconcile.js +15 -3
  5. package/build/commands/authz_reconcile.js.map +1 -1
  6. package/build/commands/authz_scopes_relay.d.ts +18 -0
  7. package/build/commands/authz_scopes_relay.d.ts.map +1 -1
  8. package/build/commands/authz_scopes_relay.js +55 -7
  9. package/build/commands/authz_scopes_relay.js.map +1 -1
  10. package/build/commands/authz_scopes_requeue.d.ts +63 -0
  11. package/build/commands/authz_scopes_requeue.d.ts.map +1 -0
  12. package/build/commands/authz_scopes_requeue.js +154 -0
  13. package/build/commands/authz_scopes_requeue.js.map +1 -0
  14. package/build/commands/main.d.ts +2 -1
  15. package/build/commands/main.d.ts.map +1 -1
  16. package/build/commands/main.js +5 -3
  17. package/build/commands/main.js.map +1 -1
  18. package/build/index.d.ts +3 -3
  19. package/build/index.d.ts.map +1 -1
  20. package/build/index.js +2 -2
  21. package/build/index.js.map +1 -1
  22. package/build/src/define_config.d.ts +24 -0
  23. package/build/src/define_config.d.ts.map +1 -1
  24. package/build/src/define_config.js.map +1 -1
  25. package/build/src/drivers/openfga_driver.d.ts.map +1 -1
  26. package/build/src/drivers/openfga_driver.js +24 -1
  27. package/build/src/drivers/openfga_driver.js.map +1 -1
  28. package/build/src/drivers/openfga_relations_driver.d.ts +32 -0
  29. package/build/src/drivers/openfga_relations_driver.d.ts.map +1 -1
  30. package/build/src/drivers/openfga_relations_driver.js +64 -6
  31. package/build/src/drivers/openfga_relations_driver.js.map +1 -1
  32. package/build/src/errors.d.ts +30 -0
  33. package/build/src/errors.d.ts.map +1 -1
  34. package/build/src/errors.js +32 -0
  35. package/build/src/errors.js.map +1 -1
  36. package/build/src/manager.d.ts +86 -4
  37. package/build/src/manager.d.ts.map +1 -1
  38. package/build/src/manager.js +457 -25
  39. package/build/src/manager.js.map +1 -1
  40. package/build/src/relations/manager.d.ts +7 -0
  41. package/build/src/relations/manager.d.ts.map +1 -1
  42. package/build/src/relations/manager.js +27 -0
  43. package/build/src/relations/manager.js.map +1 -1
  44. package/build/src/relations/reconcile.d.ts +14 -2
  45. package/build/src/relations/reconcile.d.ts.map +1 -1
  46. package/build/src/relations/reconcile.js +155 -77
  47. package/build/src/relations/reconcile.js.map +1 -1
  48. package/build/src/scope_outbox.d.ts +21 -0
  49. package/build/src/scope_outbox.d.ts.map +1 -1
  50. package/build/src/scope_outbox.js +211 -24
  51. package/build/src/scope_outbox.js.map +1 -1
  52. package/build/src/testing/contract.d.ts.map +1 -1
  53. package/build/src/testing/contract.js +4 -1
  54. package/build/src/testing/contract.js.map +1 -1
  55. package/build/src/testing/main.d.ts +2 -0
  56. package/build/src/testing/main.d.ts.map +1 -1
  57. package/build/src/testing/main.js +1 -0
  58. package/build/src/testing/main.js.map +1 -1
  59. package/build/src/testing/scope_outbox_contract.d.ts +88 -0
  60. package/build/src/testing/scope_outbox_contract.d.ts.map +1 -0
  61. package/build/src/testing/scope_outbox_contract.js +607 -0
  62. package/build/src/testing/scope_outbox_contract.js.map +1 -0
  63. package/build/src/types.d.ts +240 -17
  64. package/build/src/types.d.ts.map +1 -1
  65. package/build/src/types.js.map +1 -1
  66. 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"}