@antelopejs/interface-dms 0.10.4 → 0.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (384) hide show
  1. package/CHANGELOG.md +126 -0
  2. package/README.md +21 -10
  3. package/dist/attachments.d.ts +15 -2
  4. package/dist/attachments.js +14 -1
  5. package/dist/attachments.js.map +1 -1
  6. package/dist/auth/db/models/sessions.model.d.ts +7 -5
  7. package/dist/auth/db/models/sessions.model.js +2 -9
  8. package/dist/auth/db/models/sessions.model.js.map +1 -1
  9. package/dist/auth/db/models/userExternalIdentities.model.d.ts +7 -5
  10. package/dist/auth/db/models/users.model.d.ts +7 -5
  11. package/dist/auth/db/tables/users.table.d.ts +2 -2
  12. package/dist/auth/db/tables/users.table.js.map +1 -1
  13. package/dist/auth/index.d.ts +4 -4
  14. package/dist/auth/internal/jwt-auth-decorator.d.ts +1 -1
  15. package/dist/auth/internal/jwt-auth-decorator.js +6 -3
  16. package/dist/auth/internal/jwt-auth-decorator.js.map +1 -1
  17. package/dist/auth/internal/request-authenticators.d.ts +12 -0
  18. package/dist/auth/internal/request-authenticators.js +53 -10
  19. package/dist/auth/internal/request-authenticators.js.map +1 -1
  20. package/dist/base/activity-feed.d.ts +34 -32
  21. package/dist/base/activity-feed.js +2 -0
  22. package/dist/base/activity-feed.js.map +1 -1
  23. package/dist/base/banner.d.ts +12 -10
  24. package/dist/base/banner.js +2 -0
  25. package/dist/base/banner.js.map +1 -1
  26. package/dist/base/block-registry/internal/describe.js +4 -12
  27. package/dist/base/block-registry/internal/describe.js.map +1 -1
  28. package/dist/base/block-registry/internal/ui.js +1 -1
  29. package/dist/base/block-registry/internal/ui.js.map +1 -1
  30. package/dist/base/card.d.ts +11 -9
  31. package/dist/base/card.js +2 -0
  32. package/dist/base/card.js.map +1 -1
  33. package/dist/base/chart-card.d.ts +4 -2
  34. package/dist/base/chart-card.js +2 -0
  35. package/dist/base/chart-card.js.map +1 -1
  36. package/dist/base/chart-schemas.d.ts +148 -148
  37. package/dist/base/chart.d.ts +65 -0
  38. package/dist/base/chart.js +65 -0
  39. package/dist/base/chart.js.map +1 -1
  40. package/dist/base/code-block.d.ts +5 -3
  41. package/dist/base/code-block.js +2 -0
  42. package/dist/base/code-block.js.map +1 -1
  43. package/dist/base/custom.d.ts +5 -0
  44. package/dist/base/custom.js +5 -0
  45. package/dist/base/custom.js.map +1 -1
  46. package/dist/base/data-types/default/address.d.ts +5 -0
  47. package/dist/base/data-types/default/address.js +5 -0
  48. package/dist/base/data-types/default/address.js.map +1 -1
  49. package/dist/base/data-types/default/choices.d.ts +20 -0
  50. package/dist/base/data-types/default/choices.js +20 -0
  51. package/dist/base/data-types/default/choices.js.map +1 -1
  52. package/dist/base/data-types/default/files.d.ts +22 -5
  53. package/dist/base/data-types/default/files.js +20 -0
  54. package/dist/base/data-types/default/files.js.map +1 -1
  55. package/dist/base/data-types/default/numbers.d.ts +15 -0
  56. package/dist/base/data-types/default/numbers.js +25 -9
  57. package/dist/base/data-types/default/numbers.js.map +1 -1
  58. package/dist/base/data-types/default/relations.d.ts +10 -2
  59. package/dist/base/data-types/default/relations.js +9 -6
  60. package/dist/base/data-types/default/relations.js.map +1 -1
  61. package/dist/base/data-types/default/strings.d.ts +25 -0
  62. package/dist/base/data-types/default/strings.js +25 -0
  63. package/dist/base/data-types/default/strings.js.map +1 -1
  64. package/dist/base/data-types/default-types.d.ts +1 -1
  65. package/dist/base/data-types/field-types.d.ts +10 -0
  66. package/dist/base/data-types/field-types.js +10 -0
  67. package/dist/base/data-types/field-types.js.map +1 -1
  68. package/dist/base/data-types/internal/relation-endpoints.js +1 -0
  69. package/dist/base/data-types/internal/relation-endpoints.js.map +1 -1
  70. package/dist/base/data-types/status-type.d.ts +5 -0
  71. package/dist/base/data-types/status-type.js +5 -0
  72. package/dist/base/data-types/status-type.js.map +1 -1
  73. package/dist/base/display.d.ts +6 -6
  74. package/dist/base/empty-state.d.ts +15 -13
  75. package/dist/base/empty-state.js +2 -0
  76. package/dist/base/empty-state.js.map +1 -1
  77. package/dist/base/form-block-schema.d.ts +50 -50
  78. package/dist/base/form-schema.d.ts +2 -0
  79. package/dist/base/form-schema.js +2 -0
  80. package/dist/base/form-schema.js.map +1 -1
  81. package/dist/base/grid.d.ts +4 -0
  82. package/dist/base/grid.js +4 -0
  83. package/dist/base/grid.js.map +1 -1
  84. package/dist/base/guard.d.ts +30 -28
  85. package/dist/base/guard.js +2 -0
  86. package/dist/base/guard.js.map +1 -1
  87. package/dist/base/helpers/archive-mode-helpers.d.ts +1 -1
  88. package/dist/base/helpers/file-refs.js +15 -15
  89. package/dist/base/helpers/file-refs.js.map +1 -1
  90. package/dist/base/internal/form-schema-validation.js +7 -1
  91. package/dist/base/internal/form-schema-validation.js.map +1 -1
  92. package/dist/base/internal/realtime-topics.js.map +1 -1
  93. package/dist/base/internal/searchable.d.ts +2 -1
  94. package/dist/base/internal/searchable.js +1 -3
  95. package/dist/base/internal/searchable.js.map +1 -1
  96. package/dist/base/key-value-list.d.ts +21 -19
  97. package/dist/base/key-value-list.js +2 -0
  98. package/dist/base/key-value-list.js.map +1 -1
  99. package/dist/base/kpi-card.d.ts +4 -2
  100. package/dist/base/kpi-card.js +2 -0
  101. package/dist/base/kpi-card.js.map +1 -1
  102. package/dist/base/live-toggle.d.ts +2 -0
  103. package/dist/base/live-toggle.js +2 -0
  104. package/dist/base/live-toggle.js.map +1 -1
  105. package/dist/base/meter.d.ts +23 -21
  106. package/dist/base/meter.js +2 -0
  107. package/dist/base/meter.js.map +1 -1
  108. package/dist/base/nav-card-grid.d.ts +24 -19
  109. package/dist/base/nav-card-grid.js +5 -0
  110. package/dist/base/nav-card-grid.js.map +1 -1
  111. package/dist/base/page-toolbar.d.ts +2 -0
  112. package/dist/base/page-toolbar.js +2 -0
  113. package/dist/base/page-toolbar.js.map +1 -1
  114. package/dist/base/period-selector.d.ts +3 -1
  115. package/dist/base/period-selector.js +2 -0
  116. package/dist/base/period-selector.js.map +1 -1
  117. package/dist/base/placeholder.d.ts +2 -0
  118. package/dist/base/placeholder.js +2 -0
  119. package/dist/base/placeholder.js.map +1 -1
  120. package/dist/base/resource-form-schema.d.ts +2 -2
  121. package/dist/base/searchable.d.ts +3 -2
  122. package/dist/base/searchable.js +2 -2
  123. package/dist/base/searchable.js.map +1 -1
  124. package/dist/base/section.d.ts +6 -2
  125. package/dist/base/section.js +4 -0
  126. package/dist/base/section.js.map +1 -1
  127. package/dist/base/stack.d.ts +6 -0
  128. package/dist/base/stack.js +6 -0
  129. package/dist/base/stack.js.map +1 -1
  130. package/dist/base/stat-group.d.ts +16 -14
  131. package/dist/base/stat-group.js +2 -0
  132. package/dist/base/stat-group.js.map +1 -1
  133. package/dist/base/tab.d.ts +10 -8
  134. package/dist/base/tab.js +2 -0
  135. package/dist/base/tab.js.map +1 -1
  136. package/dist/base/table-view/column-display.d.ts +1 -1
  137. package/dist/base/table-view/column-display.js.map +1 -1
  138. package/dist/base/table-view/data-functions.d.ts +10 -4
  139. package/dist/base/table-view/data-functions.js.map +1 -1
  140. package/dist/base/table-view/factory.d.ts +5 -0
  141. package/dist/base/table-view/factory.js +8 -4
  142. package/dist/base/table-view/factory.js.map +1 -1
  143. package/dist/base/table-view/internal/auth.d.ts +17 -3
  144. package/dist/base/table-view/internal/auth.js +26 -5
  145. package/dist/base/table-view/internal/auth.js.map +1 -1
  146. package/dist/base/table-view/internal/column-conditions.d.ts +8 -1
  147. package/dist/base/table-view/internal/column-conditions.js +25 -13
  148. package/dist/base/table-view/internal/column-conditions.js.map +1 -1
  149. package/dist/base/table-view/internal/column-display.d.ts +1 -2
  150. package/dist/base/table-view/internal/column-display.js +3 -9
  151. package/dist/base/table-view/internal/column-display.js.map +1 -1
  152. package/dist/base/table-view/internal/factory-helpers.d.ts +1 -1
  153. package/dist/base/table-view/internal/factory-helpers.js +17 -14
  154. package/dist/base/table-view/internal/factory-helpers.js.map +1 -1
  155. package/dist/base/table-view/internal/factory-lifecycle-created.d.ts +2 -3
  156. package/dist/base/table-view/internal/factory-lifecycle-created.js +5 -5
  157. package/dist/base/table-view/internal/factory-lifecycle-created.js.map +1 -1
  158. package/dist/base/table-view/internal/factory-lifecycle-filter.d.ts +2 -2
  159. package/dist/base/table-view/internal/factory-private-actions.d.ts +2 -2
  160. package/dist/base/table-view/internal/files.d.ts +2 -1
  161. package/dist/base/table-view/internal/files.js +14 -5
  162. package/dist/base/table-view/internal/files.js.map +1 -1
  163. package/dist/base/table-view/internal/footer.d.ts +3 -3
  164. package/dist/base/table-view/internal/footer.js +16 -15
  165. package/dist/base/table-view/internal/footer.js.map +1 -1
  166. package/dist/base/table-view/internal/guards.d.ts +27 -5
  167. package/dist/base/table-view/internal/guards.js +133 -49
  168. package/dist/base/table-view/internal/guards.js.map +1 -1
  169. package/dist/base/table-view/internal/meta-helpers.d.ts +1 -1
  170. package/dist/base/table-view/internal/meta-helpers.js +3 -4
  171. package/dist/base/table-view/internal/meta-helpers.js.map +1 -1
  172. package/dist/base/table-view/internal/meta.js +2 -3
  173. package/dist/base/table-view/internal/meta.js.map +1 -1
  174. package/dist/base/table-view/internal/option-contract.d.ts +9 -1
  175. package/dist/base/table-view/internal/option-footer.d.ts +2 -2
  176. package/dist/base/table-view/internal/option-row-actions.d.ts +1 -1
  177. package/dist/base/table-view/internal/realtime.d.ts +52 -11
  178. package/dist/base/table-view/internal/realtime.js +23 -16
  179. package/dist/base/table-view/internal/realtime.js.map +1 -1
  180. package/dist/base/table-view/internal/resource-form.d.ts +1 -1
  181. package/dist/base/table-view/internal/resource-form.js +1 -1
  182. package/dist/base/table-view/internal/resource-form.js.map +1 -1
  183. package/dist/base/table-view/internal/row-actions-schema.d.ts +12 -12
  184. package/dist/base/table-view/internal/row-rule-shape.d.ts +11 -5
  185. package/dist/base/table-view/internal/row-rule-shape.js +60 -30
  186. package/dist/base/table-view/internal/row-rule-shape.js.map +1 -1
  187. package/dist/base/table-view/internal/row-rules.d.ts +28 -1
  188. package/dist/base/table-view/internal/row-rules.js +8 -19
  189. package/dist/base/table-view/internal/row-rules.js.map +1 -1
  190. package/dist/base/table-view/internal/tabs.d.ts +1 -1
  191. package/dist/base/table-view/internal/tabs.js +1 -4
  192. package/dist/base/table-view/internal/tabs.js.map +1 -1
  193. package/dist/base/table-view/internal/validation.d.ts +2 -2
  194. package/dist/base/table-view/internal/validation.js +7 -7
  195. package/dist/base/table-view/internal/validation.js.map +1 -1
  196. package/dist/base/table-view/meta.d.ts +7 -6
  197. package/dist/base/table-view/meta.js +12 -7
  198. package/dist/base/table-view/meta.js.map +1 -1
  199. package/dist/base/table-view/resource-form.d.ts +3 -1
  200. package/dist/base/table-view/resource-form.js +2 -0
  201. package/dist/base/table-view/resource-form.js.map +1 -1
  202. package/dist/base/table-view/routes.d.ts +73 -21
  203. package/dist/base/table-view/routes.js +13 -10
  204. package/dist/base/table-view/routes.js.map +1 -1
  205. package/dist/base/table-view/schema.d.ts +157 -152
  206. package/dist/base/table-view/schema.js +2 -1
  207. package/dist/base/table-view/schema.js.map +1 -1
  208. package/dist/base/table-view/source.js +4 -1
  209. package/dist/base/table-view/source.js.map +1 -1
  210. package/dist/base/table-view.d.ts +1 -1
  211. package/dist/base/table-view.js.map +1 -1
  212. package/dist/base/top-list-card.d.ts +35 -33
  213. package/dist/base/top-list-card.js +2 -0
  214. package/dist/base/top-list-card.js.map +1 -1
  215. package/dist/base/types/error.js +5 -2
  216. package/dist/base/types/error.js.map +1 -1
  217. package/dist/base/types/guards.d.ts +4 -4
  218. package/dist/base/types/json.d.ts +1 -10
  219. package/dist/base/types/row-action.d.ts +7 -7
  220. package/dist/component-options/confirm-dialog.d.ts +2 -0
  221. package/dist/component-options/confirm-dialog.js.map +1 -1
  222. package/dist/component-options/data-type.d.ts +2 -2
  223. package/dist/component-options/data-type.js +7 -7
  224. package/dist/component-options/data-type.js.map +1 -1
  225. package/dist/component-options/page-layout.d.ts +3 -2
  226. package/dist/component-options/page-layout.js.map +1 -1
  227. package/dist/component-options/row-action.d.ts +14 -9
  228. package/dist/component-slots.d.ts +11 -2
  229. package/dist/component-slots.js +1 -0
  230. package/dist/component-slots.js.map +1 -1
  231. package/dist/component.d.ts +7 -8
  232. package/dist/component.js +17 -25
  233. package/dist/component.js.map +1 -1
  234. package/dist/data-controllers/members.d.ts +11 -7
  235. package/dist/data-controllers/members.js +1 -1
  236. package/dist/data-controllers/members.js.map +1 -1
  237. package/dist/data-controllers/roles.d.ts +32 -10
  238. package/dist/db/internal/exportJobs.model.d.ts +7 -5
  239. package/dist/db/internal/inviteResolutions.model.d.ts +7 -5
  240. package/dist/db/internal/tenantLifecycle.model.d.ts +15 -7
  241. package/dist/db/internal/tenantLifecycle.model.js +16 -7
  242. package/dist/db/internal/tenantLifecycle.model.js.map +1 -1
  243. package/dist/db/models/roles.model.d.ts +7 -5
  244. package/dist/db/models/tenantMembers.model.d.ts +7 -5
  245. package/dist/db/models/tenants.model.d.ts +7 -5
  246. package/dist/db/models/user_invites.model.d.ts +7 -5
  247. package/dist/guards.d.ts +1 -1
  248. package/dist/hooks.d.ts +1 -2
  249. package/dist/hooks.js +33 -26
  250. package/dist/hooks.js.map +1 -1
  251. package/dist/internal/attachments.d.ts +2 -2
  252. package/dist/internal/component-builder.js +2 -1
  253. package/dist/internal/component-builder.js.map +1 -1
  254. package/dist/internal/component-serialization.d.ts +2 -4
  255. package/dist/internal/component-serialization.js +4 -3
  256. package/dist/internal/component-serialization.js.map +1 -1
  257. package/dist/internal/component-slots.d.ts +19 -2
  258. package/dist/internal/component-slots.js +35 -12
  259. package/dist/internal/component-slots.js.map +1 -1
  260. package/dist/internal/component-watch-filter.d.ts +11 -0
  261. package/dist/internal/component-watch-filter.js +22 -0
  262. package/dist/internal/component-watch-filter.js.map +1 -0
  263. package/dist/internal/component-watches.js +0 -1
  264. package/dist/internal/component-watches.js.map +1 -1
  265. package/dist/internal/own-entry.d.ts +7 -0
  266. package/dist/internal/own-entry.js +13 -0
  267. package/dist/internal/own-entry.js.map +1 -0
  268. package/dist/internal/uploads.d.ts +30 -0
  269. package/dist/internal/uploads.js +19 -0
  270. package/dist/internal/uploads.js.map +1 -1
  271. package/dist/invite-extension-payloads.d.ts +14 -2
  272. package/dist/invite-extensions/internal/delivery.js +1 -2
  273. package/dist/invite-extensions/internal/delivery.js.map +1 -1
  274. package/dist/invite-extensions/internal/edit.d.ts +2 -1
  275. package/dist/invite-extensions/internal/edit.js +8 -9
  276. package/dist/invite-extensions/internal/edit.js.map +1 -1
  277. package/dist/invite-extensions/internal/form-slot.js +8 -15
  278. package/dist/invite-extensions/internal/form-slot.js.map +1 -1
  279. package/dist/invite-extensions/internal/payload-slices.d.ts +33 -3
  280. package/dist/invite-extensions/internal/payload-slices.js +84 -19
  281. package/dist/invite-extensions/internal/payload-slices.js.map +1 -1
  282. package/dist/invite-extensions/internal/types.d.ts +10 -1
  283. package/dist/invite-resolution.js +6 -4
  284. package/dist/invite-resolution.js.map +1 -1
  285. package/dist/json.d.ts +10 -0
  286. package/dist/json.js +3 -0
  287. package/dist/json.js.map +1 -0
  288. package/dist/layout-banners.d.ts +5 -2
  289. package/dist/layout-banners.js.map +1 -1
  290. package/dist/page/controllers.d.ts +2 -2
  291. package/dist/page/internal/extension-validation.js +3 -2
  292. package/dist/page/internal/extension-validation.js.map +1 -1
  293. package/dist/page/internal/metadata-layout.js +1 -1
  294. package/dist/page/internal/metadata-layout.js.map +1 -1
  295. package/dist/page/internal/metadata-publish.js +3 -2
  296. package/dist/page/internal/metadata-publish.js.map +1 -1
  297. package/dist/page/internal/metadata-registration.js +5 -4
  298. package/dist/page/internal/metadata-registration.js.map +1 -1
  299. package/dist/page/internal/metadata-upload-registration.d.ts +4 -2
  300. package/dist/page/internal/metadata-upload-registration.js +13 -4
  301. package/dist/page/internal/metadata-upload-registration.js.map +1 -1
  302. package/dist/page/internal/metadata-uploads.d.ts +5 -5
  303. package/dist/page/internal/metadata-uploads.js +4 -8
  304. package/dist/page/internal/metadata-uploads.js.map +1 -1
  305. package/dist/page/internal/page-record.d.ts +2 -3
  306. package/dist/page/internal/page-record.js +23 -16
  307. package/dist/page/internal/page-record.js.map +1 -1
  308. package/dist/page/layout-filter.js +17 -6
  309. package/dist/page/layout-filter.js.map +1 -1
  310. package/dist/page/metadata.js +5 -7
  311. package/dist/page/metadata.js.map +1 -1
  312. package/dist/request-tenant.d.ts +10 -4
  313. package/dist/request-tenant.js +16 -34
  314. package/dist/request-tenant.js.map +1 -1
  315. package/dist/tenant-export.d.ts +2 -1
  316. package/dist/tenant-lifecycle.d.ts +43 -4
  317. package/dist/tenant-lifecycle.js +97 -18
  318. package/dist/tenant-lifecycle.js.map +1 -1
  319. package/dist/types.d.ts +20 -0
  320. package/dist/uploads.d.ts +1 -1
  321. package/dist/uploads.js +39 -60
  322. package/dist/uploads.js.map +1 -1
  323. package/dist/utils/fire-and-forget.js.map +1 -1
  324. package/dist/utils/internal/decorated-class.d.ts +14 -0
  325. package/dist/utils/internal/decorated-class.js +37 -0
  326. package/dist/utils/internal/decorated-class.js.map +1 -0
  327. package/dist/utils/internal/type-check.d.ts +9 -0
  328. package/dist/utils/internal/type-check.js +13 -5
  329. package/dist/utils/internal/type-check.js.map +1 -1
  330. package/dist/utils/internal/value-parser.d.ts +1 -1
  331. package/dist/utils/internal/value-parser.js +22 -9
  332. package/dist/utils/internal/value-parser.js.map +1 -1
  333. package/dist/watch-actions.d.ts +1 -1
  334. package/docs/1.core/1.introduction.md +82 -77
  335. package/docs/1.core/10.layout-banners.md +57 -45
  336. package/docs/1.core/11.modules-and-dynamic-menus.md +178 -0
  337. package/docs/1.core/12.frontend-modules-and-request-helpers.md +155 -0
  338. package/docs/1.core/13.tenant-data-export.md +120 -0
  339. package/docs/1.core/2.pages-and-modules.md +140 -367
  340. package/docs/1.core/3.components.md +21 -22
  341. package/docs/1.core/4.permissions.md +92 -71
  342. package/docs/1.core/5.tenancy.md +150 -86
  343. package/docs/1.core/6.invites.md +90 -65
  344. package/docs/1.core/7.hooks.md +96 -166
  345. package/docs/1.core/8.realtime.md +44 -45
  346. package/docs/1.core/9.quick-actions.md +37 -30
  347. package/docs/2.auth/1.introduction.md +33 -35
  348. package/docs/2.auth/2.authentication.md +60 -38
  349. package/docs/2.auth/3.tokens-and-sessions.md +56 -55
  350. package/docs/2.auth/4.users.md +79 -51
  351. package/docs/2.auth/5.external-identities.md +25 -26
  352. package/docs/3.base/1.introduction.md +64 -60
  353. package/docs/3.base/10.display-blocks.md +15 -16
  354. package/docs/3.base/11.page-layouts.md +270 -0
  355. package/docs/3.base/12.table-row-actions.md +122 -0
  356. package/docs/3.base/13.table-filters-and-forms.md +104 -0
  357. package/docs/3.base/14.table-events-and-helpers.md +114 -0
  358. package/docs/3.base/15.table-sources-and-gates.md +24 -0
  359. package/docs/3.base/2.types.md +44 -41
  360. package/docs/3.base/3.forms.md +27 -28
  361. package/docs/3.base/4.tables.md +35 -368
  362. package/docs/3.base/5.charts-and-widgets.md +28 -29
  363. package/docs/3.base/6.layout.md +21 -270
  364. package/docs/3.base/8.data-types.md +39 -40
  365. package/docs/3.base/9.helpers.md +36 -38
  366. package/docs/4.notifications/1.introduction.md +22 -26
  367. package/docs/4.notifications/2.categories-and-subjects.md +58 -55
  368. package/docs/4.notifications/3.sending.md +72 -68
  369. package/docs/5.html-render/1.introduction.md +119 -81
  370. package/docs/5.html-render/2.built-in-emails.md +71 -51
  371. package/docs/index.md +18 -29
  372. package/docs/tsconfig.json +4 -0
  373. package/package.json +11 -11
  374. package/docs/images/emails-admin-invite.png +0 -0
  375. package/docs/images/emails-change-notice.png +0 -0
  376. package/docs/images/emails-change-verification.png +0 -0
  377. package/docs/images/emails-digest-logo-dark.png +0 -0
  378. package/docs/images/emails-digest-logo-light.png +0 -0
  379. package/docs/images/emails-digest.png +0 -0
  380. package/docs/images/emails-export-partial.png +0 -0
  381. package/docs/images/emails-export-ready.png +0 -0
  382. package/docs/images/emails-reset-password.png +0 -0
  383. package/docs/images/emails-two-factor.png +0 -0
  384. package/docs/images/emails-user-validation.png +0 -0
