@antelopejs/interface-dms 0.4.1 → 0.5.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 (92) hide show
  1. package/CHANGELOG.md +44 -0
  2. package/dist/auth/db/tables/users.table.d.ts +7 -0
  3. package/dist/auth/db/tables/users.table.js +4 -0
  4. package/dist/auth/db/tables/users.table.js.map +1 -1
  5. package/dist/base/activity-feed.d.ts +10 -0
  6. package/dist/base/activity-feed.js +4 -0
  7. package/dist/base/activity-feed.js.map +1 -1
  8. package/dist/base/banner.d.ts +15 -9
  9. package/dist/base/banner.js +8 -3
  10. package/dist/base/banner.js.map +1 -1
  11. package/dist/base/card.d.ts +2 -2
  12. package/dist/base/chart-card.d.ts +2 -2
  13. package/dist/base/internal/composed-text.d.ts +14 -0
  14. package/dist/base/internal/composed-text.js +51 -0
  15. package/dist/base/internal/composed-text.js.map +1 -0
  16. package/dist/base/key-value-list.d.ts +31 -25
  17. package/dist/base/key-value-list.js +5 -3
  18. package/dist/base/key-value-list.js.map +1 -1
  19. package/dist/base/kpi-card.d.ts +2 -2
  20. package/dist/base/nav-card-grid.d.ts +3 -1
  21. package/dist/base/nav-card-grid.js.map +1 -1
  22. package/dist/base/stat-group.d.ts +30 -21
  23. package/dist/base/stat-group.js +7 -3
  24. package/dist/base/stat-group.js.map +1 -1
  25. package/dist/base/table-view/column-display.d.ts +80 -3
  26. package/dist/base/table-view/column-display.js +12 -1
  27. package/dist/base/table-view/column-display.js.map +1 -1
  28. package/dist/base/table-view/internal/factory-helpers.js +8 -0
  29. package/dist/base/table-view/internal/factory-helpers.js.map +1 -1
  30. package/dist/base/table-view/internal/nav-badges.js +7 -2
  31. package/dist/base/table-view/internal/nav-badges.js.map +1 -1
  32. package/dist/base/table-view/options.d.ts +11 -4
  33. package/dist/base/table-view/options.js.map +1 -1
  34. package/dist/base/table-view/schema.d.ts +21 -7
  35. package/dist/base/table-view/schema.js +6 -4
  36. package/dist/base/table-view/schema.js.map +1 -1
  37. package/dist/base/top-list-card.d.ts +2 -2
  38. package/dist/base/types/composed-text.d.ts +120 -0
  39. package/dist/base/types/composed-text.js +17 -0
  40. package/dist/base/types/composed-text.js.map +1 -0
  41. package/dist/base/types/index.d.ts +1 -0
  42. package/dist/base/types/index.js +1 -0
  43. package/dist/base/types/index.js.map +1 -1
  44. package/dist/component.d.ts +35 -4
  45. package/dist/component.js +20 -7
  46. package/dist/component.js.map +1 -1
  47. package/dist/data-controllers/roles.js +10 -0
  48. package/dist/data-controllers/roles.js.map +1 -1
  49. package/dist/db/internal/inviteResolutions.model.d.ts +5 -0
  50. package/dist/db/internal/inviteResolutions.model.js +13 -0
  51. package/dist/db/internal/inviteResolutions.model.js.map +1 -1
  52. package/dist/db/tables/inviteResolutions.table.d.ts +5 -0
  53. package/dist/db/tables/inviteResolutions.table.js +5 -0
  54. package/dist/db/tables/inviteResolutions.table.js.map +1 -1
  55. package/dist/db/tables/user_invites.table.d.ts +0 -1
  56. package/dist/db/tables/user_invites.table.js +0 -4
  57. package/dist/db/tables/user_invites.table.js.map +1 -1
  58. package/dist/internal/permission-ids.d.ts +16 -0
  59. package/dist/internal/permission-ids.js +31 -0
  60. package/dist/internal/permission-ids.js.map +1 -0
  61. package/dist/internal/permission-requirements.d.ts +15 -0
  62. package/dist/internal/permission-requirements.js +38 -0
  63. package/dist/internal/permission-requirements.js.map +1 -0
  64. package/dist/invite-resolution.js +0 -1
  65. package/dist/invite-resolution.js.map +1 -1
  66. package/dist/invites.d.ts +0 -2
  67. package/dist/invites.js +1 -3
  68. package/dist/invites.js.map +1 -1
  69. package/dist/layout-banners.d.ts +74 -11
  70. package/dist/layout-banners.js +3 -3
  71. package/dist/layout-banners.js.map +1 -1
  72. package/dist/page/internal/categories.js +2 -1
  73. package/dist/page/internal/categories.js.map +1 -1
  74. package/dist/page/internal/member-access.d.ts +14 -0
  75. package/dist/page/internal/member-access.js +22 -0
  76. package/dist/page/internal/member-access.js.map +1 -0
  77. package/dist/page/internal/nav-badges.d.ts +41 -6
  78. package/dist/page/internal/nav-badges.js +66 -17
  79. package/dist/page/internal/nav-badges.js.map +1 -1
  80. package/dist/page/layout-filter.js +10 -3
  81. package/dist/page/layout-filter.js.map +1 -1
  82. package/dist/page/metadata.d.ts +9 -0
  83. package/dist/page/metadata.js +35 -4
  84. package/dist/page/metadata.js.map +1 -1
  85. package/dist/page/roots.d.ts +7 -0
  86. package/dist/page/roots.js +8 -0
  87. package/dist/page/roots.js.map +1 -1
  88. package/dist/page/types.d.ts +19 -3
  89. package/dist/permissions.d.ts +11 -0
  90. package/dist/permissions.js +50 -10
  91. package/dist/permissions.js.map +1 -1
  92. package/package.json +1 -1
