@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 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/auth/authorize/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6FAA6F;AAC7F,oFAAoF;AACpF,wDAAsC;AAEtC,6CAA2B;AAC3B,8CAA4B;AAC5B,8CAA4B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/components/auth/authorize/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6FAA6F;AAC7F,oFAAoF;AACpF,wDAAsC;AAEtC,6CAA2B;AAC3B,8CAA4B;AAC5B,8CAA4B;AAC5B,kDAAgC"}
@@ -0,0 +1,34 @@
1
+ import { BaseHelper } from '@venizia/ignis-helpers/core';
2
+ /**
3
+ * Shared casbin `RoleManager` scaffolding for the resource, domain-hierarchy, and membership
4
+ * role managers: the debug-only interface members (`printRoles`, `getDomains`, `getAllDomains`),
5
+ * the `hasLink` wrapper around the synchronous `syncedHasLink`, the once-per-`clear()`
6
+ * overlay-initialized log line, and the shared ancestor walk both hierarchy-aware managers use.
7
+ */
8
+ export declare abstract class BaseRoleManager extends BaseHelper {
9
+ protected graphReported: boolean;
10
+ abstract syncedHasLink(name1: string, name2: string): boolean;
11
+ hasLink(name1: string, name2: string): Promise<boolean>;
12
+ /** casbin calls this after buildRoleLinks purely as a debug hook; none of the role managers log from here. */
13
+ printRoles(): Promise<void>;
14
+ getDomains(): Promise<string[]>;
15
+ getAllDomains(): Promise<string[]>;
16
+ /** Logs the initialized-overlay line once per `clear()` cycle; `build` is only invoked the first time so counts stay lazy. */
17
+ protected reportGraphOnce(build: () => {
18
+ message: string;
19
+ args: unknown[];
20
+ }): void;
21
+ /** Node and edge counts of a domain-hierarchy overlay, for the once-per-`clear()` debug log. */
22
+ protected static overlayStats(overlay?: Map<string, Set<string>>): {
23
+ nodeCount: number;
24
+ edgeCount: number;
25
+ };
26
+ /** `node` itself plus every ancestor reachable by walking the overlay's child->parent edges,
27
+ * node first. Cycle-safe: visited Set + index cursor, never shift(). Static - `ResourceRoleManager`
28
+ * extends this base with no overlay of this shape, so this must not force instance state onto it. */
29
+ protected static collectAncestors(opts: {
30
+ overlay?: Map<string, Set<string>>;
31
+ node: string;
32
+ }): string[];
33
+ }
34
+ //# sourceMappingURL=base.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/role-managers/base.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAEzD;;;;;GAKG;AACH,8BAAsB,eAAgB,SAAQ,UAAU;IACtD,SAAS,CAAC,aAAa,UAAS;IAEhC,QAAQ,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAEvD,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAI7D,8GAA8G;IACxG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAE3B,UAAU,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAI/B,aAAa,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;IAIxC,8HAA8H;IAC9H,SAAS,CAAC,eAAe,CAAC,KAAK,EAAE,MAAM;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,IAAI;IAUlF,gGAAgG;IAChG,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG;QACjE,SAAS,EAAE,MAAM,CAAC;QAClB,SAAS,EAAE,MAAM,CAAC;KACnB;IAcD;;yGAEqG;IACrG,SAAS,CAAC,MAAM,CAAC,gBAAgB,CAAC,IAAI,EAAE;QACtC,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC;QACnC,IAAI,EAAE,MAAM,CAAC;KACd,GAAG,MAAM,EAAE;CA4Bb"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.BaseRoleManager = void 0;
4
+ const core_1 = require("@venizia/ignis-helpers/core");
5
+ /**
6
+ * Shared casbin `RoleManager` scaffolding for the resource, domain-hierarchy, and membership
7
+ * role managers: the debug-only interface members (`printRoles`, `getDomains`, `getAllDomains`),
8
+ * the `hasLink` wrapper around the synchronous `syncedHasLink`, the once-per-`clear()`
9
+ * overlay-initialized log line, and the shared ancestor walk both hierarchy-aware managers use.
10
+ */
11
+ class BaseRoleManager extends core_1.BaseHelper {
12
+ constructor() {
13
+ super(...arguments);
14
+ this.graphReported = false;
15
+ }
16
+ async hasLink(name1, name2) {
17
+ return this.syncedHasLink(name1, name2);
18
+ }
19
+ /** casbin calls this after buildRoleLinks purely as a debug hook; none of the role managers log from here. */
20
+ async printRoles() { }
21
+ async getDomains() {
22
+ return [];
23
+ }
24
+ async getAllDomains() {
25
+ return [];
26
+ }
27
+ /** Logs the initialized-overlay line once per `clear()` cycle; `build` is only invoked the first time so counts stay lazy. */
28
+ reportGraphOnce(build) {
29
+ if (this.graphReported) {
30
+ return;
31
+ }
32
+ this.graphReported = true;
33
+ const { message, args } = build();
34
+ this.logger.for(this.syncedHasLink.name).debug(message, ...args);
35
+ }
36
+ /** Node and edge counts of a domain-hierarchy overlay, for the once-per-`clear()` debug log. */
37
+ static overlayStats(overlay) {
38
+ if (!overlay) {
39
+ return { nodeCount: 0, edgeCount: 0 };
40
+ }
41
+ let edgeCount = 0;
42
+ const overlayValues = overlay.values();
43
+ for (const parents of overlayValues) {
44
+ edgeCount += parents.size;
45
+ }
46
+ return { nodeCount: overlay.size, edgeCount };
47
+ }
48
+ /** `node` itself plus every ancestor reachable by walking the overlay's child->parent edges,
49
+ * node first. Cycle-safe: visited Set + index cursor, never shift(). Static - `ResourceRoleManager`
50
+ * extends this base with no overlay of this shape, so this must not force instance state onto it. */
51
+ static collectAncestors(opts) {
52
+ const { overlay, node } = opts;
53
+ const result = [node];
54
+ const visited = new Set([node]);
55
+ const queue = [node];
56
+ let head = 0;
57
+ while (head < queue.length) {
58
+ const current = queue[head];
59
+ head += 1;
60
+ const parents = overlay?.get(current);
61
+ if (!parents) {
62
+ continue;
63
+ }
64
+ for (const parent of parents) {
65
+ if (visited.has(parent)) {
66
+ continue;
67
+ }
68
+ visited.add(parent);
69
+ result.push(parent);
70
+ queue.push(parent);
71
+ }
72
+ }
73
+ return result;
74
+ }
75
+ }
76
+ exports.BaseRoleManager = BaseRoleManager;
77
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/role-managers/base.ts"],"names":[],"mappings":";;;AAAA,sDAAyD;AAEzD;;;;;GAKG;AACH,MAAsB,eAAgB,SAAQ,iBAAU;IAAxD;;QACY,kBAAa,GAAG,KAAK,CAAC;IAkFlC,CAAC;IA9EC,KAAK,CAAC,OAAO,CAAC,KAAa,EAAE,KAAa;QACxC,OAAO,IAAI,CAAC,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;IAC1C,CAAC;IAED,8GAA8G;IAC9G,KAAK,CAAC,UAAU,KAAmB,CAAC;IAEpC,KAAK,CAAC,UAAU;QACd,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,KAAK,CAAC,aAAa;QACjB,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,8HAA8H;IACpH,eAAe,CAAC,KAAiD;QACzE,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO;QACT,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;QAClC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,CAAC;IACnE,CAAC;IAED,gGAAgG;IACtF,MAAM,CAAC,YAAY,CAAC,OAAkC;QAI9D,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO,EAAE,SAAS,EAAE,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC;QACxC,CAAC;QAED,IAAI,SAAS,GAAG,CAAC,CAAC;QAClB,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;QACvC,KAAK,MAAM,OAAO,IAAI,aAAa,EAAE,CAAC;YACpC,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;QAC5B,CAAC;QAED,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,SAAS,EAAE,CAAC;IAChD,CAAC;IAED;;yGAEqG;IAC3F,MAAM,CAAC,gBAAgB,CAAC,IAGjC;QACC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;QAC/B,MAAM,MAAM,GAAa,CAAC,IAAI,CAAC,CAAC;QAChC,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,IAAI,CAAC,CAAC,CAAC;QACxC,MAAM,KAAK,GAAa,CAAC,IAAI,CAAC,CAAC;QAE/B,IAAI,IAAI,GAAG,CAAC,CAAC;QACb,OAAO,IAAI,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC;YAC5B,IAAI,IAAI,CAAC,CAAC;YAEV,MAAM,OAAO,GAAG,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,CAAC;YACtC,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,SAAS;YACX,CAAC;YAED,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC7B,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;oBACxB,SAAS;gBACX,CAAC;gBACD,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;gBACpB,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;gBACpB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrB,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAnFD,0CAmFC"}
@@ -0,0 +1,28 @@
1
+ import type { RoleManager } from 'casbin';
2
+ import { BaseRoleManager } from './base';
3
+ /**
4
+ * Serves the `g3` axis (`g3(r.dom, p.dom)`) and, with `reversed`, casbin's
5
+ * `DefaultRoleManager.addDomainHierarchy()` on `g`, which asks in the opposite argument order.
6
+ * `clear()` wipes only the overlay, never shared across requests: `buildRoleLinksInternal` clears
7
+ * every registered role manager each request. Pass both instances one `overlay` so per-request `g3`
8
+ * edges reach the `g` axis, which casbin never puts in `rmMap` and so never feeds `addLink`.
9
+ */
10
+ export declare class DomainHierarchyRoleManager extends BaseRoleManager implements RoleManager {
11
+ private readonly reversed;
12
+ private readonly overlay;
13
+ constructor(opts: {
14
+ reversed?: boolean;
15
+ overlay?: Map<string, Set<string>>;
16
+ });
17
+ /** Mutates the map in place - never reassigns `this.overlay` - so a caller sharing this map with another instance (see `opts.overlay`) sees the clear too. */
18
+ clear(): Promise<void>;
19
+ addLink(child: string, parent: string): Promise<void>;
20
+ deleteLink(child: string, parent: string): Promise<void>;
21
+ syncedHasLink(name1: string, name2: string): boolean;
22
+ /** Local overlay only, not the shared graph - correct for hasLink, incomplete for casbin's management API. */
23
+ getRoles(name: string): Promise<string[]>;
24
+ getUsers(name: string): Promise<string[]>;
25
+ /** True when `start` is `target`, or reaches it through the overlay. */
26
+ private reaches;
27
+ }
28
+ //# sourceMappingURL=domain-hierarchy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-hierarchy.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/role-managers/domain-hierarchy.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEzC;;;;;;GAMG;AACH,qBAAa,0BAA2B,SAAQ,eAAgB,YAAW,WAAW;IACpF,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAU;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAGtB;gBAEU,IAAI,EAAE;QAAE,QAAQ,CAAC,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;KAAE;IAM5E,8JAA8J;IACxJ,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAarD,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IAepD,8GAA8G;IACxG,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIzC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAY/C,wEAAwE;IACxE,OAAO,CAAC,OAAO;CAahB"}
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DomainHierarchyRoleManager = void 0;
4
+ const base_1 = require("./base");
5
+ /**
6
+ * Serves the `g3` axis (`g3(r.dom, p.dom)`) and, with `reversed`, casbin's
7
+ * `DefaultRoleManager.addDomainHierarchy()` on `g`, which asks in the opposite argument order.
8
+ * `clear()` wipes only the overlay, never shared across requests: `buildRoleLinksInternal` clears
9
+ * every registered role manager each request. Pass both instances one `overlay` so per-request `g3`
10
+ * edges reach the `g` axis, which casbin never puts in `rmMap` and so never feeds `addLink`.
11
+ */
12
+ class DomainHierarchyRoleManager extends base_1.BaseRoleManager {
13
+ constructor(opts) {
14
+ super({ scope: DomainHierarchyRoleManager.name });
15
+ this.reversed = opts.reversed ?? false;
16
+ this.overlay = opts.overlay ?? new Map();
17
+ }
18
+ /** Mutates the map in place - never reassigns `this.overlay` - so a caller sharing this map with another instance (see `opts.overlay`) sees the clear too. */
19
+ async clear() {
20
+ this.overlay.clear();
21
+ this.graphReported = false;
22
+ }
23
+ async addLink(child, parent) {
24
+ const existing = this.overlay.get(child);
25
+ if (existing) {
26
+ existing.add(parent);
27
+ }
28
+ else {
29
+ this.overlay.set(child, new Set([parent]));
30
+ }
31
+ if (!this.overlay.has(parent)) {
32
+ this.overlay.set(parent, new Set());
33
+ }
34
+ }
35
+ async deleteLink(child, parent) {
36
+ this.overlay.get(child)?.delete(parent);
37
+ }
38
+ syncedHasLink(name1, name2) {
39
+ this.reportGraphOnce(() => {
40
+ const { nodeCount, edgeCount } = DomainHierarchyRoleManager.overlayStats(this.overlay);
41
+ return {
42
+ message: 'domain-hierarchy role manager initialized | nodes: %d | edges: %d | reversed: %s',
43
+ args: [nodeCount, edgeCount, this.reversed],
44
+ };
45
+ });
46
+ const start = this.reversed ? name2 : name1;
47
+ const target = this.reversed ? name1 : name2;
48
+ return this.reaches({ start, target });
49
+ }
50
+ /** Local overlay only, not the shared graph - correct for hasLink, incomplete for casbin's management API. */
51
+ async getRoles(name) {
52
+ return [...(this.overlay.get(name) ?? [])];
53
+ }
54
+ async getUsers(name) {
55
+ const users = [];
56
+ for (const [child, parents] of this.overlay) {
57
+ if (parents.has(name)) {
58
+ users.push(child);
59
+ }
60
+ }
61
+ return users;
62
+ }
63
+ /** True when `start` is `target`, or reaches it through the overlay. */
64
+ reaches(opts) {
65
+ const { start, target } = opts;
66
+ if (start === target) {
67
+ return true;
68
+ }
69
+ const ancestors = DomainHierarchyRoleManager.collectAncestors({
70
+ overlay: this.overlay,
71
+ node: start,
72
+ });
73
+ return ancestors.includes(target);
74
+ }
75
+ }
76
+ exports.DomainHierarchyRoleManager = DomainHierarchyRoleManager;
77
+ //# sourceMappingURL=domain-hierarchy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-hierarchy.js","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/role-managers/domain-hierarchy.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ export * from './base';
2
+ export * from './domain-hierarchy';
3
+ export * from './membership';
4
+ export * from './resource';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/role-managers/index.ts"],"names":[],"mappings":"AAAA,cAAc,QAAQ,CAAC;AACvB,cAAc,oBAAoB,CAAC;AACnC,cAAc,cAAc,CAAC;AAC7B,cAAc,YAAY,CAAC"}
@@ -0,0 +1,21 @@
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("./base"), exports);
18
+ __exportStar(require("./domain-hierarchy"), exports);
19
+ __exportStar(require("./membership"), exports);
20
+ __exportStar(require("./resource"), exports);
21
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/role-managers/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,yCAAuB;AACvB,qDAAmC;AACnC,+CAA6B;AAC7B,6CAA2B"}
@@ -0,0 +1,21 @@
1
+ import type { RoleManager } from 'casbin';
2
+ import { BaseRoleManager } from './base';
3
+ /** `g2` axis (`g2(r.sub, r.dom)`): membership holds when the user joined the request domain or any
4
+ * ancestor of it, walking the shared per-request domain-hierarchy overlay. Memberships are
5
+ * per-principal and rebuilt every request, so `clear()` wipes all. */
6
+ export declare class MembershipRoleManager extends BaseRoleManager implements RoleManager {
7
+ private readonly overlay?;
8
+ private memberships;
9
+ constructor(opts: {
10
+ overlay?: Map<string, Set<string>>;
11
+ });
12
+ clear(): Promise<void>;
13
+ addLink(user: string, domain: string): Promise<void>;
14
+ deleteLink(user: string, domain: string): Promise<void>;
15
+ /** True when `name1` (user) joined `name2` (request domain) itself, or any ancestor of it. Walks UP from the request domain only - walking down from every joined domain would fan out over the whole subtree. */
16
+ syncedHasLink(name1: string, name2: string): boolean;
17
+ /** Local membership state only, not the shared graph - correct for hasLink, incomplete for casbin's management API. */
18
+ getRoles(name: string): Promise<string[]>;
19
+ getUsers(name: string): Promise<string[]>;
20
+ }
21
+ //# sourceMappingURL=membership.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"membership.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/role-managers/membership.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEzC;;sEAEsE;AACtE,qBAAa,qBAAsB,SAAQ,eAAgB,YAAW,WAAW;IAC/E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAGvB;IACF,OAAO,CAAC,WAAW,CAGf;gBAEQ,IAAI,EAAE;QAAE,OAAO,CAAC,EAAE,GAAG,CAAC,MAAM,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAA;KAAE;IAKlD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IASpD,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7D,kNAAkN;IAClN,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IA2BpD,uHAAuH;IACjH,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIzC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;CAWhD"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.MembershipRoleManager = void 0;
4
+ const base_1 = require("./base");
5
+ /** `g2` axis (`g2(r.sub, r.dom)`): membership holds when the user joined the request domain or any
6
+ * ancestor of it, walking the shared per-request domain-hierarchy overlay. Memberships are
7
+ * per-principal and rebuilt every request, so `clear()` wipes all. */
8
+ class MembershipRoleManager extends base_1.BaseRoleManager {
9
+ constructor(opts) {
10
+ super({ scope: MembershipRoleManager.name });
11
+ this.memberships = new Map();
12
+ this.overlay = opts.overlay;
13
+ }
14
+ async clear() {
15
+ this.memberships = new Map();
16
+ this.graphReported = false;
17
+ }
18
+ async addLink(user, domain) {
19
+ const existing = this.memberships.get(user);
20
+ if (existing) {
21
+ existing.add(domain);
22
+ }
23
+ else {
24
+ this.memberships.set(user, new Set([domain]));
25
+ }
26
+ }
27
+ async deleteLink(user, domain) {
28
+ this.memberships.get(user)?.delete(domain);
29
+ }
30
+ /** True when `name1` (user) joined `name2` (request domain) itself, or any ancestor of it. Walks UP from the request domain only - walking down from every joined domain would fan out over the whole subtree. */
31
+ syncedHasLink(name1, name2) {
32
+ this.reportGraphOnce(() => {
33
+ const { nodeCount, edgeCount } = MembershipRoleManager.overlayStats(this.overlay);
34
+ return {
35
+ message: 'membership role manager initialized | nodes: %d | edges: %d',
36
+ args: [nodeCount, edgeCount],
37
+ };
38
+ });
39
+ const joined = this.memberships.get(name1);
40
+ if (!joined || joined.size === 0) {
41
+ return false;
42
+ }
43
+ const ancestors = MembershipRoleManager.collectAncestors({
44
+ overlay: this.overlay,
45
+ node: name2,
46
+ });
47
+ for (const ancestor of ancestors) {
48
+ if (joined.has(ancestor)) {
49
+ return true;
50
+ }
51
+ }
52
+ return false;
53
+ }
54
+ /** Local membership state only, not the shared graph - correct for hasLink, incomplete for casbin's management API. */
55
+ async getRoles(name) {
56
+ return [...(this.memberships.get(name) ?? [])];
57
+ }
58
+ async getUsers(name) {
59
+ const users = [];
60
+ for (const [user, domains] of this.memberships) {
61
+ if (domains.has(name)) {
62
+ users.push(user);
63
+ }
64
+ }
65
+ return users;
66
+ }
67
+ }
68
+ exports.MembershipRoleManager = MembershipRoleManager;
69
+ //# sourceMappingURL=membership.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"membership.js","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/role-managers/membership.ts"],"names":[],"mappings":";;;AACA,iCAAyC;AAEzC;;sEAEsE;AACtE,MAAa,qBAAsB,SAAQ,sBAAe;IAUxD,YAAY,IAA4C;QACtD,KAAK,CAAC,EAAE,KAAK,EAAE,qBAAqB,CAAC,IAAI,EAAE,CAAC,CAAC;QANvC,gBAAW,GAAG,IAAI,GAAG,EAG1B,CAAC;QAIF,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;IAC9B,CAAC;IAED,KAAK,CAAC,KAAK;QACT,IAAI,CAAC,WAAW,GAAG,IAAI,GAAG,EAAuB,CAAC;QAClD,IAAI,CAAC,aAAa,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,IAAY,EAAE,MAAc;QACxC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAC5C,IAAI,QAAQ,EAAE,CAAC;YACb,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;QACvB,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,EAAE,IAAI,GAAG,CAAS,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QACxD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,IAAY,EAAE,MAAc;QAC3C,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAED,kNAAkN;IAClN,aAAa,CAAC,KAAa,EAAE,KAAa;QACxC,IAAI,CAAC,eAAe,CAAC,GAAG,EAAE;YACxB,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,GAAG,qBAAqB,CAAC,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAClF,OAAO;gBACL,OAAO,EAAE,6DAA6D;gBACtE,IAAI,EAAE,CAAC,SAAS,EAAE,SAAS,CAAC;aAC7B,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3C,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;YACjC,OAAO,KAAK,CAAC;QACf,CAAC;QAED,MAAM,SAAS,GAAG,qBAAqB,CAAC,gBAAgB,CAAC;YACvD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,IAAI,EAAE,KAAK;SACZ,CAAC,CAAC;QACH,KAAK,MAAM,QAAQ,IAAI,SAAS,EAAE,CAAC;YACjC,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACzB,OAAO,IAAI,CAAC;YACd,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;IAED,uHAAuH;IACvH,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACjD,CAAC;IAED,KAAK,CAAC,QAAQ,CAAC,IAAY;QACzB,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,KAAK,MAAM,CAAC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;YAC/C,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;gBACtB,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF;AA7ED,sDA6EC"}
@@ -1,22 +1,16 @@
1
- import { BaseHelper } from '@venizia/ignis-helpers/core';
2
1
  import type { RoleManager } from 'casbin';
