@antelopejs/interface-dms 0.3.4 → 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 +43 -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 +54 -17
  500. package/dist/invites.js +49 -34
  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
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realtime.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/realtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,75 @@
1
+ import type { ComponentFilterContext } from "../../../component";
2
+ import type { PermissionGate } from "../../../permission-gate";
3
+ import type { CustomButton, CustomButtonSerialized } from "../../types/custom-button";
4
+ import type { CustomRowActionSerialized, RowActionConfigSerialized, RowActionRule } from "../../types/row-action";
5
+ import type { TableViewRowActionOptions, TableViewRowActionOptionsSerialized } from "../options";
6
+ /** The table view actions whose permission shapes what a request is served. */
7
+ declare const GRANTED_ACTIONS: readonly ["add", "edit", "delete", "view", "archive", "restore", "viewArchived", "export"];
8
+ /**
9
+ * Whether the caller holds each table view action.
10
+ *
11
+ * @internal
12
+ */
13
+ export type TableViewGrants = Record<(typeof GRANTED_ACTIONS)[number], boolean>;
14
+ /**
15
+ * The table view actions the caller holds, checked one after the other.
16
+ *
17
+ * @internal
18
+ */
19
+ export declare function resolveTableViewGrants(permissions: Set<string>, permissionId: string): Promise<TableViewGrants>;
20
+ /**
21
+ * A built-in row action as served to a caller: refused (`false`) without
22
+ * the permission, on (`true`) when the table view left it unset.
23
+ *
24
+ * @internal
25
+ */
26
+ export declare function applyPermissionToAction(hasPermission: boolean, actionConfig: boolean | RowActionConfigSerialized | undefined): boolean | RowActionConfigSerialized | undefined;
27
+ /**
28
+ * A built-in row action with the controller's rule, where the table view did
29
+ * not declare its own: rules are registered once per controller (the writing
30
+ * table view's) and enforced on every write, so the UI matches what the
31
+ * server accepts.
32
+ *
33
+ * @internal
34
+ */
35
+ export declare function mergeControllerRule(actionConfig: boolean | RowActionConfigSerialized | undefined, rule: RowActionRule | undefined): boolean | RowActionConfigSerialized | undefined;
36
+ /**
37
+ * What the row actions of a table view are served from.
38
+ *
39
+ * @internal
40
+ */
41
+ export interface RowActionsAdaptation {
42
+ /** The row actions as the table view serialized them. */
43
+ rowActions: TableViewRowActionOptionsSerialized | undefined;
44
+ archiveMode: boolean | undefined;
45
+ grants: TableViewGrants;
46
+ /** The custom row actions already filtered for the request. */
47
+ custom: CustomRowActionSerialized[] | undefined;
48
+ /** The rules the data routes enforce (see `controllerRowActionRules`). */
49
+ controllerRules: TableViewRowActionOptions | undefined;
50
+ }
51
+ /**
52
+ * The row actions served to one request: each disabled when the caller lacks
53
+ * its permission, the archive ones only in archive mode, and controller-wide
54
+ * rules exposed where the table declared none. Details are dropped when edit
55
+ * is offered unconditionally, since edit already shows the row.
56
+ *
57
+ * @internal
58
+ */
59
+ export declare function adaptRowActions({ rowActions, archiveMode, grants, custom, controllerRules, }: RowActionsAdaptation): TableViewRowActionOptionsSerialized;
60
+ /**
61
+ * The custom buttons served to one request: those whose permission the caller
62
+ * lacks are stripped, and those whose `availability` refuses the request are
63
+ * disabled with its reason.
64
+ *
65
+ * @internal
66
+ */
67
+ export declare function resolveCustomButtons(permissions: Set<string>, declaredButtons: CustomButton[] | undefined, serializedButtons: CustomButtonSerialized[] | undefined, componentPermissionId: string, context: ComponentFilterContext): Promise<CustomButtonSerialized[] | undefined>;
68
+ /**
69
+ * The custom row actions served to one request: those whose `permission` the
70
+ * caller lacks are stripped, like custom buttons.
71
+ *
72
+ * @internal
73
+ */
74
+ export declare function resolveCustomRowActions(permissions: Set<string>, declaredActions: PermissionGate[] | undefined, serializedActions: CustomRowActionSerialized[] | undefined, componentPermissionId: string): Promise<CustomRowActionSerialized[] | undefined>;
75
+ export {};
@@ -0,0 +1,154 @@
1
+ "use strict";
2
+ // What one request is served of a table view's options: the actions, row
3
+ // actions and custom buttons the caller's permissions admit, with the rules
4
+ // the server enforces on them.
5
+ //
6
+ // Split out of factory-helpers.ts.
7
+ Object.defineProperty(exports, "__esModule", { value: true });
8
+ exports.resolveTableViewGrants = resolveTableViewGrants;
9
+ exports.applyPermissionToAction = applyPermissionToAction;
10
+ exports.mergeControllerRule = mergeControllerRule;
11
+ exports.adaptRowActions = adaptRowActions;
12
+ exports.resolveCustomButtons = resolveCustomButtons;
13
+ exports.resolveCustomRowActions = resolveCustomRowActions;
14
+ const button_availability_1 = require("../../internal/button-availability");
15
+ const permission_gate_1 = require("../../../internal/permission-gate");
16
+ const permissions_1 = require("../../../permissions");
17
+ const row_rules_1 = require("./row-rules");
18
+ /** The table view actions whose permission shapes what a request is served. */
19
+ const GRANTED_ACTIONS = [
20
+ "add",
21
+ "edit",
22
+ "delete",
23
+ "view",
24
+ "archive",
25
+ "restore",
26
+ "viewArchived",
27
+ "export",
28
+ ];
29
+ /**
30
+ * The table view actions the caller holds, checked one after the other.
31
+ *
32
+ * @internal
33
+ */
34
+ async function resolveTableViewGrants(permissions, permissionId) {
35
+ const grants = {};
36
+ for (const action of GRANTED_ACTIONS) {
37
+ grants[action] = await (0, permissions_1.HasPermission)(permissions, `${permissionId}.${action}`);
38
+ }
39
+ return grants;
40
+ }
41
+ /**
42
+ * A built-in row action as served to a caller: refused (`false`) without
43
+ * the permission, on (`true`) when the table view left it unset.
44
+ *
45
+ * @internal
46
+ */
47
+ function applyPermissionToAction(hasPermission, actionConfig) {
48
+ if (!hasPermission) {
49
+ return false;
50
+ }
51
+ return typeof actionConfig === "undefined" ? true : actionConfig;
52
+ }
53
+ /**
54
+ * A built-in row action with the controller's rule, where the table view did
55
+ * not declare its own: rules are registered once per controller (the writing
56
+ * table view's) and enforced on every write, so the UI matches what the
57
+ * server accepts.
58
+ *
59
+ * @internal
60
+ */
61
+ function mergeControllerRule(actionConfig, rule) {
62
+ if (!rule || !actionConfig) {
63
+ return actionConfig;
64
+ }
65
+ if (actionConfig === true) {
66
+ return { isEnabled: true, rule };
67
+ }
68
+ if (!actionConfig.rule) {
69
+ return { ...actionConfig, rule };
70
+ }
71
+ return actionConfig;
72
+ }
73
+ const CONTROLLER_RULED_ACTIONS = [
74
+ "edit",
75
+ "delete",
76
+ "archive",
77
+ "restore",
78
+ ];
79
+ /**
80
+ * The row actions served to one request: each disabled when the caller lacks
81
+ * its permission, the archive ones only in archive mode, and controller-wide
82
+ * rules exposed where the table declared none. Details are dropped when edit
83
+ * is offered unconditionally, since edit already shows the row.
84
+ *
85
+ * @internal
86
+ */
87
+ function adaptRowActions({ rowActions, archiveMode, grants, custom, controllerRules, }) {
88
+ const inArchiveMode = (granted, config) => (archiveMode ? applyPermissionToAction(granted, config) : undefined);
89
+ const adapted = {
90
+ add: applyPermissionToAction(grants.add, rowActions?.add),
91
+ edit: applyPermissionToAction(grants.edit, rowActions?.edit),
92
+ duplicate: applyPermissionToAction(grants.add, rowActions?.duplicate),
93
+ delete: applyPermissionToAction(grants.delete, rowActions?.delete),
94
+ archive: inArchiveMode(grants.archive, rowActions?.archive),
95
+ restore: inArchiveMode(grants.restore, rowActions?.restore),
96
+ showArchived: archiveMode ? grants.viewArchived : undefined,
97
+ details: applyPermissionToAction(grants.view, rowActions?.details),
98
+ copyLink: applyPermissionToAction(grants.view, rowActions?.copyLink),
99
+ hasSelection: rowActions?.hasSelection,
100
+ custom,
101
+ };
102
+ // The table's own rules are already in its options; the controller's rule
103
+ // applies where it declared none, as the routes enforce it.
104
+ if (controllerRules) {
105
+ for (const actionName of CONTROLLER_RULED_ACTIONS) {
106
+ adapted[actionName] = mergeControllerRule(adapted[actionName], (0, row_rules_1.extractRuleFromConfig)(controllerRules, actionName));
107
+ }
108
+ }
109
+ const editHasNoRules = adapted.edit === true ||
110
+ (typeof adapted.edit === "object" && !adapted.edit.rule);
111
+ if (editHasNoRules) {
112
+ adapted.details = false;
113
+ }
114
+ return adapted;
115
+ }
116
+ /**
117
+ * The custom buttons served to one request: those whose permission the caller
118
+ * lacks are stripped, and those whose `availability` refuses the request are
119
+ * disabled with its reason.
120
+ *
121
+ * @internal
122
+ */
123
+ async function resolveCustomButtons(permissions, declaredButtons, serializedButtons, componentPermissionId, context) {
124
+ if (!declaredButtons || !serializedButtons) {
125
+ return serializedButtons;
126
+ }
127
+ const kept = [];
128
+ for (const [index, serialized] of serializedButtons.entries()) {
129
+ const declared = declaredButtons[index];
130
+ if (!(await (0, permission_gate_1.holdsPermissionGate)(permissions, declared, componentPermissionId))) {
131
+ continue;
132
+ }
133
+ kept.push(await (0, button_availability_1.applyButtonAvailability)(declared?.availability, serialized, context));
134
+ }
135
+ return kept;
136
+ }
137
+ /**
138
+ * The custom row actions served to one request: those whose `permission` the
139
+ * caller lacks are stripped, like custom buttons.
140
+ *
141
+ * @internal
142
+ */
143
+ async function resolveCustomRowActions(permissions, declaredActions, serializedActions, componentPermissionId) {
144
+ if (!declaredActions || !serializedActions)
145
+ return serializedActions;
146
+ const kept = [];
147
+ for (const [index, serialized] of serializedActions.entries()) {
148
+ if (await (0, permission_gate_1.holdsPermissionGate)(permissions, declaredActions[index], componentPermissionId)) {
149
+ kept.push(serialized);
150
+ }
151
+ }
152
+ return kept;
153
+ }
154
+ //# sourceMappingURL=request-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request-filter.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/request-filter.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { ControllerClass } from "@antelopejs/interface-api";
2
+ import type { FormBuilder } from "../../form-types";
3
+ import { type ResourceFormMode, type ResourceFormOptions } from "../../resource-form-schema";
4
+ import { TableViewMeta } from "../meta";
5
+ /**
6
+ * Point every file and image column at the attachment it stores into. The
7
+ * upload a form field hands out is claimed against that address, so a form
8
+ * built before it is set cannot upload anything. Idempotent: whichever form or
9
+ * table over the controller comes first sets the same value.
10
+ *
11
+ * @internal
12
+ */
13
+ export declare function stampAttachmentFields(meta: TableViewMeta, location: string): void;
14
+ /**
15
+ * The form over `controller` in `mode`: the fields its columns declare for
16
+ * that mode, loaded from and submitted to the routes the mode uses. `rowId`
17
+ * defaults to {@link ROUTE_PARAM_ROW_ID}, the segment a TableView's own form
18
+ * pages carry.
19
+ *
20
+ * `undefined` when no column has an input in that mode — a resource whose
21
+ * every field is read-only has no edit form to offer.
22
+ *
23
+ * @internal
24
+ */
25
+ export declare function resourceForm<T extends ControllerClass>(controller: T, mode: ResourceFormMode, options?: ResourceFormOptions): FormBuilder | undefined;
@@ -0,0 +1,91 @@
1
+ "use strict";
2
+ // The form over a resource: its fields and the routes it loads and submits
3
+ // through, derived from the DataController for a mode. The forms a TableView
4
+ // opens and the ones a ResourceForm block renders are built here and nowhere
5
+ // else, so the shape of a route changes in one place for both.
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.stampAttachmentFields = stampAttachmentFields;
8
+ exports.resourceForm = resourceForm;
9
+ const interface_core_1 = require("@antelopejs/interface-core");
10
+ const core_1 = require("../../data-types/core");
11
+ const form_schema_1 = require("../../form-schema");
12
+ const resource_form_schema_1 = require("../../resource-form-schema");
13
+ const types_1 = require("../../types");
14
+ const meta_1 = require("../meta");
15
+ const realtime_1 = require("./realtime");
16
+ function formRoutes(location, mode, rowId) {
17
+ switch (mode) {
18
+ case "new":
19
+ return {
20
+ // A row being duplicated seeds the new one; without the query the
21
+ // token stays unresolved and nothing is fetched.
22
+ fetchUrl: `${location}/get?id={{query.duplicate}}`,
23
+ fetchUrlMethod: types_1.HttpMethod.get,
24
+ submitUrl: `${location}/new`,
25
+ submitUrlMethod: types_1.HttpMethod.post,
26
+ };
27
+ case "edit":
28
+ return {
29
+ fetchUrl: `${location}/get?id=${rowId}&${realtime_1.REALTIME_PRESENCE_QUERY}=${realtime_1.REALTIME_PRESENCE_ACQUIRE_VALUE}`,
30
+ fetchUrlMethod: types_1.HttpMethod.get,
31
+ submitUrl: `${location}/edit?id=${rowId}`,
32
+ submitUrlMethod: types_1.HttpMethod.put,
33
+ };
34
+ case "view":
35
+ return {
36
+ fetchUrl: `${location}/get?id=${rowId}`,
37
+ fetchUrlMethod: types_1.HttpMethod.get,
38
+ };
39
+ }
40
+ }
41
+ /**
42
+ * Point every file and image column at the attachment it stores into. The
43
+ * upload a form field hands out is claimed against that address, so a form
44
+ * built before it is set cannot upload anything. Idempotent: whichever form or
45
+ * table over the controller comes first sets the same value.
46
+ *
47
+ * @internal
48
+ */
49
+ function stampAttachmentFields(meta, location) {
50
+ for (const [columnKey, column] of Object.entries(meta.columns)) {
51
+ const typeId = (0, core_1.getDataTypeId)(column.type);
52
+ if (typeId === "file" || typeId === "image") {
53
+ const typeOptions = column.type.options;
54
+ typeOptions.attachmentField = `${location}#${columnKey}`;
55
+ }
56
+ }
57
+ }
58
+ /**
59
+ * The form over `controller` in `mode`: the fields its columns declare for
60
+ * that mode, loaded from and submitted to the routes the mode uses. `rowId`
61
+ * defaults to {@link ROUTE_PARAM_ROW_ID}, the segment a TableView's own form
62
+ * pages carry.
63
+ *
64
+ * `undefined` when no column has an input in that mode — a resource whose
65
+ * every field is read-only has no edit form to offer.
66
+ *
67
+ * @internal
68
+ */
69
+ function resourceForm(controller, mode, options = {}) {
70
+ const meta = (0, interface_core_1.GetMetadata)(controller, meta_1.TableViewMeta);
71
+ const { location } = meta.config;
72
+ stampAttachmentFields(meta, location);
73
+ const fields = meta.getFormFields(mode);
74
+ if (fields.length === 0) {
75
+ return undefined;
76
+ }
77
+ const { rowId = resource_form_schema_1.ROUTE_PARAM_ROW_ID, ...formOptions } = options;
78
+ const form = (0, form_schema_1.Form)({
79
+ ...formOptions,
80
+ fields,
81
+ ...formRoutes(location, mode, rowId),
82
+ });
83
+ // A form that submits to the controller's write routes is a provenance the
84
+ // routes accept files from, as each of its TableViews is. That covers a
85
+ // TableView's own form too: a page-mode TableView mounts it as the component
86
+ // of its form sub-page, whose upload tokens are claimed under that form.
87
+ if (mode !== "view")
88
+ meta.addResourceFormBuilder(form);
89
+ return form;
90
+ }
91
+ //# sourceMappingURL=resource-form.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resource-form.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/resource-form.ts"],"names":[],"mappings":";AAAA,2EAA2E;AAC3E,6EAA6E;AAC7E,6EAA6E;AAC7E,+DAA+D;;AA8D/D,sDAWC;AAaD,oCAwBC;AA3GD,+DAAyD;AACzD,gDAAsD;AACtD,mDAAyC;AAEzC,qEAIoC;AACpC,uCAAyC;AACzC,kCAAwC;AACxC,yCAGoB;AAOpB,SAAS,UAAU,CACjB,QAAgB,EAChB,IAAsB,EACtB,KAAa;IAEb,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO;gBACL,kEAAkE;gBAClE,iDAAiD;gBACjD,QAAQ,EAAE,GAAG,QAAQ,6BAA6B;gBAClD,cAAc,EAAE,kBAAU,CAAC,GAAG;gBAC9B,SAAS,EAAE,GAAG,QAAQ,MAAM;gBAC5B,eAAe,EAAE,kBAAU,CAAC,IAAI;aACjC,CAAC;QACJ,KAAK,MAAM;YACT,OAAO;gBACL,QAAQ,EAAE,GAAG,QAAQ,WAAW,KAAK,IAAI,kCAAuB,IAAI,0CAA+B,EAAE;gBACrG,cAAc,EAAE,kBAAU,CAAC,GAAG;gBAC9B,SAAS,EAAE,GAAG,QAAQ,YAAY,KAAK,EAAE;gBACzC,eAAe,EAAE,kBAAU,CAAC,GAAG;aAChC,CAAC;QACJ,KAAK,MAAM;YACT,OAAO;gBACL,QAAQ,EAAE,GAAG,QAAQ,WAAW,KAAK,EAAE;gBACvC,cAAc,EAAE,kBAAU,CAAC,GAAG;aAC/B,CAAC;IACN,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,qBAAqB,CACnC,IAAmB,EACnB,QAAgB;IAEhB,KAAK,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;QAC/D,MAAM,MAAM,GAAG,IAAA,oBAAa,EAAC,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1C,IAAI,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;YAC5C,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAkC,CAAC;YACnE,WAAW,CAAC,eAAe,GAAG,GAAG,QAAQ,IAAI,SAAS,EAAE,CAAC;QAC3D,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,YAAY,CAC1B,UAAa,EACb,IAAsB,EACtB,UAA+B,EAAE;IAEjC,MAAM,IAAI,GAAG,IAAA,4BAAW,EAAC,UAAU,EAAE,oBAAa,CAAC,CAAC;IACpD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC;IACjC,qBAAqB,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACtC,MAAM,MAAM,GAAG,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACxC,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,EAAE,KAAK,GAAG,yCAAkB,EAAE,GAAG,WAAW,EAAE,GAAG,OAAO,CAAC;IAC/D,MAAM,IAAI,GAAG,IAAA,kBAAI,EAAC;QAChB,GAAG,WAAW;QACd,MAAM;QACN,GAAG,UAAU,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC;KACrC,CAAC,CAAC;IACH,2EAA2E;IAC3E,wEAAwE;IACxE,6EAA6E;IAC7E,yEAAyE;IACzE,IAAI,IAAI,KAAK,MAAM;QAAE,IAAI,CAAC,sBAAsB,CAAC,IAAI,CAAC,CAAC;IACvD,OAAO,IAAI,CAAC;AACd,CAAC"}
@@ -1,8 +1,11 @@
1
1
  import type { DataControllerCallback } from "@antelopejs/interface-data-api";