package/dist/guards.d.ts CHANGED
@@ -14,7 +14,7 @@ export declare namespace internal {
14
14
  * @param options Tenant guard options, e.g. to skip the tenant access gate
15
15
  * @returns Authentication decorator
16
16
  */
17
- export declare const AuthUserWithPermission: (target: ComponentTargetInput | ControllerClass | Action, options?: TenantGuardOptions) => import("@antelopejs/interface-core/decorators").ClassDecorator<import("@antelopejs/interface-core/decorators").Class<any, any[]>> & import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
17
+ export declare const AuthUserWithPermission: (target: ComponentTargetInput | ControllerClass | Action, options?: TenantGuardOptions) => import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ClassDecorator<import("@antelopejs/interface-core/decorators").Class<object, any[]>> & import("@antelopejs/interface-core/decorators").ParameterDecorator;
18
18
  export interface TenantGuardOptions {
19
19
  /**
20
20
  * Skip the tenant access gate for this route. Reserved for routes that must
package/dist/hooks.d.ts CHANGED
@@ -1,7 +1,6 @@
1
1
  import type { InviteExtensionPayloads } from "./invite-extension-payloads";
2
2
  import type { TenantDataExportContribution, TenantExportArchive } from "./tenant-export";
3
3
  export * from "./tenant-export";
4
- export type HookCallback = (...args: any[]) => any;
5
4
  export declare enum Hook {
6
5
  /**
7
6
  * The database schemas are registered and the DMS is about to serve.
@@ -320,4 +319,4 @@ export declare function SettleHook<H extends StickyHook>(name: H, ...args: HookS
320
319
  * to be settled again.
321
320
  */
322
321
  export declare function UnsettleHook(name: StickyHook): void;
323
- export declare function CollectHooks<H extends Hook>(name: H, ...args: HookSignatures[H]["args"]): Promise<HookSignatures[H]["result"][]>;
322
+ export declare function CollectHooks<H extends Hook>(name: H, ...args: HookSignatures[H]["args"]): Promise<Awaited<HookHandlerResult<H>>[]>;
package/dist/hooks.js CHANGED
@@ -92,34 +92,40 @@ var Hook;
92
92
  */
93
93
  Hook["USER_DELETED"] = "user:deleted";
94
94
  })(Hook || (exports.Hook = Hook = {}));
