@equinor/fusion-framework-module-context 8.0.3 → 9.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 (122) hide show
  1. package/CHANGELOG.md +53 -0
  2. package/README.md +78 -2
  3. package/dist/esm/ContextModuleConfig.js +2 -0
  4. package/dist/esm/ContextModuleConfig.js.map +1 -0
  5. package/dist/esm/ContextModuleConfigurator.interface.js +2 -0
  6. package/dist/esm/ContextModuleConfigurator.interface.js.map +1 -0
  7. package/dist/esm/ContextModuleConfigurator.js +211 -0
  8. package/dist/esm/ContextModuleConfigurator.js.map +1 -0
  9. package/dist/esm/ContextProvider.js +1 -1
  10. package/dist/esm/ContextProvider.js.map +1 -1
  11. package/dist/esm/__tests__/ContextModuleConfigurator.test.js +282 -0
  12. package/dist/esm/__tests__/ContextModuleConfigurator.test.js.map +1 -0
  13. package/dist/esm/__tests__/mock/context-mock.test.js +101 -0
  14. package/dist/esm/__tests__/mock/context-mock.test.js.map +1 -0
  15. package/dist/esm/__tests__/mock/create-context-item-factory.test.js +45 -0
  16. package/dist/esm/__tests__/mock/create-context-item-factory.test.js.map +1 -0
  17. package/dist/esm/__tests__/mock/create-context-items.test.js +46 -0
  18. package/dist/esm/__tests__/mock/create-context-items.test.js.map +1 -0
  19. package/dist/esm/index.js +1 -1
  20. package/dist/esm/index.js.map +1 -1
  21. package/dist/esm/mock/ContextMockConfigurator.js +206 -0
  22. package/dist/esm/mock/ContextMockConfigurator.js.map +1 -0
  23. package/dist/esm/mock/fixtures/create-context-item-factory.js +50 -0
  24. package/dist/esm/mock/fixtures/create-context-item-factory.js.map +1 -0
  25. package/dist/esm/mock/fixtures/create-context-items.js +53 -0
  26. package/dist/esm/mock/fixtures/create-context-items.js.map +1 -0
  27. package/dist/esm/mock/fixtures/index.js +22 -0
  28. package/dist/esm/mock/fixtures/index.js.map +1 -0
  29. package/dist/esm/mock/fixtures/string-to-seed.js +15 -0
  30. package/dist/esm/mock/fixtures/string-to-seed.js.map +1 -0
  31. package/dist/esm/mock/index.js +31 -0
  32. package/dist/esm/mock/index.js.map +1 -0
  33. package/dist/esm/mock/module.js +41 -0
  34. package/dist/esm/mock/module.js.map +1 -0
  35. package/dist/esm/module.js +35 -6
  36. package/dist/esm/module.js.map +1 -1
  37. package/dist/esm/{get-context-selector.js → selectors/get-context-selector.js} +1 -4
  38. package/dist/esm/selectors/get-context-selector.js.map +1 -0
  39. package/dist/esm/selectors/index.js +13 -0
  40. package/dist/esm/selectors/index.js.map +1 -0
  41. package/dist/esm/{query-context-selector.js → selectors/query-context-selector.js} +1 -1
  42. package/dist/esm/selectors/query-context-selector.js.map +1 -0
  43. package/dist/esm/{related-context-selector.js → selectors/related-context-selector.js} +1 -1
  44. package/dist/esm/selectors/related-context-selector.js.map +1 -0
  45. package/dist/esm/utils/enable-context.js +1 -1
  46. package/dist/esm/utils/enable-context.js.map +1 -1
  47. package/dist/esm/utils/index.js +2 -0
  48. package/dist/esm/utils/index.js.map +1 -1
  49. package/dist/esm/utils/parse-context-item.js.map +1 -0
  50. package/dist/esm/utils/resolve-initial-context.js +3 -1
  51. package/dist/esm/utils/resolve-initial-context.js.map +1 -1
  52. package/dist/esm/version.js +1 -1
  53. package/dist/tsconfig.tsbuildinfo +1 -1
  54. package/dist/types/{configurator.d.ts → ContextModuleConfig.d.ts} +4 -64
  55. package/dist/types/ContextModuleConfigurator.d.ts +97 -0
  56. package/dist/types/{ContextConfigBuilder.d.ts → ContextModuleConfigurator.interface.d.ts} +27 -47
  57. package/dist/types/ContextProvider.d.ts +1 -1
  58. package/dist/types/__tests__/ContextModuleConfigurator.test.d.ts +1 -0
  59. package/dist/types/__tests__/mock/context-mock.test.d.ts +1 -0
  60. package/dist/types/__tests__/mock/create-context-item-factory.test.d.ts +1 -0
  61. package/dist/types/__tests__/mock/create-context-items.test.d.ts +1 -0
  62. package/dist/types/index.d.ts +3 -1
  63. package/dist/types/mock/ContextMockConfigurator.d.ts +155 -0
  64. package/dist/types/mock/fixtures/create-context-item-factory.d.ts +40 -0
  65. package/dist/types/mock/fixtures/create-context-items.d.ts +59 -0
  66. package/dist/types/mock/fixtures/index.d.ts +21 -0
  67. package/dist/types/mock/fixtures/string-to-seed.d.ts +12 -0
  68. package/dist/types/mock/index.d.ts +30 -0
  69. package/dist/types/mock/module.d.ts +38 -0
  70. package/dist/types/module.d.ts +5 -3
  71. package/dist/types/{get-context-selector.d.ts → selectors/get-context-selector.d.ts} +1 -3
  72. package/dist/types/selectors/index.d.ts +12 -0
  73. package/dist/types/{query-context-selector.d.ts → selectors/query-context-selector.d.ts} +1 -1
  74. package/dist/types/{related-context-selector.d.ts → selectors/related-context-selector.d.ts} +1 -1
  75. package/dist/types/utils/enable-context.d.ts +4 -5
  76. package/dist/types/utils/index.d.ts +2 -0
  77. package/dist/types/{parse-context-item.d.ts → utils/parse-context-item.d.ts} +1 -1
  78. package/dist/types/utils/resolve-initial-context.d.ts +1 -1
  79. package/dist/types/version.d.ts +1 -1
  80. package/docs/data-model.md +134 -0
  81. package/docs/lifecycle.md +163 -0
  82. package/docs/recipes.md +89 -0
  83. package/package.json +36 -8
  84. package/src/ContextModuleConfig.ts +147 -0
  85. package/src/ContextModuleConfigurator.interface.ts +145 -0
  86. package/src/ContextModuleConfigurator.ts +295 -0
  87. package/src/ContextProvider.ts +1 -2
  88. package/src/__tests__/ContextModuleConfigurator.test.ts +412 -0
  89. package/src/__tests__/mock/context-mock.test.ts +137 -0
  90. package/src/__tests__/mock/create-context-item-factory.test.ts +60 -0
  91. package/src/__tests__/mock/create-context-items.test.ts +58 -0
  92. package/src/index.ts +3 -5
  93. package/src/mock/ContextMockConfigurator.ts +244 -0
  94. package/src/mock/fixtures/create-context-item-factory.ts +62 -0
  95. package/src/mock/fixtures/create-context-items.ts +80 -0
  96. package/src/mock/fixtures/index.ts +28 -0
  97. package/src/mock/fixtures/string-to-seed.ts +18 -0
  98. package/src/mock/index.ts +33 -0
  99. package/src/mock/module.ts +54 -0
  100. package/src/module.ts +45 -17
  101. package/src/{get-context-selector.ts → selectors/get-context-selector.ts} +2 -6
  102. package/src/selectors/index.ts +12 -0
  103. package/src/{query-context-selector.ts → selectors/query-context-selector.ts} +2 -2
  104. package/src/{related-context-selector.ts → selectors/related-context-selector.ts} +2 -2
  105. package/src/utils/enable-context.ts +6 -10
  106. package/src/utils/index.ts +2 -0
  107. package/src/{parse-context-item.ts → utils/parse-context-item.ts} +1 -1
  108. package/src/utils/resolve-initial-context.ts +5 -2
  109. package/src/version.ts +1 -1
  110. package/tsconfig.json +6 -0
  111. package/vitest.config.ts +11 -0
  112. package/dist/esm/ContextConfigBuilder.js +0 -175
  113. package/dist/esm/ContextConfigBuilder.js.map +0 -1
  114. package/dist/esm/configurator.js +0 -104
  115. package/dist/esm/configurator.js.map +0 -1
  116. package/dist/esm/get-context-selector.js.map +0 -1
  117. package/dist/esm/parse-context-item.js.map +0 -1
  118. package/dist/esm/query-context-selector.js.map +0 -1
  119. package/dist/esm/related-context-selector.js.map +0 -1
  120. package/src/ContextConfigBuilder.ts +0 -258
  121. package/src/configurator.ts +0 -300
  122. /package/dist/esm/{parse-context-item.js → utils/parse-context-item.js} +0 -0