2
- import type { RowActionRule } from "../types/row-action";
3
- import type { TableViewRowActionOptions } from "./options";
2
+ import type { RowActionRule } from "../../types/row-action";
3
+ import type { TableViewRowActionOptions } from "../options";
4
4
  type ValidatedActionName = "delete" | "edit" | "archive" | "restore";
5
+ /** @internal */
5
6
  export declare const normalizeToArray: (value: string | string[]) => string[];
7
+ /** @internal */
6
8
  export declare const extractRuleFromConfig: (controllerRules: TableViewRowActionOptions | undefined, actionName: ValidatedActionName) => RowActionRule | undefined;
9
+ /** @internal */
7
10
  export declare const createValidatedRoute: (baseRoute: DataControllerCallback, actionName: ValidatedActionName) => DataControllerCallback;
8
11
  export {};
@@ -3,14 +3,15 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createValidatedRoute = exports.extractRuleFromConfig = exports.normalizeToArray = void 0;
4
4
  const interface_api_util_1 = require("@antelopejs/interface-api-util");
5
5
  const interface_core_1 = require("@antelopejs/interface-core");
6
- const data_functions_1 = require("./data-functions");
7
- const meta_1 = require("./meta");
8
- const options_1 = require("./options");
6
+ const data_functions_1 = require("../data-functions");
7
+ const meta_1 = require("../meta");
8
+ const options_1 = require("../options");
9
9
  var EmptyResultBehavior;
