@equinor/fusion-framework-module-widget 14.0.2-next.0 → 15.0.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 (60) hide show
  1. package/CHANGELOG.md +30 -24
  2. package/README.md +171 -0
  3. package/dist/esm/Widget.js +91 -27
  4. package/dist/esm/Widget.js.map +1 -1
  5. package/dist/esm/WidgetModuleConfigurator.js +31 -15
  6. package/dist/esm/WidgetModuleConfigurator.js.map +1 -1
  7. package/dist/esm/WidgetModuleProvider.js +52 -20
  8. package/dist/esm/WidgetModuleProvider.js.map +1 -1
  9. package/dist/esm/enable-widget-module.js +16 -2
  10. package/dist/esm/enable-widget-module.js.map +1 -1
  11. package/dist/esm/errors.js +50 -0
  12. package/dist/esm/errors.js.map +1 -1
  13. package/dist/esm/index.js +9 -0
  14. package/dist/esm/index.js.map +1 -1
  15. package/dist/esm/module.js +12 -0
  16. package/dist/esm/module.js.map +1 -1
  17. package/dist/esm/state/actions.js +18 -3
  18. package/dist/esm/state/actions.js.map +1 -1
  19. package/dist/esm/state/create-reducer.js +10 -0
  20. package/dist/esm/state/create-reducer.js.map +1 -1
  21. package/dist/esm/state/create-state.js +12 -0
  22. package/dist/esm/state/create-state.js.map +1 -1
  23. package/dist/esm/state/flows.js +22 -0
  24. package/dist/esm/state/flows.js.map +1 -1
  25. package/dist/esm/utils.js +29 -0
  26. package/dist/esm/utils.js.map +1 -1
  27. package/dist/esm/version.js +1 -1
  28. package/dist/esm/version.js.map +1 -1
  29. package/dist/tsconfig.tsbuildinfo +1 -1
  30. package/dist/types/Widget.d.ts +91 -25
  31. package/dist/types/WidgetModuleConfigurator.d.ts +44 -10
  32. package/dist/types/WidgetModuleProvider.d.ts +80 -20
  33. package/dist/types/enable-widget-module.d.ts +16 -2
  34. package/dist/types/errors.d.ts +57 -0
  35. package/dist/types/events.d.ts +37 -17
  36. package/dist/types/index.d.ts +11 -2
  37. package/dist/types/module.d.ts +21 -0
  38. package/dist/types/state/actions.d.ts +29 -4
  39. package/dist/types/state/create-reducer.d.ts +10 -0
  40. package/dist/types/state/create-state.d.ts +12 -0
  41. package/dist/types/state/flows.d.ts +22 -0
  42. package/dist/types/types.d.ts +82 -15
  43. package/dist/types/utils.d.ts +29 -0
  44. package/dist/types/version.d.ts +1 -1
  45. package/package.json +13 -13
  46. package/src/Widget.ts +94 -27
  47. package/src/WidgetModuleConfigurator.ts +44 -17
  48. package/src/WidgetModuleProvider.ts +82 -20
  49. package/src/enable-widget-module.ts +16 -2
  50. package/src/errors.ts +57 -0
  51. package/src/events.ts +36 -17
  52. package/src/index.ts +12 -2
  53. package/src/module.ts +21 -0
  54. package/src/state/actions.ts +21 -3
  55. package/src/state/create-reducer.ts +10 -0
  56. package/src/state/create-state.ts +12 -0
  57. package/src/state/flows.ts +22 -0
  58. package/src/types.ts +88 -16
  59. package/src/utils.ts +29 -0
  60. package/src/version.ts +1 -1
@@ -4,7 +4,17 @@ import { Query } from '@equinor/fusion-query';
4
4
  import { WidgetManifestLoadError, WidgetConfigLoadError } from './errors';
5
5
  import { Widget } from './Widget';
6
6
  /**
7
- * The `WidgetModuleProvider` class implements the `IWidgetModuleProvider` interface and serves as a provider for managing widgets.
7
+ * Concrete provider that manages widget instances and performs API queries
8
+ * for widget manifests and configurations.
9
+ *
10
+ * Created automatically during module initialization; see {@link module} and
11
+ * {@link enableWidgetModule}.
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const widget = provider.getWidget('my-widget');
16
+ * widget.initialize().subscribe(result => { ... });
17
+ * ```
8
18
  */
