@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
@@ -7,11 +7,21 @@ exports.readPayload = readPayload;
7
7
  const interface_api_util_1 = require("@antelopejs/interface-api-util");
8
8
  const field_ids_1 = require("./field-ids");
9
9
  const registry_1 = require("./registry");
10
+ /** @internal */
10
11
  exports.HTTP_BAD_REQUEST = 400;
11
12
  function issuesOf(error) {
12
13
  const issues = error.issues;
13
14
  return Array.isArray(issues) ? issues : undefined;
14
15
  }
16
+ /**
17
+ * Report the failure against the ids the browser knows — the prefixed ones it
18
+ * submitted — so the invite form can point at the offending field rather than
19
+ * at a name only the extension uses.
20
+ *
21
+ * An issue raised on the object itself (a schema-wide `refine`) names no field:
22
+ * it keeps an empty path rather than being handed a fabricated one, which the
23
+ * form could not attach to anything either way.
24
+ */
15
25
  function describeFailure(key, error) {
16
26
  const issues = issuesOf(error);
17
27
  if (!issues)
@@ -25,6 +35,11 @@ function describeFailure(key, error) {
25
35
  })),
26
36
  };
27
37
  }
38
+ /**
39
+ * The submitted values of one extension's fields, keyed by unprefixed id.
40
+ *
41
+ * @internal
42
+ */
28
43
  function sliceOf(key, body) {
29
44
  const slice = {};
30
45
  for (const [id, value] of Object.entries(body)) {
@@ -35,9 +50,24 @@ function sliceOf(key, body) {
35
50
  }
36
51
  return slice;
37
52
  }
53
+ /**
54
+ * @throws HTTPResult 400 when the slice does not satisfy the schema
55
+ *
56
+ * @internal
57
+ */
38
58
  function assertSliceValid(info, slice) {
39
59
  (0, interface_api_util_1.assertValidation)(slice, (v) => info.schema.parse(v), (error) => describeFailure(info.key, error), exports.HTTP_BAD_REQUEST);
40
60
  }
61
+ /**
62
+ * Parse the stored submission into the payload `onAccept` is typed for.
63
+ *
64
+ * The schema runs here rather than being trusted from storage: an invitation
65
+ * can outlive the version of the module that wrote its payload, and this is
66
+ * also where a transforming schema produces its output — exactly once, on the
67
+ * input as the admin submitted it.
68
+ *
69
+ * @internal
70
+ */
41
71
  function readPayload(info, payloads, options) {
42
72
  const stored = payloads?.[info.key];
43
73
  if (stored === undefined)
@@ -0,0 +1 @@
1
+ {"version":3,"file":"payload-slices.js","sourceRoot":"","sources":["../../../src/invite-extensions/internal/payload-slices.ts"],"names":[],"mappings":";;;AAsDA,0BAYC;AAOD,4CAUC;AAYD,kCAmBC;AAlHD,uEAAkE;AAClE,2CAGqB;AACrB,yCAAuD;AAIvD,gBAAgB;AACH,QAAA,gBAAgB,GAAG,GAAG,CAAC;AAYpC,SAAS,QAAQ,CAAC,KAAc;IAC9B,MAAM,MAAM,GAAI,KAA8B,CAAC,MAAM,CAAC;IACtD,OAAO,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAE,MAAsB,CAAC,CAAC,CAAC,SAAS,CAAC;AACrE,CAAC;AAED;;;;;;;;GAQG;AACH,SAAS,eAAe,CAAC,GAAW,EAAE,KAAc;IAClD,MAAM,MAAM,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC/B,IAAI,CAAC,MAAM;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IAClC,OAAO;QACL,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YACzC,IAAI,EAAE,IAAI,CAAC,MAAM;gBACf,CAAC,CAAC,CAAC,IAAA,kCAAsB,EAAC,GAAG,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBAClE,CAAC,CAAC,EAAE;YACN,OAAO;SACR,CAAC,CAAC;KACJ,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAgB,OAAO,CACrB,GAAW,EACX,IAA6B;IAE7B,MAAM,KAAK,GAA4B,EAAE,CAAC;IAC1C,KAAK,MAAM,CAAC,EAAE,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,MAAM,KAAK,GAAG,IAAA,uCAA2B,EAAC,EAAE,CAAC,CAAC;QAC9C,IAAI,KAAK,EAAE,GAAG,KAAK,GAAG,EAAE,CAAC;YACvB,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,KAAK,CAAC;QAC/B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAgB,gBAAgB,CAC9B,IAAyB,EACzB,KAA8B;IAE9B,IAAA,qCAAgB,EACd,KAAK,EACL,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,EAC3B,CAAC,KAAK,EAAE,EAAE,CAAC,eAAe,CAAC,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,EAC3C,wBAAgB,CACjB,CAAC;AACJ,CAAC;AAED;;;;;;;;;GASG;AACH,SAAgB,WAAW,CACzB,IAAyB,EACzB,QAAoD,EACpD,OAA8B;IAE9B,MAAM,MAAM,GAAG,QAAQ,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAE3C,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IAC7C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,IAAA,oCAAyB,EACvB,IAAI,CAAC,GAAG,EACR,yBAAyB,EACzB,MAAM,CAAC,KAAK,CACb,CAAC;QACF,IAAI,OAAO,CAAC,cAAc;YAAE,MAAM,MAAM,CAAC,KAAK,CAAC;QAC/C,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC;AAChC,CAAC"}
@@ -0,0 +1,48 @@
1
+ import type { InviteExtensionInfo, InviteFieldContribution } from "./types";
2
+ /**
3
+ * A registration plus the contribution it serializes to. The contribution is
4
+ * built once, lazily, and cached on the entry: serializing runs the form's
5
+ * option transforms — which is where its upload fields claim their tokens —
6
+ * and those must not be re-signed on every layout request.
7
+ *
8
+ * @internal
9
+ */
10
+ export interface InviteExtensionEntry {
11
+ info: InviteExtensionInfo;
12
+ contribution?: Promise<InviteFieldContribution | undefined>;
13
+ }
14
+ /** @internal */
15
+ export declare const inviteExtensions: Map<string, InviteExtensionEntry>;
16
+ /** @internal */
17
+ export declare function listInviteExtensionEntries(): InviteExtensionEntry[];
18
+ /** @internal */
19
+ export declare function listInviteExtensions(): InviteExtensionInfo[];
20
+ /** @internal */
21
+ export declare function getInviteExtension(key: string): InviteExtensionInfo | undefined;
22
+ /** @internal */
23
+ export declare function logInviteExtensionFailure(key: string, action: string, error: unknown): void;
24
+ /**
25
+ * The last registration wins, rather than a key collision being fatal: a hot
26
+ * reload registers the replacement before the old one unregisters, so the
27
+ * common case of a key already being held is a module reclaiming its own.
28
+ * Throwing there would fail the reloaded module's construction and — once
29
+ * the departing one unregisters — leave the invite modal without the fields
30
+ * until a full restart.
31
+ *
32
+ * The holder is told apart by the module that registered it, not by the
33
+ * object: a reload re-registers a new one, and a DMS reload is replayed a
34
+ * fresh view of the same one. Two different modules on one key would
35
+ * overwrite each other's payload on the invitation, which is a declaration
36
+ * error; it is reported rather than raised, for the reason above.
37
+ *
38
+ * @internal
39
+ */
40
+ export declare function applyInviteExtension(info: InviteExtensionInfo): void;
41
+ /** @internal */
42
+ export declare function revokeInviteExtension(info: InviteExtensionInfo): void;
43
+ /**
44
+ * Test seam: drops every registration without going through the proxy.
45
+ *
46
+ * @internal
47
+ */
48
+ export declare function clearInviteExtensions(): void;
@@ -0,0 +1,77 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.inviteExtensions = void 0;
4
+ exports.listInviteExtensionEntries = listInviteExtensionEntries;
5
+ exports.listInviteExtensions = listInviteExtensions;
6
+ exports.getInviteExtension = getInviteExtension;
7
+ exports.logInviteExtensionFailure = logInviteExtensionFailure;
8
+ exports.applyInviteExtension = applyInviteExtension;
9
+ exports.revokeInviteExtension = revokeInviteExtension;
10
+ exports.clearInviteExtensions = clearInviteExtensions;
11
+ const logging_1 = require("@antelopejs/interface-core/logging");
12
+ /** @internal */
13
+ exports.inviteExtensions = new Map();
14
+ /** @internal */
15
+ function listInviteExtensionEntries() {
16
+ return [...exports.inviteExtensions.values()];
17
+ }
18
+ /** @internal */
19
+ function listInviteExtensions() {
20
+ return listInviteExtensionEntries().map((entry) => entry.info);
21
+ }
22
+ /** @internal */
23
+ function getInviteExtension(key) {
24
+ return exports.inviteExtensions.get(key)?.info;
25
+ }
26
+ /** @internal */
27
+ function logInviteExtensionFailure(key, action, error) {
28
+ logging_1.Logging.Error(`[dms] invite extension "${key}" failed to ${action}:`, error);
29
+ }
30
+ // An unresolved module matches nothing: two registrations whose owner is
31
+ // unknown are not known to be the same module, so they still warn.
32
+ function isSameRegisteringModule(held, incoming) {
33
+ if (held === incoming)
34
+ return true;
35
+ return held.moduleId !== undefined && held.moduleId === incoming.moduleId;
36
+ }
37
+ /**
38
+ * The last registration wins, rather than a key collision being fatal: a hot
39
+ * reload registers the replacement before the old one unregisters, so the
40
+ * common case of a key already being held is a module reclaiming its own.
41
+ * Throwing there would fail the reloaded module's construction and — once
42
+ * the departing one unregisters — leave the invite modal without the fields
43
+ * until a full restart.
44
+ *
45
+ * The holder is told apart by the module that registered it, not by the
46
+ * object: a reload re-registers a new one, and a DMS reload is replayed a
47
+ * fresh view of the same one. Two different modules on one key would
48
+ * overwrite each other's payload on the invitation, which is a declaration
49
+ * error; it is reported rather than raised, for the reason above.
50
+ *
51
+ * @internal
52
+ */
53
+ function applyInviteExtension(info) {
54
+ const existing = exports.inviteExtensions.get(info.key);
55
+ if (existing && !isSameRegisteringModule(existing.info, info)) {
56
+ logging_1.Logging.Warn(`[dms] invite extension key "${info.key}" was already registered by another module; the latest registration now owns it. If two modules claim this key, one of them silently loses its payload — give them distinct keys.`);
57
+ }
58
+ exports.inviteExtensions.set(info.key, { info });
59
+ }
60
+ /** @internal */
61
+ function revokeInviteExtension(info) {
62
+ const existing = exports.inviteExtensions.get(info.key);
63
+ // A hot reload registers the replacement before the old one unregisters,
64
+ // so an unconditional delete would drop the live registration.
65
+ if (!existing || existing.info !== info)
66
+ return;
67
+ exports.inviteExtensions.delete(info.key);
68
+ }
69
+ /**
70
+ * Test seam: drops every registration without going through the proxy.
71
+ *
72
+ * @internal
73
+ */
74
+ function clearInviteExtensions() {
75
+ exports.inviteExtensions.clear();
76
+ }
77
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/invite-extensions/internal/registry.ts"],"names":[],"mappings":";;;AAoBA,gEAEC;AAGD,oDAEC;AAGD,gDAIC;AAGD,8DAMC;AA4BD,oDAQC;AAGD,sDAMC;AAOD,sDAEC;AAjGD,gEAA6D;AAgB7D,gBAAgB;AACH,QAAA,gBAAgB,GAAG,IAAI,GAAG,EAAgC,CAAC;AAExE,gBAAgB;AAChB,SAAgB,0BAA0B;IACxC,OAAO,CAAC,GAAG,wBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,gBAAgB;AAChB,SAAgB,oBAAoB;IAClC,OAAO,0BAA0B,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,gBAAgB;AAChB,SAAgB,kBAAkB,CAChC,GAAW;IAEX,OAAO,wBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;AACzC,CAAC;AAED,gBAAgB;AAChB,SAAgB,yBAAyB,CACvC,GAAW,EACX,MAAc,EACd,KAAc;IAEd,iBAAO,CAAC,KAAK,CAAC,2BAA2B,GAAG,eAAe,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC;AAC/E,CAAC;AAED,yEAAyE;AACzE,mEAAmE;AACnE,SAAS,uBAAuB,CAC9B,IAAyB,EACzB,QAA6B;IAE7B,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,CAAC;AAC5E,CAAC;AAED;;;;;;;;;;;;;;;GAeG;AACH,SAAgB,oBAAoB,CAAC,IAAyB;IAC5D,MAAM,QAAQ,GAAG,wBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,IAAI,QAAQ,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;QAC9D,iBAAO,CAAC,IAAI,CACV,+BAA+B,IAAI,CAAC,GAAG,mLAAmL,CAC3N,CAAC;IACJ,CAAC;IACD,wBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;AAC3C,CAAC;AAED,gBAAgB;AAChB,SAAgB,qBAAqB,CAAC,IAAyB;IAC7D,MAAM,QAAQ,GAAG,wBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChD,yEAAyE;IACzE,+DAA+D;IAC/D,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI;QAAE,OAAO;IAChD,wBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACpC,CAAC;AAED;;;;GAIG;AACH,SAAgB,qBAAqB;IACnC,wBAAgB,CAAC,KAAK,EAAE,CAAC;AAC3B,CAAC"}
@@ -0,0 +1,61 @@
1
+ import type { FieldGroupSerialized, FormBuilder } from "../../base/form";
2
+ import type { WatchAction } from "../../base/types/watch";
3
+ import type { ZodType, ZodTypeDef } from "zod";
4
+ import type { PlacementSide } from "../../component";
5
+ import type { InviteAcceptHandler, InviteCleanupHandler, InviteUpdateHandler } from "../types";
6
+ /**
7
+ * Resolved placement of a registered extension.
8
+ *
9
+ * @internal
10
+ */
11
+ export interface ResolvedInvitePlacement {
12
+ side: PlacementSide;
13
+ anchorField?: string;
14
+ order: number;
15
+ }
16
+ /** @internal */
17
+ export interface InviteDeliveryOptions {
18
+ /** Retains durable work by propagating contributor failures after all callbacks run. */
19
+ retryOnFailure?: boolean;
20
+ }
21
+ /**
22
+ * A registration as the registry holds it: placement resolved, payload type
23
+ * erased. The object itself is the handle — it is what the registering proxy
24
+ * hands back to unregister when the extending module stops.
25
+ *
26
+ * @internal
27
+ */
28
+ export interface InviteExtensionInfo {
29
+ key: string;
30
+ component: FormBuilder;
31
+ schema: ZodType<unknown, ZodTypeDef, unknown>;
32
+ onAccept: InviteAcceptHandler<unknown>;
33
+ onCleanup?: InviteCleanupHandler<unknown>;
34
+ /** Unset reads as `true`, as it does on the options. */
35
+ editable?: boolean;
36
+ onUpdate?: InviteUpdateHandler<unknown>;
37
+ label?: string;
38
+ description?: string;
39
+ placement: ResolvedInvitePlacement;
40
+ /** The module that registered the extension, undefined when unresolved. */
41
+ moduleId?: string;
42
+ }
43
+ /**
44
+ * One extension's contribution to the invite form, serialized once when it
45
+ * registers: the block of fields, the JSON-schema entries the browser
46
+ * validates them against, and the watches the contributed form declared —
47
+ * all keyed by the prefixed field ids the merged form uses.
48
+ *
49
+ * @internal
50
+ */
51
+ export interface InviteFieldContribution {
52
+ key: string;
53
+ side: PlacementSide;
54
+ anchorField?: string;
55
+ order: number;
56
+ editable: boolean;
57
+ group: FieldGroupSerialized;
58
+ properties: Record<string, unknown>;
59
+ requiredProperties: string[];
60
+ watchActions: WatchAction[];
61
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/invite-extensions/internal/types.ts"],"names":[],"mappings":""}
@@ -1,17 +1,49 @@
1
1
  import { RegisteringProxy } from "@antelopejs/interface-core";
2
- import type { InviteExtensionInfo, InviteExtensionOptions, InviteFieldContribution } from "./types";
3
- export interface InviteExtensionEntry {
4
- info: InviteExtensionInfo;
5
- contribution?: Promise<InviteFieldContribution | undefined>;
6
- }
7
- export declare function listInviteExtensionEntries(): InviteExtensionEntry[];
8
- export declare function listInviteExtensions(): InviteExtensionInfo[];
9
- export declare function getInviteExtension(key: string): InviteExtensionInfo | undefined;
2
+ import type { InviteExtensionInfo } from "./internal/types";
3
+ import type { InviteExtensionOptions } from "./types";
4
+ /**
5
+ * Attach module data to member invitations: the fields of `component` are
6
+ * merged into the DMS invite modal, the values the admin fills are validated
7
+ * against `schema` and stored on the invitation, and `onAccept` receives them
8
+ * once the invitee is a member of the tenant.
9
+ *
10
+ * Placement follows `@RegisterPageExtension`: `anchorField` names a field of
11
+ * the invite form to sit before or after, `order` breaks ties between
12
+ * extensions landing at the same spot, and equal orders fall back to the
13
+ * extension key — so the modal assembles the same way on every host and
14
+ * across restarts, never depending on module start order.
15
+ *
16
+ * Field ids are namespaced by `key`, so two extensions may both contribute a
17
+ * `plan` field; `schema` and `onAccept` see them unprefixed.
18
+ *
19
+ * An invitee who already has an account is added to the tenant on the spot and
20
+ * no invitation row is written: `onAccept` still runs, with `inviteId` unset.
21
+ * `onCleanup` runs when the invitation is cancelled or replaced and when a
22
+ * member is removed — never on acceptance, which also deletes the invitation.
23
+ *
24
+ * The fields also appear in the edit form of a pending invitation, prefilled
25
+ * with the stored payload: an admin can change it until the invitee accepts,
26
+ * unless `editable` is `false`, and `onUpdate` hears about each change.
27
+ *
28
+ * The registration is bound to the registering module and lifted when it
29
+ * stops, so the fields leave the modal with it.
30
+ *
31
+ * ```ts
32
+ * RegisterInviteExtension({
33
+ * key: "billing",
34
+ * component: Form({ fields: [{ id: "costCenter", type: new StringType() }] }),
35
+ * schema: z.object({ costCenter: z.string().min(1) }),
36
+ * onAccept: (payload, member) => assignCostCenter(member, payload.costCenter),
37
+ * });
38
+ * ```
39
+ *
40
+ * @returns Removes this extension, for a module that drops it while staying
41
+ * loaded.
42
+ */
10
43
  export declare function RegisterInviteExtension<T>(options: InviteExtensionOptions<T>): () => void;
44
+ /**
45
+ * @internal
46
+ */
11
47
  export declare namespace internal {
12
48
  const RegisterInviteExtension: RegisteringProxy<(info: InviteExtensionInfo) => void>;
13
- function applyInviteExtension(info: InviteExtensionInfo): void;
14
- function revokeInviteExtension(info: InviteExtensionInfo): void;
15
- function clearInviteExtensions(): void;
16
49
  }
17
- export declare function logInviteExtensionFailure(key: string, action: string, error: unknown): void;
@@ -1,28 +1,15 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.internal = void 0;
4
- exports.listInviteExtensionEntries = listInviteExtensionEntries;
5
- exports.listInviteExtensions = listInviteExtensions;
6
- exports.getInviteExtension = getInviteExtension;
7
4
  exports.RegisterInviteExtension = RegisterInviteExtension;
8
- exports.logInviteExtensionFailure = logInviteExtensionFailure;
9
5
  const interface_core_1 = require("@antelopejs/interface-core");
10
- const logging_1 = require("@antelopejs/interface-core/logging");
11
- const field_ids_1 = require("./field-ids");
12
- const inviteExtensions = new Map();
13
- function listInviteExtensionEntries() {
14
- return [...inviteExtensions.values()];
15
- }
16
- function listInviteExtensions() {
17
- return listInviteExtensionEntries().map((entry) => entry.info);
18
- }
19
- function getInviteExtension(key) {
20
- return inviteExtensions.get(key)?.info;
21
- }
6
+ const field_ids_1 = require("./internal/field-ids");
22
7
  const DEFAULT_PLACEMENT = { side: "end", order: 0 };
23
8
  function resolvePlacement(options) {
24
9
  if (!options)
25
10
  return DEFAULT_PLACEMENT;
11
+ // `anchorField` is set only when the placement names one: its absence is
12
+ // what the assembler reads as "append at the end".
26
13
  const placement = {
27
14
  side: options.side ?? DEFAULT_PLACEMENT.side,
28
15
  order: options.order ?? DEFAULT_PLACEMENT.order,
@@ -39,11 +26,54 @@ function assertUsableKey(key) {
39
26
  throw new Error(`Invite extension key "${key}" may not contain "${field_ids_1.INVITE_EXTENSION_FIELD_SEPARATOR}": it separates the key from the field id in the merged invite form.`);
40
27
  }
41
28
  }
29
+ /**
30
+ * Attach module data to member invitations: the fields of `component` are
31
+ * merged into the DMS invite modal, the values the admin fills are validated
32
+ * against `schema` and stored on the invitation, and `onAccept` receives them
33
+ * once the invitee is a member of the tenant.
34
+ *
35
+ * Placement follows `@RegisterPageExtension`: `anchorField` names a field of
36
+ * the invite form to sit before or after, `order` breaks ties between
37
+ * extensions landing at the same spot, and equal orders fall back to the
38
+ * extension key — so the modal assembles the same way on every host and
39
+ * across restarts, never depending on module start order.
40
+ *
41
+ * Field ids are namespaced by `key`, so two extensions may both contribute a
42
+ * `plan` field; `schema` and `onAccept` see them unprefixed.
43
+ *
44
+ * An invitee who already has an account is added to the tenant on the spot and
45
+ * no invitation row is written: `onAccept` still runs, with `inviteId` unset.
46
+ * `onCleanup` runs when the invitation is cancelled or replaced and when a
47
+ * member is removed — never on acceptance, which also deletes the invitation.
48
+ *
49
+ * The fields also appear in the edit form of a pending invitation, prefilled
50
+ * with the stored payload: an admin can change it until the invitee accepts,
51
+ * unless `editable` is `false`, and `onUpdate` hears about each change.
52
+ *
53
+ * The registration is bound to the registering module and lifted when it
54
+ * stops, so the fields leave the modal with it.
55
+ *
56
+ * ```ts
57
+ * RegisterInviteExtension({
58
+ * key: "billing",
59
+ * component: Form({ fields: [{ id: "costCenter", type: new StringType() }] }),
60
+ * schema: z.object({ costCenter: z.string().min(1) }),
61
+ * onAccept: (payload, member) => assignCostCenter(member, payload.costCenter),
62
+ * });
63
+ * ```
64
+ *
65
+ * @returns Removes this extension, for a module that drops it while staying
66
+ * loaded.
67
+ */
42
68
  function RegisterInviteExtension(options) {
43
69
  assertUsableKey(options.key);
44
70
  const info = {
45
71
  key: options.key,
46
72
  component: options.component,
73
+ // The source and the target do not overlap, so this cannot be one
74
+ // assertion: the value reaches here through a decorator, a JWT
75
+ // payload or a filter tuple, none of which the type system sees.
76
+ // oxlint-disable-next-line anti-slop/no-chained-type-assertions
47
77
  schema: options.schema,
48
78
  onAccept: options.onAccept,
49
79
  onCleanup: options.onCleanup,
@@ -52,40 +82,18 @@ function RegisterInviteExtension(options) {
52
82
  label: options.label,
53
83
  description: options.description,
54
84
  placement: resolvePlacement(options.placement),
85
+ // The core answers an empty string when it resolves no module, which
86
+ // must not read as one module shared by every unresolved registration.
55
87
  moduleId: (0, interface_core_1.GetResponsibleModule)() || undefined,
56
88
  };
57
89
  internal.RegisterInviteExtension.register(info);
58
90
  return () => internal.RegisterInviteExtension.unregister(info);
59
91
  }
60
- function isSameRegisteringModule(held, incoming) {
61
- if (held === incoming)
62
- return true;
63
- return held.moduleId !== undefined && held.moduleId === incoming.moduleId;
64
- }
92
+ /**
93
+ * @internal
94
+ */
65
95
  var internal;
66
96
  (function (internal) {
67
97
  internal.RegisterInviteExtension = new interface_core_1.RegisteringProxy();
68
- function applyInviteExtension(info) {
69
- const existing = inviteExtensions.get(info.key);
70
- if (existing && !isSameRegisteringModule(existing.info, info)) {
71
- logging_1.Logging.Warn(`[dms] invite extension key "${info.key}" was already registered by another module; the latest registration now owns it. If two modules claim this key, one of them silently loses its payload — give them distinct keys.`);
72
- }
73
- inviteExtensions.set(info.key, { info });
74
- }
75
- internal.applyInviteExtension = applyInviteExtension;
76
- function revokeInviteExtension(info) {
77
- const existing = inviteExtensions.get(info.key);
78
- if (!existing || existing.info !== info)
79
- return;
80
- inviteExtensions.delete(info.key);
81
- }
82
- internal.revokeInviteExtension = revokeInviteExtension;
83
- function clearInviteExtensions() {
84
- inviteExtensions.clear();
85
- }
86
- internal.clearInviteExtensions = clearInviteExtensions;
87
98
  })(internal || (exports.internal = internal = {}));
88
- function logInviteExtensionFailure(key, action, error) {
89
- logging_1.Logging.Error(`[dms] invite extension "${key}" failed to ${action}:`, error);
90
- }
91
99
  //# sourceMappingURL=registry.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/invite-extensions/registry.ts"],"names":[],"mappings":";;;AA0BA,gEAEC;AAED,oDAEC;AAED,gDAIC;AAoED,0DA2BC;AA0DD,8DAMC;AArMD,+DAGoC;AACpC,gEAA6D;AAC7D,2CAA+D;AAmB/D,MAAM,gBAAgB,GAAG,IAAI,GAAG,EAAgC,CAAC;AAEjE,SAAgB,0BAA0B;IACxC,OAAO,CAAC,GAAG,gBAAgB,CAAC,MAAM,EAAE,CAAC,CAAC;AACxC,CAAC;AAED,SAAgB,oBAAoB;IAClC,OAAO,0BAA0B,EAAE,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC;AAED,SAAgB,kBAAkB,CAChC,GAAW;IAEX,OAAO,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,IAAI,CAAC;AACzC,CAAC;AAED,MAAM,iBAAiB,GAA4B,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAE7E,SAAS,gBAAgB,CACvB,OAAmD;IAEnD,IAAI,CAAC,OAAO;QAAE,OAAO,iBAAiB,CAAC;IAGvC,MAAM,SAAS,GAA4B;QACzC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI;QAC5C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,iBAAiB,CAAC,KAAK;KAChD,CAAC;IACF,IAAI,OAAO,CAAC,WAAW;QAAE,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACrE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,4CAAgC,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,yBAAyB,GAAG,sBAAsB,4CAAgC,sEAAsE,CACzJ,CAAC;IACJ,CAAC;AACH,CAAC;AAyCD,SAAgB,uBAAuB,CACrC,OAAkC;IAElC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAE7B,MAAM,IAAI,GAAwB;QAChC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS,EAAE,OAAO,CAAC,SAAS;QAK5B,MAAM,EAAE,OAAO,CAAC,MAAkD;QAClE,QAAQ,EAAE,OAAO,CAAC,QAA2C;QAC7D,SAAS,EAAE,OAAO,CAAC,SAA6C;QAChE,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAA2C;QAC7D,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;QAG9C,QAAQ,EAAE,IAAA,qCAAoB,GAAE,IAAI,SAAS;KAC9C,CAAC;IAEF,QAAQ,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC;AAID,SAAS,uBAAuB,CAC9B,IAAyB,EACzB,QAA6B;IAE7B,IAAI,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACnC,OAAO,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,IAAI,CAAC,QAAQ,KAAK,QAAQ,CAAC,QAAQ,CAAC;AAC5E,CAAC;AAKD,IAAiB,QAAQ,CAyCxB;AAzCD,WAAiB,QAAQ;IACV,gCAAuB,GAAG,IAAI,iCAAgB,EAExD,CAAC;IAgBJ,SAAgB,oBAAoB,CAAC,IAAyB;QAC5D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAChD,IAAI,QAAQ,IAAI,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,EAAE,IAAI,CAAC,EAAE,CAAC;YAC9D,iBAAO,CAAC,IAAI,CACV,+BAA+B,IAAI,CAAC,GAAG,mLAAmL,CAC3N,CAAC;QACJ,CAAC;QACD,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC;IAC3C,CAAC;IARe,6BAAoB,uBAQnC,CAAA;IAED,SAAgB,qBAAqB,CAAC,IAAyB;QAC7D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAGhD,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,IAAI,KAAK,IAAI;YAAE,OAAO;QAChD,gBAAgB,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACpC,CAAC;IANe,8BAAqB,wBAMpC,CAAA;IAGD,SAAgB,qBAAqB;QACnC,gBAAgB,CAAC,KAAK,EAAE,CAAC;IAC3B,CAAC;IAFe,8BAAqB,wBAEpC,CAAA;AACH,CAAC,EAzCgB,QAAQ,wBAAR,QAAQ,QAyCxB;AAED,SAAgB,yBAAyB,CACvC,GAAW,EACX,MAAc,EACd,KAAc;IAEd,iBAAO,CAAC,KAAK,CAAC,2BAA2B,GAAG,eAAe,MAAM,GAAG,EAAE,KAAK,CAAC,CAAC;AAC/E,CAAC"}
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/invite-extensions/registry.ts"],"names":[],"mappings":";;;AA6EA,0DA2BC;AAxGD,+DAGoC;AACpC,oDAAwE;AAOxE,MAAM,iBAAiB,GAA4B,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;AAE7E,SAAS,gBAAgB,CACvB,OAAmD;IAEnD,IAAI,CAAC,OAAO;QAAE,OAAO,iBAAiB,CAAC;IACvC,yEAAyE;IACzE,mDAAmD;IACnD,MAAM,SAAS,GAA4B;QACzC,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,iBAAiB,CAAC,IAAI;QAC5C,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,iBAAiB,CAAC,KAAK;KAChD,CAAC;IACF,IAAI,OAAO,CAAC,WAAW;QAAE,SAAS,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IACrE,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,eAAe,CAAC,GAAW;IAClC,IAAI,CAAC,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CAAC,mDAAmD,CAAC,CAAC;IACvE,CAAC;IACD,IAAI,GAAG,CAAC,QAAQ,CAAC,4CAAgC,CAAC,EAAE,CAAC;QACnD,MAAM,IAAI,KAAK,CACb,yBAAyB,GAAG,sBAAsB,4CAAgC,sEAAsE,CACzJ,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAsCG;AACH,SAAgB,uBAAuB,CACrC,OAAkC;IAElC,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;IAE7B,MAAM,IAAI,GAAwB;QAChC,GAAG,EAAE,OAAO,CAAC,GAAG;QAChB,SAAS,EAAE,OAAO,CAAC,SAAS;QAC5B,kEAAkE;QAClE,+DAA+D;QAC/D,iEAAiE;QACjE,gEAAgE;QAChE,MAAM,EAAE,OAAO,CAAC,MAAkD;QAClE,QAAQ,EAAE,OAAO,CAAC,QAA2C;QAC7D,SAAS,EAAE,OAAO,CAAC,SAA6C;QAChE,QAAQ,EAAE,OAAO,CAAC,QAAQ;QAC1B,QAAQ,EAAE,OAAO,CAAC,QAA2C;QAC7D,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,SAAS,EAAE,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC;QAC9C,qEAAqE;QACrE,uEAAuE;QACvE,QAAQ,EAAE,IAAA,qCAAoB,GAAE,IAAI,SAAS;KAC9C,CAAC;IAEF,QAAQ,CAAC,uBAAuB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChD,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,uBAAuB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,IAAiB,QAAQ,CAIxB;AAJD,WAAiB,QAAQ;IACV,gCAAuB,GAAG,IAAI,iCAAgB,EAExD,CAAC;AACN,CAAC,EAJgB,QAAQ,wBAAR,QAAQ,QAIxB"}
@@ -1,74 +1,99 @@
1
- import type { FieldGroupSerialized, FormBuilder } from "../base/form";
2
- import type { WatchAction } from "../base/types/watch";
1
+ import type { FormBuilder } from "../base/form";
3
2
  import type { ZodType, ZodTypeDef } from "zod";
4
3
  import type { PlacementSide } from "../component";
5
4
  import type { TenantMember } from "../db";
6
5
  import type { MaybePromise } from "../types";
6
+ /**
7
+ * Where an extension's fields sit among the invite form's own. `anchorField`
8
+ * names a top-level field (or field group) id of the invite form; without one,
9
+ * `before` puts the block above every own field and `after`/`end` below them.
10
+ */
7
11
  export interface InviteExtensionPlacement {
8
12
  side?: PlacementSide;
9
13
  anchorField?: string;
14
+ /**
15
+ * Breaks the tie when several extensions land at the same spot: lower first,
16
+ * equal orders fall back to the extension key — never to module start order.
17
+ */
10
18
  order?: number;
11
19
  }
12
- export interface ResolvedInvitePlacement {
13
- side: PlacementSide;
14
- anchorField?: string;
15
- order: number;
16
- }
20
+ /** The invitation an extension's payload is being delivered for. */
17
21
  export interface InviteExtensionContext {
18
22
  tenantId: string;
19
23
  email: string;
24
+ /** Stable durable delivery identity. Handlers must deduplicate effects when present. */
20
25
  deliveryId?: string;
26
+ /**
27
+ * Unset when the invitee already had an account: they are added to the
28
+ * tenant straight away and no `user_invites` row is ever written.
29
+ */
21
30
  inviteId?: string;
22
31
  }
23
32
  export type InviteCleanupReason = "invite-deleted" | "member-removed";
33
+ /** What went away, so a contributor knows which of its data to drop. */
24
34
  export interface InviteCleanupContext {
25
35
  reason: InviteCleanupReason;
26
36
  tenantId: string;
37
+ /** Stable durable delivery identity. Cleanup must tolerate concurrent retries. */
27
38
  deliveryId?: string;
39
+ /** Set for `invite-deleted`. */
28
40
  inviteId?: string;
29
41
  email?: string;
42
+ /** Set for `member-removed`. */
30
43
  userId?: string;
31
44
  }
32
45
  export type InviteAcceptHandler<T> = (payload: T, member: TenantMember, context: InviteExtensionContext) => MaybePromise<void>;
46
+ /**
47
+ * Receives the payload an admin just saved on a pending invitation, parsed by
48
+ * the extension's schema, and the one it replaced — `undefined` when the
49
+ * invitation carried none or the schema no longer accepts it.
50
+ */
33
51
  export type InviteUpdateHandler<T> = (payload: T, previous: T | undefined, context: InviteExtensionContext) => MaybePromise<void>;
34
52
  export type InviteCleanupHandler<T> = (payload: T | undefined, context: InviteCleanupContext) => MaybePromise<void>;
35
- export interface InviteDeliveryOptions {
36
- retryOnFailure?: boolean;
37
- }
38
53
  export interface InviteExtensionOptions<T> {
54
+ /**
55
+ * Namespace of the extension, on the invite row and on the form fields it
56
+ * contributes. May not contain `__`, which separates it from the field id.
57
+ */
39
58
  key: string;
59
+ /** Form whose fields are merged into the invite modal. */
40
60
  component: FormBuilder;
61
+ /**
62
+ * Validates the payload, at submit and again at delivery. Its keys are the
63
+ * field ids of `component`, unprefixed.
64
+ *
65
+ * The input side is `unknown` because the schema is handed the raw slice of
66
+ * the submission — which also lets it transform, `onAccept` receiving the
67
+ * output.
68
+ */
41
69
  schema: ZodType<T, ZodTypeDef, unknown>;
70
+ /** Called after membership exists; durable deliveries can replay with the same deliveryId. */
42
71
  onAccept: InviteAcceptHandler<T>;
72
+ /**
73
+ * Called when the invitation is cancelled or replaced, and when a member is
74
+ * removed from the tenant. Not called on acceptance. Durable expiry and
75
+ * retirement can replay concurrently; deduplicate external effects by
76
+ * context.deliveryId and scope resource deletion to context.inviteId.
77
+ */
43
78
  onCleanup?: InviteCleanupHandler<T>;
79
+ /**
80
+ * Whether an admin may change the payload while the invitation is pending,
81
+ * from its edit form. Defaults to `true`: the payload is only ever handed
82
+ * over at acceptance, so an edit before then reads exactly as if the admin
83
+ * had typed the new value when inviting. `false` shows the fields read-only
84
+ * there.
85
+ */
44
86
  editable?: boolean;
87
+ /**
88
+ * Called after an admin saved a changed payload on a pending invitation, for
89
+ * an extension that derives something from it before acceptance. The edit is
90
+ * already stored: a failure is logged, never raised.
91
+ */
45
92
  onUpdate?: InviteUpdateHandler<T>;
93
+ /** Heading of the contributed block. Defaults to the form's own title. */
46
94
  label?: string;
47
95
  description?: string;
48
96
  placement?: InviteExtensionPlacement;
49
97
  }
50
- export interface InviteExtensionInfo {
51
- key: string;
52
- component: FormBuilder;
53
- schema: ZodType<unknown, ZodTypeDef, unknown>;
54
- onAccept: InviteAcceptHandler<unknown>;
55
- onCleanup?: InviteCleanupHandler<unknown>;
56
- editable?: boolean;
57
- onUpdate?: InviteUpdateHandler<unknown>;
58
- label?: string;
59
- description?: string;
60
- placement: ResolvedInvitePlacement;
61
- moduleId?: string;
62
- }
98
+ /** Payloads stored on an invitation, keyed by extension key. */
63
99
  export type InviteExtensionPayloads = Record<string, unknown>;
64
- export interface InviteFieldContribution {
65
- key: string;
66
- side: PlacementSide;
67
- anchorField?: string;
68
- order: number;
69
- editable: boolean;
70
- group: FieldGroupSerialized;
71
- properties: Record<string, unknown>;
72
- requiredProperties: string[];
73
- watchActions: WatchAction[];
74
- }
@@ -1,7 +1,33 @@
1
+ /**
2
+ * Module data carried by a member invitation — the invitation-side counterpart
3
+ * of `@RegisterPageExtension`, split by concern under `./invite-extensions/`:
4
+ *
5
+ * - `types` — the contracts a contributor implements
6
+ * - `registry` — `RegisterInviteExtension` and the registration proxy that
7
+ * binds an extension to its module's lifetime
8
+ * - `availability` — `RegisterInviteAvailability`, which disables the invite
9
+ * action with a reason
10
+ *
11
+ * The rest is driven by the DMS runtime alone and lives under
12
+ * `./invite-extensions/internal/`: the namespacing of contributed fields
13
+ * (`field-ids`), their serialization, placement and merging into the DMS
14
+ * invite modal (`form-slot`), validation at submit, delivery at acceptance and
15
+ * cleanup (`delivery`), and the prefill, validation and notification of a
16
+ * pending invitation's edit (`edit`).
17
+ *
18
+ * `form-slot` claims the invite forms' component slots on import, so importing
19
+ * this barrel is what opens the modal and the edit form to extensions.
20
+ */
21
+ import "./invite-extensions/internal/form-slot";
22
+ import * as availability from "./invite-extensions/internal/availability";
1
23
  export { type InviteAvailabilityResolver, RegisterInviteAvailability, } from "./invite-extensions/availability";
2
- export * from "./invite-extensions/field-ids";
3
- export * from "./invite-extensions/form-slot";
4
- export { internal } from "./invite-extensions/internal";
5
- export { HTTP_BAD_REQUEST } from "./invite-extensions/payload-slices";
6
24
  export * from "./invite-extensions/registry";
7
25
  export * from "./invite-extensions/types";
26
+ /**
27
+ * @internal
28
+ */
29
+ export declare namespace internal {
30
+ const RegisterInviteExtension: import("@antelopejs/interface-core").RegisteringProxy<(info: import("./invite-extensions/internal/types").InviteExtensionInfo) => void>;
31
+ /** Kept for module compatibility; the DMS imports it from `internal/availability`. */
32
+ const ResolveInviteAvailability: typeof availability.ResolveInviteAvailability;
33
+ }