@antelopejs/interface-dms 0.3.5 → 0.3.6

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 (701) hide show
  1. package/CHANGELOG.md +27 -0
  2. package/README.md +2 -2
  3. package/dist/attachments.d.ts +19 -10
  4. package/dist/attachments.js +15 -0
  5. package/dist/attachments.js.map +1 -1
  6. package/dist/auth/db/internal/sessions.model.d.ts +9 -0
  7. package/dist/auth/db/internal/sessions.model.js +31 -0
  8. package/dist/auth/db/internal/sessions.model.js.map +1 -0
  9. package/dist/auth/db/models/sessions.model.d.ts +16 -2
  10. package/dist/auth/db/models/sessions.model.js +33 -41
  11. package/dist/auth/db/models/sessions.model.js.map +1 -1
  12. package/dist/auth/db/models/userExternalIdentities.model.d.ts +11 -0
  13. package/dist/auth/db/models/userExternalIdentities.model.js +11 -0
  14. package/dist/auth/db/models/userExternalIdentities.model.js.map +1 -1
  15. package/dist/auth/db/models/users.model.d.ts +13 -0
  16. package/dist/auth/db/models/users.model.js +13 -0
  17. package/dist/auth/db/models/users.model.js.map +1 -1
  18. package/dist/auth/db/tables/sessions.table.d.ts +6 -1
  19. package/dist/auth/db/tables/sessions.table.js +0 -4
  20. package/dist/auth/db/tables/sessions.table.js.map +1 -1
  21. package/dist/auth/db/tables/userExternalIdentities.table.d.ts +24 -0
  22. package/dist/auth/db/tables/userExternalIdentities.table.js +13 -0
  23. package/dist/auth/db/tables/userExternalIdentities.table.js.map +1 -1
  24. package/dist/auth/db/tables/users.table.d.ts +60 -0
  25. package/dist/auth/db/tables/users.table.js +32 -0
  26. package/dist/auth/db/tables/users.table.js.map +1 -1
  27. package/dist/auth/index.d.ts +114 -10
  28. package/dist/auth/index.js +110 -17
  29. package/dist/auth/index.js.map +1 -1
  30. package/dist/auth/internal/request-authenticators.d.ts +6 -0
  31. package/dist/auth/internal/request-authenticators.js +82 -0
  32. package/dist/auth/internal/request-authenticators.js.map +1 -0
  33. package/dist/auth/internal/request-principal.d.ts +10 -0
  34. package/dist/auth/internal/request-principal.js +27 -0
  35. package/dist/auth/internal/request-principal.js.map +1 -0
  36. package/dist/auth/internal/user-agent.d.ts +10 -0
  37. package/dist/auth/internal/user-agent.js +3 -0
  38. package/dist/auth/internal/user-agent.js.map +1 -0
  39. package/dist/auth/password.d.ts +19 -0
  40. package/dist/auth/password.js +23 -0
  41. package/dist/auth/password.js.map +1 -1
  42. package/dist/auth/request-authenticators.d.ts +4 -3
  43. package/dist/auth/request-authenticators.js +0 -77
  44. package/dist/auth/request-authenticators.js.map +1 -1
  45. package/dist/base/activity-feed.d.ts +210 -0
  46. package/dist/base/activity-feed.js +104 -0
  47. package/dist/base/activity-feed.js.map +1 -0
  48. package/dist/base/banner.d.ts +111 -0
  49. package/dist/base/banner.js +93 -0
  50. package/dist/base/banner.js.map +1 -0
  51. package/dist/base/block-registry/helpers.d.ts +26 -0
  52. package/dist/base/block-registry/helpers.js +27 -1
  53. package/dist/base/block-registry/helpers.js.map +1 -1
  54. package/dist/base/block-registry/internal/describe.d.ts +35 -0
  55. package/dist/base/block-registry/{describe.js → internal/describe.js} +50 -0
  56. package/dist/base/block-registry/internal/describe.js.map +1 -0
  57. package/dist/base/block-registry/internal/ui.d.ts +23 -0
  58. package/dist/base/block-registry/internal/ui.js +35 -0
  59. package/dist/base/block-registry/internal/ui.js.map +1 -0
  60. package/dist/base/block-registry/registry.d.ts +24 -0
  61. package/dist/base/block-registry/registry.js +30 -1
  62. package/dist/base/block-registry/registry.js.map +1 -1
  63. package/dist/base/block-registry/types.d.ts +149 -0
  64. package/dist/base/block-types.d.ts +22 -2
  65. package/dist/base/block-types.js +24 -2
  66. package/dist/base/block-types.js.map +1 -1
  67. package/dist/base/card.d.ts +100 -0
  68. package/dist/base/card.js +91 -0
  69. package/dist/base/card.js.map +1 -0
  70. package/dist/base/chart-card.d.ts +9 -2
  71. package/dist/base/chart-card.js +14 -1
  72. package/dist/base/chart-card.js.map +1 -1
  73. package/dist/base/chart-schemas.d.ts +127 -115
  74. package/dist/base/chart-schemas.js +18 -56
  75. package/dist/base/chart-schemas.js.map +1 -1
  76. package/dist/base/chart-type.d.ts +15 -0
  77. package/dist/base/chart-type.js +20 -0
  78. package/dist/base/chart-type.js.map +1 -0
  79. package/dist/base/chart.d.ts +31 -22
  80. package/dist/base/chart.js +27 -54
  81. package/dist/base/chart.js.map +1 -1
  82. package/dist/base/confirm-dialog.d.ts +6 -0
  83. package/dist/base/confirm-dialog.js +18 -0
  84. package/dist/base/confirm-dialog.js.map +1 -0
  85. package/dist/base/data-sources.d.ts +38 -0
  86. package/dist/base/data-sources.js +13 -0
  87. package/dist/base/data-sources.js.map +1 -1
  88. package/dist/base/data-types/compare-types.d.ts +0 -2
  89. package/dist/base/data-types/compare-types.js +18 -13
  90. package/dist/base/data-types/compare-types.js.map +1 -1
  91. package/dist/base/data-types/core.d.ts +55 -0
  92. package/dist/base/data-types/core.js +42 -0
  93. package/dist/base/data-types/core.js.map +1 -1
  94. package/dist/base/data-types/default-types.d.ts +241 -62
  95. package/dist/base/data-types/default-types.js +257 -135
  96. package/dist/base/data-types/default-types.js.map +1 -1
  97. package/dist/base/data-types/field-types.d.ts +164 -0
  98. package/dist/base/data-types/field-types.js +236 -0
  99. package/dist/base/data-types/field-types.js.map +1 -0
  100. package/dist/base/data-types/index.d.ts +1 -0
  101. package/dist/base/data-types/index.js +21 -0
  102. package/dist/base/data-types/index.js.map +1 -1
  103. package/dist/base/data-types/internal/compare-types.d.ts +3 -0
  104. package/dist/base/data-types/internal/compare-types.js +15 -0
  105. package/dist/base/data-types/internal/compare-types.js.map +1 -0
  106. package/dist/base/data-types/status-type.d.ts +2 -1
  107. package/dist/base/data-types/status-type.js +6 -0
  108. package/dist/base/data-types/status-type.js.map +1 -1
  109. package/dist/base/display.d.ts +124 -0
  110. package/dist/base/display.js +95 -0
  111. package/dist/base/display.js.map +1 -0
  112. package/dist/base/empty-state.d.ts +106 -0
  113. package/dist/base/empty-state.js +109 -0
  114. package/dist/base/empty-state.js.map +1 -0
  115. package/dist/base/export-jobs.d.ts +39 -1
  116. package/dist/base/export-jobs.js +12 -3
  117. package/dist/base/export-jobs.js.map +1 -1
  118. package/dist/base/form-block-schema.d.ts +345 -28
  119. package/dist/base/form-block-schema.js +83 -12
  120. package/dist/base/form-block-schema.js.map +1 -1
  121. package/dist/base/form-schema.d.ts +137 -22
  122. package/dist/base/form-schema.js +139 -42
  123. package/dist/base/form-schema.js.map +1 -1
  124. package/dist/base/form-types.d.ts +139 -4
  125. package/dist/base/form-types.js +7 -1
  126. package/dist/base/form-types.js.map +1 -1
  127. package/dist/base/form.js +7 -0
  128. package/dist/base/form.js.map +1 -1
  129. package/dist/base/grid.d.ts +57 -0
  130. package/dist/base/grid.js +43 -0
  131. package/dist/base/grid.js.map +1 -1
  132. package/dist/base/helpers/file-refs.js +5 -1
  133. package/dist/base/helpers/file-refs.js.map +1 -1
  134. package/dist/base/index.d.ts +11 -1
  135. package/dist/base/index.js +16 -1
  136. package/dist/base/index.js.map +1 -1
  137. package/dist/base/internal/button-availability.d.ts +17 -0
  138. package/dist/base/internal/button-availability.js +31 -0
  139. package/dist/base/internal/button-availability.js.map +1 -0
  140. package/dist/base/internal/chart-schemas.d.ts +6 -0
  141. package/dist/base/internal/chart-schemas.js +70 -0
  142. package/dist/base/internal/chart-schemas.js.map +1 -0
  143. package/dist/base/internal/chart.d.ts +22 -0
  144. package/dist/base/internal/chart.js +37 -0
  145. package/dist/base/internal/chart.js.map +1 -0
  146. package/dist/base/internal/confirm-dialog.d.ts +13 -0
  147. package/dist/base/internal/confirm-dialog.js +24 -0
  148. package/dist/base/internal/confirm-dialog.js.map +1 -0
  149. package/dist/base/internal/display.d.ts +13 -0
  150. package/dist/base/internal/display.js +18 -0
  151. package/dist/base/internal/display.js.map +1 -0
  152. package/dist/base/internal/export-jobs.d.ts +2 -0
  153. package/dist/base/internal/export-jobs.js +6 -0
  154. package/dist/base/internal/export-jobs.js.map +1 -0
  155. package/dist/base/internal/form-block-schema.d.ts +6 -0
  156. package/dist/base/internal/form-block-schema.js +10 -0
  157. package/dist/base/internal/form-block-schema.js.map +1 -0
  158. package/dist/base/internal/form-schema.d.ts +7 -0
  159. package/dist/base/internal/form-schema.js +26 -0
  160. package/dist/base/internal/form-schema.js.map +1 -0
  161. package/dist/base/internal/layouts.d.ts +39 -0
  162. package/dist/base/internal/layouts.js +3 -0
  163. package/dist/base/internal/layouts.js.map +1 -0
  164. package/dist/base/internal/query-response.d.ts +24 -0
  165. package/dist/base/internal/query-response.js +47 -0
  166. package/dist/base/internal/query-response.js.map +1 -0
  167. package/dist/base/internal/searchable.d.ts +6 -0
  168. package/dist/base/internal/searchable.js +15 -0
  169. package/dist/base/internal/searchable.js.map +1 -0
  170. package/dist/base/key-value-list.d.ts +160 -0
  171. package/dist/base/key-value-list.js +107 -0
  172. package/dist/base/key-value-list.js.map +1 -0
  173. package/dist/base/kpi-card.d.ts +12 -4
  174. package/dist/base/kpi-card.js +7 -0
  175. package/dist/base/kpi-card.js.map +1 -1
  176. package/dist/base/layouts.d.ts +35 -0
  177. package/dist/base/layouts.js +41 -7
  178. package/dist/base/layouts.js.map +1 -1
  179. package/dist/base/meter.d.ts +186 -0
  180. package/dist/base/meter.js +134 -0
  181. package/dist/base/meter.js.map +1 -0
  182. package/dist/base/nav-card-grid.d.ts +173 -0
  183. package/dist/base/nav-card-grid.js +89 -0
  184. package/dist/base/nav-card-grid.js.map +1 -0
  185. package/dist/base/period-selector.d.ts +20 -0
  186. package/dist/base/period-selector.js +23 -0
  187. package/dist/base/period-selector.js.map +1 -1
  188. package/dist/base/placeholder.d.ts +26 -0
  189. package/dist/base/placeholder.js +12 -0
  190. package/dist/base/placeholder.js.map +1 -1
  191. package/dist/base/query-response.d.ts +51 -1
  192. package/dist/base/query-response.js +43 -26
  193. package/dist/base/query-response.js.map +1 -1
  194. package/dist/base/resource-form-schema.d.ts +18 -0
  195. package/dist/base/resource-form-schema.js +20 -3
  196. package/dist/base/resource-form-schema.js.map +1 -1
  197. package/dist/base/searchable.d.ts +2 -0
  198. package/dist/base/searchable.js +4 -0
  199. package/dist/base/searchable.js.map +1 -1
  200. package/dist/base/section.d.ts +105 -0
  201. package/dist/base/section.js +123 -0
  202. package/dist/base/section.js.map +1 -0
  203. package/dist/base/stack.d.ts +113 -0
  204. package/dist/base/stack.js +58 -0
  205. package/dist/base/stack.js.map +1 -1
  206. package/dist/base/stat-group.d.ts +152 -0
  207. package/dist/base/stat-group.js +97 -0
  208. package/dist/base/stat-group.js.map +1 -0
  209. package/dist/base/tab.d.ts +25 -8
  210. package/dist/base/tab.js +11 -0
  211. package/dist/base/tab.js.map +1 -1
  212. package/dist/base/table-view/column-display.d.ts +195 -0
  213. package/dist/base/table-view/column-display.js +131 -0
  214. package/dist/base/table-view/column-display.js.map +1 -0
  215. package/dist/base/table-view/data-functions.d.ts +36 -14
  216. package/dist/base/table-view/data-functions.js +26 -1
  217. package/dist/base/table-view/data-functions.js.map +1 -1
  218. package/dist/base/table-view/factory-helpers.d.ts +0 -42
  219. package/dist/base/table-view/factory-helpers.js +1 -244
  220. package/dist/base/table-view/factory-helpers.js.map +1 -1
  221. package/dist/base/table-view/factory.d.ts +5 -1
  222. package/dist/base/table-view/factory.js +158 -202
  223. package/dist/base/table-view/factory.js.map +1 -1
  224. package/dist/base/table-view/internal/auth.d.ts +33 -0
  225. package/dist/base/table-view/{auth.js → internal/auth.js} +45 -6
  226. package/dist/base/table-view/internal/auth.js.map +1 -0
  227. package/dist/base/table-view/internal/column-display.d.ts +18 -0
  228. package/dist/base/table-view/internal/column-display.js +37 -0
  229. package/dist/base/table-view/internal/column-display.js.map +1 -0
  230. package/dist/base/table-view/internal/data-functions.d.ts +14 -0
  231. package/dist/base/table-view/internal/data-functions.js +3 -0
  232. package/dist/base/table-view/internal/data-functions.js.map +1 -0
  233. package/dist/base/table-view/internal/factory-helpers.d.ts +213 -0
  234. package/dist/base/table-view/internal/factory-helpers.js +477 -0
  235. package/dist/base/table-view/internal/factory-helpers.js.map +1 -0
  236. package/dist/base/table-view/{files.d.ts → internal/files.d.ts} +5 -0
  237. package/dist/base/table-view/{files.js → internal/files.js} +14 -4
  238. package/dist/base/table-view/internal/files.js.map +1 -0
  239. package/dist/base/table-view/internal/footer.d.ts +33 -0
  240. package/dist/base/table-view/internal/footer.js +112 -0
  241. package/dist/base/table-view/internal/footer.js.map +1 -0
  242. package/dist/base/table-view/{guards.d.ts → internal/guards.d.ts} +3 -0
  243. package/dist/base/table-view/internal/guards.js +134 -0
  244. package/dist/base/table-view/internal/guards.js.map +1 -0
  245. package/dist/base/table-view/internal/meta.d.ts +5 -0
  246. package/dist/base/table-view/internal/meta.js +13 -0
  247. package/dist/base/table-view/internal/meta.js.map +1 -0
  248. package/dist/base/table-view/internal/nav-badges.d.ts +9 -0
  249. package/dist/base/table-view/internal/nav-badges.js +79 -0
  250. package/dist/base/table-view/internal/nav-badges.js.map +1 -0
  251. package/dist/base/table-view/internal/options.d.ts +6 -0
  252. package/dist/base/table-view/internal/options.js +10 -0
  253. package/dist/base/table-view/internal/options.js.map +1 -0
  254. package/dist/base/table-view/internal/realtime-listeners.d.ts +4 -0
  255. package/dist/base/table-view/internal/realtime-listeners.js +7 -0
  256. package/dist/base/table-view/internal/realtime-listeners.js.map +1 -0
  257. package/dist/base/table-view/internal/realtime.d.ts +39 -0
  258. package/dist/base/table-view/internal/realtime.js +163 -0
  259. package/dist/base/table-view/internal/realtime.js.map +1 -0
  260. package/dist/base/table-view/internal/request-filter.d.ts +75 -0
  261. package/dist/base/table-view/internal/request-filter.js +154 -0
  262. package/dist/base/table-view/internal/request-filter.js.map +1 -0
  263. package/dist/base/table-view/internal/resource-form.d.ts +25 -0
  264. package/dist/base/table-view/internal/resource-form.js +91 -0
  265. package/dist/base/table-view/internal/resource-form.js.map +1 -0
  266. package/dist/base/table-view/{row-rules.d.ts → internal/row-rules.d.ts} +5 -2
  267. package/dist/base/table-view/{row-rules.js → internal/row-rules.js} +20 -19
  268. package/dist/base/table-view/internal/row-rules.js.map +1 -0
  269. package/dist/base/table-view/internal/tabs.d.ts +39 -0
  270. package/dist/base/table-view/internal/tabs.js +116 -0
  271. package/dist/base/table-view/internal/tabs.js.map +1 -0
  272. package/dist/base/table-view/internal/validation.d.ts +99 -0
  273. package/dist/base/table-view/internal/validation.js +297 -0
  274. package/dist/base/table-view/internal/validation.js.map +1 -0
  275. package/dist/base/table-view/internal/views.d.ts +14 -0
  276. package/dist/base/table-view/internal/views.js +42 -0
  277. package/dist/base/table-view/internal/views.js.map +1 -0
  278. package/dist/base/table-view/internal/writer.d.ts +39 -0
  279. package/dist/base/table-view/internal/writer.js +55 -0
  280. package/dist/base/table-view/internal/writer.js.map +1 -0
  281. package/dist/base/table-view/meta.d.ts +77 -4
  282. package/dist/base/table-view/meta.js +133 -13
  283. package/dist/base/table-view/meta.js.map +1 -1
  284. package/dist/base/table-view/options.d.ts +749 -28
  285. package/dist/base/table-view/options.js +9 -2
  286. package/dist/base/table-view/options.js.map +1 -1
  287. package/dist/base/table-view/realtime.d.ts +26 -17
  288. package/dist/base/table-view/realtime.js +29 -126
  289. package/dist/base/table-view/realtime.js.map +1 -1
  290. package/dist/base/table-view/resource-form.d.ts +11 -5
  291. package/dist/base/table-view/resource-form.js +15 -59
  292. package/dist/base/table-view/resource-form.js.map +1 -1
  293. package/dist/base/table-view/routes.d.ts +29 -0
  294. package/dist/base/table-view/routes.js +71 -6
  295. package/dist/base/table-view/routes.js.map +1 -1
  296. package/dist/base/table-view/schema.d.ts +483 -69
  297. package/dist/base/table-view/schema.js +163 -18
  298. package/dist/base/table-view/schema.js.map +1 -1
  299. package/dist/base/table-view/source.d.ts +62 -0
  300. package/dist/base/table-view/source.js +161 -0
  301. package/dist/base/table-view/source.js.map +1 -0
  302. package/dist/base/table-view/views.d.ts +20 -0
  303. package/dist/base/table-view/views.js +38 -0
  304. package/dist/base/table-view/views.js.map +1 -0
  305. package/dist/base/table-view/writer.d.ts +7 -0
  306. package/dist/base/table-view/writer.js +17 -0
  307. package/dist/base/table-view/writer.js.map +1 -0
  308. package/dist/base/table-view.d.ts +34 -6
  309. package/dist/base/table-view.js +42 -6
  310. package/dist/base/table-view.js.map +1 -1
  311. package/dist/base/tenant-export-archive.d.ts +21 -0
  312. package/dist/base/tenant-export-archive.js +11 -0
  313. package/dist/base/tenant-export-archive.js.map +1 -1
  314. package/dist/base/top-list-card.d.ts +35 -12
  315. package/dist/base/top-list-card.js +24 -0
  316. package/dist/base/top-list-card.js.map +1 -1
  317. package/dist/base/types/action-target.d.ts +36 -20
  318. package/dist/base/types/component-input.d.ts +3 -0
  319. package/dist/base/types/confirm-dialog.d.ts +69 -0
  320. package/dist/base/types/confirm-dialog.js +3 -0
  321. package/dist/base/types/confirm-dialog.js.map +1 -0
  322. package/dist/base/types/custom-button.d.ts +48 -2
  323. package/dist/base/types/enum-option.d.ts +9 -0
  324. package/dist/base/types/error.d.ts +9 -0
  325. package/dist/base/types/error.js +7 -1
  326. package/dist/base/types/error.js.map +1 -1
  327. package/dist/base/types/export-status.d.ts +3 -0
  328. package/dist/base/types/export-status.js +3 -0
  329. package/dist/base/types/export-status.js.map +1 -1
  330. package/dist/base/types/field-config.d.ts +3 -0
  331. package/dist/base/types/form-mode.d.ts +3 -0
  332. package/dist/base/types/form-mode.js +3 -0
  333. package/dist/base/types/form-mode.js.map +1 -1
  334. package/dist/base/types/form-values.d.ts +6 -0
  335. package/dist/base/types/guards.d.ts +37 -7
  336. package/dist/base/types/index.d.ts +2 -0
  337. package/dist/base/types/index.js +2 -0
  338. package/dist/base/types/index.js.map +1 -1
  339. package/dist/base/types/internal/action-target.d.ts +8 -0
  340. package/dist/base/types/internal/action-target.js +16 -0
  341. package/dist/base/types/internal/action-target.js.map +1 -0
  342. package/dist/base/types/json.d.ts +6 -0
  343. package/dist/base/types/orientation.d.ts +3 -0
  344. package/dist/base/types/orientation.js +3 -0
  345. package/dist/base/types/orientation.js.map +1 -1
  346. package/dist/base/types/readonly-behavior.d.ts +9 -0
  347. package/dist/base/types/readonly-behavior.js +3 -0
  348. package/dist/base/types/readonly-behavior.js.map +1 -1
  349. package/dist/base/types/row-action.d.ts +111 -0
  350. package/dist/base/types/size.d.ts +1 -0
  351. package/dist/base/types/size.js +4 -0
  352. package/dist/base/types/size.js.map +1 -1
  353. package/dist/base/types/tone.d.ts +14 -0
  354. package/dist/base/types/tone.js +24 -0
  355. package/dist/base/types/tone.js.map +1 -0
  356. package/dist/client-base-url.d.ts +8 -0
  357. package/dist/client-base-url.js +8 -0
  358. package/dist/client-base-url.js.map +1 -1
  359. package/dist/component-slots.d.ts +17 -2
  360. package/dist/component-slots.js +18 -66
  361. package/dist/component-slots.js.map +1 -1
  362. package/dist/component.d.ts +113 -0
  363. package/dist/component.js +84 -1
  364. package/dist/component.js.map +1 -1
  365. package/dist/data-controllers/members.d.ts +16 -1
  366. package/dist/data-controllers/members.js +87 -26
  367. package/dist/data-controllers/members.js.map +1 -1
  368. package/dist/data-controllers/roles.d.ts +1 -0
  369. package/dist/data-controllers/roles.js +3 -3
  370. package/dist/data-controllers/roles.js.map +1 -1
  371. package/dist/db/{models → internal}/exportJobs.model.d.ts +2 -0
  372. package/dist/db/{models → internal}/exportJobs.model.js +4 -1
  373. package/dist/db/internal/exportJobs.model.js.map +1 -0
  374. package/dist/db/internal/inviteResolutions.model.d.ts +34 -0
  375. package/dist/db/internal/inviteResolutions.model.js +80 -0
  376. package/dist/db/internal/inviteResolutions.model.js.map +1 -0
  377. package/dist/db/internal/table-names.d.ts +4 -0
  378. package/dist/db/internal/table-names.js +8 -0
  379. package/dist/db/internal/table-names.js.map +1 -0
  380. package/dist/db/{models → internal}/tenantLifecycle.model.d.ts +10 -1
  381. package/dist/db/{models → internal}/tenantLifecycle.model.js +10 -1
  382. package/dist/db/internal/tenantLifecycle.model.js.map +1 -0
  383. package/dist/db/{tables → internal}/tenantLifecycle.table.d.ts +6 -0
  384. package/dist/db/{tables → internal}/tenantLifecycle.table.js +6 -0
  385. package/dist/db/internal/tenantLifecycle.table.js.map +1 -0
  386. package/dist/db/models/index.d.ts +0 -2
  387. package/dist/db/models/index.js +0 -2
  388. package/dist/db/models/index.js.map +1 -1
  389. package/dist/db/models/inviteResolutions.model.d.ts +1 -25
  390. package/dist/db/models/inviteResolutions.model.js +0 -68
  391. package/dist/db/models/inviteResolutions.model.js.map +1 -1
  392. package/dist/db/models/roles.model.d.ts +6 -0
  393. package/dist/db/models/roles.model.js +6 -0
  394. package/dist/db/models/roles.model.js.map +1 -1
  395. package/dist/db/models/tenantMembers.model.js +1 -1
  396. package/dist/db/models/tenantMembers.model.js.map +1 -1
  397. package/dist/db/models/user_invites.model.d.ts +24 -0
  398. package/dist/db/models/user_invites.model.js +25 -1
  399. package/dist/db/models/user_invites.model.js.map +1 -1
  400. package/dist/db/tables/exportJobs.table.d.ts +5 -1
  401. package/dist/db/tables/exportJobs.table.js +3 -3
  402. package/dist/db/tables/exportJobs.table.js.map +1 -1
  403. package/dist/db/tables/index.d.ts +0 -1
  404. package/dist/db/tables/index.js +0 -1
  405. package/dist/db/tables/index.js.map +1 -1
  406. package/dist/db/tables/inviteResolutions.table.d.ts +1 -1
  407. package/dist/db/tables/inviteResolutions.table.js +4 -3
  408. package/dist/db/tables/inviteResolutions.table.js.map +1 -1
  409. package/dist/db/tables/roles.table.d.ts +2 -0
  410. package/dist/db/tables/roles.table.js +4 -0
  411. package/dist/db/tables/roles.table.js.map +1 -1
  412. package/dist/db/tables/tenantMembers.table.d.ts +1 -0
  413. package/dist/db/tables/user_invites.table.d.ts +11 -0
  414. package/dist/db/tables/user_invites.table.js +4 -0
  415. package/dist/db/tables/user_invites.table.js.map +1 -1
  416. package/dist/guards.d.ts +36 -0
  417. package/dist/guards.js +30 -1
  418. package/dist/guards.js.map +1 -1
  419. package/dist/hooks.d.ts +133 -1
  420. package/dist/hooks.js +87 -1
  421. package/dist/hooks.js.map +1 -1
  422. package/dist/html-render/index.d.ts +15 -0
  423. package/dist/html-render/index.js +15 -0
  424. package/dist/html-render/index.js.map +1 -1
  425. package/dist/html-render/types.d.ts +4 -0
  426. package/dist/index.d.ts +6 -7
  427. package/dist/index.js +12 -17
  428. package/dist/index.js.map +1 -1
  429. package/dist/internal/attachments.d.ts +16 -0
  430. package/dist/internal/attachments.js +3 -0
  431. package/dist/internal/attachments.js.map +1 -0
  432. package/dist/internal/component-slots.d.ts +27 -0
  433. package/dist/internal/component-slots.js +97 -0
  434. package/dist/internal/component-slots.js.map +1 -0
  435. package/dist/internal/invite-membership.d.ts +8 -0
  436. package/dist/{invite-membership.js → internal/invite-membership.js} +11 -5
  437. package/dist/internal/invite-membership.js.map +1 -0
  438. package/dist/internal/invite-replacement.d.ts +7 -0
  439. package/dist/{invite-replacement.js → internal/invite-replacement.js} +8 -3
  440. package/dist/internal/invite-replacement.js.map +1 -0
  441. package/dist/internal/invite-resolution.d.ts +3 -0
  442. package/dist/internal/invite-resolution.js +50 -0
  443. package/dist/internal/invite-resolution.js.map +1 -0
  444. package/dist/internal/invites.d.ts +31 -0
  445. package/dist/internal/invites.js +44 -0
  446. package/dist/internal/invites.js.map +1 -0
  447. package/dist/internal/permission-gate.d.ts +23 -0
  448. package/dist/internal/permission-gate.js +43 -0
  449. package/dist/internal/permission-gate.js.map +1 -0
  450. package/dist/internal/tenant-access.d.ts +28 -0
  451. package/dist/internal/tenant-access.js +28 -0
  452. package/dist/internal/tenant-access.js.map +1 -0
  453. package/dist/internal/tenant-ownership.d.ts +13 -0
  454. package/dist/internal/tenant-ownership.js +95 -0
  455. package/dist/internal/tenant-ownership.js.map +1 -0
  456. package/dist/internal/uploads.d.ts +19 -0
  457. package/dist/internal/uploads.js +3 -0
  458. package/dist/internal/uploads.js.map +1 -0
  459. package/dist/invite-extensions/availability.d.ts +28 -3
  460. package/dist/invite-extensions/availability.js +26 -23
  461. package/dist/invite-extensions/availability.js.map +1 -1
  462. package/dist/invite-extensions/internal/availability.d.ts +12 -0
  463. package/dist/invite-extensions/internal/availability.js +32 -0
  464. package/dist/invite-extensions/internal/availability.js.map +1 -0
  465. package/dist/invite-extensions/internal/delivery.d.ts +44 -0
  466. package/dist/invite-extensions/{delivery.js → internal/delivery.js} +38 -0
  467. package/dist/invite-extensions/internal/delivery.js.map +1 -0
  468. package/dist/invite-extensions/internal/edit.d.ts +34 -0
  469. package/dist/invite-extensions/{edit.js → internal/edit.js} +33 -0
  470. package/dist/invite-extensions/internal/edit.js.map +1 -0
  471. package/dist/invite-extensions/internal/field-ids.d.ts +21 -0
  472. package/dist/invite-extensions/{field-ids.js → internal/field-ids.js} +13 -0
  473. package/dist/invite-extensions/internal/field-ids.js.map +1 -0
  474. package/dist/invite-extensions/internal/form-slot.d.ts +13 -0
  475. package/dist/invite-extensions/{form-slot.js → internal/form-slot.js} +49 -4
  476. package/dist/invite-extensions/internal/form-slot.js.map +1 -0
  477. package/dist/invite-extensions/internal/payload-slices.d.ts +31 -0
  478. package/dist/invite-extensions/{payload-slices.js → internal/payload-slices.js} +30 -0
  479. package/dist/invite-extensions/internal/payload-slices.js.map +1 -0
  480. package/dist/invite-extensions/internal/registry.d.ts +48 -0
  481. package/dist/invite-extensions/internal/registry.js +77 -0
  482. package/dist/invite-extensions/internal/registry.js.map +1 -0
  483. package/dist/invite-extensions/internal/types.d.ts +61 -0
  484. package/dist/invite-extensions/internal/types.js +3 -0
  485. package/dist/invite-extensions/internal/types.js.map +1 -0
  486. package/dist/invite-extensions/registry.d.ts +44 -12
  487. package/dist/invite-extensions/registry.js +51 -43
  488. package/dist/invite-extensions/registry.js.map +1 -1
  489. package/dist/invite-extensions/types.d.ts +59 -34
  490. package/dist/invite-extensions.d.ts +30 -4
  491. package/dist/invite-extensions.js +57 -7
  492. package/dist/invite-extensions.js.map +1 -1
  493. package/dist/invite-resolution.d.ts +5 -2
  494. package/dist/invite-resolution.js +16 -46
  495. package/dist/invite-resolution.js.map +1 -1
  496. package/dist/invitee-display-name.d.ts +5 -0
  497. package/dist/invitee-display-name.js +15 -0
  498. package/dist/invitee-display-name.js.map +1 -0
  499. package/dist/invites.d.ts +46 -14
  500. package/dist/invites.js +41 -44
  501. package/dist/invites.js.map +1 -1
  502. package/dist/layout-banners.d.ts +68 -0
  503. package/dist/layout-banners.js +18 -0
  504. package/dist/layout-banners.js.map +1 -1
  505. package/dist/notifications/builder.d.ts +3 -1
  506. package/dist/notifications/builder.js +10 -0
  507. package/dist/notifications/builder.js.map +1 -1
  508. package/dist/notifications/index.d.ts +1 -0
  509. package/dist/notifications/index.js +16 -0
  510. package/dist/notifications/index.js.map +1 -1
  511. package/dist/notifications/internal.d.ts +8 -5
  512. package/dist/notifications/internal.js +6 -0
  513. package/dist/notifications/internal.js.map +1 -1
  514. package/dist/notifications/sendable.d.ts +6 -0
  515. package/dist/notifications/sendable.js +13 -4
  516. package/dist/notifications/sendable.js.map +1 -1
  517. package/dist/notifications/types.d.ts +26 -1
  518. package/dist/page/categories.d.ts +19 -17
  519. package/dist/page/categories.js +24 -168
  520. package/dist/page/categories.js.map +1 -1
  521. package/dist/page/component-tree.d.ts +15 -1
  522. package/dist/page/component-tree.js +0 -40
  523. package/dist/page/component-tree.js.map +1 -1
  524. package/dist/page/controllers.d.ts +135 -0
  525. package/dist/page/controllers.js +124 -8
  526. package/dist/page/controllers.js.map +1 -1
  527. package/dist/page/declaration-conflict.d.ts +9 -0
  528. package/dist/page/declaration-conflict.js +17 -0
  529. package/dist/page/declaration-conflict.js.map +1 -0
  530. package/dist/page/form-page-routes.d.ts +7 -10
  531. package/dist/page/form-page-routes.js +14 -31
  532. package/dist/page/form-page-routes.js.map +1 -1
  533. package/dist/page/internal/categories.d.ts +62 -0
  534. package/dist/page/internal/categories.js +260 -0
  535. package/dist/page/internal/categories.js.map +1 -0
  536. package/dist/page/internal/component-target.d.ts +37 -0
  537. package/dist/page/{component-target.js → internal/component-target.js} +27 -2
  538. package/dist/page/internal/component-target.js.map +1 -0
  539. package/dist/page/internal/component-tree.d.ts +13 -0
  540. package/dist/page/internal/component-tree.js +61 -0
  541. package/dist/page/internal/component-tree.js.map +1 -0
  542. package/dist/page/{extension-assembly.d.ts → internal/extension-assembly.d.ts} +5 -2
  543. package/dist/page/{extension-assembly.js → internal/extension-assembly.js} +8 -0
  544. package/dist/page/internal/extension-assembly.js.map +1 -0
  545. package/dist/page/internal/extension-validation.d.ts +24 -0
  546. package/dist/page/{extension-validation.js → internal/extension-validation.js} +8 -0
  547. package/dist/page/internal/extension-validation.js.map +1 -0
  548. package/dist/page/internal/form-page-routes.d.ts +26 -0
  549. package/dist/page/internal/form-page-routes.js +40 -0
  550. package/dist/page/internal/form-page-routes.js.map +1 -0
  551. package/dist/page/internal/layout-filter.d.ts +21 -0
  552. package/dist/page/internal/layout-filter.js +101 -0
  553. package/dist/page/internal/layout-filter.js.map +1 -0
  554. package/dist/page/{metadata-helpers.d.ts → internal/metadata-helpers.d.ts} +4 -1
  555. package/dist/page/{metadata-helpers.js → internal/metadata-helpers.js} +19 -2
  556. package/dist/page/internal/metadata-helpers.js.map +1 -0
  557. package/dist/page/internal/nav-badges.d.ts +17 -0
  558. package/dist/page/internal/nav-badges.js +68 -0
  559. package/dist/page/internal/nav-badges.js.map +1 -0
  560. package/dist/page/internal/page-registration.d.ts +29 -0
  561. package/dist/page/internal/page-registration.js +41 -0
  562. package/dist/page/internal/page-registration.js.map +1 -0
  563. package/dist/page/internal/registry.d.ts +128 -0
  564. package/dist/page/internal/registry.js +225 -0
  565. package/dist/page/internal/registry.js.map +1 -0
  566. package/dist/page/internal/table-view-ids.d.ts +10 -0
  567. package/dist/page/internal/table-view-ids.js +39 -0
  568. package/dist/page/internal/table-view-ids.js.map +1 -0
  569. package/dist/page/internal/types.d.ts +2 -0
  570. package/dist/page/internal/types.js +6 -0
  571. package/dist/page/internal/types.js.map +1 -0
  572. package/dist/page/layout-filter.d.ts +4 -0
  573. package/dist/page/layout-filter.js +11 -0
  574. package/dist/page/layout-filter.js.map +1 -1
  575. package/dist/page/metadata.d.ts +93 -0
  576. package/dist/page/metadata.js +236 -28
  577. package/dist/page/metadata.js.map +1 -1
  578. package/dist/page/registry.d.ts +17 -36
  579. package/dist/page/registry.js +25 -127
  580. package/dist/page/registry.js.map +1 -1
  581. package/dist/page/roots.d.ts +10 -0
  582. package/dist/page/roots.js +27 -6
  583. package/dist/page/roots.js.map +1 -1
  584. package/dist/page/types.d.ts +186 -1
  585. package/dist/page/types.js +1 -2
  586. package/dist/page/types.js.map +1 -1
  587. package/dist/page.d.ts +23 -1
  588. package/dist/page.js +24 -2
  589. package/dist/page.js.map +1 -1
  590. package/dist/permission-gate.d.ts +14 -0
  591. package/dist/permission-gate.js +3 -0
  592. package/dist/permission-gate.js.map +1 -0
  593. package/dist/permissions-resolver.d.ts +24 -0
  594. package/dist/permissions-resolver.js +24 -0
  595. package/dist/permissions-resolver.js.map +1 -1
  596. package/dist/permissions.d.ts +27 -0
  597. package/dist/permissions.js +37 -0
  598. package/dist/permissions.js.map +1 -1
  599. package/dist/quick-actions.d.ts +27 -0
  600. package/dist/quick-actions.js +1 -0
  601. package/dist/quick-actions.js.map +1 -1
  602. package/dist/realtime.d.ts +29 -0
  603. package/dist/realtime.js +30 -0
  604. package/dist/realtime.js.map +1 -1
  605. package/dist/request-tenant.d.ts +17 -0
  606. package/dist/request-tenant.js +18 -1
  607. package/dist/request-tenant.js.map +1 -1
  608. package/dist/tenant-access.d.ts +38 -6
  609. package/dist/tenant-access.js +38 -8
  610. package/dist/tenant-access.js.map +1 -1
  611. package/dist/tenant-export.d.ts +19 -0
  612. package/dist/tenant-lifecycle.d.ts +13 -0
  613. package/dist/tenant-lifecycle.js +22 -1
  614. package/dist/tenant-lifecycle.js.map +1 -1
  615. package/dist/tenant-ownership.d.ts +2 -1
  616. package/dist/tenant-ownership.js +5 -85
  617. package/dist/tenant-ownership.js.map +1 -1
  618. package/dist/tenant-scoped-model.d.ts +8 -0
  619. package/dist/tenant-scoped-model.js +8 -0
  620. package/dist/tenant-scoped-model.js.map +1 -1
  621. package/dist/uploads.d.ts +24 -16
  622. package/dist/uploads.js +24 -0
  623. package/dist/uploads.js.map +1 -1
  624. package/dist/utils/fire-and-forget.d.ts +4 -0
  625. package/dist/utils/fire-and-forget.js +4 -0
  626. package/dist/utils/fire-and-forget.js.map +1 -1
  627. package/dist/utils/internal/owned-registry.d.ts +36 -0
  628. package/dist/utils/internal/owned-registry.js +60 -0
  629. package/dist/utils/internal/owned-registry.js.map +1 -0
  630. package/dist/utils/{row-instance.d.ts → internal/row-instance.d.ts} +1 -0
  631. package/dist/utils/internal/row-instance.js +12 -0
  632. package/dist/utils/internal/row-instance.js.map +1 -0
  633. package/dist/utils/internal/saas-mode.d.ts +8 -0
  634. package/dist/utils/internal/saas-mode.js +3 -0
  635. package/dist/utils/internal/saas-mode.js.map +1 -0
  636. package/dist/utils/{time.d.ts → internal/time.d.ts} +4 -0
  637. package/dist/utils/{time.js → internal/time.js} +4 -0
  638. package/dist/utils/internal/time.js.map +1 -0
  639. package/dist/utils/{type-check.d.ts → internal/type-check.d.ts} +12 -0
  640. package/dist/utils/{type-check.js → internal/type-check.js} +12 -0
  641. package/dist/utils/internal/type-check.js.map +1 -0
  642. package/dist/utils/internal/value-parser.d.ts +86 -0
  643. package/dist/utils/internal/value-parser.js +160 -0
  644. package/dist/utils/internal/value-parser.js.map +1 -0
  645. package/dist/utils/saas-mode.d.ts +25 -3
  646. package/dist/utils/saas-mode.js +24 -0
  647. package/dist/utils/saas-mode.js.map +1 -1
  648. package/package.json +3 -3
  649. package/dist/base/block-registry/describe.d.ts +0 -6
  650. package/dist/base/block-registry/describe.js.map +0 -1
  651. package/dist/base/block-registry/ui.d.ts +0 -5
  652. package/dist/base/block-registry/ui.js +0 -17
  653. package/dist/base/block-registry/ui.js.map +0 -1
  654. package/dist/base/table-view/auth.d.ts +0 -9
  655. package/dist/base/table-view/auth.js.map +0 -1
  656. package/dist/base/table-view/files.js.map +0 -1
  657. package/dist/base/table-view/guards.js +0 -85
  658. package/dist/base/table-view/guards.js.map +0 -1
  659. package/dist/base/table-view/row-rules.js.map +0 -1
  660. package/dist/base/tree.d.ts +0 -115
  661. package/dist/base/tree.js +0 -145
  662. package/dist/base/tree.js.map +0 -1
  663. package/dist/db/models/exportJobs.model.js.map +0 -1
  664. package/dist/db/models/tenantLifecycle.model.js.map +0 -1
  665. package/dist/db/tables/tenantLifecycle.table.js.map +0 -1
  666. package/dist/invite-extensions/delivery.d.ts +0 -5
  667. package/dist/invite-extensions/delivery.js.map +0 -1
  668. package/dist/invite-extensions/edit.d.ts +0 -4
  669. package/dist/invite-extensions/edit.js.map +0 -1
  670. package/dist/invite-extensions/field-ids.d.ts +0 -7
  671. package/dist/invite-extensions/field-ids.js.map +0 -1
  672. package/dist/invite-extensions/form-slot.d.ts +0 -2
  673. package/dist/invite-extensions/form-slot.js.map +0 -1
  674. package/dist/invite-extensions/internal.d.ts +0 -17
  675. package/dist/invite-extensions/internal.js +0 -55
  676. package/dist/invite-extensions/internal.js.map +0 -1
  677. package/dist/invite-extensions/payload-slices.d.ts +0 -8
  678. package/dist/invite-extensions/payload-slices.js.map +0 -1
  679. package/dist/invite-membership.d.ts +0 -3
  680. package/dist/invite-membership.js.map +0 -1
  681. package/dist/invite-replacement.d.ts +0 -2
  682. package/dist/invite-replacement.js.map +0 -1
  683. package/dist/page/component-target.d.ts +0 -10
  684. package/dist/page/component-target.js.map +0 -1
  685. package/dist/page/extension-assembly.js.map +0 -1
  686. package/dist/page/extension-validation.d.ts +0 -7
  687. package/dist/page/extension-validation.js.map +0 -1
  688. package/dist/page/metadata-helpers.js.map +0 -1
  689. package/dist/page/page-registration.d.ts +0 -13
  690. package/dist/page/page-registration.js +0 -22
  691. package/dist/page/page-registration.js.map +0 -1
  692. package/dist/utils/owned-registry.d.ts +0 -10
  693. package/dist/utils/owned-registry.js +0 -34
  694. package/dist/utils/owned-registry.js.map +0 -1
  695. package/dist/utils/row-instance.js +0 -8
  696. package/dist/utils/row-instance.js.map +0 -1
  697. package/dist/utils/time.js.map +0 -1
  698. package/dist/utils/type-check.js.map +0 -1
  699. package/dist/utils/value-parser.d.ts +0 -11
  700. package/dist/utils/value-parser.js +0 -86
  701. package/dist/utils/value-parser.js.map +0 -1