package/CHANGELOG.md CHANGED
@@ -1,5 +1,58 @@
1
1
  # Change Log
2
2
 
3
+ ## 9.0.0
4
+
5
+ ### Major Changes
6
+
7
+ - f663b46: Add `./mock` and `./mock/fixtures` subpaths for seeding context in tests without a real context API.
8
+
9
+ **BREAKING CHANGE:** `ContextModuleConfigurator` now extends `BaseConfigBuilder` (aligning with `module-event`, `module-http`, `module-msal`, and `module-service-discovery`). Its public `createConfig` method now returns `Observable<ContextModuleConfig>` instead of `Promise<ContextModuleConfig>`. Code calling `await configurator.createConfig(init)` directly should switch to `createConfigAsync`, which keeps the previous Promise-based behavior:
10
+
11
+ ```typescript
12
+ // Before
13
+ const config = await configurator.createConfig(init);
14
+ // After
15
+ const config = await configurator.createConfigAsync(init);
16
+ ```
17
+
18
+ No other public export changes as part of this refactor.
19
+
20
+ `./mock` exports `enableContextMock` and `ContextMockConfigurator` — a `ContextModuleConfigurator` backed by an in-memory pool instead of a real client. Only the data source is substituted; `validateContext`, `resolveContext`, and parent-context propagation all still run through the real `ContextProvider`:
21
+
22
+ ```typescript
23
+ import { enableContextMock } from '@equinor/fusion-framework-module-context/mock';
24
+
25
+ enableContextMock(configurator, (mock) => {
26
+ mock.setCurrentContext({ id: 'my-ctx', type: { id: 'ProjectMaster' }, value: {} });
27
+ });
28
+ ```
29
+
30
+ `ContextMockConfigurator` also has `setContexts`, `addContext`, `setRelatedContexts` for the common cases, and `setResolver` as an escape hatch for custom resolution. Seeding an initial context this way overrides `resolveInitialContext` directly, so a test doesn't need a fake navigation module or parent framework instance just to start an app with a known context selected.
31
+
32
+ `./mock/fixtures` exports `createContextItems` and `createContextItemFactory`, generating realistic `ContextItem`s via an optional `@faker-js/faker` peer dependency — kept on a separate entry point so `enableContextMock` never pulls faker in for tests that don't need it:
33
+
34
+ ```typescript
35
+ import { createContextItems } from '@equinor/fusion-framework-module-context/mock/fixtures';
36
+
37
+ const [project] = createContextItems([{ type: 'ProjectMaster' }]);
38
+ ```
39
+
40
+ Also exports `parseContextItem` from the `./utils` subpath (parses a raw API context entity into a `ContextItem`), and reorganizes internal selector/configurator files without changing any existing public export.
41
+
42
+ ### Patch Changes
43
+
44
+ - f663b46: Restructure documentation so the README is an entry point rather than a manual, matching the convention already used by `@equinor/fusion-framework-module` and `@equinor/fusion-framework-module-http`.
45
+
46
+ Long-form content moves into `docs/data-model.md` (the `ContextItem`/`ContextItemType` shape and query/related parameter types), `docs/lifecycle.md` (setting/resolving context, initial-context resolution, parent/child propagation), and `docs/recipes.md` (OData query parameters, path rewriting, accepting a family of related context types, skipping the default initial-context lookup, custom search errors). The README keeps the elevator pitch, a "How it fits together" section on module dependencies, and a documentation table linking to the rest.
47
+ - f663b46: Fix `ContextModule.postInitialize` logging a `console.warn` for the valid "no initial context" case (no context in the path and no parent context). The default `resolveInitialContext` resolver used RxJS `first()` without a default value, so completing with no emissions threw an `EmptyError` that got logged as if resolution had actually failed. `first()` now falls back to `undefined`, so a genuinely empty result completes silently and only real resolution failures are logged.
48
+ - f663b46: Declare `@equinor/fusion-framework-module-telemetry` as an optional peer dependency.
49
+
50
+ The context module imports `TelemetryLevel`/`TelemetryScope` at runtime to report context
51
+ resolution failures when a telemetry module is registered, but telemetry was previously
52
+ undeclared outside of this package's own dev dependencies. A consumer installing only
53
+ `@equinor/fusion-framework-module-context` without telemetry could fail to resolve this
54
+ import at runtime.
55
+
3
56
  ## 8.0.3