@@ -0,0 +1,31 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.permissionIdAncestors = permissionIdAncestors;
4
+ exports.withPermissionAncestors = withPermissionAncestors;
5
+ const ID_SEPARATOR = ".";
6
+ /**
7
+ * The ids a dotted permission id sits under, closest first: `a.b.c` gives
8
+ * `a.b` and `a`. A component's id extends its page's, an action's its
9
+ * component's, so these are the permissions it depends on.
10
+ *
11
+ * @internal
12
+ */
13
+ function permissionIdAncestors(id) {
14
+ const parts = id.split(ID_SEPARATOR);
15
+ return parts
16
+ .slice(1)
17
+ .map((_, position) => parts.slice(0, parts.length - position - 1).join(ID_SEPARATOR));
18
+ }
19
+ /**
20
+ * A role's permission set completed with every id its permissions sit under,
21
+ * deduplicated: what the roles editor grants with a permission, and what a
22
+ * role is stored with whichever route saved it.
23
+ *
24
+ * @internal
25
+ */
26
+ function withPermissionAncestors(permissions) {
27
+ return [
28
+ ...new Set(permissions.flatMap((id) => [id, ...permissionIdAncestors(id)])),
29
+ ];
30
+ }
31
+ //# sourceMappingURL=permission-ids.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-ids.js","sourceRoot":"","sources":["../../src/internal/permission-ids.ts"],"names":[],"mappings":";;AASA,sDAOC;AASD,0DAIC;AA7BD,MAAM,YAAY,GAAG,GAAG,CAAC;AAEzB;;;;;;GAMG;AACH,SAAgB,qBAAqB,CAAC,EAAU;IAC9C,MAAM,KAAK,GAAG,EAAE,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACrC,OAAO,KAAK;SACT,KAAK,CAAC,CAAC,CAAC;SACR,GAAG,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,EAAE,CACnB,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAC/D,CAAC;AACN,CAAC;AAED;;;;;;GAMG;AACH,SAAgB,uBAAuB,CAAC,WAAqB;IAC3D,OAAO;QACL,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,GAAG,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;KAC5E,CAAC;AACJ,CAAC"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * A role's permission set completed with everything its permissions need:
3
+ * the ids each one sits under, and the `dependencies` a registered permission
4
+ * declares (a table's edit needs its view, the read that loads the row), with
5
+ * what those need in turn. What a role is stored with, whichever route saved
6
+ * it, as the roles editor grants it.
7
+ *
8
+ * Only registered permissions are added: an id nothing registers (a module
9
+ * not loaded right now, a typo) is kept as given, but no parent is made up
10
+ * from its dotted path — `does.not.exist` must not bring a `does` that a
11
+ * module could register later.
12
+ *
13
+ * @internal
14
+ */
15
+ export declare function withRequiredPermissions(permissions: string[]): Promise<string[]>;
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.withRequiredPermissions = withRequiredPermissions;
4
+ const permissions_1 = require("../permissions");
5
+ const permission_ids_1 = require("./permission-ids");
6
+ /**
7
+ * A role's permission set completed with everything its permissions need:
8
+ * the ids each one sits under, and the `dependencies` a registered permission
9
+ * declares (a table's edit needs its view, the read that loads the row), with
10
+ * what those need in turn. What a role is stored with, whichever route saved
11
+ * it, as the roles editor grants it.
12
+ *
13
+ * Only registered permissions are added: an id nothing registers (a module
14
+ * not loaded right now, a typo) is kept as given, but no parent is made up
15
+ * from its dotted path — `does.not.exist` must not bring a `does` that a
16
+ * module could register later.
17
+ *
18
+ * @internal
19
+ */
20
+ async function withRequiredPermissions(permissions) {
21
+ const required = new Set(permissions);
22
+ const pending = [...required];
23
+ for (let id = pending.shift(); id !== undefined; id = pending.shift()) {
24
+ const permission = await (0, permissions_1.GetPermission)(id);
25
+ const needed = [
26
+ ...(0, permission_ids_1.permissionIdAncestors)(id),
27
+ ...(permission?.dependencies ?? []),
28
+ ];
29
+ for (const neededId of needed) {
30
+ if (required.has(neededId) || !(await (0, permissions_1.GetPermission)(neededId)))
31
+ continue;
32
+ required.add(neededId);
33
+ pending.push(neededId);
34
+ }
35
+ }
36
+ return [...required];
37
+ }
38
+ //# sourceMappingURL=permission-requirements.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"permission-requirements.js","sourceRoot":"","sources":["../../src/internal/permission-requirements.ts"],"names":[],"mappings":";;AAiBA,0DAkBC;AAnCD,gDAA+C;AAC/C,qDAAyD;AAEzD;;;;;;;;;;;;;GAaG;AACI,KAAK,UAAU,uBAAuB,CAC3C,WAAqB;IAErB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,WAAW,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC9B,KAAK,IAAI,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,KAAK,SAAS,EAAE,EAAE,GAAG,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;QACtE,MAAM,UAAU,GAAG,MAAM,IAAA,2BAAa,EAAC,EAAE,CAAC,CAAC;QAC3C,MAAM,MAAM,GAAG;YACb,GAAG,IAAA,sCAAqB,EAAC,EAAE,CAAC;YAC5B,GAAG,CAAC,UAAU,EAAE,YAAY,IAAI,EAAE,CAAC;SACpC,CAAC;QACF,KAAK,MAAM,QAAQ,IAAI,MAAM,EAAE,CAAC;YAC9B,IAAI,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,IAAA,2BAAa,EAAC,QAAQ,CAAC,CAAC;gBAAE,SAAS;YACzE,QAAQ,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YACvB,OAAO,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;IACD,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;AACvB,CAAC"}
@@ -45,7 +45,6 @@ function replacementContent(invite) {
45
45
  invite.language,
46
46
  invite.roles_ids,
47
47
  invite.asTenantOwner,
48
- invite.skipEmailValidation,
49
48
  invite.extensions,
50
49
  ]));
