@antelopejs/interface-dms 0.7.4 → 0.9.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 (239) hide show
  1. package/CHANGELOG.md +176 -0
  2. package/dist/auth/index.d.ts +3 -3
  3. package/dist/auth/index.js +11 -9
  4. package/dist/auth/index.js.map +1 -1
  5. package/dist/auth/internal/jwt-auth-decorator.d.ts +20 -0
  6. package/dist/auth/internal/jwt-auth-decorator.js +51 -0
  7. package/dist/auth/internal/jwt-auth-decorator.js.map +1 -0
  8. package/dist/auth/internal/request-authenticators.d.ts +12 -0
  9. package/dist/auth/internal/request-authenticators.js +22 -0
  10. package/dist/auth/internal/request-authenticators.js.map +1 -1
  11. package/dist/base/activity-feed.d.ts +6 -6
  12. package/dist/base/block-registry/types.d.ts +16 -0
  13. package/dist/base/block-types.d.ts +1 -0
  14. package/dist/base/block-types.js +1 -0
  15. package/dist/base/block-types.js.map +1 -1
  16. package/dist/base/chart-card.d.ts +15 -0
  17. package/dist/base/chart-card.js +4 -0
  18. package/dist/base/chart-card.js.map +1 -1
  19. package/dist/base/chart-schemas.d.ts +26 -26
  20. package/dist/base/code-block.d.ts +3 -3
  21. package/dist/base/data-types/compare-types.js +19 -13
  22. package/dist/base/data-types/compare-types.js.map +1 -1
  23. package/dist/base/data-types/core.d.ts +11 -0
  24. package/dist/base/data-types/core.js +14 -1
  25. package/dist/base/data-types/core.js.map +1 -1
  26. package/dist/base/data-types/default-types.d.ts +112 -2
  27. package/dist/base/data-types/default-types.js +90 -19
  28. package/dist/base/data-types/default-types.js.map +1 -1
  29. package/dist/base/data-types/field-types.d.ts +10 -4
  30. package/dist/base/data-types/field-types.js +12 -2
  31. package/dist/base/data-types/field-types.js.map +1 -1
  32. package/dist/base/data-types/internal/compare-types.d.ts +3 -0
  33. package/dist/base/data-types/internal/compare-types.js +7 -0
  34. package/dist/base/data-types/internal/compare-types.js.map +1 -1
  35. package/dist/base/empty-state.d.ts +4 -4
  36. package/dist/base/form-block-schema.d.ts +59 -3
  37. package/dist/base/form-block-schema.js +12 -2
  38. package/dist/base/form-block-schema.js.map +1 -1
  39. package/dist/base/form-schema.d.ts +57 -5
  40. package/dist/base/form-schema.js +22 -0
  41. package/dist/base/form-schema.js.map +1 -1
  42. package/dist/base/form-types.d.ts +82 -13
  43. package/dist/base/form-types.js +12 -4
  44. package/dist/base/form-types.js.map +1 -1
  45. package/dist/base/guard.d.ts +6 -6
  46. package/dist/base/helpers/archive-mode-helpers.js +6 -2
  47. package/dist/base/helpers/archive-mode-helpers.js.map +1 -1
  48. package/dist/base/index.d.ts +1 -0
  49. package/dist/base/index.js +1 -0
  50. package/dist/base/index.js.map +1 -1
  51. package/dist/base/internal/form-schema.js +5 -0
  52. package/dist/base/internal/form-schema.js.map +1 -1
  53. package/dist/base/internal/layouts.d.ts +15 -3
  54. package/dist/base/key-value-list.d.ts +12 -9
  55. package/dist/base/key-value-list.js +1 -1
  56. package/dist/base/key-value-list.js.map +1 -1
  57. package/dist/base/kpi-card.d.ts +39 -5
  58. package/dist/base/kpi-card.js +18 -6
  59. package/dist/base/kpi-card.js.map +1 -1
  60. package/dist/base/layouts.d.ts +24 -1
  61. package/dist/base/layouts.js.map +1 -1
  62. package/dist/base/live-toggle.d.ts +11 -0
  63. package/dist/base/live-toggle.js +8 -1
  64. package/dist/base/live-toggle.js.map +1 -1
  65. package/dist/base/page-toolbar.d.ts +158 -0
  66. package/dist/base/page-toolbar.js +198 -0
  67. package/dist/base/page-toolbar.js.map +1 -0
  68. package/dist/base/period-selector.d.ts +9 -2
  69. package/dist/base/period-selector.js.map +1 -1
  70. package/dist/base/placeholder.d.ts +2 -2
  71. package/dist/base/section.d.ts +2 -2
  72. package/dist/base/stack.d.ts +2 -2
  73. package/dist/base/stat-group.d.ts +18 -6
  74. package/dist/base/stat-group.js +9 -0
  75. package/dist/base/stat-group.js.map +1 -1
  76. package/dist/base/table-view/column-display.d.ts +9 -5
  77. package/dist/base/table-view/column-display.js +1 -1
  78. package/dist/base/table-view/column-display.js.map +1 -1
  79. package/dist/base/table-view/data-functions.d.ts +26 -7
  80. package/dist/base/table-view/data-functions.js +10 -6
  81. package/dist/base/table-view/data-functions.js.map +1 -1
  82. package/dist/base/table-view/factory.js +24 -13
  83. package/dist/base/table-view/factory.js.map +1 -1
  84. package/dist/base/table-view/internal/auth.d.ts +2 -0
  85. package/dist/base/table-view/internal/auth.js +3 -1
  86. package/dist/base/table-view/internal/auth.js.map +1 -1
  87. package/dist/base/table-view/internal/column-conditions.d.ts +15 -0
  88. package/dist/base/table-view/internal/column-conditions.js +94 -0
  89. package/dist/base/table-view/internal/column-conditions.js.map +1 -0
  90. package/dist/base/table-view/internal/factory-helpers.d.ts +5 -0
  91. package/dist/base/table-view/internal/factory-helpers.js +55 -11
  92. package/dist/base/table-view/internal/factory-helpers.js.map +1 -1
  93. package/dist/base/table-view/internal/guards.js +19 -2
  94. package/dist/base/table-view/internal/guards.js.map +1 -1
  95. package/dist/base/table-view/internal/realtime.js +17 -0
  96. package/dist/base/table-view/internal/realtime.js.map +1 -1
  97. package/dist/base/table-view/internal/resource-form.js +1 -0
  98. package/dist/base/table-view/internal/resource-form.js.map +1 -1
  99. package/dist/base/table-view/internal/row-actions-schema.d.ts +296 -0
  100. package/dist/base/table-view/internal/row-actions-schema.js +62 -0
  101. package/dist/base/table-view/internal/row-actions-schema.js.map +1 -0
  102. package/dist/base/table-view/internal/validation.d.ts +22 -3
  103. package/dist/base/table-view/internal/validation.js +92 -2
  104. package/dist/base/table-view/internal/validation.js.map +1 -1
  105. package/dist/base/table-view/meta.d.ts +25 -1
  106. package/dist/base/table-view/meta.js +36 -4
  107. package/dist/base/table-view/meta.js.map +1 -1
  108. package/dist/base/table-view/options.d.ts +92 -16
  109. package/dist/base/table-view/options.js.map +1 -1
  110. package/dist/base/table-view/realtime.d.ts +8 -0
  111. package/dist/base/table-view/realtime.js.map +1 -1
  112. package/dist/base/table-view/routes.js +8 -4
  113. package/dist/base/table-view/routes.js.map +1 -1
  114. package/dist/base/table-view/schema.d.ts +36 -30
  115. package/dist/base/table-view/schema.js +11 -57
  116. package/dist/base/table-view/schema.js.map +1 -1
  117. package/dist/base/table-view/source.d.ts +1 -1
  118. package/dist/base/table-view/source.js +4 -1
  119. package/dist/base/table-view/source.js.map +1 -1
  120. package/dist/base/table-view.d.ts +2 -2
  121. package/dist/base/table-view.js.map +1 -1
  122. package/dist/base/top-list-card.d.ts +5 -5
  123. package/dist/base/types/action-target.d.ts +77 -20
  124. package/dist/base/types/confirm-dialog.d.ts +5 -1
  125. package/dist/base/types/custom-button.d.ts +5 -3
  126. package/dist/base/types/field-config.d.ts +4 -4
  127. package/dist/base/types/guards.d.ts +10 -0
  128. package/dist/base/types/row-action.d.ts +6 -1
  129. package/dist/base/types/size.d.ts +3 -1
  130. package/dist/client-ip.d.ts +6 -2
  131. package/dist/client-ip.js +4 -2
  132. package/dist/client-ip.js.map +1 -1
  133. package/dist/component.d.ts +14 -0
  134. package/dist/component.js.map +1 -1
  135. package/dist/data-controllers/members.d.ts +0 -3
  136. package/dist/data-controllers/members.js +30 -8
  137. package/dist/data-controllers/members.js.map +1 -1
  138. package/dist/db/internal/tenantLifecycle.model.js +5 -2
  139. package/dist/db/internal/tenantLifecycle.model.js.map +1 -1
  140. package/dist/guards.js +2 -3
  141. package/dist/guards.js.map +1 -1
  142. package/dist/hooks.d.ts +54 -10
  143. package/dist/hooks.js +12 -4
  144. package/dist/hooks.js.map +1 -1
  145. package/dist/index.d.ts +3 -3
  146. package/dist/index.js +3 -2
  147. package/dist/index.js.map +1 -1
  148. package/dist/internal/invite-membership.d.ts +9 -0
  149. package/dist/internal/invite-membership.js +25 -7
  150. package/dist/internal/invite-membership.js.map +1 -1
  151. package/dist/internal/member-changes.d.ts +24 -0
  152. package/dist/internal/member-changes.js +66 -0
  153. package/dist/internal/member-changes.js.map +1 -0
  154. package/dist/internal/tenant-ownership.d.ts +4 -1
  155. package/dist/internal/tenant-ownership.js +4 -10
  156. package/dist/internal/tenant-ownership.js.map +1 -1
  157. package/dist/invite-extensions/internal/form-slot.js +1 -1
  158. package/dist/invite-extensions/internal/form-slot.js.map +1 -1
  159. package/dist/invite-extensions.d.ts +0 -9
  160. package/dist/invite-extensions.js +1 -36
  161. package/dist/invite-extensions.js.map +1 -1
  162. package/dist/invite-resolution.js +6 -2
  163. package/dist/invite-resolution.js.map +1 -1
  164. package/dist/invites.js +36 -22
  165. package/dist/invites.js.map +1 -1
  166. package/dist/layout-banners.d.ts +40 -4
  167. package/dist/layout-banners.js +25 -3
  168. package/dist/layout-banners.js.map +1 -1
  169. package/dist/notifications/internal.d.ts +2 -2
  170. package/dist/notifications/internal.js.map +1 -1
  171. package/dist/notifications/sendable.d.ts +3 -2
  172. package/dist/notifications/sendable.js +2 -1
  173. package/dist/notifications/sendable.js.map +1 -1
  174. package/dist/notifications/types.d.ts +9 -0
  175. package/dist/page/controllers.d.ts +44 -0
  176. package/dist/page/controllers.js +14 -1
  177. package/dist/page/controllers.js.map +1 -1
  178. package/dist/page/internal/layout-filter.d.ts +10 -4
  179. package/dist/page/internal/layout-filter.js +27 -14
  180. package/dist/page/internal/layout-filter.js.map +1 -1
  181. package/dist/page/internal/metadata-helpers.d.ts +7 -0
  182. package/dist/page/internal/metadata-helpers.js +13 -2
  183. package/dist/page/internal/metadata-helpers.js.map +1 -1
  184. package/dist/page/internal/page-record.d.ts +34 -0
  185. package/dist/page/internal/page-record.js +87 -0
  186. package/dist/page/internal/page-record.js.map +1 -0
  187. package/dist/page/internal/page-registration.d.ts +2 -0
  188. package/dist/page/internal/page-registration.js.map +1 -1
  189. package/dist/page/layout-filter.js +31 -10
  190. package/dist/page/layout-filter.js.map +1 -1
  191. package/dist/page/metadata.js +36 -26
  192. package/dist/page/metadata.js.map +1 -1
  193. package/dist/page/types.d.ts +39 -4
  194. package/dist/page/types.js.map +1 -1
  195. package/dist/page.d.ts +1 -1
  196. package/dist/page.js +2 -1
  197. package/dist/page.js.map +1 -1
  198. package/dist/permissions-resolver.d.ts +26 -3
  199. package/dist/permissions-resolver.js +2 -1
  200. package/dist/permissions-resolver.js.map +1 -1
  201. package/dist/permissions.d.ts +7 -3
  202. package/dist/permissions.js +8 -6
  203. package/dist/permissions.js.map +1 -1
  204. package/dist/realtime.d.ts +24 -1
  205. package/dist/realtime.js +7 -1
  206. package/dist/realtime.js.map +1 -1
  207. package/dist/request-tenant.d.ts +17 -13
  208. package/dist/request-tenant.js +54 -42
  209. package/dist/request-tenant.js.map +1 -1
  210. package/dist/tenant-members.d.ts +26 -0
  211. package/dist/tenant-members.js +29 -0
  212. package/dist/tenant-members.js.map +1 -0
  213. package/dist/tenant-ownership.d.ts +4 -1
  214. package/dist/tenant-ownership.js +12 -17
  215. package/dist/tenant-ownership.js.map +1 -1
  216. package/dist/tenant-provisioning.d.ts +15 -0
  217. package/dist/tenant-provisioning.js +27 -0
  218. package/dist/tenant-provisioning.js.map +1 -0
  219. package/dist/tenant-scoped-model.d.ts +2 -1
  220. package/dist/tenant-scoped-model.js +4 -3
  221. package/dist/tenant-scoped-model.js.map +1 -1
  222. package/docs/1.core/10.layout-banners.md +57 -2
  223. package/docs/1.core/2.pages-and-modules.md +20 -11
  224. package/docs/1.core/4.permissions.md +34 -1
  225. package/docs/1.core/5.tenancy.md +37 -6
  226. package/docs/1.core/7.hooks.md +24 -4
  227. package/docs/1.core/8.realtime.md +24 -3
  228. package/docs/2.auth/2.authentication.md +3 -3
  229. package/docs/3.base/1.introduction.md +1 -0
  230. package/docs/3.base/10.display-blocks.md +20 -2
  231. package/docs/3.base/2.types.md +7 -5
  232. package/docs/3.base/3.forms.md +28 -8
  233. package/docs/3.base/4.tables.md +27 -9
  234. package/docs/3.base/5.charts-and-widgets.md +8 -4
  235. package/docs/3.base/6.layout.md +47 -1
  236. package/docs/3.base/8.data-types.md +16 -9
  237. package/docs/4.notifications/3.sending.md +4 -3
  238. package/docs/5.html-render/1.introduction.md +5 -7
  239. package/package.json +7 -11
