@carlonicora/nestjs-neo4jsonapi 1.62.7 → 1.64.0

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 (271) hide show
  1. package/dist/agents/agents.modules.d.ts.map +1 -1
  2. package/dist/agents/agents.modules.js +3 -0
  3. package/dist/agents/agents.modules.js.map +1 -1
  4. package/dist/agents/chatbot/chatbot.module.d.ts +3 -0
  5. package/dist/agents/chatbot/chatbot.module.d.ts.map +1 -0
  6. package/dist/agents/chatbot/chatbot.module.js +65 -0
  7. package/dist/agents/chatbot/chatbot.module.js.map +1 -0
  8. package/dist/agents/chatbot/interfaces/chatbot.response.interface.d.ts +25 -0
  9. package/dist/agents/chatbot/interfaces/chatbot.response.interface.d.ts.map +1 -0
  10. package/dist/agents/chatbot/interfaces/chatbot.response.interface.js +3 -0
  11. package/dist/agents/chatbot/interfaces/chatbot.response.interface.js.map +1 -0
  12. package/dist/agents/chatbot/interfaces/graph.catalog.interface.d.ts +50 -0
  13. package/dist/agents/chatbot/interfaces/graph.catalog.interface.d.ts.map +1 -0
  14. package/dist/agents/chatbot/interfaces/graph.catalog.interface.js +3 -0
  15. package/dist/agents/chatbot/interfaces/graph.catalog.interface.js.map +1 -0
  16. package/dist/agents/chatbot/prompts/chatbot.system.prompt.d.ts +3 -0
  17. package/dist/agents/chatbot/prompts/chatbot.system.prompt.d.ts.map +1 -0
  18. package/dist/agents/chatbot/prompts/chatbot.system.prompt.js +60 -0
  19. package/dist/agents/chatbot/prompts/chatbot.system.prompt.js.map +1 -0
  20. package/dist/agents/chatbot/repositories/user-modules.repository.d.ts +28 -0
  21. package/dist/agents/chatbot/repositories/user-modules.repository.d.ts.map +1 -0
  22. package/dist/agents/chatbot/repositories/user-modules.repository.js +76 -0
  23. package/dist/agents/chatbot/repositories/user-modules.repository.js.map +1 -0
  24. package/dist/agents/chatbot/services/chatbot.index.manager.d.ts +17 -0
  25. package/dist/agents/chatbot/services/chatbot.index.manager.d.ts.map +1 -0
  26. package/dist/agents/chatbot/services/chatbot.index.manager.js +84 -0
  27. package/dist/agents/chatbot/services/chatbot.index.manager.js.map +1 -0
  28. package/dist/agents/chatbot/services/chatbot.search.service.d.ts +46 -0
  29. package/dist/agents/chatbot/services/chatbot.search.service.d.ts.map +1 -0
  30. package/dist/agents/chatbot/services/chatbot.search.service.js +148 -0
  31. package/dist/agents/chatbot/services/chatbot.search.service.js.map +1 -0
  32. package/dist/agents/chatbot/services/chatbot.service.d.ts +36 -0
  33. package/dist/agents/chatbot/services/chatbot.service.d.ts.map +1 -0
  34. package/dist/agents/chatbot/services/chatbot.service.js +220 -0
  35. package/dist/agents/chatbot/services/chatbot.service.js.map +1 -0
  36. package/dist/agents/chatbot/services/descriptor.source.d.ts +18 -0
  37. package/dist/agents/chatbot/services/descriptor.source.d.ts.map +1 -0
  38. package/dist/agents/chatbot/services/descriptor.source.js +41 -0
  39. package/dist/agents/chatbot/services/descriptor.source.js.map +1 -0
  40. package/dist/agents/chatbot/services/field-formatting.d.ts +18 -0
  41. package/dist/agents/chatbot/services/field-formatting.d.ts.map +1 -0
  42. package/dist/agents/chatbot/services/field-formatting.js +43 -0
  43. package/dist/agents/chatbot/services/field-formatting.js.map +1 -0
  44. package/dist/agents/chatbot/services/graph.catalog.service.d.ts +60 -0
  45. package/dist/agents/chatbot/services/graph.catalog.service.d.ts.map +1 -0
  46. package/dist/agents/chatbot/services/graph.catalog.service.js +217 -0
  47. package/dist/agents/chatbot/services/graph.catalog.service.js.map +1 -0
  48. package/dist/agents/chatbot/services/humanize-tool.d.ts +9 -0
  49. package/dist/agents/chatbot/services/humanize-tool.d.ts.map +1 -0
  50. package/dist/agents/chatbot/services/humanize-tool.js +35 -0
  51. package/dist/agents/chatbot/services/humanize-tool.js.map +1 -0
  52. package/dist/agents/chatbot/tools/describe-entity.tool.d.ts +14 -0
  53. package/dist/agents/chatbot/tools/describe-entity.tool.d.ts.map +1 -0
  54. package/dist/agents/chatbot/tools/describe-entity.tool.js +63 -0
  55. package/dist/agents/chatbot/tools/describe-entity.tool.js.map +1 -0
  56. package/dist/agents/chatbot/tools/read-entity.tool.d.ts +16 -0
  57. package/dist/agents/chatbot/tools/read-entity.tool.d.ts.map +1 -0
  58. package/dist/agents/chatbot/tools/read-entity.tool.js +102 -0
  59. package/dist/agents/chatbot/tools/read-entity.tool.js.map +1 -0
  60. package/dist/agents/chatbot/tools/resolve-entity.tool.d.ts +16 -0
  61. package/dist/agents/chatbot/tools/resolve-entity.tool.d.ts.map +1 -0
  62. package/dist/agents/chatbot/tools/resolve-entity.tool.js +48 -0
  63. package/dist/agents/chatbot/tools/resolve-entity.tool.js.map +1 -0
  64. package/dist/agents/chatbot/tools/search-entities.tool.d.ts +20 -0
  65. package/dist/agents/chatbot/tools/search-entities.tool.d.ts.map +1 -0
  66. package/dist/agents/chatbot/tools/search-entities.tool.js +122 -0
  67. package/dist/agents/chatbot/tools/search-entities.tool.js.map +1 -0
  68. package/dist/agents/chatbot/tools/tool.factory.d.ts +29 -0
  69. package/dist/agents/chatbot/tools/tool.factory.d.ts.map +1 -0
  70. package/dist/agents/chatbot/tools/tool.factory.js +72 -0
  71. package/dist/agents/chatbot/tools/tool.factory.js.map +1 -0
  72. package/dist/agents/chatbot/tools/traverse.tool.d.ts +58 -0
  73. package/dist/agents/chatbot/tools/traverse.tool.d.ts.map +1 -0
  74. package/dist/agents/chatbot/tools/traverse.tool.js +212 -0
  75. package/dist/agents/chatbot/tools/traverse.tool.js.map +1 -0
  76. package/dist/agents/index.d.ts +9 -0
  77. package/dist/agents/index.d.ts.map +1 -1
  78. package/dist/agents/index.js +17 -1
  79. package/dist/agents/index.js.map +1 -1
  80. package/dist/bootstrap/bootstrap.options.d.ts +7 -0
  81. package/dist/bootstrap/bootstrap.options.d.ts.map +1 -1
  82. package/dist/common/helpers/define-entity.d.ts.map +1 -1
  83. package/dist/common/helpers/define-entity.js +5 -1
  84. package/dist/common/helpers/define-entity.js.map +1 -1
  85. package/dist/common/interfaces/datamodel.interface.d.ts +10 -0
  86. package/dist/common/interfaces/datamodel.interface.d.ts.map +1 -1
  87. package/dist/common/interfaces/datamodel.interface.js.map +1 -1
  88. package/dist/common/interfaces/entity.descriptor.interface.d.ts +1 -1
  89. package/dist/common/interfaces/entity.descriptor.interface.d.ts.map +1 -1
  90. package/dist/common/interfaces/entity.descriptor.interface.js.map +1 -1
  91. package/dist/common/interfaces/entity.schema.interface.d.ts +48 -0
  92. package/dist/common/interfaces/entity.schema.interface.d.ts.map +1 -1
  93. package/dist/common/registries/entity.service.registry.d.ts +13 -0
  94. package/dist/common/registries/entity.service.registry.d.ts.map +1 -0
  95. package/dist/common/registries/entity.service.registry.js +52 -0
  96. package/dist/common/registries/entity.service.registry.js.map +1 -0
  97. package/dist/common/registries/index.d.ts +1 -0
  98. package/dist/common/registries/index.d.ts.map +1 -1
  99. package/dist/common/registries/index.js +1 -0
  100. package/dist/common/registries/index.js.map +1 -1
  101. package/dist/core/core.module.d.ts.map +1 -1
  102. package/dist/core/core.module.js +6 -2
  103. package/dist/core/core.module.js.map +1 -1
  104. package/dist/core/llm/services/llm.service.d.ts.map +1 -1
  105. package/dist/core/llm/services/llm.service.js +8 -0
  106. package/dist/core/llm/services/llm.service.js.map +1 -1
  107. package/dist/core/neo4j/abstracts/abstract.repository.d.ts +48 -1
  108. package/dist/core/neo4j/abstracts/abstract.repository.d.ts.map +1 -1
  109. package/dist/core/neo4j/abstracts/abstract.repository.js +147 -9
  110. package/dist/core/neo4j/abstracts/abstract.repository.js.map +1 -1
  111. package/dist/core/neo4j/abstracts/abstract.service.d.ts +47 -0
  112. package/dist/core/neo4j/abstracts/abstract.service.d.ts.map +1 -1
  113. package/dist/core/neo4j/abstracts/abstract.service.js +57 -0
  114. package/dist/core/neo4j/abstracts/abstract.service.js.map +1 -1
  115. package/dist/core/neo4j/factories/entity.factory.d.ts.map +1 -1
  116. package/dist/core/neo4j/factories/entity.factory.js +27 -6
  117. package/dist/core/neo4j/factories/entity.factory.js.map +1 -1
  118. package/dist/core/neo4j/helpers/build-filter-clauses.d.ts +11 -0
  119. package/dist/core/neo4j/helpers/build-filter-clauses.d.ts.map +1 -0
  120. package/dist/core/neo4j/helpers/build-filter-clauses.js +69 -0
  121. package/dist/core/neo4j/helpers/build-filter-clauses.js.map +1 -0
  122. package/dist/core/neo4j/helpers/build-order-by.d.ts +6 -0
  123. package/dist/core/neo4j/helpers/build-order-by.d.ts.map +1 -0
  124. package/dist/core/neo4j/helpers/build-order-by.js +20 -0
  125. package/dist/core/neo4j/helpers/build-order-by.js.map +1 -0
  126. package/dist/core/neo4j/index.d.ts +1 -0
  127. package/dist/core/neo4j/index.d.ts.map +1 -1
  128. package/dist/core/neo4j/index.js +2 -0
  129. package/dist/core/neo4j/index.js.map +1 -1
  130. package/dist/core/neo4j/types/filter.criterion.d.ts +20 -0
  131. package/dist/core/neo4j/types/filter.criterion.d.ts.map +1 -0
  132. package/dist/core/neo4j/types/filter.criterion.js +3 -0
  133. package/dist/core/neo4j/types/filter.criterion.js.map +1 -0
  134. package/dist/core/neo4j/types/index.d.ts +2 -0
  135. package/dist/core/neo4j/types/index.d.ts.map +1 -0
  136. package/dist/core/neo4j/types/index.js +3 -0
  137. package/dist/core/neo4j/types/index.js.map +1 -0
  138. package/dist/foundations/assistant/assistant.module.d.ts +5 -0
  139. package/dist/foundations/assistant/assistant.module.d.ts.map +1 -0
  140. package/dist/foundations/assistant/assistant.module.js +32 -0
  141. package/dist/foundations/assistant/assistant.module.js.map +1 -0
  142. package/dist/foundations/assistant/controllers/assistant.controller.d.ts +67 -0
  143. package/dist/foundations/assistant/controllers/assistant.controller.d.ts.map +1 -0
  144. package/dist/foundations/assistant/controllers/assistant.controller.js +226 -0
  145. package/dist/foundations/assistant/controllers/assistant.controller.js.map +1 -0
  146. package/dist/foundations/assistant/dtos/assistant-append.dto.d.ts +11 -0
  147. package/dist/foundations/assistant/dtos/assistant-append.dto.d.ts.map +1 -0
  148. package/dist/foundations/assistant/dtos/assistant-append.dto.js +44 -0
  149. package/dist/foundations/assistant/dtos/assistant-append.dto.js.map +1 -0
  150. package/dist/foundations/assistant/dtos/assistant-patch.dto.d.ts +12 -0
  151. package/dist/foundations/assistant/dtos/assistant-patch.dto.d.ts.map +1 -0
  152. package/dist/foundations/assistant/dtos/assistant-patch.dto.js +52 -0
  153. package/dist/foundations/assistant/dtos/assistant-patch.dto.js.map +1 -0
  154. package/dist/foundations/assistant/dtos/assistant-post.dto.d.ts +12 -0
  155. package/dist/foundations/assistant/dtos/assistant-post.dto.d.ts.map +1 -0
  156. package/dist/foundations/assistant/dtos/assistant-post.dto.js +51 -0
  157. package/dist/foundations/assistant/dtos/assistant-post.dto.js.map +1 -0
  158. package/dist/foundations/assistant/entities/assistant.d.ts +48 -0
  159. package/dist/foundations/assistant/entities/assistant.d.ts.map +1 -0
  160. package/dist/foundations/assistant/entities/assistant.js +44 -0
  161. package/dist/foundations/assistant/entities/assistant.js.map +1 -0
  162. package/dist/foundations/assistant/entities/assistant.meta.d.ts +3 -0
  163. package/dist/foundations/assistant/entities/assistant.meta.d.ts.map +1 -0
  164. package/dist/foundations/assistant/entities/assistant.meta.js +10 -0
  165. package/dist/foundations/assistant/entities/assistant.meta.js.map +1 -0
  166. package/dist/foundations/assistant/index.d.ts +7 -0
  167. package/dist/foundations/assistant/index.d.ts.map +1 -0
  168. package/dist/foundations/assistant/index.js +12 -0
  169. package/dist/foundations/assistant/index.js.map +1 -0
  170. package/dist/foundations/assistant/repositories/assistant.repository.d.ts +50 -0
  171. package/dist/foundations/assistant/repositories/assistant.repository.d.ts.map +1 -0
  172. package/dist/foundations/assistant/repositories/assistant.repository.js +65 -0
  173. package/dist/foundations/assistant/repositories/assistant.repository.js.map +1 -0
  174. package/dist/foundations/assistant/services/assistant.service.d.ts +113 -0
  175. package/dist/foundations/assistant/services/assistant.service.d.ts.map +1 -0
  176. package/dist/foundations/assistant/services/assistant.service.js +395 -0
  177. package/dist/foundations/assistant/services/assistant.service.js.map +1 -0
  178. package/dist/foundations/assistant-message/assistant-message.module.d.ts +6 -0
  179. package/dist/foundations/assistant-message/assistant-message.module.d.ts.map +1 -0
  180. package/dist/foundations/assistant-message/assistant-message.module.js +36 -0
  181. package/dist/foundations/assistant-message/assistant-message.module.js.map +1 -0
  182. package/dist/foundations/assistant-message/controllers/assistant-message.controller.d.ts +16 -0
  183. package/dist/foundations/assistant-message/controllers/assistant-message.controller.d.ts.map +1 -0
  184. package/dist/foundations/assistant-message/controllers/assistant-message.controller.js +84 -0
  185. package/dist/foundations/assistant-message/controllers/assistant-message.controller.js.map +1 -0
  186. package/dist/foundations/assistant-message/dtos/assistant-message.dto.d.ts +11 -0
  187. package/dist/foundations/assistant-message/dtos/assistant-message.dto.d.ts.map +1 -0
  188. package/dist/foundations/assistant-message/dtos/assistant-message.dto.js +45 -0
  189. package/dist/foundations/assistant-message/dtos/assistant-message.dto.js.map +1 -0
  190. package/dist/foundations/assistant-message/entities/assistant-message.d.ts +49 -0
  191. package/dist/foundations/assistant-message/entities/assistant-message.d.ts.map +1 -0
  192. package/dist/foundations/assistant-message/entities/assistant-message.js +52 -0
  193. package/dist/foundations/assistant-message/entities/assistant-message.js.map +1 -0
  194. package/dist/foundations/assistant-message/entities/assistant-message.meta.d.ts +3 -0
  195. package/dist/foundations/assistant-message/entities/assistant-message.meta.d.ts.map +1 -0
  196. package/dist/foundations/assistant-message/entities/assistant-message.meta.js +10 -0
  197. package/dist/foundations/assistant-message/entities/assistant-message.meta.js.map +1 -0
  198. package/dist/foundations/assistant-message/index.d.ts +8 -0
  199. package/dist/foundations/assistant-message/index.d.ts.map +1 -0
  200. package/dist/foundations/assistant-message/index.js +24 -0
  201. package/dist/foundations/assistant-message/index.js.map +1 -0
  202. package/dist/foundations/assistant-message/repositories/assistant-message.repository.d.ts +70 -0
  203. package/dist/foundations/assistant-message/repositories/assistant-message.repository.d.ts.map +1 -0
  204. package/dist/foundations/assistant-message/repositories/assistant-message.repository.js +119 -0
  205. package/dist/foundations/assistant-message/repositories/assistant-message.repository.js.map +1 -0
  206. package/dist/foundations/assistant-message/services/assistant-message.service.d.ts +31 -0
  207. package/dist/foundations/assistant-message/services/assistant-message.service.d.ts.map +1 -0
  208. package/dist/foundations/assistant-message/services/assistant-message.service.js +32 -0
  209. package/dist/foundations/assistant-message/services/assistant-message.service.js.map +1 -0
  210. package/dist/foundations/foundations.modules.d.ts.map +1 -1
  211. package/dist/foundations/foundations.modules.js +2 -0
  212. package/dist/foundations/foundations.modules.js.map +1 -1
  213. package/dist/foundations/index.d.ts +2 -0
  214. package/dist/foundations/index.d.ts.map +1 -1
  215. package/dist/foundations/index.js +2 -0
  216. package/dist/foundations/index.js.map +1 -1
  217. package/dist/foundations/rbac/controllers/rbac-dev.controller.d.ts +50 -0
  218. package/dist/foundations/rbac/controllers/rbac-dev.controller.d.ts.map +1 -0
  219. package/dist/foundations/rbac/controllers/rbac-dev.controller.js +172 -0
  220. package/dist/foundations/rbac/controllers/rbac-dev.controller.js.map +1 -0
  221. package/dist/foundations/rbac/dsl/define-rbac.d.ts +15 -0
  222. package/dist/foundations/rbac/dsl/define-rbac.d.ts.map +1 -0
  223. package/dist/foundations/rbac/dsl/define-rbac.js +19 -0
  224. package/dist/foundations/rbac/dsl/define-rbac.js.map +1 -0
  225. package/dist/foundations/rbac/dsl/index.d.ts +6 -0
  226. package/dist/foundations/rbac/dsl/index.d.ts.map +1 -0
  227. package/dist/foundations/rbac/dsl/index.js +30 -0
  228. package/dist/foundations/rbac/dsl/index.js.map +1 -0
  229. package/dist/foundations/rbac/dsl/perm.d.ts +15 -0
  230. package/dist/foundations/rbac/dsl/perm.d.ts.map +1 -0
  231. package/dist/foundations/rbac/dsl/perm.js +24 -0
  232. package/dist/foundations/rbac/dsl/perm.js.map +1 -0
  233. package/dist/foundations/rbac/dsl/resolver.d.ts +24 -0
  234. package/dist/foundations/rbac/dsl/resolver.d.ts.map +1 -0
  235. package/dist/foundations/rbac/dsl/resolver.js +55 -0
  236. package/dist/foundations/rbac/dsl/resolver.js.map +1 -0
  237. package/dist/foundations/rbac/dsl/to-permissions-json.d.ts +13 -0
  238. package/dist/foundations/rbac/dsl/to-permissions-json.d.ts.map +1 -0
  239. package/dist/foundations/rbac/dsl/to-permissions-json.js +43 -0
  240. package/dist/foundations/rbac/dsl/to-permissions-json.js.map +1 -0
  241. package/dist/foundations/rbac/dsl/types.d.ts +55 -0
  242. package/dist/foundations/rbac/dsl/types.d.ts.map +1 -0
  243. package/dist/foundations/rbac/dsl/types.js +6 -0
  244. package/dist/foundations/rbac/dsl/types.js.map +1 -0
  245. package/dist/foundations/rbac/dump.d.ts +116 -0
  246. package/dist/foundations/rbac/dump.d.ts.map +1 -0
  247. package/dist/foundations/rbac/dump.js +154 -0
  248. package/dist/foundations/rbac/dump.js.map +1 -0
  249. package/dist/foundations/rbac/index.d.ts +6 -0
  250. package/dist/foundations/rbac/index.d.ts.map +1 -1
  251. package/dist/foundations/rbac/index.js +23 -1
  252. package/dist/foundations/rbac/index.js.map +1 -1
  253. package/dist/foundations/rbac/rbac.module.d.ts +4 -1
  254. package/dist/foundations/rbac/rbac.module.d.ts.map +1 -1
  255. package/dist/foundations/rbac/rbac.module.js +25 -11
  256. package/dist/foundations/rbac/rbac.module.js.map +1 -1
  257. package/dist/foundations/rbac/rbac.tokens.d.ts +11 -0
  258. package/dist/foundations/rbac/rbac.tokens.d.ts.map +1 -0
  259. package/dist/foundations/rbac/rbac.tokens.js +14 -0
  260. package/dist/foundations/rbac/rbac.tokens.js.map +1 -0
  261. package/dist/foundations/rbac/serializer/matrix-to-ts.d.ts +13 -0
  262. package/dist/foundations/rbac/serializer/matrix-to-ts.d.ts.map +1 -0
  263. package/dist/foundations/rbac/serializer/matrix-to-ts.js +74 -0
  264. package/dist/foundations/rbac/serializer/matrix-to-ts.js.map +1 -0
  265. package/dist/foundations/rbac/services/rbac-reconciler.service.d.ts +30 -0
  266. package/dist/foundations/rbac/services/rbac-reconciler.service.d.ts.map +1 -0
  267. package/dist/foundations/rbac/services/rbac-reconciler.service.js +192 -0
  268. package/dist/foundations/rbac/services/rbac-reconciler.service.js.map +1 -0
  269. package/dist/foundations/stripe/__tests__/mocks/stripe.mock.d.ts +62 -62
  270. package/dist/tools/generate-rbac-paths/index.js +24 -19
  271. package/package.json +1 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"perm.js","sourceRoot":"","sources":["../../../../src/foundations/rbac/dsl/perm.ts"],"names":[],"mappings":";;;AAOA,SAAS,KAAK,CAAmB,MAAS;IACxC,MAAM,EAAE,GAAG,CAAC,IAAY,EAAa,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IAClE,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAW,CAAC,CAAC;AAC7D,CAAC;AAED,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;AAC5B,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AAChC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AAEnB,QAAA,IAAI,GAAG;IAClB,IAAI,EAAE,KAAK;IACX,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,OAAO;IACf,MAAM,EAAE,OAAO;IACf,IAAI,EAAE;QACJ,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE;QAC/B,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;QACjC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;QACjC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,IAAI,EAAE;KACZ;CACxB,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { RbacMatrix } from "./types";