4
57
 
5
58
  ### Patch Changes
package/README.md CHANGED
@@ -19,13 +19,36 @@ Use this module when your application or portal needs to:
19
19
  > **Portal developers** will use `@equinor/fusion-framework-react/context`
20
20
  > for the same purpose at the portal level.
21
21
 
22
+ ## How it fits together
23
+
24
+ A context module instance never lives in isolation. It depends on the
25
+ `@equinor/fusion-framework-module-services` module for its default HTTP client, optionally
26
+ uses `@equinor/fusion-framework-module-event` to dispatch and listen for context change events,
27
+ and optionally reads the current URL through `@equinor/fusion-framework-module-navigation` to
28
+ resolve a context from the path. None of these need manual setup — `enableContext` requires
29
+ only `services`; `event` and `navigation` are picked up automatically when present.
30
+
31
+ The module is also **hierarchy-aware by default**: when a Portal and an App both enable
32
+ context, the App's instance automatically connects to the Portal's and mirrors its context —
33
+ no wiring required beyond enabling the module on both sides. See
34
+ [Lifecycle](docs/lifecycle.md#parentchild-propagation) for exactly how that sync works, and
35
+ when it can be overridden or disabled.
36
+
37
+ ## Documentation
38
+
39
+ | Topic | Description |
40
+ |---|---|
41
+ | [Data model](docs/data-model.md) | The shape of a `ContextItem`, how context types relate to each other, and query/related parameters |
42
+ | [Lifecycle](docs/lifecycle.md) | `setCurrentContext`'s validate/resolve decision flow, automatic initial-context resolution on startup, and parent/child context propagation |
43
+ | [Recipes](docs/recipes.md) | OData query parameters, path rewriting, accepting a family of context types, and custom search errors |
44
+
22
45
  ## Key concepts
23
46
 
24
47
  | Concept | Description |
25
48
  |---|---|
26
49
  | **ContextItem** | A typed record representing a single context entity (project, facility, etc.). |
27
50
  | **ContextProvider** | Runtime service exposing query, set, validate, resolve, and event APIs. |
28
- | **ContextConfigBuilder** | Fluent builder for configuring context types, filters, clients, and hooks. |
51
+ | **ContextModuleConfigurator** | Fluent builder for configuring context types, filters, clients, and hooks. |
29
52
  | **enableContext** | Helper that registers the module on a modules configurator. |
30
53
  | **Context resolution** | Automatic lookup of related context items when a context type does not match the configured types. |
31
54
  | **Parent connection** | Bi-directional sync between a parent portal context and a child app context. |
@@ -66,7 +89,7 @@ modules.context.clearCurrentContext();
66
89
 
67
90
  ## Configuration
68
91
 
69
- All configuration flows through `enableContext` → `ContextConfigBuilder`:
92
+ All configuration flows through `enableContext` → `ContextModuleConfigurator`:
70
93
 
71
94
  ```ts
72
95
  enableContext(configurator, (builder) => {
@@ -234,6 +257,57 @@ try {
234
257
  }
235
258
  ```
236
259
 
260
+ ## Testing
261
+
262
+ `@equinor/fusion-framework-module-context/mock` provides `enableContextMock`, a purpose-built test double backed by an in-memory pool of seeded context items — no context API, no HTTP mock, and no service-discovery mock required. Real `ContextProvider` behaviour (`validateContext`, `resolveContext`, parent-context propagation) still runs against the seeded data; only the data source is substituted.
263
+
264
+ ### Defaults
265
+
266
+ - The context pool starts empty and no current context is selected.
267
+ - Querying the empty pool returns no items.
268
+ - Looking up an unseeded id throws an error that names the id and the seeding methods.
269
+ - Related-context lookup uses the seeded pool, excludes the source item, and filters by the requested type.
270
+ - `setCurrentContext` both seeds the item and selects it for initial app resolution; `setContexts` only seeds items.
271
+
272
+ ```ts
273
+ import { enableContextMock } from '@equinor/fusion-framework-module-context/mock';
274
+
275
+ enableContextMock(configurator, (mock) => {
276
+ mock.setCurrentContext({ id: 'my-ctx', type: { id: 'ProjectMaster' }, value: {} });
277
+ });
278
+ ```
279
+
280
+ - **Friendly layer** — `setCurrentContext`, `setContexts`, `addContext`, `setRelatedContexts` — a context-domain vocabulary for the common case: seed a known item, get it back.
281
+ - **Escape hatch** — `setResolver` — a raw resolution function for a custom `resolveContext` strategy or a shape the friendly layer did not cover.
282
+
283
+ When used with `@equinor/fusion-framework/mock`, `FrameworkMockConfigurator.context` returns this same configurator, so seeding happens directly through `configurator.context` with no callback needed.
284
+
285
+ This is one of two ways to fake context data in tests. The other is mocking the context API's HTTP responses directly (with `configurator.http.addMiddleware(...)`, optionally paired with `@equinor/fusion-framework-module-http/mock`'s `createOpenApiMockMiddleware` for faker-generated data straight from context's OpenAPI spec) — which exercises the real `ContextModuleConfigurator`/services/HTTP pipeline instead of substituting it. Reach for `enableContextMock` to seed one known item with no transport involved; reach for the HTTP middleware when a test needs to cover that pipeline itself. Fixture generators for realistic seeded data (`createContextItemFactory`, `createContextItems`) are available from `@equinor/fusion-framework-module-context/mock/fixtures`.
286
+
287
+ ### Generate deterministic context fixtures
288
+
289
+ The optional `/mock/fixtures` entry point uses `@faker-js/faker` to produce realistic but
290
+ repeatable titles and readable ids. Install Faker only when importing this entry point.
291
+
292
+ ```ts
293
+ import { enableContextMock } from '@equinor/fusion-framework-module-context/mock';
294
+ import { createContextItems } from '@equinor/fusion-framework-module-context/mock/fixtures';
295
+
296
+ const [project, contract] = createContextItems([
297
+ { type: 'ProjectMaster' },
298
+ { type: 'Contract', parentTypeIds: ['ProjectMaster'] },
299
+ ]);
300
+
301
+ enableContextMock(configurator, (mock) => {
302
+ mock.setContexts([project, contract]);
303
+ mock.setCurrentContext(project);
304
+ });
305
+ ```
306
+
307
+ Use `createContextItemFactory(prefix?)` for sequential fixtures of one type. Use
308
+ `createContextItems` for multiple types and parent/child type metadata. Generated values are
309
+ deterministic per id; use `setRelatedContexts` when relations must differ per specific item.
310
+
237
311
  ## Utilities
238
312
 
239
313
  Additional helpers are available from `@equinor/fusion-framework-module-context/utils`:
@@ -252,4 +326,6 @@ Additional helpers are available from `@equinor/fusion-framework-module-context/
252
326
  | `@equinor/fusion-framework-module-context` | Main entry — module, provider, configurator, types |
253
327
  | `@equinor/fusion-framework-module-context/errors.js` | `FusionContextSearchError` |
254
328
  | `@equinor/fusion-framework-module-context/utils` | Utility functions for path resolution and enablement |
329
+ | `@equinor/fusion-framework-module-context/mock` | `enableContextMock`, `ContextMockConfigurator` — in-memory test double |
330
+ | `@equinor/fusion-framework-module-context/mock/fixtures` | Fixture factories for generating seeded context items |
255
331
 
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ContextModuleConfig.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextModuleConfig.js","sourceRoot":"","sources":["../../src/ContextModuleConfig.ts"],"names":[],"mappings":""}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=ContextModuleConfigurator.interface.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextModuleConfigurator.interface.js","sourceRoot":"","sources":["../../src/ContextModuleConfigurator.interface.ts"],"names":[],"mappings":""}
@@ -0,0 +1,211 @@
1
+ import { from, lastValueFrom } from 'rxjs';
2
+ import { BaseConfigBuilder, } from '@equinor/fusion-framework-module';
3
+ import { getContextSelector, queryContextSelector, relatedContextSelector } from './selectors';
4
+ import resolveInitialContext from './utils/resolve-initial-context';
5
+ /**
6
+ * Default implementation of {@link IContextModuleConfigurator}.
7
+ *
8
+ * Collects {@link ContextConfigBuilderCallback} registrations and, when
9
+ * {@link createConfigAsync} is called, runs them in order — each callback
10
+ * receives this configurator itself and populates the config through its
11
+ * setter methods, which register into {@link BaseConfigBuilder._set} — to
12
+ * produce the final {@link ContextModuleConfig}.
13
+ *
14
+ * If no custom client is configured, the configurator falls back to
15
+ * creating one from the {@link ServicesModule} API provider.
16
+ *
17
+ * @remarks
18
+ * Extends {@link BaseConfigBuilder} and fully reuses its `_set`/`_buildConfig`
19
+ * machinery. Setters always pass an `async () => value` callback to `_set`,
20
+ * never the raw value directly — `_set` decides whether it received a value
21
+ * or a deferred callback by checking `typeof value_or_cb === 'function'`, so
22
+ * fields that are themselves functions (e.g. `validateContext`) would
23
+ * otherwise be misread as callbacks and invoked instead of stored.
24
+ */
25
+ export class ContextModuleConfigurator extends BaseConfigBuilder {
26
+ /** Default cache TTL (in ms) for context query results. */
27
+ defaultExpireTime = 1 * 60 * 1000;
28
+ #configBuilders = [];
29
+ #init;
30
+ /** @inheritdoc */
31
+ addConfigBuilder(init) {
32
+ this.#configBuilders.push(init);
33
+ }
34
+ /** @inheritdoc */
35
+ requireInstance(module) {
36
+ // requireInstance is only meaningful once module initialization has begun and #init is set
37
+ if (!this.#init) {
38
+ throw Error('requireInstance can only be called during module configuration');
39
+ }
40
+ // #init's requireInstance is narrowed to this module's own declared deps; widen for the public any-module overload above
41
+ return this.#init.requireInstance(module);
42
+ }
43
+ /** @inheritdoc */
44
+ setContextType(type) {
45
+ this._set('contextType', async () => type);
46
+ }
47
+ /** @inheritdoc */
48
+ setContextFilter(filter) {
49
+ this._set('contextFilter', async () => filter);
50
+ }
51
+ /** @inheritdoc */
52
+ connectParentContext(connect) {
53
+ this._set('connectParentContext', async () => connect);
54
+ }
55
+ /** @inheritdoc */
56
+ setContextParameterFn(fn) {
57
+ this._set('contextParameterFn', async () => fn);
58
+ }
59
+ /** @inheritdoc */
60
+ setValidateContext(fn) {
61
+ this._set('validateContext', async () => fn);
62
+ }
63
+ /** @inheritdoc */
64
+ setResolveContext(fn) {
65
+ this._set('resolveContext', async () => fn);
66
+ }
67
+ /** @inheritdoc */
68
+ setContextPathExtractor(fn) {
69
+ this._set('extractContextIdFromPath', async () => fn);
70
+ }
71
+ /** @inheritdoc */
72
+ setContextPathGenerator(fn) {
73
+ this._set('generatePathFromContext', async () => fn);
74
+ }
75
+ /** @inheritdoc */
76
+ setResolveInitialContext(fn) {
77
+ this._set('resolveInitialContext', async () => fn);
78
+ }
79
+ /** @inheritdoc */
80
+ setContextClient(client, expire = 1 * 60 * 1000) {
81
+ const clientConfig = {
82
+ get: typeof client.get === 'function'
83
+ ? {
84
+ key: ({ id }) => id,
85
+ client: {
86
+ fn: client.get,
87
+ },
88
+ expire,
89
+ }
90
+ : client.get,
91
+ query: typeof client.query === 'function'
92
+ ? {
93
+ // TODO(#5118) - might cast to checksum
94
+ key: (args) => JSON.stringify(args),
95
+ client: {
96
+ fn: client.query,
97
+ },
98
+ expire,
99
+ }
100
+ : client.query,
101
+ };
102
+ // only override the related-context client config if one was provided
103
+ if (client.related) {
104
+ clientConfig.related =
105
+ typeof client.related === 'function'
106
+ ? {
107
+ // TODO(#5118) - might cast to checksum
108
+ key: (args) => JSON.stringify(args),
109
+ client: {
110
+ fn: client.related,
111
+ },
112
+ expire,
113
+ }
114
+ : client.related;
115
+ }
116
+ this._set('client', async () => clientConfig);
117
+ }
118
+ /**
119
+ * Resolves the services API provider, preferring the local module
120
+ * instance and falling back to the parent module.
121
+ *
122
+ * @param init - Module initializer arguments.
123
+ * @returns The resolved API provider.
124
+ * @throws Error if no services module is available.
125
+ */
126
+ async _getServiceProvider(init) {
127
+ // prefer the local services module instance if available
128
+ if (init.hasModule('services')) {
129
+ return init.requireInstance('services');
130
+ }
131
+ const parentServiceModule = init.ref?.services;
132
+ // fall back to the parent module's services instance
133
+ if (!parentServiceModule) {
134
+ throw Error('no service services provider configures [ServicesModule]');
135
+ }
136
+ return parentServiceModule;
137
+ }
138
+ /**
139
+ * Runs all registered config builders, then resolves the accumulated
140
+ * `_set` registrations into the final {@link ContextModuleConfig}.
141
+ *
142
+ * @param init - Module initializer arguments including dependency instances.
143
+ * @param initial - Optional partial config inherited from a parent module.
144
+ * @returns The fully resolved context module configuration.
145
+ */
146
+ async _createConfig(init, initial) {
147
+ // requireInstance resolves lazily against this init for the remainder of config building
148
+ this.#init = init;
149
+ // run each registered config builder in sequence; each calls setXxx(), registering into _set
150
+ await this.#configBuilders.reduce((prev, cb) => prev.then(() => cb(this)), Promise.resolve());
151
+ // resolve every registered _set callback into the actual config object
152
+ const config = await lastValueFrom(from(this._buildConfig(init, initial)));
153
+ // route through _processConfig, so a subclass overriding it (e.g. ContextMockConfigurator) still runs
154
+ return lastValueFrom(from(this._processConfig(config, init)));
155
+ }
156
+ /**
157
+ * Defaults `resolveInitialContext` and `client` when a builder callback
158
+ * didn't set them.
159
+ *
160
+ * If no `resolveInitialContext` was set, the default path + parent
161
+ * resolver is used. If no `client` was set, one is created from the
162
+ * {@link ServicesModule} API provider.
163
+ *
164
+ * @param config - The config accumulated from registered builder callbacks.
165
+ * @param init - Module initializer arguments including dependency instances.
166
+ * @returns The fully resolved context module configuration.
167
+ */
168
+ async _processConfig(config, init) {
169
+ config.resolveInitialContext ??= resolveInitialContext({
170
+ path: {
171
+ extract: config.extractContextIdFromPath,
172
+ validate: config.extractContextIdFromPath ? () => true : undefined,
173
+ },
174
+ });
175
+ // TODO(#5119) - make less lazy
176
+ config.client ??= await (async () => {
177
+ const apiProvider = await this._getServiceProvider(init);
178
+ const contextClient = await apiProvider.createContextClient('json$');
179
+ return {
180
+ get: {
181
+ client: {
182
+ fn: (args) => contextClient.get('v1', args, { selector: getContextSelector }),
183
+ },
184
+ key: ({ id }) => id,
185
+ expire: this.defaultExpireTime,
186
+ },
187
+ query: {
188
+ client: {
189
+ fn: (query) => contextClient.query('v1', { query }, { selector: queryContextSelector }),
190
+ },
191
+ // TODO(#5118) - might cast to checksum
192
+ key: (args) => JSON.stringify(args),
193
+ expire: this.defaultExpireTime,
194
+ },
195
+ related: {
196
+ client: {
197
+ fn: (args) => {
198
+ return contextClient.related('v1', { id: args.item.id, query: { filter: args.filter } }, { selector: relatedContextSelector });
199
+ },
200
+ },
201
+ // TODO(#5118) - might cast to checksum
202
+ key: (args) => JSON.stringify(args),
203
+ expire: this.defaultExpireTime,
204
+ },
205
+ };
206
+ })();
207
+ return config;
208
+ }
209
+ }
210
+ export default ContextModuleConfigurator;
211
+ //# sourceMappingURL=ContextModuleConfigurator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ContextModuleConfigurator.js","sourceRoot":"","sources":["../../src/ContextModuleConfigurator.ts"],"names":[],"mappings":"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"}
@@ -163,7 +163,7 @@ export class ContextProvider extends BaseModuleProvider {
163
163
  this.#subscriptions.add(this.#contextQueue
164
164
  .pipe(
165
165
  // resolve context item from queue
166
- switchMap((next) => next), tap((x) => console.debug('ContextProvider::#contextQueue', x)))
166
+ switchMap((next) => next))
167
167
  .subscribe((context) => {
168
168
  // set context from resolved context item from queue
169
169
  this.#contextClient.setCurrentContext(context ?? null);
@@ -1 +1 @@
1
- {"version":3,"file":"ContextProvider.js","sourceRoot":"","sources":["../../src/ContextProvider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ContextProvider.js","sourceRoot":"","sources":["../../src/ContextProvider.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,aAAa,EAAE,UAAU,EAAE,EAAE,EAAE,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,MAAM,CAAC;AAC/F,OAAO,EACL,UAAU,EACV,MAAM,EACN,QAAQ,EACR,GAAG,EACH,QAAQ,EACR,SAAS,EACT,SAAS,EACT,GAAG,GACJ,MAAM,gBAAgB,CAAC;AAIxB,OAAO,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAQvD,OAAO,KAAK,MAAM,uBAAuB,CAAC;AA2R1C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AACH,MAAM,OAAO,eACX,SAAQ,kBAAuC;IAG/C,cAAc,CAAgB;IAC9B,aAAa,CAAoD;IACjE,eAAe,CAAuD;IAEtE,MAAM,CAA2B;IAEjC,cAAc,GAAG,IAAI,YAAY,EAAE,CAAC;IAEpC,YAAY,CAAsC;IAClD,cAAc,CAAuC;IACrD,mBAAmB,CAAsD;IAEzE,aAAa,GAAG,IAAI,OAAO,EAAoD,CAAC;IAEhF;;;OAGG;IACH,IAAW,aAAa;QACtB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED;;;OAGG;IACH,IAAW,WAAW;QACpB,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED;;;OAGG;IACH,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,cAAc,CAAC,eAAe,CAAC;IAC7C,CAAC;IAED;;;OAGG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,cAAc,CAAC,cAAc,CAAC;IAC5C,CAAC;IAED;;;;;OAKG;IACH,IAAI,cAAc,CAAC,OAAuC;QACxD,OAAO,CAAC,IAAI,CACV,aAAa,EACb,gCAAgC,EAChC,iEAAiE,CAClE,CAAC;QACF,sFAAsF;QACtF,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;YAC1B,MAAM,KAAK,CAAC,4DAA4D,CAAC,CAAC;QAC5E,CAAC;QACD,IAAI,CAAC,sBAAsB,CAAC,OAAO,CAAC,CAAC;IACvC,CAAC;IAED;;;;;;OAMG;IACH,YAAY,IAKX;QACC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;QAE/B,KAAK,CAAC,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC,CAAC;QAE3B,sDAAsD;QACtD,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,OAAO,CAAC,IAAI,CACV,aAAa,EACb,8EAA8E,CAC/E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QAEpB,iDAAiD;QACjD,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;YAC1B,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,cAAc,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,CAAC;QACD,yCAAyC;QACzC,IAAI,MAAM,CAAC,eAAe,EAAE,CAAC;YAC3B,IAAI,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,EAAE,IAAI,CAAC,IAAI,CAAC,CAAC;QAC5D,CAAC;QAED,kDAAkD;QAClD,IAAI,MAAM,CAAC,wBAAwB,EAAE,CAAC;YACpC,6GAA6G;YAC7G,IAAI,CAAC,wBAAwB,GAAG,MAAM,CAAC,wBAAwB,CAAC;QAClE,CAAC;QACD,iDAAiD;QACjD,IAAI,MAAM,CAAC,uBAAuB,EAAE,CAAC;YACnC,6GAA6G;YAC7G,IAAI,CAAC,uBAAuB,GAAG,MAAM,CAAC,uBAAuB,CAAC;QAChE,CAAC;QAED,IAAI,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;QACvC,IAAI,CAAC,cAAc,GAAG,MAAM,CAAC,aAAa,CAAC;QAE3C,iBAAiB;QACjB,IAAI,CAAC,cAAc,GAAG,IAAI,aAAa,CAAC,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;QAC3D,IAAI,CAAC,aAAa,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAEpD,qEAAqE;QACrE,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YAC1B,IAAI,CAAC,eAAe,GAAG,IAAI,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC1D,CAAC;QAED,qCAAqC;QACrC,IAAI,CAAC,mBAAmB;YACtB,MAAM,CAAC,kBAAkB;gBACzB,sBAAsB;gBACtB,CAAC,CAAC,IAAwE,EAAE,EAAE,CAAC,CAAC;oBAC9E,MAAM,EAAE,IAAI,CAAC,MAAM;oBACnB,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;iBAC5B,CAAC,CAAC,CAAC;QAEN,sDAAsD;QACtD,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;YAChB,IAAI,CAAC,cAAc,CAAC,GAAG;YACrB,kCAAkC;YAClC,IAAI,CAAC,eAAe;gBAClB,iEAAiE;iBAChE,IAAI,CAAC,QAAQ,EAAE,CAAC;iBAChB,SAAS,CAAC,CAAC,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE,EAAE;gBAC9B,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,yBAAyB,EAAE;oBACpD,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,IAAI;oBACf,MAAM,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE;iBAC3B,CAAC,CAAC;YACL,CAAC,CAAC,CACL,CAAC;YACF,IAAI,CAAC,cAAc,CAAC,GAAG;YACrB,qDAAqD;YACrD,IAAI,CAAC,MAAM,CAAC,gBAAgB,CAAC,yBAAyB,EAAE,CAAC,CAAC,EAAE,EAAE;gBAC5D,gEAAgE;gBAChE,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,MAAM,CAAC,IAAI,KAAK,SAAS,EAAE,CAAC;oBACrD,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC,CAAC,CACH,CAAC;QACJ,CAAC;QAED,wBAAwB;QACxB,IAAI,CAAC,cAAc,CAAC,GAAG,CACrB,IAAI,CAAC,aAAa;aACf,IAAI;QACH,kCAAkC;QAClC,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAC1B;aACA,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;YACrB,oDAAoD;YACpD,IAAI,CAAC,cAAc,CAAC,iBAAiB,CAAC,OAAO,IAAI,IAAI,CAAC,CAAC;QACzD,CAAC,CAAC,CACL,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACI,oBAAoB,CACzB,QAA0B,EAC1B,GAA4B;QAE5B,uEAAuE;QACvE,MAAM,cAAc,GAAG,QAAQ,CAAC,eAAe,CAAC,IAAI;QAClD,mDAAmD;QACnD,MAAM,CAAC,CAAC,CAAC,EAA2B,EAAE,CAAC,CAAC,KAAK,SAAS,CAAC,EACvD,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;YACrB,2CAA2C;YAC3C,sEAAsE;YACtE,IAAI,GAAG,EAAE,SAAS,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;gBACjC,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,qBAAqB,EAAE,IAAI,CAAC,CAAC;gBACpF,OAAO,KAAK,CAAC;YACf,CAAC;YACD,qCAAqC;YACrC,OAAO,IAAI,CAAC,cAAc,EAAE,EAAE,KAAK,IAAI,EAAE,EAAE,CAAC;QAC9C,CAAC,CAAC,EACF,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE;YACvB,yCAAyC;YACzC,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,OAAO,EAAE,IAAI,EAAE,CAAC;YAClB,CAAC;YACD,0FAA0F;YAC1F,MAAM,sBAAsB,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,wBAAwB,EAAE;gBACxF,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,IAAI;gBACZ,UAAU,EAAE,IAAI;aACjB,CAAC,CAAC;YACH,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,sBAAsB,EAAE,QAAQ,EAAE,CAAC;QAC9D,CAAC,CAAC;QACF,sCAAsC;QACtC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,EAC1B,SAAS,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE;YACrB,qDAAqD;YACrD,OAAO,CACL,IAAI,CAAC,iBAAiB,CAAC,IAAI,EAAE;gBAC3B,QAAQ,EAAE,IAAI;gBACd,OAAO,EAAE,IAAI;aACd,CAAC;gBACA,kFAAkF;iBACjF,IAAI,CACH,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE;gBACjB,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC;gBAClF,2CAA2C;gBAC3C,OAAO,KAAK,CAAC;YACf,CAAC,CAAC,CACH,CACJ,CAAC;QACJ,CAAC,CAAC,EACF,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE;YACjB,OAAO,CAAC,IAAI,CAAC,yCAAyC,EAAE,qBAAqB,EAAE,GAAG,CAAC,CAAC;YACpF,2CAA2C;YAC3C,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CACH,CAAC;QAEF,sCAAsC;QACtC,MAAM,YAAY,GAAG,cAAc,CAAC,SAAS,EAAE,CAAC;QAEhD,wCAAwC;QACxC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;QACtC,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;;;;;;;;;OAWG;IACI,qBAAqB,CAAC,EAAU;QACrC,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,EAAE,EAAE;YACnC,IAAI,CAAC;gBACH,IAAI,CAAC,cAAc;oBACjB,6BAA6B;qBAC5B,cAAc,CAAC,EAAE,CAAC;oBACnB,sDAAsD;qBACrD,IAAI;gBACH,mCAAmC;gBACnC,MAAM,CAAC,CAAC,IAAI,EAAuB,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;gBAC7C,qDAAqD;gBACrD,SAAS,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAClD;qBACA,SAAS,CAAC,UAAU,CAAC,CAAC;YAC3B,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,gDAAgD;gBAChD,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACxB,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;OAWG;IACI,0BAA0B,CAAC,EAAU;QAC1C,oCAAoC;QACpC,OAAO,aAAa,CAAC,IAAI,CAAC,qBAAqB,CAAC,EAAE,CAAC,CAAC,CAAC;IACvD,CAAC;IAED;;;;;;;;;;;;;;;OAeG;IACI,iBAAiB,CACtB,OAAU,EACV,GAA+C;QAE/C,sCAAsC;QACtC,MAAM,MAAM,GAAG,IAAI,OAAO,EAAE,CAAC;QAE7B,oDAAoD;QACpD,MAAM,QAAQ,GAAG,IAAI,OAAO,EAAK,CAAC;QAElC,wFAAwF;QACxF,MAAM,KAAK,GAAG,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,IAAI;QACtD,gDAAgD;QAChD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC5B,uBAAuB;QACvB,SAAS,CAAC,MAAM,CAAC;QACjB,0CAA0C;QAC1C,QAAQ,CAAC,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,CAAC;QACnC,wDAAwD;QACxD,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE;YACjB,uBAAuB;YACvB,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YACpB,2BAA2B;YAC3B,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CACH,CAAC;QAEF,6BAA6B;QAC7B,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAyD,CAAC,CAAC;QAEnF,uDAAuD;QACvD,OAAO,QAAQ,CAAC,IAAI;QAClB,6DAA6D;QAC7D,QAAQ,CAAC,GAAG,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAClC,CAAC;IACJ,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAwCG;IACO,kBAAkB,CAC1B,OAAU,EACV,GAA+C;QAE/C,OAAO,IAAI,UAAU,CAAC,CAAC,UAAU,EAAE,EAAE;YACnC,4DAA4D;YAC5D,IAAI,OAAO,KAAK,IAAI,CAAC,cAAc,EAAE,CAAC;gBACpC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzB,OAAO,UAAU,CAAC,QAAQ,EAAE,CAAC;YAC/B,CAAC;YACD,uDAAuD;YACvD,IAAI,OAAO,IAAI,GAAG,EAAE,QAAQ,IAAI,CAAC,IAAI,CAAC,eAAe,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC/D,2CAA2C;gBAC3C,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;oBACjB,sFAAsF;oBACtF,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,8BAA8B,EAAE;wBACzD,MAAM,EAAE,IAAI;wBACZ,MAAM,EAAE,EAAE,OAAO,EAAE;qBACpB,CAAC,CAAC;oBACH,0BAA0B;oBAC1B,OAAO,UAAU,CAAC,KAAK,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC,CAAC;gBACxE,CAAC;gBACD,kFAAkF;gBAClF,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;oBAChB,+EAA+E;oBAC/E,oEAAoE;oBACpE,OAAO,EAAE,CAAC,OAAO,CAAC;yBACf,IAAI;oBACH,+DAA+D;oBAC/D,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;wBAC1B,+CAA+C;wBAC/C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,qBAAqB,EAAE;4BACpE,MAAM,EAAE,IAAI;4BACZ,UAAU,EAAE,IAAI;4BAChB,MAAM,EAAE,EAAE,OAAO,EAAE;yBACpB,CAAC,CAAC;wBACH,8CAA8C;wBAC9C,IAAI,KAAK,EAAE,QAAQ,EAAE,CAAC;4BACpB,MAAM,KAAK,CAAC,mCAAmC,CAAC,CAAC;wBACnD,CAAC;wBACD,OAAO,OAAO,CAAC;oBACjB,CAAC,CAAC;oBACF,kBAAkB;oBAClB,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;oBACpB,6EAA6E;oBAC7E,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,IAAI,CAC/B,GAAG,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;wBACjB,OAAO;wBACP,QAAQ;qBACT,CAAC,CAAC,CACJ,CACF;oBACD,mDAAmD;oBACnD,SAAS,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE;wBACxC,+CAA+C;wBAC/C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,sBAAsB,EAAE;4BACrE,MAAM,EAAE,IAAI;4BACZ,UAAU,EAAE,IAAI;4BAChB,MAAM,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;yBAC9B,CAAC,CAAC;wBACH,8CAA8C;wBAC9C,IAAI,KAAK,EAAE,QAAQ,EAAE,CAAC;4BACpB,MAAM,KAAK,CAAC,mCAAmC,CAAC,CAAC;wBACnD,CAAC;wBACD,OAAO,QAAQ,CAAC;oBAClB,CAAC,CAAC;oBACF,0EAA0E;oBAC1E,SAAS,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,kBAAkB,CAAC,QAAwB,CAAC,CAAC,CAC3E;yBACA,SAAS,CAAC,UAAU,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC;YAED,iCAAiC;YACjC,OAAO,EAAE,CAAC,OAAO,CAAC;iBACf,IAAI;YACH,wDAAwD;YACxD,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;gBAC1B,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,MAAM,EAAE,aAAa,CAAC,wBAAwB,EAAE;oBACvE,MAAM,EAAE,IAAI;oBACZ,SAAS,EAAE,IAAI;oBACf,UAAU,EAAE,IAAI;oBAChB,MAAM,EAAE,EAAE,OAAO,EAAE,OAAO,EAAE;iBAC7B,CAAC,CAAC;gBAEH,8CAA8C;gBAC9C,IAAI,KAAK,EAAE,QAAQ,EAAE,CAAC;oBACpB,MAAM,KAAK,CAAC,+BAA+B,CAAC,CAAC;gBAC/C,CAAC;gBAED,OAAO,OAAO,CAAC;YACjB,CAAC,CAAC,CACH;iBACA,SAAS,CAAC,CAAC,OAAO,EAAE,EAAE;gBACrB,6BAA6B;gBAC7B,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBACzB,yCAAyC;gBACzC,UAAU,CAAC,QAAQ,EAAE,CAAC;YACxB,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACL,CAAC;IAED;;;;;;;;;;;OAWG;IACI,KAAK,CAAC,sBAAsB,CACjC,OAAU,EACV,GAA+C;QAE/C,OAAO,aAAa,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED;;;;;;;;;;;OAWG;IACI,YAAY,CAAC,MAAc;QAChC,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW;aAC5B,KAAK;QACJ,4BAA4B;QAC5B,IAAI,CAAC,mBAAmB,CAAC;YACvB,MAAM;YACN,IAAI,EAAE,IAAI,CAAC,YAAY;SACxB,CAA2B,CAC7B;YACD,4EAA4E;aAC3E,IAAI,CACH,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE;YACjB,4EAA4E;YAC5E,IAAI,GAAG,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACpC,MAAM,GAAG,CAAC,KAAK,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC,CAAC,EACF,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CACpB,CAAC;QAEJ,oCAAoC;QACpC,OAAO,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC;IAC9E,CAAC;IAED;;;;;;;OAOG;IACI,iBAAiB,CAAC,MAAc;QACrC,OAAO,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAED;;;;;OAKG;IACI,eAAe,CAAC,IAA0C;QAC/D,0EAA0E;QAC1E,IAAI,CAAC,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC;QACpC,4DAA4D;QAC5D,OAAO,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;IAC5F,CAAC;IAED;;;;;;;;;;;;;OAaG;IACI,cAAc,CACnB,IAA0C;QAE1C,4HAA4H;QAC5H,OAAO,IAAI,CAAC,eAAe,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI;QAC7E,mCAAmC;QACnC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;QACR,4EAA4E;QAC5E,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAC/C,EACD,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE;YACb,8DAA8D;YAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC;YAE7B,uCAAuC;YACvC,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,MAAM,KAAK,CAAC,2BAA2B,CAAC,CAAC;YAC3C,CAAC;YAED,6CAA6C;YAC7C,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC,iCAAiC,EAAE,yBAAyB,EAAE,MAAM,CAAC,CAAC;YACrF,CAAC;YAED,mCAAmC;YACnC,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACI,mBAAmB,CACxB,IAA0C;QAE1C,OAAO,aAAa,CAAC,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC;IAClD,CAAC;IAED;;;;;;;;;;OAUG;IACI,eAAe,CACpB,IAA8B;QAE9B,+CAA+C;QAC/C,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YAC1B,OAAO,UAAU,CAAC,GAAG,EAAE,CACrB,KAAK,CAAC,oFAAoF,CAAC,CAC5F,CAAC;QACJ,CAAC;QAED,gCAAgC;QAChC,OAAO,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAC1C,GAAG,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,CAAC,KAAK,CAAC,EACzB,UAAU,CAAC,CAAC,GAAG,EAAE,EAAE;YACjB,gEAAgE;YAChE,IAAI,GAAG,CAAC,KAAK,EAAE,CAAC;gBACd,MAAM,GAAG,CAAC,KAAK,CAAC;YAClB,CAAC;YACD,MAAM,GAAG,CAAC;QACZ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC;IAED;;;;;;;OAOG;IACI,oBAAoB,CACzB,IAA8B;QAE9B,OAAO,aAAa,CAAC,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC,CAAC;IACnD,CAAC;IAED;;;;;OAKG;IACI,mBAAmB;QACxB,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAED;;;;;OAKG;IACH,OAAO;QACL,IAAI,CAAC,cAAc,CAAC,WAAW,EAAE,CAAC;QAClC,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,CAAC;IAChC,CAAC;CACF;AAED,eAAe,eAAe,CAAC"}