95
- const hooksRegistry = new Map();
96
- const settledHooks = new owned_registry_1.OwnedRegistry();
97
- function getHooks(name) {
98
- const existing = hooksRegistry.get(name);
99
- if (existing)
100
- return existing;
101
- const hooks = new owned_registry_1.OwnedRegistry();
102
- hooksRegistry.set(name, hooks);
103
- return hooks;
104
- }
105
- function logHookFailure(name, error) {
106
- logging_1.Logging.Error(`Hook '${name}' execution failed:`, error);
95
+ class HookState {
96
+ handlers = new owned_registry_1.OwnedRegistry();
97
+ settled = new owned_registry_1.OwnedRegistry();
107
98
  }
108
- function findSettledHook(name) {
109
- return settledHooks.values().find((settled) => settled.name === name);
99
+ const hookStates = {
100
+ [Hook.DATABASE_INITIALIZED]: new HookState(),
101
+ [Hook.TENANT_BEING_PROVISIONED]: new HookState(),
102
+ [Hook.TENANT_DELETED]: new HookState(),
103
+ [Hook.TENANT_DATA_EXPORT]: new HookState(),
104
+ [Hook.INVITE_BEING_CREATED]: new HookState(),
105
+ [Hook.INVITE_CREATED]: new HookState(),
106
+ [Hook.INVITE_DELETED]: new HookState(),
107
+ [Hook.MEMBER_BEING_ADDED]: new HookState(),
108
+ [Hook.MEMBER_BEING_CHANGED]: new HookState(),
109
+ [Hook.MEMBER_ADDED]: new HookState(),
110
+ [Hook.MEMBER_REMOVED]: new HookState(),
111
+ [Hook.USER_DELETED]: new HookState(),
112
+ [Hook.USER_REGISTERED]: new HookState(),
113
+ };
114
+ function getHooks(name) {
115
+ return hookStates[name].handlers;
110
116
  }
111
117
  /**
112
118
  * Runs a handler registered after its hook settled, without blocking the
113
119
  * registration: the registering module's `construct()` or `start()` neither
114
120
  * waits for it nor sees its failure.
115
121
  */
116
- function runLateHandler(settled, callback, owner) {
122
+ function runLateHandler(name, settled, callback, owner) {
117
123
  const run = async () => callback(...settled.args);
118
124
  const runAsOwner = async () => owner ? (0, interface_core_1.RunWithResponsibleModule)(owner, run) : run();
119
125
  void Promise.resolve()
120
126
  .then(runAsOwner)
121
127
  .catch((error) => {
122
- logging_1.Logging.Error(`Hook '${settled.name}' handler of module '${owner ?? "unknown"}' failed:`, error);
128
+ logging_1.Logging.Error(`Hook '${name}' handler of module '${owner ?? "unknown"}' failed:`, error);
123
129
  });
124
130
  }
125
131
  /**
@@ -140,9 +146,9 @@ function RegisterHook(name, callback, options) {
140
146
  callback,
141
147
  moduleId: options?.moduleId ?? owner,
142
148
  });
143
- const settled = findSettledHook(name);
149
+ const [settled] = hookStates[name].settled.values();
144
150
  if (settled)
145
- runLateHandler(settled, callback, owner);
151
+ runLateHandler(name, settled, callback, owner);
146
152
  }
147
153
  /**
148
154
  * Drop a handler registered with {@link RegisterHook}, for a module that stops
@@ -175,7 +181,7 @@ function RegisterTenantDataExportContributor(moduleId, handler) {
175
181
  }
176
182
  async function ExecuteHooks(name, ...args) {
177
183
  for (const hook of getHooks(name).values()) {
178
- await hook.callback(...args);
184
+ await Promise.resolve(hook.callback(...args));
179
185
  }
180
186
  }
181
187
  /**
@@ -193,32 +199,33 @@ async function SettleHook(name, ...args) {
193
199
  while (pending.length > 0) {
194
200
  for (const hook of pending) {
195
201
  ran.add(hook);
196
- await hook.callback(...args);
202
+ await Promise.resolve(hook.callback(...args));
197
203
  }
198
204
  pending = getHooks(name)
199
205
  .values()
200
206
  .filter((hook) => !ran.has(hook));
201
207
  }
202
- settledHooks.add({ name, args });
208
+ hookStates[name].settled.add({ args });
203
209
  }
204
210
  /**
205
211
  * End what {@link SettleHook} started: later registrations wait for the hook
206
212
  * to be settled again.
207
213
  */
208
214
  function UnsettleHook(name) {
209
- const isSettled = (settled) => settled.name === name;
210
- while (settledHooks.has(isSettled))
211
- settledHooks.remove(isSettled);
215
+ const { settled } = hookStates[name];
216
+ const always = () => true;
217
+ while (settled.has(always))
218
+ settled.remove(always);
212
219
  }
213
220
  async function CollectHooks(name, ...args) {
214
221
  const results = [];
215
222
  for (const hook of getHooks(name).values()) {
216
223
  try {
217
- const value = await hook.callback(...args);
224
+ const value = await Promise.resolve(hook.callback(...args));
218
225
  results.push(value);
219
226
  }
220
227
  catch (error) {
221
- logHookFailure(name, error);
228
+ logging_1.Logging.Error(`Hook '${name}' execution failed:`, error);
222
229
  }
223
230
  }
224
231
  return results;
package/dist/hooks.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../src/hooks.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  import type { RequestContext } from "@antelopejs/interface-api";
2
- import type { DataControllerCallback } from "@antelopejs/interface-data-api";
2
+ import type { DataControllerCallback, DataControllerInstance } from "@antelopejs/interface-data-api";
3
3
  /**
4
4
  * Trusted inputs used to wrap a table-view attachment write.
5
5
  *
6
6
  * @internal
7
7
  */
8
8
  export interface TableViewAttachmentSaveRequest {
9
- controller: unknown;
9
+ controller: DataControllerInstance;
10
10
  route: DataControllerCallback;
11
11
  context: RequestContext;
12
12
  params: unknown;
@@ -8,6 +8,7 @@ exports.warnUnknownChild = warnUnknownChild;
8
8
  exports.setButton = setButton;
9
9
  /** @internal */
10
10
  const logging_1 = require("@antelopejs/interface-core/logging");
11
+ const own_entry_1 = require("./own-entry");
11
12
  /** @internal */
12
13
  function mergeBuilderOptions(options, update, partial) {
13
14
  const state = {
@@ -50,7 +51,7 @@ function warnUnknownChild(children, childId, name) {
50
51
  }
51
52
  /** @internal */
52
53
  function setButton(buttons, name, id, info) {
53
- if (buttons()[id]) {
54
+ if ((0, own_entry_1.ownEntry)(buttons(), id)) {
54
55
  logging_1.Logging.Warn(`Duplicate button id "${id}" in component "${name()}"`);
55
56
  }
56
57
  buttons()[id] = { id, ...info };
@@ -1 +1 @@
1
- {"version":3,"file":"component-builder.js","sourceRoot":"","sources":["../../src/internal/component-builder.ts"],"names":[],"mappings":";;AAUA,kDAeC;AAGD,kCAIC;AAGD,kCAUC;AAGD,kCAeC;AAGD,4CAUC;AAGD,8BAUC;AAzFD,gBAAgB;AAChB,gEAA6D;AAQ7D,gBAAgB;AAChB,SAAgB,mBAAmB,CACjC,OAA8C,EAC9C,MAAwD,EACxD,OAAyB;IAEzB,MAAM,KAAK,GAAG;QACZ,IAAI,OAAO;YACT,OAAO,OAAO,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;IACF,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,iBAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IACD,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,gBAAgB;AAChB,SAAgB,WAAW,CACzB,aAAqB;IAErB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACpE,CAAC;AAED,gBAAgB;AAChB,SAAgB,WAAW,CACzB,aAAqB,EACrB,OAAsB,EACtB,QAAgD;IAEhD,OAAO;QACL,aAAa;QACb,OAAO;QACP,QAAQ,EAAE,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;KACzD,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,SAAgB,WAAW,CACzB,QAA6C,EAC7C,IAAkB,EAClB,KAIC;IAED,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC1C,IAAI,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACtD,iBAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,mBAAmB,IAAI,EAAE,GAAG,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,EAAE,GAAG,QAAQ,IAAI,EAAE,CAAC;IACpD,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,gBAAgB;AAChB,SAAgB,gBAAgB,CAC9B,QAAuC,EACvC,OAAe,EACf,IAAkB;IAElB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;QACpD,iBAAO,CAAC,IAAI,CACV,8BAA8B,OAAO,mBAAmB,IAAI,EAAE,iCAAiC,CAChG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,gBAAgB;AAChB,SAAgB,SAAS,CACvB,OAA2C,EAC3C,IAAkB,EAClB,EAAU,EACV,IAA+C;IAE/C,IAAI,OAAO,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC;QAClB,iBAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,mBAAmB,IAAI,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;AAClC,CAAC"}
1
+ {"version":3,"file":"component-builder.js","sourceRoot":"","sources":["../../src/internal/component-builder.ts"],"names":[],"mappings":";;AAWA,kDAeC;AAGD,kCAIC;AAGD,kCAUC;AAGD,kCAeC;AAGD,4CAUC;AAGD,8BAUC;AA1FD,gBAAgB;AAChB,gEAA6D;AAC7D,2CAAuC;AAQvC,gBAAgB;AAChB,SAAgB,mBAAmB,CACjC,OAA8C,EAC9C,MAAwD,EACxD,OAAyB;IAEzB,MAAM,KAAK,GAAG;QACZ,IAAI,OAAO;YACT,OAAO,OAAO,EAAE,CAAC;QACnB,CAAC;KACF,CAAC;IACF,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACnB,iBAAO,CAAC,IAAI,CAAC,mDAAmD,CAAC,CAAC;QAClE,OAAO;IACT,CAAC;IACD,MAAM,CAAC,EAAE,GAAG,KAAK,CAAC,OAAO,EAAE,GAAG,OAAO,EAAE,EAAE,CAAC,CAAC;AAC7C,CAAC;AAED,gBAAgB;AAChB,SAAgB,WAAW,CACzB,aAAqB;IAErB,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AACpE,CAAC;AAED,gBAAgB;AAChB,SAAgB,WAAW,CACzB,aAAqB,EACrB,OAAsB,EACtB,QAAgD;IAEhD,OAAO;QACL,aAAa;QACb,OAAO;QACP,QAAQ,EAAE,QAAQ,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,SAAS;KACzD,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,SAAgB,WAAW,CACzB,QAA6C,EAC7C,IAAkB,EAClB,KAIC;IAED,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC;IAC1C,IAAI,QAAQ,EAAE,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;QACtD,iBAAO,CAAC,IAAI,CAAC,uBAAuB,EAAE,mBAAmB,IAAI,EAAE,GAAG,CAAC,CAAC;IACtE,CAAC;IACD,MAAM,EAAE,IAAI,EAAE,GAAG,eAAe,EAAE,GAAG,QAAQ,IAAI,EAAE,CAAC;IACpD,QAAQ,EAAE,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,eAAe,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,gBAAgB;AAChB,SAAgB,gBAAgB,CAC9B,QAAuC,EACvC,OAAe,EACf,IAAkB;IAElB,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,OAAO,CAAC,EAAE,CAAC;QACpD,iBAAO,CAAC,IAAI,CACV,8BAA8B,OAAO,mBAAmB,IAAI,EAAE,iCAAiC,CAChG,CAAC;IACJ,CAAC;AACH,CAAC;AAED,gBAAgB;AAChB,SAAgB,SAAS,CACvB,OAA2C,EAC3C,IAAkB,EAClB,EAAU,EACV,IAA+C;IAE/C,IAAI,IAAA,oBAAQ,EAAC,OAAO,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;QAC5B,iBAAO,CAAC,IAAI,CAAC,wBAAwB,EAAE,mBAAmB,IAAI,EAAE,GAAG,CAAC,CAAC;IACvE,CAAC;IACD,OAAO,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,EAAE,GAAG,IAAI,EAAE,CAAC;AAClC,CAAC"}
@@ -1,10 +1,8 @@
1
1
  /** @internal */
2
- import type { ChildSerialized, ComponentAnchor, ComponentInfoPromise, ComponentInfoSerialized } from "../component";
2
+ import type { ComponentAnchor, ComponentInfoPromise, ComponentInfoSerialized } from "../component";
3
3
  /** @internal */
4
4
  export declare function normalizeComponentAnchor(anchor: ComponentAnchor): readonly string[];
5
5
  /** @internal */
6
- export declare function serializedInfo<T>(componentInfo: Awaited<ComponentInfoPromise<T>>, options: T | undefined, children: ChildSerialized[] | undefined): ComponentInfoSerialized<T>;
7
- /** @internal */
8
- export declare function serializeChild(child: NonNullable<Awaited<ComponentInfoPromise>["children"]>[number]): Promise<ChildSerialized>;
6
+ export declare function serializedInfo<T>(componentInfo: Awaited<ComponentInfoPromise<T>>, options: T | undefined): Promise<ComponentInfoSerialized<T>>;
9
7
  /** @internal */
10
8
  export declare function serializeInfoSync<T>(info: ComponentInfoPromise<T>): ComponentInfoSerialized<T>;
@@ -2,7 +2,6 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.normalizeComponentAnchor = normalizeComponentAnchor;
4
4
  exports.serializedInfo = serializedInfo;
5
- exports.serializeChild = serializeChild;
6
5
  exports.serializeInfoSync = serializeInfoSync;
7
6
  /** @internal */
8
7
  function normalizeComponentAnchor(anchor) {
@@ -10,10 +9,12 @@ function normalizeComponentAnchor(anchor) {
10
9
  return typeof anchor === "string" ? anchor.split(".") : [...anchor];
11
10
  }
12
11
  /** @internal */
13
- function serializedInfo(componentInfo, options, children) {
12
+ async function serializedInfo(componentInfo, options) {
13
+ const children = componentInfo.children
14
+ ? await Promise.all(componentInfo.children.map(serializeChild))
15
+ : undefined;
14
16
  return { ...componentInfo, options, children: children ?? [] };
15
17
  }
16
- /** @internal */
17
18
  async function serializeChild(child) {
18
19
  const { id, component, ...additionalProps } = child;
19
20
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"component-serialization.js","sourceRoot":"","sources":["../../src/internal/component-serialization.ts"],"names":[],"mappings":";;AAUA,4DAKC;AAGD,wCAMC;AAGD,wCASC;AAGD,8CAiBC;AA/CD,gBAAgB;AAChB,SAAgB,wBAAwB,CACtC,MAAuB;IAEvB,uIAAuI;IACvI,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACtE,CAAC;AAED,gBAAgB;AAChB,SAAgB,cAAc,CAC5B,aAA+C,EAC/C,OAAsB,EACtB,QAAuC;IAEvC,OAAO,EAAE,GAAG,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;AACjE,CAAC;AAED,gBAAgB;AACT,KAAK,UAAU,cAAc,CAClC,KAAqE;IAErE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,GAAG,KAAK,CAAC;IACpD,OAAO;QACL,EAAE;QACF,SAAS,EAAE,MAAM,SAAS,CAAC,SAAS,EAAE;QACtC,GAAG,eAAe;KACnB,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,SAAgB,iBAAiB,CAC/B,IAA6B;IAE7B,8NAA8N;IAC9N,MAAM,aAAa,GAAG,IAAwB,CAAC;IAC/C,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9D,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,GAAG,KAAK,CAAC;YACpD,OAAO;gBACL,EAAE;gBACF,SAAS,EAAE,SAAS,CAAC,aAAa,EAAE;gBACpC,GAAG,eAAe;aACnB,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC5C,CAAC"}
1
+ {"version":3,"file":"component-serialization.js","sourceRoot":"","sources":["../../src/internal/component-serialization.ts"],"names":[],"mappings":";;AAUA,4DAKC;AAGD,wCAQC;AAcD,8CAiBC;AAhDD,gBAAgB;AAChB,SAAgB,wBAAwB,CACtC,MAAuB;IAEvB,uIAAuI;IACvI,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC;AACtE,CAAC;AAED,gBAAgB;AACT,KAAK,UAAU,cAAc,CAClC,aAA+C,EAC/C,OAAsB;IAEtB,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ;QACrC,CAAC,CAAC,MAAM,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC/D,CAAC,CAAC,SAAS,CAAC;IACd,OAAO,EAAE,GAAG,aAAa,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,IAAI,EAAE,EAAE,CAAC;AACjE,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,KAAqE;IAErE,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,GAAG,KAAK,CAAC;IACpD,OAAO;QACL,EAAE;QACF,SAAS,EAAE,MAAM,SAAS,CAAC,SAAS,EAAE;QACtC,GAAG,eAAe;KACnB,CAAC;AACJ,CAAC;AAED,gBAAgB;AAChB,SAAgB,iBAAiB,CAC/B,IAA6B;IAE7B,8NAA8N;IAC9N,MAAM,aAAa,GAAG,IAAwB,CAAC;IAC/C,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC3B,MAAM,kBAAkB,GAAG,aAAa,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;YAC9D,MAAM,EAAE,EAAE,EAAE,SAAS,EAAE,GAAG,eAAe,EAAE,GAAG,KAAK,CAAC;YACpD,OAAO;gBACL,EAAE;gBACF,SAAS,EAAE,SAAS,CAAC,aAAa,EAAE;gBACpC,GAAG,eAAe;aACnB,CAAC;QACJ,CAAC,CAAC,CAAC;QACH,OAAO,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,kBAAkB,EAAE,CAAC;IAC5D,CAAC;IACD,OAAO,EAAE,GAAG,aAAa,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;AAC5C,CAAC"}
@@ -1,4 +1,5 @@
1
- import type { ComponentSlotResolver } from "../component-slots";
1
+ import type { MaybePromise } from "../types";
2
+ import type { WatchAction } from "../watch-actions";
2
3
  /**
3
4
  * Property a serialized component's options carry to open an extension point.
4
5
  * A component that declares one says "whoever owns this slot may rewrite my
@@ -13,8 +14,23 @@ import type { ComponentSlotResolver } from "../component-slots";
13
14
  * @internal
14
15
  */
15
16
  export declare const COMPONENT_SLOT_KEY = "slotId";
17
+ /**
18
+ * What the walker checks of a form's options before it hands them to a
19
+ * resolver: a `fields` array and, on the node it resolves, a registered slot
20
+ * id. `SlotOptions` is the full contract a resolver sees.
21
+ */
22
+ interface SlotFormInput {
23
+ slotId?: string;
24
+ fields: unknown[];
25
+ }
26
+ /** What a resolver answers: a form's options, with its watch actions. */
27
+ interface SlotFormOptions extends SlotFormInput {
28
+ watchActions?: WatchAction[];
29
+ }
30
+ /** @internal */
31
+ export type SlotFormResolver = (options: SlotFormInput) => MaybePromise<SlotFormOptions>;
16
32
  /** @internal */
17
- export declare const slotResolvers: Map<string, ComponentSlotResolver>;
33
+ export declare const slotResolvers: Map<string, SlotFormResolver>;
18
34
  /**
19
35
  * Resolve every registered slot found in a serialized options tree.
20
36
  *
@@ -25,3 +41,4 @@ export declare const slotResolvers: Map<string, ComponentSlotResolver>;
25
41
  * @internal
26
42
  */
27
43
  export declare function ResolveComponentSlots<T>(options: T): Promise<T>;
44
+ export {};
@@ -17,21 +17,42 @@ const logging_1 = require("@antelopejs/interface-core/logging");
17
17
  * @internal
18
18
  */
19
19
  exports.COMPONENT_SLOT_KEY = "slotId";
20
+ /**
21
+ * The component name `Form` serializes under. A copy: the form's own module
22
+ * sits above this one in the layering, and the walker tests resolve forms built
23
+ * by `Form`, so the two cannot drift apart.
24
+ */
25
+ const SLOT_FORM_COMPONENT_NAME = "dms-form";
20
26
  /** @internal */
21
27
  exports.slotResolvers = new Map();
22
- function resolvableSlotIdOf(node) {
28
+ function isSlotFormOptions(options) {
29
+ if (typeof options !== "object" || options === null)
30
+ return false;
31
+ if (!("fields" in options) || !Array.isArray(options.fields))
32
+ return false;
33
+ return (exports.COMPONENT_SLOT_KEY in options &&
34
+ typeof options[exports.COMPONENT_SLOT_KEY] === "string" &&
35
+ exports.slotResolvers.has(options[exports.COMPONENT_SLOT_KEY]));
36
+ }
37
+ /**
38
+ * The options of a serialized form that opens a slot someone owns. Only a
39
+ * form declares `slotId`, and it always serializes a `fields` array, so a node
40
+ * that is anything else is left alone, whatever its options say.
41
+ */
42
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- Takes one node of the serialized options tree ResolveComponentSlots walks over a page's cached layout, any primitive, array or object, and narrows it with Array.isArray and typeof before reading it.
43
+ function slotFormOptionsOf(node) {
23
44
  // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Serialized option trees contain primitives and arrays as well as slot-bearing objects.
24
45
  if (!node || typeof node !== "object" || Array.isArray(node)) {
25
46
  return undefined;
26
47
  }
27
- const slot = node;
28
- const slotId = slot[exports.COMPONENT_SLOT_KEY];
29
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- A serialized slot id must be a registered string; other option values remain ordinary data.
30
- if (typeof slotId !== "string" || !exports.slotResolvers.has(slotId)) {
48
+ if (!("componentName" in node) ||
49
+ node.componentName !== SLOT_FORM_COMPONENT_NAME) {
31
50
  return undefined;
32
51
  }
33
- return slotId;
52
+ const options = "options" in node ? node.options : undefined;
53
+ return isSlotFormOptions(options) ? options : undefined;
34
54
  }
55
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- Takes one node of the serialized options tree ResolveComponentSlots walks over a page's cached layout, any primitive, array or object, and narrows it with Array.isArray and typeof before reading it.
35
56
  function hasResolvableSlot(node) {
36
57
  if (Array.isArray(node)) {
37
58
  return node.some(hasResolvableSlot);
@@ -40,7 +61,7 @@ function hasResolvableSlot(node) {
40
61
  if (!node || typeof node !== "object") {
41
62
  return false;
42
63
  }
43
- if (resolvableSlotIdOf(node)) {
64
+ if (slotFormOptionsOf(node)) {
44
65
  return true;
45
66
  }
46
67
  return Object.values(node).some(hasResolvableSlot);
@@ -50,6 +71,7 @@ function hasResolvableSlot(node) {
50
71
  * what a resolver contributes is never walked again, which would let a
51
72
  * contribution declaring the slot it was contributed to loop forever.
52
73
  */
74
+ // oxlint-disable-next-line anti-slop/no-unknown-parameters -- Takes one node of the serialized options tree ResolveComponentSlots walks over a page's cached layout, any primitive, array or object, and narrows it with Array.isArray and typeof before reading it.
53
75
  async function resolveNode(node) {
54
76
  if (Array.isArray(node)) {
55
77
  for (const item of node)
@@ -62,18 +84,19 @@ async function resolveNode(node) {
62
84
  }
63
85
  for (const value of Object.values(node))
64
86
  await resolveNode(value);
65
- const slotId = resolvableSlotIdOf(node);
66
- const resolver = slotId ? exports.slotResolvers.get(slotId) : undefined;
87
+ const target = slotFormOptionsOf(node);
88
+ if (!target)
89
+ return;
90
+ const { slotId } = target;
91
+ const resolver = exports.slotResolvers.get(slotId);
67
92
  if (!resolver)
68
93
  return;
69
- // SAFETY: node is a non-null object and SlotOptions imposes no value constraint on its keys.
70
- const target = node;
71
94
  try {
72
95
  const resolved = await resolver(target);
73
96
  if (resolved === target)
74
97
  return;
75
98
  for (const key of Object.keys(target))
76
- delete target[key];
99
+ Reflect.deleteProperty(target, key);
77
100
  Object.assign(target, resolved);
78
101
  }
79
102
  catch (error) {
@@ -1 +1 @@
1
- {"version":3,"file":"component-slots.js","sourceRoot":"","sources":["../../src/internal/component-slots.ts"],"names":[],"mappings":";;;AAmGA,sDAOC;AA1GD,gEAA6D;AAG7D;;;;;;;;;;;;GAYG;AACU,QAAA,kBAAkB,GAAG,QAAQ,CAAC;AAE3C,gBAAgB;AACH,QAAA,aAAa,GAAG,IAAI,GAAG,EAAiC,CAAC;AAEtE,SAAS,kBAAkB,CACzB,IAAkD;IAElD,iJAAiJ;IACjJ,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,MAAM,IAAI,GAA0D,IAAI,CAAC;IACzE,MAAM,MAAM,GAAG,IAAI,CAAC,0BAAkB,CAAC,CAAC;IACxC,sJAAsJ;IACtJ,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,CAAC,qBAAa,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7D,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED,SAAS,iBAAiB,CACxB,IAAkD;IAElD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;IACtC,CAAC;IACD,4IAA4I;IAC5I,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,kBAAkB,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7B,OAAO,IAAI,CAAC;IACd,CAAC;IACD,OAAO,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;AACrD,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,WAAW,CACxB,IAAkD;IAElD,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,KAAK,MAAM,IAAI,IAAI,IAAI;YAAE,MAAM,WAAW,CAAC,IAAI,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IACD,6IAA6I;IAC7I,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QACtC,OAAO;IACT,CAAC;IACD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,MAAM,WAAW,CAAC,KAAK,CAAC,CAAC;IAElE,MAAM,MAAM,GAAG,kBAAkB,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,qBAAa,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IAChE,IAAI,CAAC,QAAQ;QAAE,OAAO;IAEtB,6FAA6F;IAC7F,MAAM,MAAM,GAAG,IAAmB,CAAC;IACnC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,QAAQ,KAAK,MAAM;YAAE,OAAO;QAChC,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC;YAAE,OAAO,MAAM,CAAC,GAAG,CAAC,CAAC;QAC1D,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IAClC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,iBAAO,CAAC,KAAK,CACX,yBAAyB,MAAM,0BAA0B,EACzD,KAAK,CACN,CAAC;IACJ,CAAC;AACH,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,qBAAqB,CAAI,OAAU;IACvD,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;QAChC,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,MAAM,GAAG,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,MAAM,WAAW,CAAC,MAAM,CAAC,CAAC;IAC1B,OAAO,MAAM,CAAC;AAChB,CAAC"}
1
+ {"version":3,"file":"component-slots.js","sourceRoot":"","sources":["../../src/internal/component-slots.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { WatchAction } from "../watch-actions";
2
+ import type { MaybePromise } from "../types";
3
+ /** @internal The callback `ComponentBuilder.watchFilter` installs. */
4
+ export type WatchFilter = (permissions: Set<string>, watches: WatchAction[], permissionId: string) => MaybePromise<WatchAction[]>;
5
+ /**
6
+ * `options` with its `watchActions` narrowed by `filter`; untouched when there
7
+ * is no filter or the options declare no watch.
8
+ *
9
+ * @internal
10
+ */
11
+ export declare function applyWatchFilter<O, R>(owner: R, filter: ((this: R, ...args: Parameters<WatchFilter>) => ReturnType<WatchFilter>) | undefined, permissions: Set<string>, options: O, permissionId: string): Promise<O>;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.applyWatchFilter = applyWatchFilter;
4
+ const component_watches_1 = require("./component-watches");
5
+ /**
6
+ * `options` with its `watchActions` narrowed by `filter`; untouched when there
7
+ * is no filter or the options declare no watch.
8
+ *
9
+ * @internal
10
+ */
11
+ async function applyWatchFilter(owner, filter, permissions, options, permissionId) {
12
+ if (!options || !filter) {
13
+ return options;
14
+ }
15
+ const watches = (0, component_watches_1.readWatchActions)(options);
16
+ if (watches.length === 0) {
17
+ return options;
18
+ }
19
+ const filtered = await filter.call(owner, permissions, watches, permissionId);
20
+ return { ...options, watchActions: filtered };
21
+ }
22
+ //# sourceMappingURL=component-watch-filter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"component-watch-filter.js","sourceRoot":"","sources":["../../src/internal/component-watch-filter.ts"],"names":[],"mappings":";;AAiBA,4CAkBC;AAjCD,2DAAuD;AASvD;;;;;GAKG;AACI,KAAK,UAAU,gBAAgB,CACpC,KAAQ,EACR,MAEa,EACb,WAAwB,EACxB,OAAU,EACV,YAAoB;IAEpB,IAAI,CAAC,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC;QACxB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,OAAO,GAAG,IAAA,oCAAgB,EAAC,OAAO,CAAC,CAAC;IAC1C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IAC9E,OAAO,EAAE,GAAG,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,CAAC;AAChD,CAAC"}
@@ -49,7 +49,6 @@ function buildWatchAction(event, functionId, opts) {
49
49
  functionId,
50
50
  };
51
51
  if (opts?.params !== undefined) {
52
- // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- Consumer declaration merging can supply watch parameter interfaces without dictionary index signatures; transport preserves those values without parsing.
53
52
  watch.params = opts.params;
54
53
  }
55
54
  if (opts?.onParam !== undefined)
@@ -1 +1 @@
1
- {"version":3,"file":"component-watches.js","sourceRoot":"","sources":["../../src/internal/component-watches.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"component-watches.js","sourceRoot":"","sources":["../../src/internal/component-watches.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ /**
2
+ * The entry `table` holds under `key` itself. A key `Object.prototype`
3
+ * supplies (`constructor`, `toString`) is not an entry.
4
+ *
5
+ * @internal
6
+ */
7
+ export declare function ownEntry<Entry>(table: Readonly<Record<string, Entry>>, key: string): Entry | undefined;
@@ -0,0 +1,13 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ownEntry = ownEntry;
4
+ /**
5
+ * The entry `table` holds under `key` itself. A key `Object.prototype`
6
+ * supplies (`constructor`, `toString`) is not an entry.
7
+ *
8
+ * @internal
9
+ */
10
+ function ownEntry(table, key) {
11
+ return Object.hasOwn(table, key) ? table[key] : undefined;
12
+ }
13
+ //# sourceMappingURL=own-entry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"own-entry.js","sourceRoot":"","sources":["../../src/internal/own-entry.ts"],"names":[],"mappings":";;AAMA,4BAKC;AAXD;;;;;GAKG;AACH,SAAgB,QAAQ,CACtB,KAAsC,EACtC,GAAW;IAEX,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5D,CAAC"}
@@ -17,3 +17,33 @@ export type NativeUploadFieldRegistration = UploadTokenClaims & {
17
17
  /** The field's own declared constraints, enforced at presign on top of the global ones. */
18
18
  constraints?: UploadConstraints;
19
19
  };
20
+ /**
21
+ * The keys of a native upload field's options that stamping and registration
22
+ * read, and the token they write back. The options carry more keys than these,
23
+ * and none of them is checked until it is read.
24
+ *
25
+ * @internal
26
+ */
27
+ export interface UploadFieldOptions {
28
+ storage?: unknown;
29
+ path?: unknown;
30
+ attachmentField?: unknown;
31
+ visibility?: unknown;
32
+ constraints?: unknown;
33
+ uploadToken?: unknown;
34
+ }
35
+ /**
36
+ * Read the component options of a file or image field before a token is
37
+ * stamped into them. Absent options become an empty object that carries the
38
+ * token.
39
+ *
40
+ * @throws TypeError when the options are neither absent nor an object, so the
41
+ * field definition is refused where it is stamped or registered.
42
+ * @internal
43
+ */
44
+ export declare function readUploadFieldOptions(field: {
45
+ type: string;
46
+ component: {
47
+ options?: unknown;
48
+ };
49
+ }): UploadFieldOptions;
@@ -1,3 +1,22 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.readUploadFieldOptions = readUploadFieldOptions;
4
+ /**
5
+ * Read the component options of a file or image field before a token is
6
+ * stamped into them. Absent options become an empty object that carries the
7
+ * token.
8
+ *
9
+ * @throws TypeError when the options are neither absent nor an object, so the
10
+ * field definition is refused where it is stamped or registered.
11
+ * @internal
12
+ */
13
+ function readUploadFieldOptions(field) {
14
+ const options = field.component.options ?? {};
15
+ // oxlint-disable-next-line anti-slop/no-runtime-typeof -- Field options are erased contributor values; a primitive or an array cannot carry the upload token.
16
+ if (typeof options !== "object" || Array.isArray(options)) {
17
+ throw new TypeError(`A ${field.type} field's component options must be an object, got ${JSON.stringify(options)}`);
18
+ }
19
+ field.component.options = options;
20
+ return options;
21
+ }
3
22
  //# sourceMappingURL=uploads.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"uploads.js","sourceRoot":"","sources":["../../src/internal/uploads.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"uploads.js","sourceRoot":"","sources":["../../src/internal/uploads.ts"],"names":[],"mappings":";;AA+CA,wDAaC;AAtBD;;;;;;;;GAQG;AACH,SAAgB,sBAAsB,CAAC,KAGtC;IACC,MAAM,OAAO,GAAG,KAAK,CAAC,SAAS,CAAC,OAAO,IAAI,EAAE,CAAC;IAC9C,8JAA8J;IAC9J,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,SAAS,CACjB,KAAK,KAAK,CAAC,IAAI,qDAAqD,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE,CAC9F,CAAC;IACJ,CAAC;IACD,KAAK,CAAC,SAAS,CAAC,OAAO,GAAG,OAAO,CAAC;IAClC,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1,2 +1,14 @@
1
- /** Payloads stored on an invitation, keyed by extension key. */
2
- export type InviteExtensionPayloads = Record<string, unknown>;
1
+ import type { JsonPrimitive } from "./json";
2
+ /**
3
+ * A JSON value an invitation stores for an extension. It is only read back, so
4
+ * read-only arrays and objects are accepted where it is passed in.
5
+ */
6
+ export type InviteExtensionJson = JsonPrimitive | readonly InviteExtensionJson[] | {
7
+ readonly [key: string]: InviteExtensionJson;
8
+ };
9
+ /**
10
+ * Payloads stored on an invitation, keyed by extension key: the JSON an admin
11
+ * submitted for each extension's fields, kept as submitted until the
12
+ * extension's own schema runs at delivery.
13
+ */
14
+ export type InviteExtensionPayloads = Record<string, InviteExtensionJson>;
@@ -27,8 +27,7 @@ const registry_1 = require("./registry");
27
27
  function CollectInviteExtensionPayloads(
28
28
  // oxlint-disable-next-line anti-slop/no-unknown-parameters -- The published submission boundary accepts arbitrary bodies; each extension slice is validated below without replacing its stored input.
29
29
  body) {
30
- // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion, anti-slop/no-unsafe-dictionary-type -- This legacy boundary treats any non-null body as an enumerable form dictionary without validation; the published unknown-input contract and current behavior must stay intact.
31
- const source = (body ?? {});
30
+ const source = (0, payload_slices_1.isInviteFieldValues)(body) ? body : {};
32
31
  const payloads = {};
33
32
  for (const info of (0, registry_1.listInviteExtensions)()) {
34
33
  const slice = (0, payload_slices_1.sliceOf)(info.key, source);
@@ -1 +1 @@
1
- {"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../../src/invite-extensions/internal/delivery.ts"],"names":[],"mappings":";;AA6BA,wEAeC;AAWD,0DAmBC;AAYD,0DAoBC;AAzGD,qDAA0E;AAC1E,yCAA6E;AAQ7E;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,8BAA8B;AAC5C,sMAAsM;AACtM,IAAa;IAEb,sSAAsS;IACtS,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,EAAE,CAA4B,CAAC;IACvD,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAE7C,KAAK,MAAM,IAAI,IAAI,IAAA,+BAAoB,GAAE,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAA,wBAAO,EAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxC,IAAA,iCAAgB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,uBAAuB,CAC3C,QAAoD,EACpD,MAAoB,EACpB,OAA+B,EAC/B,UAAiC,EAAE;IAEnC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,IAAA,+BAAoB,GAAE,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,4BAAW,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,oCAAyB,EAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;YAClE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,cAAc,IAAI,QAAQ,CAAC,MAAM;QAC3C,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;;GASG;AACI,KAAK,UAAU,uBAAuB,CAC3C,QAAoD,EACpD,OAA6B,EAC7B,UAAiC,EAAE;IAEnC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,IAAA,+BAAoB,GAAE,EAAE,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,SAAS;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,CAClB,IAAA,4BAAW,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,KAAK,EAC3C,OAAO,CACR,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,oCAAyB,EAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAC;YACpE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,cAAc,IAAI,QAAQ,CAAC,MAAM;QAC3C,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"delivery.js","sourceRoot":"","sources":["../../../src/invite-extensions/internal/delivery.ts"],"names":[],"mappings":";;AAkCA,wEAcC;AAWD,0DAmBC;AAYD,0DAoBC;AA7GD,qDAK0B;AAC1B,yCAA6E;AAQ7E;;;;;;;;;;;;;;;;;;GAkBG;AACH,SAAgB,8BAA8B;AAC5C,sMAAsM;AACtM,IAAa;IAEb,MAAM,MAAM,GAAG,IAAA,oCAAmB,EAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC;IACrD,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAE7C,KAAK,MAAM,IAAI,IAAI,IAAA,+BAAoB,GAAE,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,IAAA,wBAAO,EAAC,IAAI,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;QACxC,IAAA,iCAAgB,EAAC,IAAI,EAAE,KAAK,CAAC,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IAC7B,CAAC;IAED,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED;;;;;;;;GAQG;AACI,KAAK,UAAU,uBAAuB,CAC3C,QAAoD,EACpD,MAAoB,EACpB,OAA+B,EAC/B,UAAiC,EAAE;IAEnC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,IAAA,+BAAoB,GAAE,EAAE,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,4BAAW,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrD,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;QACtD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,oCAAyB,EAAC,IAAI,CAAC,GAAG,EAAE,qBAAqB,EAAE,KAAK,CAAC,CAAC;YAClE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,cAAc,IAAI,QAAQ,CAAC,MAAM;QAC3C,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,wBAAwB,CAAC,CAAC;AACjE,CAAC;AAED;;;;;;;;;GASG;AACI,KAAK,UAAU,uBAAuB,CAC3C,QAAoD,EACpD,OAA6B,EAC7B,UAAiC,EAAE;IAEnC,MAAM,QAAQ,GAAc,EAAE,CAAC;IAC/B,KAAK,MAAM,IAAI,IAAI,IAAA,+BAAoB,GAAE,EAAE,CAAC;QAC1C,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,SAAS;QAC9B,IAAI,CAAC;YACH,MAAM,IAAI,CAAC,SAAS,CAClB,IAAA,4BAAW,EAAC,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,KAAK,EAC3C,OAAO,CACR,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAA,oCAAyB,EAAC,IAAI,CAAC,GAAG,EAAE,uBAAuB,EAAE,KAAK,CAAC,CAAC;YACpE,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IACD,IAAI,OAAO,CAAC,cAAc,IAAI,QAAQ,CAAC,MAAM;QAC3C,MAAM,IAAI,cAAc,CAAC,QAAQ,EAAE,uBAAuB,CAAC,CAAC;AAChE,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { InviteExtensionContext, InviteExtensionPayloads } from "../types";
2
+ import type { InviteFieldValues } from "./types";
2
3
  /**
3
4
  * The payloads stored on a pending invitation as values of its edit form: each
4
5
  * registered extension's stored slice, under the prefixed ids its fields carry
@@ -7,7 +8,7 @@ import type { InviteExtensionContext, InviteExtensionPayloads } from "../types";
7
8
  *
8
9
  * @internal
9
10
  */
10
- export declare function ReadInviteExtensionFields(payloads: InviteExtensionPayloads | null | undefined): Record<string, unknown>;
11
+ export declare function ReadInviteExtensionFields(payloads: InviteExtensionPayloads | null | undefined): InviteFieldValues;
11
12
  /**
12
13
  * Pull the slices an admin changed out of the edit form of a pending
13
14
  * invitation, each validated against its extension's schema.