2
+ /**
3
+ * Compute the canonical edge JSON for a given (role, module) pair.
4
+ * Union of module defaults and role-specific tokens, serialised.
5
+ * Returns undefined if the role or module is not declared.
6
+ */
7
+ export declare function resolveForRole(matrix: RbacMatrix, roleId: string, moduleId: string): string | undefined;
8
+ /**
9
+ * Compute the canonical defaults JSON for a module.
10
+ * Returns undefined if the module is not declared.
11
+ */
12
+ export declare function resolveDefault(matrix: RbacMatrix, moduleId: string): string | undefined;
13
+ /**
14
+ * Yield every (role, module) pair declared in the matrix.
15
+ */
16
+ export declare function iterateDeclaredEdges(matrix: RbacMatrix): Iterable<{
17
+ roleId: string;
18
+ moduleId: string;
19
+ }>;
20
+ /**
21
+ * Yield every module declared in the matrix.
22
+ */
23
+ export declare function iterateDeclaredModules(matrix: RbacMatrix): Iterable<string>;
24
+ //# sourceMappingURL=resolver.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.d.ts","sourceRoot":"","sources":["../../../../src/foundations/rbac/dsl/resolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAGrC;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMvG;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAIvF;AAED;;GAEG;AACH,wBAAiB,oBAAoB,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC,CAQxG;AAED;;GAEG;AACH,wBAAiB,sBAAsB,CAAC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,CAI5E"}
@@ -0,0 +1,55 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.resolveForRole = resolveForRole;
4
+ exports.resolveDefault = resolveDefault;
5
+ exports.iterateDeclaredEdges = iterateDeclaredEdges;
6
+ exports.iterateDeclaredModules = iterateDeclaredModules;
7
+ const to_permissions_json_1 = require("./to-permissions-json");
8
+ /**
9
+ * Compute the canonical edge JSON for a given (role, module) pair.
10
+ * Union of module defaults and role-specific tokens, serialised.
11
+ * Returns undefined if the role or module is not declared.
12
+ */
13
+ function resolveForRole(matrix, roleId, moduleId) {
14
+ const block = matrix[moduleId];
15
+ if (!block)
16
+ return undefined;
17
+ const roleTokens = block[roleId];
18
+ if (roleTokens === undefined)
19
+ return undefined;
20
+ return (0, to_permissions_json_1.toPermissionsJson)([...block.default, ...roleTokens]);
21
+ }
22
+ /**
23
+ * Compute the canonical defaults JSON for a module.
24
+ * Returns undefined if the module is not declared.
25
+ */
26
+ function resolveDefault(matrix, moduleId) {
27
+ const block = matrix[moduleId];
28
+ if (!block)
29
+ return undefined;
30
+ return (0, to_permissions_json_1.toPermissionsJson)(block.default);
31
+ }
32
+ /**
33
+ * Yield every (role, module) pair declared in the matrix.
34
+ */
35
+ function* iterateDeclaredEdges(matrix) {
36
+ for (const [moduleId, block] of Object.entries(matrix)) {
37
+ if (!block)
38
+ continue;
39
+ for (const key of Object.keys(block)) {
40
+ if (key === "default")
41
+ continue;
42
+ yield { roleId: key, moduleId };
43
+ }
44
+ }
45
+ }
46
+ /**
47
+ * Yield every module declared in the matrix.
48
+ */
49
+ function* iterateDeclaredModules(matrix) {
50
+ for (const moduleId of Object.keys(matrix)) {
51
+ if (matrix[moduleId])
52
+ yield moduleId;
53
+ }
54
+ }
55
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../../src/foundations/rbac/dsl/resolver.ts"],"names":[],"mappings":";;AAQA,wCAMC;AAMD,wCAIC;AAKD,oDAQC;AAKD,wDAIC;AA7CD,+DAA0D;AAE1D;;;;GAIG;AACH,SAAgB,cAAc,CAAC,MAAkB,EAAE,MAAc,EAAE,QAAgB;IACjF,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,MAAM,UAAU,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,UAAU,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC/C,OAAO,IAAA,uCAAiB,EAAC,CAAC,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,UAAU,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,MAAkB,EAAE,QAAgB;IACjE,MAAM,KAAK,GAAG,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/B,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,OAAO,IAAA,uCAAiB,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;AAC1C,CAAC;AAED;;GAEG;AACH,QAAe,CAAC,CAAC,oBAAoB,CAAC,MAAkB;IACtD,KAAK,MAAM,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QACvD,IAAI,CAAC,KAAK;YAAE,SAAS;QACrB,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACrC,IAAI,GAAG,KAAK,SAAS;gBAAE,SAAS;YAChC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;QAClC,CAAC;IACH,CAAC;AACH,CAAC;AAED;;GAEG;AACH,QAAe,CAAC,CAAC,sBAAsB,CAAC,MAAkB;IACxD,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3C,IAAI,MAAM,CAAC,QAAQ,CAAC;YAAE,MAAM,QAAQ,CAAC;IACvC,CAAC;AACH,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { PermToken } from "./types";
2
+ /**
3
+ * Serialise a PermToken[] to the JSON-string shape stored on
4
+ * `Module.permissions` and `HAS_PERMISSIONS.permissions` edges.
5
+ *
6
+ * Format: a JSON-stringified array of `{ type: Action, value: boolean | string }`
7
+ * in fixed action order (read, create, update, delete).
8
+ *
9
+ * Merge rule within the input: unconditional `true` beats scoped path string;
10
+ * scoped path string beats default `false`. (Matches auth.repository merge.)
11
+ */
12
+ export declare function toPermissionsJson(tokens: PermToken[]): string;
13
+ //# sourceMappingURL=to-permissions-json.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-permissions-json.d.ts","sourceRoot":"","sources":["../../../../src/foundations/rbac/dsl/to-permissions-json.ts"],"names":[],"mappings":"AAAA,OAAO,EAAwB,SAAS,EAAE,MAAM,SAAS,CAAC;AAE1D;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,CA4B7D"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.toPermissionsJson = toPermissionsJson;
4
+ const types_1 = require("./types");
5
+ /**
6
+ * Serialise a PermToken[] to the JSON-string shape stored on
7
+ * `Module.permissions` and `HAS_PERMISSIONS.permissions` edges.
8
+ *
9
+ * Format: a JSON-stringified array of `{ type: Action, value: boolean | string }`
10
+ * in fixed action order (read, create, update, delete).
11
+ *
12
+ * Merge rule within the input: unconditional `true` beats scoped path string;
13
+ * scoped path string beats default `false`. (Matches auth.repository merge.)
14
+ */
15
+ function toPermissionsJson(tokens) {
16
+ const perAction = {
17
+ read: false,
18
+ create: false,
19
+ update: false,
20
+ delete: false,
21
+ };
22
+ for (const token of tokens) {
23
+ const existing = perAction[token.action];
24
+ const incoming = token.scope;
25
+ // Precedence: true > string > false
26
+ if (existing === true)
27
+ continue;
28
+ if (incoming === true) {
29
+ perAction[token.action] = true;
30
+ continue;
31
+ }
32
+ if (typeof existing === "string")
33
+ continue; // keep earlier string
34
+ if (typeof incoming === "string") {
35
+ perAction[token.action] = incoming;
36
+ continue;
37
+ }
38
+ // both false — no change
39
+ }
40
+ const array = types_1.ACTION_ORDER.map((action) => ({ type: action, value: perAction[action] }));
41
+ return JSON.stringify(array);
42
+ }
43
+ //# sourceMappingURL=to-permissions-json.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"to-permissions-json.js","sourceRoot":"","sources":["../../../../src/foundations/rbac/dsl/to-permissions-json.ts"],"names":[],"mappings":";;AAYA,8CA4BC;AAxCD,mCAA0D;AAE1D;;;;;;;;;GASG;AACH,SAAgB,iBAAiB,CAAC,MAAmB;IACnD,MAAM,SAAS,GAAqC;QAClD,IAAI,EAAE,KAAK;QACX,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;QACb,MAAM,EAAE,KAAK;KACd,CAAC;IAEF,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACzC,MAAM,QAAQ,GAAG,KAAK,CAAC,KAAK,CAAC;QAE7B,oCAAoC;QACpC,IAAI,QAAQ,KAAK,IAAI;YAAE,SAAS;QAChC,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,IAAI,CAAC;YAC/B,SAAS;QACX,CAAC;QACD,IAAI,OAAO,QAAQ,KAAK,QAAQ;YAAE,SAAS,CAAC,sBAAsB;QAClE,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,QAAQ,CAAC;YACnC,SAAS;QACX,CAAC;QACD,yBAAyB;IAC3B,CAAC;IAED,MAAM,KAAK,GAAG,oBAAY,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACzF,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;AAC/B,CAAC"}
@@ -0,0 +1,55 @@
1
+ export type Action = "read" | "create" | "update" | "delete";
2
+ /**
3
+ * A single permission token. Either unconditional (`scope: true`) or scoped to
4
+ * a dotted path into the frontend model (`scope: "warehouse.managedBy"`).
5
+ *
6
+ * The `M` type parameter constrains scoped paths to those valid for the
7
+ * module the token is declared under. Unconditional tokens are any-module
8
+ * (scope: true) so they have no module constraint.
9
+ */
10
+ export type PermToken<PathSet extends string = string> = {
11
+ action: Action;
12
+ scope: true;
13
+ } | {
14
+ action: Action;
15
+ scope: PathSet;
16
+ };
17
+ /**
18
+ * Permissions block for a single module in the matrix.
19
+ *
20
+ * `default` applies to every role for this module (the floor).
21
+ * Each role key declares *additions* on top of defaults.
22
+ */
23
+ export type ModuleBlock<PathSet extends string = string> = {
24
+ default: PermToken<PathSet>[];
25
+ } & Record<string, PermToken<PathSet>[]>;
26
+ /**
27
+ * The full RBAC matrix.
28
+ *
29
+ * Keys are module UUIDs (values of `ModuleId`). The `ModuleUserPaths` generic
30
+ * constrains the key set to known modules; scoped paths are typed as `string`
31
+ * (not narrowed per-module), because:
32
+ * 1. Many modules legitimately have no BFS-discovered relationship paths, so
33
+ * per-module narrowing would collapse their scope type to `never` and
34
+ * reject any scoped token.
35
+ * 2. Self-scope paths (e.g. `"id"` on User) and attribute paths are not part
36
+ * of the relationship-based `MODULE_USER_PATHS` set, but are valid at
37
+ * runtime.
38
+ * Action names remain strictly typed.
39
+ */
40
+ export type RbacMatrix<ModuleUserPaths extends Record<string, readonly string[]> = Record<string, readonly string[]>> = {
41
+ [M in keyof ModuleUserPaths]?: ModuleBlock<string>;
42
+ };
43
+ /**
44
+ * Effective permissions for a single role on a single module, after union of
45
+ * default and role-specific tokens. Matches the shape that the existing
46
+ * permissionQuery writes to Neo4j.
47
+ */
48
+ export interface ResolvedPermissions {
49
+ create: boolean | string;
50
+ read: boolean | string;
51
+ update: boolean | string;
52
+ delete: boolean | string;
53
+ }
54
+ export declare const ACTION_ORDER: readonly Action[];
55
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../src/foundations/rbac/dsl/types.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,MAAM,GAAG,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAE7D;;;;;;;GAOG;AACH,MAAM,MAAM,SAAS,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,IACjD;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,IAAI,CAAA;CAAE,GAC/B;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,OAAO,CAAA;CAAE,CAAC;AAEvC;;;;;GAKG;AACH,MAAM,MAAM,WAAW,CAAC,OAAO,SAAS,MAAM,GAAG,MAAM,IAAI;IACzD,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC;CAC/B,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;AAEzC;;;;;;;;;;;;;GAaG;AACH,MAAM,MAAM,UAAU,CAAC,eAAe,SAAS,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,IAClH;KACG,CAAC,IAAI,MAAM,eAAe,CAAC,CAAC,EAAE,WAAW,CAAC,MAAM,CAAC;CACnD,CAAC;AAEJ;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;IACzB,MAAM,EAAE,OAAO,GAAG,MAAM,CAAC;CAC1B;AAED,eAAO,MAAM,YAAY,EAAE,SAAS,MAAM,EAAoD,CAAC"}
@@ -0,0 +1,6 @@
1
+ "use strict";
2
+ // packages/nestjs-neo4jsonapi/src/foundations/rbac/dsl/types.ts
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.ACTION_ORDER = void 0;
5
+ exports.ACTION_ORDER = ["read", "create", "update", "delete"];
6
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../src/foundations/rbac/dsl/types.ts"],"names":[],"mappings":";AAAA,gEAAgE;;;AAyDnD,QAAA,YAAY,GAAsB,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAU,CAAC"}
@@ -0,0 +1,116 @@
1
+ import type { Driver } from "neo4j-driver";
2
+ /**
3
+ * Options for {@link dumpRbacMatrix}.
4
+ */
5
+ export interface DumpRbacMatrixOptions {
6
+ /**
7
+ * A connected `neo4j-driver` Driver. The function opens a single session
8
+ * and closes it on exit, but does NOT close the driver — the caller owns
9
+ * the driver lifecycle.
10
+ */
11
+ driver: Driver;
12
+ /**
13
+ * Optional database name. If omitted, the driver's default database is
14
+ * used. Pass this when your deployment uses a non-default database
15
+ * (e.g. `process.env.NEO4J_DATABASE`).
16
+ */
17
+ database?: string;
18
+ /**
19
+ * UUID → PascalCase name map for roles. The serializer emits
20
+ * `RoleId.<Name>` references using these names; without them, the
21
+ * generated file contains raw UUIDs.
22
+ *
23
+ * Typical construction from a `RoleId` enum:
24
+ * ```ts
25
+ * Object.fromEntries(Object.entries(RoleId).map(([k, v]) => [v, k]))
26
+ * ```
27
+ */
28
+ roleNames: Record<string, string>;
29
+ /**
30
+ * UUID → PascalCase name map for modules. Same shape and purpose as
31
+ * `roleNames`, applied to `ModuleId.<Name>` references in the output.
32
+ */
33
+ moduleNames: Record<string, string>;
34
+ /**
35
+ * UUID of the Administrator role. The dump writes
36
+ * `[RoleId.Administrator]: perm.full` for every declared module so the
37
+ * file matches the convention enforced by `RbacReconcilerService`
38
+ * (which deliberately skips Administrator edges — Admin is hardwired in
39
+ * code, not represented as `HAS_PERMISSIONS` edges in the DB).
40
+ */
41
+ administratorRoleId: string;
42
+ /**
43
+ * Output path for the emitted TypeScript file. Absolute, or relative to
44
+ * `process.cwd()`. Parent directories are created if missing.
45
+ *
46
+ * Convention: place the file under your API app's `src/rbac/` directory
47
+ * (e.g. `"src/rbac/permissions.ts"` when running from the api package
48
+ * cwd, or `"apps/api/src/rbac/permissions.ts"` from the monorepo root).
49
+ */
50
+ outputPath: string;
51
+ }
52
+ /**
53
+ * Result of {@link dumpRbacMatrix}.
54
+ */
55
+ export interface DumpRbacMatrixResult {
56
+ /** Number of bytes written to the output file. */
57
+ bytesWritten: number;
58
+ /** Resolved absolute path that was written. */
59
+ path: string;
60
+ }
61
+ /**
62
+ * Read the current RBAC state from Neo4j and emit a declarative-matrix
63
+ * `permissions.ts` source file for the consuming app to commit.
64
+ *
65
+ * **Developer-only.** This is meant to run as a one-shot CLI step when
66
+ * bootstrapping a new project (or re-dumping after manual DB edits during
67
+ * development). Do not expose this from a runtime endpoint — production
68
+ * servers should never write source files.
69
+ *
70
+ * The emitted file imports `RoleId` / `ModuleId` from `@neural-erp/shared`
71
+ * (or whichever package you've wired into `serializeMatrixToTs`), and
72
+ * `perm` / `defineRbac` from `@carlonicora/nestjs-neo4jsonapi`.
73
+ *
74
+ * @example
75
+ * ```ts
76
+ * // apps/api/scripts/rbac-dump.ts
77
+ * import * as dotenv from "dotenv";
78
+ * import * as path from "path";
79
+ * dotenv.config({ path: path.resolve(__dirname, "../../../.env") });
80
+ *
81
+ * import neo4j from "neo4j-driver";
82
+ * import { RoleId, ModuleId } from "@neural-erp/shared";
83
+ * import { dumpRbacMatrix } from "@carlonicora/nestjs-neo4jsonapi";
84
+ *
85
+ * async function main() {
86
+ * const driver = neo4j.driver(
87
+ * process.env.NEO4J_URI!,
88
+ * neo4j.auth.basic(process.env.NEO4J_USER!, process.env.NEO4J_PASSWORD!),
89
+ * );
90
+ * try {
91
+ * const result = await dumpRbacMatrix({
92
+ * driver,
93
+ * database: process.env.NEO4J_DATABASE,
94
+ * roleNames: Object.fromEntries(
95
+ * Object.entries(RoleId).map(([k, v]) => [v, k]),
96
+ * ),
97
+ * moduleNames: Object.fromEntries(
98
+ * Object.entries(ModuleId).map(([k, v]) => [v, k]),
99
+ * ),
100
+ * administratorRoleId: RoleId.Administrator,
101
+ * outputPath: path.resolve(__dirname, "../src/rbac/permissions.ts"),
102
+ * });
103
+ * console.log(`Wrote ${result.bytesWritten} bytes to ${result.path}`);
104
+ * } finally {
105
+ * await driver.close();
106
+ * }
107
+ * }
108
+ *
109
+ * main().catch((err) => {
110
+ * console.error(err);
111
+ * process.exit(1);
112
+ * });
113
+ * ```
114
+ */
115
+ export declare function dumpRbacMatrix(opts: DumpRbacMatrixOptions): Promise<DumpRbacMatrixResult>;
116
+ //# sourceMappingURL=dump.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dump.d.ts","sourceRoot":"","sources":["../../../src/foundations/rbac/dump.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAI3C;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;OAIG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB;;;;;;;;;OASG;IACH,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAElC;;;OAGG;IACH,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAEpC;;;;;;OAMG;IACH,mBAAmB,EAAE,MAAM,CAAC;IAE5B;;;;;;;OAOG;IACH,UAAU,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,kDAAkD;IAClD,YAAY,EAAE,MAAM,CAAC;IACrB,+CAA+C;IAC/C,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqDG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,qBAAqB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAkD/F"}
@@ -0,0 +1,154 @@
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 __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.dumpRbacMatrix = dumpRbacMatrix;
37
+ const fs = __importStar(require("fs"));
38
+ const path = __importStar(require("path"));
39
+ const matrix_to_ts_1 = require("./serializer/matrix-to-ts");
40
+ /**
41
+ * Read the current RBAC state from Neo4j and emit a declarative-matrix
42
+ * `permissions.ts` source file for the consuming app to commit.
43
+ *
44
+ * **Developer-only.** This is meant to run as a one-shot CLI step when
45
+ * bootstrapping a new project (or re-dumping after manual DB edits during
46
+ * development). Do not expose this from a runtime endpoint — production
47
+ * servers should never write source files.
48
+ *
49
+ * The emitted file imports `RoleId` / `ModuleId` from `@neural-erp/shared`
50
+ * (or whichever package you've wired into `serializeMatrixToTs`), and
51
+ * `perm` / `defineRbac` from `@carlonicora/nestjs-neo4jsonapi`.
52
+ *
53
+ * @example
54
+ * ```ts
55
+ * // apps/api/scripts/rbac-dump.ts
56
+ * import * as dotenv from "dotenv";
57
+ * import * as path from "path";
58
+ * dotenv.config({ path: path.resolve(__dirname, "../../../.env") });
59
+ *
60
+ * import neo4j from "neo4j-driver";
61
+ * import { RoleId, ModuleId } from "@neural-erp/shared";
62
+ * import { dumpRbacMatrix } from "@carlonicora/nestjs-neo4jsonapi";
63
+ *
64
+ * async function main() {
65
+ * const driver = neo4j.driver(
66
+ * process.env.NEO4J_URI!,
67
+ * neo4j.auth.basic(process.env.NEO4J_USER!, process.env.NEO4J_PASSWORD!),
68
+ * );
69
+ * try {
70
+ * const result = await dumpRbacMatrix({
71
+ * driver,
72
+ * database: process.env.NEO4J_DATABASE,
73
+ * roleNames: Object.fromEntries(
74
+ * Object.entries(RoleId).map(([k, v]) => [v, k]),
75
+ * ),
76
+ * moduleNames: Object.fromEntries(
77
+ * Object.entries(ModuleId).map(([k, v]) => [v, k]),
78
+ * ),
79
+ * administratorRoleId: RoleId.Administrator,
80
+ * outputPath: path.resolve(__dirname, "../src/rbac/permissions.ts"),
81
+ * });
82
+ * console.log(`Wrote ${result.bytesWritten} bytes to ${result.path}`);
83
+ * } finally {
84
+ * await driver.close();
85
+ * }
86
+ * }
87
+ *
88
+ * main().catch((err) => {
89
+ * console.error(err);
90
+ * process.exit(1);
91
+ * });
92
+ * ```
93
+ */
94
+ async function dumpRbacMatrix(opts) {
95
+ const session = opts.driver.session(opts.database ? { database: opts.database } : undefined);
96
+ try {
97
+ const modulesResult = await session.run(`MATCH (m:Module) RETURN m.id AS id, m.permissions AS permissions`);
98
+ const edgesResult = await session.run(`MATCH (r:Role)-[p:HAS_PERMISSIONS]->(m:Module) RETURN r.id AS roleId, m.id AS moduleId, p.permissions AS permissions`);
99
+ const matrix = {};
100
+ for (const rec of modulesResult.records) {
101
+ const moduleId = rec.get("id");
102
+ const permissions = rec.get("permissions");
103
+ if (!moduleId)
104
+ continue;
105
+ matrix[moduleId] = { default: deserialize(permissions), ...(matrix[moduleId] ?? {}) };
106
+ }
107
+ for (const rec of edgesResult.records) {
108
+ const roleId = rec.get("roleId");
109
+ const moduleId = rec.get("moduleId");
110
+ const permissions = rec.get("permissions");
111
+ if (!matrix[moduleId])
112
+ matrix[moduleId] = { default: [] };
113
+ matrix[moduleId][roleId] = deltaFromDefault(deserialize(permissions), matrix[moduleId].default);
114
+ }
115
+ // Administrator gets perm.full on every declared module — matches the
116
+ // reconciler's "Administrator edges are never managed" convention.
117
+ for (const moduleId of Object.keys(matrix)) {
118
+ matrix[moduleId][opts.administratorRoleId] = [
119
+ { action: "read", scope: true },
120
+ { action: "create", scope: true },
121
+ { action: "update", scope: true },
122
+ { action: "delete", scope: true },
123
+ ];
124
+ }
125
+ const source = await (0, matrix_to_ts_1.serializeMatrixToTs)(matrix, {
126
+ roleNames: opts.roleNames,
127
+ moduleNames: opts.moduleNames,
128
+ });
129
+ const outPath = path.isAbsolute(opts.outputPath) ? opts.outputPath : path.resolve(process.cwd(), opts.outputPath);
130
+ fs.mkdirSync(path.dirname(outPath), { recursive: true });
131
+ fs.writeFileSync(outPath, source);
132
+ return { bytesWritten: Buffer.byteLength(source), path: outPath };
133
+ }
134
+ finally {
135
+ await session.close();
136
+ }
137
+ }
138
+ function deserialize(raw) {
139
+ if (!raw)
140
+ return [];
141
+ const arr = JSON.parse(raw);
142
+ return arr
143
+ .filter((e) => e.value !== false)
144
+ .map((e) => ({
145
+ action: e.type,
146
+ scope: e.value === true ? true : e.value,
147
+ }));
148
+ }
149
+ function deltaFromDefault(effective, defaults) {
150
+ // Naive shallow comparison — sufficient because tokens are flat
151
+ // {action, scope} records.
152
+ return effective.filter((e) => !defaults.some((d) => d.action === e.action && d.scope === e.scope));
153
+ }
154
+ //# sourceMappingURL=dump.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dump.js","sourceRoot":"","sources":["../../../src/foundations/rbac/dump.ts"],"names":[],"mappings":"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"}
@@ -4,4 +4,10 @@ export { permissionMappingMeta } from "./entities/permission-mapping.meta";
4
4
  export { modulePathsMeta } from "./entities/module-paths.meta";