package/dist/invites.js CHANGED
@@ -18,8 +18,9 @@ const hooks_1 = require("./hooks");
18
18
  const delivery_1 = require("./invite-extensions/internal/delivery");
19
19
  const invite_resolution_1 = require("./internal/invite-resolution");
20
20
  const invite_resolution_2 = require("./invite-resolution");
21
- const tenant_lifecycle_1 = require("./tenant-lifecycle");
21
+ const tenant_members_1 = require("./tenant-members");
22
22
  const tenant_ownership_1 = require("./internal/tenant-ownership");
23
+ const member_changes_1 = require("./internal/member-changes");
23
24
  const invites_1 = require("./internal/invites");
24
25
  var invitee_display_name_1 = require("./invitee-display-name");
25
26
  Object.defineProperty(exports, "inviteeDisplayName", { enumerable: true, get: function () { return invitee_display_name_1.inviteeDisplayName; } });
@@ -42,7 +43,7 @@ exports.INVITE_EXPIRY_DAYS = 7;
42
43
  * intentionally side-effect-light: it does not throw on duplicates.
43
44
  */
44
45
  async function inviteUserToTenant(options) {
45
- const result = await (0, tenant_lifecycle_1.runTenantLifecycleOperation)(options.tenantId, () => inviteAdmittedUser(options));
46
+ const result = await (0, tenant_members_1.changeTenantMembers)(options.tenantId, () => planInvite(options));
46
47
  if (!options.sendEmail || result.kind !== "invited")
47
48
  return result;
48
49
  const invite = { ...options, token: result.token };
@@ -55,30 +56,40 @@ async function inviteUserToTenant(options) {
55
56
  emailDelivery: await (0, invites_1.deliverTenantInviteEmail)(invite),
56
57
  };
57
58
  }