9
19
  export class WidgetModuleProvider {
10
20
  // Private fields
@@ -12,8 +22,11 @@ export class WidgetModuleProvider {
12
22
  #config;
13
23
  #event;
14
24
  /**
15
- * Constructs a new `WidgetModuleProvider` instance.
16
- * @param args - An object containing configuration and optional event module for the widget provider.
25
+ * Creates a new `WidgetModuleProvider`.
26
+ *
27
+ * @param args - Provider dependencies.
28
+ * @param args.config - Resolved {@link WidgetModuleConfig} with HTTP client.
29
+ * @param args.event - Optional event module for dispatching lifecycle events.
17
30
  */
18
31
  constructor(args) {
19
32
  const { config, event } = args;
@@ -21,32 +34,48 @@ export class WidgetModuleProvider {
21
34
  this.#config = config;
22
35
  }
23
36
  /**
24
- * Retrieves a widget instance based on the provided name and optional parameters.
25
- * @param name - The name of the widget.
26
- * @param widgetParams - Optional parameters for the widget.
37
+ * Creates a new {@link Widget} instance for the given name.
38
+ *
39
+ * The returned widget has not been initialized yet — call
40
+ * {@link Widget.initialize} to start the lifecycle.
41
+ *
42
+ * @param name - Unique widget name (used as lookup key).
43
+ * @param widgetPrams - Optional version or tag selector.
27
44
  * @returns A new `Widget` instance.
28
45
  */
29
46
  getWidget(name, widgetPrams) {
30
47
  return new Widget({ name }, { provider: this, event: this.#event, widgetPrams, config: this.#config });
31
48
  }
32
49
  /**
33
- * Retrieves the manifest of a widget as an observable stream.
34
- * @param name - The name of the widget.
35
- * @param widgetParams - Optional parameters for the widget.
36
- * @returns An observable stream of the widget manifest.
50
+ * Fetches the manifest for a widget via the configured HTTP client.
51
+ *
52
+ * @param name - Unique widget name.
53
+ * @param widgetPrams - Optional version or tag selector.
54
+ * @returns Observable that emits the {@link WidgetManifest} and completes.
55
+ * @throws {WidgetManifestLoadError} When the manifest request fails.
37
56
  */
38
57
  getWidgetManifest(name, widgetPrams) {
39
58
  return this._getWidget(name, widgetPrams);
40
59
  }
41
60
  /**
42
- * Retrieves the config of a widget as an observable stream.
43
- * @param name - The name of the widget.
44
- * @param widgetParams - Optional parameters for the widget.
45
- * @returns An observable stream of the widget config.
61
+ * Fetches the configuration for a widget via the configured HTTP client.
62
+ *
63
+ * @param name - Unique widget name.
64
+ * @param widgetPrams - Optional version or tag selector.
65
+ * @returns Observable that emits the {@link WidgetConfig} and completes.
66
+ * @throws {WidgetConfigLoadError} When the config request fails.
46
67
  */
47
68
  getWidgetConfig(name, widgetPrams) {
48
69
  return this._getWidgetConfig(name, widgetPrams);
49
70
  }
71
+ /**
72
+ * Internal: queries widget config from the API and maps HTTP errors to
73
+ * typed {@link WidgetConfigLoadError} instances.
74
+ *
75
+ * @param widgetKey - Widget identifier.
76
+ * @param args - Optional version or tag selector.
77
+ * @returns Observable emitting the {@link WidgetConfig}.
78
+ */
50
79
  _getWidgetConfig(widgetKey, args) {
51
80
  const client = new Query(this.#config.client.getWidgetConfig);
52
81
  this.#subscription.add(() => client.complete());
@@ -69,11 +98,12 @@ export class WidgetModuleProvider {
69
98
  })));
70
99
  }
71
100
  /**
72
- * Fetches the configuration for a widget using a query.
73
- * @param widgetKey - The key identifying the widget.
74
- * @param args - Optional arguments for the widget.
75
- * @returns An observable stream of the widget manifest.
76
- * @protected
101
+ * Internal: queries widget manifest from the API and maps HTTP errors to
102
+ * typed {@link WidgetManifestLoadError} instances.
103
+ *
104
+ * @param widgetKey - Widget identifier.
105
+ * @param args - Optional version or tag selector.
106
+ * @returns Observable emitting the {@link WidgetManifest}.
77
107
  */
78
108
  _getWidget(widgetKey, args) {
79
109
  // Create a new query using the configured client
@@ -97,7 +127,9 @@ export class WidgetModuleProvider {
97
127
  })));
98
128
  }
99
129
  /**
100
- * Disposes of the widget provider by unsubscribing from any active subscriptions.
130
+ * Disposes all internal query subscriptions.
131
+ *
132
+ * After disposal the provider should not be reused.
101
133
  */