package/dist/page.js CHANGED
@@ -14,7 +14,28 @@ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
14
  for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
15
  };
16
16
  Object.defineProperty(exports, "__esModule", { value: true });
17
- exports.GetRegisteredPageIds = exports.GetPermissionId = exports.GetPendingPageExtensions = exports.GetPageLayoutBySlug = exports.GetComponentPermissionIds = exports.ClearPageLayoutBySlug = exports.PageMetadata = exports.FormPageRouteConflictError = exports.RootPageController = exports.RootCategory = exports.RegisterPageExtension = exports.RegisterPage = exports.RegisterDynamicMenuProvider = exports.PageController = exports.NotifyMenuChanged = exports.GetFrontendModules = exports.Category = exports.AddFrontendModule = exports.isInsideModule = exports.internal = void 0;
17
+ exports.GetRegisteredPageIds = exports.GetPermissionId = exports.GetPageLayoutBySlug = exports.GetComponentPermissionIds = exports.ClearPageLayoutBySlug = exports.PageMetadata = exports.FormPageRouteConflictError = exports.PageDeclarationConflictError = exports.RootPageController = exports.RootCategory = exports.RegisterPageExtension = exports.RegisterPage = exports.RegisterDynamicMenuProvider = exports.PageController = exports.NotifyMenuChanged = exports.GetFrontendModules = exports.Category = exports.AddFrontendModule = exports.isInsideModule = exports.internal = void 0;
18
+ /**
19
+ * Public entry of the page system, split by concern under `./page/`:
20
+ *
21
+ * - `types` — the shared vocabulary (menu options, page/category infos,
22
+ * dynamic menu and extension contracts)
23
+ * - `registry` — the page layout and permission id lookups
24
+ * - `layout-filter` — permission filtering of a serialized layout
25
+ * - `categories` — the `internal` registration proxies and the module
26
+ * membership check
27
+ * - `metadata` — `PageMetadata`, the registration/teardown lifecycle of one
28
+ * page
29
+ * - `controllers` — the consumer-facing decorators and constructors
30
+ * - `roots` — the built-in root categories and module registration
31
+ *
32
+ * The plumbing behind them lives under `./page/internal/` and is not
33
+ * re-exported here: the module-wide registries every piece writes to
34
+ * (`registry`), category resolution and creation (`categories`), the
35
+ * deterministic ordering and grafting of page extensions into a layout
36
+ * (`extension-assembly`), extension validation, component targets and trees,
37
+ * form page route claims and the registration identities.
38
+ */
18
39
  var categories_1 = require("./page/categories");
