@jantstack/adonis-authz 2.0.0-alpha.1 → 2.4.0-alpha.2

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 (214) hide show
  1. package/README.md +693 -36
  2. package/build/commands/authz_catalog_diff.js +1 -1
  3. package/build/commands/authz_catalog_diff.js.map +1 -1
  4. package/build/commands/authz_catalog_prune_orphans.d.ts +78 -0
  5. package/build/commands/authz_catalog_prune_orphans.d.ts.map +1 -0
  6. package/build/commands/authz_catalog_prune_orphans.js +136 -0
  7. package/build/commands/authz_catalog_prune_orphans.js.map +1 -0
  8. package/build/commands/authz_catalog_sync.d.ts +17 -0
  9. package/build/commands/authz_catalog_sync.d.ts.map +1 -1
  10. package/build/commands/authz_catalog_sync.js +27 -4
  11. package/build/commands/authz_catalog_sync.js.map +1 -1
  12. package/build/commands/authz_freeze.d.ts +44 -0
  13. package/build/commands/authz_freeze.d.ts.map +1 -0
  14. package/build/commands/authz_freeze.js +95 -0
  15. package/build/commands/authz_freeze.js.map +1 -0
  16. package/build/commands/authz_reconcile.d.ts +102 -0
  17. package/build/commands/authz_reconcile.d.ts.map +1 -0
  18. package/build/commands/authz_reconcile.js +294 -0
  19. package/build/commands/authz_reconcile.js.map +1 -0
  20. package/build/commands/authz_relations_reconcile.d.ts +97 -0
  21. package/build/commands/authz_relations_reconcile.d.ts.map +1 -0
  22. package/build/commands/authz_relations_reconcile.js +313 -0
  23. package/build/commands/authz_relations_reconcile.js.map +1 -0
  24. package/build/commands/authz_scopes_relay.d.ts +47 -0
  25. package/build/commands/authz_scopes_relay.d.ts.map +1 -0
  26. package/build/commands/authz_scopes_relay.js +141 -0
  27. package/build/commands/authz_scopes_relay.js.map +1 -0
  28. package/build/commands/authz_unfreeze.d.ts +37 -0
  29. package/build/commands/authz_unfreeze.d.ts.map +1 -0
  30. package/build/commands/authz_unfreeze.js +92 -0
  31. package/build/commands/authz_unfreeze.js.map +1 -0
  32. package/build/commands/main.d.ts +6 -1
  33. package/build/commands/main.d.ts.map +1 -1
  34. package/build/commands/main.js +6 -1
  35. package/build/commands/main.js.map +1 -1
  36. package/build/commands/openfga_provision.d.ts +46 -4
  37. package/build/commands/openfga_provision.d.ts.map +1 -1
  38. package/build/commands/openfga_provision.js +90 -7
  39. package/build/commands/openfga_provision.js.map +1 -1
  40. package/build/configure.d.ts +11 -0
  41. package/build/configure.d.ts.map +1 -1
  42. package/build/configure.js +37 -1
  43. package/build/configure.js.map +1 -1
  44. package/build/index.d.ts +50 -10
  45. package/build/index.d.ts.map +1 -1
  46. package/build/index.js +45 -6
  47. package/build/index.js.map +1 -1
  48. package/build/providers/authz_provider.d.ts +26 -2
  49. package/build/providers/authz_provider.d.ts.map +1 -1
  50. package/build/providers/authz_provider.js +55 -2
  51. package/build/providers/authz_provider.js.map +1 -1
  52. package/build/services/relations.d.ts +14 -0
  53. package/build/services/relations.d.ts.map +1 -0
  54. package/build/services/relations.js +17 -0
  55. package/build/services/relations.js.map +1 -0
  56. package/build/src/{catalog.d.ts → catalog/catalog.d.ts} +41 -2
  57. package/build/src/catalog/catalog.d.ts.map +1 -0
  58. package/build/src/{catalog.js → catalog/catalog.js} +120 -14
  59. package/build/src/catalog/catalog.js.map +1 -0
  60. package/build/src/{catalog_cache.d.ts → catalog/catalog_cache.d.ts} +46 -22
  61. package/build/src/catalog/catalog_cache.d.ts.map +1 -0
  62. package/build/src/{catalog_cache.js → catalog/catalog_cache.js} +53 -43
  63. package/build/src/catalog/catalog_cache.js.map +1 -0
  64. package/build/src/define_config.d.ts +137 -3
  65. package/build/src/define_config.d.ts.map +1 -1
  66. package/build/src/define_config.js.map +1 -1
  67. package/build/src/drivers/database_driver.d.ts +128 -7
  68. package/build/src/drivers/database_driver.d.ts.map +1 -1
  69. package/build/src/drivers/database_driver.js +510 -24
  70. package/build/src/drivers/database_driver.js.map +1 -1
  71. package/build/src/drivers/database_relations_driver.d.ts +113 -0
  72. package/build/src/drivers/database_relations_driver.d.ts.map +1 -0
  73. package/build/src/drivers/database_relations_driver.js +679 -0
  74. package/build/src/drivers/database_relations_driver.js.map +1 -0
  75. package/build/src/drivers/openfga_driver.d.ts +729 -122
  76. package/build/src/drivers/openfga_driver.d.ts.map +1 -1
  77. package/build/src/drivers/openfga_driver.js +2083 -476
  78. package/build/src/drivers/openfga_driver.js.map +1 -1
  79. package/build/src/drivers/openfga_facts.d.ts +384 -0
  80. package/build/src/drivers/openfga_facts.d.ts.map +1 -0
  81. package/build/src/drivers/openfga_facts.js +836 -0
  82. package/build/src/drivers/openfga_facts.js.map +1 -0
  83. package/build/src/drivers/openfga_relations_driver.d.ts +141 -0
  84. package/build/src/drivers/openfga_relations_driver.d.ts.map +1 -0
  85. package/build/src/drivers/openfga_relations_driver.js +590 -0
  86. package/build/src/drivers/openfga_relations_driver.js.map +1 -0
  87. package/build/src/errors.d.ts +290 -5
  88. package/build/src/errors.d.ts.map +1 -1
  89. package/build/src/errors.js +296 -7
  90. package/build/src/errors.js.map +1 -1
  91. package/build/src/freeze.d.ts +141 -0
  92. package/build/src/freeze.d.ts.map +1 -0
  93. package/build/src/freeze.js +217 -0
  94. package/build/src/freeze.js.map +1 -0
  95. package/build/src/http/app_access_middleware.d.ts.map +1 -0
  96. package/build/src/http/app_access_middleware.js.map +1 -0
  97. package/build/src/http/resource_access_middleware.d.ts +105 -0
  98. package/build/src/http/resource_access_middleware.d.ts.map +1 -0
  99. package/build/src/http/resource_access_middleware.js +81 -0
  100. package/build/src/http/resource_access_middleware.js.map +1 -0
  101. package/build/src/identity.d.ts +74 -1
  102. package/build/src/identity.d.ts.map +1 -1
  103. package/build/src/identity.js +100 -2
  104. package/build/src/identity.js.map +1 -1
  105. package/build/src/manager.d.ts +330 -4
  106. package/build/src/manager.d.ts.map +1 -1
  107. package/build/src/manager.js +1285 -188
  108. package/build/src/manager.js.map +1 -1
  109. package/build/src/models/authz_assignment.d.ts +7 -7
  110. package/build/src/models/authz_assignment.d.ts.map +1 -1
  111. package/build/src/models/authz_deny.d.ts +7 -7
  112. package/build/src/models/authz_deny.d.ts.map +1 -1
  113. package/build/src/models/authz_permission.d.ts +7 -7
  114. package/build/src/models/authz_permission.d.ts.map +1 -1
  115. package/build/src/models/authz_role.d.ts +7 -7
  116. package/build/src/models/authz_role.d.ts.map +1 -1
  117. package/build/src/models/authz_role_permission.d.ts +7 -7
  118. package/build/src/models/authz_role_permission.d.ts.map +1 -1
  119. package/build/src/openfga.d.ts +18 -2
  120. package/build/src/openfga.d.ts.map +1 -1
  121. package/build/src/openfga.js +15 -1
  122. package/build/src/openfga.js.map +1 -1
  123. package/build/src/reconcile.d.ts +37 -0
  124. package/build/src/reconcile.d.ts.map +1 -0
  125. package/build/src/reconcile.js +69 -0
  126. package/build/src/reconcile.js.map +1 -0
  127. package/build/src/relation_partition_trigger.d.ts +8 -0
  128. package/build/src/relation_partition_trigger.d.ts.map +1 -0
  129. package/build/src/relation_partition_trigger.js +93 -0
  130. package/build/src/relation_partition_trigger.js.map +1 -0
  131. package/build/src/relations/define_relations_config.d.ts +75 -0
  132. package/build/src/relations/define_relations_config.d.ts.map +1 -0
  133. package/build/src/relations/define_relations_config.js +173 -0
  134. package/build/src/relations/define_relations_config.js.map +1 -0
  135. package/build/src/relations/manager.d.ts +60 -0
  136. package/build/src/relations/manager.d.ts.map +1 -0
  137. package/build/src/relations/manager.js +213 -0
  138. package/build/src/relations/manager.js.map +1 -0
  139. package/build/src/relations/reconcile.d.ts +111 -0
  140. package/build/src/relations/reconcile.d.ts.map +1 -0
  141. package/build/src/relations/reconcile.js +200 -0
  142. package/build/src/relations/reconcile.js.map +1 -0
  143. package/build/src/relations_config_store.d.ts +22 -0
  144. package/build/src/relations_config_store.d.ts.map +1 -0
  145. package/build/src/relations_config_store.js +74 -0
  146. package/build/src/relations_config_store.js.map +1 -0
  147. package/build/src/scope_outbox.d.ts +69 -0
  148. package/build/src/scope_outbox.d.ts.map +1 -0
  149. package/build/src/scope_outbox.js +298 -0
  150. package/build/src/scope_outbox.js.map +1 -0
  151. package/build/src/{drivers → shared}/backend_guard.d.ts +42 -0
  152. package/build/src/shared/backend_guard.d.ts.map +1 -0
  153. package/build/src/{drivers → shared}/backend_guard.js +78 -1
  154. package/build/src/shared/backend_guard.js.map +1 -0
  155. package/build/src/shared/sql_expiry.d.ts.map +1 -0
  156. package/build/src/shared/sql_expiry.js.map +1 -0
  157. package/build/src/shared/transaction_guard.d.ts +50 -0
  158. package/build/src/shared/transaction_guard.d.ts.map +1 -0
  159. package/build/src/shared/transaction_guard.js +60 -0
  160. package/build/src/shared/transaction_guard.js.map +1 -0
  161. package/build/src/sql_descendants.d.ts +47 -1
  162. package/build/src/sql_descendants.d.ts.map +1 -1
  163. package/build/src/sql_descendants.js +75 -1
  164. package/build/src/sql_descendants.js.map +1 -1
  165. package/build/src/testing/contract.d.ts +129 -4
  166. package/build/src/testing/contract.d.ts.map +1 -1
  167. package/build/src/testing/contract.js +912 -177
  168. package/build/src/testing/contract.js.map +1 -1
  169. package/build/src/testing/main.d.ts +8 -2
  170. package/build/src/testing/main.d.ts.map +1 -1
  171. package/build/src/testing/main.js +4 -1
  172. package/build/src/testing/main.js.map +1 -1
  173. package/build/src/testing/migration_contract.d.ts +284 -0
  174. package/build/src/testing/migration_contract.d.ts.map +1 -0
  175. package/build/src/testing/migration_contract.js +586 -0
  176. package/build/src/testing/migration_contract.js.map +1 -0
  177. package/build/src/testing/relations_contract.d.ts +73 -0
  178. package/build/src/testing/relations_contract.d.ts.map +1 -0
  179. package/build/src/testing/relations_contract.js +1069 -0
  180. package/build/src/testing/relations_contract.js.map +1 -0
  181. package/build/src/testing/relations_reconcile_contract.d.ts +24 -0
  182. package/build/src/testing/relations_reconcile_contract.d.ts.map +1 -0
  183. package/build/src/testing/relations_reconcile_contract.js +220 -0
  184. package/build/src/testing/relations_reconcile_contract.js.map +1 -0
  185. package/build/src/traits/authz_scopes.js +1 -1
  186. package/build/src/traits/authz_scopes.js.map +1 -1
  187. package/build/src/traits/has_uuid.d.ts +8 -8
  188. package/build/src/traits/has_uuid.d.ts.map +1 -1
  189. package/build/src/types.d.ts +1053 -83
  190. package/build/src/types.d.ts.map +1 -1
  191. package/build/src/types.js +10 -0
  192. package/build/src/types.js.map +1 -1
  193. package/build/stubs/config/authorization.stub +104 -4
  194. package/build/stubs/migration.stub +136 -0
  195. package/build/stubs/scopes_outbox_migration.stub +57 -0
  196. package/package.json +4 -2
  197. package/build/commands/openfga_import.d.ts +0 -34
  198. package/build/commands/openfga_import.d.ts.map +0 -1
  199. package/build/commands/openfga_import.js +0 -97
  200. package/build/commands/openfga_import.js.map +0 -1
  201. package/build/src/catalog.d.ts.map +0 -1
  202. package/build/src/catalog.js.map +0 -1
  203. package/build/src/catalog_cache.d.ts.map +0 -1
  204. package/build/src/catalog_cache.js.map +0 -1
  205. package/build/src/drivers/backend_guard.d.ts.map +0 -1
  206. package/build/src/drivers/backend_guard.js.map +0 -1
  207. package/build/src/drivers/sql_expiry.d.ts.map +0 -1
  208. package/build/src/drivers/sql_expiry.js.map +0 -1
  209. package/build/src/middleware/app_access_middleware.d.ts.map +0 -1
  210. package/build/src/middleware/app_access_middleware.js.map +0 -1
  211. /package/build/src/{middleware → http}/app_access_middleware.d.ts +0 -0
  212. /package/build/src/{middleware → http}/app_access_middleware.js +0 -0
  213. /package/build/src/{drivers → shared}/sql_expiry.d.ts +0 -0
  214. /package/build/src/{drivers → shared}/sql_expiry.js +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
