@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,11 @@
1
+ import { BaseModelService } from "../utils.d.mts";
2
+ import { MembershipStatus } from "../types.d.mts";
3
+ import { TenantMembership } from "../models/tenant-membership.model.d.mts";
4
+ export declare class TenantMembershipService extends BaseModelService<TenantMembership> {
5
+ constructor();
6
+ addUserToTenant(tenantId: string, userId: string, status?: MembershipStatus, ...args: any[]): Promise<TenantMembership>;
7
+ setStatus(membershipId: string, status: MembershipStatus, ...args: any[]): Promise<TenantMembership>;
8
+ listUserTenants(userId: string, ...args: any[]): Promise<TenantMembership[]>;
9
+ listTenantUsers(tenantId: string, ...args: any[]): Promise<TenantMembership[]>;
10
+ removeUserFromTenant(membershipId: string, ...args: any[]): Promise<void>;
11
+ }
@@ -0,0 +1,8 @@
1
+ import { BaseModelService } from "../utils.d.cts";
2
+ import { TenantProfile } from "../models/tenant-profile.model.d.cts";
3
+ export declare class TenantProfileService extends BaseModelService<TenantProfile> {
4
+ constructor();
5
+ createProfile(tenantId: string, profileKey: string, metadata?: Record<string, unknown>, ...args: any[]): Promise<TenantProfile>;
6
+ listForTenant(tenantId: string, ...args: any[]): Promise<TenantProfile[]>;
7
+ deleteForTenant(tenantId: string, ...args: any[]): Promise<void>;
8
+ }
@@ -0,0 +1,8 @@
1
+ import { BaseModelService } from "../utils.d.mts";
2
+ import { TenantProfile } from "../models/tenant-profile.model.d.mts";
3
+ export declare class TenantProfileService extends BaseModelService<TenantProfile> {
4
+ constructor();
5
+ createProfile(tenantId: string, profileKey: string, metadata?: Record<string, unknown>, ...args: any[]): Promise<TenantProfile>;
6
+ listForTenant(tenantId: string, ...args: any[]): Promise<TenantProfile[]>;
7
+ deleteForTenant(tenantId: string, ...args: any[]): Promise<void>;
8
+ }
@@ -0,0 +1,12 @@
1
+ import { BaseModelService } from "../utils.d.cts";
2
+ import { IsolationTier, CreateTenantInput } from "../types.d.cts";
3
+ import { Tenant } from "../models/tenant.model.d.cts";
4
+ export declare class TenantService extends BaseModelService<Tenant> {
5
+ constructor();
6
+ createTenant(input: CreateTenantInput, ...args: any[]): Promise<Tenant>;
7
+ getBySlug(slug: string, ...args: any[]): Promise<Tenant>;
8
+ renameTenant(tenantId: string, name: string, ...args: any[]): Promise<Tenant>;
9
+ changeSlug(tenantId: string, slug: string, ...args: any[]): Promise<Tenant>;
10
+ setIsolationTier(tenantId: string, isolationTier: IsolationTier, ...args: any[]): Promise<Tenant>;
11
+ deleteTenantControlled(tenantId: string, ...args: any[]): Promise<void>;
12
+ }
@@ -0,0 +1,12 @@
1
+ import { BaseModelService } from "../utils.d.mts";
2
+ import { IsolationTier, CreateTenantInput } from "../types.d.mts";
3
+ import { Tenant } from "../models/tenant.model.d.mts";
4
+ export declare class TenantService extends BaseModelService<Tenant> {
5
+ constructor();
6
+ createTenant(input: CreateTenantInput, ...args: any[]): Promise<Tenant>;
7
+ getBySlug(slug: string, ...args: any[]): Promise<Tenant>;
8
+ renameTenant(tenantId: string, name: string, ...args: any[]): Promise<Tenant>;
9
+ changeSlug(tenantId: string, slug: string, ...args: any[]): Promise<Tenant>;
10
+ setIsolationTier(tenantId: string, isolationTier: IsolationTier, ...args: any[]): Promise<Tenant>;
11
+ deleteTenantControlled(tenantId: string, ...args: any[]): Promise<void>;
12
+ }
@@ -0,0 +1,11 @@
1
+ import { BaseModelService } from "../utils.d.cts";
2
+ import { CreateUserInput } from "../types.d.cts";
3
+ import { User } from "../models/user.model.d.cts";
4
+ export declare class UserService extends BaseModelService<User> {
5
+ constructor();
6
+ createUser(input: CreateUserInput, ...args: any[]): Promise<User>;
7
+ getByEmail(email: string, ...args: any[]): Promise<User>;
8
+ updateDisplayName(userId: string, displayName: string, ...args: any[]): Promise<User>;
9
+ updateEmail(userId: string, email: string | undefined, ...args: any[]): Promise<User>;
10
+ updatePhone(userId: string, phone: string | undefined, ...args: any[]): Promise<User>;
11
+ }
@@ -0,0 +1,11 @@
1
+ import { BaseModelService } from "../utils.d.mts";
2
+ import { CreateUserInput } from "../types.d.mts";
3
+ import { User } from "../models/user.model.d.mts";
4
+ export declare class UserService extends BaseModelService<User> {
5
+ constructor();
6
+ createUser(input: CreateUserInput, ...args: any[]): Promise<User>;
7
+ getByEmail(email: string, ...args: any[]): Promise<User>;
8
+ updateDisplayName(userId: string, displayName: string, ...args: any[]): Promise<User>;
9
+ updateEmail(userId: string, email: string | undefined, ...args: any[]): Promise<User>;
10
+ updatePhone(userId: string, phone: string | undefined, ...args: any[]): Promise<User>;
11
+ }
@@ -0,0 +1,230 @@
1
+ export declare enum IsolationTier {
2
+ Pooled = "pooled",
3
+ Bridge = "bridge",
4
+ Silo = "silo"
5
+ }
6
+ export declare enum MembershipStatus {
7
+ Invited = "invited",
8
+ Active = "active",
9
+ Suspended = "suspended",
10
+ Removed = "removed"
11
+ }
12
+ export declare enum PrincipalKind {
13
+ User = "user",
14
+ Group = "group",
15
+ ServiceAccount = "service_account",
16
+ Agent = "agent",
17
+ ApiKey = "api_key"
18
+ }
19
+ export declare enum ScopeKind {
20
+ Tenant = "tenant",
21
+ OrgUnit = "org_unit",
22
+ Resource = "resource"
23
+ }
24
+ export declare enum PermissionCategory {
25
+ Admin = "admin",
26
+ ContentRead = "content_read",
27
+ ContentWrite = "content_write",
28
+ Memory = "memory",
29
+ Graph = "graph",
30
+ Vector = "vector",
31
+ Export = "export",
32
+ Billing = "billing",
33
+ Audit = "audit",
34
+ Security = "security",
35
+ Data = "data",
36
+ Automation = "automation"
37
+ }
38
+ export declare enum ResourceVisibility {
39
+ Private = "private",
40
+ ResourceAcl = "resource_acl",
41
+ OrgUnit = "org_unit",
42
+ OrgSubtree = "org_subtree",
43
+ Tenant = "tenant"
44
+ }
45
+ export declare enum StorageKind {
46
+ Postgres = "postgres",
47
+ Arango = "arango",
48
+ Qdrant = "qdrant",
49
+ ObjectStorage = "object_storage"
50
+ }
51
+ export declare enum StorageBindingKind {
52
+ Shared = "shared",
53
+ Dedicated = "dedicated"
54
+ }
55
+ export declare const IsolationTierOptions: IsolationTier[];
56
+ export declare const MembershipStatusOptions: MembershipStatus[];
57
+ export declare const PrincipalKindOptions: PrincipalKind[];
58
+ export declare const ScopeKindOptions: ScopeKind[];
59
+ export declare const PermissionCategoryOptions: PermissionCategory[];
60
+ export declare const ResourceVisibilityOptions: ResourceVisibility[];
61
+ export declare const StorageKindOptions: StorageKind[];
62
+ export declare const StorageBindingKindOptions: StorageBindingKind[];
63
+ export type TxArgs = any[];
64
+ export interface CreateTenantInput {
65
+ slug: string;
66
+ name: string;
67
+ isolationTier?: IsolationTier;
68
+ profileKey?: string;
69
+ profileMetadata?: Record<string, unknown>;
70
+ }
71
+ export interface CreateUserInput {
72
+ email?: string;
73
+ phone?: string;
74
+ displayName: string;
75
+ }
76
+ export interface CreateOrgUnitInput {
77
+ tenantId: string;
78
+ parentOrgUnitId?: string;
79
+ name: string;
80
+ metadata?: Record<string, unknown>;
81
+ profileKey?: string;
82
+ profileMetadata?: Record<string, unknown>;
83
+ }
84
+ export interface CreateRoleInput {
85
+ tenantId?: string;
86
+ key: string;
87
+ name: string;
88
+ description?: string;
89
+ metadata?: Record<string, unknown>;
90
+ }
91
+ export interface CreatePermissionInput {
92
+ key: string;
93
+ category: PermissionCategory;
94
+ description?: string;
95
+ }
96
+ export interface AssignRoleInput {
97
+ tenantId: string;
98
+ principalId: string;
99
+ roleId: string;
100
+ scopeKind: ScopeKind;
101
+ scopeId: string;
102
+ inheritDown?: boolean;
103
+ startsAt?: Date;
104
+ expiresAt?: Date;
105
+ conditions?: Record<string, unknown>;
106
+ }
107
+ export interface RegisterResourceInput {
108
+ tenantId: string;
109
+ orgUnitId: string;
110
+ resourceType: string;
111
+ resourceId: string;
112
+ visibility: ResourceVisibility;
113
+ ownerPrincipalId?: string;
114
+ sensitivity?: string;
115
+ metadata?: Record<string, unknown>;
116
+ }
117
+ export interface GrantResourceInput {
118
+ tenantId: string;
119
+ resourceId: string;
120
+ principalId: string;
121
+ permissionKey: string;
122
+ startsAt?: Date;
123
+ expiresAt?: Date;
124
+ conditions?: Record<string, unknown>;
125
+ createdByPrincipalId?: string;
126
+ }
127
+ export interface CanAccessInput {
128
+ tenantId: string;
129
+ principalId: string;
130
+ permissionKey: string;
131
+ resourceProtectedId?: string;
132
+ scopeKind?: ScopeKind;
133
+ scopeId?: string;
134
+ at?: Date;
135
+ }
136
+ export interface AccessContext {
137
+ tenantId: string;
138
+ principalId: string;
139
+ permissionsByScope: Record<string, string[]>;
140
+ allowedOrgUnitIdsByPermission: Record<string, string[]>;
141
+ resourceGrants: Array<{
142
+ resourceId: string;
143
+ permissionKey: string;
144
+ }>;
145
+ }
146
+ export interface ArangoAuthContext {
147
+ tenantId: string;
148
+ principalId: string;
149
+ permissionKey: string;
150
+ allowedOrgUnitIds: string[];
151
+ allowedResourceIds: string[];
152
+ }
153
+ export interface QdrantAuthFilter {
154
+ must: Array<Record<string, unknown>>;
155
+ must_not?: Array<Record<string, unknown>>;
156
+ }
157
+ export interface CreateStorageBindingInput {
158
+ tenantId: string;
159
+ storageKind: StorageKind;
160
+ bindingKind: StorageBindingKind;
161
+ bindingKey: string;
162
+ region: string;
163
+ config?: Record<string, unknown>;
164
+ }
165
+ export interface BootstrapPermission {
166
+ key: string;
167
+ category: PermissionCategory;
168
+ description?: string;
169
+ }
170
+ export interface BootstrapRole {
171
+ key: string;
172
+ name: string;
173
+ description?: string;
174
+ permissionKeys: string[];
175
+ }
176
+ export interface BootstrapOrgUnit {
177
+ name: string;
178
+ profileKey?: string;
179
+ metadata?: Record<string, unknown>;
180
+ children?: BootstrapOrgUnit[];
181
+ }
182
+ export interface BootstrapTemplate {
183
+ tenant: CreateTenantInput;
184
+ rootOrgUnit: BootstrapOrgUnit;
185
+ permissions: BootstrapPermission[];
186
+ roles: BootstrapRole[];
187
+ ownerUser: CreateUserInput;
188
+ ownerRoleKey: string;
189
+ }
190
+ export interface ResourceSnapshot {
191
+ id: string;
192
+ tenantId: string;
193
+ orgUnitId: string;
194
+ resourceType: string;
195
+ resourceId: string;
196
+ visibility: ResourceVisibility;
197
+ ownerPrincipalId?: string;
198
+ sensitivity?: string;
199
+ metadata?: Record<string, unknown>;
200
+ }
201
+ export interface GrantSnapshot {
202
+ id: string;
203
+ tenantId: string;
204
+ resourceId: string;
205
+ principalId: string;
206
+ permissionKey: string;
207
+ startsAt?: Date;
208
+ expiresAt?: Date;
209
+ conditions?: Record<string, unknown>;
210
+ createdByPrincipalId?: string;
211
+ }
212
+ export interface EffectivePermissionSnapshot {
213
+ id: string;
214
+ tenantId: string;
215
+ principalId: string;
216
+ permissionKey: string;
217
+ scopeKind: ScopeKind;
218
+ scopeId: string;
219
+ sourceKind: string;
220
+ sourceId: string;
221
+ startsAt?: Date;
222
+ expiresAt?: Date;
223
+ }
224
+ export interface AuthzDataSources {
225
+ loadResource?: (tenantId: string, protectedResourceId: string) => Promise<ResourceSnapshot | undefined>;
226
+ listResourceGrants?: (tenantId: string, protectedResourceId: string) => Promise<GrantSnapshot[]>;
227
+ listPrincipalGrants?: (tenantId: string, principalId: string) => Promise<GrantSnapshot[]>;
228
+ listEffectivePermissions?: (tenantId: string, principalId: string) => Promise<EffectivePermissionSnapshot[]>;
229
+ listEffectivePermissionsForScope?: (tenantId: string, scopeKind: ScopeKind, scopeId: string) => Promise<EffectivePermissionSnapshot[]>;
230
+ }
@@ -0,0 +1,230 @@
1
+ export declare enum IsolationTier {
2
+ Pooled = "pooled",
3
+ Bridge = "bridge",
4
+ Silo = "silo"
5
+ }
6
+ export declare enum MembershipStatus {
7
+ Invited = "invited",
8
+ Active = "active",
9
+ Suspended = "suspended",
10
+ Removed = "removed"
11
+ }
12
+ export declare enum PrincipalKind {
13
+ User = "user",
14
+ Group = "group",
15
+ ServiceAccount = "service_account",
16
+ Agent = "agent",
17
+ ApiKey = "api_key"
18
+ }
19
+ export declare enum ScopeKind {
20
+ Tenant = "tenant",
21
+ OrgUnit = "org_unit",
22
+ Resource = "resource"
23
+ }
24
+ export declare enum PermissionCategory {
25
+ Admin = "admin",
26
+ ContentRead = "content_read",
27
+ ContentWrite = "content_write",
28
+ Memory = "memory",
29
+ Graph = "graph",
30
+ Vector = "vector",
31
+ Export = "export",
32
+ Billing = "billing",
33
+ Audit = "audit",
34
+ Security = "security",
35
+ Data = "data",
36
+ Automation = "automation"
37
+ }
38
+ export declare enum ResourceVisibility {
39
+ Private = "private",
40
+ ResourceAcl = "resource_acl",
41
+ OrgUnit = "org_unit",
42
+ OrgSubtree = "org_subtree",
43
+ Tenant = "tenant"
44
+ }
45
+ export declare enum StorageKind {
46
+ Postgres = "postgres",
47
+ Arango = "arango",
48
+ Qdrant = "qdrant",
49
+ ObjectStorage = "object_storage"
50
+ }
51
+ export declare enum StorageBindingKind {
52
+ Shared = "shared",
53
+ Dedicated = "dedicated"
54
+ }
55
+ export declare const IsolationTierOptions: IsolationTier[];
56
+ export declare const MembershipStatusOptions: MembershipStatus[];
57
+ export declare const PrincipalKindOptions: PrincipalKind[];
58
+ export declare const ScopeKindOptions: ScopeKind[];
59
+ export declare const PermissionCategoryOptions: PermissionCategory[];
60
+ export declare const ResourceVisibilityOptions: ResourceVisibility[];
61
+ export declare const StorageKindOptions: StorageKind[];
62
+ export declare const StorageBindingKindOptions: StorageBindingKind[];
63
+ export type TxArgs = any[];
64
+ export interface CreateTenantInput {
65
+ slug: string;
66
+ name: string;
67
+ isolationTier?: IsolationTier;
68
+ profileKey?: string;
69
+ profileMetadata?: Record<string, unknown>;
70
+ }
71
+ export interface CreateUserInput {
72
+ email?: string;
73
+ phone?: string;
74
+ displayName: string;
75
+ }
76
+ export interface CreateOrgUnitInput {
77
+ tenantId: string;
78
+ parentOrgUnitId?: string;
79
+ name: string;
80
+ metadata?: Record<string, unknown>;
81
+ profileKey?: string;
82
+ profileMetadata?: Record<string, unknown>;
83
+ }
84
+ export interface CreateRoleInput {
85
+ tenantId?: string;
86
+ key: string;
87
+ name: string;
88
+ description?: string;
89
+ metadata?: Record<string, unknown>;
90
+ }
91
+ export interface CreatePermissionInput {
92
+ key: string;
93
+ category: PermissionCategory;
94
+ description?: string;
95
+ }
96
+ export interface AssignRoleInput {
97
+ tenantId: string;
98
+ principalId: string;
99
+ roleId: string;
100
+ scopeKind: ScopeKind;
101
+ scopeId: string;
102
+ inheritDown?: boolean;
103
+ startsAt?: Date;
104
+ expiresAt?: Date;
105
+ conditions?: Record<string, unknown>;
106
+ }
107
+ export interface RegisterResourceInput {
108
+ tenantId: string;
109
+ orgUnitId: string;
110
+ resourceType: string;
111
+ resourceId: string;
112
+ visibility: ResourceVisibility;
113
+ ownerPrincipalId?: string;
114
+ sensitivity?: string;
115
+ metadata?: Record<string, unknown>;
116
+ }
117
+ export interface GrantResourceInput {
118
+ tenantId: string;
119
+ resourceId: string;
120
+ principalId: string;
121
+ permissionKey: string;
122
+ startsAt?: Date;
123
+ expiresAt?: Date;
124
+ conditions?: Record<string, unknown>;
125
+ createdByPrincipalId?: string;
126
+ }
127
+ export interface CanAccessInput {
128
+ tenantId: string;
129
+ principalId: string;
130
+ permissionKey: string;
131
+ resourceProtectedId?: string;
132
+ scopeKind?: ScopeKind;
133
+ scopeId?: string;
134
+ at?: Date;
135
+ }
136
+ export interface AccessContext {
137
+ tenantId: string;
138
+ principalId: string;
139
+ permissionsByScope: Record<string, string[]>;
140
+ allowedOrgUnitIdsByPermission: Record<string, string[]>;
141
+ resourceGrants: Array<{
142
+ resourceId: string;
143
+ permissionKey: string;
144
+ }>;
145
+ }
146
+ export interface ArangoAuthContext {
147
+ tenantId: string;
148
+ principalId: string;
149
+ permissionKey: string;
150
+ allowedOrgUnitIds: string[];
151
+ allowedResourceIds: string[];
152
+ }
153
+ export interface QdrantAuthFilter {
154
+ must: Array<Record<string, unknown>>;
155
+ must_not?: Array<Record<string, unknown>>;
156
+ }
157
+ export interface CreateStorageBindingInput {
158
+ tenantId: string;
159
+ storageKind: StorageKind;
160
+ bindingKind: StorageBindingKind;
161
+ bindingKey: string;
162
+ region: string;
163
+ config?: Record<string, unknown>;
164
+ }
165
+ export interface BootstrapPermission {
166
+ key: string;
167
+ category: PermissionCategory;
168
+ description?: string;
169
+ }
170
+ export interface BootstrapRole {
171
+ key: string;
172
+ name: string;
173
+ description?: string;
174
+ permissionKeys: string[];
175
+ }
176
+ export interface BootstrapOrgUnit {
177
+ name: string;
178
+ profileKey?: string;
179
+ metadata?: Record<string, unknown>;
180
+ children?: BootstrapOrgUnit[];
181
+ }
182
+ export interface BootstrapTemplate {
183
+ tenant: CreateTenantInput;
184
+ rootOrgUnit: BootstrapOrgUnit;
185
+ permissions: BootstrapPermission[];
186
+ roles: BootstrapRole[];
187
+ ownerUser: CreateUserInput;
188
+ ownerRoleKey: string;
189
+ }
190
+ export interface ResourceSnapshot {
191
+ id: string;
192
+ tenantId: string;
193
+ orgUnitId: string;
194
+ resourceType: string;
195
+ resourceId: string;
196
+ visibility: ResourceVisibility;
197
+ ownerPrincipalId?: string;
198
+ sensitivity?: string;
199
+ metadata?: Record<string, unknown>;
200
+ }
201
+ export interface GrantSnapshot {
202
+ id: string;
203
+ tenantId: string;
204
+ resourceId: string;
205
+ principalId: string;
206
+ permissionKey: string;
207
+ startsAt?: Date;
208
+ expiresAt?: Date;
209
+ conditions?: Record<string, unknown>;
210
+ createdByPrincipalId?: string;
211
+ }
212
+ export interface EffectivePermissionSnapshot {
213
+ id: string;
214
+ tenantId: string;
215
+ principalId: string;
216
+ permissionKey: string;
217
+ scopeKind: ScopeKind;
218
+ scopeId: string;
219
+ sourceKind: string;
220
+ sourceId: string;
221
+ startsAt?: Date;
222
+ expiresAt?: Date;
223
+ }
224
+ export interface AuthzDataSources {
225
+ loadResource?: (tenantId: string, protectedResourceId: string) => Promise<ResourceSnapshot | undefined>;
226
+ listResourceGrants?: (tenantId: string, protectedResourceId: string) => Promise<GrantSnapshot[]>;
227
+ listPrincipalGrants?: (tenantId: string, principalId: string) => Promise<GrantSnapshot[]>;
228
+ listEffectivePermissions?: (tenantId: string, principalId: string) => Promise<EffectivePermissionSnapshot[]>;
229
+ listEffectivePermissionsForScope?: (tenantId: string, scopeKind: ScopeKind, scopeId: string) => Promise<EffectivePermissionSnapshot[]>;
230
+ }
@@ -0,0 +1,68 @@
1
+ import { Cascade, ModelService, Repository } from "@decaf-ts/core";
2
+ import { Model } from "@decaf-ts/decorator-validation";
3
+ import { AccessContext, ArangoAuthContext, EffectivePermissionSnapshot, GrantSnapshot, QdrantAuthFilter } from "./types.d.cts";
4
+ export declare const REL_RESTRICT: {
5
+ readonly update: Cascade.NONE;
6
+ readonly delete: Cascade.NONE;
7
+ readonly nullable: false;
8
+ };
9
+ export declare const REL_NULLIFY: {
10
+ readonly update: Cascade.NONE;
11
+ readonly delete: Cascade.NONE;
12
+ readonly nullable: true;
13
+ };
14
+ export declare const REL_CASCADE_DEPENDENT: {
15
+ readonly update: Cascade.CASCADE;
16
+ readonly delete: Cascade.CASCADE;
17
+ readonly nullable: false;
18
+ };
19
+ export declare const REL_CASCADE_INSERT_UPDATE: {
20
+ readonly update: Cascade.CASCADE;
21
+ readonly delete: Cascade.NONE;
22
+ readonly nullable: false;
23
+ };
24
+ export declare function buildArangoContext(options: {
25
+ tenantId: string;
26
+ principalId: string;
27
+ permissionKey: string;
28
+ allowedOrgUnitIds: string[];
29
+ allowedResourceIds: string[];
30
+ }): ArangoAuthContext;
31
+ export declare function buildQdrantFilter(options: {
32
+ tenantId: string;
33
+ principalId: string;
34
+ permissionKey: string;
35
+ allowedOrgUnitIds: string[];
36
+ allowedResourceIds: string[];
37
+ }): QdrantAuthFilter;
38
+ export declare function nowIso(): Date;
39
+ export declare function asArray<T>(value: T[] | undefined): T[];
40
+ export declare function sameTenant(rowTenant: unknown, tenantId: string): boolean;
41
+ export declare function relationMatch(value: unknown, target: string | undefined): boolean;
42
+ export declare function lowerSlug(value: string): string;
43
+ export declare function isTimeValid(at: Date | undefined, startsAt?: Date, expiresAt?: Date): boolean;
44
+ export declare function buildAccessContext(options: {
45
+ tenantId: string;
46
+ principalId: string;
47
+ permissions: EffectivePermissionSnapshot[];
48
+ grants: GrantSnapshot[];
49
+ }): AccessContext;
50
+ export declare abstract class BaseModelService<M extends Model<boolean> & {
51
+ id: string;
52
+ }> extends ModelService<M, Repository<M, any>> {
53
+ protected constructor(clazz: new () => M);
54
+ protected newModel<T>(clazz: new () => T, data: Partial<T>): T;
55
+ create(data: Partial<M>, ...args: any[]): Promise<M>;
56
+ createOne(data: Partial<M>, ...args: any[]): Promise<M>;
57
+ getById(id: string, ...args: any[]): Promise<M>;
58
+ updateOne(id: string, patch: Partial<M>, ...args: any[]): Promise<M>;
59
+ deleteById(id: string, ...args: any[]): Promise<void>;
60
+ findOneBy<K extends keyof M & string>(key: K, value: M[K], ...args: any[]): Promise<M>;
61
+ findManyBy<K extends keyof M & string>(key: K, value: M[K], ...args: any[]): Promise<M[]>;
62
+ listAll(...args: any[]): Promise<M[]>;
63
+ }
64
+ export declare function id(): string;
65
+ export declare function relationId(value: string | {
66
+ id: string;
67
+ }): string;
68
+ export { AuthorizationError, transactional } from "@decaf-ts/core";
@@ -0,0 +1,68 @@
1
+ import { Cascade, ModelService, Repository } from "@decaf-ts/core";
2
+ import { Model } from "@decaf-ts/decorator-validation";
3
+ import { AccessContext, ArangoAuthContext, EffectivePermissionSnapshot, GrantSnapshot, QdrantAuthFilter } from "./types.d.mts";
4
+ export declare const REL_RESTRICT: {
5
+ readonly update: Cascade.NONE;
6
+ readonly delete: Cascade.NONE;
7
+ readonly nullable: false;
8
+ };
9
+ export declare const REL_NULLIFY: {
10
+ readonly update: Cascade.NONE;
11
+ readonly delete: Cascade.NONE;
12
+ readonly nullable: true;
13
+ };
14
+ export declare const REL_CASCADE_DEPENDENT: {
15
+ readonly update: Cascade.CASCADE;
16
+ readonly delete: Cascade.CASCADE;
17
+ readonly nullable: false;
18
+ };
19
+ export declare const REL_CASCADE_INSERT_UPDATE: {
20
+ readonly update: Cascade.CASCADE;
21
+ readonly delete: Cascade.NONE;
22
+ readonly nullable: false;
23
+ };
24
+ export declare function buildArangoContext(options: {
25
+ tenantId: string;
26
+ principalId: string;
27
+ permissionKey: string;
28
+ allowedOrgUnitIds: string[];
29
+ allowedResourceIds: string[];
30
+ }): ArangoAuthContext;
31
+ export declare function buildQdrantFilter(options: {
32
+ tenantId: string;
33
+ principalId: string;
34
+ permissionKey: string;
35
+ allowedOrgUnitIds: string[];
36
+ allowedResourceIds: string[];
37
+ }): QdrantAuthFilter;
38
+ export declare function nowIso(): Date;
39
+ export declare function asArray<T>(value: T[] | undefined): T[];
40
+ export declare function sameTenant(rowTenant: unknown, tenantId: string): boolean;
41
+ export declare function relationMatch(value: unknown, target: string | undefined): boolean;
42
+ export declare function lowerSlug(value: string): string;
43
+ export declare function isTimeValid(at: Date | undefined, startsAt?: Date, expiresAt?: Date): boolean;
44
+ export declare function buildAccessContext(options: {
45
+ tenantId: string;
46
+ principalId: string;
47
+ permissions: EffectivePermissionSnapshot[];
48
+ grants: GrantSnapshot[];
49
+ }): AccessContext;
50
+ export declare abstract class BaseModelService<M extends Model<boolean> & {
51
+ id: string;
52
+ }> extends ModelService<M, Repository<M, any>> {
53
+ protected constructor(clazz: new () => M);
54
+ protected newModel<T>(clazz: new () => T, data: Partial<T>): T;
55
+ create(data: Partial<M>, ...args: any[]): Promise<M>;
56
+ createOne(data: Partial<M>, ...args: any[]): Promise<M>;
57
+ getById(id: string, ...args: any[]): Promise<M>;
58
+ updateOne(id: string, patch: Partial<M>, ...args: any[]): Promise<M>;
59
+ deleteById(id: string, ...args: any[]): Promise<void>;
60
+ findOneBy<K extends keyof M & string>(key: K, value: M[K], ...args: any[]): Promise<M>;
61
+ findManyBy<K extends keyof M & string>(key: K, value: M[K], ...args: any[]): Promise<M[]>;
62
+ listAll(...args: any[]): Promise<M[]>;
63
+ }
64
+ export declare function id(): string;
65
+ export declare function relationId(value: string | {
66
+ id: string;
67
+ }): string;
68
+ export { AuthorizationError, transactional } from "@decaf-ts/core";
@@ -33,6 +33,7 @@ export declare class AuthService {
33
33
  private readonly excludedClients;
34
34
  private jwks;
35
35
  constructor(options?: AuthServiceOptions);
36
+ isTokenVerificationEnabled(): boolean;
36
37
  getTokenPayload(jwt: string): KeycloakAccessTokenPayload | null;
37
38
  getRoles(jwt: string): string[];
38
39
  getUser(jwt: string): KeycloakUser | undefined;