@genesislcap/foundation-shell 14.130.0 → 14.132.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 (185) hide show
  1. package/MODULE_FEDERATION.md +11 -0
  2. package/README.md +19 -31
  3. package/dist/{13.13.0a5229d967f85c1dcc7b.js → 13.13.25393d337a73ab04aacd.js} +2 -2
  4. package/dist/{13.14eb364bfef1c6b09a28713f448b166a.js.map → 13.18ce90986215931e094ef572bdb883d6.js.map} +1 -1
  5. package/dist/InjectManifest.e1f16063b12a45e391ae7b4f95241ab2.js.map +1 -0
  6. package/dist/dts/app/app.d.ts +159 -0
  7. package/dist/dts/app/app.d.ts.map +1 -0
  8. package/dist/dts/app/behaviors.d.ts +53 -0
  9. package/dist/dts/app/behaviors.d.ts.map +1 -0
  10. package/dist/dts/app/config.d.ts +25 -0
  11. package/dist/dts/app/config.d.ts.map +1 -0
  12. package/dist/dts/app/index.d.ts +5 -0
  13. package/dist/dts/app/index.d.ts.map +1 -0
  14. package/dist/dts/app/types.d.ts +700 -0
  15. package/dist/dts/app/types.d.ts.map +1 -0
  16. package/dist/dts/app/utils.d.ts +61 -0
  17. package/dist/dts/app/utils.d.ts.map +1 -0
  18. package/dist/dts/index.docs.d.ts +8 -0
  19. package/dist/dts/index.docs.d.ts.map +1 -0
  20. package/dist/dts/layouts/default/layout.d.ts.map +1 -1
  21. package/dist/dts/layouts/formatsExample/layout.d.ts.map +1 -1
  22. package/dist/dts/main/main.d.ts +3 -0
  23. package/dist/dts/main/main.d.ts.map +1 -1
  24. package/dist/dts/main/main.styles.d.ts +3 -0
  25. package/dist/dts/main/main.styles.d.ts.map +1 -1
  26. package/dist/dts/main/main.template.d.ts +9 -0
  27. package/dist/dts/main/main.template.d.ts.map +1 -1
  28. package/dist/dts/pbc/index.d.ts +2 -0
  29. package/dist/dts/pbc/index.d.ts.map +1 -0
  30. package/dist/dts/pbc/pbc.d.ts +68 -0
  31. package/dist/dts/pbc/pbc.d.ts.map +1 -0
  32. package/dist/dts/pbc/vite/exports.d.ts +26 -0
  33. package/dist/dts/pbc/vite/exports.d.ts.map +1 -0
  34. package/dist/dts/pbc/vite/index.d.ts +2 -0
  35. package/dist/dts/pbc/vite/index.d.ts.map +1 -0
  36. package/dist/dts/pbc/vite/utils.d.ts +8 -0
  37. package/dist/dts/pbc/vite/utils.d.ts.map +1 -0
  38. package/dist/dts/pbc/webpack/exports.d.ts +26 -0
  39. package/dist/dts/pbc/webpack/exports.d.ts.map +1 -0
  40. package/dist/dts/pbc/webpack/index.d.ts +2 -0
  41. package/dist/dts/pbc/webpack/index.d.ts.map +1 -0
  42. package/dist/dts/pbc/webpack/utils.d.ts +9 -0
  43. package/dist/dts/pbc/webpack/utils.d.ts.map +1 -0
  44. package/dist/dts/serviceWorker/serviceWorker.d.ts +5 -0
  45. package/dist/dts/serviceWorker/serviceWorker.d.ts.map +1 -1
  46. package/dist/dts/tsdoc-metadata.json +11 -0
  47. package/dist/esm/app/app.js +190 -0
  48. package/dist/esm/app/behaviors.js +126 -0
  49. package/dist/esm/app/config.js +28 -0
  50. package/dist/esm/app/index.js +4 -0
  51. package/dist/esm/app/types.js +1 -0
  52. package/dist/esm/app/utils.js +102 -0
  53. package/dist/esm/index.docs.js +7 -0
  54. package/dist/esm/layouts/default/layout.js +3 -0
  55. package/dist/esm/layouts/formatsExample/layout.js +3 -0
  56. package/dist/esm/main/main.js +3 -0
  57. package/dist/esm/main/main.styles.js +3 -0
  58. package/dist/esm/main/main.template.js +9 -0
  59. package/dist/esm/pbc/index.js +1 -0
  60. package/dist/esm/pbc/pbc.js +82 -0
  61. package/dist/esm/pbc/vite/exports.js +38 -0
  62. package/dist/esm/pbc/vite/index.js +1 -0
  63. package/dist/esm/pbc/vite/utils.js +16 -0
  64. package/dist/esm/pbc/webpack/exports.js +26 -0
  65. package/dist/esm/pbc/webpack/index.js +1 -0
  66. package/dist/esm/pbc/webpack/utils.js +16 -0
  67. package/dist/esm/serviceWorker/serviceWorker.js +2 -0
  68. package/dist/foundation-shell.api.json +4415 -0
  69. package/dist/foundation-shell.d.ts +1098 -0
  70. package/dist/{foundationShell.2821b08ca33e2a6d27d11532b7d80f39.js.map → foundationShell.fd507b03419afeadf6bdbe8d1f3fe68d.js.map} +1 -1
  71. package/dist/index.html +2 -2
  72. package/dist/{main.3a1c013c1355ca77b9b2068663f54879.js.map → main.29e17abf31c88f12479a7d0f038eaf1e.js.map} +1 -1
  73. package/dist/main.d14d2a767d0adcf0df23.js +2 -0
  74. package/dist/remoteEntry.js +2 -2
  75. package/dist/sw.js +2 -2
  76. package/dist/{swRegistration.c6dced50e056c9092b08ba3e4138d59c.js.map → swRegistration.c548ed7b6209691de616d314b3cc7d74.js.map} +1 -1
  77. package/dist/{swRegistration.25c495fbecfd6e91ad6b.js → swRegistration.edc6c10e9b6d64fe5b02.js} +2 -2
  78. package/docs/.gitattributes +2 -0
  79. package/docs/api/foundation-shell.app.config.md +13 -0
  80. package/docs/api/foundation-shell.app.deregisterassets.md +17 -0
  81. package/docs/api/foundation-shell.app.hasassets.md +17 -0
  82. package/docs/api/foundation-shell.app.md +49 -0
  83. package/docs/api/foundation-shell.app.registerassets.md +52 -0
  84. package/docs/api/foundation-shell.appassets.elements.md +13 -0
  85. package/docs/api/foundation-shell.appassets.md +25 -0
  86. package/docs/api/foundation-shell.appassets.metadata.md +13 -0
  87. package/docs/api/foundation-shell.appassets.registrations.md +13 -0
  88. package/docs/api/foundation-shell.appassets.routes.md +13 -0
  89. package/docs/api/foundation-shell.appassets.stores.md +13 -0
  90. package/docs/api/foundation-shell.appassets.styles.md +13 -0
  91. package/docs/api/foundation-shell.appconfig.context.md +11 -0
  92. package/docs/api/foundation-shell.appconfig.defaultelementrepeatoptions.md +11 -0
  93. package/docs/api/foundation-shell.appconfig.md +21 -0
  94. package/docs/api/foundation-shell.appcontext.md +19 -0
  95. package/docs/api/foundation-shell.appdependencies.md +15 -0
  96. package/docs/api/foundation-shell.appdependencyprerequisites.md +15 -0
  97. package/docs/api/foundation-shell.appelement.md +55 -0
  98. package/docs/api/foundation-shell.appelementpredicate.md +17 -0
  99. package/docs/api/foundation-shell.appmetadata.md +45 -0
  100. package/docs/api/foundation-shell.appregister.deregisterelement.md +31 -0
  101. package/docs/api/foundation-shell.appregister.deregisterroute.md +31 -0
  102. package/docs/api/foundation-shell.appregister.deregisterstore.md +31 -0
  103. package/docs/api/foundation-shell.appregister.deregisterstyle.md +31 -0
  104. package/docs/api/foundation-shell.appregister.md +37 -0
  105. package/docs/api/foundation-shell.appregister.registercomponents.md +13 -0
  106. package/docs/api/foundation-shell.appregister.registerelement.md +31 -0
  107. package/docs/api/foundation-shell.appregister.registerelementstarget.md +13 -0
  108. package/docs/api/foundation-shell.appregister.registerroute.md +31 -0
  109. package/docs/api/foundation-shell.appregister.registerroutecollection.md +13 -0
  110. package/docs/api/foundation-shell.appregister.registerstore.md +31 -0
  111. package/docs/api/foundation-shell.appregister.registerstoreroot.md +13 -0
  112. package/docs/api/foundation-shell.appregister.registerstyle.md +31 -0
  113. package/docs/api/foundation-shell.appregister.registerstylestarget.md +13 -0
  114. package/docs/api/foundation-shell.appregistration.md +57 -0
  115. package/docs/api/foundation-shell.appregistrationcontext.md +15 -0
  116. package/docs/api/foundation-shell.approute.md +49 -0
  117. package/docs/api/foundation-shell.approutepredicate.md +17 -0
  118. package/docs/api/foundation-shell.appstore.md +45 -0
  119. package/docs/api/foundation-shell.appstorepredicate.md +17 -0
  120. package/docs/api/foundation-shell.appstyle.md +48 -0
  121. package/docs/api/foundation-shell.appstylepredicate.md +17 -0
  122. package/docs/api/foundation-shell.apptargetid.md +43 -0
  123. package/docs/api/foundation-shell.apptokentypepredicate.md +13 -0
  124. package/docs/api/foundation-shell.appvalidity.isvalid.md +26 -0
  125. package/docs/api/foundation-shell.appvalidity.md +20 -0
  126. package/docs/api/foundation-shell.appvaliditycontext.md +18 -0
  127. package/docs/api/foundation-shell.assetpredicate.md +12 -0
  128. package/docs/api/foundation-shell.defaultapp.deregisterassets.md +17 -0
  129. package/docs/api/foundation-shell.defaultapp.deregisterelement.md +24 -0
  130. package/docs/api/foundation-shell.defaultapp.deregisterroute.md +24 -0
  131. package/docs/api/foundation-shell.defaultapp.deregisterstore.md +24 -0
  132. package/docs/api/foundation-shell.defaultapp.deregisterstyle.md +24 -0
  133. package/docs/api/foundation-shell.defaultapp.elements.md +13 -0
  134. package/docs/api/foundation-shell.defaultapp.hasassets.md +17 -0
  135. package/docs/api/foundation-shell.defaultapp.isvalid.md +26 -0
  136. package/docs/api/foundation-shell.defaultapp.md +48 -0
  137. package/docs/api/foundation-shell.defaultapp.metadata.md +13 -0
  138. package/docs/api/foundation-shell.defaultapp.registerassets.md +24 -0
  139. package/docs/api/foundation-shell.defaultapp.registercomponents.md +24 -0
  140. package/docs/api/foundation-shell.defaultapp.registerelement.md +24 -0
  141. package/docs/api/foundation-shell.defaultapp.registerelementstarget.md +28 -0
  142. package/docs/api/foundation-shell.defaultapp.registerroute.md +24 -0
  143. package/docs/api/foundation-shell.defaultapp.registerroutecollection.md +25 -0
  144. package/docs/api/foundation-shell.defaultapp.registerstore.md +24 -0
  145. package/docs/api/foundation-shell.defaultapp.registerstoreroot.md +25 -0
  146. package/docs/api/foundation-shell.defaultapp.registerstyle.md +24 -0
  147. package/docs/api/foundation-shell.defaultapp.registerstylestarget.md +27 -0
  148. package/docs/api/foundation-shell.defaultapp.registrations.md +13 -0
  149. package/docs/api/foundation-shell.defaultapp.routes.md +13 -0
  150. package/docs/api/foundation-shell.defaultapp.stores.md +13 -0
  151. package/docs/api/foundation-shell.defaultapp.styles.md +13 -0
  152. package/docs/api/foundation-shell.defaultappconfig.md +13 -0
  153. package/docs/api/foundation-shell.dynamictemplate.md +12 -0
  154. package/docs/api/foundation-shell.getapp.md +30 -0
  155. package/docs/api/foundation-shell.getqualifiedmoduletokens.md +11 -0
  156. package/docs/api/foundation-shell.haspredicate.md +17 -0
  157. package/docs/api/foundation-shell.hastarget.md +15 -0
  158. package/docs/api/foundation-shell.importpbcassets.md +75 -0
  159. package/docs/api/foundation-shell.isappelement.md +22 -0
  160. package/docs/api/foundation-shell.isappmetadata.md +22 -0
  161. package/docs/api/foundation-shell.isappregistration.md +22 -0
  162. package/docs/api/foundation-shell.isapproute.md +22 -0
  163. package/docs/api/foundation-shell.isappstore.md +22 -0
  164. package/docs/api/foundation-shell.isappstyle.md +22 -0
  165. package/docs/api/foundation-shell.iscomposablestyles.md +22 -0
  166. package/docs/api/foundation-shell.isviewtemplate.md +22 -0
  167. package/docs/api/foundation-shell.loadingtemplate.md +12 -0
  168. package/docs/api/foundation-shell.mainapplication.connectedcallback.md +15 -0
  169. package/docs/api/foundation-shell.mainapplication.md +27 -0
  170. package/docs/api/foundation-shell.mainapplication.ready.md +11 -0
  171. package/docs/api/foundation-shell.mainapplication.selecttemplate.md +15 -0
  172. package/docs/api/foundation-shell.maintemplate.md +12 -0
  173. package/docs/api/foundation-shell.md +81 -0
  174. package/docs/api/foundation-shell.registercomponents.md +34 -0
  175. package/docs/api/foundation-shell.registerelementstarget.md +39 -0
  176. package/docs/api/foundation-shell.registerroutecollection.md +24 -0
  177. package/docs/api/foundation-shell.registerstoreroot.md +33 -0
  178. package/docs/api/foundation-shell.registerstylestarget.md +27 -0
  179. package/docs/api/foundation-shell.registrationpredicate.md +12 -0
  180. package/docs/api/foundation-shell.targetidpredicate.md +12 -0
  181. package/docs/api/index.md +12 -0
  182. package/docs/api-report.md +293 -0
  183. package/package.json +50 -9
  184. package/dist/InjectManifest.44b41759e967dfc682a50ab3e02bfaba.js.map +0 -1
  185. package/dist/main.e2e45a569bc691eca710.js +0 -2