@@ -41,4 +41,14 @@
41
41
  export const APP_SCOPE_TYPE = 'app';
42
42
  /** El scope raíz de aplicación (nivel plataforma). */
43
43
  export const APP_SCOPE = Object.freeze({ type: 'app', uuid: null });
44
+ /**
45
+ * Cuántas tuplas/filas del destino caben en una pasada de `authz:reconcile`
46
+ * (3b-3b · B5). No es una garantía de memoria: es la cota DECLARADA por
47
+ * encima de la cual la pasada se niega en vez de intentarlo.
48
+ */
49
+ export const DEFAULT_RECONCILE_MAX_TUPLES = 1_000_000;
50
+ /** Discriminador: ¿este sujeto es un userset (`group:g#member`) y no un holder? */
51
+ export function isRelUserset(subject) {
52
+ return typeof subject.object === 'object' && subject.object !== null;
53
+ }
44
54
  //# sourceMappingURL=types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAoBH,uCAAuC;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAA;AAQnC,sDAAsD;AACtD,MAAM,CAAC,MAAM,SAAS,GAAa,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AAoBH,uCAAuC;AACvC,MAAM,CAAC,MAAM,cAAc,GAAG,KAAK,CAAA;AAQnC,sDAAsD;AACtD,MAAM,CAAC,MAAM,SAAS,GAAa,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAA;AAqrB7E;;;;GAIG;AACH,MAAM,CAAC,MAAM,4BAA4B,GAAG,SAAS,CAAA;AAqsBrD,mFAAmF;AACnF,MAAM,UAAU,YAAY,CAAC,OAAmB;IAC9C,OAAO,OAAQ,OAAsB,CAAC,MAAM,KAAK,QAAQ,IAAK,OAAsB,CAAC,MAAM,KAAK,IAAI,CAAA;AACtG,CAAC"}