58
- async function inviteAdmittedUser(options) {
59
+ async function planInvite(options) {
59
60
  const { tenantId, email, firstname = null, lastname = null, language = "en", roleIds = [], asTenantOwner = false, invitedBy = null, extensions, } = options;
60
61
  const userModel = (0, interface_database_decorators_1.GetModel)(db_2.UserModel);
61
62
  const existingUser = await userModel.getByEmail(email);
62
63
  if (existingUser) {
63
- await (0, tenant_ownership_1.applyAdmittedTenantOwnership)(userModel, existingUser._id, tenantId, {
64
- roleIds,
65
- isTenantOwner: asTenantOwner,
66
- });
67
- await deliverToExistingMember(tenantId, email, existingUser._id, extensions);
68
- return { kind: "added", userId: existingUser._id };
64
+ const userId = existingUser._id;
65
+ const patch = { roleIds, isTenantOwner: asTenantOwner };
66
+ const member = await (0, interface_database_decorators_1.GetModel)(db_1.TenantMemberModel, tenantId).getByUser(userId);
67
+ return {
68
+ changes: (0, member_changes_1.describeMembershipPatch)(member, userId, patch),
69
+ write: async () => {
70
+ await (0, tenant_ownership_1.applyAdmittedTenantOwnership)(userModel, userId, tenantId, patch);
71
+ await deliverToExistingMember(tenantId, email, userId, extensions);
72
+ return { kind: "added", userId };
73
+ },
74
+ };
69
75
  }
70
- const { inviteId, token } = await createAdmittedInviteToken({
71
- tenantId,
72
- email,
73
- firstname,
74
- lastname,
75
- language,
76
- roleIds,
77
- asTenantOwner,
78
- invitedBy,
79
- extensions,
80
- });
81
- return { kind: "invited", inviteId, token };
76
+ return {
77
+ changes: [],
78
+ write: async () => {
79
+ const { inviteId, token } = await createAdmittedInviteToken({
80
+ tenantId,
81
+ email,
82
+ firstname,
83
+ lastname,
84
+ language,
85
+ roleIds,
86
+ asTenantOwner,
87
+ invitedBy,
88
+ extensions,
89
+ });
90
+ return { kind: "invited", inviteId, token };
91
+ },
92
+ };
82
93
  }
83
94
  /**
84
95
  * The membership is already granted when this runs, so a failure here is
@@ -105,7 +116,10 @@ async function deliverToExistingMember(tenantId, email, userId, extensions) {
105
116
  * INVITE_DELETED / INVITE_BEING_CREATED / INVITE_CREATED hooks.
106
117
  */
107
118
  async function createUserInviteToken(options) {
108
- return (0, tenant_lifecycle_1.runTenantLifecycleOperation)(options.tenantId, () => createAdmittedInviteToken(options));
119
+ return (0, tenant_members_1.changeTenantMembers)(options.tenantId, async () => ({
120
+ changes: [],
121
+ write: () => createAdmittedInviteToken(options),
122
+ }));
109
123
  }
110
124
  async function createAdmittedInviteToken(options) {
111
125
  const { tenantId, email, asTenantOwner, roleIds } = options;
@@ -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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"}
@@ -14,6 +14,28 @@ export declare const LayoutBannerVariant: {
14
14
  readonly ERROR: "error";
15
15
  };
16
16
  export type LayoutBannerVariant = (typeof LayoutBannerVariant)[keyof typeof LayoutBannerVariant];
17
+ /**
18
+ * Which pages of the dashboard a layout banner shows on. The module area is
19
+ * everything under `MODULE_URL_PREFIX` (`/modules`): the modules page, the
20
+ * module store and every module's own pages.
21
+ */
22
+ export declare const LayoutBannerScope: {
23
+ /**
24
+ * The application's pages, outside the module area: the default, for a
25
+ * banner about the application being built (overdue invoices, a stock
26
+ * alert) that has no business inside a module's back office.
27
+ */
28
+ readonly APP: "app";
29
+ /** The module area only. */
30
+ readonly MODULES: "modules";
31
+ /**
32
+ * Every page, module area included: for a workspace-wide state that must
33
+ * follow the user wherever they go (billing past due, a suspended
34
+ * workspace, a maintenance window).
35
+ */
36
+ readonly EVERYWHERE: "everywhere";
37
+ };
38
+ export type LayoutBannerScope = (typeof LayoutBannerScope)[keyof typeof LayoutBannerScope];
17
39
  /**
18
40
  * What a banner's `visible` or `resolve` resolver decides on: the request the
19
41
  * site layout is being built for.
@@ -83,6 +105,18 @@ interface LayoutBannerBase {
83
105
  order?: number;
84
106
  /** Leading icon. Defaults to one matching the variant. */
85
107
  icon?: string;
108
+ /**
109
+ * Which pages the banner shows on, the same option on a text, a resolved
110
+ * and a component banner. Defaults to
111
+ * {@link LayoutBannerScope.APP}: the application's pages, not the module
112
+ * area. A workspace-wide state uses {@link LayoutBannerScope.EVERYWHERE}.
113
+ *
114
+ * The scope is applied by the dashboard against the current route, both
115
+ * when the page is server-rendered and on every client-side navigation, so
116
+ * moving in or out of the module area adds or removes the banner without
117
+ * re-fetching the site layout.
118
+ */
119
+ scope?: LayoutBannerScope;
86
120
  /**
87
121
  * Whether the user can close the banner. A dismissal lasts for the browser
88
122
  * session and is remembered in a cookie, so the server-rendered page already
@@ -148,8 +182,9 @@ export interface LayoutBannerResolvedInfo extends LayoutBannerBase {
148
182
  props?: never;
149
183
  }
150
184
  /**
151
- * A global banner rendered under the header of the dashboard layout, on every
152
- * page — tenant pages and module back-office pages alike.
185
+ * A global banner rendered under the header of the dashboard layout, on the
186
+ * pages its `scope` selects — by default the application's pages, leaving the
187
+ * module area (`/modules/...`) out.
153
188
  */
154
189
  export type LayoutBannerInfo = LayoutBannerTextInfo | LayoutBannerComponentInfo | LayoutBannerResolvedInfo;
155
190
  /** @internal */
@@ -157,8 +192,9 @@ export declare namespace internal {
157
192
  const RegisterLayoutBanner: RegisteringProxy<(info: LayoutBannerInfo) => void>;
158
193
  }
159
194
  /**
160
- * Register a global banner under the dashboard header. Banners stack by
161
- * `order`, and each one's `visible` or `resolve` resolver is evaluated
195
+ * Register a global banner under the dashboard header, on the pages its
196
+ * `scope` selects (the application's pages by default, not the module area).
197
+ * Banners stack by `order`, and each one's `visible` or `resolve` resolver is evaluated
162
198
  * server-side for every site layout request, so the banner is in the
163
199
  * server-rendered page. When the state a resolver reads changes, call `NotifyMenuChanged(tenantId)` so the
164
200
  * connected clients re-fetch their site layout.
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.internal = exports.LayoutBannerVariant = void 0;
3
+ exports.internal = exports.LayoutBannerScope = exports.LayoutBannerVariant = void 0;
4
4
  exports.RegisterLayoutBanner = RegisterLayoutBanner;
5
5
  const interface_core_1 = require("@antelopejs/interface-core");
6
6
  /**
@@ -13,14 +13,36 @@ exports.LayoutBannerVariant = {
13
13
  WARNING: "warning",
14
14
  ERROR: "error",
15
15
  };
16
+ /**
17
+ * Which pages of the dashboard a layout banner shows on. The module area is
18
+ * everything under `MODULE_URL_PREFIX` (`/modules`): the modules page, the
19
+ * module store and every module's own pages.
20
+ */
21
+ exports.LayoutBannerScope = {
22
+ /**
23
+ * The application's pages, outside the module area: the default, for a
24
+ * banner about the application being built (overdue invoices, a stock
25
+ * alert) that has no business inside a module's back office.
26
+ */
27
+ APP: "app",
28
+ /** The module area only. */
29
+ MODULES: "modules",
30
+ /**
31
+ * Every page, module area included: for a workspace-wide state that must
32
+ * follow the user wherever they go (billing past due, a suspended
33
+ * workspace, a maintenance window).
34
+ */
35
+ EVERYWHERE: "everywhere",
36
+ };
16
37
  /** @internal */
17
38
  var internal;
18
39
  (function (internal) {
19
40
  internal.RegisterLayoutBanner = new interface_core_1.RegisteringProxy();
20
41
  })(internal || (exports.internal = internal = {}));
21
42
  /**
22
- * Register a global banner under the dashboard header. Banners stack by
23
- * `order`, and each one's `visible` or `resolve` resolver is evaluated
43
+ * Register a global banner under the dashboard header, on the pages its
44
+ * `scope` selects (the application's pages by default, not the module area).
45
+ * Banners stack by `order`, and each one's `visible` or `resolve` resolver is evaluated
24
46
  * server-side for every site layout request, so the banner is in the
25
47
  * server-rendered page. When the state a resolver reads changes, call `NotifyMenuChanged(tenantId)` so the
26
48
  * connected clients re-fetch their site layout.
@@ -1 +1 @@
1
- {"version":3,"file":"layout-banners.js","sourceRoot":"","sources":["../src/layout-banners.ts"],"names":[],"mappings":";;;AAmMA,oDAGC;AAtMD,+DAA8D;AAM9D;;;;GAIG;AACU,QAAA,mBAAmB,GAAG;IACjC,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;CACN,CAAC;AAiKX,gBAAgB;AAChB,IAAiB,QAAQ,CAIxB;AAJD,WAAiB,QAAQ;IACV,6BAAoB,GAAG,IAAI,iCAAgB,EAErD,CAAC;AACN,CAAC,EAJgB,QAAQ,wBAAR,QAAQ,QAIxB;AAED;;;;;;;;;;;GAWG;AACH,SAAgB,oBAAoB,CAAC,IAAsB;IACzD,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC"}
1
+ {"version":3,"file":"layout-banners.js","sourceRoot":"","sources":["../src/layout-banners.ts"],"names":[],"mappings":";;;AA0OA,oDAGC;AA7OD,+DAA8D;AAM9D;;;;GAIG;AACU,QAAA,mBAAmB,GAAG;IACjC,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;CACN,CAAC;AAKX;;;;GAIG;AACU,QAAA,iBAAiB,GAAG;IAC/B;;;;OAIG;IACH,GAAG,EAAE,KAAK;IACV,4BAA4B;IAC5B,OAAO,EAAE,SAAS;IAClB;;;;OAIG;IACH,UAAU,EAAE,YAAY;CAChB,CAAC;AA8KX,gBAAgB;AAChB,IAAiB,QAAQ,CAIxB;AAJD,WAAiB,QAAQ;IACV,6BAAoB,GAAG,IAAI,iCAAgB,EAErD,CAAC;AACN,CAAC,EAJgB,QAAQ,wBAAR,QAAQ,QAIxB;AAED;;;;;;;;;;;;GAYG;AACH,SAAgB,oBAAoB,CAAC,IAAsB;IACzD,QAAQ,CAAC,oBAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;IAC7C,OAAO,GAAG,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;AAC9D,CAAC"}
@@ -1,5 +1,5 @@
1
1
  import { RegisteringProxy } from "@antelopejs/interface-core";
2
- import type { DeliveryOptions, NotificationCategoryInfo, NotificationData, NotificationSubjectInfo, ReadScope } from "./types";
2
+ import type { DeliveryOptions, NotificationCategoryInfo, NotificationData, NotificationSubjectInfo, ReadScope, RoleSendOptions } from "./types";
3
3
  /**
4
4
  * @internal
5
5
  */
@@ -9,6 +9,6 @@ export declare namespace internal {
9
9
  const RegisterNotificationSubject: RegisteringProxy<(info: NotificationSubjectInfo) => void>;
10
10
  const SendToUser: (userId: string, data: NotificationData, groupId?: string | undefined, idempotencyKey?: string | undefined, delivery?: DeliveryOptions | undefined) => Promise<void>;
11
11
  const SendToUsers: (userIds: string[], data: NotificationData, readScope?: ReadScope | undefined, idempotencyKey?: string | undefined, delivery?: DeliveryOptions | undefined) => Promise<void>;
12
- const SendToRoles: (roleIds: string[], data: NotificationData, readScope?: ReadScope | undefined, idempotencyKey?: string | undefined, delivery?: DeliveryOptions | undefined) => Promise<void>;
12
+ const SendToRoles: (roleIds: string[], data: NotificationData, options?: RoleSendOptions | undefined) => Promise<void>;
13
13
  const SendToAll: (data: NotificationData, readScope?: ReadScope | undefined, idempotencyKey?: string | undefined, delivery?: DeliveryOptions | undefined) => Promise<void>;
14
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/notifications/internal.ts"],"names":[],"mappings":";;;AAAA,+DAGoC;AASpC,8EAA8E;AAC9E,+EAA+E;AAC/E,6BAA6B;AAE7B;;GAEG;AACH,IAAiB,QAAQ,CAqDxB;AArDD,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,GAQd,CAAC;IAEO,kBAAS,GACpB,IAAA,kCAAiB,GAOd,CAAC;AACR,CAAC,EArDgB,QAAQ,wBAAR,QAAQ,QAqDxB"}
1
+ {"version":3,"file":"internal.js","sourceRoot":"","sources":["../../src/notifications/internal.ts"],"names":[],"mappings":";;;AAAA,+DAGoC;AAUpC,8EAA8E;AAC9E,+EAA+E;AAC/E,6BAA6B;AAE7B;;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,4 +1,4 @@
1
- import type { NotificationData, SendOptions } from "./types";
1
+ import type { NotificationData, RoleSendOptions, SendOptions } from "./types";
2
2
  export declare class SendableNotification {
3
3
  private readonly data;
4
4
  constructor(data: NotificationData);
@@ -11,7 +11,8 @@ export declare class SendableNotification {
11
11
  toUsers(userIds: string[], options?: SendOptions): Promise<void>;
12
12
  /** Explicit capability for durable outbox delivery; older DMS versions do not expose this method. */
13
13
  toUsersIdempotently(userIds: string[], idempotencyKey: string, options?: SendOptions): Promise<void>;
14
- toRoles(roleIds: string[], options?: SendOptions): Promise<void>;
14
+ /** Sends to the holders of any of `roleIds`, in `options.tenantId` only when set. */
15
+ toRoles(roleIds: string[], options?: RoleSendOptions): Promise<void>;
15
16
  broadcast(options?: SendOptions): Promise<void>;
16
17
  private requireIdempotencySupport;
17
18
  }
@@ -27,9 +27,10 @@ class SendableNotification {
27
27
  async toUsersIdempotently(userIds, idempotencyKey, options = {}) {
28
28
  await this.toUsers(userIds, { ...options, idempotencyKey });
29
29
  }
30
+ /** Sends to the holders of any of `roleIds`, in `options.tenantId` only when set. */
30
31
  async toRoles(roleIds, options = {}) {
31
32
  await this.requireIdempotencySupport(options);
32
- await internal_1.internal.SendToRoles(roleIds, this.data, options.readScope, options.idempotencyKey, deliveryOf(options));
33
+ await internal_1.internal.SendToRoles(roleIds, this.data, options);
33
34
  }
34
35
  async broadcast(options = {}) {
35
36
  await this.requireIdempotencySupport(options);
@@ -1 +1 @@
1
- {"version":3,"file":"sendable.js","sourceRoot":"","sources":["../../src/notifications/sendable.ts"],"names":[],"mappings":";;;AAAA,yCAAsC;AAGtC,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,CAAqB,CAAC;IAC7D,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,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,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;AAtED,oDAsEC"}
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,CAAqB,CAAC;IAC7D,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"}
@@ -41,6 +41,15 @@ export interface SendOptions extends DeliveryOptions {
41
41
  /** Stable event key, unique across notification producers. Retries preserve delivery and dismissal state. */
42
42
  idempotencyKey?: string;
43
43
  }
44
+ /** Options of `toRoles`: a send to the holders of roles. */
45
+ export interface RoleSendOptions extends SendOptions {
46
+ /**
47
+ * Only the members of this tenant holding the roles. Role ids belong to a
48
+ * tenant, so a send about one tenant names it; without it, the holders are
49
+ * looked up in every tenant.
50
+ */
51
+ tenantId?: string;
52
+ }
44
53
  export interface NotificationData {
45
54
  icon: string;
46
55
  title: string;
@@ -1,4 +1,5 @@
1
1
  import { type ControllerClass } from "@antelopejs/interface-api";
2
+ import { EventProxy } from "@antelopejs/interface-core";
2
3
  import { type ComponentInfo } from "../component";
3
4
  import type { CategoryInfo, DynamicMenuResolver, MenuOptions } from "./types";
4
5
  export declare const RegisterPage: () => import("@antelopejs/interface-core/decorators").ClassDecorator<import("@antelopejs/interface-core/decorators").Class<any, any[]>>;
@@ -224,6 +225,36 @@ export interface FrontendPublicEndpoint {
224
225
  headers?: string[];
225
226
  }
226
227
  export declare const AddFrontendModule: (config: AddFrontendModuleOptions) => Promise<void>;
228
+ /**
229
+ * A module's frontend registration as both the backend and the frontend build
230
+ * compute it from the module's configuration. Its `privateOptions`, if any,
231
+ * hold their shape only, every value an empty string: the backend fills in its
232
+ * secrets before `AddFrontendModule`, and the frontend server fills them from
233
+ * its own environment when it starts (`DMS_HTML_RENDER_SECRET`,
234
+ * `DMS_PRIVATE_OPTIONS`…).
235
+ */
236
+ export type FrontendModuleRegistration = AddFrontendModuleOptions;
237
+ /** What a {@link FrontendModuleFunction} knows besides the module's config. */
238
+ export interface FrontendModuleContext {
239
+ /** Whether the project runs in development, as the core reports it. */
240
+ dev: boolean;
241
+ }
242
+ /**
243
+ * The pure `config → registration` function a module ships with its
244
+ * frontend, named in its package.json:
245
+ *
246
+ * ```json
247
+ * { "dmsFrontend": "dist/frontend-module.js" }
248
+ * ```
249
+ *
250
+ * The file exports it as `frontendModule`. The backend passes its result to
251
+ * `AddFrontendModule` (adding the private options); `@antelopejs/dms-frontend`
252
+ * calls it with the configuration it evaluates from `antelope.config.ts`, so
253
+ * a frontend builds and starts without asking a backend. It reads nothing
254
+ * but its arguments: no runtime interface, no database, no network. A module
255
+ * that registers no frontend in this configuration returns `undefined`.
256
+ */
257
+ export type FrontendModuleFunction<TConfig = unknown> = (config: TConfig, context: FrontendModuleContext) => FrontendModuleRegistration | undefined;
227
258
  export interface FrontendModuleMetadata {
228
259
  name: string;
229
260
  sourcePath: string;
@@ -255,3 +286,16 @@ export interface FrontendModuleMetadata {
255
286
  }
256
287
  /** Returns registered frontend source metadata for server-side module discovery, excluding private options. */
257
288
  export declare const GetFrontendModules: () => Promise<FrontendModuleMetadata[]>;
289
+ /**
290
+ * Fired whenever the list {@link GetFrontendModules} returns changes: a
291
+ * module registered its frontend (or replaced it with a higher priority), or
292
+ * a module was taken down with its frontend. Modules start in parallel, so a
293
+ * module that reads the list in its own `start()` may run before another
294
+ * registers: it registers a handler, reads the list once, and reads it again
295
+ * in the handler.
296
+ *
297
+ * @example
298
+ * FrontendModulesChanged.register(() => void refresh());
299
+ * await refresh(); // reads GetFrontendModules()
300
+ */
301
+ export declare const FrontendModulesChanged: EventProxy<() => void>;
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.GetFrontendModules = exports.AddFrontendModule = exports.NotifyMenuChanged = exports.RegisterPageExtension = exports.RegisterPage = void 0;
3
+ exports.FrontendModulesChanged = exports.GetFrontendModules = exports.AddFrontendModule = exports.NotifyMenuChanged = exports.RegisterPageExtension = exports.RegisterPage = void 0;
4
4
  exports.Category = Category;
5
5
  exports.PageController = PageController;
6
6
  exports.RootPageController = RootPageController;
@@ -260,4 +260,17 @@ function RootCategory(id, options) {
260
260
  exports.AddFrontendModule = (0, interface_core_1.InterfaceFunction)();
261
261
  /** Returns registered frontend source metadata for server-side module discovery, excluding private options. */
262
262
  exports.GetFrontendModules = (0, interface_core_1.InterfaceFunction)();
263
+ /**
264
+ * Fired whenever the list {@link GetFrontendModules} returns changes: a
265
+ * module registered its frontend (or replaced it with a higher priority), or
266
+ * a module was taken down with its frontend. Modules start in parallel, so a
267
+ * module that reads the list in its own `start()` may run before another
268
+ * registers: it registers a handler, reads the list once, and reads it again
269
+ * in the handler.
270
+ *
271
+ * @example
272
+ * FrontendModulesChanged.register(() => void refresh());
273
+ * await refresh(); // reads GetFrontendModules()
274
+ */
275
+ exports.FrontendModulesChanged = new interface_core_1.EventProxy("dms.page.FrontendModulesChanged");
263
276
  //# sourceMappingURL=controllers.js.map
@@ -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,17 +1,23 @@
1
1
  import type { ComponentInfo, ComponentFilterContext, ComponentInfoSerialized } from "../../component";
2
+ import { type PageRecordStatus } from "./page-record";
2
3
  /**
3
4
  * The page layout (the frame around the components) as one caller may see it:
4
5
  * the header buttons whose gate the caller fails are left out — a `permission`
5
6
  * names an action of the page, relative to `pagePermissionId` — and those
6
7
  * whose `availability` refuses the request are disabled with its reason, or
7
- * left out when it hides them.
8
+ * left out when it hides them. The buttons acting on the page's record take
9
+ * its fields, or are left out without it (`context.record`, which
10
+ * `readPageRecord` read); the layout's `record` loader is not served.
8
11
  * `loadPermissions` is only called when a button declares a permission. When
9
- * one declares an `availability`, the layout says which page query it was
10
- * resolved for (`headerActionsQuery`), so the header asks again for another.
12
+ * one declares an `availability`, or the layout reads a record, the layout
13
+ * says which page query it was served for (`headerActionsQuery`,
14
+ * `headerActionsParams`), so the header asks again for another. A layout
15
+ * reading a record also says how it read it (`recordStatus`), so the page
16
+ * leaves a record deleted under it.
11
17
  *
12
18
  * @internal
13
19
  */
14
- export declare function filterLayoutHeaderActions<T>(layout: ComponentInfo<T> | undefined, loadPermissions: () => Promise<Set<string>>, context: ComponentFilterContext, pagePermissionId: string | undefined): Promise<ComponentInfo<T> | undefined>;
20
+ export declare function filterLayoutHeaderActions<T>(layout: ComponentInfo<T> | undefined, loadPermissions: () => Promise<Set<string>>, context: ComponentFilterContext, pagePermissionId: string | undefined, recordStatus?: PageRecordStatus): Promise<ComponentInfo<T> | undefined>;
15
21
  /**
16
22
  * The layout with, after its own header buttons, those the components of the
17
23
  * page place in the header (`placement: "header"`): served as the components
@@ -4,9 +4,13 @@ exports.filterLayoutHeaderActions = filterLayoutHeaderActions;
4
4
  exports.withComponentHeaderButtons = withComponentHeaderButtons;
5
5
  const button_availability_1 = require("../../base/internal/button-availability");
6
6
  const component_target_1 = require("./component-target");
7
+ const page_record_1 = require("./page-record");
7
8
  const permission_gate_1 = require("../../internal/permission-gate");
8
- async function serveHeaderButton(button, permissions, pagePermissionId, context) {
9
- const { permission: _permission, permissionId: _permissionId, availability, ...served } = button;
9
+ async function serveHeaderButton(declared, permissions, pagePermissionId, context, declaresRecord) {
10
+ const button = (0, page_record_1.withPageRecord)(declared, declaresRecord, context.record);
11
+ if (!button)
12
+ return undefined;
13
+ const { permission: _permission, permissionId: _permissionId, requiresRecord: _requiresRecord, availability, ...served } = button;
10
14
  if ((0, permission_gate_1.isPermissionGated)(button) &&
11
15
  !(await (0, permission_gate_1.holdsPermissionGate)(await permissions(), button, pagePermissionId))) {
12
16
  return undefined;
@@ -18,28 +22,37 @@ async function serveHeaderButton(button, permissions, pagePermissionId, context)
18
22
  * the header buttons whose gate the caller fails are left out — a `permission`
19
23
  * names an action of the page, relative to `pagePermissionId` — and those
20
24
  * whose `availability` refuses the request are disabled with its reason, or
21
- * left out when it hides them.
25
+ * left out when it hides them. The buttons acting on the page's record take
26
+ * its fields, or are left out without it (`context.record`, which
27
+ * `readPageRecord` read); the layout's `record` loader is not served.
22
28
  * `loadPermissions` is only called when a button declares a permission. When
23
- * one declares an `availability`, the layout says which page query it was
24
- * resolved for (`headerActionsQuery`), so the header asks again for another.
29
+ * one declares an `availability`, or the layout reads a record, the layout
30
+ * says which page query it was served for (`headerActionsQuery`,
31
+ * `headerActionsParams`), so the header asks again for another. A layout
32
+ * reading a record also says how it read it (`recordStatus`), so the page
33
+ * leaves a record deleted under it.
25
34
  *
26
35
  * @internal
27
36
  */
28
- async function filterLayoutHeaderActions(layout, loadPermissions, context, pagePermissionId) {
37
+ async function filterLayoutHeaderActions(layout, loadPermissions, context, pagePermissionId, recordStatus) {
29
38
  const options = layout?.options;
30
- const buttons = options?.headerActions;
31
- if (!layout || !buttons)
39
+ if (!layout || !options)
32
40
  return layout;
41
+ const { record: _record, headerActions: buttons = [], ...frame } = options;
42
+ const declaresRecord = recordStatus !== undefined;
33
43
  let loaded;
34
44
  const permissions = () => (loaded ??= loadPermissions());
35
- const served = await Promise.all(buttons.map((button) => serveHeaderButton(button, permissions, pagePermissionId, context)));
36
- const servedOptions = {
37
- ...options,
38
- headerActions: served.filter((button) => button !== undefined),
39
- };
40
- if (buttons.some((button) => button.availability)) {
45
+ const served = await Promise.all(buttons.map((button) => serveHeaderButton(button, permissions, pagePermissionId, context, declaresRecord)));
46
+ const servedOptions = { ...frame };
47
+ if (options.headerActions) {
48
+ servedOptions.headerActions = served.filter((button) => button !== undefined);
49
+ }
50
+ if (declaresRecord || buttons.some((button) => button.availability)) {
41
51
  servedOptions.headerActionsQuery = context.query ?? {};
52
+ servedOptions.headerActionsParams = context.params ?? {};
42
53
  }
54
+ if (declaresRecord)
55
+ servedOptions.recordStatus = recordStatus;
43
56
  return { ...layout, options: servedOptions };
44
57
  }
45
58
  const HEADER_PLACEMENT = "header";
@@ -1 +1 @@
1
- {"version":3,"file":"layout-filter.js","sourceRoot":"","sources":["../../../src/page/internal/layout-filter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"layout-filter.js","sourceRoot":"","sources":["../../../src/page/internal/layout-filter.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,13 @@ export declare const RequestTenantIdProperty: () => import("@antelopejs/interfac
11
11
  export declare function readRequestQuery(ctx: Pick<RequestContext, "url">): Record<string, string>;
12
12
  /** @internal */
13
13
  export declare const RequestQueryProperty: () => import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
14
+ /**
15
+ * The route parameters of the request (`:id` of a page's layout route), as a
16
+ * header button's `availability` reads them.
17
+ *
18
+ * @internal
19
+ */
20
+ export declare const RequestRouteParametersProperty: () => import("@antelopejs/interface-core/decorators").PropertyDecorator & import("@antelopejs/interface-core/decorators").ParameterDecorator;
14
21
  /** @internal */
15
22
  export declare function isPageInsideModule(pageInfo: PageInfo): boolean;
16
23
  /** @internal */
@@ -5,7 +5,7 @@
5
5
  //
6
6
  // Split out of metadata.ts.
7
7
  Object.defineProperty(exports, "__esModule", { value: true });
8
- exports.RequestQueryProperty = exports.RequestTenantIdProperty = void 0;
8
+ exports.RequestRouteParametersProperty = exports.RequestQueryProperty = exports.RequestTenantIdProperty = void 0;
9
9
  exports.readRequestQuery = readRequestQuery;
10
10
  exports.isPageInsideModule = isPageInsideModule;
11
11
  exports.logModuleRouteGated = logModuleRouteGated;
@@ -25,7 +25,7 @@ const request_tenant_1 = require("../../request-tenant");
25
25
  const types_1 = require("../types");
26
26
  /** @internal */
27
27
  exports.RequestTenantIdProperty = (0, decorators_1.MakeParameterAndPropertyDecorator)((target, key, index) => {
28
- (0, interface_api_1.SetParameterProvider)(target, key, index, (ctx) => (0, request_tenant_1.getRequestTenantId)(ctx));
28
+ (0, interface_api_1.SetParameterProvider)(target, key, index, (ctx) => (0, request_tenant_1.resolveRequestTenantId)(ctx));
29
29
  });
30
30
  /**
31
31
  * The query of the request, one value per name (the last one given), as a
@@ -40,6 +40,17 @@ function readRequestQuery(ctx) {
40
40
  exports.RequestQueryProperty = (0, decorators_1.MakeParameterAndPropertyDecorator)((target, key, index) => {
41
41
  (0, interface_api_1.SetParameterProvider)(target, key, index, readRequestQuery);
42
42
  });
43
+ /**
44
+ * The route parameters of the request (`:id` of a page's layout route), as a
45
+ * header button's `availability` reads them.
46
+ *
47
+ * @internal
48
+ */
49
+ exports.RequestRouteParametersProperty = (0, decorators_1.MakeParameterAndPropertyDecorator)((target, key, index) => {
50
+ (0, interface_api_1.SetParameterProvider)(target, key, index, (ctx) => ({
51
+ ...ctx.routeParameters,
52
+ }));
53
+ });
43
54
  /** @internal */
44
55
  function isPageInsideModule(pageInfo) {
45
56
  return pageInfo.fullSlug.startsWith(`${types_1.MODULE_URL_PREFIX}/`);
@@ -1 +1 @@
1
- {"version":3,"file":"metadata-helpers.js","sourceRoot":"","sources":["../../../src/page/internal/metadata-helpers.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,8EAA8E;AAC9E,eAAe;AACf,EAAE;AACF,4BAA4B;;;AAkC5B,4CAIC;AAUD,gDAEC;AAKD,kDAIC;AAzDD,6DAGmC;AACnC,sEAA0F;AAC1F,gEAA6D;AAC7D,8EAA8E;AAC9E,2EAA2E;AAC3E,mEAAmE;AACnE,kBAAkB;AAClB,yDAA0D;AAC1D,iEAAiE;AACjE,6DAA6D;AAC7D,6DAA6D;AAC7D,6CAA6C;AAC7C,2CAA2C;AAC3C,oCAA4D;AAC5D,gBAAgB;AACH,QAAA,uBAAuB,GAAG,IAAA,8CAAiC,EACtE,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;IACrB,IAAA,oCAAoB,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAmB,EAAE,EAAE,CAC/D,IAAA,mCAAkB,EAAC,GAAG,CAAC,CACxB,CAAC;AACJ,CAAC,CACF,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,gBAAgB,CAC9B,GAAgC;IAEhC,OAAO,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAClD,CAAC;AAED,gBAAgB;AACH,QAAA,oBAAoB,GAAG,IAAA,8CAAiC,EACnE,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;IACrB,IAAA,oCAAoB,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC7D,CAAC,CACF,CAAC;AAEF,gBAAgB;AAChB,SAAgB,kBAAkB,CAAC,QAAkB;IACnD,OAAO,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,yBAAiB,GAAG,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;AAE5C,gBAAgB;AAChB,SAAgB,mBAAmB,CAAC,QAAgB;IAClD,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO;IAC5C,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChC,iBAAO,CAAC,IAAI,CAAC,sBAAsB,QAAQ,uBAAuB,CAAC,CAAC;AACtE,CAAC"}
1
+ {"version":3,"file":"metadata-helpers.js","sourceRoot":"","sources":["../../../src/page/internal/metadata-helpers.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,8EAA8E;AAC9E,eAAe;AACf,EAAE;AACF,4BAA4B;;;AAkC5B,4CAIC;AAwBD,gDAEC;AAKD,kDAIC;AAvED,6DAGmC;AACnC,sEAA0F;AAC1F,gEAA6D;AAC7D,8EAA8E;AAC9E,2EAA2E;AAC3E,mEAAmE;AACnE,kBAAkB;AAClB,yDAA8D;AAC9D,iEAAiE;AACjE,6DAA6D;AAC7D,6DAA6D;AAC7D,6CAA6C;AAC7C,2CAA2C;AAC3C,oCAA4D;AAC5D,gBAAgB;AACH,QAAA,uBAAuB,GAAG,IAAA,8CAAiC,EACtE,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;IACrB,IAAA,oCAAoB,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAmB,EAAE,EAAE,CAC/D,IAAA,uCAAsB,EAAC,GAAG,CAAC,CAC5B,CAAC;AACJ,CAAC,CACF,CAAC;AAEF;;;;;GAKG;AACH,SAAgB,gBAAgB,CAC9B,GAAgC;IAEhC,OAAO,MAAM,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;AAClD,CAAC;AAED,gBAAgB;AACH,QAAA,oBAAoB,GAAG,IAAA,8CAAiC,EACnE,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;IACrB,IAAA,oCAAoB,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;AAC7D,CAAC,CACF,CAAC;AAEF;;;;;GAKG;AACU,QAAA,8BAA8B,GAAG,IAAA,8CAAiC,EAC7E,CAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;IACrB,IAAA,oCAAoB,EAAC,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,GAAmB,EAAE,EAAE,CAAC,CAAC;QACjE,GAAG,GAAG,CAAC,eAAe;KACvB,CAAC,CAAC,CAAC;AACN,CAAC,CACF,CAAC;AAEF,gBAAgB;AAChB,SAAgB,kBAAkB,CAAC,QAAkB;IACnD,OAAO,QAAQ,CAAC,QAAQ,CAAC,UAAU,CAAC,GAAG,yBAAiB,GAAG,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,iBAAiB,GAAG,IAAI,GAAG,EAAU,CAAC;AAE5C,gBAAgB;AAChB,SAAgB,mBAAmB,CAAC,QAAgB;IAClD,IAAI,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC;QAAE,OAAO;IAC5C,iBAAiB,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;IAChC,iBAAO,CAAC,IAAI,CAAC,sBAAsB,QAAQ,uBAAuB,CAAC,CAAC;AACtE,CAAC"}