5
5
  export type { PermissionMapping } from "./entities/permission-mapping.entity";
6
6
  export type { ModuleRelationshipPaths } from "./entities/module-paths.entity";
7
+ export { perm, defineRbac, toPermissionsJson } from "./dsl";
8
+ export { resolveForRole, resolveDefault, iterateDeclaredEdges, iterateDeclaredModules } from "./dsl";
9
+ export { ACTION_ORDER } from "./dsl";
10
+ export type { PermToken, ModuleBlock, RbacMatrix, ResolvedPermissions } from "./dsl";
11
+ export { dumpRbacMatrix } from "./dump";
12
+ export type { DumpRbacMatrixOptions, DumpRbacMatrixResult } from "./dump";
7
13
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/foundations/rbac/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,YAAY,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,YAAY,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/foundations/rbac/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,uBAAuB,EAAE,MAAM,kBAAkB,CAAC;AAC3D,OAAO,EAAE,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAC3E,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,YAAY,EAAE,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC9E,YAAY,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAI9E,OAAO,EAAE,IAAI,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,OAAO,CAAC;AAC5D,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,OAAO,CAAC;AACrG,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AACrC,YAAY,EAAE,SAAS,EAAE,WAAW,EAAE,UAAU,EAAE,mBAAmB,EAAE,MAAM,OAAO,CAAC;AAKrF,OAAO,EAAE,cAAc,EAAE,MAAM,QAAQ,CAAC;AACxC,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,MAAM,QAAQ,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.modulePathsMeta = exports.permissionMappingMeta = exports.MODULE_USER_PATHS_TOKEN = exports.RbacModule = void 0;
3
+ exports.dumpRbacMatrix = exports.ACTION_ORDER = exports.iterateDeclaredModules = exports.iterateDeclaredEdges = exports.resolveDefault = exports.resolveForRole = exports.toPermissionsJson = exports.defineRbac = exports.perm = exports.modulePathsMeta = exports.permissionMappingMeta = exports.MODULE_USER_PATHS_TOKEN = exports.RbacModule = void 0;
4
4
  var rbac_module_1 = require("./rbac.module");