@@ -2,7 +2,13 @@
2
2
  exports({ to: app.configPath('authorization.ts') })
3
3
  }}}
4
4
  import env from '#start/env'
5
- import { defineConfig, DatabaseAuthorizationDriver, APP_SCOPE } from '@jantstack/adonis-authz'
5
+ import {
6
+ defineConfig,
7
+ DatabaseAuthorizationDriver,
8
+ DatabaseRelationsDriver,
9
+ defineRelationsConfig,
10
+ APP_SCOPE,
11
+ } from '@jantstack/adonis-authz'
6
12
  import type { AuthzWriteEvent, ScopeRef } from '@jantstack/adonis-authz'
7
13
  import { appAclCatalog } from '#config/app_acl'
8
14
 
@@ -11,12 +17,39 @@ import { appAclCatalog } from '#config/app_acl'
11
17
  * modelo FGA. Solo lo usa el driver `openfga` y sus comandos.
12
18
  *
13
19
  * ⚠️ Cambiar este mapa cambia el authorization model: hay que re-provisionar
14
- * el store (`node ace openfga:provision`) y reimportar los hechos.
20
+ * el store (`node ace openfga:provision`) y volver a proyectar el catálogo.
15
21
  */
16
22
  export const holderTypes = {
17
23
  users: 'user',
18
24
  }
19
25
 