10
10
  (function (EmptyResultBehavior) {
11
11
  EmptyResultBehavior[EmptyResultBehavior["Graceful"] = 0] = "Graceful";
12
12
  EmptyResultBehavior[EmptyResultBehavior["Strict"] = 1] = "Strict";
13
13
  })(EmptyResultBehavior || (EmptyResultBehavior = {}));
14
+ /** @internal */
14
15
  const normalizeToArray = (value) => Array.isArray(value) ? value : [value];
15
16
  exports.normalizeToArray = normalizeToArray;
16
17
  const ACTION_VALIDATION_CONFIGS = {
@@ -27,27 +28,32 @@ const ACTION_VALIDATION_CONFIGS = {
27
28
  extractIds: (params) => [params.id],
28
29
  emptyResultBehavior: EmptyResultBehavior.Strict,
29
30
  },
31
+ // A bulk route's first argument after the context is the id list itself:
32
+ // the rows a rule rejects are dropped from it before the operation runs.
30
33
  archive: {
31
- extractIds: (_params, ids) => (0, exports.normalizeToArray)(ids),
34
+ extractIds: (ids) => (0, exports.normalizeToArray)(ids),
32
35
  emptyResultBehavior: EmptyResultBehavior.Graceful,
33
36
  emptyResult: { success: true, archivedCount: 0 },
34
- transformArgs: (_args, eligibleIds) => [eligibleIds],
37
+ transformParams: (_ids, eligibleIds) => eligibleIds,
35
38
  },
36
39
  restore: {
37
- extractIds: (_params, ids) => (0, exports.normalizeToArray)(ids),
40
+ extractIds: (ids) => (0, exports.normalizeToArray)(ids),
38
41
  emptyResultBehavior: EmptyResultBehavior.Graceful,
39
42
  emptyResult: { success: true, restoredCount: 0 },
40
- transformArgs: (_args, eligibleIds) => [eligibleIds],
43
+ transformParams: (_ids, eligibleIds) => eligibleIds,
41
44
  },
42
45
  };