51
50
  }
@@ -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":"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"}
package/dist/invites.d.ts CHANGED
@@ -12,7 +12,6 @@ export interface InviteUserToTenantOptions {
12
12
  language?: string;
13
13
  roleIds?: string[];
14
14
  asTenantOwner?: boolean;
15
- skipEmailValidation?: boolean;
16
15
  /** Opt-in: dispatch `sendAdminInviteEmail` after the invite row is created. */
17
16
  sendEmail?: boolean;
18
17
  /**
@@ -70,7 +69,6 @@ export interface CreateUserInviteTokenOptions {
70
69
  language: string;
71
70
  roleIds: string[];
72
71
  asTenantOwner: boolean;
73
- skipEmailValidation: boolean;
74
72
  /** Id of the user who sends the invitation; `null` when nobody signed in did. */
75
73
  invitedBy?: string | null;
76
74
  extensions?: InviteExtensionPayloads;
package/dist/invites.js CHANGED
@@ -56,7 +56,7 @@ async function inviteUserToTenant(options) {
56
56
  };
57
57
  }
58
58
  async function inviteAdmittedUser(options) {
59
- const { tenantId, email, firstname = null, lastname = null, language = "en", roleIds = [], asTenantOwner = false, skipEmailValidation = false, invitedBy = null, extensions, } = options;
59
+ const { tenantId, email, firstname = null, lastname = null, language = "en", roleIds = [], asTenantOwner = false, invitedBy = null, extensions, } = options;
60
60
  const userModel = (0, interface_database_decorators_1.GetModel)(db_2.UserModel);
61
61
  const existingUser = await userModel.getByEmail(email);
62
62
  if (existingUser) {
@@ -75,7 +75,6 @@ async function inviteAdmittedUser(options) {
75
75
  language,
76
76
  roleIds,
77
77
  asTenantOwner,
78
- skipEmailValidation,
79
78
  invitedBy,
80
79
  extensions,
81
80
  });
@@ -157,7 +156,6 @@ function buildInviteSnapshot(options) {
157
156
  token: randomstring_1.default.generate({ length: exports.INVITE_TOKEN_LENGTH }),
158
157
  asTenantOwner: options.asTenantOwner,
159
158
  expiresAt: new Date(Date.now() + exports.INVITE_EXPIRY_DAYS * time_1.MILLISECONDS_PER_DAY),
160
- skipEmailValidation: options.skipEmailValidation,
161
159
  invitedBy: options.invitedBy ?? null,
162
160
  extensions: options.extensions ?? null,
163
161
  });
