@venizia/ignis 0.2.0-5 → 0.2.0-50

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 (417) hide show
  1. package/LICENSE.md +0 -1
  2. package/README.md +118 -158
  3. package/dist/base/applications/base.d.ts +19 -13
  4. package/dist/base/applications/base.d.ts.map +1 -1
  5. package/dist/base/applications/base.js +95 -74
  6. package/dist/base/applications/base.js.map +1 -1
  7. package/dist/base/applications/boot-steps.d.ts +13 -0
  8. package/dist/base/applications/boot-steps.d.ts.map +1 -0
  9. package/dist/base/applications/boot-steps.js +23 -0
  10. package/dist/base/applications/boot-steps.js.map +1 -0
  11. package/dist/base/applications/common/index.d.ts +2 -0
  12. package/dist/base/applications/common/index.d.ts.map +1 -0
  13. package/dist/base/applications/common/index.js +18 -0
  14. package/dist/base/applications/common/index.js.map +1 -0
  15. package/dist/base/applications/{types.d.ts → common/types.d.ts} +11 -0
  16. package/dist/base/applications/common/types.d.ts.map +1 -0
  17. package/dist/base/applications/common/types.js.map +1 -0
  18. package/dist/base/applications/index.d.ts +2 -1
  19. package/dist/base/applications/index.d.ts.map +1 -1
  20. package/dist/base/applications/index.js +2 -1
  21. package/dist/base/applications/index.js.map +1 -1
  22. package/dist/base/applications/server.d.ts +6 -2
  23. package/dist/base/applications/server.d.ts.map +1 -1
  24. package/dist/base/applications/server.js +34 -2
  25. package/dist/base/applications/server.js.map +1 -1
  26. package/dist/base/controllers/grpc/adapter.d.ts +2 -1
  27. package/dist/base/controllers/grpc/adapter.d.ts.map +1 -1
  28. package/dist/base/controllers/grpc/adapter.js +4 -3
  29. package/dist/base/controllers/grpc/adapter.js.map +1 -1
  30. package/dist/base/middlewares/app-error/app-error.middleware.d.ts +3 -2
  31. package/dist/base/middlewares/app-error/app-error.middleware.d.ts.map +1 -1
  32. package/dist/base/middlewares/app-error/app-error.middleware.js +4 -3
  33. package/dist/base/middlewares/app-error/app-error.middleware.js.map +1 -1
  34. package/dist/base/middlewares/request-spy/request-spy.middleware.d.ts +1 -1
  35. package/dist/base/middlewares/request-spy/request-spy.middleware.d.ts.map +1 -1
  36. package/dist/base/middlewares/request-spy/request-spy.middleware.js +13 -4
  37. package/dist/base/middlewares/request-spy/request-spy.middleware.js.map +1 -1
  38. package/dist/common/constants.d.ts.map +1 -1
  39. package/dist/common/constants.js +2 -1
  40. package/dist/common/constants.js.map +1 -1
  41. package/dist/common/environments.d.ts +31 -10
  42. package/dist/common/environments.d.ts.map +1 -1
  43. package/dist/common/environments.js +33 -10
  44. package/dist/common/environments.js.map +1 -1
  45. package/dist/components/api-reference/component.d.ts.map +1 -1
  46. package/dist/components/api-reference/component.js +4 -3
  47. package/dist/components/api-reference/component.js.map +1 -1
  48. package/dist/components/api-reference/index.d.ts +1 -1
  49. package/dist/components/api-reference/index.d.ts.map +1 -1
  50. package/dist/components/api-reference/index.js +1 -1
  51. package/dist/components/api-reference/index.js.map +1 -1
  52. package/dist/components/api-reference/ui/factory.d.ts +14 -0
  53. package/dist/components/api-reference/ui/factory.d.ts.map +1 -0
  54. package/dist/components/api-reference/{ui-factory.js → ui/factory.js} +12 -25
  55. package/dist/components/api-reference/ui/factory.js.map +1 -0
  56. package/dist/components/api-reference/ui/index.d.ts +4 -0
  57. package/dist/components/api-reference/ui/index.d.ts.map +1 -0
  58. package/dist/components/api-reference/ui/index.js +20 -0
  59. package/dist/components/api-reference/ui/index.js.map +1 -0
  60. package/dist/components/api-reference/ui/scalar.d.ts +8 -0
  61. package/dist/components/api-reference/ui/scalar.d.ts.map +1 -0
  62. package/dist/components/api-reference/ui/scalar.js +28 -0
  63. package/dist/components/api-reference/ui/scalar.js.map +1 -0
  64. package/dist/components/api-reference/ui/swagger.d.ts +8 -0
  65. package/dist/components/api-reference/ui/swagger.d.ts.map +1 -0
  66. package/dist/components/api-reference/ui/swagger.js +28 -0
  67. package/dist/components/api-reference/ui/swagger.js.map +1 -0
  68. package/dist/components/auth/authenticate/component.d.ts +5 -0
  69. package/dist/components/auth/authenticate/component.d.ts.map +1 -1
  70. package/dist/components/auth/authenticate/component.js +23 -0
  71. package/dist/components/auth/authenticate/component.js.map +1 -1
  72. package/dist/components/auth/authenticate/controllers/factory.d.ts +35 -3
  73. package/dist/components/auth/authenticate/controllers/factory.d.ts.map +1 -1
  74. package/dist/components/auth/authenticate/controllers/jwks/definitions.d.ts +40 -20
  75. package/dist/components/auth/authenticate/controllers/jwks/definitions.d.ts.map +1 -1
  76. package/dist/components/auth/authenticate/controllers/service-certs/definitions.d.ts +40 -20
  77. package/dist/components/auth/authenticate/controllers/service-certs/definitions.d.ts.map +1 -1
  78. package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.d.ts +2 -2
  79. package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.d.ts.map +1 -1
  80. package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.js +12 -8
  81. package/dist/components/auth/authenticate/services/bearer/jwks/issuer.service.js.map +1 -1
  82. package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.d.ts +1 -1
  83. package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.d.ts.map +1 -1
  84. package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.js +5 -3
  85. package/dist/components/auth/authenticate/services/bearer/jwks/verifier.service.js.map +1 -1
  86. package/dist/components/auth/authenticate/services/bearer/jws.service.d.ts +1 -2
  87. package/dist/components/auth/authenticate/services/bearer/jws.service.d.ts.map +1 -1
  88. package/dist/components/auth/authenticate/services/bearer/jws.service.js +5 -3
  89. package/dist/components/auth/authenticate/services/bearer/jws.service.js.map +1 -1
  90. package/dist/components/auth/authenticate/services/jose-loader.d.ts +16 -0
  91. package/dist/components/auth/authenticate/services/jose-loader.d.ts.map +1 -0
  92. package/dist/components/auth/authenticate/services/jose-loader.js +25 -0
  93. package/dist/components/auth/authenticate/services/jose-loader.js.map +1 -0
  94. package/dist/components/auth/authenticate/services/service/signer.service.d.ts.map +1 -1
  95. package/dist/components/auth/authenticate/services/service/signer.service.js +8 -5
  96. package/dist/components/auth/authenticate/services/service/signer.service.js.map +1 -1
  97. package/dist/components/auth/authenticate/services/service/verifier.service.d.ts.map +1 -1
  98. package/dist/components/auth/authenticate/services/service/verifier.service.js +19 -14
  99. package/dist/components/auth/authenticate/services/service/verifier.service.js.map +1 -1
  100. package/dist/components/auth/authenticate/strategies/index.d.ts +1 -1
  101. package/dist/components/auth/authenticate/strategies/index.d.ts.map +1 -1
  102. package/dist/components/auth/authenticate/strategies/index.js +1 -1
  103. package/dist/components/auth/authenticate/strategies/index.js.map +1 -1
  104. package/dist/components/auth/authenticate/strategies/jwks/index.d.ts +3 -0
  105. package/dist/components/auth/authenticate/strategies/jwks/index.d.ts.map +1 -0
  106. package/dist/components/auth/authenticate/strategies/jwks/index.js +19 -0
  107. package/dist/components/auth/authenticate/strategies/jwks/index.js.map +1 -0
  108. package/dist/components/auth/authenticate/strategies/jwks/issuer.d.ts +13 -0
  109. package/dist/components/auth/authenticate/strategies/jwks/issuer.d.ts.map +1 -0
  110. package/dist/components/auth/authenticate/strategies/{jwks.strategy.js → jwks/issuer.js} +4 -27
  111. package/dist/components/auth/authenticate/strategies/jwks/issuer.js.map +1 -0
  112. package/dist/components/auth/authenticate/strategies/{jwks.strategy.d.ts → jwks/verifier.d.ts} +2 -10
  113. package/dist/components/auth/authenticate/strategies/jwks/verifier.d.ts.map +1 -0
  114. package/dist/components/auth/authenticate/strategies/jwks/verifier.js +45 -0
  115. package/dist/components/auth/authenticate/strategies/jwks/verifier.js.map +1 -0
  116. package/dist/components/auth/authorize/adapters/base-filtered.d.ts +1 -1
  117. package/dist/components/auth/authorize/adapters/base-filtered.d.ts.map +1 -1
  118. package/dist/components/auth/authorize/adapters/base-filtered.js +5 -8
  119. package/dist/components/auth/authorize/adapters/base-filtered.js.map +1 -1
  120. package/dist/components/auth/authorize/adapters/common/index.d.ts +2 -0
  121. package/dist/components/auth/authorize/adapters/common/index.d.ts.map +1 -0
  122. package/dist/components/auth/authorize/adapters/common/index.js +18 -0
  123. package/dist/components/auth/authorize/adapters/common/index.js.map +1 -0
  124. package/dist/components/auth/authorize/adapters/{types.d.ts → common/types.d.ts} +1 -1
  125. package/dist/components/auth/authorize/adapters/common/types.d.ts.map +1 -0
  126. package/dist/components/auth/authorize/adapters/common/types.js.map +1 -0
  127. package/dist/components/auth/authorize/adapters/connector.d.ts +10 -0
  128. package/dist/components/auth/authorize/adapters/connector.d.ts.map +1 -0
  129. package/dist/components/auth/authorize/adapters/connector.js +20 -0
  130. package/dist/components/auth/authorize/adapters/connector.js.map +1 -0
  131. package/dist/components/auth/authorize/adapters/custom-grant-expander.d.ts +52 -0
  132. package/dist/components/auth/authorize/adapters/custom-grant-expander.d.ts.map +1 -0
  133. package/dist/components/auth/authorize/adapters/custom-grant-expander.js +111 -0
  134. package/dist/components/auth/authorize/adapters/custom-grant-expander.js.map +1 -0
  135. package/dist/components/auth/authorize/adapters/index.d.ts +4 -2
  136. package/dist/components/auth/authorize/adapters/index.d.ts.map +1 -1
  137. package/dist/components/auth/authorize/adapters/index.js +4 -2
  138. package/dist/components/auth/authorize/adapters/index.js.map +1 -1
  139. package/dist/components/auth/authorize/adapters/scoped-casbin/adapter.d.ts +93 -0
  140. package/dist/components/auth/authorize/adapters/scoped-casbin/adapter.d.ts.map +1 -0
  141. package/dist/components/auth/authorize/adapters/{scoped-casbin.adapter.js → scoped-casbin/adapter.js} +95 -97
  142. package/dist/components/auth/authorize/adapters/scoped-casbin/adapter.js.map +1 -0
  143. package/dist/components/auth/authorize/adapters/scoped-casbin/common/constants.d.ts +2 -0
  144. package/dist/components/auth/authorize/adapters/scoped-casbin/common/constants.d.ts.map +1 -0
  145. package/dist/components/auth/authorize/adapters/scoped-casbin/common/constants.js +5 -0
  146. package/dist/components/auth/authorize/adapters/scoped-casbin/common/constants.js.map +1 -0
  147. package/dist/components/auth/authorize/adapters/scoped-casbin/common/index.d.ts +3 -0
  148. package/dist/components/auth/authorize/adapters/scoped-casbin/common/index.d.ts.map +1 -0
  149. package/dist/components/auth/authorize/adapters/scoped-casbin/common/index.js +19 -0
  150. package/dist/components/auth/authorize/adapters/scoped-casbin/common/index.js.map +1 -0
  151. package/dist/components/auth/authorize/adapters/scoped-casbin/common/types.d.ts +50 -0
  152. package/dist/components/auth/authorize/adapters/scoped-casbin/common/types.d.ts.map +1 -0
  153. package/dist/components/auth/authorize/adapters/scoped-casbin/common/types.js +3 -0
  154. package/dist/components/auth/authorize/adapters/scoped-casbin/common/types.js.map +1 -0
  155. package/dist/components/auth/authorize/adapters/scoped-casbin/index.d.ts +4 -0
  156. package/dist/components/auth/authorize/adapters/scoped-casbin/index.d.ts.map +1 -0
  157. package/dist/components/auth/authorize/adapters/scoped-casbin/index.js +19 -0
  158. package/dist/components/auth/authorize/adapters/scoped-casbin/index.js.map +1 -0
  159. package/dist/components/auth/authorize/adapters/scoped-casbin/policy-edges.d.ts +17 -0
  160. package/dist/components/auth/authorize/adapters/scoped-casbin/policy-edges.d.ts.map +1 -0
  161. package/dist/components/auth/authorize/adapters/scoped-casbin/policy-edges.js +11 -0
  162. package/dist/components/auth/authorize/adapters/scoped-casbin/policy-edges.js.map +1 -0
  163. package/dist/components/auth/authorize/component.d.ts.map +1 -1
  164. package/dist/components/auth/authorize/component.js +3 -0
  165. package/dist/components/auth/authorize/component.js.map +1 -1
  166. package/dist/components/auth/authorize/enforcers/casbin.enforcer.d.ts +7 -36
  167. package/dist/components/auth/authorize/enforcers/casbin.enforcer.d.ts.map +1 -1
  168. package/dist/components/auth/authorize/enforcers/casbin.enforcer.js +48 -117
  169. package/dist/components/auth/authorize/enforcers/casbin.enforcer.js.map +1 -1
  170. package/dist/components/auth/authorize/enforcers/index.d.ts +2 -1
  171. package/dist/components/auth/authorize/enforcers/index.d.ts.map +1 -1
  172. package/dist/components/auth/authorize/enforcers/index.js +2 -1
  173. package/dist/components/auth/authorize/enforcers/index.js.map +1 -1
  174. package/dist/components/auth/authorize/enforcers/policy-line-codec.d.ts +26 -0
  175. package/dist/components/auth/authorize/enforcers/policy-line-codec.d.ts.map +1 -0
  176. package/dist/components/auth/authorize/enforcers/policy-line-codec.js +59 -0
  177. package/dist/components/auth/authorize/enforcers/policy-line-codec.js.map +1 -0
  178. package/dist/components/auth/authorize/enforcers/user-policy-line-cache.d.ts +46 -0
  179. package/dist/components/auth/authorize/enforcers/user-policy-line-cache.d.ts.map +1 -0
  180. package/dist/components/auth/authorize/enforcers/user-policy-line-cache.js +98 -0
  181. package/dist/components/auth/authorize/enforcers/user-policy-line-cache.js.map +1 -0
  182. package/dist/components/auth/authorize/index.d.ts +1 -0
  183. package/dist/components/auth/authorize/index.d.ts.map +1 -1
  184. package/dist/components/auth/authorize/index.js +1 -0
  185. package/dist/components/auth/authorize/index.js.map +1 -1
  186. package/dist/components/auth/authorize/role-managers/base.d.ts +34 -0
  187. package/dist/components/auth/authorize/role-managers/base.d.ts.map +1 -0
  188. package/dist/components/auth/authorize/role-managers/base.js +77 -0
  189. package/dist/components/auth/authorize/role-managers/base.js.map +1 -0
  190. package/dist/components/auth/authorize/role-managers/domain-hierarchy.d.ts +28 -0
  191. package/dist/components/auth/authorize/role-managers/domain-hierarchy.d.ts.map +1 -0
  192. package/dist/components/auth/authorize/role-managers/domain-hierarchy.js +77 -0
  193. package/dist/components/auth/authorize/role-managers/domain-hierarchy.js.map +1 -0
  194. package/dist/components/auth/authorize/role-managers/index.d.ts +5 -0
  195. package/dist/components/auth/authorize/role-managers/index.d.ts.map +1 -0
  196. package/dist/components/auth/authorize/role-managers/index.js +21 -0
  197. package/dist/components/auth/authorize/role-managers/index.js.map +1 -0
  198. package/dist/components/auth/authorize/role-managers/membership.d.ts +21 -0
  199. package/dist/components/auth/authorize/role-managers/membership.d.ts.map +1 -0
  200. package/dist/components/auth/authorize/role-managers/membership.js +69 -0
  201. package/dist/components/auth/authorize/role-managers/membership.js.map +1 -0
  202. package/dist/components/auth/authorize/{enforcers/resource-role-manager.d.ts → role-managers/resource.d.ts} +3 -9
  203. package/dist/components/auth/authorize/role-managers/resource.d.ts.map +1 -0
  204. package/dist/components/auth/authorize/{enforcers/resource-role-manager.js → role-managers/resource.js} +9 -21
  205. package/dist/components/auth/authorize/role-managers/resource.js.map +1 -0
  206. package/dist/components/auth/models/entities/policy-definition.model.d.ts +49 -14
  207. package/dist/components/auth/models/entities/policy-definition.model.d.ts.map +1 -1
  208. package/dist/components/auth/models/entities/policy-definition.model.js +45 -11
  209. package/dist/components/auth/models/entities/policy-definition.model.js.map +1 -1
  210. package/dist/components/auth/models/entities/user.model.d.ts +2 -2
  211. package/dist/components/controller/grpc/grpc.component.d.ts.map +1 -1
  212. package/dist/components/controller/grpc/grpc.component.js +1 -5
  213. package/dist/components/controller/grpc/grpc.component.js.map +1 -1
  214. package/dist/components/health-check/common/constants.d.ts +5 -0
  215. package/dist/components/health-check/common/constants.d.ts.map +1 -0
  216. package/dist/components/health-check/common/constants.js +9 -0
  217. package/dist/components/health-check/common/constants.js.map +1 -0
  218. package/dist/components/health-check/common/index.d.ts +1 -0
  219. package/dist/components/health-check/common/index.d.ts.map +1 -1
  220. package/dist/components/health-check/common/index.js +1 -0
  221. package/dist/components/health-check/common/index.js.map +1 -1
  222. package/dist/components/health-check/common/keys.d.ts +2 -0
  223. package/dist/components/health-check/common/keys.d.ts.map +1 -1
  224. package/dist/components/health-check/common/keys.js +2 -0
  225. package/dist/components/health-check/common/keys.js.map +1 -1
  226. package/dist/components/health-check/common/rest-paths.d.ts +1 -0
  227. package/dist/components/health-check/common/rest-paths.d.ts.map +1 -1
  228. package/dist/components/health-check/common/rest-paths.js +1 -0
  229. package/dist/components/health-check/common/rest-paths.js.map +1 -1
  230. package/dist/components/health-check/common/types.d.ts +22 -0
  231. package/dist/components/health-check/common/types.d.ts.map +1 -1
  232. package/dist/components/health-check/component.d.ts +9 -3
  233. package/dist/components/health-check/component.d.ts.map +1 -1
  234. package/dist/components/health-check/component.js +38 -1
  235. package/dist/components/health-check/component.js.map +1 -1
  236. package/dist/components/health-check/controller.d.ts +10 -2
  237. package/dist/components/health-check/controller.d.ts.map +1 -1
  238. package/dist/components/health-check/controller.js +79 -13
  239. package/dist/components/health-check/controller.js.map +1 -1
  240. package/dist/components/health-check/index.d.ts +1 -0
  241. package/dist/components/health-check/index.d.ts.map +1 -1
  242. package/dist/components/health-check/index.js +1 -0
  243. package/dist/components/health-check/index.js.map +1 -1
  244. package/dist/components/health-check/reporter.d.ts +98 -0
  245. package/dist/components/health-check/reporter.d.ts.map +1 -0
  246. package/dist/components/health-check/reporter.js +138 -0
  247. package/dist/components/health-check/reporter.js.map +1 -0
  248. package/dist/components/mail/common/constants.d.ts +8 -0
  249. package/dist/components/mail/common/constants.d.ts.map +1 -1
  250. package/dist/components/mail/common/constants.js +9 -1
  251. package/dist/components/mail/common/constants.js.map +1 -1
  252. package/dist/components/mail/common/types/index.d.ts +6 -0
  253. package/dist/components/mail/common/types/index.d.ts.map +1 -0
  254. package/dist/components/mail/common/types/index.js +22 -0
  255. package/dist/components/mail/common/types/index.js.map +1 -0
  256. package/dist/components/mail/common/types/message.d.ts +49 -0
  257. package/dist/components/mail/common/types/message.d.ts.map +1 -0
  258. package/dist/components/mail/common/types/message.js +3 -0
  259. package/dist/components/mail/common/types/message.js.map +1 -0
  260. package/dist/components/mail/common/types/options.d.ts +65 -0
  261. package/dist/components/mail/common/types/options.d.ts.map +1 -0
  262. package/dist/components/mail/common/types/options.js +3 -0
  263. package/dist/components/mail/common/types/options.js.map +1 -0
  264. package/dist/components/mail/common/types/queue.d.ts +56 -0
  265. package/dist/components/mail/common/types/queue.d.ts.map +1 -0
  266. package/dist/components/mail/common/types/queue.js +3 -0
  267. package/dist/components/mail/common/types/queue.js.map +1 -0
  268. package/dist/components/mail/common/types/template.d.ts +33 -0
  269. package/dist/components/mail/common/types/template.d.ts.map +1 -0
  270. package/dist/components/mail/common/types/template.js +3 -0
  271. package/dist/components/mail/common/types/template.js.map +1 -0
  272. package/dist/components/mail/common/types/verification.d.ts +26 -0
  273. package/dist/components/mail/common/types/verification.d.ts.map +1 -0
  274. package/dist/components/mail/common/types/verification.js +3 -0
  275. package/dist/components/mail/common/types/verification.js.map +1 -0
  276. package/dist/components/mail/component.d.ts +4 -1
  277. package/dist/components/mail/component.d.ts.map +1 -1
  278. package/dist/components/mail/component.js +12 -0
  279. package/dist/components/mail/component.js.map +1 -1
  280. package/dist/components/mail/helpers/executors/bull-mq-executor.helper.d.ts +1 -0
  281. package/dist/components/mail/helpers/executors/bull-mq-executor.helper.d.ts.map +1 -1
  282. package/dist/components/mail/helpers/executors/bull-mq-executor.helper.js +3 -0
  283. package/dist/components/mail/helpers/executors/bull-mq-executor.helper.js.map +1 -1
  284. package/dist/components/mail/helpers/executors/internal-queue-executor.helper.d.ts.map +1 -1
  285. package/dist/components/mail/helpers/executors/internal-queue-executor.helper.js +2 -1
  286. package/dist/components/mail/helpers/executors/internal-queue-executor.helper.js.map +1 -1
  287. package/dist/components/mail/helpers/transporters/amazon-ses-transporter.helper.d.ts +19 -0
  288. package/dist/components/mail/helpers/transporters/amazon-ses-transporter.helper.d.ts.map +1 -0
  289. package/dist/components/mail/helpers/transporters/amazon-ses-transporter.helper.js +112 -0
  290. package/dist/components/mail/helpers/transporters/amazon-ses-transporter.helper.js.map +1 -0
  291. package/dist/components/mail/helpers/transporters/index.d.ts +2 -1
  292. package/dist/components/mail/helpers/transporters/index.d.ts.map +1 -1
  293. package/dist/components/mail/helpers/transporters/index.js +2 -1
  294. package/dist/components/mail/helpers/transporters/index.js.map +1 -1
  295. package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.d.ts.map +1 -1
  296. package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.js +4 -3
  297. package/dist/components/mail/helpers/transporters/mailgun-transporter.helper.js.map +1 -1
  298. package/dist/components/mail/providers/mail-transporter.provider.d.ts +2 -0
  299. package/dist/components/mail/providers/mail-transporter.provider.d.ts.map +1 -1
  300. package/dist/components/mail/providers/mail-transporter.provider.js +35 -17
  301. package/dist/components/mail/providers/mail-transporter.provider.js.map +1 -1
  302. package/dist/components/mail/services/generators/index.d.ts +4 -0
  303. package/dist/components/mail/services/generators/index.d.ts.map +1 -0
  304. package/dist/components/mail/services/generators/index.js +20 -0
  305. package/dist/components/mail/services/generators/index.js.map +1 -0
  306. package/dist/components/mail/services/generators/numeric-code.d.ts +7 -0
  307. package/dist/components/mail/services/generators/numeric-code.d.ts.map +1 -0
  308. package/dist/components/mail/services/generators/numeric-code.js +20 -0
  309. package/dist/components/mail/services/generators/numeric-code.js.map +1 -0
  310. package/dist/components/mail/services/generators/random-token.d.ts +7 -0
  311. package/dist/components/mail/services/generators/random-token.d.ts.map +1 -0
  312. package/dist/components/mail/services/generators/random-token.js +18 -0
  313. package/dist/components/mail/services/generators/random-token.js.map +1 -0
  314. package/dist/components/mail/services/generators/verification-data.d.ts +9 -0
  315. package/dist/components/mail/services/generators/verification-data.d.ts.map +1 -0
  316. package/dist/components/mail/services/{generator.service.js → generators/verification-data.js} +10 -25
  317. package/dist/components/mail/services/generators/verification-data.js.map +1 -0
  318. package/dist/components/mail/services/index.d.ts +1 -1
  319. package/dist/components/mail/services/index.d.ts.map +1 -1
  320. package/dist/components/mail/services/index.js +1 -1
  321. package/dist/components/mail/services/index.js.map +1 -1
  322. package/dist/components/mail/services/mail.service.d.ts.map +1 -1
  323. package/dist/components/mail/services/mail.service.js +18 -17
  324. package/dist/components/mail/services/mail.service.js.map +1 -1
  325. package/dist/components/mail/utilities/address.utility.d.ts +9 -0
  326. package/dist/components/mail/utilities/address.utility.d.ts.map +1 -0
  327. package/dist/components/mail/utilities/address.utility.js +36 -0
  328. package/dist/components/mail/utilities/address.utility.js.map +1 -0
  329. package/dist/components/mail/utilities/index.d.ts +2 -0
  330. package/dist/components/mail/utilities/index.d.ts.map +1 -1
  331. package/dist/components/mail/utilities/index.js +2 -0
  332. package/dist/components/mail/utilities/index.js.map +1 -1
  333. package/dist/components/mail/utilities/mime.utility.d.ts +19 -0
  334. package/dist/components/mail/utilities/mime.utility.d.ts.map +1 -0
  335. package/dist/components/mail/utilities/mime.utility.js +414 -0
  336. package/dist/components/mail/utilities/mime.utility.js.map +1 -0
  337. package/dist/components/static-asset/common/commit-token.d.ts +23 -0
  338. package/dist/components/static-asset/common/commit-token.d.ts.map +1 -0
  339. package/dist/components/static-asset/common/commit-token.js +40 -0
  340. package/dist/components/static-asset/common/commit-token.js.map +1 -0
  341. package/dist/components/static-asset/common/constants.d.ts +13 -1
  342. package/dist/components/static-asset/common/constants.d.ts.map +1 -1
  343. package/dist/components/static-asset/common/constants.js +29 -2
  344. package/dist/components/static-asset/common/constants.js.map +1 -1
  345. package/dist/components/static-asset/common/errors.d.ts +43 -0
  346. package/dist/components/static-asset/common/errors.d.ts.map +1 -1
  347. package/dist/components/static-asset/common/errors.js +37 -0
  348. package/dist/components/static-asset/common/errors.js.map +1 -1
  349. package/dist/components/static-asset/common/index.d.ts +1 -0
  350. package/dist/components/static-asset/common/index.d.ts.map +1 -1
  351. package/dist/components/static-asset/common/index.js +1 -0
  352. package/dist/components/static-asset/common/index.js.map +1 -1
  353. package/dist/components/static-asset/common/keys.d.ts +1 -0
  354. package/dist/components/static-asset/common/keys.d.ts.map +1 -1
  355. package/dist/components/static-asset/common/keys.js +1 -0
  356. package/dist/components/static-asset/common/keys.js.map +1 -1
  357. package/dist/components/static-asset/common/types.d.ts +87 -30
  358. package/dist/components/static-asset/common/types.d.ts.map +1 -1
  359. package/dist/components/static-asset/component.d.ts +4 -1
  360. package/dist/components/static-asset/component.d.ts.map +1 -1
  361. package/dist/components/static-asset/component.js +21 -10
  362. package/dist/components/static-asset/component.js.map +1 -1
  363. package/dist/components/static-asset/controller/base.definition.d.ts +27 -554
  364. package/dist/components/static-asset/controller/base.definition.d.ts.map +1 -1
  365. package/dist/components/static-asset/controller/base.definition.js +250 -286
  366. package/dist/components/static-asset/controller/base.definition.js.map +1 -1
  367. package/dist/components/static-asset/controller/factory.d.ts +76 -7
  368. package/dist/components/static-asset/controller/factory.d.ts.map +1 -1
  369. package/dist/components/static-asset/controller/factory.js +565 -138
  370. package/dist/components/static-asset/controller/factory.js.map +1 -1
  371. package/dist/components/static-asset/index.d.ts +1 -0
  372. package/dist/components/static-asset/index.d.ts.map +1 -1
  373. package/dist/components/static-asset/index.js +1 -0
  374. package/dist/components/static-asset/index.js.map +1 -1
  375. package/dist/components/static-asset/ingest.d.ts +58 -0
  376. package/dist/components/static-asset/ingest.d.ts.map +1 -0
  377. package/dist/components/static-asset/ingest.js +82 -0
  378. package/dist/components/static-asset/ingest.js.map +1 -0
  379. package/dist/components/static-asset/models/base.model.d.ts +44 -6
  380. package/dist/components/static-asset/models/base.model.d.ts.map +1 -1
  381. package/dist/components/static-asset/models/base.model.js +7 -1
  382. package/dist/components/static-asset/models/base.model.js.map +1 -1
  383. package/dist/components/websocket/handlers/bun.handler.d.ts.map +1 -1
  384. package/dist/components/websocket/handlers/bun.handler.js +2 -1
  385. package/dist/components/websocket/handlers/bun.handler.js.map +1 -1
  386. package/dist/connectors/postgres/drivers/postgres-js.d.mts +3 -0
  387. package/dist/connectors/postgres/drivers/postgres-js.d.mts.map +1 -0
  388. package/dist/connectors/postgres/drivers/postgres-js.mjs +3 -0
  389. package/dist/connectors/postgres/drivers/postgres-js.mjs.map +1 -0
  390. package/dist/helpers/index.d.ts.map +1 -1
  391. package/dist/helpers/index.js.map +1 -1
  392. package/dist/index.d.ts +1 -1
  393. package/dist/index.d.ts.map +1 -1
  394. package/package.json +29 -26
  395. package/dist/base/applications/types.d.ts.map +0 -1
  396. package/dist/base/applications/types.js.map +0 -1
  397. package/dist/components/api-reference/ui-factory.d.ts +0 -21
  398. package/dist/components/api-reference/ui-factory.d.ts.map +0 -1
  399. package/dist/components/api-reference/ui-factory.js.map +0 -1
  400. package/dist/components/auth/authenticate/strategies/jwks.strategy.d.ts.map +0 -1
  401. package/dist/components/auth/authenticate/strategies/jwks.strategy.js.map +0 -1
  402. package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.d.ts +0 -121
  403. package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.d.ts.map +0 -1
  404. package/dist/components/auth/authorize/adapters/scoped-casbin.adapter.js.map +0 -1
  405. package/dist/components/auth/authorize/adapters/types.d.ts.map +0 -1
  406. package/dist/components/auth/authorize/adapters/types.js.map +0 -1
  407. package/dist/components/auth/authorize/enforcers/resource-role-manager.d.ts.map +0 -1
  408. package/dist/components/auth/authorize/enforcers/resource-role-manager.js.map +0 -1
  409. package/dist/components/mail/common/types.d.ts +0 -201
  410. package/dist/components/mail/common/types.d.ts.map +0 -1
  411. package/dist/components/mail/common/types.js +0 -10
  412. package/dist/components/mail/common/types.js.map +0 -1
  413. package/dist/components/mail/services/generator.service.d.ts +0 -14
  414. package/dist/components/mail/services/generator.service.d.ts.map +0 -1
  415. package/dist/components/mail/services/generator.service.js.map +0 -1
  416. /package/dist/base/applications/{types.js → common/types.js} +0 -0
  417. /package/dist/components/auth/authorize/adapters/{types.js → common/types.js} +0 -0
