@antelopejs/interface-dms 0.13.2 → 0.14.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 (314) hide show
  1. package/CHANGELOG.md +243 -2
  2. package/README.md +9 -9
  3. package/dist/attachments.js +1 -1
  4. package/dist/attachments.js.map +1 -1
  5. package/dist/auth/db/models/sessions.model.d.ts +3 -3
  6. package/dist/auth/db/models/userExternalIdentities.model.d.ts +3 -3
  7. package/dist/auth/db/models/users.model.d.ts +3 -3
  8. package/dist/auth/db/tables/users.table.d.ts +3 -3
  9. package/dist/auth/index.js +3 -5
  10. package/dist/auth/index.js.map +1 -1
  11. package/dist/auth/internal/jwt-auth-decorator.js +1 -2
  12. package/dist/auth/internal/jwt-auth-decorator.js.map +1 -1
  13. package/dist/auth/internal/request-authenticators.js +3 -5
  14. package/dist/auth/internal/request-authenticators.js.map +1 -1
  15. package/dist/auth/internal/request-principal.js +2 -2
  16. package/dist/auth/internal/request-principal.js.map +1 -1
  17. package/dist/base/activity-feed.d.ts +2 -2
  18. package/dist/base/banner.js +2 -2
  19. package/dist/base/banner.js.map +1 -1
  20. package/dist/base/block-registry/helpers.js +1 -1
  21. package/dist/base/block-registry/helpers.js.map +1 -1
  22. package/dist/base/block-registry/internal/describe.js +9 -14
  23. package/dist/base/block-registry/internal/describe.js.map +1 -1
  24. package/dist/base/block-registry/registry.js +2 -2
  25. package/dist/base/block-registry/registry.js.map +1 -1
  26. package/dist/base/block-registry/types.d.ts +1 -1
  27. package/dist/base/chart-card.js +8 -6
  28. package/dist/base/chart-card.js.map +1 -1
  29. package/dist/base/chart-schemas.d.ts +70 -70
  30. package/dist/base/chart.d.ts +1 -1
  31. package/dist/base/chart.js +1 -1
  32. package/dist/base/chart.js.map +1 -1
  33. package/dist/base/code-block.d.ts +1 -1
  34. package/dist/base/code-block.js +2 -2
  35. package/dist/base/code-block.js.map +1 -1
  36. package/dist/base/data-types/compare-types.js +18 -14
  37. package/dist/base/data-types/compare-types.js.map +1 -1
  38. package/dist/base/data-types/default/choices.d.ts +1 -1
  39. package/dist/base/data-types/default/choices.js +17 -16
  40. package/dist/base/data-types/default/choices.js.map +1 -1
  41. package/dist/base/data-types/default/inputs.d.ts +1 -1
  42. package/dist/base/data-types/default/numbers.d.ts +2 -1
  43. package/dist/base/data-types/default/numbers.js +8 -5
  44. package/dist/base/data-types/default/numbers.js.map +1 -1
  45. package/dist/base/data-types/default/relations.d.ts +0 -6
  46. package/dist/base/data-types/default/relations.js +14 -7
  47. package/dist/base/data-types/default/relations.js.map +1 -1
  48. package/dist/base/data-types/default-types.d.ts +0 -1
  49. package/dist/base/data-types/default-types.js +0 -2
  50. package/dist/base/data-types/default-types.js.map +1 -1
  51. package/dist/base/data-types/index.js +0 -1
  52. package/dist/base/data-types/index.js.map +1 -1
  53. package/dist/base/data-types/internal/relation-endpoints.js +5 -3
  54. package/dist/base/data-types/internal/relation-endpoints.js.map +1 -1
  55. package/dist/base/data-types/internal/table-view-meta-slot.d.ts +17 -0
  56. package/dist/base/data-types/internal/table-view-meta-slot.js +25 -0
  57. package/dist/base/data-types/internal/table-view-meta-slot.js.map +1 -0
  58. package/dist/base/empty-state.d.ts +1 -1
  59. package/dist/base/export-jobs.d.ts +47 -19
  60. package/dist/base/export-jobs.js +39 -4
  61. package/dist/base/export-jobs.js.map +1 -1
  62. package/dist/base/form-schema.d.ts +0 -1
  63. package/dist/base/form-schema.js +12 -12
  64. package/dist/base/form-schema.js.map +1 -1
  65. package/dist/base/grid.js +1 -1
  66. package/dist/base/grid.js.map +1 -1
  67. package/dist/base/guard.d.ts +4 -4
  68. package/dist/base/guard.js +1 -1
  69. package/dist/base/guard.js.map +1 -1
  70. package/dist/base/helpers/archive-mode-helpers.js +4 -5
  71. package/dist/base/helpers/archive-mode-helpers.js.map +1 -1
  72. package/dist/base/helpers/file-refs.js +14 -24
  73. package/dist/base/helpers/file-refs.js.map +1 -1
  74. package/dist/base/internal/chart.d.ts +1 -1
  75. package/dist/base/internal/chart.js +1 -1
  76. package/dist/base/internal/chart.js.map +1 -1
  77. package/dist/base/internal/display.js +1 -3
  78. package/dist/base/internal/display.js.map +1 -1
  79. package/dist/base/internal/export-jobs.d.ts +11 -0
  80. package/dist/base/internal/export-jobs.js +11 -0
  81. package/dist/base/internal/export-jobs.js.map +1 -1
  82. package/dist/base/internal/form-block-schema.d.ts +1 -1
  83. package/dist/base/internal/form-block-schema.js +1 -1
  84. package/dist/base/internal/form-block-schema.js.map +1 -1
  85. package/dist/base/internal/form-schema-validation.js +1 -2
  86. package/dist/base/internal/form-schema-validation.js.map +1 -1
  87. package/dist/base/internal/series-bucket.js +2 -2
  88. package/dist/base/internal/series-bucket.js.map +1 -1
  89. package/dist/base/key-value-list.d.ts +10 -10
  90. package/dist/base/kpi-card.js +1 -2
  91. package/dist/base/kpi-card.js.map +1 -1
  92. package/dist/base/meter.d.ts +1 -1
  93. package/dist/base/placeholder.js +1 -1
  94. package/dist/base/placeholder.js.map +1 -1
  95. package/dist/base/query-response.js +2 -3
  96. package/dist/base/query-response.js.map +1 -1
  97. package/dist/base/searchable.d.ts +3 -3
  98. package/dist/base/searchable.js.map +1 -1
  99. package/dist/base/stack.js +1 -1
  100. package/dist/base/stack.js.map +1 -1
  101. package/dist/base/tab.js +2 -3
  102. package/dist/base/tab.js.map +1 -1
  103. package/dist/base/table-view/data-functions.d.ts +10 -11
  104. package/dist/base/table-view/data-functions.js.map +1 -1
  105. package/dist/base/table-view/factory.js +2 -0
  106. package/dist/base/table-view/factory.js.map +1 -1
  107. package/dist/base/table-view/internal/archive-filter.d.ts +21 -0
  108. package/dist/base/table-view/internal/archive-filter.js +48 -0
  109. package/dist/base/table-view/internal/archive-filter.js.map +1 -0
  110. package/dist/base/table-view/internal/auth.d.ts +2 -2
  111. package/dist/base/table-view/internal/auth.js +1 -3
  112. package/dist/base/table-view/internal/auth.js.map +1 -1
  113. package/dist/base/table-view/internal/column-conditions.js +3 -12
  114. package/dist/base/table-view/internal/column-conditions.js.map +1 -1
  115. package/dist/base/table-view/internal/data-functions.d.ts +2 -2
  116. package/dist/base/table-view/internal/erase-row-type.d.ts +4 -0
  117. package/dist/base/table-view/internal/erase-row-type.js +12 -0
  118. package/dist/base/table-view/internal/erase-row-type.js.map +1 -0
  119. package/dist/base/table-view/internal/factory-helpers.js +9 -5
  120. package/dist/base/table-view/internal/factory-helpers.js.map +1 -1
  121. package/dist/base/table-view/internal/factory-lifecycle-created.js +3 -2
  122. package/dist/base/table-view/internal/factory-lifecycle-created.js.map +1 -1
  123. package/dist/base/table-view/internal/factory-lifecycle-options.js +2 -2
  124. package/dist/base/table-view/internal/factory-lifecycle-options.js.map +1 -1
  125. package/dist/base/table-view/internal/factory-private-actions.js +5 -6
  126. package/dist/base/table-view/internal/factory-private-actions.js.map +1 -1
  127. package/dist/base/table-view/internal/footer.js +21 -13
  128. package/dist/base/table-view/internal/footer.js.map +1 -1
  129. package/dist/base/table-view/internal/guards.d.ts +1 -1
  130. package/dist/base/table-view/internal/guards.js +14 -12
  131. package/dist/base/table-view/internal/guards.js.map +1 -1
  132. package/dist/base/table-view/internal/meta-helpers.js +7 -3
  133. package/dist/base/table-view/internal/meta-helpers.js.map +1 -1
  134. package/dist/base/table-view/internal/meta.js +18 -8
  135. package/dist/base/table-view/internal/meta.js.map +1 -1
  136. package/dist/base/table-view/internal/nav-badges.js +4 -7
  137. package/dist/base/table-view/internal/nav-badges.js.map +1 -1
  138. package/dist/base/table-view/internal/option-views.d.ts +7 -4
  139. package/dist/base/table-view/internal/realtime.js +8 -13
  140. package/dist/base/table-view/internal/realtime.js.map +1 -1
  141. package/dist/base/table-view/internal/request-filter.js +2 -3
  142. package/dist/base/table-view/internal/request-filter.js.map +1 -1
  143. package/dist/base/table-view/internal/resource-form.js +3 -1
  144. package/dist/base/table-view/internal/resource-form.js.map +1 -1
  145. package/dist/base/table-view/internal/row-actions-schema.d.ts +6 -6
  146. package/dist/base/table-view/internal/row-rules.js +2 -2
  147. package/dist/base/table-view/internal/row-rules.js.map +1 -1
  148. package/dist/base/table-view/internal/tabs.js +4 -6
  149. package/dist/base/table-view/internal/tabs.js.map +1 -1
  150. package/dist/base/table-view/internal/writer.js +2 -2
  151. package/dist/base/table-view/internal/writer.js.map +1 -1
  152. package/dist/base/table-view/meta.d.ts +5 -5
  153. package/dist/base/table-view/meta.js +9 -3
  154. package/dist/base/table-view/meta.js.map +1 -1
  155. package/dist/base/table-view/routes.d.ts +39 -12
  156. package/dist/base/table-view/routes.js +0 -1
  157. package/dist/base/table-view/routes.js.map +1 -1
  158. package/dist/base/table-view/schema.d.ts +127 -127
  159. package/dist/base/top-list-card.d.ts +4 -4
  160. package/dist/base/top-list-card.js +1 -2
  161. package/dist/base/top-list-card.js.map +1 -1
  162. package/dist/component-options/data-type.d.ts +2 -1
  163. package/dist/component-options/data-type.js +6 -2
  164. package/dist/component-options/data-type.js.map +1 -1
  165. package/dist/component-slots.js +1 -1
  166. package/dist/component-slots.js.map +1 -1
  167. package/dist/connection-access.d.ts +46 -0
  168. package/dist/connection-access.js +73 -0
  169. package/dist/connection-access.js.map +1 -0
  170. package/dist/data-controllers/members.d.ts +15 -2
  171. package/dist/data-controllers/roles.d.ts +15 -2
  172. package/dist/db/internal/exportJobs.model.d.ts +3 -3
  173. package/dist/db/internal/inviteResolutions.model.d.ts +3 -3
  174. package/dist/db/internal/tenantLifecycle.model.d.ts +4 -4
  175. package/dist/db/internal/tenantLifecycle.model.js +2 -3
  176. package/dist/db/internal/tenantLifecycle.model.js.map +1 -1
  177. package/dist/db/models/roles.model.d.ts +3 -3
  178. package/dist/db/models/tenantMembers.model.d.ts +3 -3
  179. package/dist/db/models/tenants.model.d.ts +3 -3
  180. package/dist/db/models/user_invites.model.d.ts +18 -3
  181. package/dist/db/models/user_invites.model.js +28 -0
  182. package/dist/db/models/user_invites.model.js.map +1 -1
  183. package/dist/db/tables/user_invites.table.d.ts +6 -1
  184. package/dist/db/tables/user_invites.table.js +3 -0
  185. package/dist/db/tables/user_invites.table.js.map +1 -1
  186. package/dist/index.d.ts +1 -1
  187. package/dist/index.js +3 -2
  188. package/dist/index.js.map +1 -1
  189. package/dist/internal/component-permissions.js +2 -2
  190. package/dist/internal/component-permissions.js.map +1 -1
  191. package/dist/internal/component-serialization.js +5 -3
  192. package/dist/internal/component-serialization.js.map +1 -1
  193. package/dist/internal/component-slots.js +8 -10
  194. package/dist/internal/component-slots.js.map +1 -1
  195. package/dist/internal/component-watches.js +5 -4
  196. package/dist/internal/component-watches.js.map +1 -1
  197. package/dist/internal/invite-content.d.ts +8 -0
  198. package/dist/internal/invite-content.js +36 -0
  199. package/dist/internal/invite-content.js.map +1 -0
  200. package/dist/internal/tenant-ownership.d.ts +5 -4
  201. package/dist/internal/tenant-ownership.js +5 -4
  202. package/dist/internal/tenant-ownership.js.map +1 -1
  203. package/dist/internal/uploads.js +5 -2
  204. package/dist/internal/uploads.js.map +1 -1
  205. package/dist/invite-extensions/internal/delivery.d.ts +3 -2
  206. package/dist/invite-extensions/internal/delivery.js +3 -2
  207. package/dist/invite-extensions/internal/delivery.js.map +1 -1
  208. package/dist/invite-extensions/internal/form-slot.js +4 -7
  209. package/dist/invite-extensions/internal/form-slot.js.map +1 -1
  210. package/dist/invite-extensions/registry.js +5 -6
  211. package/dist/invite-extensions/registry.js.map +1 -1
  212. package/dist/invite-resolution.d.ts +5 -1
  213. package/dist/invite-resolution.js +10 -26
  214. package/dist/invite-resolution.js.map +1 -1
  215. package/dist/invites.d.ts +5 -0
  216. package/dist/invites.js +27 -1
  217. package/dist/invites.js.map +1 -1
  218. package/dist/notifications/builder.js +17 -21
  219. package/dist/notifications/builder.js.map +1 -1
  220. package/dist/notifications/internal.d.ts +0 -1
  221. package/dist/notifications/internal.js +0 -1
  222. package/dist/notifications/internal.js.map +1 -1
  223. package/dist/notifications/sendable.d.ts +1 -2
  224. package/dist/notifications/sendable.js +1 -12
  225. package/dist/notifications/sendable.js.map +1 -1
  226. package/dist/notifications/types.d.ts +1 -4
  227. package/dist/page/categories.d.ts +6 -0
  228. package/dist/page/categories.js +10 -3
  229. package/dist/page/categories.js.map +1 -1
  230. package/dist/page/controllers.d.ts +6 -9
  231. package/dist/page/controllers.js +9 -7
  232. package/dist/page/controllers.js.map +1 -1
  233. package/dist/page/internal/categories.js +43 -32
  234. package/dist/page/internal/categories.js.map +1 -1
  235. package/dist/page/internal/category-resolution.d.ts +31 -0
  236. package/dist/page/internal/category-resolution.js +63 -0
  237. package/dist/page/internal/category-resolution.js.map +1 -0
  238. package/dist/page/internal/component-target.js +2 -2
  239. package/dist/page/internal/component-target.js.map +1 -1
  240. package/dist/page/internal/controller-options.js +2 -2
  241. package/dist/page/internal/controller-options.js.map +1 -1
  242. package/dist/page/internal/extension-assembly.js +6 -9
  243. package/dist/page/internal/extension-assembly.js.map +1 -1
  244. package/dist/page/internal/layout-filter.js +5 -5
  245. package/dist/page/internal/layout-filter.js.map +1 -1
  246. package/dist/page/internal/metadata-extension-contributions.js +1 -2
  247. package/dist/page/internal/metadata-extension-contributions.js.map +1 -1
  248. package/dist/page/internal/metadata-info.js +19 -7
  249. package/dist/page/internal/metadata-info.js.map +1 -1
  250. package/dist/page/internal/metadata-layout.d.ts +3 -2
  251. package/dist/page/internal/metadata-layout.js.map +1 -1
  252. package/dist/page/internal/metadata-lifecycle.js +1 -4
  253. package/dist/page/internal/metadata-lifecycle.js.map +1 -1
  254. package/dist/page/internal/metadata-publish.js +7 -6
  255. package/dist/page/internal/metadata-publish.js.map +1 -1
  256. package/dist/page/internal/metadata-registration.js +8 -6
  257. package/dist/page/internal/metadata-registration.js.map +1 -1
  258. package/dist/page/internal/metadata-upload-registration.js +4 -8
  259. package/dist/page/internal/metadata-upload-registration.js.map +1 -1
  260. package/dist/page/internal/metadata-uploads.js +4 -7
  261. package/dist/page/internal/metadata-uploads.js.map +1 -1
  262. package/dist/page/internal/nav-badges.js +2 -3
  263. package/dist/page/internal/nav-badges.js.map +1 -1
  264. package/dist/page/internal/page-controller.d.ts +18 -0
  265. package/dist/page/internal/page-controller.js +36 -0
  266. package/dist/page/internal/page-controller.js.map +1 -0
  267. package/dist/page/internal/page-record.js +11 -22
  268. package/dist/page/internal/page-record.js.map +1 -1
  269. package/dist/page/internal/table-view-ids.js +4 -3
  270. package/dist/page/internal/table-view-ids.js.map +1 -1
  271. package/dist/page/metadata.d.ts +3 -3
  272. package/dist/page/metadata.js +6 -4
  273. package/dist/page/metadata.js.map +1 -1
  274. package/dist/page/types.d.ts +8 -2
  275. package/dist/page.d.ts +1 -1
  276. package/dist/page.js +2 -1
  277. package/dist/page.js.map +1 -1
  278. package/dist/permissions.d.ts +2 -1
  279. package/dist/permissions.js +5 -2
  280. package/dist/permissions.js.map +1 -1
  281. package/dist/request-tenant.js +2 -2
  282. package/dist/request-tenant.js.map +1 -1
  283. package/dist/tenant-lifecycle.js +7 -6
  284. package/dist/tenant-lifecycle.js.map +1 -1
  285. package/dist/tenant-provisioning.js +1 -1
  286. package/dist/tenant-provisioning.js.map +1 -1
  287. package/dist/types.d.ts +7 -3
  288. package/dist/uploads.js +7 -8
  289. package/dist/uploads.js.map +1 -1
  290. package/dist/utils/internal/controller-class.d.ts +9 -0
  291. package/dist/utils/internal/controller-class.js +19 -0
  292. package/dist/utils/internal/controller-class.js.map +1 -0
  293. package/dist/utils/internal/row-instance.js +10 -2
  294. package/dist/utils/internal/row-instance.js.map +1 -1
  295. package/dist/utils/internal/value-parser.js +1 -6
  296. package/dist/utils/internal/value-parser.js.map +1 -1
  297. package/docs/1.core/11.modules-and-dynamic-menus.md +3 -3
  298. package/docs/1.core/2.pages-and-modules.md +2 -1
  299. package/docs/1.core/4.permissions.md +2 -2
  300. package/docs/1.core/5.tenancy.md +1 -1
  301. package/docs/1.core/6.invites.md +3 -1
  302. package/docs/2.auth/2.authentication.md +1 -1
  303. package/docs/2.auth/3.tokens-and-sessions.md +1 -1
  304. package/docs/3.base/1.introduction.md +1 -1
  305. package/docs/3.base/14.table-events-and-helpers.md +1 -1
  306. package/docs/3.base/15.table-sources-and-gates.md +14 -2
  307. package/docs/3.base/3.forms.md +1 -1
  308. package/docs/3.base/4.tables.md +1 -1
  309. package/docs/3.base/5.charts-and-widgets.md +3 -3
  310. package/docs/3.base/8.data-types.md +1 -1
  311. package/docs/3.base/9.helpers.md +16 -5
  312. package/docs/4.notifications/3.sending.md +0 -11
  313. package/docs/index.md +1 -1
  314. package/package.json +11 -11