@@ -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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"}
@@ -1,5 +1,7 @@
1
1
  import { RegisteringProxy } from "@antelopejs/interface-core";
2
2
  import type { User } from "./auth/db";
3
+ import type { BlockLinkAction } from "./base/display";
4
+ import type { BlockText } from "./base/types/composed-text";
3
5
  import type { MaybePromise } from "./types";
4
6
  /**
5
7
  * Semantic look of a layout banner. It also picks the banner's ARIA role:
@@ -13,8 +15,8 @@ export declare const LayoutBannerVariant: {
13
15
  };
14
16
  export type LayoutBannerVariant = (typeof LayoutBannerVariant)[keyof typeof LayoutBannerVariant];
15
17
  /**
16
- * What a banner's `visible` resolver decides on: the request the site layout
17
- * is being built for.
18
+ * What a banner's `visible` or `resolve` resolver decides on: the request the
19
+ * site layout is being built for.
18
20
  */
19
21
  export interface LayoutBannerContext {
20
22
  /** Undefined for an unauthenticated request. */
@@ -41,6 +43,31 @@ export interface LayoutBannerContext {
41
43
  * does not answer within two seconds, hides its banner for that request.
42
44
  */
43
45
  export type LayoutBannerVisibility = (context: LayoutBannerContext) => MaybePromise<boolean>;
46
+ /**
47
+ * What a text banner shows: its message and, after it, link buttons.
48
+ */
49
+ export interface LayoutBannerContent {
50
+ /**
51
+ * The message: a `$`-prefixed value resolves as an i18n key, and a
52
+ * `ComposedText` is composed in the reader's language from the raw values
53
+ * it carries — an amount, a date, a count.
54
+ */
55
+ text: BlockText;
56
+ /**
57
+ * Link buttons after the message; the last one is the main action. Their
58
+ * labels follow the `$` convention.
59
+ */
60
+ actions?: BlockLinkAction[];
61
+ }
62
+ /**
63
+ * Builds a banner's content per request, or answers `undefined` to hide it:
64
+ * the visibility and the message in one read, for a banner whose message
65
+ * names the state that makes it show (an invoice number, the amount due, the
66
+ * date the workspace is suspended). Runs where and when a
67
+ * {@link LayoutBannerVisibility} does, under the same two-second budget: a
68
+ * resolver that throws or does not answer hides its banner for that request.
69
+ */
70
+ export type LayoutBannerResolver = (context: LayoutBannerContext) => MaybePromise<LayoutBannerContent | undefined>;
44
71
  interface LayoutBannerBase {
45
72
  /**
46
73
  * Unique key of the banner across the deployment: re-registering a key
@@ -62,18 +89,19 @@ interface LayoutBannerBase {
62
89
  * leaves the banner out. Defaults to `false`.
63
90
  */
64
91
  dismissible?: boolean;
92
+ }
93
+ interface LayoutBannerStaticBase extends LayoutBannerBase {
65
94
  /** Absent means the banner shows on every request. */
66
95
  visible?: LayoutBannerVisibility;
96
+ resolve?: never;
67
97
  }
68
- /** A banner showing a line of text. */
69
- export interface LayoutBannerTextInfo extends LayoutBannerBase {
70
- /** The message. A `$`-prefixed value resolves as an i18n key. */
71
- text: string;
98
+ /** A banner showing a fixed message, and optionally link buttons. */
99
+ export interface LayoutBannerTextInfo extends LayoutBannerStaticBase, LayoutBannerContent {
72
100
  component?: never;
73
101
  props?: never;
74
102
  }
75
103
  /** A banner mounting a component of a frontend layer as its content. */
76
- export interface LayoutBannerComponentInfo extends LayoutBannerBase {
104
+ export interface LayoutBannerComponentInfo extends LayoutBannerStaticBase {
77
105
  /**
78
106
  * Name of a global component, provided by a frontend layer, rendered as the
79
107
  * banner's content. The DMS still draws the chrome: color, icon, dismiss
@@ -83,21 +111,56 @@ export interface LayoutBannerComponentInfo extends LayoutBannerBase {
83
111
  /** Props passed to the component. Must be serializable. */
84
112
  props?: Record<string, unknown>;
85
113
  text?: never;
114
+ actions?: never;
115
+ }
116
+ /**
117
+ * A banner whose message and buttons are built per request by `resolve`,
118
+ * which also decides whether it shows.
119
+ *
120
+ * @example
121
+ * ```typescript
122
+ * RegisterLayoutBanner({
123
+ * key: "saas:past-due",
124
+ * variant: LayoutBannerVariant.ERROR,
125
+ * resolve: async ({ tenantId }) => {
126
+ * const invoice = await openInvoice(tenantId);
127
+ * if (!invoice) return undefined;
128
+ * return {
129
+ * text: {
130
+ * key: "saas.banner.past_due",
131
+ * params: {
132
+ * amount: { type: "money", value: invoice.due, currency: invoice.currency },
133
+ * date: { type: "date", value: invoice.retryAt, format: "day" },
134
+ * },
135
+ * },
136
+ * actions: [{ label: "$saas.banner.pay", to: "/settings/workspace/billing" }],
137
+ * };
138
+ * },
139
+ * });
140
+ * ```
141
+ */
142
+ export interface LayoutBannerResolvedInfo extends LayoutBannerBase {
143
+ resolve: LayoutBannerResolver;
144
+ visible?: never;
145
+ text?: never;
146
+ actions?: never;
147
+ component?: never;
148
+ props?: never;
86
149
  }
87
150
  /**
88
151
  * A global banner rendered under the header of the dashboard layout, on every
89
152
  * page — tenant pages and module back-office pages alike.
90
153
  */
91
- export type LayoutBannerInfo = LayoutBannerTextInfo | LayoutBannerComponentInfo;
154
+ export type LayoutBannerInfo = LayoutBannerTextInfo | LayoutBannerComponentInfo | LayoutBannerResolvedInfo;
92
155
  /** @internal */
93
156
  export declare namespace internal {
94
157
  const RegisterLayoutBanner: RegisteringProxy<(info: LayoutBannerInfo) => void>;
95
158
  }
96
159
  /**
97
160
  * Register a global banner under the dashboard header. Banners stack by
98
- * `order`, and each one's `visible` resolver is evaluated server-side for every
99
- * site layout request, so the banner is in the server-rendered page. When the
100
- * state a resolver reads changes, call `NotifyMenuChanged(tenantId)` so the
161
+ * `order`, and each one's `visible` or `resolve` resolver is evaluated
162
+ * server-side for every site layout request, so the banner is in the
163
+ * server-rendered page. When the state a resolver reads changes, call `NotifyMenuChanged(tenantId)` so the
101
164
  * connected clients re-fetch their site layout.
102
165
  *
103
166
  * The registration is dropped automatically when the registering module stops.
@@ -20,9 +20,9 @@ var internal;
20
20
  })(internal || (exports.internal = internal = {}));
21
21
  /**
22
22
  * Register a global banner under the dashboard header. Banners stack by
23
- * `order`, and each one's `visible` resolver is evaluated server-side for every
24
- * site layout request, so the banner is in the server-rendered page. When the
25
- * state a resolver reads changes, call `NotifyMenuChanged(tenantId)` so the
23
+ * `order`, and each one's `visible` or `resolve` resolver is evaluated
24
+ * server-side for every site layout request, so the banner is in the
25
+ * server-rendered page. When the state a resolver reads changes, call `NotifyMenuChanged(tenantId)` so the
26
26
  * connected clients re-fetch their site layout.
27
27
  *
28
28
  * The registration is dropped automatically when the registering module stops.
@@ -1 +1 @@
1
- {"version":3,"file":"layout-banners.js","sourceRoot":"","sources":["../src/layout-banners.ts"],"names":[],"mappings":";;;AA0HA,oDAGC;AA7HD,+DAA8D;AAI9D;;;;GAIG;AACU,QAAA,mBAAmB,GAAG;IACjC,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,SAAS;IAClB,KAAK,EAAE,OAAO;CACN,CAAC;AA0FX,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":";;;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"}
@@ -22,6 +22,7 @@ const metadata_1 = require("../metadata");
22
22
  const logging_1 = require("@antelopejs/interface-core/logging");
23
23
  const fire_and_forget_1 = require("../../utils/fire-and-forget");
24
24
  const registry_1 = require("./registry");
25
+ const member_access_1 = require("./member-access");
25
26
  const types_1 = require("./types");
26
27
  // The proxies and isInsideModule are only read inside function bodies; see
27
28
  // the matching import in ../categories.
@@ -187,7 +188,7 @@ function createCategoryFunction(id, options) {
187
188
  id: categoryInfo.fullId,
188
189
  title: categoryInfo.displayName,
189
190
  icon: categoryInfo.icon,
190
- defaultGranted: categoryInfo.publicAccess || categoryInfo.memberAccess,
191
+ defaultGranted: categoryInfo.publicAccess || (0, member_access_1.opensToMembers)(categoryInfo.memberAccess),
191
192
  // oxlint-disable-next-line typescript/no-misused-spread
192
193
  ...categoryInfo.permission,
193
194
  };
@@ -1 +1 @@
1
- {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../../src/page/internal/categories.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"categories.js","sourceRoot":"","sources":["../../../src/page/internal/categories.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ import type { MemberAccess } from "../types";
2
+ /**
3
+ * Whether `memberAccess` opens the entry that declares it to every member.
4
+ *
5
+ * @internal
6
+ */
7
+ export declare function opensToMembers(memberAccess: MemberAccess | undefined): boolean;
8
+ /**
9
+ * The `memberAccess` an entry takes from its parent: only `true` passes on,
10
+ * since `"self"` opens the parent alone.
11
+ *
12
+ * @internal
13
+ */
14
+ export declare function inheritedMemberAccess(parentMemberAccess: MemberAccess | undefined): true | undefined;
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.opensToMembers = opensToMembers;
4
+ exports.inheritedMemberAccess = inheritedMemberAccess;
5
+ /**
6
+ * Whether `memberAccess` opens the entry that declares it to every member.
7
+ *
8
+ * @internal
9
+ */
10
+ function opensToMembers(memberAccess) {
11
+ return memberAccess === true || memberAccess === "self";
12
+ }
13
+ /**
14
+ * The `memberAccess` an entry takes from its parent: only `true` passes on,
15
+ * since `"self"` opens the parent alone.
16
+ *
17
+ * @internal
18
+ */
19
+ function inheritedMemberAccess(parentMemberAccess) {
20
+ return parentMemberAccess === true ? true : undefined;
21
+ }
22
+ //# sourceMappingURL=member-access.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"member-access.js","sourceRoot":"","sources":["../../../src/page/internal/member-access.ts"],"names":[],"mappings":";;AAOA,wCAIC;AAQD,sDAIC;AArBD;;;;GAIG;AACH,SAAgB,cAAc,CAC5B,YAAsC;IAEtC,OAAO,YAAY,KAAK,IAAI,IAAI,YAAY,KAAK,MAAM,CAAC;AAC1D,CAAC;AAED;;;;;GAKG;AACH,SAAgB,qBAAqB,CACnC,kBAA4C;IAE5C,OAAO,kBAAkB,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;AACxD,CAAC"}
@@ -1,17 +1,52 @@
1
1
  import type { RequestContext } from "@antelopejs/interface-api";
2
2
  import type { User } from "../../auth/db";
3
+ import type { NavBadgeCount } from "../../component";
4
+ import type { Tone } from "../../base/types/tone";
3
5
  /**
4
- * Page full id → the navigation badge shown next to its entry.
6
+ * A page's navigation badge as the menu serves it: the label, and its tone
7
+ * when it is not neutral.
5
8
  *
6
9
  * @internal
7
10
  */
8
- export type NavBadges = Record<string, string>;
11
+ export interface ResolvedNavBadge {
12
+ badge: string;
13
+ tone?: Tone;
14
+ }
15
+ /**
16
+ * Page full id → its navigation badge and tone.
17
+ *
18
+ * @internal
19
+ */
20
+ export type ResolvedNavBadges = Record<string, ResolvedNavBadge>;
21
+ /**
22
+ * The tones a navigation badge takes, strongest first: an immediate risk, a
23
+ * thing to check, an action available, good news, then plain information.
24
+ * Several counts on one badge take the strongest of their tones.
25
+ *
26
+ * @internal
27
+ */
28
+ export declare const NAV_BADGE_TONE_ORDER: readonly Tone[];
29
+ /**
30
+ * The strongest of `tones` (see {@link NAV_BADGE_TONE_ORDER}); undefined when
31
+ * none is given.
32
+ *
33
+ * @internal
34
+ */
35
+ export declare function strongestNavBadgeTone(tones: Iterable<Tone | undefined>): Tone | undefined;
36
+ /**
37
+ * One badge for several counts: they add up, in the strongest tone of those
38
+ * that count something.
39
+ *
40
+ * @internal
41
+ */
42
+ export declare function combineNavBadgeCounts(values: Array<number | NavBadgeCount>): NavBadgeCount;
9
43
  /**
10
44
  * The navigation badges of the pages `pageFullIds` — those the caller can
11
- * open — for the caller of `ctx`: a table view tab declared with `navBadge`
12
- * publishes its counter for its page. A count the caller may not read, one
13
- * that fails, and a count of zero show no badge.
45
+ * open — for the caller of `ctx`, with their tones: a table view tab declared
46
+ * with `navBadge` publishes its counter for its page. A count the caller may
47
+ * not read, one that fails, and a count of zero show no badge; the counts a
48
+ * page receives from several components add up, in the strongest tone.
14
49
  *
15
50
  * @internal Called by the DMS when it serves the menu.
16
51
  */
17
- export declare function ResolveNavBadges(ctx: RequestContext, user: User, pageFullIds: Set<string>): Promise<NavBadges>;
52
+ export declare function ResolveNavBadgeEntries(ctx: RequestContext, user: User, pageFullIds: Set<string>): Promise<ResolvedNavBadges>;
@@ -1,10 +1,53 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.ResolveNavBadges = ResolveNavBadges;
3
+ exports.NAV_BADGE_TONE_ORDER = void 0;
4
+ exports.strongestNavBadgeTone = strongestNavBadgeTone;
5
+ exports.combineNavBadgeCounts = combineNavBadgeCounts;
6
+ exports.ResolveNavBadgeEntries = ResolveNavBadgeEntries;
4
7
  const interface_core_1 = require("@antelopejs/interface-core");
5
8
  const component_target_1 = require("./component-target");
6
9
  const metadata_1 = require("../metadata");
7
10
  const registry_1 = require("./registry");
11
+ /**
12
+ * The tones a navigation badge takes, strongest first: an immediate risk, a
13
+ * thing to check, an action available, good news, then plain information.
14
+ * Several counts on one badge take the strongest of their tones.
15
+ *
16
+ * @internal
17
+ */
18
+ exports.NAV_BADGE_TONE_ORDER = [
19
+ "error",
20
+ "warning",
21
+ "primary",
22
+ "secondary",
23
+ "success",
24
+ "info",
25
+ "neutral",
26
+ ];
27
+ /**
28
+ * The strongest of `tones` (see {@link NAV_BADGE_TONE_ORDER}); undefined when
29
+ * none is given.
30
+ *
31
+ * @internal
32
+ */
33
+ function strongestNavBadgeTone(tones) {
34
+ const given = new Set(tones);
35
+ return exports.NAV_BADGE_TONE_ORDER.find((tone) => given.has(tone));
36
+ }
37
+ /**
38
+ * One badge for several counts: they add up, in the strongest tone of those
39
+ * that count something.
40
+ *
41
+ * @internal
42
+ */
43
+ function combineNavBadgeCounts(values) {
44
+ const counts = values.map((value) => typeof value === "number" ? { count: value } : value);
45
+ const nonZero = counts.filter(({ count }) => count > 0);
46
+ const tone = strongestNavBadgeTone(nonZero.map(({ tone }) => tone));
47
+ const count = nonZero.reduce((sum, value) => sum + value.count, 0);
48
+ return tone ? { count, tone } : { count };
49
+ }
50
+ const NEUTRAL_TONE = "neutral";
8
51
  /** A component and everything it nests, each once. */
9
52
  function componentsUnder(root) {
10
53
  const seen = new Set();
@@ -24,7 +67,7 @@ function targetPageFullId(source, ownPageFullId) {
24
67
  return ownPageFullId;
25
68
  return (0, interface_core_1.GetMetadata)(source.page, metadata_1.PageMetadata).pageInfo?.fullId;
26
69
  }
27
- /** Every badge the registered pages publish, the first one for a page. */
70
+ /** Every badge the registered pages publish, with all the counts for a page. */
28
71
  function publishedNavBadges(pageFullIds) {
29
72
  const published = new Map();
30
73
  for (const [ownPageFullId, meta] of registry_1.pageMetadataByFullId) {
@@ -35,33 +78,39 @@ function publishedNavBadges(pageFullIds) {
35
78
  const pageFullId = targetPageFullId(source, ownPageFullId);
36
79
  if (!pageFullId || !pageFullIds.has(pageFullId))
37
80
  continue;
38
- if (!published.has(pageFullId)) {
39
- published.set(pageFullId, { pageFullId, source });
40
- }
81
+ const entry = published.get(pageFullId) ?? { pageFullId, sources: [] };
82
+ entry.sources.push(source);
83
+ published.set(pageFullId, entry);
41
84
  }
42
85
  }
43
86
  return [...published.values()];
44
87
  }
88
+ /** The counts of `sources` the caller may read; one that throws counts none. */
89
+ async function countSources(sources, ctx, user) {
90
+ const counted = await Promise.allSettled(sources.map((source) => source.count(ctx, user)));
91
+ return combineNavBadgeCounts(counted.flatMap((result) => result.status === "fulfilled" ? [result.value] : []));
92
+ }
45
93
  /**
46
94
  * The navigation badges of the pages `pageFullIds` — those the caller can
47
- * open — for the caller of `ctx`: a table view tab declared with `navBadge`
48
- * publishes its counter for its page. A count the caller may not read, one
49
- * that fails, and a count of zero show no badge.
95
+ * open — for the caller of `ctx`, with their tones: a table view tab declared
96
+ * with `navBadge` publishes its counter for its page. A count the caller may
97
+ * not read, one that fails, and a count of zero show no badge; the counts a
98
+ * page receives from several components add up, in the strongest tone.
50
99
  *
51
100
  * @internal Called by the DMS when it serves the menu.
52
101
  */
53
- async function ResolveNavBadges(ctx, user, pageFullIds) {
54
- const counted = await Promise.allSettled(publishedNavBadges(pageFullIds).map(async ({ pageFullId, source }) => {
55
- const count = await source.count(ctx, user);
56
- return [pageFullId, count];
102
+ async function ResolveNavBadgeEntries(ctx, user, pageFullIds) {
103
+ const counted = await Promise.all(publishedNavBadges(pageFullIds).map(async ({ pageFullId, sources }) => {
104
+ const { count, tone } = await countSources(sources, ctx, user);
105
+ return { pageFullId, count, tone };
57
106
  }));
58
107
  const badges = {};
59
- for (const result of counted) {
60
- if (result.status !== "fulfilled")
108
+ for (const { pageFullId, count, tone } of counted) {
109
+ if (count <= 0)
61
110
  continue;
62
- const [pageFullId, count] = result.value;
63
- if (count > 0)
64
- badges[pageFullId] = String(count);
111
+ const badge = String(count);
112
+ badges[pageFullId] =
113
+ tone && tone !== NEUTRAL_TONE ? { badge, tone } : { badge };
65
114
  }
66
115
  return badges;
67
116
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nav-badges.js","sourceRoot":"","sources":["../../../src/page/internal/nav-badges.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"nav-badges.js","sourceRoot":"","sources":["../../../src/page/internal/nav-badges.ts"],"names":[],"mappings":"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"}