@@ -0,0 +1,700 @@
1
+ import type { StoreRoot } from '@genesislcap/foundation-store';
2
+ import type { FoundationRoute, FoundationRouteCollection } from '@genesislcap/foundation-ui';
3
+ import type { DesignSystemModule } from '@genesislcap/foundation-utils';
4
+ import type { Behavior, ComposableStyles, RepeatOptions, ViewTemplate } from '@microsoft/fast-element';
5
+ import type { HasElement } from '@microsoft/fast-router';
6
+ /**
7
+ * Context passed to predicate functions and other utilities.
8
+ *
9
+ * @privateRemarks
10
+ * Properties are dynamically assigned.
11
+ *
12
+ * @public
13
+ */
14
+ export type AppContext = {
15
+ env?: string;
16
+ domain?: string;
17
+ user?: {};
18
+ answers?: {};
19
+ featureFlags?: {};
20
+ };
21
+ /**
22
+ * Context used during component registration.
23
+ *
24
+ * @public
25
+ */
26
+ export type AppRegistrationContext = {
27
+ /**
28
+ * Explicitly set by app author via registerComponents.
29
+ */
30
+ designSystem: DesignSystemModule;
31
+ };
32
+ /**
33
+ * @example
34
+ * Simple registration function to include a component and avoid it being tree-shaken out of the build.
35
+ * ```ts
36
+ * // src/pbc/notify/registrations.ts
37
+ *
38
+ * export function registerAlerts() {
39
+ * FoundationAlerts;
40
+ * }
41
+ * ```
42
+ *
43
+ * @example
44
+ * Combined registration function.
45
+ * ```ts
46
+ * // src/pbc/notify/registrations.ts
47
+ *
48
+ * export function register() {
49
+ * FoundationAlerts;
50
+ * FoundationInbox;
51
+ * ...
52
+ * }
53
+ * ```
54
+ *
55
+ * @example
56
+ * Using the host application's registration context to register with the design system and import from it if needed.
57
+ * ```ts
58
+ * // src/pbc/notify/registrations.ts
59
+ *
60
+ * export async function registerAlerts(context: AppRegistrationContext) {
61
+ * try {
62
+ * const { provideDesignSystem, tokenX } = context.designSystem;
63
+ * provideDesignSystem().register(foundationAlerts, tokenX);
64
+ * } catch (e) {
65
+ * console.error('Error registering alerts', e);
66
+ * }
67
+ * }
68
+ * ```
69
+ *
70
+ * When defining `AppRegistration` functions in a PBC context, consider defining separate register functions if various
71
+ * subcomponents may be conditionally included based on user preferences or runtime predicates.
72
+ *
73
+ * @param context - {@link AppRegistrationContext}.
74
+ *
75
+ * @public
76
+ */
77
+ export type AppRegistration = (context: AppRegistrationContext) => void;
78
+ /**
79
+ * Asset runtime predicate function.
80
+ *
81
+ * @param context - {@link AppContext}.
82
+ *
83
+ * @public
84
+ */
85
+ export type AssetPredicate = (context?: AppContext) => boolean;
86
+ /**
87
+ * Interface that includes `predicate` function.
88
+ *
89
+ * @public
90
+ */
91
+ export type HasPredicate = {
92
+ /**
93
+ * Optional runtime predicate to include or exclude the pbc asset.
94
+ */
95
+ predicate?: AssetPredicate;
96
+ };
97
+ /**
98
+ * Interface that includes `targetId`.
99
+ *
100
+ * @typeParam TTarget - Optional target id type.
101
+ *
102
+ * @public
103
+ */
104
+ export type HasTarget<TTarget = string> = {
105
+ /**
106
+ * The target the asset is intended for, such as main, header, header-start, header-end, layout etc.
107
+ */
108
+ targetId: TTarget;
109
+ };
110
+ /**
111
+ * A targetId string or an array of targetId strings.
112
+ *
113
+ * Apps and micro frontends will predefine integration targets that dynamic app assets can target using a `targetId`
114
+ * property. This creates a pull-like effect where the host can live reload itself should any matching asset be lazily
115
+ * added, removed, or customised.
116
+ *
117
+ * @example
118
+ * Foundation-header example.
119
+ * ```ts
120
+ * // src/main/targetId.ts
121
+ *
122
+ * export type NavTargetId = 'nav-start' | 'nav' | 'nav-end';
123
+ * export type SideNavTargetId = 'side-nav-start' | 'side-nav' | 'side-nav-end';
124
+ * export type ElementTargetId = HeaderTargetId | NavTargetId | SideNavTargetId;
125
+ * export type StyleTargetId = 'header';
126
+ *
127
+ * // src/main/main.template.ts
128
+ *
129
+ * export const NavTemplate = html<Navigation>`
130
+ * ...
131
+ * ${app.registerElementsTarget<NavTargetId>('nav-start')}
132
+ * ...
133
+ * `
134
+ *
135
+ * // src/main/main.styles.ts
136
+ *
137
+ * export const MainStyles = css`
138
+ * ...
139
+ * `.withBehaviors(getApp().registerStylesTarget<StyleTargetId>('header'));
140
+ * ```
141
+ *
142
+ * @typeParam TTarget - Optional target id type.
143
+ *
144
+ * @public
145
+ */
146
+ export type AppTargetId<TTarget = string> = TTarget | TTarget[];
147
+ /**
148
+ * @example
149
+ * AppStyle definition example.
150
+ * ```ts
151
+ * export const alerts: AppStyle = {
152
+ * targetId: 'layout',
153
+ * styles: css`
154
+ * foundation-alerts {
155
+ * --design-unit: 2.5;
156
+ * --stroke-width: 1;
157
+ * }
158
+ *
159
+ * foundation-alerts::part(filter-button) {
160
+ * --design-unit: 4;
161
+ * }
162
+ * `,
163
+ * };
164
+ * ```
165
+ *
166
+ * @example
167
+ * Optional runtime {@link AssetPredicate} function to determine if the asset should be used.
168
+ * ```ts
169
+ * export const alerts: AppStyle = {
170
+ * targetId: 'layout',
171
+ * predicate: (context: AppContext) => context.user.isAdmin(),
172
+ * styles: css``,
173
+ * ...
174
+ * }
175
+ * ```
176
+ *
177
+ * @typeParam TTarget - Optional target id type.
178
+ *
179
+ * @public
180
+ */
181
+ export type AppStyle<T = string> = HasTarget<T> & HasPredicate & {
182
+ /**
183
+ * The styles to integrate.
184
+ */
185
+ styles: ComposableStyles | ComposableStyles[];
186
+ };
187
+ /**
188
+ * @example
189
+ * AppElement definition example.
190
+ * ```ts
191
+ * const store = getNotifyStore();
192
+ * ...
193
+ * export const inboxFlyout: AppElement = {
194
+ * targetId: 'layout',
195
+ * elements: html`
196
+ * <zero-flyout
197
+ * position="right"
198
+ * @closed=${(x, c) => c.parent.$emit('change-inbox-display', false)}
199
+ * ?closed=${() => !store.inboxDisplayState}
200
+ * displayHeader=${false}
201
+ * data-pbc-asset-id="inbox-flyout"
202
+ * >
203
+ * <foundation-inbox
204
+ * @close=${(x, c) => (<Flyout>(<HTMLElement>c.event.target).parentNode).closeFlyout()}
205
+ * ></foundation-inbox>
206
+ * </zero-flyout>
207
+ * `,
208
+ * };
209
+ * ```
210
+ *
211
+ * Note that bindings may need to use `c.parent` to `$emit` or reference properties of the target integration point.
212
+ * The inclusion of a `data-pbc-asset-id` is not a hard requirement, but should be considered for future operations.
213
+ *
214
+ * @example
215
+ * Optional runtime {@link AssetPredicate} function to determine if the asset should be used.
216
+ * ```ts
217
+ * export const inboxFlyout: AppElement = {
218
+ * targetId: 'layout',
219
+ * predicate: (context: AppContext) => true, // < assess the user, permissions, env, domain, etc.
220
+ * elements: html``,
221
+ * }
222
+ * ```
223
+ *
224
+ * @typeParam TSource - Optional ViewTemplate TSource interface.
225
+ * @typeParam TParent - Optional ViewTemplate TParent interface.
226
+ * @typeParam TTarget - Optional target id type.
227
+ *
228
+ * @public
229
+ */
230
+ export type AppElement<TSource = any, TParent = any, TTarget = string> = HasTarget<TTarget> & HasPredicate & {
231
+ /**
232
+ * The elements to integrate.
233
+ */
234
+ elements: ViewTemplate<TSource, TParent>;
235
+ /**
236
+ * Optional placement index which influences ordering.
237
+ */
238
+ placementIndex?: number;
239
+ /**
240
+ * Optional slot id of the target, such as start, end or default/omitted.
241
+ * @privateRemarks
242
+ * Not currently used. We could mirror https://developer.mozilla.org/en-US/docs/Web/API/Element/insertAdjacentElement#position here.
243
+ */
244
+ slotId?: string;
245
+ };
246
+ /**
247
+ * @example
248
+ * AppRoute definition example.
249
+ * ```ts
250
+ * export const reporting: AppRoute = {
251
+ * title: 'Reporting',
252
+ * path: 'reporting',
253
+ * name: 'reporting',
254
+ * element: async () => (await import('@genesislcap/pbc-reporting')).Reporting,
255
+ * navItems: [
256
+ * {
257
+ * navId: 'header',
258
+ * title: 'Reporting',
259
+ * icon: {
260
+ * name: 'file-csv',
261
+ * variant: 'solid',
262
+ * },
263
+ * placementIndex: 15,
264
+ * },
265
+ * ],
266
+ * };
267
+ * ```
268
+ *
269
+ * @example
270
+ * Optional runtime {@link AssetPredicate} function to determine if the asset should be used.
271
+ * ```ts
272
+ * export const reportingAdmin: AppRoute = {
273
+ * path: 'reporting-admin',
274
+ * predicate: (context: AppContext) => context.user.isAdmin(),
275
+ * ...
276
+ * }
277
+ * ```
278
+ *
279
+ * @public
280
+ */
281
+ export type AppRoute = FoundationRoute & HasElement & HasPredicate;
282
+ /**
283
+ * @example
284
+ * AppStore definition example.
285
+ * ```ts
286
+ * // src/pbc/notify/stores.ts
287
+ *
288
+ * // Setup the foundation stores your PBC needs to function, then include the following for each:
289
+ *
290
+ * export function getNotifyStore(): NotifyStore {
291
+ * return DI.getOrCreateDOMContainer().get(NotifyStore);
292
+ * }
293
+ *
294
+ * // The actual `AppStore` definition
295
+ * export const notifyAppStore: AppStore<NotifyStore> = {
296
+ * store: getNotifyStore(),
297
+ * };
298
+ * ```
299
+ *
300
+ * @example
301
+ * Optional runtime {@link AssetPredicate} function to determine if the asset should be used.
302
+ * ```ts
303
+ * export const notifyAppStore: AppStore<NotifyStore> = {
304
+ * store: getNotifyStore(),
305
+ * predicate: (context: AppContext) => true, // < assess the user, permissions, env, domain, etc.
306
+ * };
307
+ * ```
308
+ *
309
+ * @public
310
+ */
311
+ export type AppStore<S = any> = HasPredicate & {
312
+ /**
313
+ * A `foundation-store` reference.
314
+ */
315
+ store: S;
316
+ };
317
+ /**
318
+ * A record of app dependencies.
319
+ * @public
320
+ */
321
+ export type AppDependencies = {
322
+ [key: string]: string;
323
+ };
324
+ /**
325
+ * A record of app dependency prerequisites.
326
+ * @public
327
+ */
328
+ export type AppDependencyPrerequisites = {
329
+ [key: string]: string;
330
+ };
331
+ /**
332
+ * @example
333
+ * AppMetadata definition example.
334
+ * ```ts
335
+ * // src/pbc/reporting/metadata.ts
336
+ *
337
+ * export const metadata: AppMetadata = {
338
+ * name: '@genesiscommunitysuccess/pbc-reporting',
339
+ * description: 'Genesis Reporting PBC',
340
+ * version: '1.0.0',
341
+ * prerequisites: {
342
+ * '@genesislcap/foundation-ui': '14.0.0',
343
+ * gsf: '7.1.0-SNAPSHOT',
344
+ * },
345
+ * dependencies: {
346
+ * '@genesislcap/pbc-reporting': '1.0.0',
347
+ * serverDepId: '7.1.0-SNAPSHOT',
348
+ * },
349
+ * };
350
+ * ```
351
+ *
352
+ * @remarks
353
+ * It is not a hard requirement to have a `metadata.ts` file or a `AppMetadata` export token.
354
+ *
355
+ * @public
356
+ */
357
+ export type AppMetadata = {
358
+ name: string;
359
+ version: string;
360
+ description?: string;
361
+ dependencies?: AppDependencies;
362
+ prerequisites?: AppDependencyPrerequisites;
363
+ };
364
+ /**
365
+ * Context used to assess app validity.
366
+ *
367
+ * @public
368
+ */
369
+ export type AppValidityContext = {
370
+ dependencies?: AppDependencies;
371
+ prerequisites?: AppDependencyPrerequisites;
372
+ };
373
+ /**
374
+ * Determine if export token should be included in the import all glob.
375
+ *
376
+ * @public
377
+ */
378
+ export type AppTokenTypePredicate = (token: unknown) => boolean;
379
+ /**
380
+ * Determine if the {@link AppRoute} should be integrated.
381
+ *
382
+ * Provides app, micro frontend, and seed author fine-grained control over what assets they will accept in their
383
+ * target integration points.
384
+ *
385
+ * @public
386
+ */
387
+ export type AppRoutePredicate = (route: AppRoute, context?: AppContext) => boolean;
388
+ /**
389
+ * Determine if {@link AppStore} should be included during runtime integration.
390
+ *
391
+ * Provides app, micro frontend, and seed author fine-grained control over what assets they will accept in their
392
+ * target integration points.
393
+ *
394
+ * @public
395
+ */
396
+ export type AppStorePredicate = (store: AppStore, context?: AppContext) => boolean;
397
+ /**
398
+ * Determine if {@link AppElement} should be included during runtime integration.
399
+ *
400
+ * Provides app, micro frontend, and seed author fine-grained control over what assets they will accept in their
401
+ * target integration points. This is a similar concept to {@link @microsoft/fast-element#ElementsFilter} which may be
402
+ * applied to slotted content. For example the accordion accepts slotted accordionItems only.
403
+ *
404
+ * @public
405
+ */
406
+ export type AppElementPredicate = (element: AppElement, context?: AppContext) => boolean;
407
+ /**
408
+ * Determine if {@link AppStyle} should be included during runtime integration.
409
+ *
410
+ * Provides app, micro frontend, and seed author fine-grained control over what assets they will accept in their
411
+ * target integration points.
412
+ *
413
+ * @public
414
+ */
415
+ export type AppStylePredicate = (style: AppStyle, context?: AppContext) => boolean;
416
+ /**
417
+ * Dynamically registered assets.
418
+ *
419
+ * @public
420
+ */
421
+ export interface AppAssets {
422
+ /**
423
+ * All {@link AppElement} tokens.
424
+ */
425
+ readonly elements: AppElement[];
426
+ /**
427
+ * All {@link AppMetadata} tokens.
428
+ */
429
+ readonly metadata: AppMetadata[];
430
+ /**
431
+ * All {@link AppRegistration} tokens.
432
+ */
433
+ readonly registrations: AppRegistration[];
434
+ /**
435
+ * All {@link AppRoute} tokens.
436
+ */
437
+ readonly routes: AppRoute[];
438
+ /**
439
+ * All {@link AppStyle} tokens.
440
+ */
441
+ readonly styles: AppStyle[];
442
+ /**
443
+ * All {@link AppStore} tokens.
444
+ */
445
+ readonly stores: AppStore[];
446
+ }
447
+ /**
448
+ * API for Application and Seed authors to register the main {@link @genesislcap/foundation-ui#FoundationRouteCollection | FoundationRouteCollection}.
449
+ *
450
+ * @example
451
+ * ```ts
452
+ * // src/main/main.ts
453
+ * ...
454
+ * getApp().registerRouteCollection(this.config.routes);
455
+ * ```
456
+ *
457
+ * @param routeCollection - The route collection to register {@link AppRoute | AppRoutes} to.
458
+ * @param predicate - Optional {@link AppRoutePredicate}.
459
+ *
460
+ * @public
461
+ */
462
+ export type RegisterRouteCollection = (routeCollection: FoundationRouteCollection, predicate?: AppRoutePredicate) => (source: unknown) => void;
463
+ /**
464
+ * API for Application and Seed authors to register the {@link @genesislcap/foundation-store#StoreRoot | StoreRoot}.
465
+ *
466
+ * @example
467
+ * ```ts
468
+ * // src/store/store.ts
469
+ *
470
+ * class DefaultStore extends AbstractStoreRoot<Store, StoreEventDetailMap> implements Store {
471
+ * ...
472
+ * constructor() {
473
+ * super();
474
+ *
475
+ * // Register the store root
476
+ * getApp().registerStoreRoot(this);
477
+ * }
478
+ * ...
479
+ * }
480
+ * ```
481
+ *
482
+ * @param storeRoot - The store root to register {@link AppStore | AppStores} to.
483
+ * @param predicate - Optional {@link AppStorePredicate}.
484
+ *
485
+ * @public
486
+ */
487
+ export type RegisterStoreRoot = (storeRoot: StoreRoot, predicate?: AppStorePredicate) => (source: unknown) => void;
488
+ /**
489
+ * API for Application and Seed authors to define dynamic {@link AppElement} integration points.
490
+ *
491
+ * @example
492
+ * Register elements targets within a {@link @microsoft/fast-element#html | html} template literal. An array can be used
493
+ * to integrate assets targeting N number of targets to the one integration location, ie. `['layout', 'layout-end']`.
494
+ * ```ts
495
+ * html`
496
+ * ${app.registerElementsTarget('layout-start')}
497
+ * ...
498
+ * ${app.registerElementsTarget(['layout', 'layout-end'])}
499
+ * `
500
+ * ```
501
+ *
502
+ * @example
503
+ * Providing a predicate function to filter what elements you will allow.
504
+ * ```ts
505
+ * html`
506
+ * ${app.registerElementsTarget('admin-tools', (element: AppElement, context: AppContext) => {
507
+ * return context.user.isAdmin();
508
+ * })}
509
+ * `
510
+ * ```
511
+ *
512
+ * @param targetId - {@link AppTargetId}.
513
+ * @param predicate - Optional {@link AppElementPredicate}.
514
+ * @returns A {@link @microsoft/fast-element#html | html} fragment that will stay in sync as elements are registered and deregistered.
515
+ *
516
+ * @public
517
+ */
518
+ export type RegisterElementsTarget = <T = string>(targetId: AppTargetId<T>, predicate?: AppElementPredicate, repeatOptions?: RepeatOptions) => ViewTemplate;
519
+ /**
520
+ * API for Application and Seed authors to define dynamic {@link AppStyle} integration points.
521
+ *
522
+ * @example
523
+ * Register styles targets as a {@link @microsoft/fast-element#Behavior | Behavior} on a {@link @microsoft/fast-element#css | css} definition.
524
+ * ```ts
525
+ * export const MainStyles = css`
526
+ * :host {
527
+ * contain: content;
528
+ * }
529
+ * `.withBehaviors(getApp().registerStylesTarget('main'));
530
+ * ```
531
+ *
532
+ * @param targetId - {@link AppTargetId}.
533
+ * @param predicate - Optional {@link AppStylePredicate}.
534
+ * @returns A {@link @microsoft/fast-element#Behavior | Behavior} that will stay in sync as styles are registered and deregistered.
535
+ *
536
+ * @public
537
+ */
538
+ export type RegisterStylesTarget = <T = string>(targetId: AppTargetId<T>, predicate?: AppStylePredicate) => Behavior;
539
+ /**
540
+ * API for Application and Seed authors to register dynamic components.
541
+ *
542
+ * @example
543
+ * Register components.
544
+ * ```ts
545
+ * export async function registerComponents() {
546
+ * const designSystem = await designSystemImport();
547
+ * const { provideDesignSystem, baseComponents } = designSystem;
548
+ * ...
549
+ * // Register any pbc components with the design system
550
+ * getApp().registerComponents({
551
+ * designSystem,
552
+ * });
553
+ * ...
554
+ * provideDesignSystem().register(...);
555
+ * }
556
+ * ```
557
+ *
558
+ * PBCs or other application assets may need to register components with the design system of the application, or simply
559
+ * to ensure they are referenced, so they can be used in template literals without the risk of them being tree-shaken
560
+ * out by the application's build process.
561
+ *
562
+ * @public
563
+ */
564
+ export type RegisterComponents = AppRegistration;
565
+ /**
566
+ * APIs to register asset targets and assets. These can be lazily registered and deregistered.
567
+ *
568
+ * @public
569
+ */
570
+ export interface AppRegister {
571
+ /** {@inheritDoc RegisterComponents} */
572
+ registerComponents: RegisterComponents;
573
+ /** {@inheritDoc RegisterElementsTarget} */
574
+ registerElementsTarget: RegisterElementsTarget;
575
+ /**
576
+ * API for developers to register {@link AppElement | AppElements} lazily.
577
+ *
578
+ * @example
579
+ * ```ts
580
+ * getApp().registerElement(someAppElement);
581
+ * ```
582
+ *
583
+ * @param element - The {@link AppElement} to register.
584
+ *
585
+ * @public
586
+ */
587
+ registerElement(element: AppElement): void;
588
+ /**
589
+ * API for developers to deregister {@link AppElement | AppElements}.
590
+ *
591
+ * @example
592
+ * ```ts
593
+ * getApp().deregisterElement(someAppElement);
594
+ * ```
595
+ *
596
+ * @param element - The {@link AppElement} to deregister.
597
+ *
598
+ * @public
599
+ */
600
+ deregisterElement(element: AppElement): void;
601
+ /** {@inheritDoc RegisterRouteCollection} */
602
+ registerRouteCollection: RegisterRouteCollection;
603
+ /**
604
+ * API for developers to register {@link AppRoute | AppRoutes} lazily.
605
+ *
606
+ * @example
607
+ * ```ts
608
+ * getApp().registerRoute(someAppRoute);
609
+ * ```
610
+ *
611
+ * @param route - The {@link AppRoute} to register.
612
+ *
613
+ * @public
614
+ */
615
+ registerRoute(route: AppRoute): void;
616
+ /**
617
+ * API for developers to deregister {@link AppRoute | AppRoutes}.
618
+ *
619
+ * @example
620
+ * ```ts
621
+ * getApp().deregisterRoute(someAppRoute);
622
+ * ```
623
+ *
624
+ * @param route - The {@link AppRoute} to deregister.
625
+ *
626
+ * @public
627
+ */
628
+ deregisterRoute(route: AppRoute): void;
629
+ /** {@inheritDoc RegisterStylesTarget} */
630
+ registerStylesTarget: RegisterStylesTarget;
631
+ /**
632
+ * API for developers to register {@link AppStyle | AppStyles} lazily.
633
+ *
634
+ * @example
635
+ * ```ts
636
+ * getApp().registerStyle(someAppStyle);
637
+ * ```
638
+ *
639
+ * @param style - The {@link AppStyle} to register.
640
+ *
641
+ * @public
642
+ */
643
+ registerStyle(style: AppStyle): void;
644
+ /**
645
+ * API for developers to deregister {@link AppStyle | AppStyles}.
646
+ *
647
+ * @example
648
+ * ```ts
649
+ * getApp().deregisterStyle(someAppStyle);
650
+ * ```
651
+ *
652
+ * @param style - The {@link AppStyle} to deregister.
653
+ *
654
+ * @public
655
+ */
656
+ deregisterStyle(style: AppStyle): void;
657
+ /** {@inheritDoc RegisterStoreRoot} */
658
+ registerStoreRoot: RegisterStoreRoot;
659
+ /**
660
+ * API for developers to register {@link AppStore | AppStores} lazily.
661
+ *
662
+ * @example
663
+ * ```ts
664
+ * getApp().registerStore(someAppStore);
665
+ * ```
666
+ *
667
+ * @param store - The {@link AppStore} to register.
668
+ *
669
+ * @public
670
+ */
671
+ registerStore(store: AppStore): void;
672
+ /**
673
+ * API for developers to deregister {@link AppStore | AppStores}.
674
+ *
675
+ * @example
676
+ * ```ts
677
+ * getApp().deregisterStore(someAppStore);
678
+ * ```
679
+ *
680
+ * @param store - The {@link AppStore} to deregister.
681
+ *
682
+ * @public
683
+ */
684
+ deregisterStore(store: AppStore): void;
685
+ }
686
+ /**
687
+ * APIs to check app validity.
688
+ *
689
+ * @public
690
+ */
691
+ export interface AppValidity {
692
+ /**
693
+ * Monitors metadata and other data points as assets are registered and deregistered for app validity.
694
+ *
695
+ * @param context - {@link AppValidityContext}.
696
+ * @returns A boolean to indicate app validity.
697
+ */
698
+ isValid(context: AppValidityContext): boolean;
699
+ }
700
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/app/types.ts"],"names":[],"mappings":"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"}