@@ -1 +1 @@
1
- {"version":3,"file":"invite-resolution.js","sourceRoot":"","sources":["../src/invite-resolution.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invite-resolution.js","sourceRoot":"","sources":["../src/invite-resolution.ts"],"names":[],"mappings":";;AAiBA,kDAWC;AAGD,8CAaC;AAwBD,oCA+BC;AAGD,4DAOC;AA7GD,uEAAwD;AACxD,6FAAqE;AAErE,mFAA+E;AAE/E,uEAAiE;AAEjE,oEAA6E;AAC7E,qDAAuD;AACvD,oEAAgF;AAChF,oEAAwE;AACxE,8DAAgE;AAEhE,MAAM,aAAa,GAAG,GAAG,CAAC;AAG1B,wFAAwF;AACjF,KAAK,UAAU,mBAAmB,CACvC,QAAgB,EAChB,QAAgB;IAEhB,MAAM,MAAM,GAAG,MAAM,IAAA,wCAAQ,EAAC,oCAAe,EAAE,QAAQ,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IACvE,IAAI,MAAM;QAAE,OAAO,MAAM,CAAC;IAC1B,MAAM,UAAU,GAAG,MAAM,IAAA,wCAAQ,EAC/B,gDAAsB,EACtB,QAAQ,CACT,CAAC,YAAY,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnC,OAAO,UAAU,EAAE,MAAM,CAAC;AAC5B,CAAC;AAED,0EAA0E;AACnE,KAAK,UAAU,iBAAiB,CACrC,QAAgB,EAChB,MAAkB;IAElB,IAAI,CAAC,MAAM,CAAC,oBAAoB;QAAE,OAAO;IACzC,MAAM,MAAM,GAAG,MAAM,IAAA,wCAAQ,EAAC,gDAAsB,EAAE,QAAQ,CAAC,CAAC,GAAG,CACjE,MAAM,CAAC,oBAAoB,CAC5B,CAAC;IACF,IAAA,2BAAM,EACJ,MAAM,EAAE,SAAS,EACjB,aAAa,EACb,sCAAsC,CACvC,CAAC;AACJ,CAAC;AAED,SAAS,kBAAkB,CACzB,UAA4B,EAC5B,KAAyB;IAEzB,IAAA,2BAAM,EACJ,UAAU,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM;QAChC,UAAU,CAAC,MAAM,KAAK,CAAC,KAAK,CAAC,MAAM,IAAI,IAAI,CAAC,EAC9C,aAAa,EACb,sDAAsD,CACvD,CAAC;IACF,IAAA,2BAAM,EACJ,IAAA,oCAAmB,EAAC,UAAU,CAAC,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC,EAC9D,aAAa,EACb,gDAAgD,CACjD,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACI,KAAK,UAAU,YAAY,CAChC,KAAyB;IAEzB,MAAM,iBAAiB,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC;IACtD,MAAM,KAAK,GAAG,IAAA,wCAAQ,EAAC,gDAAsB,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC;IAC/D,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,YAAY,CAAC,KAAK,CAAC,QAAQ,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IAC5E,IAAA,2BAAM,EACJ,KAAK,CAAC,MAAM,KAAK,UAAU;QACzB,QAAQ;QACR,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,GAAG,IAAI,IAAI,EAAE,EAC/C,aAAa,EACb,sCAAsC,CACvC,CAAC;IACF,IAAA,2BAAM,EACJ,CAAC,KAAK,CAAC,WAAW;QAChB,QAAQ;QACR,CAAC,MAAM,IAAA,wCAAQ,EAAC,oCAAe,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,mBAAmB,CAClE,KAAK,CAAC,MAAM,CACb,CAAC,EACJ,aAAa,EACb,oDAAoD,CACrD,CAAC;IACF,MAAM,aAAa,GAAG;QACpB,GAAG,IAAI,GAAG,CAAC;YACT,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,IAAI,EAAE,CAAC;YAC7C,GAAG,IAAA,+BAAoB,GAAE,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,GAAG,CAAC;SAC5D,CAAC;KACH,CAAC;IACF,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,EAAE,GAAG,KAAK,EAAE,aAAa,EAAE,CAAC,CAAC;IACnE,kBAAkB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IACtC,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,mHAAmH;AAC5G,KAAK,UAAU,wBAAwB,CAC5C,UAA4B;IAE5B,MAAM,IAAA,oCAAmB,EAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC;QAC1D,OAAO,EAAE,MAAM,IAAA,4CAAwB,EAAC,UAAU,CAAC;QACnD,KAAK,EAAE,GAAG,EAAE,CAAC,IAAA,oDAAgC,EAAC,UAAU,CAAC;KAC1D,CAAC,CAAC,CAAC;AACN,CAAC"}
package/dist/invites.d.ts CHANGED
@@ -89,5 +89,10 @@ export interface CreateUserInviteTokenResult {
89
89
  * Low-level: create a `user_invites` row + token for a tenant. Replaces any
90
90
  * existing invite for the same email (within the tenant). Fires
91
91
  * INVITE_DELETED / INVITE_BEING_CREATED / INVITE_CREATED hooks.
92
+ *
93
+ * Concurrent calls that all find no invite for the email keep one, also when
94
+ * another call replaces the invite in between: a call that loses returns the
95
+ * kept invite when it carries the same content, and fails with HTTP 409 when
96
+ * it does not.
92
97
  */
93
98
  export declare function createUserInviteToken(options: CreateUserInviteTokenOptions): Promise<CreateUserInviteTokenResult>;
package/dist/invites.js CHANGED
@@ -7,7 +7,9 @@ exports.INVITE_EXPIRY_DAYS = exports.INVITE_TOKEN_LENGTH = exports.inviteeDispla
7
7
  exports.inviteUserToTenant = inviteUserToTenant;
8
8
  exports.createUserInviteToken = createUserInviteToken;
9
9
  const node_crypto_1 = require("node:crypto");
10
+ const interface_api_util_1 = require("@antelopejs/interface-api-util");
10
11
  const logging_1 = require("@antelopejs/interface-core/logging");
12
+ const interface_database_1 = require("@antelopejs/interface-database");
11
13
  const interface_database_decorators_1 = require("@antelopejs/interface-database-decorators");
12
14
  const db_1 = require("./db");
13
15
  const db_2 = require("./auth/db");
@@ -17,6 +19,7 @@ const time_1 = require("./utils/internal/time");
17
19
  const hooks_1 = require("./hooks");
18
20
  const delivery_1 = require("./invite-extensions/internal/delivery");
19
21
  const invite_resolution_1 = require("./internal/invite-resolution");
22
+ const invite_content_1 = require("./internal/invite-content");
20
23
  const invite_resolution_2 = require("./invite-resolution");
21
24
  const tenant_members_1 = require("./tenant-members");
22
25
  const tenant_ownership_1 = require("./internal/tenant-ownership");
@@ -26,6 +29,7 @@ var invitee_display_name_1 = require("./invitee-display-name");
26
29
  Object.defineProperty(exports, "inviteeDisplayName", { enumerable: true, get: function () { return invitee_display_name_1.inviteeDisplayName; } });
27
30
  exports.INVITE_TOKEN_LENGTH = 64;
28
31
  exports.INVITE_EXPIRY_DAYS = 7;
32
+ const HTTP_CONFLICT = 409;
29
33
  /**
30
34
  * Invite a user (existing or not) to a tenant.
31
35
  *
@@ -114,6 +118,11 @@ async function deliverToExistingMember(tenantId, email, userId, extensions) {
114
118
  * Low-level: create a `user_invites` row + token for a tenant. Replaces any
115
119
  * existing invite for the same email (within the tenant). Fires
116
120
  * INVITE_DELETED / INVITE_BEING_CREATED / INVITE_CREATED hooks.
121
+ *
122
+ * Concurrent calls that all find no invite for the email keep one, also when
123
+ * another call replaces the invite in between: a call that loses returns the
124
+ * kept invite when it carries the same content, and fails with HTTP 409 when
125
+ * it does not.
117
126
  */
118
127
  async function createUserInviteToken(options) {
119
128
  return (0, tenant_members_1.changeTenantMembers)(options.tenantId, async () => ({
@@ -147,7 +156,19 @@ async function createAdmittedInviteToken(options) {
147
156
  asTenantOwner,
148
157
  roleIds,
149
158
  });
150
- await userInviteModel.insert(replacement);
159
+ try {
160
+ await userInviteModel.insert(replacement);
161
+ }
162
+ catch (error) {
163
+ if (!(0, interface_database_1.IsDuplicateKeyError)(error))
164
+ throw error;
165
+ return yieldToWinner(await userInviteModel.getByEmail(email), replacement);
166
+ }
167
+ const rival = await userInviteModel.getOtherByEmail(email, replacement._id);
168
+ if (rival) {
169
+ await userInviteModel.delete(replacement._id);
170
+ return yieldToWinner(rival, replacement);
171
+ }
151
172
  await (0, hooks_1.ExecuteHooks)(hooks_1.Hook.INVITE_CREATED, {
152
173
  tenantId,
153
174
  inviteId: replacement._id,
@@ -158,6 +179,10 @@ async function createAdmittedInviteToken(options) {
158
179
  });
159
180
  return { inviteId: replacement._id, token: replacement.token };
160
181
  }
182
+ function yieldToWinner(winner, lost) {
183
+ (0, interface_api_util_1.assert)(winner && (0, invite_content_1.isSameInviteContent)(winner, lost), HTTP_CONFLICT, "Invitation for this email was created concurrently with other content");
184
+ return { inviteId: winner._id, token: winner.token };
185
+ }
161
186
  function buildInviteSnapshot(options) {
162
187
  return db_1.UserInviteModel.fromPlainData({
163
188
  _id: (0, node_crypto_1.randomUUID)(),
@@ -172,6 +197,7 @@ function buildInviteSnapshot(options) {
172
197
  expiresAt: new Date(Date.now() + exports.INVITE_EXPIRY_DAYS * time_1.MILLISECONDS_PER_DAY),
173
198
  invitedBy: options.invitedBy ?? null,
174
199
  extensions: options.extensions ?? null,
200
+ creationResolutionId: "",
175
201
  });
176
202
  }
177
203
  //# sourceMappingURL=invites.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"invites.js","sourceRoot":"","sources":["../src/invites.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"invites.js","sourceRoot":"","sources":["../src/invites.ts"],"names":[],"mappings":"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"}
@@ -17,43 +17,39 @@ function missingFields(data) {
17
17
  function isComplete(data) {
18
18
  return missingFields(data).length === 0;
19
19
  }
20
+ /**
21
+ * Stores `value` under `field` in `data`, the builder's own data object, and
22
+ * returns the same builder, now recording `field` as set. `Set` is a phantom
23
+ * parameter that only `build`'s `this` parameter reads.
24
+ */
25
+ function filled(builder, data, field, value) {
26
+ data[field] = value;
27
+ // SAFETY: Holds when data is builder's own data object and Next is the one key field holds, as in each setter, which passes this.data and a literal field Next is inferred from: the line above has just stored value under field in data, and Set appears only in the this parameter of build, so the same instance now has Next set.
28
+ return builder;
29
+ }
20
30
  class NotificationBuilder {
21
31
  data = {};
22
32
  icon(value) {
23
- this.data.icon = value;
24
- // SAFETY: The setter has filled icon on this instance; Set tracks filled fields without changing the runtime instance.
25
- return this;
33
+ return filled(this, this.data, "icon", value);
26
34
  }
27
35
  title(value) {
28
- this.data.title = value;
29
- // SAFETY: The setter has filled title on this instance; Set tracks filled fields without changing the runtime instance.
30
- return this;
36
+ return filled(this, this.data, "title", value);
31
37
  }
32
38
  description(value) {
33
- this.data.description = value;
34
- // SAFETY: The setter has filled description on this instance; Set tracks filled fields without changing the runtime instance.
35
- return this;
39
+ return filled(this, this.data, "description", value);
36
40
  }
37
41
  subject(subject) {
38
- this.data.subject = subject;
39
- // SAFETY: The setter has filled subject on this instance; Set tracks filled fields without changing the runtime instance.
40
- return this;
42
+ return filled(this, this.data, "subject", subject);
41
43
  }
42
44
  linkTo(value) {
43
- this.data.linkTo = value;
44
- // SAFETY: The setter has filled linkTo on this instance; Set tracks filled fields without changing the runtime instance.
45
- return this;
45
+ return filled(this, this.data, "linkTo", value);
46
46
  }
47
47
  params(value) {
48
- this.data.params = value;
49
- // SAFETY: The setter has filled params on this instance; Set tracks filled fields without changing the runtime instance.
50
- return this;
48
+ return filled(this, this.data, "params", value);
51
49
  }
52
50
  /** Colours the icon well the notification is listed with. */
53
51
  tone(value) {
54
- this.data.tone = value;
55
- // SAFETY: The setter has filled tone on this instance; Set tracks filled fields without changing the runtime instance.
56
- return this;
52
+ return filled(this, this.data, "tone", value);
57
53
  }
58
54
  build() {
59
55
  if (!isComplete(this.data)) {
@@ -1 +1 @@
1
- {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/notifications/builder.ts"],"names":[],"mappings":";;;AAAA,yCAAkD;AAQlD,MAAM,eAAe,GAAiC;IACpD,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,SAAS,aAAa,CAAC,IAA+B;IACpD,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACjB,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;SAC1C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAC3B,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,UAAU,CAAC,IAA+B;IACjD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED,MAAa,mBAAmB;IACtB,IAAI,GAA8B,EAAE,CAAC;IAE7C,IAAI,CAAC,KAAa;QAChB,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QACvB,uHAAuH;QACvH,OAAO,IAAyC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,IAAI,CAAC,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACxB,wHAAwH;QACxH,OAAO,IAA0C,CAAC;IACpD,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,IAAI,CAAC,IAAI,CAAC,WAAW,GAAG,KAAK,CAAC;QAC9B,8HAA8H;QAC9H,OAAO,IAAgD,CAAC;IAC1D,CAAC;IAED,OAAO,CACL,OAAgC;QAEhC,IAAI,CAAC,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;QAC5B,0HAA0H;QAC1H,OAAO,IAA4C,CAAC;IACtD,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACzB,yHAAyH;QACzH,OAAO,IAA2C,CAAC;IACrD,CAAC;IAED,MAAM,CACJ,KAAsC;QAEtC,IAAI,CAAC,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACzB,yHAAyH;QACzH,OAAO,IAA2C,CAAC;IACrD,CAAC;IAED,6DAA6D;IAC7D,IAAI,CAAC,KAAuB;QAC1B,IAAI,CAAC,IAAI,CAAC,IAAI,GAAG,KAAK,CAAC;QACvB,uHAAuH;QACvH,OAAO,IAAyC,CAAC;IACnD,CAAC;IAED,KAAK;QAGH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,4CAA4C,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClF,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,+BAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;CACF;AA5DD,kDA4DC"}
1
+ {"version":3,"file":"builder.js","sourceRoot":"","sources":["../../src/notifications/builder.ts"],"names":[],"mappings":";;;AAAA,yCAAkD;AAQlD,MAAM,eAAe,GAAiC;IACpD,IAAI,EAAE,IAAI;IACV,KAAK,EAAE,IAAI;IACX,WAAW,EAAE,IAAI;IACjB,OAAO,EAAE,IAAI;CACd,CAAC;AAEF,SAAS,aAAa,CAAC,IAA+B;IACpD,MAAM,QAAQ,GAAG,IAAI,GAAG,CACtB,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC;SACjB,MAAM,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,KAAK,SAAS,CAAC;SAC1C,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAC3B,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,UAAU,CAAC,IAA+B;IACjD,OAAO,aAAa,CAAC,IAAI,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC;AAC1C,CAAC;AAED;;;;GAIG;AACH,SAAS,MAAM,CACb,OAAiC,EACjC,IAA+B,EAC/B,KAAW,EACX,KAA6B;IAE7B,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,CAAC;IACpB,uUAAuU;IACvU,OAAO,OAA0C,CAAC;AACpD,CAAC;AAED,MAAa,mBAAmB;IACtB,IAAI,GAA8B,EAAE,CAAC;IAE7C,IAAI,CAAC,KAAa;QAChB,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,CAAC,KAAa;QACjB,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,WAAW,CAAC,KAAa;QACvB,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,aAAa,EAAE,KAAK,CAAC,CAAC;IACvD,CAAC;IAED,OAAO,CACL,OAAgC;QAEhC,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;IACrD,CAAC;IAED,MAAM,CAAC,KAAa;QAClB,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,MAAM,CACJ,KAAsC;QAEtC,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,QAAQ,EAAE,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,6DAA6D;IAC7D,IAAI,CAAC,KAAuB;QAC1B,OAAO,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,KAAK;QAGH,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,4CAA4C,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAClF,CAAC;QACJ,CAAC;QACD,OAAO,IAAI,+BAAoB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAC7C,CAAC;CACF;AA9CD,kDA8CC"}
@@ -4,7 +4,6 @@ import type { DeliveryOptions, NotificationCategoryInfo, NotificationData, Notif
4
4
  * @internal
5
5
  */
6
6
  export declare namespace internal {
7
- const SupportsIdempotency: () => Promise<boolean>;
8
7
  const RegisterNotificationCategory: RegisteringProxy<(info: NotificationCategoryInfo) => void>;
9
8
  const RegisterNotificationSubject: RegisteringProxy<(info: NotificationSubjectInfo) => void>;
10
9
  const SendToUser: (userId: string, data: NotificationData, groupId?: string | undefined, idempotencyKey?: string | undefined, delivery?: DeliveryOptions | undefined) => Promise<void>;
@@ -7,7 +7,6 @@ const interface_core_1 = require("@antelopejs/interface-core");
7
7
  */
8
8
  var internal;
9
9
  (function (internal) {
10
- internal.SupportsIdempotency = (0, interface_core_1.InterfaceFunction)();
11
10
  internal.RegisterNotificationCategory = new interface_core_1.RegisteringProxy();
12
11
  internal.RegisterNotificationSubject = new interface_core_1.RegisteringProxy();
13
12
  internal.SendToUser = (0, interface_core_1.InterfaceFunction)();
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/notifications/internal.ts"],"names":[],"mappings":";;;AAAA,+DAGoC;AAUpC;;GAEG;AACH,IAAiB,QAAQ,CAmDxB;AAnDD,WAAiB,QAAQ;IACV,4BAAmB,GAC9B,IAAA,kCAAiB,GAA0B,CAAC;IAEjC,qCAA4B,GAAG,IAAI,iCAAgB,EAE7D,CAAC;IACS,oCAA2B,GAAG,IAAI,iCAAgB,EAE5D,CAAC;IAES,mBAAU,GACrB,IAAA,kCAAiB,GAQd,CAAC;IAEO,oBAAW,GACtB,IAAA,kCAAiB,GAQd,CAAC;IAEO,oBAAW,GACtB,IAAA,kCAAiB,GAMd,CAAC;IAEO,kBAAS,GACpB,IAAA,kCAAiB,GAOd,CAAC;AACR,CAAC,EAnDgB,QAAQ,wBAAR,QAAQ,QAmDxB"}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/notifications/internal.ts"],"names":[],"mappings":";;;AAAA,+DAGoC;AAUpC;;GAEG;AACH,IAAiB,QAAQ,CAgDxB;AAhDD,WAAiB,QAAQ;IACV,qCAA4B,GAAG,IAAI,iCAAgB,EAE7D,CAAC;IACS,oCAA2B,GAAG,IAAI,iCAAgB,EAE5D,CAAC;IAES,mBAAU,GACrB,IAAA,kCAAiB,GAQd,CAAC;IAEO,oBAAW,GACtB,IAAA,kCAAiB,GAQd,CAAC;IAEO,oBAAW,GACtB,IAAA,kCAAiB,GAMd,CAAC;IAEO,kBAAS,GACpB,IAAA,kCAAiB,GAOd,CAAC;AACR,CAAC,EAhDgB,QAAQ,wBAAR,QAAQ,QAgDxB"}
@@ -9,10 +9,9 @@ export declare class SendableNotification {
9
9
  */
10
10
  toUser(userId: string, options?: SendOptions): Promise<void>;
11
11
  toUsers(userIds: string[], options?: SendOptions): Promise<void>;
12
- /** Explicit capability for durable outbox delivery; older DMS versions do not expose this method. */
12
+ /** Sends a durable event once per recipient under `idempotencyKey`, including after dismissal. */
13
13
  toUsersIdempotently(userIds: string[], idempotencyKey: string, options?: SendOptions): Promise<void>;
14
14
  /** Sends to the holders of any of `roleIds`, in `options.tenantId` only when set. */
15
15
  toRoles(roleIds: string[], options?: RoleSendOptions): Promise<void>;
16
16
  broadcast(options?: SendOptions): Promise<void>;
17
- private requireIdempotencySupport;
18
17
  }
@@ -16,33 +16,22 @@ class SendableNotification {
16
16
  * unless `dedupe: false` (see {@link DeliveryOptions}).
17
17
  */
18
18
  async toUser(userId, options = {}) {
19
- await this.requireIdempotencySupport(options);
20
19
  await internal_1.internal.SendToUser(userId, this.data, undefined, options.idempotencyKey, deliveryOf(options));
21
20
  }
22
21
  async toUsers(userIds, options = {}) {
23
- await this.requireIdempotencySupport(options);
24
22
  await internal_1.internal.SendToUsers(userIds, this.data, options.readScope, options.idempotencyKey, deliveryOf(options));
25
23
  }
26
- /** Explicit capability for durable outbox delivery; older DMS versions do not expose this method. */
24
+ /** Sends a durable event once per recipient under `idempotencyKey`, including after dismissal. */
27
25
  async toUsersIdempotently(userIds, idempotencyKey, options = {}) {
28
26
  await this.toUsers(userIds, { ...options, idempotencyKey });
29
27
  }
30
28
  /** Sends to the holders of any of `roleIds`, in `options.tenantId` only when set. */
31
29
  async toRoles(roleIds, options = {}) {
32
- await this.requireIdempotencySupport(options);
33
30
  await internal_1.internal.SendToRoles(roleIds, this.data, options);
34
31
  }
35
32
  async broadcast(options = {}) {
36
- await this.requireIdempotencySupport(options);
37
33
  await internal_1.internal.SendToAll(this.data, options.readScope, options.idempotencyKey, deliveryOf(options));
38
34
  }
39
- async requireIdempotencySupport(options) {
40
- if (options.idempotencyKey === undefined)
41
- return;
42
- if ((await internal_1.internal.SupportsIdempotency()) !== true) {
43
- throw new Error("DMS idempotent notification delivery is unavailable");
44
- }
45
- }
46
35
  }
47
36
  exports.SendableNotification = SendableNotification;
48
37
  //# sourceMappingURL=sendable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sendable.js","sourceRoot":"","sources":["../../src/notifications/sendable.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAQtC,SAAS,UAAU,CAAC,OAAoB;IACtC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACpC,CAAC;AAED,MAAa,oBAAoB;IACd,IAAI,CAAmB;IAExC,YAAY,IAAsB;QAChC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,UAAuB,EAAE;QACpD,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,mBAAQ,CAAC,UAAU,CACvB,MAAM,EACN,IAAI,CAAC,IAAI,EACT,SAAS,EACT,OAAO,CAAC,cAAc,EACtB,UAAU,CAAC,OAAO,CAAC,CACpB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAiB,EAAE,UAAuB,EAAE;QACxD,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,mBAAQ,CAAC,WAAW,CACxB,OAAO,EACP,IAAI,CAAC,IAAI,EACT,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,cAAc,EACtB,UAAU,CAAC,OAAO,CAAC,CACpB,CAAC;IACJ,CAAC;IAED,qGAAqG;IACrG,KAAK,CAAC,mBAAmB,CACvB,OAAiB,EACjB,cAAsB,EACtB,UAAuB,EAAE;QAEzB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,qFAAqF;IACrF,KAAK,CAAC,OAAO,CACX,OAAiB,EACjB,UAA2B,EAAE;QAE7B,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,mBAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,UAAuB,EAAE;QACvC,MAAM,IAAI,CAAC,yBAAyB,CAAC,OAAO,CAAC,CAAC;QAC9C,MAAM,mBAAQ,CAAC,SAAS,CACtB,IAAI,CAAC,IAAI,EACT,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,cAAc,EACtB,UAAU,CAAC,OAAO,CAAC,CACpB,CAAC;IACJ,CAAC;IAEO,KAAK,CAAC,yBAAyB,CAAC,OAAoB;QAC1D,IAAI,OAAO,CAAC,cAAc,KAAK,SAAS;YAAE,OAAO;QACjD,IAAI,CAAC,MAAM,mBAAQ,CAAC,mBAAmB,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC;YACpD,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;QACzE,CAAC;IACH,CAAC;CACF;AApED,oDAoEC"}
1
+ {"version":3,"file":"sendable.js","sourceRoot":"","sources":["../../src/notifications/sendable.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAQtC,SAAS,UAAU,CAAC,OAAoB;IACtC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC;AACpC,CAAC;AAED,MAAa,oBAAoB;IACd,IAAI,CAAmB;IAExC,YAAY,IAAsB;QAChC,IAAI,CAAC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,EAAE,GAAG,IAAI,EAAE,CAAC,CAAC;IACzC,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,MAAM,CAAC,MAAc,EAAE,UAAuB,EAAE;QACpD,MAAM,mBAAQ,CAAC,UAAU,CACvB,MAAM,EACN,IAAI,CAAC,IAAI,EACT,SAAS,EACT,OAAO,CAAC,cAAc,EACtB,UAAU,CAAC,OAAO,CAAC,CACpB,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,OAAO,CAAC,OAAiB,EAAE,UAAuB,EAAE;QACxD,MAAM,mBAAQ,CAAC,WAAW,CACxB,OAAO,EACP,IAAI,CAAC,IAAI,EACT,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,cAAc,EACtB,UAAU,CAAC,OAAO,CAAC,CACpB,CAAC;IACJ,CAAC;IAED,kGAAkG;IAClG,KAAK,CAAC,mBAAmB,CACvB,OAAiB,EACjB,cAAsB,EACtB,UAAuB,EAAE;QAEzB,MAAM,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,GAAG,OAAO,EAAE,cAAc,EAAE,CAAC,CAAC;IAC9D,CAAC;IAED,qFAAqF;IACrF,KAAK,CAAC,OAAO,CACX,OAAiB,EACjB,UAA2B,EAAE;QAE7B,MAAM,mBAAQ,CAAC,WAAW,CAAC,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IAC1D,CAAC;IAED,KAAK,CAAC,SAAS,CAAC,UAAuB,EAAE;QACvC,MAAM,mBAAQ,CAAC,SAAS,CACtB,IAAI,CAAC,IAAI,EACT,OAAO,CAAC,SAAS,EACjB,OAAO,CAAC,cAAc,EACtB,UAAU,CAAC,OAAO,CAAC,CACpB,CAAC;IACJ,CAAC;CACF;AAzDD,oDAyDC"}
@@ -1,10 +1,7 @@
1
1
  import type { Tone } from "../base/types/tone";
2
2
  export type TogglePermission = "allowed" | "forbidden" | "default";
3
3
  export type ReadScope = "individual" | "shared";
4
- /**
5
- * Colour of the icon well a notification is listed with. The former `accent`
6
- * is still read as `primary` in 0.4, with a warning.
7
- */
4
+ /** Colour of the icon well a notification is listed with. */
8
5
  export type NotificationTone = Extract<Tone, "neutral" | "primary" | "success" | "warning" | "error">;
9
6
  export interface NotificationCategoryInfo {
10
7
  id: string;
@@ -40,6 +40,12 @@ interface ModuleEntry {
40
40
  module?: string;
41
41
  category?: CategoryInfo | ControllerClass;
42
42
  isModuleRoot?: boolean;
43
+ ownerOnly?: boolean;
43
44
  }
45
+ /**
46
+ * Whether only platform owners reach the entry: it sits inside a module, or it
47
+ * declares or inherits `ownerOnly`.
48
+ */
49
+ export declare function isOwnerOnly(entry: ModuleEntry): boolean;
44
50
  export declare function isInsideModule(entry: ModuleEntry): boolean;
45
51
  export {};
@@ -1,11 +1,11 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.internal = void 0;
4
+ exports.isOwnerOnly = isOwnerOnly;
4
5
  exports.isInsideModule = isInsideModule;
5
6
  const interface_core_1 = require("@antelopejs/interface-core");
6
7
  const registry_1 = require("./internal/registry");
7
- // oxlint-disable-next-line import/no-cycle -- Category creation registers through these proxies; resolveCategoryInfo is called only after module evaluation.
8
- const categories_1 = require("./internal/categories");
8
+ const category_resolution_1 = require("./internal/category-resolution");
9
9
  /**
10
10
  * A registration proxy that accepts a per-context view of its entries.
11
11
  *
@@ -56,6 +56,13 @@ var internal;
56
56
  internal.RegisterDynamicMenuProvider = new IdentifiedRegisteringProxy(registry_1.dynamicMenuProviderIdentity);
57
57
  internal.RegisterPageExtension = new PageExtensionRegisteringProxy();
58
58
  })(internal || (exports.internal = internal = {}));
59
+ /**
60
+ * Whether only platform owners reach the entry: it sits inside a module, or it
61
+ * declares or inherits `ownerOnly`.
62
+ */
63
+ function isOwnerOnly(entry) {
64
+ return entry.ownerOnly === true || isInsideModule(entry);
65
+ }
59
66
  function isInsideModule(entry) {
60
67
  if (entry.isModuleRoot)
61
68
  return true;
@@ -63,7 +70,7 @@ function isInsideModule(entry) {
63
70
  return true;
64
71
  let current = entry.category;
65
72
  while (current) {
66
- const resolved = (0, categories_1.resolveCategoryInfo)(current);
73
+ const resolved = (0, category_resolution_1.resolveCategoryInfo)(current);
67
74
  if (!resolved)
68
75
  return false;
69
76
  if (resolved.isModuleRoot)
@@ -1 +1 @@
1
- {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/page/categories.ts"],"names":[],"mappings":";;;AA4FA,wCAWC;AAtGD,+DAA8D;AAC9D,kDAQ6B;AAQ7B,6JAA6J;AAC7J,sDAA4D;AAE5D;;;;;;;;;GASG;AACH,MAAM,0BAA6C,SAAQ,iCAE1D;IAC8B;IAA7B,YAA6B,QAAiC;QAC5D,KAAK,EAAE,CAAC;QADmB,aAAQ,GAAR,QAAQ,CAAyB;IAE9D,CAAC;IAEQ,QAAQ,CAAC,KAAQ;QACxB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAEQ,UAAU,CAAC,KAAQ;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACjC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,6BAA8B,SAAQ,0BAA6C;IACvF;QACE,KAAK,CAAC,gCAAqB,CAAC,CAAC;IAC/B,CAAC;IAEQ,QAAQ,CAAC,KAAwB;QACxC,IAAA,sCAA2B,EAAC,KAAK,CAAC,CAAC;QACnC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;CACF;AAED;;GAEG;AACH,IAAiB,QAAQ,CAgBxB;AAhBD,WAAiB,QAAQ;IACV,yBAAgB,GAAG,IAAI,0BAA0B,CAC5D,2BAAgB,CACjB,CAAC;IACW,qBAAY,GAAG,IAAI,0BAA0B,CACxD,uBAAY,CACb,CAAC;IACW,uBAAc,GAAG,IAAI,0BAA0B,CAC1D,yBAAc,CACf,CAAC;IACW,oCAA2B,GACtC,IAAI,0BAA0B,CAC5B,sCAA2B,CAC5B,CAAC;IAES,8BAAqB,GAAG,IAAI,6BAA6B,EAAE,CAAC;AAC3E,CAAC,EAhBgB,QAAQ,wBAAR,QAAQ,QAgBxB;AAQD,SAAgB,cAAc,CAAC,KAAkB;IAC/C,IAAI,KAAK,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,OAAO,GAA+C,KAAK,CAAC,QAAQ,CAAC;IACzE,OAAO,OAAO,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,IAAA,gCAAmB,EAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,IAAI,QAAQ,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../src/page/categories.ts"],"names":[],"mappings":";;;AAgGA,kCAEC;AAED,wCAWC;AA9GD,+DAA8D;AAC9D,kDAQ6B;AAQ7B,wEAAqE;AAErE;;;;;;;;;GASG;AACH,MAAM,0BAA6C,SAAQ,iCAE1D;IAC8B;IAA7B,YAA6B,QAAiC;QAC5D,KAAK,EAAE,CAAC;QADmB,aAAQ,GAAR,QAAQ,CAAyB;IAE9D,CAAC;IAEQ,QAAQ,CAAC,KAAQ;QACxB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC9B,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;IAEQ,UAAU,CAAC,KAAQ;QAC1B,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QAChD,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;QACjC,KAAK,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;IAC/B,CAAC;CACF;AAED;;;GAGG;AACH,MAAM,6BAA8B,SAAQ,0BAA6C;IACvF;QACE,KAAK,CAAC,gCAAqB,CAAC,CAAC;IAC/B,CAAC;IAEQ,QAAQ,CAAC,KAAwB;QACxC,IAAA,sCAA2B,EAAC,KAAK,CAAC,CAAC;QACnC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;IACxB,CAAC;CACF;AAED;;GAEG;AACH,IAAiB,QAAQ,CAgBxB;AAhBD,WAAiB,QAAQ;IACV,yBAAgB,GAAG,IAAI,0BAA0B,CAC5D,2BAAgB,CACjB,CAAC;IACW,qBAAY,GAAG,IAAI,0BAA0B,CACxD,uBAAY,CACb,CAAC;IACW,uBAAc,GAAG,IAAI,0BAA0B,CAC1D,yBAAc,CACf,CAAC;IACW,oCAA2B,GACtC,IAAI,0BAA0B,CAC5B,sCAA2B,CAC5B,CAAC;IAES,8BAAqB,GAAG,IAAI,6BAA6B,EAAE,CAAC;AAC3E,CAAC,EAhBgB,QAAQ,wBAAR,QAAQ,QAgBxB;AASD;;;GAGG;AACH,SAAgB,WAAW,CAAC,KAAkB;IAC5C,OAAO,KAAK,CAAC,SAAS,KAAK,IAAI,IAAI,cAAc,CAAC,KAAK,CAAC,CAAC;AAC3D,CAAC;AAED,SAAgB,cAAc,CAAC,KAAkB;IAC/C,IAAI,KAAK,CAAC,YAAY;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,KAAK,CAAC,MAAM;QAAE,OAAO,IAAI,CAAC;IAC9B,IAAI,OAAO,GAA+C,KAAK,CAAC,QAAQ,CAAC;IACzE,OAAO,OAAO,EAAE,CAAC;QACf,MAAM,QAAQ,GAAG,IAAA,yCAAmB,EAAC,OAAO,CAAC,CAAC;QAC9C,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QAC5B,IAAI,QAAQ,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QACvC,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC;IAC9B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC"}
@@ -265,24 +265,21 @@ export interface FrontendModuleMetadata {
265
265
  * Absolute backend API paths (`/api/...`) the frontend server may open a
266
266
  * session from on behalf of this module, as declared by
267
267
  * {@link AddFrontendModuleOptions.authEstablishEndpoints}. Empty when the
268
- * module declared none, absent when the DMS serving this metadata predates
269
- * the field.
268
+ * module declared none.
270
269
  */
271
- authEstablishEndpoints?: string[];
270
+ authEstablishEndpoints: string[];
272
271
  /**
273
272
  * The routes this module serves to anyone, as declared by
274
273
  * {@link AddFrontendModuleOptions.publicEndpoints}. Empty when the module
275
- * declared none, absent when the DMS serving this metadata predates the
276
- * field.
274
+ * declared none.
277
275
  */
278
- publicEndpoints?: FrontendPublicEndpoint[];
276
+ publicEndpoints: FrontendPublicEndpoint[];
279
277
  /**
280
278
  * The backend prefixes this module declares, as
281
279
  * {@link AddFrontendModuleOptions.backendProxies}, each with its `auth`.
282
- * Empty when the module declared none, absent when the DMS serving this
283
- * metadata predates the field.
280
+ * Empty when the module declared none.
284
281
  */
285
- backendProxies?: Required<FrontendBackendProxy>[];
282
+ backendProxies: Required<FrontendBackendProxy>[];
286
283
  }
287
284
  /** Returns registered frontend source metadata for server-side module discovery, excluding private options. */
288
285
  export declare const GetFrontendModules: () => Promise<FrontendModuleMetadata[]>;
@@ -17,18 +17,20 @@ const categories_2 = require("./categories");
17
17
  const metadata_1 = require("./metadata");
18
18
  const page_routes_1 = require("./page-routes");
19
19
  const fire_and_forget_1 = require("../utils/fire-and-forget");
20
+ const controller_class_1 = require("../utils/internal/controller-class");
20
21
  /**
21
22
  * Static component fields of a class, in declaration order. Underscore-prefixed
22
23
  * fields are skipped, so a class can keep private static state.
23
24
  */
24
- // oxlint-disable-next-line anti-slop/no-object-parameters -- Decorated classes expose static component fields known only at runtime.
25
25
  function collectStaticComponents(cl) {
26
26
  const fields = [];
27
27
  for (const key of Object.getOwnPropertyNames(cl)) {
28
28
  if (key.startsWith("_"))
29
29
  continue;
30
- // oxlint-disable-next-line anti-slop/no-reflect-get -- The static field name comes from Object.getOwnPropertyNames; its value is narrowed with instanceof Component.
31
- const value = Reflect.get(cl, key);
30
+ const descriptor = Object.getOwnPropertyDescriptor(cl, key);
31
+ const value = descriptor?.get
32
+ ? descriptor.get.call(cl)
33
+ : descriptor?.value;
32
34
  if (value instanceof component_1.Component) {
33
35
  fields.push({ key, component: value });
34
36
  }
@@ -36,16 +38,16 @@ function collectStaticComponents(cl) {
36
38
  return fields;
37
39
  }
38
40
  exports.RegisterPage = (0, decorators_1.MakeClassDecorator)((cl) => {
39
- // oxlint-disable-next-line anti-slop/require-safety-comment-for-type-assertion -- The decorator accepts any class and trusts callers to apply it to a page controller; checking inheritance would change the published decorator's behavior.
41
+ if (!(0, controller_class_1.isControllerClass)(cl)) {
42
+ throw new TypeError("@RegisterPage decorates a class that extends PageController");
43
+ }
40
44
  const meta = (0, interface_core_1.GetMetadata)(cl, metadata_1.PageMetadata);
41
45
  for (const { key, component } of collectStaticComponents(cl)) {
42
46
  meta.SetComponent(key, component);
43
47
  }
44
48
  (0, fire_and_forget_1.fireAndForget)(meta.Register(), "page registration");
45
49
  });
46
- function buildExtensionComponents(
47
- // oxlint-disable-next-line anti-slop/no-object-parameters -- Extension components are collected from the decorated class static fields at runtime.
48
- extensionClass) {
50
+ function buildExtensionComponents(extensionClass) {
49
51
  return collectStaticComponents(extensionClass).map(({ key, component }) => {
50
52
  const placement = component.placement ?? component_1.DEFAULT_PLACEMENT;
51
53
  const entry = {
@@ -1 +1 @@
1
- {"version":3,"file":"controllers.js","sourceRoot":"","sources":["../../src/page/controllers.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"controllers.js","sourceRoot":"","sources":["../../src/page/controllers.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,37 @@
1
1
  "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
2
35
  Object.defineProperty(exports, "__esModule", { value: true });
3
36
  exports.resolveCategoryInfo = resolveCategoryInfo;
4
37
  exports.resolveInheritedLayout = resolveInheritedLayout;
@@ -11,18 +44,15 @@ exports.applyPageExtension = applyPageExtension;
11
44
  exports.revokePageExtension = revokePageExtension;
12
45
  exports.clearPageMetadata = clearPageMetadata;
13
46
  exports.RootCategory = RootCategory;
14
- const interface_core_1 = require("@antelopejs/interface-core");
15
47
  const component_1 = require("../../component");
16
48
  const permissions_1 = require("../../permissions");
17
- // oxlint-disable-next-line import/no-cycle -- Category resolution reads PageMetadata inside functions; page registration uses the proxies declared in categories.
18
- const metadata_1 = require("../metadata");
49
+ const resolution = __importStar(require("./category-resolution"));
19
50
  const logging_1 = require("@antelopejs/interface-core/logging");
20
51
  const fire_and_forget_1 = require("../../utils/fire-and-forget");
21
52
  const registry_1 = require("./registry");
22
53
  const category_permission_1 = require("./category-permission");
23
54
  const member_access_1 = require("./member-access");
24
55
  const types_1 = require("./types");
25
- // oxlint-disable-next-line import/no-cycle -- Category proxies and isInsideModule are read inside functions, after module evaluation.
26
56
  const categories_1 = require("../categories");
27
57
  /**
28
58
  * Resolve a category to CategoryInfo
@@ -32,18 +62,7 @@ const categories_1 = require("../categories");
32
62
  * @internal
33
63
  */
34
64
  function resolveCategoryInfo(category) {
35
- if (!category) {
36
- return undefined;
37
- }
38
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- The published category union distinguishes controller constructors from CategoryInfo objects by callability.
39
- if (typeof category === "function") {
40
- const meta = (0, interface_core_1.GetMetadata)(category, metadata_1.PageMetadata);
41
- if (!meta.pageInfo) {
42
- throw new Error(`PageMetadata not initialized for controller class.`);
43
- }
44
- return meta.pageInfo;
45
- }
46
- return category;
65
+ return resolution.resolveCategoryInfo(category);
47
66
  }
48
67
  /**
49
68
  * The default layout a page or category declared under `category` inherits:
@@ -55,19 +74,7 @@ function resolveCategoryInfo(category) {
55
74
  * @internal
56
75
  */
57
76
  function resolveInheritedLayout(category) {
58
- let current = findCategoryInfo(category);
59
- while (current) {
60
- if (current.layout)
61
- return current.layout;
62
- current = findCategoryInfo(current.category);
63
- }
64
- return undefined;
65
- }
66
- function findCategoryInfo(category) {
67
- // oxlint-disable-next-line anti-slop/no-runtime-typeof -- The category union represents a controller constructor or resolved metadata, not unparsed input.
68
- if (typeof category !== "function")
69
- return category;
70
- return (0, interface_core_1.GetMetadata)(category, metadata_1.PageMetadata).pageInfo;
77
+ return resolution.resolveInheritedLayout(category);
71
78
  }
72
79
  /**
73
80
  * Calculate the full slug for a page or category
@@ -158,6 +165,7 @@ function createCategoryFunction(id, options) {
158
165
  hidden: effectiveOptions.hidden || resolvedCategory?.hidden,
159
166
  bypassTenantAccessGate: effectiveOptions.bypassTenantAccessGate ||
160
167
  resolvedCategory?.bypassTenantAccessGate,
168
+ ownerOnly: effectiveOptions.ownerOnly || resolvedCategory?.ownerOnly,
161
169
  };
162
170
  categories_1.internal.RegisterCategory.register(categoryInfo);
163
171
  const categoryPermission = {
@@ -167,10 +175,13 @@ function createCategoryFunction(id, options) {
167
175
  defaultGranted: categoryInfo.publicAccess || (0, member_access_1.opensToMembers)(categoryInfo.memberAccess),
168
176
  ...ownPermission(categoryInfo.permission),
169
177
  };
170
- if ((0, categories_1.isInsideModule)(categoryInfo)) {
171
- (0, permissions_1.MarkModuleScopedPermission)((0, category_permission_1.categoryOwnPermissionId)(categoryInfo));
178
+ const ownPermissionId = (0, category_permission_1.categoryOwnPermissionId)(categoryInfo);
179
+ if ((0, categories_1.isOwnerOnly)(categoryInfo)) {
180
+ (0, permissions_1.MarkModuleScopedPermission)(ownPermissionId);
181
+ return categoryInfo;
172
182
  }
173
- else if (!(categoryInfo.permission instanceof component_1.Action)) {
183
+ (0, permissions_1.UnmarkModuleScopedPermission)(ownPermissionId);
184
+ if (!(categoryInfo.permission instanceof component_1.Action)) {
174
185
  (0, permissions_1.RegisterPermission)(categoryPermission.id, categoryPermission);
175
186
  }
176
187
  return categoryInfo;