102
134
  dispose() {
103
135
  this.#subscription.unsubscribe();
@@ -1 +1 @@
1
- {"version":3,"file":"WidgetModuleProvider.js","sourceRoot":"","sources":["../../src/WidgetModuleProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"WidgetModuleProvider.js","sourceRoot":"","sources":["../../src/WidgetModuleProvider.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,21 @@
1
1
  import { module } from './module';
2
2
  /**
3
- * Method for enabling the widget module
4
- * @param configurator - configuration object
3
+ * Registers the widget module on a Fusion Framework configurator.
4
+ *
5
+ * Call this during framework setup to enable widget loading, manifest
6
+ * resolution, and script import capabilities.
7
+ *
8
+ * @param configurator - The framework modules configurator to register the
9
+ * widget module on.
10
+ * @param builder - Optional callback to customize the
11
+ * {@link WidgetModuleConfigurator} (e.g., set a custom HTTP client).
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * import { enableWidgetModule } from '@equinor/fusion-framework-module-widget';
16
+ *
17
+ * enableWidgetModule(configurator);
18
+ * ```
5
19
  */
6
20
  export const enableWidgetModule = (
7
21
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
@@ -1 +1 @@
1
- {"version":3,"file":"enable-widget-module.js","sourceRoot":"","sources":["../../src/enable-widget-module.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC;;;GAGG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;AAChC,8DAA8D;AAC9D,YAA4C,EAC5C,OAA2C,EACrC,EAAE;IACR,YAAY,CAAC,SAAS,CAAC;QACrB,MAAM;QACN,SAAS,EAAE,CAAC,kBAAkB,EAAE,EAAE;YAChC,OAAO,EAAE,CAAC,kBAAkB,CAAC,CAAC;QAChC,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC"}
1
+ {"version":3,"file":"enable-widget-module.js","sourceRoot":"","sources":["../../src/enable-widget-module.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAGlC;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG;AAChC,8DAA8D;AAC9D,YAA4C,EAC5C,OAA2C,EACrC,EAAE;IACR,YAAY,CAAC,SAAS,CAAC;QACrB,MAAM;QACN,SAAS,EAAE,CAAC,kBAAkB,EAAE,EAAE;YAChC,OAAO,EAAE,CAAC,kBAAkB,CAAC,CAAC;QAChC,CAAC;KACF,CAAC,CAAC;AACL,CAAC,CAAC"}
@@ -1,5 +1,21 @@
1
+ /**
2
+ * Error thrown when a widget manifest cannot be loaded from the backend API.
3
+ *
4
+ * Use the static {@link fromHttpResponse} factory to create instances from
5
+ * HTTP responses with appropriate type mapping.
6
+ */
1
7
  export class WidgetManifestLoadError extends Error {
2
8
  type;
9
+ /**
10
+ * Creates a `WidgetManifestLoadError` from an HTTP `Response`.
11
+ *
12
+ * Maps HTTP 401 to `'unauthorized'`, 404 to `'not_found'`, and all other
13
+ * status codes to `'unknown'`.
14
+ *
15
+ * @param response - The failing HTTP response.
16
+ * @param options - Standard `ErrorOptions` (e.g., `cause`).
17
+ * @returns A typed `WidgetManifestLoadError`.
18
+ */
3
19
  static fromHttpResponse(response, options) {
4
20
  switch (response.status) {
5
21
  case 401:
@@ -9,14 +25,35 @@ export class WidgetManifestLoadError extends Error {
9
25
  }
10
26
  return new WidgetManifestLoadError('unknown', `failed to load widget manifest, status code ${response.status}`, options);
11
27
  }
28
+ /**
29
+ * @param type - Error category discriminator.
30
+ * @param message - Human-readable error description.
31
+ * @param options - Standard `ErrorOptions` (e.g., `cause`).
32
+ */
12
33
  constructor(type, message, options) {
13
34
  super(message, options);
14
35
  this.type = type;
15
36
  this.name = 'GetWidgetLoadManifestErrors';
16
37
  }
17
38
  }
39
+ /**
40
+ * Error thrown when a widget configuration cannot be loaded from the backend API.
41
+ *
42
+ * Use the static {@link fromHttpResponse} factory to create instances from
43
+ * HTTP responses with appropriate type mapping.
44
+ */
18
45
  export class WidgetConfigLoadError extends Error {
19
46
  type;
47
+ /**
48
+ * Creates a `WidgetConfigLoadError` from an HTTP `Response`.
49
+ *
50
+ * Maps HTTP 401 to `'unauthorized'`, 404 to `'not_found'`, and all other
51
+ * status codes to `'unknown'`.
52
+ *
53
+ * @param response - The failing HTTP response.
54
+ * @param options - Standard `ErrorOptions` (e.g., `cause`).
55
+ * @returns A typed `WidgetConfigLoadError`.
56
+ */
20
57
  static fromHttpResponse(response, options) {
21
58
  switch (response.status) {
22
59
  case 401:
@@ -26,14 +63,27 @@ export class WidgetConfigLoadError extends Error {
26
63
  }
27
64
  return new WidgetConfigLoadError('unknown', `failed to load widget config, status code ${response.status}`, options);
28
65
  }
66
+ /**
67
+ * @param type - Error category discriminator.
68
+ * @param message - Human-readable error description.
69
+ * @param options - Standard `ErrorOptions` (e.g., `cause`).
70
+ */
29
71
  constructor(type, message, options) {
30
72
  super(message, options);
31
73
  this.type = type;
32
74
  this.name = 'GetWidgetLoadConfigError';
33
75
  }
34
76
  }
77
+ /**
78
+ * Error thrown when a widget script module cannot be dynamically imported.
79
+ */
35
80
  export class WidgetScriptModuleError extends Error {
36
81
  type;
82
+ /**
83
+ * @param type - Error category discriminator.
84
+ * @param message - Human-readable error description.
85
+ * @param options - Standard `ErrorOptions` (e.g., `cause`).
86
+ */
37
87
  constructor(type, message, options) {
38
88
  super(message, options);
39
89
  this.type = type;
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AAEA,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAmB9B;IAlBlB,MAAM,CAAC,gBAAgB,CAAC,QAAkB,EAAE,OAAsB;QAChE,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;YACxB,KAAK,GAAG;gBACN,OAAO,IAAI,uBAAuB,CAChC,cAAc,EACd,wDAAwD,EACxD,OAAO,CACR,CAAC;YACJ,KAAK,GAAG;gBACN,OAAO,IAAI,uBAAuB,CAAC,WAAW,EAAE,2BAA2B,EAAE,OAAO,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,uBAAuB,CAChC,SAAS,EACT,+CAA+C,QAAQ,CAAC,MAAM,EAAE,EAChE,OAAO,CACR,CAAC;IACJ,CAAC;IACD,YACkB,IAAqB,EACrC,OAAgB,EAChB,OAAsB;QAEtB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAiB;QAKrC,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAED,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAmB5B;IAlBlB,MAAM,CAAC,gBAAgB,CAAC,QAAkB,EAAE,OAAsB;QAChE,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;YACxB,KAAK,GAAG;gBACN,OAAO,IAAI,qBAAqB,CAC9B,cAAc,EACd,sDAAsD,EACtD,OAAO,CACR,CAAC;YACJ,KAAK,GAAG;gBACN,OAAO,IAAI,qBAAqB,CAAC,WAAW,EAAE,yBAAyB,EAAE,OAAO,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,IAAI,qBAAqB,CAC9B,SAAS,EACT,6CAA6C,QAAQ,CAAC,MAAM,EAAE,EAC9D,OAAO,CACR,CAAC;IACJ,CAAC;IACD,YACkB,IAAqB,EACrC,OAAgB,EAChB,OAAsB;QAEtB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAiB;QAKrC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAE9B;IADlB,YACkB,IAAqB,EACrC,OAAgB,EAChB,OAAsB;QAEtB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAiB;QAKrC,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/errors.ts"],"names":[],"mappings":"AASA;;;;;GAKG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAkC9B;IAjClB;;;;;;;;;OASG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAkB,EAAE,OAAsB;QAChE,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;YACxB,KAAK,GAAG;gBACN,OAAO,IAAI,uBAAuB,CAChC,cAAc,EACd,wDAAwD,EACxD,OAAO,CACR,CAAC;YACJ,KAAK,GAAG;gBACN,OAAO,IAAI,uBAAuB,CAAC,WAAW,EAAE,2BAA2B,EAAE,OAAO,CAAC,CAAC;QAC1F,CAAC;QACD,OAAO,IAAI,uBAAuB,CAChC,SAAS,EACT,+CAA+C,QAAQ,CAAC,MAAM,EAAE,EAChE,OAAO,CACR,CAAC;IACJ,CAAC;IACD;;;;OAIG;IACH,YACkB,IAAqB,EACrC,OAAgB,EAChB,OAAsB;QAEtB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAiB;QAKrC,IAAI,CAAC,IAAI,GAAG,6BAA6B,CAAC;IAC5C,CAAC;CACF;AAED;;;;;GAKG;AACH,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAkC5B;IAjClB;;;;;;;;;OASG;IACH,MAAM,CAAC,gBAAgB,CAAC,QAAkB,EAAE,OAAsB;QAChE,QAAQ,QAAQ,CAAC,MAAM,EAAE,CAAC;YACxB,KAAK,GAAG;gBACN,OAAO,IAAI,qBAAqB,CAC9B,cAAc,EACd,sDAAsD,EACtD,OAAO,CACR,CAAC;YACJ,KAAK,GAAG;gBACN,OAAO,IAAI,qBAAqB,CAAC,WAAW,EAAE,yBAAyB,EAAE,OAAO,CAAC,CAAC;QACtF,CAAC;QACD,OAAO,IAAI,qBAAqB,CAC9B,SAAS,EACT,6CAA6C,QAAQ,CAAC,MAAM,EAAE,EAC9D,OAAO,CACR,CAAC;IACJ,CAAC;IACD;;;;OAIG;IACH,YACkB,IAAqB,EACrC,OAAgB,EAChB,OAAsB;QAEtB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAiB;QAKrC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC;IACzC,CAAC;CACF;AAED;;GAEG;AACH,MAAM,OAAO,uBAAwB,SAAQ,KAAK;IAO9B;IANlB;;;;OAIG;IACH,YACkB,IAAqB,EACrC,OAAgB,EAChB,OAAsB;QAEtB,KAAK,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;QAJR,SAAI,GAAJ,IAAI,CAAiB;QAKrC,IAAI,CAAC,IAAI,GAAG,yBAAyB,CAAC;IACxC,CAAC;CACF"}
package/dist/esm/index.js CHANGED
@@ -1,3 +1,12 @@
1
+ /**
2
+ * Fusion Framework Widget Module
3
+ *
4
+ * Provides runtime loading, configuration, and lifecycle management for
5
+ * remote widget micro-frontends. Widgets are dynamically fetched, imported,
6
+ * and mounted into a host application.
7
+ *
8
+ * @packageDocumentation
9
+ */
1
10
  export { WidgetModuleConfigurator } from './WidgetModuleConfigurator';
2
11
  export { WidgetModuleProvider } from './WidgetModuleProvider';
3
12
  export * from './types';
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAsB,MAAM,4BAA4B,CAAC;AAE1F,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAgB,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,wBAAwB,EAA2B,MAAM,4BAA4B,CAAC;AAE/F,OAAO,EAAE,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAI9D,cAAc,SAAS,CAAC;AAExB,OAAO,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAE,OAAO,EAAqB,MAAM,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC"}
@@ -1,6 +1,18 @@
1
1
  import { WidgetModuleConfigurator } from './WidgetModuleConfigurator';
2
2
  import { WidgetModuleProvider } from './WidgetModuleProvider';
3
+ /** Module registration key used in the Fusion Framework module map. */
3
4
  export const moduleKey = 'widget';
5
+ /**
6
+ * Widget module descriptor.
7
+ *
8
+ * Defines how the widget module is configured, initialized, and disposed
9
+ * within the Fusion Framework module system.
10
+ *
11
+ * - `configure` — creates a fresh {@link WidgetModuleConfigurator}
12
+ * - `initialize` — resolves the config, optionally acquires the event module,
13
+ * and returns a {@link WidgetModuleProvider}
14
+ * - `dispose` — cleans up provider subscriptions
15
+ */
4
16
  export const module = {
5
17
  name: moduleKey,
6
18
  configure() {
@@ -1 +1 @@
1
- {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAA8B,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE1F,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC;AASlC,MAAM,CAAC,MAAM,MAAM,GAAiB;IAClC,IAAI,EAAE,SAAS;IACf,SAAS;QACP,MAAM,MAAM,GAAG,IAAI,wBAAwB,EAAE,CAAC;QAC9C,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACzE,OAAO,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QACf,IAAI,CAAC,QAA4C,CAAC,OAAO,EAAE,CAAC;IAC/D,CAAC;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
1
+ {"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,wBAAwB,EAAE,MAAM,4BAA4B,CAAC;AACtE,OAAO,EAA8B,oBAAoB,EAAE,MAAM,wBAAwB,CAAC;AAE1F,uEAAuE;AACvE,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,CAAC;AAclC;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,MAAM,GAAiB;IAClC,IAAI,EAAE,SAAS;IACf,SAAS;QACP,MAAM,MAAM,GAAG,IAAI,wBAAwB,EAAE,CAAC;QAC9C,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;QACzB,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;QACzD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACzE,OAAO,IAAI,oBAAoB,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;IACrD,CAAC;IACD,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QACf,IAAI,CAAC,QAA4C,CAAC,OAAO,EAAE,CAAC;IAC/D,CAAC;CACF,CAAC;AAEF,eAAe,MAAM,CAAC"}
@@ -1,6 +1,15 @@
1
1
  import { createAction, createAsyncAction, } from '@equinor/fusion-observable';
2
+ /**
3
+ * Factory that creates all widget state-machine actions.
4
+ *
5
+ * Each action (or async action triplet) drives a specific step in the
6
+ * widget lifecycle: manifest loading, config loading, script import,
7
+ * and initialization.
8
+ *
9
+ * @returns Action creators for the widget state machine.
10
+ */
2
11
  const createActions = () => ({
3
- /** Manifest loading */
12
+ /** Sets the manifest in state (optionally merging with existing). */
4
13
  setManifest: createAction('set_manifest', (manifest, update) => ({
5
14
  payload: manifest,
6
15
  meta: {
@@ -8,24 +17,30 @@ const createActions = () => ({
8
17
  update,
9
18
  },
10
19
  })),
20
+ /** Async action triplet for fetching the widget manifest from the API. */
11
21
  fetchManifest: createAsyncAction('fetch_manifest', (payload, update) => ({
12
22
  payload,
13
23
  meta: { update },
14
24
  }), (manifest) => ({ payload: manifest }), (error) => ({ payload: error })),
15
- /** Config loading */
25
+ /** Sets the widget config in state. */
16
26
  setConfig: createAction('set_config', (config) => ({ payload: config })),
27
+ /** Async action triplet for fetching the widget config from the API. */
17
28
  fetchConfig: createAsyncAction('fetch_config', (payload, update) => ({
18
29
  payload,
19
30
  meta: { update },
20
31
  }), (config) => ({ payload: config }), (error) => ({ payload: error })),
32
+ /** Sets the dynamically imported widget script module in state. */
21
33
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
34
  setModule: createAction('set_module', (module) => ({ payload: module })),
35
+ /** Async action triplet for dynamically importing the widget script. */
23
36
  importWidget: createAsyncAction('import_widget', (entrypoint) => ({ payload: entrypoint }), (module) => ({ payload: module }), (error) => ({ payload: error })),
24
- // widget Instance
37
+ /** Sets the resolved widget framework-module instances in state. */
25
38
  setInstance: createAction('set_instance', (instance) => ({
26
39
  payload: instance,
27
40
  })),
41
+ /** Async action triplet for the overall widget initialization lifecycle. */
28
42
  initialize: createAsyncAction('initialize_widget', () => ({ payload: null }), () => ({ payload: null }), (error) => ({ payload: error })),
29
43
  });
44
+ /** Singleton action creators used by the widget state machine. */
30
45
  export const actions = createActions();
31
46
  //# sourceMappingURL=actions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/state/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EACZ,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AASpC,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,CAAC;IAC3B,uBAAuB;IACvB,WAAW,EAAE,YAAY,CAAC,cAAc,EAAE,CAAC,QAAwB,EAAE,MAAgB,EAAE,EAAE,CAAC,CAAC;QACzF,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE;YACJ,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;YACnB,MAAM;SACP;KACF,CAAC,CAAC;IACH,aAAa,EAAE,iBAAiB,CAC9B,gBAAgB,EAChB,CAAC,OAA4D,EAAE,MAAgB,EAAE,EAAE,CAAC,CAAC;QACnF,OAAO;QACP,IAAI,EAAE,EAAE,MAAM,EAAE;KACjB,CAAC,EACF,CAAC,QAAwB,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EACrD,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CACzC;IACD,qBAAqB;IACrB,SAAS,EAAE,YAAY,CAAC,YAAY,EAAE,CAAC,MAAoB,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACtF,WAAW,EAAE,iBAAiB,CAC5B,cAAc,EACd,CAAC,OAA4D,EAAE,MAAgB,EAAE,EAAE,CAAC,CAAC;QACnF,OAAO;QACP,IAAI,EAAE,EAAE,MAAM,EAAE;KACjB,CAAC,EACF,CAAC,MAAoB,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAC/C,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CACzC;IACD,8DAA8D;IAC9D,SAAS,EAAE,YAAY,CAAC,YAAY,EAAE,CAAC,MAAW,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7E,YAAY,EAAE,iBAAiB,CAC7B,eAAe,EACf,CAAC,UAAkB,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EACjD,CAAC,MAA0B,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EACrD,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CACzC;IACD,kBAAkB;IAClB,WAAW,EAAE,YAAY,CAAC,cAAc,EAAE,CAAC,QAA+B,EAAE,EAAE,CAAC,CAAC;QAC9E,OAAO,EAAE,QAAQ;KAClB,CAAC,CAAC;IACH,UAAU,EAAE,iBAAiB,CAC3B,mBAAmB,EACnB,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EACzB,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EACzB,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CACzC;CACF,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/state/actions.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,YAAY,EACZ,iBAAiB,GAClB,MAAM,4BAA4B,CAAC;AASpC;;;;;;;;GAQG;AACH,MAAM,aAAa,GAAG,GAAG,EAAE,CAAC,CAAC;IAC3B,qEAAqE;IACrE,WAAW,EAAE,YAAY,CAAC,cAAc,EAAE,CAAC,QAAwB,EAAE,MAAgB,EAAE,EAAE,CAAC,CAAC;QACzF,OAAO,EAAE,QAAQ;QACjB,IAAI,EAAE;YACJ,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;YACnB,MAAM;SACP;KACF,CAAC,CAAC;IACH,0EAA0E;IAC1E,aAAa,EAAE,iBAAiB,CAC9B,gBAAgB,EAChB,CAAC,OAA4D,EAAE,MAAgB,EAAE,EAAE,CAAC,CAAC;QACnF,OAAO;QACP,IAAI,EAAE,EAAE,MAAM,EAAE;KACjB,CAAC,EACF,CAAC,QAAwB,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,EACrD,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CACzC;IACD,uCAAuC;IACvC,SAAS,EAAE,YAAY,CAAC,YAAY,EAAE,CAAC,MAAoB,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IACtF,wEAAwE;IACxE,WAAW,EAAE,iBAAiB,CAC5B,cAAc,EACd,CAAC,OAA4D,EAAE,MAAgB,EAAE,EAAE,CAAC,CAAC;QACnF,OAAO;QACP,IAAI,EAAE,EAAE,MAAM,EAAE;KACjB,CAAC,EACF,CAAC,MAAoB,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EAC/C,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CACzC;IACD,mEAAmE;IACnE,8DAA8D;IAC9D,SAAS,EAAE,YAAY,CAAC,YAAY,EAAE,CAAC,MAAW,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;IAC7E,wEAAwE;IACxE,YAAY,EAAE,iBAAiB,CAC7B,eAAe,EACf,CAAC,UAAkB,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,EACjD,CAAC,MAA0B,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,EACrD,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CACzC;IACD,oEAAoE;IACpE,WAAW,EAAE,YAAY,CAAC,cAAc,EAAE,CAAC,QAA+B,EAAE,EAAE,CAAC,CAAC;QAC9E,OAAO,EAAE,QAAQ;KAClB,CAAC,CAAC;IACH,4EAA4E;IAC5E,UAAU,EAAE,iBAAiB,CAC3B,mBAAmB,EACnB,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EACzB,GAAG,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,EACzB,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CACzC;CACF,CAAC,CAAC;AAEH,kEAAkE;AAClE,MAAM,CAAC,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC"}
@@ -2,6 +2,16 @@ import { getBaseType, createReducer as makeReducer, isCompleteAction, isRequestA
2
2
  import { enableMapSet } from 'immer';
3
3
  enableMapSet();
4
4
  import { actions } from './actions';
5
+ /**
6
+ * Creates an Immer-powered reducer for the widget state machine.
7
+ *
8
+ * Handles direct state setters (`setManifest`, `setConfig`, `setModule`,
9
+ * `setInstance`) and tracks in-flight async operations via the `status` set.
10
+ *
11
+ * @param value - Initial widget state (without `status`, which is added
12
+ * automatically as an empty `Set`).
13
+ * @returns A reducer function compatible with `FlowSubject`.
14
+ */
5
15
  export const createReducer = (value) => makeReducer({ ...value, status: new Set() }, (builder) => builder
6
16
  .addCase(actions.setManifest, (state, action) => {
7
17
  if (action.meta.update) {
@@ -1 +1 @@
1
- {"version":3,"file":"create-reducer.js","sourceRoot":"","sources":["../../../src/state/create-reducer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,aAAa,IAAI,WAAW,EAC5B,gBAAgB,EAChB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,YAAY,EAAE,CAAC;AAEf,OAAO,EAAgB,OAAO,EAAE,MAAM,WAAW,CAAC;AAGlD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAE,EAAE,CACzD,WAAW,CAAuB,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAiB,EAAE,CAAC,OAAO,EAAE,EAAE,CAC5F,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;IAClC,CAAC;AACH,CAAC,CAAC;KACD,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IAC5C,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;AAChC,CAAC,CAAC;KACD,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IAC5C,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACjC,CAAC,CAAC;KACD,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IAC9C,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;AAClC,CAAC,CAAC;IACF,sCAAsC;KACrC,UAAU,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IAC7C,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC;IACF,4BAA4B;KAC3B,UAAU,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IAC9C,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC,CACL,CAAC;AAEJ,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"create-reducer.js","sourceRoot":"","sources":["../../../src/state/create-reducer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,WAAW,EACX,aAAa,IAAI,WAAW,EAC5B,gBAAgB,EAChB,eAAe,GAChB,MAAM,4BAA4B,CAAC;AAEpC,OAAO,EAAE,YAAY,EAAE,MAAM,OAAO,CAAC;AAErC,YAAY,EAAE,CAAC;AAEf,OAAO,EAAgB,OAAO,EAAE,MAAM,WAAW,CAAC;AAGlD;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAyB,EAAE,EAAE,CACzD,WAAW,CAAuB,EAAE,GAAG,KAAK,EAAE,MAAM,EAAE,IAAI,GAAG,EAAE,EAAiB,EAAE,CAAC,OAAO,EAAE,EAAE,CAC5F,OAAO;KACJ,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IAC9C,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;QACvB,KAAK,CAAC,QAAQ,GAAG,EAAE,GAAG,KAAK,CAAC,QAAQ,EAAE,GAAG,MAAM,CAAC,OAAO,EAAE,CAAC;IAC5D,CAAC;SAAM,CAAC;QACN,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;IAClC,CAAC;AACH,CAAC,CAAC;KACD,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IAC5C,KAAK,CAAC,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC;AAChC,CAAC,CAAC;KACD,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IAC5C,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;AACjC,CAAC,CAAC;KACD,OAAO,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IAC9C,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC;AAClC,CAAC,CAAC;IACF,sCAAsC;KACrC,UAAU,CAAC,eAAe,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IAC7C,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAC7C,CAAC,CAAC;IACF,4BAA4B;KAC3B,UAAU,CAAC,gBAAgB,EAAE,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE;IAC9C,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC,CACL,CAAC;AAEJ,eAAe,aAAa,CAAC"}
@@ -1,6 +1,18 @@
1
1
  import { FlowSubject } from '@equinor/fusion-observable';
2
2
  import { createReducer } from './create-reducer';
3
3
  import { handleFetchManifest, handleImportWidget, handleFetchConfig } from './flows';
4
+ /**
5
+ * Creates and wires the RxJS-based `FlowSubject` state machine for a single
6
+ * widget.
7
+ *
8
+ * Attaches the manifest-fetch, script-import, and config-fetch flows to the
9
+ * subject so that dispatched actions trigger the corresponding side effects.
10
+ *
11
+ * @param value - Initial widget state (name and optional pre-loaded data).
12
+ * @param provider - The {@link WidgetModuleProvider} used by flows to query
13
+ * the backend API.
14
+ * @returns A `FlowSubject` managing {@link WidgetState} via {@link Actions}.
15
+ */
4
16
  export const createState = (value, provider) => {
5
17
  const reducer = createReducer(value);
6
18
  const state = new FlowSubject(reducer);
@@ -1 +1 @@
1
- {"version":3,"file":"create-state.js","sourceRoot":"","sources":["../../../src/state/create-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAMrF,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,KAAyB,EACzB,QAA8B,EACK,EAAE;IACrC,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAuB,OAAO,CAAC,CAAC;IAC7D,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7C,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACpC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
1
+ {"version":3,"file":"create-state.js","sourceRoot":"","sources":["../../../src/state/create-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,4BAA4B,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAMrF;;;;;;;;;;;GAWG;AACH,MAAM,CAAC,MAAM,WAAW,GAAG,CACzB,KAAyB,EACzB,QAA8B,EACK,EAAE;IACrC,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAAC;IACrC,MAAM,KAAK,GAAG,IAAI,WAAW,CAAuB,OAAO,CAAC,CAAC;IAC7D,KAAK,CAAC,OAAO,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC7C,KAAK,CAAC,OAAO,CAAC,kBAAkB,EAAE,CAAC,CAAC;IACpC,KAAK,CAAC,OAAO,CAAC,iBAAiB,CAAC,QAAQ,CAAC,CAAC,CAAC;IAC3C,OAAO,KAAK,CAAC;AACf,CAAC,CAAC"}
@@ -1,6 +1,14 @@
1
1
  import { from, of, concat } from 'rxjs';
2
2
  import { catchError, filter, last, map, share, switchMap } from 'rxjs/operators';
3
3
  import { actions } from './actions';
4
+ /**
5
+ * RxJS flow that reacts to `fetchManifest` actions by querying the
6
+ * {@link WidgetModuleProvider} for the manifest, emitting intermediate
7
+ * `setManifest` actions, and completing with a success or failure action.
8
+ *
9
+ * @param provider - The widget module provider used for API queries.
10
+ * @returns A `Flow` function for the widget state machine.
11
+ */
4
12
  export const handleFetchManifest = (provider) => (action$) => action$.pipe(filter(actions.fetchManifest.match), switchMap((action) => {
5
13
  const { payload: { key, args }, meta: { update }, } = action;
6
14
  const subject = from(provider.getWidgetManifest(key, args)).pipe(filter((x) => !!x), share());
@@ -9,12 +17,26 @@ export const handleFetchManifest = (provider) => (action$) => action$.pipe(filte
9
17
  return of(actions.fetchManifest.failure(err));
10
18
  }));
11
19
  }));
20
+ /**
21
+ * RxJS flow that reacts to `fetchConfig` actions by querying the
22
+ * {@link WidgetModuleProvider} for the widget config, emitting intermediate
23
+ * `setConfig` actions, and completing with a success or failure action.
24
+ *
25
+ * @param provider - The widget module provider used for API queries.
26
+ * @returns A `Flow` function for the widget state machine.
27
+ */
12
28
  export const handleFetchConfig = (provider) => (action$) => action$.pipe(filter(actions.fetchConfig.match), switchMap(({ payload: { key, args } }) => {
13
29
  const subject = from(provider.getWidgetConfig(key, args)).pipe(filter((x) => !!x), share());
14
30
  return concat(subject.pipe(map((manifest) => actions.setConfig(manifest))), subject.pipe(last(), map((manifest) => actions.fetchConfig.success(manifest)))).pipe(catchError((err) => {
15
31
  return of(actions.fetchConfig.failure(err));
16
32
  }));
17
33
  }));
34
+ /**
35
+ * RxJS flow that reacts to `importWidget` actions by dynamically importing
36
+ * the widget’s JavaScript entry point URL and emitting success or failure.
37
+ *
38
+ * @returns A `Flow` function for the widget state machine.
39
+ */
18
40
  export const handleImportWidget = () => (action$) => action$.pipe(filter(actions.importWidget.match), switchMap(({ payload }) => {
19
41
  return from(import(/* @vite-ignore */ payload)).pipe(map(actions.importWidget.success), catchError((err) => of(actions.importWidget.failure(err))));
20
42
  }));
@@ -1 +1 @@
1
- {"version":3,"file":"flows.js","sourceRoot":"","sources":["../../../src/state/flows.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"flows.js","sourceRoot":"","sources":["../../../src/state/flows.ts"],"names":[],"mappings":"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"}
package/dist/esm/utils.js CHANGED
@@ -1,3 +1,12 @@
1
+ /**
2
+ * Creates a {@link WidgetEndpointBuilder} that produces manifest endpoint URLs.
3
+ *
4
+ * Routes versioned or tagged lookups to `/widgets/{key}/versions/{value}` and
5
+ * unversioned lookups to `/widgets/{key}`.
6
+ *
7
+ * @param apiVersion - API version string appended as a query parameter.
8
+ * @returns A function that maps {@link GetWidgetParameters} to a URL path.
9
+ */
1
10
  export const defaultManifestEndpointBuilder = (apiVersion) => (params) => {
2
11
  const { widgetKey, args } = params;
3
12
  const { type, value } = args ?? {};
@@ -9,6 +18,15 @@ export const defaultManifestEndpointBuilder = (apiVersion) => (params) => {
9
18
  return `/widgets/${widgetKey}?api-version=${apiVersion}`;
10
19
  }
11
20
  };
21
+ /**
22
+ * Creates a {@link WidgetEndpointBuilder} that produces config endpoint URLs.
23
+ *
24
+ * Routes versioned or tagged lookups to `/widgets/{key}/versions/{value}/config`
25
+ * and unversioned lookups to `/widgets/{key}/config`.
26
+ *
27
+ * @param apiVersion - API version string appended as a query parameter.
28
+ * @returns A function that maps {@link GetWidgetParameters} to a URL path.
29
+ */
12
30
  export const defaultConfigEndpointBuilder = (apiVersion) => (params) => {
13
31
  const { widgetKey, args } = params;
14
32
  const { type, value } = args ?? {};
@@ -21,6 +39,17 @@ export const defaultConfigEndpointBuilder = (apiVersion) => (params) => {
21
39
  return `/widgets/${widgetKey}/config?api-version=${apiVersion}`;
22
40
  }
23
41
  };
42
+ /**
43
+ * Creates the default {@link IClient} that uses the given HTTP client to
44
+ * fetch widget manifests and configurations.
45
+ *
46
+ * Uses `api-version=1.0-preview` and the default manifest/config endpoint
47
+ * builders.
48
+ *
49
+ * @param httpClient - An `IHttpClient` instance (typically resolved from the
50
+ * `apps` service-discovery key).
51
+ * @returns A fully configured `IClient`.
52
+ */
24
53
  export const createDefaultClient = (httpClient) => {
25
54
  const apiVersion = '1.0-preview';
26
55
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,8BAA8B,GACzC,CAAC,UAAkB,EAAyB,EAAE,CAC9C,CAAC,MAA2B,EAAE,EAAE;IAC9B,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACnC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;IACnC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK,CAAC;QACX,KAAK,SAAS;YACZ,OAAO,YAAY,SAAS,aAAa,KAAK,gBAAgB,UAAU,EAAE,CAAC;QAC7E;YACE,OAAO,YAAY,SAAS,gBAAgB,UAAU,EAAE,CAAC;IAC7D,CAAC;AACH,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,4BAA4B,GACvC,CAAC,UAAkB,EAAyB,EAAE,CAC9C,CAAC,MAA2B,EAAE,EAAE;IAC9B,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACnC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;IACnC,mDAAmD;IACnD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK,CAAC;QACX,KAAK,SAAS;YACZ,OAAO,YAAY,SAAS,aAAa,KAAK,uBAAuB,UAAU,EAAE,CAAC;QACpF;YACE,OAAO,YAAY,SAAS,uBAAuB,UAAU,EAAE,CAAC;IACpE,CAAC;AACH,CAAC,CAAC;AAEJ,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,UAAuB,EAAW,EAAE;IACtE,MAAM,UAAU,GAAG,aAAa,CAAC;IACjC,OAAO;QACL,UAAU;QACV,aAAa,EAAE,UAAU,CAAC,GAAG;QAC7B,iBAAiB,EAAE;YACjB,MAAM,EAAE;gBACN,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;aACjF;YACD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SACpC;QACD,eAAe,EAAE;YACf,MAAM,EAAE;gBACN,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;aAC/E;YACD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SACpC;KACF,CAAC;AACJ,CAAC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/utils.ts"],"names":[],"mappings":"AAGA;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,8BAA8B,GACzC,CAAC,UAAkB,EAAyB,EAAE,CAC9C,CAAC,MAA2B,EAAE,EAAE;IAC9B,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACnC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;IACnC,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK,CAAC;QACX,KAAK,SAAS;YACZ,OAAO,YAAY,SAAS,aAAa,KAAK,gBAAgB,UAAU,EAAE,CAAC;QAC7E;YACE,OAAO,YAAY,SAAS,gBAAgB,UAAU,EAAE,CAAC;IAC7D,CAAC;AACH,CAAC,CAAC;AAEJ;;;;;;;;GAQG;AACH,MAAM,CAAC,MAAM,4BAA4B,GACvC,CAAC,UAAkB,EAAyB,EAAE,CAC9C,CAAC,MAA2B,EAAE,EAAE;IAC9B,MAAM,EAAE,SAAS,EAAE,IAAI,EAAE,GAAG,MAAM,CAAC;IACnC,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,IAAI,EAAE,CAAC;IACnC,mDAAmD;IACnD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK,CAAC;QACX,KAAK,SAAS;YACZ,OAAO,YAAY,SAAS,aAAa,KAAK,uBAAuB,UAAU,EAAE,CAAC;QACpF;YACE,OAAO,YAAY,SAAS,uBAAuB,UAAU,EAAE,CAAC;IACpE,CAAC;AACH,CAAC,CAAC;AAEJ;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,UAAuB,EAAW,EAAE;IACtE,MAAM,UAAU,GAAG,aAAa,CAAC;IACjC,OAAO;QACL,UAAU;QACV,aAAa,EAAE,UAAU,CAAC,GAAG;QAC7B,iBAAiB,EAAE;YACjB,MAAM,EAAE;gBACN,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,8BAA8B,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;aACjF;YACD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SACpC;QACD,eAAe,EAAE;YACf,MAAM,EAAE;gBACN,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,4BAA4B,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC,CAAC;aAC/E;YACD,GAAG,EAAE,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;SACpC;KACF,CAAC;AACJ,CAAC,CAAC"}
@@ -1,3 +1,3 @@
1
1
  // Generated by genversion.
2
- export const version = '14.0.2-next.0';
2
+ export const version = '15.0.0';
3
3
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,MAAM,CAAC,MAAM,OAAO,GAAG,eAAe,CAAC"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAC"}