26
+ /**
27
+ * ReBAC genérico (relaciones a nivel de objeto: `document#viewer`,
28
+ * `group#member`…), OPT-IN. Declara aquí tus tipos de objeto y sus relaciones.
29
+ * Con la sección `relations` de abajo, el paquete cablea el `RelationsManager`
30
+ * como servicio (`import relations from '@jantstack/adonis-authz/services/relations'`)
31
+ * y —con AUTHZ_DRIVER=openfga— `node ace openfga:provision` mete estos tipos en
32
+ * el modelo `facts`, así que un store recién aprovisionado ya acepta tuplas de
33
+ * relación sin un `authz:catalog:sync` previo.
34
+ *
35
+ * `document` es solo un EJEMPLO: cámbialo por tus tipos (o borra este bloque y
36
+ * la sección `relations` si no usas ReBAC). `defineRelationsConfig` exige al
37
+ * menos un tipo, así que un array vacío lanza.
38
+ */
39
+ export const relationsConfig = defineRelationsConfig({
40
+ objectTypes: [
41
+ {
42
+ type: 'document',
43
+ relations: [
44
+ { name: 'owner' },
45
+ { name: 'editor', includes: ['owner'] },
46
+ { name: 'viewer', includes: ['editor'] },
47
+ ],
48
+ },
49
+ ],
50
+ holderTypes: Object.values(holderTypes),
51
+ })
52
+
20
53
  /**
21
54
  * Jerarquía de scopes de tu dominio: la ÚNICA costura entre tu dominio y el
22
55
  * motor. El motor solo conoce la raíz (`app`); si tienes niveles propios
@@ -79,17 +112,49 @@ export default defineConfig({
79
112
  // —`lead@unit` con owner una org— funciona con o sin él)
80
113
  // (o tu propia función) para `authorizedScopes`; y `requireWithin: true` / `requireActor: true`
81
114
  // en cuanto todos los call-sites pasen `within` / `actor` (hasta entonces el manager avisa).
82
- scopes: { resolveChain: resolveScopeChain },
115
+ // 2.3: `enumerateEdges: sqlScopeEdges({ table, uuidColumn, parentColumn, typeColumn })` es
116
+ // el árbol ENTERO paginado, y lo necesita `node ace authz:reconcile` (migrar entre drivers
117
+ // y verificar con --dry-run). Sin él el comando se niega en vez de suponer un árbol plano.
118
+ // La migración va en las DOS direcciones: `--to=openfga` reconstruye el store desde `authz_*`
119
+ // + este árbol, y `--to=database` reconstruye `authz_*` desde los hechos del store (ahí el
120
+ // árbol NO se migra: el driver `database` lo lee de TUS tablas en cada pregunta).
121
+ scopes: {
122
+ resolveChain: resolveScopeChain,
123
+ // Con AUTHZ_DRIVER=openfga el árbol vive en DOS sitios (tus tablas y el
124
+ // store) y quien ENCOLA los cambios es el MANAGER, que lee ESTA sección
125
+ // —no las opciones del driver—: sin una de las dos mitigaciones aquí,
126
+ // cada request es 500 E_AUTHZ_SCOPE_DRIFT_UNGUARDED. Igual que en la
127
+ // factory de abajo: cámbialo por `outbox: scopeOutbox` (la MISMA
128
+ // instancia en los dos sitios) en cuanto el árbol lo muevan peticiones
129
+ // de tenant; hasta entonces, esta es la firma explícita del riesgo.
130
+ // Con AUTHZ_DRIVER=database no aplica (el árbol tiene una sola copia).
131
+ acceptScopeDriftRisk: true,
132
+ },
83
133
 
84
134
  drivers: {
85
135
  database: () => new DatabaseAuthorizationDriver({ resolveChain: resolveScopeChain }),
86
136
 
87
137
  /**
88
138
  * Backend externo opcional. Levanta el servidor y provisiona con
89
- * `node ace openfga:provision`; migra los hechos con `openfga:import`.
139
+ * `node ace openfga:provision` (escribe el modelo con TUS permisos: el
140
+ * modelo cambia cada vez que añades o quitas uno, y `authz:catalog:sync`
141
+ * proyecta el catálogo en el store).
90
142
  * El driver vive en el subpath `/openfga` (lo único que importa el peer
91
143
  * opcional `@openfga/sdk`) y se carga DENTRO de la factory: sin
92
144
  * AUTHZ_DRIVER=openfga el SDK ni se instala ni se importa.
145
+ *
146
+ * **El árbol de scopes vive en el store** (el driver es el PDP y
147
+ * `authorize` es un solo `Check`), así que hay DOS copias del árbol —la
148
+ * tuya y la suya— y un `rollback` de tu transacción dejaría la del store
149
+ * adelantada. Por eso el driver NO se construye sin una de las dos
150
+ * mitigaciones (500 `E_AUTHZ_SCOPE_DRIFT_UNGUARDED`):
151
+ *
152
+ * - `scopes.outbox`: la MISMA instancia que pones en `scopes` arriba —
153
+ * el manager encola los cambios del árbol dentro de tu transacción y
154
+ * `node ace authz:scopes:relay` los aplica. Es la recomendada;
155
+ * publica la tabla con la migración `scopes_outbox_migration.stub`.
156
+ * - `acceptScopeDriftRisk: true`: la firma explícita de quien mueve el
157
+ * árbol solo desde la plataforma y lo asume.
93
158
  */
94
159
  openfga: async () => {
95
160
  const { OpenFgaAuthorizationDriver } = await import('@jantstack/adonis-authz/openfga')
@@ -104,6 +169,9 @@ export default defineConfig({
104
169
  modelId: env.get('OPENFGA_MODEL_ID'),
105
170
  resolveChain: resolveScopeChain,
106
171
  holderTypes,
172
+ // Cámbialo por `outbox: scopeOutbox` (la misma que pases en `scopes`)
173
+ // en cuanto el árbol lo muevan peticiones de tenant.
174
+ acceptScopeDriftRisk: true,
107
175
  })
108
176
  },
109
177
  },
@@ -124,5 +192,37 @@ export default defineConfig({
124
192
  */
125
193
  delegablePermissions: [],
126
194
 
195
+ /**
196
+ * ReBAC genérico (OPT-IN). `config` es la MISMA instancia que capturan las
197
+ * factories de `drivers` (F-05 del manager y del driver es la misma frontera);
198
+ * `default` es el driver de relaciones activo que resuelve el servicio
199
+ * `@jantstack/adonis-authz/services/relations` (default: el `default` de
200
+ * roles). Los `drivers` los usa además `node ace authz:relations:reconcile`.
201
+ * El driver `openfga` de relaciones entra por el subpath `/openfga` DENTRO de
202
+ * la factory (peer opcional). Si no usas ReBAC, borra esta sección y el
203
+ * `relationsConfig` de arriba.
204
+ */
205
+ relations: {
206
+ config: relationsConfig,
207
+ default: env.get('AUTHZ_DRIVER', 'database'),
208
+ drivers: {
209
+ database: () => new DatabaseRelationsDriver(relationsConfig),
210
+ openfga: async () => {
211
+ const { OpenFgaRelationsDriver } = await import('@jantstack/adonis-authz/openfga')
212
+ const apiUrl = env.get('OPENFGA_URL')
213
+ const storeId = env.get('OPENFGA_STORE_ID')
214
+ if (!apiUrl || !storeId) {
215
+ throw new Error('AUTHZ_DRIVER=openfga requiere OPENFGA_URL y OPENFGA_STORE_ID')
216
+ }
217
+ return new OpenFgaRelationsDriver(relationsConfig, {
218
+ apiUrl,
219
+ storeId,
220
+ modelId: env.get('OPENFGA_MODEL_ID'),
221
+ holderTypes,
222
+ })
223
+ },
224
+ },
225
+ },
226
+
127
227
  hooks: { onWrite: onAuthzWrite },
128
228
  })