5
5
  Object.defineProperty(exports, "RbacModule", { enumerable: true, get: function () { return rbac_module_1.RbacModule; } });
6
6
  var rbac_constants_1 = require("./rbac.constants");
@@ -9,4 +9,26 @@ var permission_mapping_meta_1 = require("./entities/permission-mapping.meta");
9
9
  Object.defineProperty(exports, "permissionMappingMeta", { enumerable: true, get: function () { return permission_mapping_meta_1.permissionMappingMeta; } });
10
10
  var module_paths_meta_1 = require("./entities/module-paths.meta");
11
11
  Object.defineProperty(exports, "modulePathsMeta", { enumerable: true, get: function () { return module_paths_meta_1.modulePathsMeta; } });
12
+ // RBAC DSL — re-export explicitly to avoid `Action` collision with
13
+ // `common/enums/action.ts` at the library root.
14
+ var dsl_1 = require("./dsl");
15
+ Object.defineProperty(exports, "perm", { enumerable: true, get: function () { return dsl_1.perm; } });
16
+ Object.defineProperty(exports, "defineRbac", { enumerable: true, get: function () { return dsl_1.defineRbac; } });
17
+ Object.defineProperty(exports, "toPermissionsJson", { enumerable: true, get: function () { return dsl_1.toPermissionsJson; } });
18
+ var dsl_2 = require("./dsl");
19
+ Object.defineProperty(exports, "resolveForRole", { enumerable: true, get: function () { return dsl_2.resolveForRole; } });
20
+ Object.defineProperty(exports, "resolveDefault", { enumerable: true, get: function () { return dsl_2.resolveDefault; } });
21
+ Object.defineProperty(exports, "iterateDeclaredEdges", { enumerable: true, get: function () { return dsl_2.iterateDeclaredEdges; } });
22
+ Object.defineProperty(exports, "iterateDeclaredModules", { enumerable: true, get: function () { return dsl_2.iterateDeclaredModules; } });
23
+ var dsl_3 = require("./dsl");
24
+ Object.defineProperty(exports, "ACTION_ORDER", { enumerable: true, get: function () { return dsl_3.ACTION_ORDER; } });
25
+ // Developer-only one-shot tool to read the current DB state and emit a
26
+ // declarative `permissions.ts` source file. CLI use only — see the JSDoc
27
+ // on `dumpRbacMatrix` for the canonical script template.
28
+ var dump_1 = require("./dump");
29
+ Object.defineProperty(exports, "dumpRbacMatrix", { enumerable: true, get: function () { return dump_1.dumpRbacMatrix; } });
30
+ // Note: the DSL's `Action` string-literal union is intentionally not re-exported
31
+ // from the library root; `common/enums/action.ts` already exports an `Action`
32
+ // enum with the same string values. Deep consumers can import it via
33
+ // `@carlonicora/nestjs-neo4jsonapi/foundations/rbac/dsl` if needed.
12
34
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/foundations/rbac/index.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,mDAA2D;AAAlD,yHAAA,uBAAuB,OAAA;AAChC,8EAA2E;AAAlE,gIAAA,qBAAqB,OAAA;AAC9B,kEAA+D;AAAtD,oHAAA,eAAe,OAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/foundations/rbac/index.ts"],"names":[],"mappings":";;;AAAA,6CAA2C;AAAlC,yGAAA,UAAU,OAAA;AACnB,mDAA2D;AAAlD,yHAAA,uBAAuB,OAAA;AAChC,8EAA2E;AAAlE,gIAAA,qBAAqB,OAAA;AAC9B,kEAA+D;AAAtD,oHAAA,eAAe,OAAA;AAIxB,mEAAmE;AACnE,gDAAgD;AAChD,6BAA4D;AAAnD,2FAAA,IAAI,OAAA;AAAE,iGAAA,UAAU,OAAA;AAAE,wGAAA,iBAAiB,OAAA;AAC5C,6BAAqG;AAA5F,qGAAA,cAAc,OAAA;AAAE,qGAAA,cAAc,OAAA;AAAE,2GAAA,oBAAoB,OAAA;AAAE,6GAAA,sBAAsB,OAAA;AACrF,6BAAqC;AAA5B,mGAAA,YAAY,OAAA;AAGrB,uEAAuE;AACvE,yEAAyE;AACzE,yDAAyD;AACzD,+BAAwC;AAA/B,sGAAA,cAAc,OAAA;AAEvB,iFAAiF;AACjF,8EAA8E;AAC9E,qEAAqE;AACrE,oEAAoE"}
@@ -1,7 +1,10 @@
1
1
  import { DynamicModule } from "@nestjs/common";