19
40
  Object.defineProperty(exports, "internal", { enumerable: true, get: function () { return categories_1.internal; } });
20
41
  Object.defineProperty(exports, "isInsideModule", { enumerable: true, get: function () { return categories_1.isInsideModule; } });
@@ -29,6 +50,8 @@ Object.defineProperty(exports, "RegisterPage", { enumerable: true, get: function
29
50
  Object.defineProperty(exports, "RegisterPageExtension", { enumerable: true, get: function () { return controllers_1.RegisterPageExtension; } });
30
51
  Object.defineProperty(exports, "RootCategory", { enumerable: true, get: function () { return controllers_1.RootCategory; } });
31
52
  Object.defineProperty(exports, "RootPageController", { enumerable: true, get: function () { return controllers_1.RootPageController; } });
53
+ var declaration_conflict_1 = require("./page/declaration-conflict");
54
+ Object.defineProperty(exports, "PageDeclarationConflictError", { enumerable: true, get: function () { return declaration_conflict_1.PageDeclarationConflictError; } });
32
55
  var form_page_routes_1 = require("./page/form-page-routes");
33
56
  Object.defineProperty(exports, "FormPageRouteConflictError", { enumerable: true, get: function () { return form_page_routes_1.FormPageRouteConflictError; } });
34
57
  var metadata_1 = require("./page/metadata");
@@ -37,7 +60,6 @@ var registry_1 = require("./page/registry");
37
60
  Object.defineProperty(exports, "ClearPageLayoutBySlug", { enumerable: true, get: function () { return registry_1.ClearPageLayoutBySlug; } });
38
61
  Object.defineProperty(exports, "GetComponentPermissionIds", { enumerable: true, get: function () { return registry_1.GetComponentPermissionIds; } });
39
62
  Object.defineProperty(exports, "GetPageLayoutBySlug", { enumerable: true, get: function () { return registry_1.GetPageLayoutBySlug; } });
40
- Object.defineProperty(exports, "GetPendingPageExtensions", { enumerable: true, get: function () { return registry_1.GetPendingPageExtensions; } });
41
63
  Object.defineProperty(exports, "GetPermissionId", { enumerable: true, get: function () { return registry_1.GetPermissionId; } });
42
64
  Object.defineProperty(exports, "GetRegisteredPageIds", { enumerable: true, get: function () { return registry_1.GetRegisteredPageIds; } });
43
65
  __exportStar(require("./page/roots"), exports);
package/dist/page.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"page.js","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAoBA,gDAA6D;AAApD,sGAAA,QAAQ,OAAA;AAAE,4GAAA,cAAc,OAAA;AACjC,kDAgB4B;AAf1B,gHAAA,iBAAiB,OAAA;AAEjB,uGAAA,QAAQ,OAAA;AAKR,iHAAA,kBAAkB,OAAA;AAClB,gHAAA,iBAAiB,OAAA;AACjB,6GAAA,cAAc,OAAA;AACd,0HAAA,2BAA2B,OAAA;AAC3B,2GAAA,YAAY,OAAA;AACZ,oHAAA,qBAAqB,OAAA;AACrB,2GAAA,YAAY,OAAA;AACZ,iHAAA,kBAAkB,OAAA;AAEpB,4DAAqE;AAA5D,8HAAA,0BAA0B,OAAA;AACnC,4CAA+C;AAAtC,wGAAA,YAAY,OAAA;AACrB,4CAQyB;AAPvB,iHAAA,qBAAqB,OAAA;AACrB,qHAAA,yBAAyB,OAAA;AACzB,+GAAA,mBAAmB,OAAA;AACnB,oHAAA,wBAAwB,OAAA;AACxB,2GAAA,eAAe,OAAA;AACf,gHAAA,oBAAoB,OAAA;AAGtB,+CAA6B;AAC7B,+CAA6B"}
1
+ {"version":3,"file":"page.js","sourceRoot":"","sources":["../src/page.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,gDAA6D;AAApD,sGAAA,QAAQ,OAAA;AAAE,4GAAA,cAAc,OAAA;AACjC,kDAgB4B;AAf1B,gHAAA,iBAAiB,OAAA;AAEjB,uGAAA,QAAQ,OAAA;AAKR,iHAAA,kBAAkB,OAAA;AAClB,gHAAA,iBAAiB,OAAA;AACjB,6GAAA,cAAc,OAAA;AACd,0HAAA,2BAA2B,OAAA;AAC3B,2GAAA,YAAY,OAAA;AACZ,oHAAA,qBAAqB,OAAA;AACrB,2GAAA,YAAY,OAAA;AACZ,iHAAA,kBAAkB,OAAA;AAEpB,oEAA2E;AAAlE,oIAAA,4BAA4B,OAAA;AACrC,4DAAqE;AAA5D,8HAAA,0BAA0B,OAAA;AACnC,4CAA+C;AAAtC,wGAAA,YAAY,OAAA;AACrB,4CAMyB;AALvB,iHAAA,qBAAqB,OAAA;AACrB,qHAAA,yBAAyB,OAAA;AACzB,+GAAA,mBAAmB,OAAA;AACnB,2GAAA,eAAe,OAAA;AACf,gHAAA,oBAAoB,OAAA;AAEtB,+CAA6B;AAC7B,+CAA6B"}
@@ -0,0 +1,14 @@
1
+ import type { ButtonPermission } from "./component";
2
+ /**
3
+ * Who may use a button, a row action, a tab, a view or a header button.
4
+ *
5
+ * `permission` names an action relative to the owner — the table view for its
6
+ * buttons, row actions, tabs and views, the page for a header button — like
7
+ * `"edit"`, or is an `Action` of any component. `permissionId` is an absolute
8
+ * permission id (`"pages.sales.invoices.export"`), for the rare gate that is
9
+ * neither. `permissionId` wins when both are set.
10
+ */
11
+ export interface PermissionGate {
12
+ permission?: ButtonPermission;
13
+ permissionId?: string;
14
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=permission-gate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-gate.js","sourceRoot":"","sources":["../src/permission-gate.ts"],"names":[],"mappings":""}
@@ -5,8 +5,32 @@ export interface PermissionsResolverInfo {
5
5
  resolver: PermissionsResolverFn;
6
6
  order: number;
7
7
  }
8
+ /** @internal */
8
9
  export declare namespace internal {
9
10
  const RegisterPermissionsResolver: RegisteringProxy<(info: PermissionsResolverInfo) => void>;
10
11
  }
12
+ /**
13
+ * Register a permissions resolver that transforms a user's base permission
14
+ * set into their effective permission set.
15
+ *
16
+ * Semantics:
17
+ * - Resolvers run in ascending `order`; resolvers with the same `order` run
18
+ * in registration order (i.e. module load order).
19
+ * - A resolver that throws aborts the permission computation and fails the
20
+ * request (fail-closed); it is never silently skipped.
21
+ * - The registration is automatically removed when the registering module is
22
+ * unloaded.
23
+ * - Call during your module's `construct()` so the resolver is active before
24
+ * the API starts serving requests.
25
+ *
26
+ * Resolvers are for granular permission shaping (e.g. intersecting with a
27
+ * subscription plan). To deny a tenant access to the product entirely, use
28
+ * `RegisterTenantAccessGate` from `dms/tenant-access` instead.
29
+ */
11
30
  export declare function RegisterPermissionsResolver(info: PermissionsResolverInfo): void;
31
+ /**
32
+ * Run the registered resolvers over a base permission set and return the
33
+ * effective set. Prefer `GetEffectiveUserPermissions` from `dms/permissions`,
34
+ * which composes the base set computation with this pipeline.
35
+ */
12
36
  export declare const ApplyPermissionsResolvers: (userId: string, tenantId: string, basePermissions: Set<string>) => Promise<Set<string>>;
@@ -3,12 +3,36 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ApplyPermissionsResolvers = exports.internal = void 0;
4
4
  exports.RegisterPermissionsResolver = RegisterPermissionsResolver;
5
5
  const interface_core_1 = require("@antelopejs/interface-core");
6
+ /** @internal */
6
7
  var internal;
7
8
  (function (internal) {
8
9
  internal.RegisterPermissionsResolver = new interface_core_1.RegisteringProxy();
9
10
  })(internal || (exports.internal = internal = {}));
11
+ /**
12
+ * Register a permissions resolver that transforms a user's base permission
13
+ * set into their effective permission set.
14
+ *
15
+ * Semantics:
16
+ * - Resolvers run in ascending `order`; resolvers with the same `order` run
17
+ * in registration order (i.e. module load order).
18
+ * - A resolver that throws aborts the permission computation and fails the
19
+ * request (fail-closed); it is never silently skipped.
20
+ * - The registration is automatically removed when the registering module is
21
+ * unloaded.
22
+ * - Call during your module's `construct()` so the resolver is active before
23
+ * the API starts serving requests.
24
+ *
25
+ * Resolvers are for granular permission shaping (e.g. intersecting with a
26
+ * subscription plan). To deny a tenant access to the product entirely, use
27
+ * `RegisterTenantAccessGate` from `dms/tenant-access` instead.
28
+ */
10
29
  function RegisterPermissionsResolver(info) {
11
30
  internal.RegisterPermissionsResolver.register(info);
12
31
  }
32
+ /**
33
+ * Run the registered resolvers over a base permission set and return the
34
+ * effective set. Prefer `GetEffectiveUserPermissions` from `dms/permissions`,
35
+ * which composes the base set computation with this pipeline.
36
+ */
13
37
  exports.ApplyPermissionsResolvers = (0, interface_core_1.InterfaceFunction)();
14
38
  //# sourceMappingURL=permissions-resolver.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"permissions-resolver.js","sourceRoot":"","sources":["../src/permissions-resolver.ts"],"names":[],"mappings":";;;AAyCA,kEAIC;AA7CD,+DAGoC;AAcpC,IAAiB,QAAQ,CAIxB;AAJD,WAAiB,QAAQ;IACV,oCAA2B,GAAG,IAAI,iCAAgB,EAE5D,CAAC;AACN,CAAC,EAJgB,QAAQ,wBAAR,QAAQ,QAIxB;AAoBD,SAAgB,2BAA2B,CACzC,IAA6B;IAE7B,QAAQ,CAAC,2BAA2B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAOY,QAAA,yBAAyB,GACpC,IAAA,kCAAiB,GAMd,CAAC"}
1
+ {"version":3,"file":"permissions-resolver.js","sourceRoot":"","sources":["../src/permissions-resolver.ts"],"names":[],"mappings":";;;AA0CA,kEAIC;AA9CD,+DAGoC;AAcpC,gBAAgB;AAChB,IAAiB,QAAQ,CAIxB;AAJD,WAAiB,QAAQ;IACV,oCAA2B,GAAG,IAAI,iCAAgB,EAE5D,CAAC;AACN,CAAC,EAJgB,QAAQ,wBAAR,QAAQ,QAIxB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,SAAgB,2BAA2B,CACzC,IAA6B;IAE7B,QAAQ,CAAC,2BAA2B,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACU,QAAA,yBAAyB,GACpC,IAAA,kCAAiB,GAMd,CAAC"}
@@ -12,22 +12,49 @@ export type PermissionTree = {
12
12
  data?: Permission;
13
13
  children: Record<string, PermissionTree>;
14
14
  };
15
+ /**
16
+ * @internal
17
+ */
15
18
  export declare namespace internal {
16
19
  const RegisterPermission: RegisteringProxy<(id: string, permission: Permission) => void>;
17
20
  }
18
21
  export declare const RegisterPermission: (id: string, permission: Permission) => void;
22
+ /**
23
+ * Drop a permission from the grantable tree. Used when a registration is undone
24
+ * while the process keeps running — a page extension whose module stopped.
25
+ */
19
26
  export declare const UnregisterPermission: (id: string) => void;
20
27
  export declare function MarkModuleScopedPermission(id: string): void;
21
28
  export declare function UnmarkModuleScopedPermission(id: string): void;
22
29
  export declare function IsModuleScopedPermission(id: string): boolean;
23
30
  export declare const GetPermission: (id: string) => Promise<Permission | undefined>;
24
31
  export declare const GetPermissions: () => Promise<Record<string, PermissionTree>>;
32
+ /**
33
+ * Compute the user's BASE permission set from role grants (or `*` for
34
+ * platform owners). This set does not account for registered permissions
35
+ * resolvers (e.g. plan gating): authorization surfaces must use
36
+ * {@link GetEffectiveUserPermissions} instead so that every surface (guards,
37
+ * menus, table views, search) agrees on the same effective set.
38
+ */
25
39
  export declare function GetUserPermissions(user: {
26
40
  owner?: boolean;
27
41
  }, roleIds: string[], roleModel: RoleModel): Promise<Set<string>>;
42
+ /**
43
+ * Compute the user's EFFECTIVE permission set: base permissions from roles,
44
+ * passed through every registered permissions resolver in ascending order.
45
+ * This is the single entry point for authorization surfaces — route guards,
46
+ * page/menu visibility, table-view action checks and search must all use it
47
+ * so the UI and the API agree on what the user can do.
48
+ *
49
+ * Depends on the `dms/permissions-resolver` interface being implemented
50
+ * (`ApplyPermissionsResolvers`): the dms module wires it in `construct()`.
51
+ * In standalone contexts (unit tests, thin consumers) connect it manually
52
+ * with `ImplementInterface`, otherwise the call queues until wired.
53
+ */
28
54
  export declare function GetEffectiveUserPermissions(user: {
29
55
  _id: string;
30
56
  owner?: boolean;
31
57
  }, tenantId: string, roleIds: string[], roleModel: RoleModel): Promise<Set<string>>;
32
58
  export declare function HasPermission(permissions: Set<string>, permissionId: string): Promise<boolean>;
59
+ /** Whether `permissions` grants at least one of `permissionIds`. */
33
60
  export declare function HasAnyPermission(permissions: Set<string>, permissionIds: string[]): Promise<boolean>;
@@ -10,6 +10,9 @@ exports.HasPermission = HasPermission;
10
10
  exports.HasAnyPermission = HasAnyPermission;
11
11
  const interface_core_1 = require("@antelopejs/interface-core");
12
12
  const permissions_resolver_1 = require("./permissions-resolver");
13
+ /**
14
+ * @internal
15
+ */
13
16
  var internal;
14
17
  (function (internal) {
15
18
  internal.RegisterPermission = new interface_core_1.RegisteringProxy();
@@ -18,10 +21,20 @@ const RegisterPermission = (id, permission) => {
18
21
  internal.RegisterPermission.register(id, permission);
19
22
  };
20
23
  exports.RegisterPermission = RegisterPermission;
24
+ /**
25
+ * Drop a permission from the grantable tree. Used when a registration is undone
26
+ * while the process keeps running — a page extension whose module stopped.
27
+ */
21
28
  const UnregisterPermission = (id) => {
22
29
  internal.RegisterPermission.unregister(id);
23
30
  };
24
31
  exports.UnregisterPermission = UnregisterPermission;
32
+ // Module access is platform-owner-only: permissions that belong to module
33
+ // pages/categories are never registered into the permission tree (Roles form)
34
+ // and must never grant anything to a non-owner, even when a stored role still
35
+ // references their id. Marking an id here also covers every dot-separated
36
+ // descendant id (components, actions), which are always built by suffixing
37
+ // the page or category permission id.
25
38
  const moduleScopedPermissionIds = new Set();
26
39
  function MarkModuleScopedPermission(id) {
27
40
  moduleScopedPermissionIds.add(id);
@@ -42,6 +55,13 @@ function IsModuleScopedPermission(id) {
42
55
  }
43
56
  exports.GetPermission = (0, interface_core_1.InterfaceFunction)();
44
57
  exports.GetPermissions = (0, interface_core_1.InterfaceFunction)();
58
+ /**
59
+ * Compute the user's BASE permission set from role grants (or `*` for
60
+ * platform owners). This set does not account for registered permissions
61
+ * resolvers (e.g. plan gating): authorization surfaces must use
62
+ * {@link GetEffectiveUserPermissions} instead so that every surface (guards,
63
+ * menus, table views, search) agrees on the same effective set.
64
+ */
45
65
  async function GetUserPermissions(user, roleIds, roleModel) {
46
66
  if (user.owner) {
47
67
  return new Set(["*"]);
@@ -52,6 +72,18 @@ async function GetUserPermissions(user, roleIds, roleModel) {
52
72
  const roles = await roleModel.getBy("_id", ...roleIds);
53
73
  return new Set(roles.flatMap((role) => role.permissions));
54
74
  }
75
+ /**
76
+ * Compute the user's EFFECTIVE permission set: base permissions from roles,
77
+ * passed through every registered permissions resolver in ascending order.
78
+ * This is the single entry point for authorization surfaces — route guards,
79
+ * page/menu visibility, table-view action checks and search must all use it
80
+ * so the UI and the API agree on what the user can do.
81
+ *
82
+ * Depends on the `dms/permissions-resolver` interface being implemented
83
+ * (`ApplyPermissionsResolvers`): the dms module wires it in `construct()`.
84
+ * In standalone contexts (unit tests, thin consumers) connect it manually
85
+ * with `ImplementInterface`, otherwise the call queues until wired.
86
+ */
55
87
  async function GetEffectiveUserPermissions(user, tenantId, roleIds, roleModel) {
56
88
  const basePermissions = await GetUserPermissions(user, roleIds, roleModel);
57
89
  return (0, permissions_resolver_1.ApplyPermissionsResolvers)(user._id, tenantId, basePermissions);
@@ -59,11 +91,16 @@ async function GetEffectiveUserPermissions(user, tenantId, roleIds, roleModel) {
59
91
  async function HasPermission(permissions, permissionId) {
60
92
  if (permissions.has("*"))
61
93
  return true;
94
+ // Module permissions are owner-only regardless of role grants. This covers
95
+ // the guards that funnel through HasPermission (route validator, table
96
+ // actions); realtime page access short-circuits earlier via isInsideModule
97
+ // in userCanAccessPage/computeEntryAccess (implementations/dms/page.ts).
62
98
  if (IsModuleScopedPermission(permissionId))
63
99
  return false;
64
100
  const permission = await (0, exports.GetPermission)(permissionId);
65
101
  return permissions.has(permissionId) || permission?.defaultGranted || false;
66
102
  }
103
+ /** Whether `permissions` grants at least one of `permissionIds`. */
67
104
  async function HasAnyPermission(permissions, permissionIds) {
68
105
  for (const permissionId of permissionIds) {
69
106
  if (await HasPermission(permissions, permissionId))
@@ -1 +1 @@
1
- {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"permissions.js","sourceRoot":"","sources":["../src/permissions.ts"],"names":[],"mappings":"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"}
@@ -7,6 +7,15 @@ export interface QuickActionCategoryInfo {
7
7
  icon?: string;
8
8
  order?: number;
9
9
  }
10
+ /**
11
+ * The page a quick action belongs to.
12
+ *
13
+ * Access follows that page — its permission, and the tenant access gate with
14
+ * its `bypassTenantAccessGate` flag — so an action can never offer what its
15
+ * page refuses. The route the client navigates to is derived from it, which is
16
+ * also why the page is a controller class rather than a slug: nothing to keep
17
+ * in sync, and a renamed page cannot leave a stale link behind.
18
+ */
10
19
  export interface QuickActionPageTarget {
11
20
  page: ControllerClass;
12
21
  }
@@ -15,10 +24,27 @@ export type QuickActionTarget = (QuickActionPageTarget & {
15
24
  query?: Record<string, string>;
16
25
  }) | (QuickActionPageTarget & {
17
26
  type: "openForm";
27
+ /**
28
+ * Which table view to open the creation form of. Required once the page
29
+ * mounts more than one component that can create a row — the action is
30
+ * not served, with a warning, while the choice stays ambiguous. Use
31
+ * `MyPage.content.targetChild("table")` for a nested table view.
32
+ */
18
33
  component?: ComponentTargetInput;
19
34
  }) | (QuickActionPageTarget & {
20
35
  type: "button";
36
+ /**
37
+ * The `id` of the button to press — a table view's `customButtons[].id`.
38
+ * The action opens what the button opens, and is listed only for a
39
+ * caller the button's own `permission` admits: it declares none of its
40
+ * own, so the two cannot drift apart.
41
+ */
21
42
  button: string;
43
+ /**
44
+ * Which component carries the button. Required once several components
45
+ * of the page declare that button id — the action is not served, with a
46
+ * warning, while the choice stays ambiguous.
47
+ */
22
48
  component?: ComponentTargetInput;
23
49
  }) | (QuickActionPageTarget & {
24
50
  type: "event";
@@ -33,6 +59,7 @@ export interface QuickActionInfo {
33
59
  order?: number;
34
60
  target: QuickActionTarget;
35
61
  }
62
+ /** @internal */
36
63
  export declare namespace internal {
37
64
  const RegisterQuickActionCategory: RegisteringProxy<(info: QuickActionCategoryInfo) => void>;
38
65
  const RegisterQuickAction: RegisteringProxy<(info: QuickActionInfo) => void>;
@@ -4,6 +4,7 @@ exports.internal = void 0;
4
4
  exports.QuickActionCategory = QuickActionCategory;
5
5
  exports.QuickAction = QuickAction;
6
6
  const interface_core_1 = require("@antelopejs/interface-core");
7
+ /** @internal */
7
8
  var internal;
8
9
  (function (internal) {
9
10
  internal.RegisterQuickActionCategory = new interface_core_1.RegisteringProxy();
@@ -1 +1 @@
1
- {"version":3,"file":"quick-actions.js","sourceRoot":"","sources":["../src/quick-actions.ts"],"names":[],"mappings":";;;AA+EA,kDAOC;AAED,kCAOC;AA9FD,+DAA8D;AAqE9D,IAAiB,QAAQ,CAOxB;AAPD,WAAiB,QAAQ;IACV,oCAA2B,GAAG,IAAI,iCAAgB,EAE5D,CAAC;IACS,4BAAmB,GAAG,IAAI,iCAAgB,EAEpD,CAAC;AACN,CAAC,EAPgB,QAAQ,wBAAR,QAAQ,QAOxB;AAED,SAAgB,mBAAmB,CACjC,EAAU,EACV,IAAyC;IAEzC,MAAM,YAAY,GAA4B,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;IAC9D,QAAQ,CAAC,2BAA2B,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC5D,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAgB,WAAW,CACzB,EAAU,EACV,IAAiC;IAEjC,MAAM,UAAU,GAAoB,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;IACpD,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO,UAAU,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"quick-actions.js","sourceRoot":"","sources":["../src/quick-actions.ts"],"names":[],"mappings":";;;AAgFA,kDAOC;AAED,kCAOC;AA/FD,+DAA8D;AAqE9D,gBAAgB;AAChB,IAAiB,QAAQ,CAOxB;AAPD,WAAiB,QAAQ;IACV,oCAA2B,GAAG,IAAI,iCAAgB,EAE5D,CAAC;IACS,4BAAmB,GAAG,IAAI,iCAAgB,EAEpD,CAAC;AACN,CAAC,EAPgB,QAAQ,wBAAR,QAAQ,QAOxB;AAED,SAAgB,mBAAmB,CACjC,EAAU,EACV,IAAyC;IAEzC,MAAM,YAAY,GAA4B,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;IAC9D,QAAQ,CAAC,2BAA2B,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;IAC5D,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAgB,WAAW,CACzB,EAAU,EACV,IAAiC;IAEjC,MAAM,UAAU,GAAoB,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;IACpD,QAAQ,CAAC,mBAAmB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;IAClD,OAAO,UAAU,CAAC;AACpB,CAAC"}
@@ -3,6 +3,7 @@ export interface PublishMessageOptions {
3
3
  payload?: Record<string, unknown>;
4
4
  actorId?: string;
5
5
  }
6
+ /** One message delivered to a {@link SubscribeMessage} handler. */
6
7
  export interface RealtimeMessage {
7
8
  topic: string;
8
9
  type: string;
@@ -11,11 +12,39 @@ export interface RealtimeMessage {
11
12
  ts: number;
12
13
  }
13
14
  export type RealtimeMessageHandler = (message: RealtimeMessage) => void;
15
+ /** Ends the subscription; calling it again is a no-op. */
14
16
  export type UnsubscribeMessage = () => void;
17
+ /**
18
+ * @internal
19
+ */
15
20
  export declare namespace internal {
16
21
  const RegisterPageTopic: RegisteringProxy<(id: string, pageId: string, topic: string) => void>;
17
22
  const SubscribeMessage: RegisteringProxy<(id: string, topic: string, handler: RealtimeMessageHandler) => void>;
18
23
  }
24
+ /**
25
+ * Bind `topic` to the page `pageId`, so the sessions on that page receive what
26
+ * is published on it.
27
+ *
28
+ * The binding belongs to the module that registers it: it is removed when that
29
+ * module is unloaded, and it outlives a reload of the DMS module.
30
+ */
19
31
  export declare const RegisterPageTopic: (pageId: string, topic: string) => void;
20
32
  export declare const PublishMessage: (topic: string, type: string, options?: PublishMessageOptions | undefined) => Promise<void>;
33
+ /**
34
+ * Receive every message published on `topic`, whichever instance published it:
35
+ * the subscription rides the same broker as {@link PublishMessage}, so what one
36
+ * instance publishes reaches the subscribers of every other.
37
+ *
38
+ * The read half of the message interface. {@link PublishMessage} alone lets a
39
+ * module feed the DMS's own streams; paired with this, a module can serve
40
+ * realtime channels of its own — its endpoint subscribes here, the DMS carries
41
+ * the messages — instead of bringing a second broker for the same job.
42
+ *
43
+ * Handlers are called on the delivering instance's event loop and must not
44
+ * throw. Delivery is fire-and-forget: there is no replay, a message published
45
+ * while nobody was subscribed is gone.
46
+ *
47
+ * The subscription is removed automatically when the registering module is
48
+ * unloaded.
49
+ */
21
50
  export declare function SubscribeMessage(topic: string, handler: RealtimeMessageHandler): UnsubscribeMessage;
package/dist/realtime.js CHANGED
@@ -4,19 +4,49 @@ exports.PublishMessage = exports.RegisterPageTopic = exports.internal = void 0;
4
4
  exports.SubscribeMessage = SubscribeMessage;
5
5
  const node_crypto_1 = require("node:crypto");
6
6
  const interface_core_1 = require("@antelopejs/interface-core");
7
+ /**
8
+ * @internal
9
+ */
7
10
  var internal;
8
11
  (function (internal) {
9
12
  internal.RegisterPageTopic = new interface_core_1.RegisteringProxy();
10
13
  internal.SubscribeMessage = new interface_core_1.RegisteringProxy();
11
14
  })(internal || (exports.internal = internal = {}));
15
+ // One registration per topic, not per page: the core keys what it replays to a
16
+ // new DMS generation by this id, so an id shared by the topics of one page
17
+ // would bring back only the last of them.
12
18
  function pageTopicId(pageId, topic) {
13
19
  return JSON.stringify([pageId, topic]);
14
20
  }
21
+ /**
22
+ * Bind `topic` to the page `pageId`, so the sessions on that page receive what
23
+ * is published on it.
24
+ *
25
+ * The binding belongs to the module that registers it: it is removed when that
26
+ * module is unloaded, and it outlives a reload of the DMS module.
27
+ */
15
28
  const RegisterPageTopic = (pageId, topic) => {
16
29
  internal.RegisterPageTopic.register(pageTopicId(pageId, topic), pageId, topic);
17
30
  };
18
31
  exports.RegisterPageTopic = RegisterPageTopic;
19
32
  exports.PublishMessage = (0, interface_core_1.InterfaceFunction)();
33
+ /**
34
+ * Receive every message published on `topic`, whichever instance published it:
35
+ * the subscription rides the same broker as {@link PublishMessage}, so what one
36
+ * instance publishes reaches the subscribers of every other.
37
+ *
38
+ * The read half of the message interface. {@link PublishMessage} alone lets a
39
+ * module feed the DMS's own streams; paired with this, a module can serve
40
+ * realtime channels of its own — its endpoint subscribes here, the DMS carries
41
+ * the messages — instead of bringing a second broker for the same job.
42
+ *
43
+ * Handlers are called on the delivering instance's event loop and must not
44
+ * throw. Delivery is fire-and-forget: there is no replay, a message published
45
+ * while nobody was subscribed is gone.
46
+ *
47
+ * The subscription is removed automatically when the registering module is
48
+ * unloaded.
49
+ */
20
50
  function SubscribeMessage(topic, handler) {
21
51
  const id = (0, node_crypto_1.randomUUID)();
22
52
  internal.SubscribeMessage.register(id, topic, handler);
@@ -1 +1 @@
1
- {"version":3,"file":"realtime.js","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":";;;AAsFA,4CAOC;AA7FD,6CAAyC;AACzC,+DAGoC;AAwBpC,IAAiB,QAAQ,CAQxB;AARD,WAAiB,QAAQ;IACV,0BAAiB,GAAG,IAAI,iCAAgB,EAElD,CAAC;IAES,yBAAgB,GAAG,IAAI,iCAAgB,EAEjD,CAAC;AACN,CAAC,EARgB,QAAQ,wBAAR,QAAQ,QAQxB;AAKD,SAAS,WAAW,CAAC,MAAc,EAAE,KAAa;IAChD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC;AASM,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAE,KAAa,EAAQ,EAAE;IACvE,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CACjC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAC1B,MAAM,EACN,KAAK,CACN,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,iBAAiB,qBAM5B;AAEW,QAAA,cAAc,GACzB,IAAA,kCAAiB,GAMd,CAAC;AAmBN,SAAgB,gBAAgB,CAC9B,KAAa,EACb,OAA+B;IAE/B,MAAM,EAAE,GAAG,IAAA,wBAAU,GAAE,CAAC;IACxB,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACvD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC"}
1
+ {"version":3,"file":"realtime.js","sourceRoot":"","sources":["../src/realtime.ts"],"names":[],"mappings":";;;AAsFA,4CAOC;AA7FD,6CAAyC;AACzC,+DAGoC;AAqBpC;;GAEG;AACH,IAAiB,QAAQ,CAQxB;AARD,WAAiB,QAAQ;IACV,0BAAiB,GAAG,IAAI,iCAAgB,EAElD,CAAC;IAES,yBAAgB,GAAG,IAAI,iCAAgB,EAEjD,CAAC;AACN,CAAC,EARgB,QAAQ,wBAAR,QAAQ,QAQxB;AAED,+EAA+E;AAC/E,2EAA2E;AAC3E,0CAA0C;AAC1C,SAAS,WAAW,CAAC,MAAc,EAAE,KAAa;IAChD,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC,CAAC;AACzC,CAAC;AAED;;;;;;GAMG;AACI,MAAM,iBAAiB,GAAG,CAAC,MAAc,EAAE,KAAa,EAAQ,EAAE;IACvE,QAAQ,CAAC,iBAAiB,CAAC,QAAQ,CACjC,WAAW,CAAC,MAAM,EAAE,KAAK,CAAC,EAC1B,MAAM,EACN,KAAK,CACN,CAAC;AACJ,CAAC,CAAC;AANW,QAAA,iBAAiB,qBAM5B;AAEW,QAAA,cAAc,GACzB,IAAA,kCAAiB,GAMd,CAAC;AAEN;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,gBAAgB,CAC9B,KAAa,EACb,OAA+B;IAE/B,MAAM,EAAE,GAAG,IAAA,wBAAU,GAAE,CAAC;IACxB,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,CAAC,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACvD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAC,CAAC;AACxD,CAAC"}
@@ -1,2 +1,19 @@
1
1
  import type { RequestContext } from "@antelopejs/interface-api";
2
+ /**
3
+ * Prefer the tenant bound by authenticateRequestPrincipal or the tenant guards.
4
+ * An authentication failure or changed credential makes this accessor throw.
5
+ * Without a bound principal, preserve legacy JWT decoding / DEFAULT_TENANT_ID.
6
+ *
7
+ * The legacy value is only *decoded*: this function does NOT verify the
8
+ * JWT signature. It is safe when the request has already been authenticated
9
+ * upstream (auth decorators such as `@AuthUser`, `@AuthTenantMember`, or the
10
+ * gating performed by `PageController`) — those validators verify the signature
11
+ * before this function runs, so the decoded `tenantId` is authentic.
12
+ *
13
+ * For routes that legitimately accept anonymous traffic (e.g. `@IfAuthUser`),
14
+ * the fallback resolves to `DEFAULT_TENANT_ID` so public layouts can be served.
15
+ *
16
+ * Do NOT introduce new routes that rely on `tenantId` for authorization without
17
+ * upstream auth verification — without signature checks, the claim is forgeable.
18
+ */
2
19
  export declare function getRequestTenantId(ctx: RequestContext): string;
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.getRequestTenantId = getRequestTenantId;
4
4
  const jsonwebtoken_1 = require("jsonwebtoken");
5
- const request_authenticators_1 = require("./auth/request-authenticators");
5
+ const request_authenticators_1 = require("./auth/internal/request-authenticators");
6
6
  const constants_1 = require("./constants");
7
7
  const BEARER_PREFIX = "Bearer ";
8
8
  function extractBearerToken(authHeader) {
@@ -26,6 +26,23 @@ function readTenantIdFromToken(token) {
26
26
  }
27
27
  return undefined;
28
28
  }
29
+ /**
30
+ * Prefer the tenant bound by authenticateRequestPrincipal or the tenant guards.
31
+ * An authentication failure or changed credential makes this accessor throw.
32
+ * Without a bound principal, preserve legacy JWT decoding / DEFAULT_TENANT_ID.
33
+ *
34
+ * The legacy value is only *decoded*: this function does NOT verify the
35
+ * JWT signature. It is safe when the request has already been authenticated
36
+ * upstream (auth decorators such as `@AuthUser`, `@AuthTenantMember`, or the
37
+ * gating performed by `PageController`) — those validators verify the signature
38
+ * before this function runs, so the decoded `tenantId` is authentic.
39
+ *
40
+ * For routes that legitimately accept anonymous traffic (e.g. `@IfAuthUser`),
41
+ * the fallback resolves to `DEFAULT_TENANT_ID` so public layouts can be served.
42
+ *
43
+ * Do NOT introduce new routes that rely on `tenantId` for authorization without
44
+ * upstream auth verification — without signature checks, the claim is forgeable.
45
+ */
29
46
  function getRequestTenantId(ctx) {
30
47
  const authenticatedTenantId = (0, request_authenticators_1.getAuthenticatedRequestTenantId)(ctx);
31
48
  if (authenticatedTenantId)
@@ -1 +1 @@
1
- {"version":3,"file":"request-tenant.js","sourceRoot":"","sources":["../src/request-tenant.ts"],"names":[],"mappings":";;AAkDA,gDASC;AA1DD,+CAAsC;AACtC,0EAAgF;AAChF,2CAAgD;AAEhD,MAAM,aAAa,GAAG,SAAS,CAAC;AAMhC,SAAS,kBAAkB,CAAC,UAAmB;IAC7C,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACrD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,qBAAM,EAAC,KAAK,CAAgC,CAAC;QAC7D,IACE,OAAO;YACP,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;YACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAC3B,CAAC;YACD,OAAO,OAAO,CAAC,QAAQ,CAAC;QAC1B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAmBD,SAAgB,kBAAkB,CAAC,GAAmB;IACpD,MAAM,qBAAqB,GAAG,IAAA,wDAA+B,EAAC,GAAG,CAAC,CAAC;IACnE,IAAI,qBAAqB;QAAE,OAAO,qBAAqB,CAAC;IACxD,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IACzE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,eAAe;YAAE,OAAO,eAAe,CAAC;IAC9C,CAAC;IACD,OAAO,6BAAiB,CAAC;AAC3B,CAAC"}
1
+ {"version":3,"file":"request-tenant.js","sourceRoot":"","sources":["../src/request-tenant.ts"],"names":[],"mappings":";;AAkDA,gDASC;AA1DD,+CAAsC;AACtC,mFAAyF;AACzF,2CAAgD;AAEhD,MAAM,aAAa,GAAG,SAAS,CAAC;AAMhC,SAAS,kBAAkB,CAAC,UAAmB;IAC7C,IAAI,OAAO,UAAU,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAC;IACrD,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,aAAa,CAAC;QAAE,OAAO,SAAS,CAAC;IAC5D,OAAO,UAAU,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC;AAED,SAAS,qBAAqB,CAAC,KAAa;IAC1C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,qBAAM,EAAC,KAAK,CAAgC,CAAC;QAC7D,IACE,OAAO;YACP,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ;YACpC,OAAO,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAC3B,CAAC;YACD,OAAO,OAAO,CAAC,QAAQ,CAAC;QAC1B,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,SAAgB,kBAAkB,CAAC,GAAmB;IACpD,MAAM,qBAAqB,GAAG,IAAA,wDAA+B,EAAC,GAAG,CAAC,CAAC;IACnE,IAAI,qBAAqB;QAAE,OAAO,qBAAqB,CAAC;IACxD,MAAM,KAAK,GAAG,kBAAkB,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC;IACzE,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,eAAe,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACrD,IAAI,eAAe;YAAE,OAAO,eAAe,CAAC;IAC9C,CAAC;IACD,OAAO,6BAAiB,CAAC;AAC3B,CAAC"}
@@ -11,15 +11,47 @@ export interface TenantAccessGateInfo {
11
11
  gate: TenantAccessGateFn;
12
12
  order: number;
13
13
  }
14
+ /**
15
+ * @internal
16
+ */
14
17
  export declare namespace internal {
15
18
  const RegisterTenantAccessGate: RegisteringProxy<(info: TenantAccessGateInfo) => void>;
16
19
  }
20
+ /**
21
+ * Register a tenant access gate: a tenant-level, binary access check applied
22
+ * at every tenant authorization surface (permission guards, tenant member /
23
+ * owner guards, table-view data routes, page and menu visibility, realtime
24
+ * page access). Use it to deny a tenant access to the product entirely, e.g.
25
+ * when its subscription is suspended.
26
+ *
27
+ * This is deliberately NOT part of the permissions pipeline: gates also block
28
+ * surfaces that permissions cannot express (defaultGranted permissions,
29
+ * membership-only guards). For granular permission shaping, use
30
+ * `RegisterPermissionsResolver` from `dms/permissions-resolver`.
31
+ *
32
+ * Semantics:
33
+ * - Gates run in ascending `order` (ties in registration order); the first
34
+ * denial wins and its `code` is returned to the client as the 403 body.
35
+ * - A gate that throws fails the request (fail-closed).
36
+ * - The registration is automatically removed when the registering module is
37
+ * unloaded.
38
+ * - Call during your module's `construct()` so the gate is active before the
39
+ * API starts serving requests.
40
+ *
41
+ * Routes that must stay reachable for a denied tenant (billing, recovery)
42
+ * opt out explicitly with the `bypassTenantAccessGate` option of
43
+ * `AuthTenantMember` / `AuthTenantOwner`, or of `TableViewOptions` for
44
+ * table-view data routes.
45
+ */
17
46
  export declare function RegisterTenantAccessGate(info: TenantAccessGateInfo): void;
47
+ /**
48
+ * Run the registered gates for the given user and tenant. Returns the first
49
+ * denial, or `{ allowed: true }` when every gate passes. `userId` is
50
+ * undefined for unauthenticated requests.
51
+ */
18
52
  export declare const CheckTenantAccess: (userId: string | undefined, tenantId: string) => Promise<TenantAccessResult>;
53
+ /**
54
+ * Assert that the tenant is accessible; throws a 403 whose body is the
55
+ * denying gate's `code` (a machine-readable i18n key) otherwise.
56
+ */
19
57
  export declare function AssertTenantAccess(userId: string | undefined, tenantId: string): Promise<void>;
20
- export interface GatedSurface {
21
- bypassTenantAccessGate?: boolean;
22
- publicAccess?: boolean;
23
- authOnly?: boolean;
24
- }
25
- export declare function gateAllowsSurface(surface: GatedSurface, gateDenied: boolean): boolean;