@decaf-ts/integrations 0.3.5 → 0.3.7

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 (272) hide show
  1. package/dist/integrations.cjs +1608 -7
  2. package/dist/integrations.js +1841 -5
  3. package/lib/cjs/graph/execution/SwitchGraphNodeExecutor.cjs +13 -5
  4. package/lib/cjs/graph/nodes/base.cjs +35 -0
  5. package/lib/cjs/graph/nodes/flow-control.cjs +31 -3
  6. package/lib/cjs/graph/nodes/index.cjs +3 -2
  7. package/lib/cjs/graph/types.cjs +2 -2
  8. package/lib/cjs/index.cjs +6 -5
  9. package/lib/cjs/namespaces/index.cjs +26 -0
  10. package/lib/cjs/namespaces/models/authorization-model.cjs +12 -0
  11. package/lib/cjs/namespaces/models/effective-permission.model.cjs +95 -0
  12. package/lib/cjs/namespaces/models/group-membership.model.cjs +66 -0
  13. package/lib/cjs/namespaces/models/group.model.cjs +74 -0
  14. package/lib/cjs/namespaces/models/index.cjs +39 -0
  15. package/lib/cjs/namespaces/models/inheritance-block.model.cjs +76 -0
  16. package/lib/cjs/namespaces/models/org-unit-closure.model.cjs +66 -0
  17. package/lib/cjs/namespaces/models/org-unit-membership.model.cjs +73 -0
  18. package/lib/cjs/namespaces/models/org-unit-profile.model.cjs +64 -0
  19. package/lib/cjs/namespaces/models/org-unit.model.cjs +102 -0
  20. package/lib/cjs/namespaces/models/permission.model.cjs +64 -0
  21. package/lib/cjs/namespaces/models/principal.model.cjs +77 -0
  22. package/lib/cjs/namespaces/models/protected-resource.model.cjs +99 -0
  23. package/lib/cjs/namespaces/models/resource-grant.model.cjs +88 -0
  24. package/lib/cjs/namespaces/models/role-assignment.model.cjs +98 -0
  25. package/lib/cjs/namespaces/models/role-permission.model.cjs +55 -0
  26. package/lib/cjs/namespaces/models/role.model.cjs +84 -0
  27. package/lib/cjs/namespaces/models/storage-binding.model.cjs +85 -0
  28. package/lib/cjs/namespaces/models/tenant-membership.model.cjs +67 -0
  29. package/lib/cjs/namespaces/models/tenant-profile.model.cjs +64 -0
  30. package/lib/cjs/namespaces/models/tenant.model.cjs +88 -0
  31. package/lib/cjs/namespaces/models/user.model.cjs +75 -0
  32. package/lib/cjs/namespaces/org-based-authorization-system.cjs +286 -0
  33. package/lib/cjs/namespaces/org-based-authorization-system.models.cjs +968 -0
  34. package/lib/cjs/namespaces/org-based-authorization-system.services.cjs +1046 -0
  35. package/lib/cjs/namespaces/services/authz.service.cjs +76 -0
  36. package/lib/cjs/namespaces/services/bootstrap.service.cjs +112 -0
  37. package/lib/cjs/namespaces/services/effective-permission.service.cjs +150 -0
  38. package/lib/cjs/namespaces/services/group-membership.service.cjs +42 -0
  39. package/lib/cjs/namespaces/services/group.service.cjs +30 -0
  40. package/lib/cjs/namespaces/services/index.cjs +42 -0
  41. package/lib/cjs/namespaces/services/inheritance-block.service.cjs +32 -0
  42. package/lib/cjs/namespaces/services/org-unit-closure.service.cjs +55 -0
  43. package/lib/cjs/namespaces/services/org-unit-membership.service.cjs +34 -0
  44. package/lib/cjs/namespaces/services/org-unit-profile.service.cjs +23 -0
  45. package/lib/cjs/namespaces/services/org-unit.service.cjs +160 -0
  46. package/lib/cjs/namespaces/services/permission.service.cjs +29 -0
  47. package/lib/cjs/namespaces/services/principal.service.cjs +35 -0
  48. package/lib/cjs/namespaces/services/protected-resource.service.cjs +43 -0
  49. package/lib/cjs/namespaces/services/resource-grant.service.cjs +45 -0
  50. package/lib/cjs/namespaces/services/resource-lifecycle.service.cjs +24 -0
  51. package/lib/cjs/namespaces/services/role-assignment.service.cjs +41 -0
  52. package/lib/cjs/namespaces/services/role-permission.service.cjs +51 -0
  53. package/lib/cjs/namespaces/services/role.service.cjs +45 -0
  54. package/lib/cjs/namespaces/services/storage-binding.service.cjs +39 -0
  55. package/lib/cjs/namespaces/services/system-management.service.cjs +102 -0
  56. package/lib/cjs/namespaces/services/tenant-membership.service.cjs +33 -0
  57. package/lib/cjs/namespaces/services/tenant-profile.service.cjs +28 -0
  58. package/lib/cjs/namespaces/services/tenant.service.cjs +36 -0
  59. package/lib/cjs/namespaces/services/user.service.cjs +32 -0
  60. package/lib/cjs/namespaces/types.cjs +67 -0
  61. package/lib/cjs/namespaces/utils.cjs +161 -0
  62. package/lib/cjs/nest/authService.cjs +5 -2
  63. package/lib/cjs/nest/graph/GraphExecutionController.cjs +153 -0
  64. package/lib/cjs/nest/graph/GraphExecutionModule.cjs +84 -0
  65. package/lib/cjs/nest/graph/GraphExecutionResultModel.cjs +82 -0
  66. package/lib/cjs/nest/graph/GraphExecutionResultRepository.cjs +66 -0
  67. package/lib/cjs/nest/graph/GraphExecutorRegistryFactory.cjs +35 -0
  68. package/lib/cjs/nest/graph/index.cjs +28 -0
  69. package/lib/cjs/nest/index.cjs +3 -2
  70. package/lib/esm/graph/execution/SwitchGraphNodeExecutor.js +12 -4
  71. package/lib/esm/graph/nodes/base.js +30 -0
  72. package/lib/esm/graph/nodes/flow-control.js +31 -3
  73. package/lib/esm/graph/nodes/index.js +2 -1
  74. package/lib/esm/graph/types.js +1 -1
  75. package/lib/esm/index.js +5 -4
  76. package/lib/esm/namespaces/index.js +9 -0
  77. package/lib/esm/namespaces/models/authorization-model.js +7 -0
  78. package/lib/esm/namespaces/models/effective-permission.model.js +86 -0
  79. package/lib/esm/namespaces/models/group-membership.model.js +57 -0
  80. package/lib/esm/namespaces/models/group.model.js +65 -0
  81. package/lib/esm/namespaces/models/index.js +22 -0
  82. package/lib/esm/namespaces/models/inheritance-block.model.js +67 -0
  83. package/lib/esm/namespaces/models/org-unit-closure.model.js +57 -0
  84. package/lib/esm/namespaces/models/org-unit-membership.model.js +64 -0
  85. package/lib/esm/namespaces/models/org-unit-profile.model.js +55 -0
  86. package/lib/esm/namespaces/models/org-unit.model.js +93 -0
  87. package/lib/esm/namespaces/models/permission.model.js +55 -0
  88. package/lib/esm/namespaces/models/principal.model.js +68 -0
  89. package/lib/esm/namespaces/models/protected-resource.model.js +90 -0
  90. package/lib/esm/namespaces/models/resource-grant.model.js +79 -0
  91. package/lib/esm/namespaces/models/role-assignment.model.js +89 -0
  92. package/lib/esm/namespaces/models/role-permission.model.js +46 -0
  93. package/lib/esm/namespaces/models/role.model.js +75 -0
  94. package/lib/esm/namespaces/models/storage-binding.model.js +76 -0
  95. package/lib/esm/namespaces/models/tenant-membership.model.js +58 -0
  96. package/lib/esm/namespaces/models/tenant-profile.model.js +55 -0
  97. package/lib/esm/namespaces/models/tenant.model.js +79 -0
  98. package/lib/esm/namespaces/models/user.model.js +66 -0
  99. package/lib/esm/namespaces/org-based-authorization-system.js +283 -0
  100. package/lib/esm/namespaces/org-based-authorization-system.models.js +958 -0
  101. package/lib/esm/namespaces/org-based-authorization-system.services.js +1014 -0
  102. package/lib/esm/namespaces/services/authz.service.js +71 -0
  103. package/lib/esm/namespaces/services/bootstrap.service.js +102 -0
  104. package/lib/esm/namespaces/services/effective-permission.service.js +140 -0
  105. package/lib/esm/namespaces/services/group-membership.service.js +37 -0
  106. package/lib/esm/namespaces/services/group.service.js +25 -0
  107. package/lib/esm/namespaces/services/index.js +25 -0
  108. package/lib/esm/namespaces/services/inheritance-block.service.js +27 -0
  109. package/lib/esm/namespaces/services/org-unit-closure.service.js +50 -0
  110. package/lib/esm/namespaces/services/org-unit-membership.service.js +29 -0
  111. package/lib/esm/namespaces/services/org-unit-profile.service.js +18 -0
  112. package/lib/esm/namespaces/services/org-unit.service.js +150 -0
  113. package/lib/esm/namespaces/services/permission.service.js +24 -0
  114. package/lib/esm/namespaces/services/principal.service.js +30 -0
  115. package/lib/esm/namespaces/services/protected-resource.service.js +38 -0
  116. package/lib/esm/namespaces/services/resource-grant.service.js +40 -0
  117. package/lib/esm/namespaces/services/resource-lifecycle.service.js +19 -0
  118. package/lib/esm/namespaces/services/role-assignment.service.js +36 -0
  119. package/lib/esm/namespaces/services/role-permission.service.js +46 -0
  120. package/lib/esm/namespaces/services/role.service.js +40 -0
  121. package/lib/esm/namespaces/services/storage-binding.service.js +34 -0
  122. package/lib/esm/namespaces/services/system-management.service.js +92 -0
  123. package/lib/esm/namespaces/services/tenant-membership.service.js +28 -0
  124. package/lib/esm/namespaces/services/tenant-profile.service.js +23 -0
  125. package/lib/esm/namespaces/services/tenant.service.js +31 -0
  126. package/lib/esm/namespaces/services/user.service.js +27 -0
  127. package/lib/esm/namespaces/types.js +71 -0
  128. package/lib/esm/namespaces/utils.js +143 -0
  129. package/lib/esm/nest/authService.js +4 -1
  130. package/lib/esm/nest/graph/GraphExecutionController.js +144 -0
  131. package/lib/esm/nest/graph/GraphExecutionModule.js +76 -0
  132. package/lib/esm/nest/graph/GraphExecutionResultModel.js +73 -0
  133. package/lib/esm/nest/graph/GraphExecutionResultRepository.js +60 -0
  134. package/lib/esm/nest/graph/GraphExecutorRegistryFactory.js +31 -0
  135. package/lib/esm/nest/graph/index.js +11 -0
  136. package/lib/esm/nest/index.js +2 -1
  137. package/lib/types/graph/nodes/base.d.cts +28 -0
  138. package/lib/types/graph/nodes/base.d.mts +28 -0
  139. package/lib/types/graph/nodes/flow-control.d.cts +9 -1
  140. package/lib/types/graph/nodes/flow-control.d.mts +9 -1
  141. package/lib/types/graph/nodes/index.d.cts +1 -0
  142. package/lib/types/graph/nodes/index.d.mts +1 -0
  143. package/lib/types/graph/types.d.cts +15 -1
  144. package/lib/types/graph/types.d.mts +15 -1
  145. package/lib/types/index.d.cts +3 -2
  146. package/lib/types/index.d.mts +3 -2
  147. package/lib/types/namespaces/index.d.cts +8 -0
  148. package/lib/types/namespaces/index.d.mts +8 -0
  149. package/lib/types/namespaces/models/authorization-model.d.cts +4 -0
  150. package/lib/types/namespaces/models/authorization-model.d.mts +4 -0
  151. package/lib/types/namespaces/models/effective-permission.model.d.cts +18 -0
  152. package/lib/types/namespaces/models/effective-permission.model.d.mts +18 -0
  153. package/lib/types/namespaces/models/group-membership.model.d.cts +13 -0
  154. package/lib/types/namespaces/models/group-membership.model.d.mts +13 -0
  155. package/lib/types/namespaces/models/group.model.d.cts +15 -0
  156. package/lib/types/namespaces/models/group.model.d.mts +15 -0
  157. package/lib/types/namespaces/models/index.d.cts +21 -0
  158. package/lib/types/namespaces/models/index.d.mts +21 -0
  159. package/lib/types/namespaces/models/inheritance-block.model.d.cts +15 -0
  160. package/lib/types/namespaces/models/inheritance-block.model.d.mts +15 -0
  161. package/lib/types/namespaces/models/org-unit-closure.model.d.cts +12 -0
  162. package/lib/types/namespaces/models/org-unit-closure.model.d.mts +12 -0
  163. package/lib/types/namespaces/models/org-unit-membership.model.d.cts +15 -0
  164. package/lib/types/namespaces/models/org-unit-membership.model.d.mts +15 -0
  165. package/lib/types/namespaces/models/org-unit-profile.model.d.cts +11 -0
  166. package/lib/types/namespaces/models/org-unit-profile.model.d.mts +11 -0
  167. package/lib/types/namespaces/models/org-unit.model.d.cts +23 -0
  168. package/lib/types/namespaces/models/org-unit.model.d.mts +23 -0
  169. package/lib/types/namespaces/models/permission.model.d.cts +11 -0
  170. package/lib/types/namespaces/models/permission.model.d.mts +11 -0
  171. package/lib/types/namespaces/models/principal.model.d.cts +16 -0
  172. package/lib/types/namespaces/models/principal.model.d.mts +16 -0
  173. package/lib/types/namespaces/models/protected-resource.model.d.cts +21 -0
  174. package/lib/types/namespaces/models/protected-resource.model.d.mts +21 -0
  175. package/lib/types/namespaces/models/resource-grant.model.d.cts +18 -0
  176. package/lib/types/namespaces/models/resource-grant.model.d.mts +18 -0
  177. package/lib/types/namespaces/models/role-assignment.model.d.cts +20 -0
  178. package/lib/types/namespaces/models/role-assignment.model.d.mts +20 -0
  179. package/lib/types/namespaces/models/role-permission.model.d.cts +10 -0
  180. package/lib/types/namespaces/models/role-permission.model.d.mts +10 -0
  181. package/lib/types/namespaces/models/role.model.d.cts +17 -0
  182. package/lib/types/namespaces/models/role.model.d.mts +17 -0
  183. package/lib/types/namespaces/models/storage-binding.model.d.cts +15 -0
  184. package/lib/types/namespaces/models/storage-binding.model.d.mts +15 -0
  185. package/lib/types/namespaces/models/tenant-membership.model.d.cts +13 -0
  186. package/lib/types/namespaces/models/tenant-membership.model.d.mts +13 -0
  187. package/lib/types/namespaces/models/tenant-profile.model.d.cts +11 -0
  188. package/lib/types/namespaces/models/tenant-profile.model.d.mts +11 -0
  189. package/lib/types/namespaces/models/tenant.model.d.cts +19 -0
  190. package/lib/types/namespaces/models/tenant.model.d.mts +19 -0
  191. package/lib/types/namespaces/models/user.model.d.cts +14 -0
  192. package/lib/types/namespaces/models/user.model.d.mts +14 -0
  193. package/lib/types/namespaces/org-based-authorization-system.d.cts +299 -0
  194. package/lib/types/namespaces/org-based-authorization-system.d.mts +299 -0
  195. package/lib/types/namespaces/org-based-authorization-system.models.d.cts +212 -0
  196. package/lib/types/namespaces/org-based-authorization-system.models.d.mts +212 -0
  197. package/lib/types/namespaces/org-based-authorization-system.services.d.cts +217 -0
  198. package/lib/types/namespaces/org-based-authorization-system.services.d.mts +217 -0
  199. package/lib/types/namespaces/services/authz.service.d.cts +10 -0
  200. package/lib/types/namespaces/services/authz.service.d.mts +10 -0
  201. package/lib/types/namespaces/services/bootstrap.service.d.cts +21 -0
  202. package/lib/types/namespaces/services/bootstrap.service.d.mts +21 -0
  203. package/lib/types/namespaces/services/effective-permission.service.d.cts +13 -0
  204. package/lib/types/namespaces/services/effective-permission.service.d.mts +13 -0
  205. package/lib/types/namespaces/services/group-membership.service.d.cts +10 -0
  206. package/lib/types/namespaces/services/group-membership.service.d.mts +10 -0
  207. package/lib/types/namespaces/services/group.service.d.cts +9 -0
  208. package/lib/types/namespaces/services/group.service.d.mts +9 -0
  209. package/lib/types/namespaces/services/index.d.cts +24 -0
  210. package/lib/types/namespaces/services/index.d.mts +24 -0
  211. package/lib/types/namespaces/services/inheritance-block.service.d.cts +10 -0
  212. package/lib/types/namespaces/services/inheritance-block.service.d.mts +10 -0
  213. package/lib/types/namespaces/services/org-unit-closure.service.d.cts +11 -0
  214. package/lib/types/namespaces/services/org-unit-closure.service.d.mts +11 -0
  215. package/lib/types/namespaces/services/org-unit-membership.service.d.cts +11 -0
  216. package/lib/types/namespaces/services/org-unit-membership.service.d.mts +11 -0
  217. package/lib/types/namespaces/services/org-unit-profile.service.d.cts +7 -0
  218. package/lib/types/namespaces/services/org-unit-profile.service.d.mts +7 -0
  219. package/lib/types/namespaces/services/org-unit.service.d.cts +18 -0
  220. package/lib/types/namespaces/services/org-unit.service.d.mts +18 -0
  221. package/lib/types/namespaces/services/permission.service.d.cts +10 -0
  222. package/lib/types/namespaces/services/permission.service.d.mts +10 -0
  223. package/lib/types/namespaces/services/principal.service.d.cts +11 -0
  224. package/lib/types/namespaces/services/principal.service.d.mts +11 -0
  225. package/lib/types/namespaces/services/protected-resource.service.d.cts +13 -0
  226. package/lib/types/namespaces/services/protected-resource.service.d.mts +13 -0
  227. package/lib/types/namespaces/services/resource-grant.service.d.cts +12 -0
  228. package/lib/types/namespaces/services/resource-grant.service.d.mts +12 -0
  229. package/lib/types/namespaces/services/resource-lifecycle.service.d.cts +10 -0
  230. package/lib/types/namespaces/services/resource-lifecycle.service.d.mts +10 -0
  231. package/lib/types/namespaces/services/role-assignment.service.d.cts +12 -0
  232. package/lib/types/namespaces/services/role-assignment.service.d.mts +12 -0
  233. package/lib/types/namespaces/services/role-permission.service.d.cts +12 -0
  234. package/lib/types/namespaces/services/role-permission.service.d.mts +12 -0
  235. package/lib/types/namespaces/services/role.service.d.cts +12 -0
  236. package/lib/types/namespaces/services/role.service.d.mts +12 -0
  237. package/lib/types/namespaces/services/storage-binding.service.d.cts +12 -0
  238. package/lib/types/namespaces/services/storage-binding.service.d.mts +12 -0
  239. package/lib/types/namespaces/services/system-management.service.d.cts +14 -0
  240. package/lib/types/namespaces/services/system-management.service.d.mts +14 -0
  241. package/lib/types/namespaces/services/tenant-membership.service.d.cts +11 -0
  242. package/lib/types/namespaces/services/tenant-membership.service.d.mts +11 -0
  243. package/lib/types/namespaces/services/tenant-profile.service.d.cts +8 -0
  244. package/lib/types/namespaces/services/tenant-profile.service.d.mts +8 -0
  245. package/lib/types/namespaces/services/tenant.service.d.cts +12 -0
  246. package/lib/types/namespaces/services/tenant.service.d.mts +12 -0
  247. package/lib/types/namespaces/services/user.service.d.cts +11 -0
  248. package/lib/types/namespaces/services/user.service.d.mts +11 -0
  249. package/lib/types/namespaces/types.d.cts +230 -0
  250. package/lib/types/namespaces/types.d.mts +230 -0
  251. package/lib/types/namespaces/utils.d.cts +68 -0
  252. package/lib/types/namespaces/utils.d.mts +68 -0
  253. package/lib/types/nest/authService.d.cts +1 -0
  254. package/lib/types/nest/authService.d.mts +1 -0
  255. package/lib/types/nest/graph/GraphExecutionController.d.cts +62 -0
  256. package/lib/types/nest/graph/GraphExecutionController.d.mts +62 -0
  257. package/lib/types/nest/graph/GraphExecutionModule.d.cts +39 -0
  258. package/lib/types/nest/graph/GraphExecutionModule.d.mts +39 -0
  259. package/lib/types/nest/graph/GraphExecutionResultModel.d.cts +46 -0
  260. package/lib/types/nest/graph/GraphExecutionResultModel.d.mts +46 -0
  261. package/lib/types/nest/graph/GraphExecutionResultRepository.d.cts +38 -0
  262. package/lib/types/nest/graph/GraphExecutionResultRepository.d.mts +38 -0
  263. package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.cts +17 -0
  264. package/lib/types/nest/graph/GraphExecutorRegistryFactory.d.mts +17 -0
  265. package/lib/types/nest/graph/index.d.cts +10 -0
  266. package/lib/types/nest/graph/index.d.mts +10 -0
  267. package/lib/types/nest/index.d.cts +1 -0
  268. package/lib/types/nest/index.d.mts +1 -0
  269. package/package.json +16 -5
  270. package/sql/001_constraints.sql +11 -0
  271. package/sql/002_rls.sql +20 -0
  272. package/sql/003_indexes.sql +2 -0