@@ -1,58 +1,87 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ScopedCasbinAdapter = exports.PrincipalPolicyEdges = void 0;
3
+ exports.ScopedCasbinAdapter = void 0;
4
4
  const drizzle_orm_1 = require("drizzle-orm");
5
5
  const ignis_kernel_1 = require("@venizia/ignis-kernel");
6
6
  const ignis_kernel_2 = require("@venizia/ignis-kernel");
7
- const base_filtered_1 = require("./base-filtered");
8
- class PrincipalPolicyEdges {
9
- static { this.DIRECT = 'direct'; }
10
- static { this.ROLE_EDGE = 'roleEdge'; }
11
- static { this.ROLE_GRANT = 'roleGrant'; }
12
- static { this.DOMAIN_EDGE = 'domainEdge'; }
13
- }
14
- exports.PrincipalPolicyEdges = PrincipalPolicyEdges;
15
- const DEFAULT_SCHEMA = 'public';
16
- /** Filtered casbin adapter for the scoped RBAC model: loads ONE principal's edges (role assignments, memberships, grants) plus the shared structural hierarchy trees as casbin lines. Read-only. */
7
+ const base_filtered_1 = require("../base-filtered");
8
+ const custom_grant_expander_1 = require("../custom-grant-expander");
9
+ const policy_edges_1 = require("./policy-edges");
10
+ const common_1 = require("./common");
11
+ /**
12
+ * Filtered casbin adapter for the scoped RBAC model: loads ONE principal's edges (role assignments,
13
+ * memberships, grants) plus the shared structural hierarchy trees as casbin lines. Read-only.
14
+ *
15
+ * EVERY branch below must select by `variant = <known value>` or `variant IN (<known values>)`.
16
+ * Never `variant NOT IN (...)`, and never a bare select that classifies afterwards. Applications
17
+ * store their own edge kinds in this same table (declared via `extraVariants`), and an exclusion
18
+ * filter would sweep those unknown rows into a branch that has no idea what they mean. The current
19
+ * shape makes an undeclared variant inert, which is what makes sharing the table safe.
20
+ */
17
21
  class ScopedCasbinAdapter extends base_filtered_1.BaseFilteredAdapter {
18
22
  constructor(opts) {
19
23
  super({ scope: ScopedCasbinAdapter.name, dataSource: opts.dataSource });
20
24
  this.entities = opts.entities;
25
+ this.resolveDomainEdges = opts.resolveDomainEdges;
26
+ this.customGrantExpander = new custom_grant_expander_1.CustomGrantExpander({
27
+ dataSource: opts.dataSource,
28
+ entities: { permission: opts.entities.permission, softDelete: opts.entities.softDelete },
29
+ });
21
30
  }
22
- /** One wave: the principal-scoped CTE and the merged structural-edges query are issued together - the role closure resolves in SQL, so neither waits on the other. */
31
+ /**
32
+ * One wave: the principal-scoped CTE and the merged structural-edges query are issued together -
33
+ * the role closure resolves in SQL, so neither waits on the other. `resolveDomainEdges` cannot
34
+ * join that wave - it needs the domain closure the principal-scoped CTE produces - but it does
35
+ * not wait for the structural-edges query either: both run concurrently once the closure is known.
36
+ */
23
37
  async loadFilteredPolicy(model, filter) {
24
38
  const { principal } = filter;
25
39
  const { principals } = this.entities;
26
- const [principalRows, structuralEdges] = await Promise.all([
27
- this.queryPrincipalPolicies({ principal }),
28
- this.queryEdgePolicies(),
29
- ]);
40
+ const principalPoliciesPromise = this.queryPrincipalPolicies({ principal });
41
+ const structuralEdgesPromise = this.queryEdgePolicies();
42
+ const principalRows = await principalPoliciesPromise;
30
43
  const lines = [];
31
44
  const directGrants = [];
32
45
  const roleGrants = [];
46
+ const domainClosure = new Set();
33
47
  for (const row of principalRows) {
34
48
  switch (row.kind) {
35
- case PrincipalPolicyEdges.ROLE_EDGE: {
49
+ case policy_edges_1.PrincipalPolicyEdges.ROLE_EDGE: {
36
50
  lines.push(`${ignis_kernel_2.AuthorizationPolicyVariants.ROLE_INHERITS.rule}, ${principals.role}_${row.subjectId}, ${principals.role}_${row.targetId}, *`);
37
51
  break;
38
52
  }
39
- case PrincipalPolicyEdges.ROLE_GRANT: {
53
+ case policy_edges_1.PrincipalPolicyEdges.ROLE_GRANT: {
40
54
  roleGrants.push(row);
41
55
  break;
42
56
  }
43
- case PrincipalPolicyEdges.DOMAIN_EDGE: {
57
+ case policy_edges_1.PrincipalPolicyEdges.DOMAIN_EDGE: {
44
58
  lines.push(`${ignis_kernel_2.AuthorizationPolicyVariants.DOMAIN_INHERITS.rule}, ${row.subjectId}, ${row.targetId}`);
59
+ // Both ends are, by construction, members of the principal's domain_closure CTE.
60
+ domainClosure.add(String(row.subjectId));
61
+ domainClosure.add(String(row.targetId));
45
62
  break;
46
63
  }
47
64
  default: {
65
+ if (row.variant === ignis_kernel_2.AuthorizationPolicyVariants.JOIN_DOMAIN.action) {
66
+ domainClosure.add(`${row.targetType}_${row.targetId}`);
67
+ }
48
68
  this.collectDirectRow({ row, principal, lines, directGrants });
49
69
  break;
50
70
  }
51
71
  }
52
72
  }
73
+ const hookLinesPromise = this.resolveDomainEdgeLines({
74
+ principal,
75
+ domains: [...domainClosure],
76
+ });
53
77
  lines.push(...(await this.buildGrantLines({ subjectType: principal.type, rows: directGrants })));
54
78
  lines.push(...(await this.buildGrantLines({ subjectType: principals.role, rows: roleGrants })));
79
+ const [structuralEdges, hookLines] = await Promise.all([
80
+ structuralEdgesPromise,
81
+ hookLinesPromise,
82
+ ]);
55
83
  lines.push(...structuralEdges);
84
+ lines.push(...hookLines);
56
85
  await this.loadLines({ model, lines });
57
86
  }
58
87
  /** Route one `direct` row to its casbin line, or to the grant batch. */
@@ -80,9 +109,43 @@ class ScopedCasbinAdapter extends base_filtered_1.BaseFilteredAdapter {
80
109
  }
81
110
  }
82
111
  }
112
+ /**
113
+ * Calls the `resolveDomainEdges` hook, if supplied, and turns its edges into `g3` lines using
114
+ * the same shape the DOMAIN_EDGE branch emits. A throwing hook is logged and treated as no
115
+ * edges - the rows already gathered for this principal still load. This is the safe direction:
116
+ * a missing hierarchy edge can only narrow what `g`/`g2`/`g3` reach, never widen it, so the
117
+ * failure degrades to less access rather than either an outage or excess access.
118
+ */
119
+ async resolveDomainEdgeLines(opts) {
120
+ if (!this.resolveDomainEdges) {
121
+ return [];
122
+ }
123
+ let edges;
124
+ try {
125
+ edges = await this.resolveDomainEdges(opts);
126
+ }
127
+ catch (error) {
128
+ this.logger
129
+ .for(this.resolveDomainEdgeLines.name)
130
+ .error('resolveDomainEdges hook threw - continuing without its edges for this load | principal: %s_%s | error: %s', opts.principal.type, opts.principal.id, error);
131
+ return [];
132
+ }
133
+ return edges.map(edge => `${ignis_kernel_2.AuthorizationPolicyVariants.DOMAIN_INHERITS.rule}, ${edge.child}, ${edge.parent}`);
134
+ }
83
135
  /** Schema for a table, defaulting to `public`. */
84
136
  schemaOf(table) {
85
- return table.schemaName ?? DEFAULT_SCHEMA;
137
+ return table.schemaName ?? common_1.DEFAULT_SCHEMA;
138
+ }
139
+ /** The casbin domain token, built from the stored pair - one expression for every SELECT so they cannot drift. NULL reaches `buildGrantLines` as `ANY_MEMBER`. The alias is emitted raw for the same reason as in `softDeleteClause`: quoting folds it to a different case than the unquoted FROM alias. */
140
+ domainTokenSelection(opts) {
141
+ const column = (name) => (0, drizzle_orm_1.sql) `${drizzle_orm_1.sql.raw(opts.alias)}.${drizzle_orm_1.sql.identifier(name)}`;
142
+ const domainType = column('domain_type');
143
+ const domainId = column('domain_id');
144
+ return (0, drizzle_orm_1.sql) `CASE
145
+ WHEN ${domainType} IS NULL THEN NULL
146
+ WHEN ${domainId} IS NULL THEN ${domainType}
147
+ ELSE ${domainType} || '_' || ${domainId}::text
148
+ END AS "domain"`;
86
149
  }
87
150
  /** Schema-qualified table reference (`"<schema>"."<table>"`) for use after FROM/JOIN with an alias. */
88
151
  qualifiedTable(opts) {
@@ -145,14 +208,14 @@ class ScopedCasbinAdapter extends base_filtered_1.BaseFilteredAdapter {
145
208
  )
146
209
 
147
210
  SELECT
148
- ${PrincipalPolicyEdges.DIRECT}::text AS "kind",
211
+ ${policy_edges_1.PrincipalPolicyEdges.DIRECT}::text AS "kind",
149
212
  policyDefinition.variant,
150
213
  policyDefinition.subject_id::text AS "subjectId",
151
214
  policyDefinition.target_type AS "targetType",
152
215
  policyDefinition.target_id::text AS "targetId",
153
216
  policyDefinition.action,
154
217
  policyDefinition.effect,
155
- policyDefinition.domain,
218
+ ${this.domainTokenSelection({ alias: 'policyDefinition' })},
156
219
  permission.code AS "objectCode",
157
220
  permission.subject AS "objectSubject",
158
221
  permission.method AS "objectMethod"${metadataSelection}
@@ -174,7 +237,7 @@ class ScopedCasbinAdapter extends base_filtered_1.BaseFilteredAdapter {
174
237
  UNION ALL
175
238
 
176
239
  SELECT
177
- ${PrincipalPolicyEdges.ROLE_EDGE}::text AS "kind",
240
+ ${policy_edges_1.PrincipalPolicyEdges.ROLE_EDGE}::text AS "kind",
178
241
  policyDefinition.variant,
179
242
  policyDefinition.subject_id::text AS "subjectId",
180
243
  policyDefinition.target_type AS "targetType",
@@ -192,14 +255,14 @@ class ScopedCasbinAdapter extends base_filtered_1.BaseFilteredAdapter {
192
255
  UNION ALL
193
256
 
194
257
  SELECT
195
- ${PrincipalPolicyEdges.ROLE_GRANT}::text AS "kind",
258
+ ${policy_edges_1.PrincipalPolicyEdges.ROLE_GRANT}::text AS "kind",
196
259
  policyDefinition.variant,
197
260
  policyDefinition.subject_id::text AS "subjectId",
198
261
  policyDefinition.target_type AS "targetType",
199
262
  policyDefinition.target_id::text AS "targetId",
200
263
  policyDefinition.action,
201
264
  policyDefinition.effect,
202
- policyDefinition.domain,
265
+ ${this.domainTokenSelection({ alias: 'policyDefinition' })},
203
266
  permission.code AS "objectCode",
204
267
  permission.subject AS "objectSubject",
205
268
  permission.method AS "objectMethod"${metadataSelection}
@@ -213,7 +276,7 @@ class ScopedCasbinAdapter extends base_filtered_1.BaseFilteredAdapter {
213
276
  UNION ALL
214
277
 
215
278
  SELECT
216
- ${PrincipalPolicyEdges.DOMAIN_EDGE}::text AS "kind",
279
+ ${policy_edges_1.PrincipalPolicyEdges.DOMAIN_EDGE}::text AS "kind",
217
280
  policyDefinition.variant,
218
281
  policyDefinition.subject_type || '_' || policyDefinition.subject_id::text AS "subjectId",
219
282
  NULL AS "targetType",
@@ -268,7 +331,7 @@ class ScopedCasbinAdapter extends base_filtered_1.BaseFilteredAdapter {
268
331
  .error('Skipping custom grant row whose subject or method did not resolve - the target is missing or soft-deleted | subject: %s_%s | object: %s', subjectType, row.subjectId, row.objectCode);
269
332
  continue;
270
333
  }
271
- const rejection = this.rejectCustomRow({
334
+ const rejection = this.customGrantExpander.rejectCustomRow({
272
335
  row: {
273
336
  subjectId: row.subjectId,
274
337
  objectCode: row.objectCode,
@@ -290,78 +353,13 @@ class ScopedCasbinAdapter extends base_filtered_1.BaseFilteredAdapter {
290
353
  effect,
291
354
  });
292
355
  }
293
- lines.push(...(await this.expandCustomGrants({ subjectType, customRows })));
294
- return lines;
295
- }
296
- /** Why a custom-looking grant row cannot be honoured, or null when it is well formed. */
297
- rejectCustomRow(opts) {
298
- const { row, parsed, isCustomAction, metadataColumnName } = opts;
299
- if (isCustomAction && !metadataColumnName) {
300
- return `Skipping custom grant - entities.policyDefinition.metadata.columnName is not mapped, so metadata.ops cannot be read | subject id: ${row.subjectId} | object: ${row.objectCode}`;
301
- }
302
- if (isCustomAction && !parsed) {
303
- return `Skipping custom grant - metadata.ops is missing, empty, or not an array of non-empty strings | subject id: ${row.subjectId} | object: ${row.objectCode}`;
304
- }
305
- if (!isCustomAction && parsed) {
306
- return `Skipping grant - metadata.ops is present but action is not "${ignis_kernel_2.AuthorizationActions.CUSTOM}", so the intent is ambiguous | subject id: ${row.subjectId} | object: ${row.objectCode}`;
307
- }
308
- if (row.objectMethod !== ignis_kernel_1.AuthorizationPermissionBuilder.RESOURCE_NODE_METHOD) {
309
- return `Skipping custom grant - the target must be a subject-level resource node | subject id: ${row.subjectId} | object: ${row.objectCode}`;
310
- }
311
- return null;
312
- }
313
- /** Resolve every custom row's ops in one catalog query, then emit one line per resolved operation. */
314
- async expandCustomGrants(opts) {
315
- if (!opts.customRows.length) {
316
- return [];
317
- }
318
- const seen = new Set();
319
- const pairs = [];
320
- const candidates = opts.customRows.flatMap(row => row.ops.map(op => ({ subject: row.objectSubject, method: op })));
321
- for (const candidate of candidates) {
322
- const key = `${candidate.subject}.${candidate.method}`;
323
- if (seen.has(key)) {
324
- continue;
325
- }
326
- seen.add(key);
327
- pairs.push(candidate);
328
- }
329
- const catalog = await this.queryOperationCatalog({ pairs });
330
- const byKey = new Map(catalog.map(entry => [`${entry.subject}.${entry.method}`, entry]));
331
- const lines = [];
332
- for (const row of opts.customRows) {
333
- const { valid, unknown } = ignis_kernel_1.GrantBuilder.getInstance().validateCustomGrantOps({
334
- ops: row.ops,
335
- subject: row.objectSubject,
336
- catalog,
337
- });
338
- if (unknown.length) {
339
- this.logger
340
- .for(this.expandCustomGrants.name)
341
- .error('Skipping unresolvable operations in a custom grant | subject id: %s | resource: %s | unknown: %s', row.subjectId, row.objectSubject, unknown.join(', '));
342
- }
343
- for (const op of valid) {
344
- const entry = byKey.get(`${row.objectSubject}.${op}`);
345
- lines.push(`${ignis_kernel_2.AuthorizationPolicyVariants.GRANT.rule}, ${opts.subjectType}_${row.subjectId}, ${row.domain}, ${entry.code}, ${entry.action}, ${row.effect}`);
346
- }
356
+ const expanded = await this.customGrantExpander.expandCustomGrants({ subjectType, customRows });
357
+ for (const rejection of expanded.rejections) {
358
+ this.logger.for(this.buildGrantLines.name).error(rejection);
347
359
  }
360
+ lines.push(...expanded.lines);
348
361
  return lines;
349
362
  }
350
- /** Resolve `(subject, method)` pairs to catalogued operations. One query for the whole extraction. */
351
- async queryOperationCatalog(opts) {
352
- if (!opts.pairs.length) {
353
- return [];
354
- }
355
- const permissionTable = this.qualifiedTable({ table: this.entities.permission });
356
- return this.query({
357
- statement: (0, drizzle_orm_1.sql) `
358
- SELECT permission.subject, permission.method, permission.code, permission.action
359
- FROM ${permissionTable} permission
360
- WHERE (permission.subject, permission.method) IN (${drizzle_orm_1.sql.join(opts.pairs.map(pair => (0, drizzle_orm_1.sql) `(${pair.subject}, ${pair.method})`), (0, drizzle_orm_1.sql) `, `)})
361
- AND permission.method <> ${ignis_kernel_1.AuthorizationPermissionBuilder.RESOURCE_NODE_METHOD}${this.softDeleteClause({ alias: 'permission' })}
362
- `,
363
- });
364
- }
365
363
  /** The two code-fixed structural trees only (`g4` resource, `g5` action) - constant regardless of tenant count. Domain edges (`g3`) grow with the domain count, so they are principal-scoped in {@link queryPrincipalPolicies} instead. */
366
364
  async queryEdgePolicies() {
367
365
  const { policyDefinition, permission } = this.entities;
@@ -392,4 +390,4 @@ class ScopedCasbinAdapter extends base_filtered_1.BaseFilteredAdapter {
392
390
  }
393
391
  }
394
392
  exports.ScopedCasbinAdapter = ScopedCasbinAdapter;
395
- //# sourceMappingURL=scoped-casbin.adapter.js.map
393
+ //# sourceMappingURL=adapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adapter.js","sourceRoot":"","sources":["../../../../../../src/components/auth/authorize/adapters/scoped-casbin/adapter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare const DEFAULT_SCHEMA = "public";
2
+ //# sourceMappingURL=constants.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/auth/authorize/adapters/scoped-casbin/common/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,cAAc,WAAW,CAAC"}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_SCHEMA = void 0;
4
+ exports.DEFAULT_SCHEMA = 'public';
5
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../../../../../src/components/auth/authorize/adapters/scoped-casbin/common/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,cAAc,GAAG,QAAQ,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './types';
2
+ export * from './constants';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/auth/authorize/adapters/scoped-casbin/common/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./types"), exports);
18
+ __exportStar(require("./constants"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../../src/components/auth/authorize/adapters/scoped-casbin/common/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,8CAA4B"}
@@ -0,0 +1,50 @@
1
+ import type { IdType } from '../../../../../../base';
2
+ import type { TNullable } from '@venizia/ignis-helpers/common';
3
+ export type TDomainHierarchyEdge = {
4
+ child: string;
5
+ parent: string;
6
+ };
7
+ export interface IScopedCasbinPolicyFilter {
8
+ principal: {
9
+ type: string;
10
+ id: IdType;
11
+ };
12
+ }
13
+ /** A grant row as fetched, before it becomes casbin lines. Permission columns are null when the join misses. */
14
+ export type TGrantRow = {
15
+ subjectId: IdType;
16
+ objectCode: TNullable<string>;
17
+ objectSubject: TNullable<string>;
18
+ objectMethod: TNullable<string>;
19
+ action: TNullable<string>;
20
+ effect: TNullable<string>;
21
+ domain: TNullable<string>;
22
+ metadata?: unknown;
23
+ };
24
+ /**
25
+ * Per-principal domain edges sourced from business data the app already owns (e.g. a tenant
26
+ * foreign key) - read live on every cache miss, never duplicated into `domain_inherits`. An app
27
+ * whose hierarchy genuinely lives in `domain_inherits` rows does not need this hook at all: the
28
+ * DOMAIN_EDGE branch above already emits those as `g3` lines. `domains` is the principal's own
29
+ * domain closure, already `<Type>_<id>` tokens; the returned edges must be too - neither side
30
+ * re-formats them.
31
+ *
32
+ * `domains` is the principal's **membership closure** - built from `join_domain` rows plus both
33
+ * ends of every `domainEdge` row. It is NOT the set of domains the principal holds a role in via
34
+ * `assign_role`: a principal can carry `assign_role` at a domain it never joined. A hook ported
35
+ * from a mechanism that derived its domains from `assign_role` will silently lose access for
36
+ * exactly those principals - no error, no log, just fewer edges reaching `g`/`g2`/`g3` than before.
37
+ *
38
+ * More than one hierarchy axis (e.g. an organizer tree and a separate region tree)? Write one
39
+ * function per axis and concatenate their results here - this hook deliberately takes a single
40
+ * function, so composition stays visible in the application, not hidden inside the framework:
41
+ * `resolveDomainEdges: async opts => [...(await organizerEdges(opts)), ...(await regionEdges(opts))]`.
42
+ */
43
+ export type TResolveDomainEdgesFn = (opts: {
44
+ principal: {
45
+ type: string;
46
+ id: IdType;
47
+ };
48
+ domains: string[];
49
+ }) => Promise<TDomainHierarchyEdge[]>;
50
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../../../src/components/auth/authorize/adapters/scoped-casbin/common/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAE/D,MAAM,MAAM,oBAAoB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAErE,MAAM,WAAW,yBAAyB;IACxC,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;CACzC;AAED,gHAAgH;AAChH,MAAM,MAAM,SAAS,GAAG;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,aAAa,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IACjC,YAAY,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAChC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1B,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,MAAM,qBAAqB,GAAG,CAAC,IAAI,EAAE;IACzC,SAAS,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,EAAE,MAAM,CAAA;KAAE,CAAC;IACxC,OAAO,EAAE,MAAM,EAAE,CAAC;CACnB,KAAK,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../../../src/components/auth/authorize/adapters/scoped-casbin/common/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,4 @@
1
+ export type { IScopedCasbinPolicyFilter, TDomainHierarchyEdge, TGrantRow, TResolveDomainEdgesFn, } from './common';
2
+ export * from './policy-edges';
3
+ export * from './adapter';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../../src/components/auth/authorize/adapters/scoped-casbin/index.ts"],"names":[],"mappings":"AAEA,YAAY,EACV,yBAAyB,EACzB,oBAAoB,EACpB,SAAS,EACT,qBAAqB,GACtB,MAAM,UAAU,CAAC;AAClB,cAAc,gBAAgB,CAAC;AAC/B,cAAc,WAAW,CAAC"}
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./policy-edges"), exports);
18
+ __exportStar(require("./adapter"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../../src/components/auth/authorize/adapters/scoped-casbin/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAQA,iDAA+B;AAC/B,4CAA0B"}
@@ -0,0 +1,17 @@
1
+ import type { IdType } from '../../../../../base';
2
+ import type { TConstValue, TNullable } from '@venizia/ignis-helpers/common';
3
+ import type { TGrantRow } from './common';
4
+ export declare class PrincipalPolicyEdges {
5
+ static readonly DIRECT = "direct";
6
+ static readonly ROLE_EDGE = "roleEdge";
7
+ static readonly ROLE_GRANT = "roleGrant";
8
+ static readonly DOMAIN_EDGE = "domainEdge";
9
+ }
10
+ /** A row from the single principal-policy statement; `kind` says which branch produced it. */
11
+ export type TPrincipalPolicyRow = TGrantRow & {
12
+ kind: TConstValue<typeof PrincipalPolicyEdges>;
13
+ variant: string;
14
+ targetType: TNullable<string>;
15
+ targetId: IdType;
16
+ };
17
+ //# sourceMappingURL=policy-edges.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-edges.d.ts","sourceRoot":"","sources":["../../../../../../src/components/auth/authorize/adapters/scoped-casbin/policy-edges.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,+BAA+B,CAAC;AAC5E,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE1C,qBAAa,oBAAoB;IAC/B,MAAM,CAAC,QAAQ,CAAC,MAAM,YAAY;IAClC,MAAM,CAAC,QAAQ,CAAC,SAAS,cAAc;IACvC,MAAM,CAAC,QAAQ,CAAC,UAAU,eAAe;IACzC,MAAM,CAAC,QAAQ,CAAC,WAAW,gBAAgB;CAC5C;AAED,8FAA8F;AAC9F,MAAM,MAAM,mBAAmB,GAAG,SAAS,GAAG;IAC5C,IAAI,EAAE,WAAW,CAAC,OAAO,oBAAoB,CAAC,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC"}
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PrincipalPolicyEdges = void 0;
4
+ class PrincipalPolicyEdges {
5
+ static { this.DIRECT = 'direct'; }
6
+ static { this.ROLE_EDGE = 'roleEdge'; }
7
+ static { this.ROLE_GRANT = 'roleGrant'; }
8
+ static { this.DOMAIN_EDGE = 'domainEdge'; }
9
+ }
10
+ exports.PrincipalPolicyEdges = PrincipalPolicyEdges;
11
+ //# sourceMappingURL=policy-edges.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy-edges.js","sourceRoot":"","sources":["../../../../../../src/components/auth/authorize/adapters/scoped-casbin/policy-edges.ts"],"names":[],"mappings":";;;AAIA,MAAa,oBAAoB;aACf,WAAM,GAAG,QAAQ,CAAC;aAClB,cAAS,GAAG,UAAU,CAAC;aACvB,eAAU,GAAG,WAAW,CAAC;aACzB,gBAAW,GAAG,YAAY,CAAC;;AAJ7C,oDAKC"}
@@ -1 +1 @@
1
- {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../../src/components/auth/authorize/component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAG/D,qBAAa,kBAAmB,SAAQ,aAAa;IAEG,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,eAAe;IAQjF,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC;IAkBxC,OAAO,CAAC,oBAAoB;CAS7B"}
1
+ {"version":3,"file":"component.d.ts","sourceRoot":"","sources":["../../../../src/components/auth/authorize/component.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,uBAAuB,CAAC;AAItD,OAAO,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;AAO/D,qBAAa,kBAAmB,SAAQ,aAAa;IAEG,OAAO,CAAC,WAAW;gBAAX,WAAW,EAAE,eAAe;IAQjF,OAAO,IAAI,cAAc,CAAC,IAAI,CAAC;IAsBxC,OAAO,CAAC,oBAAoB;CAS7B"}
@@ -38,6 +38,9 @@ let AuthorizeComponent = AuthorizeComponent_1 = class AuthorizeComponent extends
38
38
  });
39
39
  }
40
40
  this.bindAlwaysAllowRoles({ options });
41
+ // The registry otherwise finds options only through a registered enforcer's container, so
42
+ // `defaultDecision` would be unreadable in the one case it decides: no enforcer registered.
43
+ ignis_kernel_4.AuthorizationEnforcerRegistry.getInstance().setOptions({ options });
41
44
  this.logger.for(this.binding.name).info('Authorization configured');
42
45
  }
43
46
  bindAlwaysAllowRoles(opts) {
@@ -1 +1 @@
1
- {"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../src/components/auth/authorize/component.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,wDAAsD;AACtD,wDAA+C;AAC/C,wDAAqD;AACrD,sDAAuD;AAEvD,wDAAgF;AAEhF,IAAa,kBAAkB,0BAA/B,MAAa,kBAAmB,SAAQ,4BAAa;IACnD,YAC8D,WAA4B;QAExF,KAAK,CAAC;YACJ,KAAK,EAAE,oBAAkB,CAAC,IAAI;YAC9B,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE;SACtD,CAAC,CAAC;QALyD,gBAAW,GAAX,WAAW,CAAiB;IAM1F,CAAC;IAEQ,OAAO;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAoB;YACtD,GAAG,EAAE,mCAAoB,CAAC,OAAO;YACjC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAA,eAAQ,EAAC;gBACb,OAAO,EACL,iIAAiI;aACpI,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAEvC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACtE,CAAC;IAEO,oBAAoB,CAAC,IAAoC;QAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW;aACb,IAAI,CAAW,EAAE,GAAG,EAAE,mCAAoB,CAAC,kBAAkB,EAAE,CAAC;aAChE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;CACF,CAAA;AArCY,gDAAkB;6BAAlB,kBAAkB;IAE1B,WAAA,IAAA,qBAAM,EAAC,EAAE,GAAG,EAAE,2BAAY,CAAC,oBAAoB,EAAE,CAAC,CAAA;;GAF1C,kBAAkB,CAqC9B"}
1
+ {"version":3,"file":"component.js","sourceRoot":"","sources":["../../../../src/components/auth/authorize/component.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AACA,wDAAsD;AACtD,wDAA+C;AAC/C,wDAAqD;AACrD,sDAAuD;AAEvD,wDAI+B;AAE/B,IAAa,kBAAkB,0BAA/B,MAAa,kBAAmB,SAAQ,4BAAa;IACnD,YAC8D,WAA4B;QAExF,KAAK,CAAC;YACJ,KAAK,EAAE,oBAAkB,CAAC,IAAI;YAC9B,WAAW,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE;SACtD,CAAC,CAAC;QALyD,gBAAW,GAAX,WAAW,CAAiB;IAM1F,CAAC;IAEQ,OAAO;QACd,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAoB;YACtD,GAAG,EAAE,mCAAoB,CAAC,OAAO;YACjC,UAAU,EAAE,IAAI;SACjB,CAAC,CAAC;QAEH,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,MAAM,IAAA,eAAQ,EAAC;gBACb,OAAO,EACL,iIAAiI;aACpI,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,oBAAoB,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAEvC,0FAA0F;QAC1F,4FAA4F;QAC5F,4CAA6B,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC;QAEpE,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACtE,CAAC;IAEO,oBAAoB,CAAC,IAAoC;QAC/D,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,EAAE,MAAM,EAAE,CAAC;YAC3C,OAAO;QACT,CAAC;QAED,IAAI,CAAC,WAAW;aACb,IAAI,CAAW,EAAE,GAAG,EAAE,mCAAoB,CAAC,kBAAkB,EAAE,CAAC;aAChE,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAC5C,CAAC;CACF,CAAA;AAzCY,gDAAkB;6BAAlB,kBAAkB;IAE1B,WAAA,IAAA,qBAAM,EAAC,EAAE,GAAG,EAAE,2BAAY,CAAC,oBAAoB,EAAE,CAAC,CAAA;;GAF1C,kBAAkB,CAyC9B"}
@@ -1,9 +1,9 @@
1
1
  import { TContext } from '@venizia/ignis-kernel';
2
2
  import { BaseHelper } from '@venizia/ignis-helpers/core';
3
- import { TNullable } from '@venizia/ignis-helpers/common';
4
3
  import type { Enforcer as CasbinEnforcerType } from 'casbin';
5
4
  import { Env } from 'hono';
6
- import { IAuthorizationEnforcer, IAuthorizationUser, ICasbinEnforcerCachedRedis, ICasbinEnforcerOptions, ICasbinRules, type IAuthorizationRequest, type TAuthorizationDecision, type TCasbinDomainMatchingFunction } from '@venizia/ignis-kernel';
5
+ import { IAuthorizationEnforcer, IAuthorizationUser, ICasbinEnforcerOptions, ICasbinRules, type IAuthorizationRequest, type TAuthorizationDecision, type TCasbinDomainMatchingFunction } from '@venizia/ignis-kernel';
6
+ import { UserPolicyLineCache } from './user-policy-line-cache';
7
7
  /** Payload shape for the scoped/custom path, matching defaultScopedPayloadFn(). */
8
8
  type TNormalizePayloadFn<E extends Env, TAction, TResource> = (opts: {
9
9
  user: IAuthorizationUser;
@@ -22,7 +22,7 @@ export declare class CasbinAuthorizationEnforcer<E extends Env = Env, TAction ex
22
22
  private readonly MIN_EXPIRES_IN;
23
23
  private pool;
24
24
  private helper;
25
- private readonly pendingLineFetches;
25
+ private userPolicyLineCache;
26
26
  private resolvedPayloadFn;
27
27
  constructor(options: ICasbinEnforcerOptions<E, TAction, TResource>);
28
28
  configure(): Promise<void>;
@@ -56,17 +56,8 @@ export declare class CasbinAuthorizationEnforcer<E extends Env = Env, TAction ex
56
56
  cacheKey: string;
57
57
  lineCount: number;
58
58
  }>;
59
- /** Compute the user's cache key and reject an empty result - consistent with the read path. */
60
- protected resolveCacheKey(opts: {
61
- user: IAuthorizationUser;
62
- cached: ICasbinEnforcerCachedRedis & {
63
- use: true;
64
- };
65
- }): Promise<string>;
66
- /** Narrow `options.cached` to the redis variant; cache management is redis-only. */
67
- protected requireRedisCache(): ICasbinEnforcerCachedRedis & {
68
- use: true;
69
- };
59
+ /** Narrow `options.cached` to the redis variant and lazily create the per-user line cache - memoized so its single-flight de-dup map is shared across calls rather than reset on every access. */
60
+ protected requireRedisCache(): UserPolicyLineCache;
70
61
  protected registerMatchers(opts: {
71
62
  enforcer: CasbinEnforcerType;
72
63
  casbin: typeof import('casbin');
@@ -85,31 +76,11 @@ export declare class CasbinAuthorizationEnforcer<E extends Env = Env, TAction ex
85
76
  protected validateExpiresIn(opts: {
86
77
  expiresIn: number;
87
78
  }): void;
88
- /** Fetch the user's lines, collapsing concurrent misses per key onto one extraction. Best-effort: two misses may race past the cache read and both extract (benign - per-user lines are identical). */
89
- protected fetchLinesWithRedisCache(opts: {
90
- user: IAuthorizationUser;
91
- cached: ICasbinEnforcerCachedRedis & {
92
- use: true;
93
- };
94
- }): Promise<string[]>;
95
- /** Single source of truth for the Redis cache encoding. Used by miss-path and rebuild. */
96
- protected writeCachedPolicyLines(opts: {
97
- cacheKey: string;
98
- lines: string[];
99
- options: ICasbinEnforcerCachedRedis['options'];
100
- }): Promise<void>;
101
- /** Decode cached policy lines; on any corruption, log and return null so the caller refetches. */
102
- protected parseCachedPolicyLines(opts: {
103
- raw: string;
104
- cacheKey: string;
105
- }): TNullable<string[]>;
106
- /** Extract a user's lines from an ISOLATED throwaway enforcer (own model + adapter), never a pooled serving one, so concurrent requests cannot change what we cache. */
79
+ /** Resolves this enforcer's model, then delegates the isolated-enforcer extraction (own model + adapter, never a pooled serving one, so concurrent requests cannot change what we cache) to PolicyLineCodec. */
107
80
  protected extractUserLines(opts: {
108
81
  user: IAuthorizationUser;
109
82
  }): Promise<string[]>;
110
- /** Serialize ALL p-types and g-types (not just `p`/`g`) back into casbin lines so the cached payload is complete for the scoped model; it reads stored rules, so the loader needs no matching funcs registered. */
111
- protected extractLinesFrom(enforcer: CasbinEnforcerType): Promise<string[]>;
112
- /** Atomically reset a borrowed enforcer's model to exactly `lines` + rebuild role links. */
83
+ /** Requires configure() to have resolved the casbin Helper; the clearPolicy + loadPolicyLine + buildRoleLinks ordering lives in PolicyLineCodec. */
113
84
  protected loadPolicyLinesIntoModel(opts: {
114
85
  enforcer: CasbinEnforcerType;
115
86
  lines: string[];