43
- const getValidationContext = (controller) => {
46
+ // The writing TableView's rules and options are the controller's: it is the
47
+ // only one the write routes serve.
48
+ const getValidationContext = (controller, actionName) => {
44
49
  const meta = (0, interface_core_1.GetMetadata)(controller.constructor, meta_1.TableViewMeta);
45
50
  return {
46
- rules: meta.controllerRowActionRules,
51
+ rule: (0, exports.extractRuleFromConfig)(meta.controllerRowActionRules, actionName),
47
52
  strictMode: meta.options.strictRuleValidation ?? false,
48
53
  idField: meta.options.rowIdKey || options_1.DEFAULT_ROW_ID_FIELD,
49
54
  };
50
55
  };
56
+ /** @internal */
51
57
  const extractRuleFromConfig = (controllerRules, actionName) => {
52
58
  const actionConfig = controllerRules?.[actionName];
53
59
  if (typeof actionConfig === "object" && actionConfig !== null) {
@@ -62,19 +68,17 @@ const handleNoEligibleIds = (config, actionName) => {
62
68
  }
63
69
  return config.emptyResult;
64
70
  };
71
+ /** @internal */
65
72
  const createValidatedRoute = (baseRoute, actionName) => {
66
73
  const config = ACTION_VALIDATION_CONFIGS[actionName];
67
74
  return {
68
75
  func: async function (ctx, params, ...args) {
69
- const validationCtx = getValidationContext(this);
70
- if (!validationCtx.rules) {
71
- return baseRoute.func.call(this, ctx, params, ...args);
72
- }
73
- const rule = (0, exports.extractRuleFromConfig)(validationCtx.rules, actionName);
76
+ const validationCtx = getValidationContext(this, actionName);
77
+ const { rule } = validationCtx;
74
78
  if (!rule) {
75
79
  return baseRoute.func.call(this, ctx, params, ...args);
76
80
  }
77
- const ids = config.extractIds(params, ...args);
81
+ const ids = config.extractIds(params);
78
82
  const { eligibleIds } = await (0, data_functions_1.validateRowsAgainstRule)(this, ids, rule, validationCtx.strictMode, validationCtx.idField);
79
83
  if (eligibleIds.length === 0) {
80
84
  return handleNoEligibleIds(config, actionName);
@@ -82,10 +86,7 @@ const createValidatedRoute = (baseRoute, actionName) => {
82
86
  const finalParams = config.transformParams
83
87
  ? config.transformParams(params, eligibleIds)
84
88
  : params;
85
- const finalArgs = config.transformArgs
86
- ? config.transformArgs(args, eligibleIds)
87
- : args;
88
- return baseRoute.func.call(this, ctx, finalParams, ...finalArgs);
89
+ return baseRoute.func.call(this, ctx, finalParams, ...args);
89
90
  },
90
91
  args: baseRoute.args,
91
92
  method: baseRoute.method,
@@ -0,0 +1 @@
1
+ {"version":3,"file":"row-rules.js","sourceRoot":"","sources":["../../../../src/base/table-view/internal/row-rules.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import { type ControllerClass } from "@antelopejs/interface-api";
2
+ import type { DataControllerCallbackWithOptions } from "@antelopejs/interface-data-api";
3
+ import type { TableViewOptions, TableViewTab, TableViewTabSerialized } from "../options";
4
+ /**
5
+ * Tabs as the options carry them: a link tab's path target and its count
6
+ * location are plain strings already; a page controller target is resolved
7
+ * per request by {@link resolveTableViewTabs}, once pages are registered.
8
+ *
9
+ * @internal
10
+ */
11
+ export declare function serializeTableViewTabs(tabs: TableViewTab[] | undefined): TableViewTabSerialized[] | undefined;
12
+ /**
13
+ * The tabs served to one request: a tab is kept only for a caller its gate
14
+ * admits — a link tab to a page, that page's own permission; any other tab,
15
+ * its `permission` (relative to the table view) or `permissionId` — and a
16
+ * page target is resolved to its path and full id. A page that never
17
+ * registered drops its tab.
18
+ *
19
+ * @internal
20
+ */
21
+ export declare function resolveTableViewTabs(permissions: Set<string>, declaredTabs: TableViewTab[] | undefined, serializedTabs: TableViewTabSerialized[] | undefined, componentPermissionId: string): Promise<TableViewTabSerialized[] | undefined>;
22
+ /**
23
+ * Whether a table view shows counters the `count/batch` route serves: filter
24
+ * tabs, counted views or counted groups.
25
+ *
26
+ * @internal
27
+ */
28
+ export declare function declaresCounters(options: Pick<TableViewOptions, "tabs" | "views" | "grouped">): boolean;
29
+ /** @internal */
30
+ export declare function servesRoute(endpoints: Record<string, DataControllerCallbackWithOptions>, path: string, method: string): boolean;
31
+ /**
32
+ * Warn, once per controller, when a table view declares filter tabs, counted
33
+ * views or counted groups but its controller mounts no `POST count/batch`
34
+ * route: every counter request would fail. The fix belongs in the controller
35
+ * (mount `countBatch: TableViewRoutes.CountBatch`), so this only reports it.
36
+ *
37
+ * @internal
38
+ */
39
+ export declare function warnIfTabsLackCountBatch(controller: ControllerClass, location: string, hasCounters: boolean, endpoints: Record<string, DataControllerCallbackWithOptions>): void;
@@ -0,0 +1,116 @@
1
+ "use strict";
2
+ // The filter tabs of a table view: how the options carry them, which ones a
3
+ // request is served, and the warning when their counters have no route.
4
+ //
5
+ // Split out of factory-helpers.ts.
6
+ Object.defineProperty(exports, "__esModule", { value: true });
7
+ exports.serializeTableViewTabs = serializeTableViewTabs;
8
+ exports.resolveTableViewTabs = resolveTableViewTabs;
9
+ exports.declaresCounters = declaresCounters;
10
+ exports.servesRoute = servesRoute;
11
+ exports.warnIfTabsLackCountBatch = warnIfTabsLackCountBatch;
12
+ const interface_api_1 = require("@antelopejs/interface-api");
13
+ const interface_core_1 = require("@antelopejs/interface-core");
14
+ const logging_1 = require("@antelopejs/interface-core/logging");
15
+ const page_1 = require("../../../page");
16
+ const permission_gate_1 = require("../../../internal/permission-gate");
17
+ const permissions_1 = require("../../../permissions");
18
+ function dataApiLocation(countFrom) {
19
+ return typeof countFrom === "string"
20
+ ? countFrom
21
+ : (0, interface_core_1.GetMetadata)(countFrom, interface_api_1.ControllerMeta).location;
22
+ }
23
+ /**
24
+ * Tabs as the options carry them: a link tab's path target and its count
25
+ * location are plain strings already; a page controller target is resolved
26
+ * per request by {@link resolveTableViewTabs}, once pages are registered.
27
+ *
28
+ * @internal
29
+ */
30
+ function serializeTableViewTabs(tabs) {
31
+ return tabs?.map(({ to, countFrom, permission: _permission, permissionId: _permissionId, ...tab }) => {
32
+ const serialized = { ...tab };
33
+ if (typeof to === "string")
34
+ serialized.to = to;
35
+ if (countFrom)
36
+ serialized.countFrom = dataApiLocation(countFrom);
37
+ return serialized;
38
+ });
39
+ }
40
+ const withLeadingSlash = (path) => path.startsWith("/") ? path : `/${path}`;
41
+ /**
42
+ * The tabs served to one request: a tab is kept only for a caller its gate
43
+ * admits — a link tab to a page, that page's own permission; any other tab,
44
+ * its `permission` (relative to the table view) or `permissionId` — and a
45
+ * page target is resolved to its path and full id. A page that never
46
+ * registered drops its tab.
47
+ *
48
+ * @internal
49
+ */
50
+ async function resolveTableViewTabs(permissions, declaredTabs, serializedTabs, componentPermissionId) {
51
+ if (!declaredTabs || !serializedTabs)
52
+ return serializedTabs;
53
+ const kept = [];
54
+ for (const [index, tab] of serializedTabs.entries()) {
55
+ const declared = declaredTabs[index];
56
+ const target = declared?.to;
57
+ if (target && typeof target !== "string") {
58
+ const page = (0, interface_core_1.GetMetadata)(target, page_1.PageMetadata).pageInfo;
59
+ if (!page)
60
+ continue;
61
+ const permissionId = (0, page_1.GetPermissionId)(target);
62
+ if (permissionId && !(await (0, permissions_1.HasPermission)(permissions, permissionId))) {
63
+ continue;
64
+ }
65
+ kept.push({
66
+ ...tab,
67
+ to: withLeadingSlash(page.fullSlug),
68
+ toPage: page.fullId,
69
+ });
70
+ continue;
71
+ }
72
+ if (await (0, permission_gate_1.holdsPermissionGate)(permissions, declared, componentPermissionId)) {
73
+ kept.push(tab);
74
+ }
75
+ }
76
+ return kept;
77
+ }
78
+ /**
79
+ * Whether a table view shows counters the `count/batch` route serves: filter
80
+ * tabs, counted views or counted groups.
81
+ *
82
+ * @internal
83
+ */
84
+ function declaresCounters(options) {
85
+ return ((options.tabs?.length ?? 0) > 0 ||
86
+ !!options.views?.items.some((view) => view.count) ||
87
+ !!options.grouped?.count);
88
+ }
89
+ const COUNT_BATCH_PATH = "count/batch";
90
+ const COUNT_BATCH_METHOD = "post";
91
+ const EDGE_SLASHES = /^\/+|\/+$/g;
92
+ const controllersWarnedForTabCounts = new WeakSet();
93
+ // Matched on the mounted path and method rather than on the route object: a
94
+ // module mounts its own per-context copy of `TableViewRoutes.CountBatch`.
95
+ /** @internal */
96
+ function servesRoute(endpoints, path, method) {
97
+ return Object.entries(endpoints).some(([key, entry]) => (entry.endpoint ?? key).replace(EDGE_SLASHES, "") === path &&
98
+ entry.callback.method.toLowerCase() === method);
99
+ }
100
+ /**
101
+ * Warn, once per controller, when a table view declares filter tabs, counted
102
+ * views or counted groups but its controller mounts no `POST count/batch`
103
+ * route: every counter request would fail. The fix belongs in the controller
104
+ * (mount `countBatch: TableViewRoutes.CountBatch`), so this only reports it.
105
+ *
106
+ * @internal
107
+ */
108
+ function warnIfTabsLackCountBatch(controller, location, hasCounters, endpoints) {
109
+ if (!hasCounters || controllersWarnedForTabCounts.has(controller))
110
+ return;
111
+ if (servesRoute(endpoints, COUNT_BATCH_PATH, COUNT_BATCH_METHOD))
112
+ return;
113
+ controllersWarnedForTabCounts.add(controller);
114
+ logging_1.Logging.Warn(`[DMS] TableView on "${controller.name}" (${location}) declares filter tabs, counted views or counted groups but its controller mounts no POST ${location}/${COUNT_BATCH_PATH} route: their counters will fail. Mount \`countBatch: TableViewRoutes.CountBatch\` on the controller.`);
115
+ }
116
+ //# sourceMappingURL=tabs.js.map