@@ -0,0 +1,299 @@
1
+ import { Cascade, ModelService, Repository, transactional } from "@decaf-ts/core";
2
+ import { Model } from "@decaf-ts/decorator-validation";
3
+ export declare enum IsolationTier {
4
+ Pooled = "pooled",
5
+ Bridge = "bridge",
6
+ Silo = "silo"
7
+ }
8
+ export declare enum MembershipStatus {
9
+ Invited = "invited",
10
+ Active = "active",
11
+ Suspended = "suspended",
12
+ Removed = "removed"
13
+ }
14
+ export declare enum PrincipalKind {
15
+ User = "user",
16
+ Group = "group",
17
+ ServiceAccount = "service_account",
18
+ Agent = "agent",
19
+ ApiKey = "api_key"
20
+ }
21
+ export declare enum ScopeKind {
22
+ Tenant = "tenant",
23
+ OrgUnit = "org_unit",
24
+ Resource = "resource"
25
+ }
26
+ export declare enum PermissionCategory {
27
+ Admin = "admin",
28
+ ContentRead = "content_read",
29
+ ContentWrite = "content_write",
30
+ Memory = "memory",
31
+ Graph = "graph",
32
+ Vector = "vector",
33
+ Export = "export",
34
+ Billing = "billing",
35
+ Audit = "audit",
36
+ Security = "security",
37
+ Data = "data",
38
+ Automation = "automation"
39
+ }
40
+ export declare enum ResourceVisibility {
41
+ Private = "private",
42
+ ResourceAcl = "resource_acl",
43
+ OrgUnit = "org_unit",
44
+ OrgSubtree = "org_subtree",
45
+ Tenant = "tenant"
46
+ }
47
+ export declare enum StorageKind {
48
+ Postgres = "postgres",
49
+ Arango = "arango",
50
+ Qdrant = "qdrant",
51
+ ObjectStorage = "object_storage"
52
+ }
53
+ export declare enum StorageBindingKind {
54
+ Shared = "shared",
55
+ Dedicated = "dedicated"
56
+ }
57
+ export declare const IsolationTierOptions: IsolationTier[];
58
+ export declare const MembershipStatusOptions: MembershipStatus[];
59
+ export declare const PrincipalKindOptions: PrincipalKind[];
60
+ export declare const ScopeKindOptions: ScopeKind[];
61
+ export declare const PermissionCategoryOptions: PermissionCategory[];
62
+ export declare const ResourceVisibilityOptions: ResourceVisibility[];
63
+ export declare const StorageKindOptions: StorageKind[];
64
+ export declare const StorageBindingKindOptions: StorageBindingKind[];
65
+ export declare const REL_RESTRICT: {
66
+ readonly update: Cascade.NONE;
67
+ readonly delete: Cascade.NONE;
68
+ readonly nullable: false;
69
+ };
70
+ export declare const REL_NULLIFY: {
71
+ readonly update: Cascade.NONE;
72
+ readonly delete: Cascade.NONE;
73
+ readonly nullable: true;
74
+ };
75
+ export declare const REL_CASCADE_DEPENDENT: {
76
+ readonly update: Cascade.CASCADE;
77
+ readonly delete: Cascade.CASCADE;
78
+ readonly nullable: false;
79
+ };
80
+ export declare const REL_CASCADE_INSERT_UPDATE: {
81
+ readonly update: Cascade.CASCADE;
82
+ readonly delete: Cascade.NONE;
83
+ readonly nullable: false;
84
+ };
85
+ export type TxArgs = any[];
86
+ export interface CreateTenantInput {
87
+ slug: string;
88
+ name: string;
89
+ isolationTier?: IsolationTier;
90
+ profileKey?: string;
91
+ profileMetadata?: Record<string, unknown>;
92
+ }
93
+ export interface CreateUserInput {
94
+ email?: string;
95
+ phone?: string;
96
+ displayName: string;
97
+ }
98
+ export interface CreateOrgUnitInput {
99
+ tenantId: string;
100
+ parentOrgUnitId?: string;
101
+ name: string;
102
+ metadata?: Record<string, unknown>;
103
+ profileKey?: string;
104
+ profileMetadata?: Record<string, unknown>;
105
+ }
106
+ export interface CreateRoleInput {
107
+ tenantId?: string;
108
+ key: string;
109
+ name: string;
110
+ description?: string;
111
+ metadata?: Record<string, unknown>;
112
+ }
113
+ export interface CreatePermissionInput {
114
+ key: string;
115
+ category: PermissionCategory;
116
+ description?: string;
117
+ }
118
+ export interface AssignRoleInput {
119
+ tenantId: string;
120
+ principalId: string;
121
+ roleId: string;
122
+ scopeKind: ScopeKind;
123
+ scopeId: string;
124
+ inheritDown?: boolean;
125
+ startsAt?: Date;
126
+ expiresAt?: Date;
127
+ conditions?: Record<string, unknown>;
128
+ }
129
+ export interface RegisterResourceInput {
130
+ tenantId: string;
131
+ orgUnitId: string;
132
+ resourceType: string;
133
+ resourceId: string;
134
+ visibility: ResourceVisibility;
135
+ ownerPrincipalId?: string;
136
+ sensitivity?: string;
137
+ metadata?: Record<string, unknown>;
138
+ }
139
+ export interface GrantResourceInput {
140
+ tenantId: string;
141
+ resourceId: string;
142
+ principalId: string;
143
+ permissionKey: string;
144
+ startsAt?: Date;
145
+ expiresAt?: Date;
146
+ conditions?: Record<string, unknown>;
147
+ createdByPrincipalId?: string;
148
+ }
149
+ export interface CanAccessInput {
150
+ tenantId: string;
151
+ principalId: string;
152
+ permissionKey: string;
153
+ resourceProtectedId?: string;
154
+ scopeKind?: ScopeKind;
155
+ scopeId?: string;
156
+ at?: Date;
157
+ }
158
+ export interface AccessContext {
159
+ tenantId: string;
160
+ principalId: string;
161
+ permissionsByScope: Record<string, string[]>;
162
+ allowedOrgUnitIdsByPermission: Record<string, string[]>;
163
+ resourceGrants: Array<{
164
+ resourceId: string;
165
+ permissionKey: string;
166
+ }>;
167
+ }
168
+ export interface ArangoAuthContext {
169
+ tenantId: string;
170
+ principalId: string;
171
+ permissionKey: string;
172
+ allowedOrgUnitIds: string[];
173
+ allowedResourceIds: string[];
174
+ }
175
+ export interface QdrantAuthFilter {
176
+ must: Array<Record<string, unknown>>;
177
+ must_not?: Array<Record<string, unknown>>;
178
+ }
179
+ export interface CreateStorageBindingInput {
180
+ tenantId: string;
181
+ storageKind: StorageKind;
182
+ bindingKind: StorageBindingKind;
183
+ bindingKey: string;
184
+ region: string;
185
+ config?: Record<string, unknown>;
186
+ }
187
+ export interface BootstrapPermission {
188
+ key: string;
189
+ category: PermissionCategory;
190
+ description?: string;
191
+ }
192
+ export interface BootstrapRole {
193
+ key: string;
194
+ name: string;
195
+ description?: string;
196
+ permissionKeys: string[];
197
+ }
198
+ export interface BootstrapOrgUnit {
199
+ name: string;
200
+ profileKey?: string;
201
+ metadata?: Record<string, unknown>;
202
+ children?: BootstrapOrgUnit[];
203
+ }
204
+ export interface BootstrapTemplate {
205
+ tenant: CreateTenantInput;
206
+ rootOrgUnit: BootstrapOrgUnit;
207
+ permissions: BootstrapPermission[];
208
+ roles: BootstrapRole[];
209
+ ownerUser: CreateUserInput;
210
+ ownerRoleKey: string;
211
+ }
212
+ export interface ResourceSnapshot {
213
+ id: string;
214
+ tenantId: string;
215
+ orgUnitId: string;
216
+ resourceType: string;
217
+ resourceId: string;
218
+ visibility: ResourceVisibility;
219
+ ownerPrincipalId?: string;
220
+ sensitivity?: string;
221
+ metadata?: Record<string, unknown>;
222
+ }
223
+ export interface GrantSnapshot {
224
+ id: string;
225
+ tenantId: string;
226
+ resourceId: string;
227
+ principalId: string;
228
+ permissionKey: string;
229
+ startsAt?: Date;
230
+ expiresAt?: Date;
231
+ conditions?: Record<string, unknown>;
232
+ createdByPrincipalId?: string;
233
+ }
234
+ export interface EffectivePermissionSnapshot {
235
+ id: string;
236
+ tenantId: string;
237
+ principalId: string;
238
+ permissionKey: string;
239
+ scopeKind: ScopeKind;
240
+ scopeId: string;
241
+ sourceKind: string;
242
+ sourceId: string;
243
+ startsAt?: Date;
244
+ expiresAt?: Date;
245
+ }
246
+ export interface AuthzDataSources {
247
+ loadResource?: (tenantId: string, protectedResourceId: string) => Promise<ResourceSnapshot | undefined>;
248
+ listResourceGrants?: (tenantId: string, protectedResourceId: string) => Promise<GrantSnapshot[]>;
249
+ listPrincipalGrants?: (tenantId: string, principalId: string) => Promise<GrantSnapshot[]>;
250
+ listEffectivePermissions?: (tenantId: string, principalId: string) => Promise<EffectivePermissionSnapshot[]>;
251
+ listEffectivePermissionsForScope?: (tenantId: string, scopeKind: ScopeKind, scopeId: string) => Promise<EffectivePermissionSnapshot[]>;
252
+ }
253
+ export declare function buildArangoContext(options: {
254
+ tenantId: string;
255
+ principalId: string;
256
+ permissionKey: string;
257
+ allowedOrgUnitIds: string[];
258
+ allowedResourceIds: string[];
259
+ }): ArangoAuthContext;
260
+ export declare function buildQdrantFilter(options: {
261
+ tenantId: string;
262
+ principalId: string;
263
+ permissionKey: string;
264
+ allowedOrgUnitIds: string[];
265
+ allowedResourceIds: string[];
266
+ }): QdrantAuthFilter;
267
+ export declare function buildAccessContext(options: {
268
+ tenantId: string;
269
+ principalId: string;
270
+ permissions: EffectivePermissionSnapshot[];
271
+ grants: GrantSnapshot[];
272
+ }): AccessContext;
273
+ export declare abstract class BaseModelService<M extends Model<boolean> & {
274
+ id: string;
275
+ }> extends ModelService<M, Repository<M, any>> {
276
+ protected constructor(clazz: new () => M);
277
+ protected newModel<T>(clazz: new () => T, data: Partial<T>): T;
278
+ createOne(data: Partial<M>, ...args: any[]): Promise<M>;
279
+ getById(id: string, ...args: any[]): Promise<M>;
280
+ updateOne(id: string, patch: Partial<M>, ...args: any[]): Promise<M>;
281
+ deleteById(id: string, ...args: any[]): Promise<void>;
282
+ findOneBy<K extends keyof M & string>(key: K, value: M[K], ...args: any[]): Promise<M>;
283
+ findManyBy<K extends keyof M & string>(key: K, value: M[K], ...args: any[]): Promise<M[]>;
284
+ listAll(...args: any[]): Promise<M[]>;
285
+ }
286
+ export declare function id(): string;
287
+ export declare function relationId(value: string | {
288
+ id: string;
289
+ }): string;
290
+ export declare class AuthzService {
291
+ private readonly dataSources;
292
+ constructor(dataSources?: AuthzDataSources);
293
+ canAccess(input: CanAccessInput, ...args: any[]): Promise<boolean>;
294
+ requireAccess(input: CanAccessInput, ...args: any[]): Promise<void>;
295
+ buildAccessContext(tenantId: string, principalId: string, ...args: any[]): Promise<AccessContext>;
296
+ buildArangoContext(tenantId: string, principalId: string, permissionKey: string, ...args: any[]): Promise<ArangoAuthContext>;
297
+ buildQdrantFilter(tenantId: string, principalId: string, permissionKey: string, ...args: any[]): Promise<QdrantAuthFilter>;
298
+ }
299
+ export { transactional };
@@ -0,0 +1,212 @@
1
+ import { Model } from "@decaf-ts/decorator-validation";
2
+ import { IsolationTier, MembershipStatus, PermissionCategory, PrincipalKind, ResourceVisibility, ScopeKind, StorageBindingKind, StorageKind } from "./org-based-authorization-system.d.cts";
3
+ export declare class AuthorizationModel extends Model {
4
+ constructor(data?: unknown);
5
+ }
6
+ export declare class Tenant extends AuthorizationModel {
7
+ id: string;
8
+ slug: string;
9
+ name: string;
10
+ isolationTier: IsolationTier;
11
+ orgUnits?: OrgUnit[] | string[];
12
+ memberships?: TenantMembership[] | string[];
13
+ principals?: Principal[] | string[];
14
+ storageBindings?: StorageBinding[] | string[];
15
+ createdAt: Date;
16
+ updatedAt: Date;
17
+ }
18
+ export declare class TenantProfile extends AuthorizationModel {
19
+ id: string;
20
+ tenant: Tenant | string;
21
+ profileKey: string;
22
+ metadata?: Record<string, unknown>;
23
+ createdAt: Date;
24
+ updatedAt: Date;
25
+ }
26
+ export declare class OrgUnit extends AuthorizationModel {
27
+ id: string;
28
+ tenant: Tenant | string;
29
+ parent?: OrgUnit | string;
30
+ children?: OrgUnit[] | string[];
31
+ name: string;
32
+ path: string;
33
+ metadata?: Record<string, unknown>;
34
+ memberships?: OrgUnitMembership[] | string[];
35
+ resources?: ProtectedResource[] | string[];
36
+ inheritanceBlocks?: InheritanceBlock[] | string[];
37
+ ancestorLinks?: OrgUnitClosure[] | string[];
38
+ descendantLinks?: OrgUnitClosure[] | string[];
39
+ createdAt: Date;
40
+ updatedAt: Date;
41
+ }
42
+ export declare class OrgUnitProfile extends AuthorizationModel {
43
+ id: string;
44
+ orgUnit: OrgUnit | string;
45
+ profileKey: string;
46
+ metadata?: Record<string, unknown>;
47
+ createdAt: Date;
48
+ updatedAt: Date;
49
+ }
50
+ export declare class OrgUnitClosure extends AuthorizationModel {
51
+ id: string;
52
+ tenant: Tenant | string;
53
+ ancestor: OrgUnit | string;
54
+ descendant: OrgUnit | string;
55
+ depth: number;
56
+ createdAt: Date;
57
+ }
58
+ export declare class User extends AuthorizationModel {
59
+ id: string;
60
+ email?: string;
61
+ phone?: string;
62
+ displayName: string;
63
+ tenantMemberships?: TenantMembership[] | string[];
64
+ orgUnitMemberships?: OrgUnitMembership[] | string[];
65
+ createdAt: Date;
66
+ updatedAt: Date;
67
+ }
68
+ export declare class Group extends AuthorizationModel {
69
+ id: string;
70
+ tenant: Tenant | string;
71
+ orgUnit?: OrgUnit | string;
72
+ name: string;
73
+ metadata?: Record<string, unknown>;
74
+ members?: GroupMembership[] | string[];
75
+ createdAt: Date;
76
+ updatedAt: Date;
77
+ }
78
+ export declare class Principal extends AuthorizationModel {
79
+ id: string;
80
+ tenant: Tenant | string;
81
+ kind: PrincipalKind;
82
+ subjectId: string;
83
+ roleAssignments?: RoleAssignment[] | string[];
84
+ resourceGrants?: ResourceGrant[] | string[];
85
+ createdAt: Date;
86
+ updatedAt: Date;
87
+ }
88
+ export declare class TenantMembership extends AuthorizationModel {
89
+ id: string;
90
+ tenant: Tenant | string;
91
+ user: User | string;
92
+ status: MembershipStatus;
93
+ createdAt: Date;
94
+ updatedAt: Date;
95
+ }
96
+ export declare class OrgUnitMembership extends AuthorizationModel {
97
+ id: string;
98
+ tenant: Tenant | string;
99
+ orgUnit: OrgUnit | string;
100
+ user: User | string;
101
+ status: MembershipStatus;
102
+ createdAt: Date;
103
+ updatedAt: Date;
104
+ }
105
+ export declare class GroupMembership extends AuthorizationModel {
106
+ id: string;
107
+ tenant: Tenant | string;
108
+ group: Group | string;
109
+ principal: Principal | string;
110
+ metadata?: Record<string, unknown>;
111
+ createdAt: Date;
112
+ }
113
+ export declare class Permission extends AuthorizationModel {
114
+ id: string;
115
+ key: string;
116
+ category: PermissionCategory;
117
+ description?: string;
118
+ rolePermissions?: RolePermission[] | string[];
119
+ }
120
+ export declare class Role extends AuthorizationModel {
121
+ id: string;
122
+ tenant?: Tenant | string;
123
+ key: string;
124
+ name: string;
125
+ description?: string;
126
+ metadata?: Record<string, unknown>;
127
+ rolePermissions?: RolePermission[] | string[];
128
+ assignments?: RoleAssignment[] | string[];
129
+ createdAt: Date;
130
+ updatedAt: Date;
131
+ }
132
+ export declare class RolePermission extends AuthorizationModel {
133
+ id: string;
134
+ role: Role | string;
135
+ permission: Permission | string;
136
+ createdAt: Date;
137
+ }
138
+ export declare class RoleAssignment extends AuthorizationModel {
139
+ id: string;
140
+ tenant: Tenant | string;
141
+ principal: Principal | string;
142
+ role: Role | string;
143
+ scopeKind: ScopeKind;
144
+ scopeId: string;
145
+ inheritDown: boolean;
146
+ startsAt?: Date;
147
+ expiresAt?: Date;
148
+ conditions?: Record<string, unknown>;
149
+ createdAt: Date;
150
+ updatedAt: Date;
151
+ }
152
+ export declare class InheritanceBlock extends AuthorizationModel {
153
+ id: string;
154
+ tenant: Tenant | string;
155
+ orgUnit: OrgUnit | string;
156
+ blockedFromAncestor?: OrgUnit | string;
157
+ permissionCategory: PermissionCategory;
158
+ reason?: string;
159
+ createdAt: Date;
160
+ updatedAt: Date;
161
+ }
162
+ export declare class ProtectedResource extends AuthorizationModel {
163
+ id: string;
164
+ tenant: Tenant | string;
165
+ orgUnit: OrgUnit | string;
166
+ resourceType: string;
167
+ resourceId: string;
168
+ visibility: ResourceVisibility;
169
+ owner?: Principal | string;
170
+ sensitivity?: string;
171
+ metadata?: Record<string, unknown>;
172
+ grants?: ResourceGrant[] | string[];
173
+ createdAt: Date;
174
+ updatedAt: Date;
175
+ }
176
+ export declare class ResourceGrant extends AuthorizationModel {
177
+ id: string;
178
+ tenant: Tenant | string;
179
+ resource: ProtectedResource | string;
180
+ principal: Principal | string;
181
+ permissionKey: string;
182
+ startsAt?: Date;
183
+ expiresAt?: Date;
184
+ conditions?: Record<string, unknown>;
185
+ createdBy?: Principal | string;
186
+ createdAt: Date;
187
+ updatedAt: Date;
188
+ }
189
+ export declare class EffectivePermission extends AuthorizationModel {
190
+ id: string;
191
+ tenant: Tenant | string;
192
+ principal: Principal | string;
193
+ permissionKey: string;
194
+ scopeKind: ScopeKind;
195
+ scopeId: string;
196
+ sourceKind: string;
197
+ sourceId: string;
198
+ startsAt?: Date;
199
+ expiresAt?: Date;
200
+ createdAt: Date;
201
+ }
202
+ export declare class StorageBinding extends AuthorizationModel {
203
+ id: string;
204
+ tenant: Tenant | string;
205
+ storageKind: StorageKind;
206
+ bindingKind: StorageBindingKind;
207
+ bindingKey: string;
208
+ region: string;
209
+ config?: Record<string, unknown>;
210
+ createdAt: Date;
211
+ updatedAt: Date;
212
+ }