@@ -147,17 +147,110 @@ export default class extends BaseSchema {
147
147
  // escriba `authz_*` a mano lo hace con `withAuthzCatalogWrite(async (trx)
148
148
  // => …)`: misma transacción, versión subida como última sentencia. Sin
149
149
  // esta fila (id = 1) toda pregunta es 503: por eso se siembra aquí.
150
+ //
151
+ // La fila `id = 2` es el **freeze DURABLE** (2.3): motivo, dueño
152
+ // (`<kind>:<pid>:<hex>`), lease (`freeze_until_ms`, null = sin caducidad)
153
+ // y `freeze_fence` (número de generación: `unfreeze` solo levanta el
154
+ // freeze cuyo fence+holder coinciden). Toda ESCRITURA del manager la lee
155
+ // antes de validar nada; sin esta fila toda escritura es 503 «migración
156
+ // 2.0 no aplicada» — tratarla como «no congelado» sería fail-open.
150
157
  this.schema.createTable('authz_catalog_version', (table) => {
151
158
  table.integer('id').primary().notNullable()
152
159
  table.bigInteger('version').notNullable().defaultTo(0)
153
160
  table.timestamp('updated_at').notNullable()
161
+ table.string('freeze_reason', 255).nullable()
162
+ table.string('freeze_holder', 120).nullable()
163
+ table.bigInteger('freeze_until_ms').nullable()
164
+ table.bigInteger('freeze_fence').notNullable().defaultTo(0)
154
165
  })
155
166
  this.defer(async (db) => {
156
167
  await db.table('authz_catalog_version').insert({ id: 1, version: 0, updated_at: new Date() })
168
+ await db.table('authz_catalog_version').insert({ id: 2, version: 0, updated_at: new Date() })
169
+ })
170
+
171
+ // La config de relaciones PERSISTIDA (Fase 4-5, 🟡3): vive donde el gate de
172
+ // versión la ve (invariante 14), como el catálogo, para que CUALQUIER
173
+ // proceso que republique el modelo fusionado lea los tipos de relación de
174
+ // la BASE y NO los deje caer —el «modelo de uno, tuplas de otro» del
175
+ // auditor—. `spec` es el JSON de `defineRelationsConfig`; `model_id` es el
176
+ // último modelId del modelo fusionado publicado (el pin de la carrera
177
+ // `defineRelationsConfig`↔`syncAuthzCatalog`). Fila ausente = sin
178
+ // relaciones declaradas (opt-in), nunca un error.
179
+ this.schema.createTable('authz_relations_config', (table) => {
180
+ table.integer('id').primary().notNullable()
181
+ table.text('spec').notNullable()
182
+ table.string('model_id', 64).nullable()
183
+ table.timestamp('updated_at').notNullable()
184
+ })
185
+
186
+ // Tuplas de ReBAC (Fase 4): una fila por relación, INSERT/DELETE-ONLY
187
+ // (renovar la caducidad es delete+insert, nunca UPDATE). Sin FK: las
188
+ // relaciones NO cuelgan del catálogo (viven en su propio espacio de ids,
189
+ // disjunto de `authz_*` por construcción). Identidad byte a byte
190
+ // (`utf8mb4_bin`) como el resto (2.5 · J3). La partición (tenant) es la
191
+ // clave del scope; `subject_relation` con valor = userset (`group:g#member`),
192
+ // `''` = holder (L-4b: **NOT NULL DEFAULT ''** — con NULL el UNIQUE
193
+ // `authz_rel_tuple_uq` solo defendía usersets, porque NULL ≠ NULL en los
194
+ // tres motores, y dos `relate` concurrentes del mismo holder confirmaban
195
+ // DOS filas; `''` es la única forma con paridad: el índice parcial no
196
+ // existe en MySQL y `NULLS NOT DISTINCT` es solo PG 15+),
197
+ // `subject_partition` = la partición del userset. `expires_at` (R-15,
198
+ // 2.4.0-alpha.2) es la caducidad de la tupla: NULL = no caduca; misma
199
+ // decisión de motor que `authz_assignments.expires_at` (DATETIME(3)).
200
+ this.schema.createTable('authz_relations', (table) => {
201
+ table.uuid('uuid').primary().notNullable()
202
+ table.string('partition_key', 64).notNullable().collate('utf8mb4_bin')
203
+ table.string('object_type', 50).notNullable().collate('utf8mb4_bin')
204
+ table.string('object_uuid', 64).notNullable().collate('utf8mb4_bin')
205
+ table.string('relation', 50).notNullable().collate('utf8mb4_bin')
206
+ table.string('subject_type', 50).notNullable().collate('utf8mb4_bin')
207
+ table.string('subject_uuid', 64).notNullable().collate('utf8mb4_bin')
208
+ table.string('subject_relation', 50).notNullable().defaultTo('').collate('utf8mb4_bin')
209
+ table.string('subject_partition', 64).nullable().collate('utf8mb4_bin')
210
+ table.datetime('expires_at', { precision: 3 }).nullable()
211
+ table.timestamp('created_at').notNullable()
212
+
213
+ table.unique(
214
+ ['partition_key', 'object_type', 'object_uuid', 'relation', 'subject_type', 'subject_uuid', 'subject_relation'],
215
+ 'authz_rel_tuple_uq'
216
+ )
217
+ table.index(['partition_key', 'object_type', 'object_uuid', 'relation'], 'authz_rel_object_idx')
218
+ table.index(['partition_key', 'subject_type', 'subject_uuid'], 'authz_rel_subject_idx')
219
+ })
220
+
221
+ // El TRIGGER de partición, por dialecto. Defiende al escritor «a mano»: una
222
+ // fila con userset (`subject_relation <> ''`; un holder lleva `''` desde
223
+ // L-4b, y una fila vieja con NULL que nadie rellenó tampoco dispara: en los
224
+ // tres motores `NULL <> ''` es NULL, o sea falso) de OTRA partición que la
225
+ // de la tupla se rechaza en el motor. La DDL es radicalmente distinta en
226
+ // cada uno (SQLite `RAISE(ABORT)`, PostgreSQL función plpgsql + trigger,
227
+ // MySQL `SIGNAL SQLSTATE`), y el cuerpo `BEGIN…END` lleva `;` dentro: cada
228
+ // sentencia se ejecuta ENTERA con `rawQuery`, nunca por un runner que
229
+ // trocea por `;`.
230
+ this.defer(async (db) => {
231
+ const dialect = db.dialect.name
232
+ for (const statement of relationPartitionTriggerStatements(dialect)) {
233
+ await db.rawQuery(statement)
234
+ }
157
235
  })
158
236
  }