2
+ import type { RbacMatrix } from "./dsl/types";
2
3
  export declare class RbacModule {
3
4
  static register(options: {
4
- moduleUserPaths: Record<string, string[]>;
5
+ moduleUserPaths: Record<string, readonly string[]>;
6
+ rbac?: RbacMatrix;
7
+ devMode?: boolean;
5
8
  }): DynamicModule;
6
9
  }
7
10
  //# sourceMappingURL=rbac.module.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"rbac.module.d.ts","sourceRoot":"","sources":["../../../src/foundations/rbac/rbac.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAU,MAAM,gBAAgB,CAAC;AASvD,qBACa,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;QAAE,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;KAAE,GAAG,aAAa;CAiBvF"}
1
+ {"version":3,"file":"rbac.module.d.ts","sourceRoot":"","sources":["../../../src/foundations/rbac/rbac.module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAA0B,MAAM,gBAAgB,CAAC;AAUvE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAI9C,qBACa,UAAU;IACrB,MAAM,CAAC,QAAQ,CAAC,OAAO,EAAE;QACvB,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;QACnD,IAAI,CAAC,EAAE,UAAU,CAAC;QAClB,OAAO,CAAC,EAAE,OAAO,CAAC;KACnB,GAAG,aAAa;CA6BlB"}
@@ -13,24 +13,38 @@ const rbac_controller_1 = require("./controllers/rbac.controller");
13
13
  const rbac_module_paths_controller_1 = require("./controllers/rbac-module-paths.controller");
14
14
  const rbac_repository_1 = require("./repositories/rbac.repository");
15
15
  const rbac_service_1 = require("./services/rbac.service");
16
+ const rbac_reconciler_service_1 = require("./services/rbac-reconciler.service");
16
17
  const permission_mapping_serialiser_1 = require("./serialisers/permission-mapping.serialiser");
17
18
  const module_paths_serialiser_1 = require("./serialisers/module-paths.serialiser");
18
19
  const rbac_constants_1 = require("./rbac.constants");
20
+ const rbac_tokens_1 = require("./rbac.tokens");
21
+ const rbac_dev_controller_1 = require("./controllers/rbac-dev.controller");
22
+ const conditional_service_decorator_1 = require("../../common/decorators/conditional-service.decorator");
19
23
  let RbacModule = RbacModule_1 = class RbacModule {
20
24
  static register(options) {
25
+ const providers = [
26
+ rbac_repository_1.RbacRepository,
27
+ rbac_service_1.RbacService,
28
+ permission_mapping_serialiser_1.PermissionMappingSerialiser,
29
+ module_paths_serialiser_1.ModulePathsSerialiser,
30
+ (0, conditional_service_decorator_1.createWorkerProvider)(rbac_reconciler_service_1.RbacReconcilerService),
31
+ {
32
+ provide: rbac_constants_1.MODULE_USER_PATHS_TOKEN,
33
+ useValue: options.moduleUserPaths,
34
+ },
35
+ {
36
+ provide: rbac_tokens_1.RBAC_MATRIX_TOKEN,
37
+ useValue: options.rbac ?? null,
38
+ },
39
+ ];
40
+ const controllers = [rbac_controller_1.RbacController, rbac_module_paths_controller_1.RbacModulePathsController];
41
+ if (options.devMode) {
42
+ controllers.push(rbac_dev_controller_1.RbacDevController);
43
+ }
21
44
  return {
22
45
  module: RbacModule_1,
23
- controllers: [rbac_controller_1.RbacController, rbac_module_paths_controller_1.RbacModulePathsController],
24
- providers: [
25
- rbac_repository_1.RbacRepository,
26
- rbac_service_1.RbacService,
27
- permission_mapping_serialiser_1.PermissionMappingSerialiser,
28
- module_paths_serialiser_1.ModulePathsSerialiser,
29
- {
30
- provide: rbac_constants_1.MODULE_USER_PATHS_TOKEN,
31
- useValue: options.moduleUserPaths,
32
- },
33
- ],
46
+ controllers,
47
+ providers,
34
48
  exports: [rbac_service_1.RbacService],
35
49
  };
36
50
  }