2
+ import { BaseRoleManager } from './base';
3
3
  /** Resource-axis (`g4`) role manager: `addMatchingFunc` would set `hasPattern` and disable DefaultRoleManager's O(1) fast path, so prefix ancestors are walked manually; `addLink` must stay idempotent because `buildRoleLinks` re-adds every edge once per request. */
4
- export declare class ResourceRoleManager extends BaseHelper implements RoleManager {
4
+ export declare class ResourceRoleManager extends BaseRoleManager implements RoleManager {
5
5
  private parents;
6
- private graphReported;
7
6
  constructor();
8
7
  clear(): Promise<void>;
9
8
  addLink(child: string, parent: string): Promise<void>;
10
9
  deleteLink(child: string, parent: string): Promise<void>;
11
10
  syncedHasLink(name1: string, name2: string): boolean;
12
- hasLink(name1: string, name2: string): Promise<boolean>;
13
11
  getRoles(name: string): Promise<string[]>;
14
12
  getUsers(name: string): Promise<string[]>;
15
- /** casbin calls this after buildRoleLinks purely as a debug hook; the resource graph is not logged. */
16
- printRoles(): Promise<void>;
17
- getDomains(): Promise<string[]>;
18
- getAllDomains(): Promise<string[]>;
19
13
  /** All stored prefix ancestors of a dotted code (`a.b.c` -> `a.b` -> `a`), not only the deepest, plus a literal stored `'*'` node - `objectMatch(anything, '*')` is always true, so a `g4` edge whose child is `'*'` must stay reachable from every request object. */
20
14
  private collectStoredAncestors;
21
15
  }
22
- //# sourceMappingURL=resource-role-manager.d.ts.map
16
+ //# sourceMappingURL=resource.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/role-managers/resource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,QAAQ,CAAC;AAC1C,OAAO,EAAE,eAAe,EAAE,MAAM,QAAQ,CAAC;AAEzC,yQAAyQ;AACzQ,qBAAa,mBAAoB,SAAQ,eAAgB,YAAW,WAAW;IAC7E,OAAO,CAAC,OAAO,CAGX;;IAME,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAKtB,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAcrD,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI9D,aAAa,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO;IA8C9C,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAIzC,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC;IAY/C,uQAAuQ;IACvQ,OAAO,CAAC,sBAAsB;CA0B/B"}
@@ -1,13 +1,12 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ResourceRoleManager = void 0;
4
- const core_1 = require("@venizia/ignis-helpers/core");
4
+ const base_1 = require("./base");
5
5
  /** Resource-axis (`g4`) role manager: `addMatchingFunc` would set `hasPattern` and disable DefaultRoleManager's O(1) fast path, so prefix ancestors are walked manually; `addLink` must stay idempotent because `buildRoleLinks` re-adds every edge once per request. */
6
- class ResourceRoleManager extends core_1.BaseHelper {
6
+ class ResourceRoleManager extends base_1.BaseRoleManager {
7
7
  constructor() {
8
8
  super({ scope: ResourceRoleManager.name });
9
9
  this.parents = new Map();
10
- this.graphReported = false;
11
10
  }
12
11
  async clear() {
13
12
  this.parents = new Map();
@@ -29,14 +28,14 @@ class ResourceRoleManager extends core_1.BaseHelper {
29
28
  this.parents.get(child)?.delete(parent);
30
29
  }
31
30
  syncedHasLink(name1, name2) {
32
- if (!this.graphReported) {
33
- this.graphReported = true;
31
+ this.reportGraphOnce(() => {
34
32
  const nodeCount = this.parents.size;
35
33
  const edgeCount = Array.from(this.parents.values()).reduce((sum, set) => sum + set.size, 0);
36
- this.logger
37
- .for(this.syncedHasLink.name)
38
- .debug('resource-role initialized | nodes: %d | edges: %d', nodeCount, edgeCount);
39
- }
34
+ return {
35
+ message: 'resource-role initialized | nodes: %d | edges: %d',
36
+ args: [nodeCount, edgeCount],
37
+ };
38
+ });
40
39
  if (name1 === name2) {
41
40
  return true;
42
41
  }
@@ -65,9 +64,6 @@ class ResourceRoleManager extends core_1.BaseHelper {
65
64
  }
66
65
  return false;
67
66
  }
68
- async hasLink(name1, name2) {
69
- return this.syncedHasLink(name1, name2);
70
- }
71
67
  async getRoles(name) {
72
68
  return [...(this.parents.get(name) ?? [])];
73
69
  }
@@ -80,14 +76,6 @@ class ResourceRoleManager extends core_1.BaseHelper {
80
76
  }
81
77
  return users;
82
78
  }
83
- /** casbin calls this after buildRoleLinks purely as a debug hook; the resource graph is not logged. */
84
- async printRoles() { }
85
- async getDomains() {
86
- return [];
87
- }
88
- async getAllDomains() {
89
- return [];
90
- }
91
79
  /** All stored prefix ancestors of a dotted code (`a.b.c` -> `a.b` -> `a`), not only the deepest, plus a literal stored `'*'` node - `objectMatch(anything, '*')` is always true, so a `g4` edge whose child is `'*'` must stay reachable from every request object. */
92
80
  collectStoredAncestors(opts) {
93
81
  const ancestors = [];
@@ -112,4 +100,4 @@ class ResourceRoleManager extends core_1.BaseHelper {
112
100
  }
113
101
  }
114
102
  exports.ResourceRoleManager = ResourceRoleManager;
115
- //# sourceMappingURL=resource-role-manager.js.map
103
+ //# sourceMappingURL=resource.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource.js","sourceRoot":"","sources":["../../../../../src/components/auth/authorize/role-managers/resource.ts"],"names":[],"mappings":"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"}
@@ -1,25 +1,60 @@
1
- import { integer, jsonb, text } from 'drizzle-orm/pg-core';
2
- export type TPolicyDefinitionOptions = {
1
+ import type { TAuthorizationDecision, TSubsetGrantMetadata } from '@venizia/ignis-kernel';
2
+ import { integer, text } from 'drizzle-orm/pg-core';
3
+ export type TPolicyDefinitionOptions<ExtraVariant extends string = never> = {
3
4
  idType?: 'string' | 'number';
5
+ /**
6
+ * App-only edge kinds stored in this same table alongside IGNIS's seven (e.g. `merchant_role`).
7
+ * `ScopedCasbinAdapter` never selects an undeclared variant - it is purely the consumer's data.
8
+ * Pass as an inline array literal; the `const` type parameter below infers the literal union
9
+ * from it without needing `as const`.
10
+ */
11
+ extraVariants?: ReadonlyArray<ExtraVariant>;
4
12
  };
5
- export type TPolicyDefinitionCommonColumns = {
6
- variant: ReturnType<typeof text>;
7
- subjectType: ReturnType<typeof text>;
8
- targetType: ReturnType<typeof text>;
9
- action: ReturnType<typeof text>;
10
- effect: ReturnType<typeof text>;
11
- domain: ReturnType<typeof text>;
12
- metadata: ReturnType<typeof jsonb>;
13
+ /** Extracts the app-declared extra variants from `Opts`, or `never` when none were declared. */
14
+ type TExtraPolicyVariantOf<Opts> = Opts extends {
15
+ extraVariants?: ReadonlyArray<infer ExtraVariant extends string>;
16
+ } ? ExtraVariant : never;
17
+ /** Column shape is inferred, never hand-declared, so it can never drift from the `$type<>()` narrowing below. */
18
+ declare const buildCommonPolicyDefinitionColumns: <ExtraVariant extends string = never, Metadata extends object = TSubsetGrantMetadata>() => {
19
+ metadata: import("drizzle-orm").$Type<import("drizzle-orm/pg-core").PgJsonbBuilderInitial<"metadata">, Metadata>;
20
+ variant: import("drizzle-orm").NotNull<import("drizzle-orm").$Type<import("drizzle-orm/pg-core").PgTextBuilderInitial<"variant", [string, ...string[]]>, "join_domain" | "assign_role" | "grant" | "role_inherits" | "domain_inherits" | "resource_inherits" | "action_inherits" | ExtraVariant>>;
21
+ subjectType: import("drizzle-orm").NotNull<import("drizzle-orm/pg-core").PgTextBuilderInitial<"subject_type", [string, ...string[]]>>;
22
+ targetType: import("drizzle-orm").NotNull<import("drizzle-orm/pg-core").PgTextBuilderInitial<"target_type", [string, ...string[]]>>;
23
+ domainType: import("drizzle-orm/pg-core").PgTextBuilderInitial<"domain_type", [string, ...string[]]>;
24
+ action: import("drizzle-orm/pg-core").PgTextBuilderInitial<"action", [string, ...string[]]>;
25
+ effect: import("drizzle-orm").$Type<import("drizzle-orm/pg-core").PgTextBuilderInitial<"effect", [string, ...string[]]>, TAuthorizationDecision>;
13
26
  };
14
- type TPolicyDefinitionColumnDef<Opts extends TPolicyDefinitionOptions | undefined = undefined> = Opts extends {
27
+ export type TPolicyDefinitionCommonColumns<ExtraVariant extends string = never, Metadata extends object = TSubsetGrantMetadata> = ReturnType<typeof buildCommonPolicyDefinitionColumns<ExtraVariant, Metadata>>;
28
+ type TPolicyDefinitionColumnDef<Opts extends TPolicyDefinitionOptions<string> | undefined = undefined, Metadata extends object = TSubsetGrantMetadata> = Opts extends {
15
29
  idType: 'string';
16
- } ? TPolicyDefinitionCommonColumns & {
30
+ } ? TPolicyDefinitionCommonColumns<TExtraPolicyVariantOf<Opts>, Metadata> & {
17
31
  subjectId: ReturnType<typeof text>;
18
32
  targetId: ReturnType<typeof text>;
19
- } : TPolicyDefinitionCommonColumns & {
33
+ domainId: ReturnType<typeof text>;
34
+ } : TPolicyDefinitionCommonColumns<TExtraPolicyVariantOf<Opts>, Metadata> & {
20
35
  subjectId: ReturnType<typeof integer>;
21
36
  targetId: ReturnType<typeof integer>;
37
+ domainId: ReturnType<typeof integer>;
22
38
  };
23
- export declare const extraPolicyDefinitionColumns: <Opts extends TPolicyDefinitionOptions | undefined>(opts?: Opts) => TPolicyDefinitionColumnDef<Opts>;
39
+ /**
40
+ * `Metadata` is a type parameter, not an `opts` field: unlike `extraVariants` there is no runtime
41
+ * value to infer from, so supplying it means spelling `Opts` too (no partial inference):
42
+ * `extraPolicyDefinitionColumns<{ idType: 'string' }, IMyMetadata>({ idType: 'string' })`.
43
+ * Keep `ops` in a custom shape if the app also issues subset grants - `customGrant` writes it.
44
+ */
45
+ export declare const extraPolicyDefinitionColumns: <const Opts extends TPolicyDefinitionOptions<string> | undefined = undefined, Metadata extends object = TSubsetGrantMetadata>(opts?: Opts) => TPolicyDefinitionColumnDef<Opts, Metadata>;
46
+ /**
47
+ * The three legal `(domain_type, domain_id)` pairs, as CHECK predicate TEXT for a migration - text,
48
+ * not a Drizzle `SQL`, because a column ref in a `sql` template renders schema-qualified, which a
49
+ * table-level CHECK rejects.
50
+ *
51
+ * The `IS NOT NULL` guard on the last branch looks redundant next to `NOT IN` and is not: a NULL
52
+ * `domain_type` makes `NOT IN` evaluate to NULL, and a CHECK rejects only on FALSE - without it an id
53
+ * with no type passes.
54
+ */
55
+ export declare const policyDefinitionDomainShapeCheck: (opts?: {
56
+ domainTypeColumn?: string;
57
+ domainIdColumn?: string;
58
+ }) => string;
24
59
  export {};
25
60
  //# sourceMappingURL=policy-definition.model.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"policy-definition.model.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/models/entities/policy-definition.model.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,MAAM,wBAAwB,GAAG;IACrC,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,8BAA8B,GAAG;IAC3C,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;IACjC,WAAW,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;IACrC,UAAU,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;IACpC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;IAChC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;IAChC,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;IAChC,QAAQ,EAAE,UAAU,CAAC,OAAO,KAAK,CAAC,CAAC;CACpC,CAAC;AAEF,KAAK,0BAA0B,CAAC,IAAI,SAAS,wBAAwB,GAAG,SAAS,GAAG,SAAS,IAC3F,IAAI,SAAS;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GAC7B,8BAA8B,GAAG;IAC/B,SAAS,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;IACnC,QAAQ,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;CACnC,GACD,8BAA8B,GAAG;IAC/B,SAAS,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;IACtC,QAAQ,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;CACtC,CAAC;AAER,eAAO,MAAM,4BAA4B,GAAI,IAAI,SAAS,wBAAwB,GAAG,SAAS,EAC5F,OAAO,IAAI,KACV,0BAA0B,CAAC,IAAI,CAoCjC,CAAC"}
1
+ {"version":3,"file":"policy-definition.model.d.ts","sourceRoot":"","sources":["../../../../../src/components/auth/models/entities/policy-definition.model.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,sBAAsB,EAEtB,oBAAoB,EACrB,MAAM,uBAAuB,CAAC;AAE/B,OAAO,EAAE,OAAO,EAAS,IAAI,EAAE,MAAM,qBAAqB,CAAC;AAE3D,MAAM,MAAM,wBAAwB,CAAC,YAAY,SAAS,MAAM,GAAG,KAAK,IAAI;IAC1E,MAAM,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC7B;;;;;OAKG;IACH,aAAa,CAAC,EAAE,aAAa,CAAC,YAAY,CAAC,CAAC;CAC7C,CAAC;AAEF,gGAAgG;AAChG,KAAK,qBAAqB,CAAC,IAAI,IAAI,IAAI,SAAS;IAC9C,aAAa,CAAC,EAAE,aAAa,CAAC,MAAM,YAAY,SAAS,MAAM,CAAC,CAAC;CAClE,GACG,YAAY,GACZ,KAAK,CAAC;AAEV,iHAAiH;AACjH,QAAA,MAAM,kCAAkC,GACtC,YAAY,SAAS,MAAM,GAAG,KAAK,EACnC,QAAQ,SAAS,MAAM,GAAG,oBAAoB;;;;;;;;CAa9C,CAAC;AAEH,MAAM,MAAM,8BAA8B,CACxC,YAAY,SAAS,MAAM,GAAG,KAAK,EACnC,QAAQ,SAAS,MAAM,GAAG,oBAAoB,IAC5C,UAAU,CAAC,OAAO,kCAAkC,CAAC,YAAY,EAAE,QAAQ,CAAC,CAAC,CAAC;AAElF,KAAK,0BAA0B,CAC7B,IAAI,SAAS,wBAAwB,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,EACrE,QAAQ,SAAS,MAAM,GAAG,oBAAoB,IAC5C,IAAI,SAAS;IAAE,MAAM,EAAE,QAAQ,CAAA;CAAE,GACjC,8BAA8B,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,GAAG;IACtE,SAAS,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;IACnC,QAAQ,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;IAClC,QAAQ,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,CAAC;CACnC,GACD,8BAA8B,CAAC,qBAAqB,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,GAAG;IACtE,SAAS,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;IACtC,QAAQ,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;IACrC,QAAQ,EAAE,UAAU,CAAC,OAAO,OAAO,CAAC,CAAC;CACtC,CAAC;AAEN;;;;;GAKG;AACH,eAAO,MAAM,4BAA4B,GACvC,KAAK,CAAC,IAAI,SAAS,wBAAwB,CAAC,MAAM,CAAC,GAAG,SAAS,GAAG,SAAS,EAC3E,QAAQ,SAAS,MAAM,GAAG,oBAAoB,EAE9C,OAAO,IAAI,KACV,0BAA0B,CAAC,IAAI,EAAE,QAAQ,CA4B3C,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,gCAAgC,GAAI,OAAO;IACtD,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB,KAAG,MAaH,CAAC"}