159
237
 
160
238
  public async down() {
239
+ this.defer(async (db) => {
240
+ const drops =
241
+ db.dialect.name === 'postgres'
242
+ ? [
243
+ 'DROP TRIGGER IF EXISTS authz_relations_partition_biu ON authz_relations',
244
+ 'DROP FUNCTION IF EXISTS authz_relations_partition_guard()',
245
+ ]
246
+ : [
247
+ 'DROP TRIGGER IF EXISTS authz_relations_partition_bi',
248
+ 'DROP TRIGGER IF EXISTS authz_relations_partition_bu',
249
+ ]
250
+ for (const statement of drops) await db.rawQuery(statement)
251
+ })
252
+ this.schema.dropTable('authz_relations')
253
+ this.schema.dropTable('authz_relations_config')
161
254
  this.schema.dropTable('authz_catalog_version')
162
255
  this.schema.dropTable('authz_denies')
163
256
  this.schema.dropTable('authz_assignments')
@@ -166,3 +259,46 @@ export default class extends BaseSchema {
166
259
  this.schema.dropTable('authz_roles')
167
260
  }
168
261
  }
262
+
263
+ /**
264
+ * La DDL del trigger de partición de `authz_relations` por dialecto. Es la
265
+ * MISMA que `relationPartitionTrigger` del paquete
266
+ * (`@jantstack/adonis-authz` → `src/drivers/database_relations_driver.ts`);
267
+ * se inlinea aquí porque una migración es una foto congelada y no importa
268
+ * código del paquete. Dialecto no medido ⇒ lanza (nunca una tabla sin defensa).
269
+ */
270
+ function relationPartitionTriggerStatements(dialect) {
271
+ const msg = 'authz_relations: un userset no puede pertenecer a otra partición que su tupla'
272
+ if (dialect === 'sqlite3' || dialect === 'better-sqlite3') {
273
+ const body = (event) =>
274
+ `CREATE TRIGGER authz_relations_partition_b${event === 'INSERT' ? 'i' : 'u'} ` +
275
+ `BEFORE ${event} ON authz_relations FOR EACH ROW ` +
276
+ `WHEN NEW.subject_relation <> '' AND NEW.subject_partition IS NOT NEW.partition_key ` +
277
+ `BEGIN SELECT RAISE(ABORT, '${msg}'); END`
278
+ return [body('INSERT'), body('UPDATE')]
279
+ }
280
+ if (dialect === 'postgres') {
281
+ return [
282
+ `CREATE OR REPLACE FUNCTION authz_relations_partition_guard() RETURNS trigger LANGUAGE plpgsql AS $authz$ ` +
283
+ `BEGIN ` +
284
+ `IF NEW.subject_relation <> '' AND NEW.subject_partition IS DISTINCT FROM NEW.partition_key THEN ` +
285
+ `RAISE EXCEPTION '${msg} (subject_partition=%, partition_key=%)', NEW.subject_partition, NEW.partition_key; ` +
286
+ `END IF; RETURN NEW; END; $authz$`,
287
+ `CREATE TRIGGER authz_relations_partition_biu BEFORE INSERT OR UPDATE ON authz_relations ` +
288
+ `FOR EACH ROW EXECUTE FUNCTION authz_relations_partition_guard()`,
289
+ ]
290
+ }
291
+ if (dialect === 'mysql' || dialect === 'mysql2') {
292
+ const body = (event) =>
293
+ `CREATE TRIGGER authz_relations_partition_b${event === 'INSERT' ? 'i' : 'u'} ` +
294
+ `BEFORE ${event} ON authz_relations FOR EACH ROW ` +
295
+ `BEGIN ` +
296
+ `IF NEW.subject_relation <> '' AND NOT (NEW.subject_partition <=> NEW.partition_key) THEN ` +
297
+ `SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = '${msg}'; ` +
298
+ `END IF; END`
299
+ return [body('INSERT'), body('UPDATE')]
300
+ }
301
+ throw new Error(
302
+ `authz_relations: dialecto '${dialect}' sin trigger de partición medido (hoy: PostgreSQL, MySQL 8 y SQLite).`
303
+ )
304
+ }
@@ -0,0 +1,57 @@
1
+ {{{
2
+ exports({ to: app.migrationsPath('create_authz_scope_outbox_table.ts') })
3
+ }}}
4
+ import { BaseSchema } from '@adonisjs/lucid/schema'
5
+
6
+ /**
7
+ * La OUTBOX del árbol de scopes (@jantstack/adonis-authz, 3b-2d).
8
+ *
9
+ * NO es una tabla del motor: es tuya. La publica el paquete porque
10
+ * `sqlScopeOutbox()` lee estas columnas, pero el contrato es el puerto
11
+ * `ScopeOutbox`, no esta tabla — cámbiala si tu cola vive en otro sitio.
12
+ *
13
+ * Para qué: con `scopes.outbox` declarada, `authorization.scopes.attached/
14
+ * moved/detached` NO escriben en el backend. Encolan aquí, dentro de TU
15
+ * transacción, y `node ace authz:scopes:relay` lo aplica después. Sin eso,
16
+ * un `rollback` de tu transacción deja el árbol del backend adelantado al
17
+ * tuyo y —en el driver openfga con `hierarchy: 'facts'`, donde FGA es quien
18
+ * decide— eso es una escalada persistente que tu base no puede ver.
19
+ *
20
+ * Las filas aplicadas se MARCAN (`applied_at`), no se borran: la cola es
21
+ * también el registro de qué se propagó y cuándo. Púrgalas tú cuando
22
+ * quieras.
23
+ */
24
+ export default class extends BaseSchema {
25
+ async up() {
26
+ this.schema.createTable('authz_scope_outbox', (table) => {
27
+ table.increments('id').primary()
28
+ // 'attached' | 'moved' | 'detached'.
29
+ table.string('op', 10).notNullable().collate('utf8mb4_bin')
30
+ // La identidad CANÓNICA del scope (la que devolvió tu resolveChain),
31
+ // con las decisiones de motor del paquete: varchar(64) utf8mb4_bin,
32
+ // para que un alias del uuid no se funda con otra fila.
33
+ table.string('child_type', 20).notNullable().collate('utf8mb4_bin')
34
+ table.string('child_uuid', 64).notNullable().collate('utf8mb4_bin')
35
+ // Nulos en 'detached' (no hay padre); 'app' con uuid nulo es la raíz.
36
+ table.string('parent_type', 20).nullable().collate('utf8mb4_bin')
37
+ table.string('parent_uuid', 64).nullable().collate('utf8mb4_bin')
38
+ // Quién lo ordenó, si el call-site lo declaró.
39
+ table.string('actor_type', 50).nullable().collate('utf8mb4_bin')
40
+ table.string('actor_uuid', 64).nullable().collate('utf8mb4_bin')
41
+ // Intentos fallidos y la última causa: el relay nunca es silencioso.
42
+ // Agotados los intentos (`sqlScopeOutbox({ maxAttempts })`, 5 por
43
+ // defecto) la fila queda APARCADA: deja de reintentarse, sale por
44
+ // `dead()` y el relay la reporta en todas las pasadas. Se queda aquí
45
+ // —el árbol del backend está divergente en ese nodo— hasta que la mires.
46
+ table.integer('attempts').notNullable().defaultTo(0)
47
+ table.text('last_error').nullable()
48
+ table.timestamp('created_at').notNullable()
49
+ table.timestamp('applied_at').nullable()
50
+ table.index(['applied_at', 'id'], 'authz_scope_outbox_pending_idx')
51
+ })
52
+ }
53
+
54
+ async down() {
55
+ this.schema.dropTable('authz_scope_outbox')
56
+ }
57
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@jantstack/adonis-authz",
3
- "version": "2.0.0-alpha.1",
3
+ "version": "2.4.0-alpha.2",
4
4
  "description": "Driver-based authorization engine for AdonisJS + Lucid: hierarchical scopes with downward inheritance, explicit denies, expiring assignments and polymorphic holders. Ships a self-contained database driver and an OpenFGA driver, both judged by the same executable contract suite.",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -45,7 +45,9 @@
45
45
  "./openfga": "./build/src/openfga.js",
46
46
  "./authz_provider": "./build/providers/authz_provider.js",
47
47
  "./services/main": "./build/services/main.js",
48
- "./app_access_middleware": "./build/src/middleware/app_access_middleware.js",
48
+ "./services/relations": "./build/services/relations.js",
49
+ "./app_access_middleware": "./build/src/http/app_access_middleware.js",
50
+ "./resource_access_middleware": "./build/src/http/resource_access_middleware.js",
49
51
  "./commands": "./build/commands/main.js",
50
52
  "./commands/*": "./build/commands/*.js",
51
53
  "./testing": "./build/src/testing/main.js",
@@ -1,34 +0,0 @@
1
- import { BaseCommand } from '@adonisjs/core/ace';
2
- import { CommandOptions } from '@adonisjs/core/types/ace';
3
- /**
4
- * Migra los HECHOS del driver `database` a un store OpenFGA: copia las
5
- * asignaciones vigentes (authz_assignments) y los denies (authz_denies)
6
- * como tuples. El catálogo y la jerarquía no migran: son metadata local
7
- * para ambos drivers.
8
- *
9
- * Proceso completo database → openfga:
10
- * 1. Levantar el servidor (profile openfga del compose).
11
- * 2. node ace openfga:provision → store + model (ids al .env)
12
- * 3. node ace openfga:import [--dry-run] → copia los hechos
13
- * 4. AUTHZ_DRIVER=openfga + reiniciar api/worker.
14
- *
15
- * No destructivo (las tablas locales quedan intactas → rollback = volver a
16
- * AUTHZ_DRIVER=database). Sobre un store que YA tiene tuplas exige
17
- * `--reconcile`: compara tupla a tupla, reescribe las que difieren en
18
- * caducidad (S7) — nunca "ignora duplicados", porque en FGA la condición no
19
- * es parte de la clave — y cuenta las que SQL no tiene (`extra`); con
20
- * `--prune` las borra (D14): es lo que hace que el reconcile converja.
21
- */
22
- export default class OpenFgaImport extends BaseCommand {
23
- static commandName: string;
24
- static description: string;
25
- static options: CommandOptions;
26
- url: string | undefined;
27
- storeId: string | undefined;
28
- modelId: string | undefined;
29
- dryRun: boolean | undefined;
30
- reconcile: boolean | undefined;
31
- prune: boolean | undefined;
32
- run(): Promise<void>;
33
- }
34
- //# sourceMappingURL=openfga_import.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openfga_import.d.ts","sourceRoot":"","sources":["../../commands/openfga_import.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAS,MAAM,oBAAoB,CAAA;AACvD,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAA;AAEzD;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,CAAC,OAAO,OAAO,aAAc,SAAQ,WAAW;IACpD,MAAM,CAAC,WAAW,SAAmB;IACrC,MAAM,CAAC,WAAW,SAAgF;IAElG,MAAM,CAAC,OAAO,EAAE,cAAc,CAE7B;IAGO,GAAG,EAAE,MAAM,GAAG,SAAS,CAAA;IAGvB,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAG3B,OAAO,EAAE,MAAM,GAAG,SAAS,CAAA;IAG3B,MAAM,EAAE,OAAO,GAAG,SAAS,CAAA;IAM3B,SAAS,EAAE,OAAO,GAAG,SAAS,CAAA;IAG9B,KAAK,EAAE,OAAO,GAAG,SAAS,CAAA;IAE5B,GAAG;CAyCV"}
@@ -1,97 +0,0 @@
1
- var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
- return c > 3 && r && Object.defineProperty(target, key, r), r;
6
- };
7
- var __metadata = (this && this.__metadata) || function (k, v) {
8
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
- };
10
- import { BaseCommand, flags } from '@adonisjs/core/ace';
11
- /**
12
- * Migra los HECHOS del driver `database` a un store OpenFGA: copia las
13
- * asignaciones vigentes (authz_assignments) y los denies (authz_denies)
14
- * como tuples. El catálogo y la jerarquía no migran: son metadata local
15
- * para ambos drivers.
16
- *
17
- * Proceso completo database → openfga:
18
- * 1. Levantar el servidor (profile openfga del compose).
19
- * 2. node ace openfga:provision → store + model (ids al .env)
20
- * 3. node ace openfga:import [--dry-run] → copia los hechos
21
- * 4. AUTHZ_DRIVER=openfga + reiniciar api/worker.
22
- *
23
- * No destructivo (las tablas locales quedan intactas → rollback = volver a
24
- * AUTHZ_DRIVER=database). Sobre un store que YA tiene tuplas exige
25
- * `--reconcile`: compara tupla a tupla, reescribe las que difieren en
26
- * caducidad (S7) — nunca "ignora duplicados", porque en FGA la condición no
27
- * es parte de la clave — y cuenta las que SQL no tiene (`extra`); con
28
- * `--prune` las borra (D14): es lo que hace que el reconcile converja.
29
- */
30
- export default class OpenFgaImport extends BaseCommand {
31
- static commandName = 'openfga:import';
32
- static description = 'Copy authz facts (assignments/denies) from the database driver into OpenFGA';
33
- static options = {
34
- startApp: true,
35
- };
36
- async run() {
37
- const config = this.app.config.get('authorization');
38
- const apiUrl = this.url ?? config?.openfga?.url;
39
- const storeId = this.storeId ?? config?.openfga?.storeId;
40
- if (!apiUrl || !storeId) {
41
- this.logger.error('Faltan la URL o el store: --url/--store-id o OPENFGA_URL/OPENFGA_STORE_ID (ver openfga:provision)');
42
- this.exitCode = 1;
43
- return;
44
- }
45
- // El subpath `/openfga` es la única puerta al SDK (D9).
46
- const { importAuthzFactsToOpenFga } = await import('../src/openfga.js');
47
- const holderTypes = config?.holderTypes ?? {};
48
- const result = await importAuthzFactsToOpenFga({
49
- apiUrl,
50
- storeId,
51
- modelId: this.modelId ?? config?.openfga?.modelId,
52
- dryRun: this.dryRun ?? false,
53
- reconcile: this.reconcile ?? false,
54
- prune: this.prune ?? false,
55
- holderTypes,
56
- });
57
- const verb = result.dryRun ? 'Se escribirían' : 'Escritas';
58
- this.logger.success(`${verb} ${result.written} tuplas nuevas, ${result.updated} reescritas (caducidad distinta), ` +
59
- `${result.unchanged} sin cambios; ${result.skippedExpired} asignaciones ya expiradas omitidas.`);
60
- if (result.extra > 0 && !this.prune) {
61
- this.logger.warning(`${result.extra} tupla(s) del store no están en SQL y SIGUEN concediendo: vuelve a ejecutar con --reconcile --prune para borrarlas.`);
62
- }
63
- else if (this.prune) {
64
- this.logger.log(`${result.dryRun ? 'Se borrarían' : 'Borradas'} ${result.deleted} tupla(s) que SQL no tiene.`);
65
- }
66
- if (!result.dryRun) {
67
- this.logger.log('Siguiente paso: AUTHZ_DRIVER=openfga y reiniciar api/worker.');
68
- }
69
- }
70
- }
71
- __decorate([
72
- flags.string({ description: 'OpenFGA API URL (defaults to OPENFGA_URL)' }),
73
- __metadata("design:type", Object)
74
- ], OpenFgaImport.prototype, "url", void 0);
75
- __decorate([
76
- flags.string({ alias: 's', description: 'Store id (defaults to OPENFGA_STORE_ID)' }),
77
- __metadata("design:type", Object)
78
- ], OpenFgaImport.prototype, "storeId", void 0);
79
- __decorate([
80
- flags.string({ description: 'Model id (defaults to OPENFGA_MODEL_ID)' }),
81
- __metadata("design:type", Object)
82
- ], OpenFgaImport.prototype, "modelId", void 0);
83
- __decorate([
84
- flags.boolean({ description: 'Count what would be written, without writing' }),
85
- __metadata("design:type", Object)
86
- ], OpenFgaImport.prototype, "dryRun", void 0);
87
- __decorate([
88
- flags.boolean({
89
- description: 'Import into a non-empty store: compare tuple by tuple, rewrite the ones that differ and count the ones SQL no longer has (extra)',
90
- }),
91
- __metadata("design:type", Object)
92
- ], OpenFgaImport.prototype, "reconcile", void 0);
93
- __decorate([
94
- flags.boolean({ description: 'With --reconcile: delete the tuples SQL no longer has (reported as deleted)' }),
95
- __metadata("design:type", Object)
96
- ], OpenFgaImport.prototype, "prune", void 0);
97
- //# sourceMappingURL=openfga_import.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openfga_import.js","sourceRoot":"","sources":["../../commands/openfga_import.ts"],"names":[],"mappings":"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"}
@@ -1 +0,0 @@
1
- {"version":3,"file":"catalog.d.ts","sourceRoot":"","sources":["../../src/catalog.ts"],"names":[],"mappings":"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"}