@equinor/fusion-framework-module-context 8.0.0 → 8.0.2
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.
- package/CHANGELOG.md +32 -0
- package/README.md +70 -0
- package/dist/esm/ContextConfigBuilder.js +17 -6
- package/dist/esm/ContextConfigBuilder.js.map +1 -1
- package/dist/esm/ContextProvider.js +71 -15
- package/dist/esm/ContextProvider.js.map +1 -1
- package/dist/esm/client/ContextClient.js +13 -3
- package/dist/esm/client/ContextClient.js.map +1 -1
- package/dist/esm/configurator.js +10 -11
- package/dist/esm/configurator.js.map +1 -1
- package/dist/esm/{errors.js → errors/FusionContextSearchError.js} +3 -1
- package/dist/esm/errors/FusionContextSearchError.js.map +1 -0
- package/dist/esm/errors/index.js +2 -0
- package/dist/esm/errors/index.js.map +1 -0
- package/dist/esm/get-context-selector.js +14 -0
- package/dist/esm/get-context-selector.js.map +1 -0
- package/dist/esm/parse-context-item.js +31 -0
- package/dist/esm/parse-context-item.js.map +1 -0
- package/dist/esm/query-context-selector.js +12 -0
- package/dist/esm/query-context-selector.js.map +1 -0
- package/dist/esm/related-context-selector.js +12 -0
- package/dist/esm/related-context-selector.js.map +1 -0
- package/dist/esm/utils/extract-context-id-from-path.js +35 -0
- package/dist/esm/utils/extract-context-id-from-path.js.map +1 -0
- package/dist/esm/utils/resolve-context-from-path.js +11 -22
- package/dist/esm/utils/resolve-context-from-path.js.map +1 -1
- package/dist/esm/utils/resolve-initial-context.js +11 -15
- package/dist/esm/utils/resolve-initial-context.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/ContextConfigBuilder.d.ts +16 -1
- package/dist/types/ContextProvider.d.ts +45 -3
- package/dist/types/client/ContextClient.d.ts +8 -1
- package/dist/types/{errors.d.ts → errors/FusionContextSearchError.d.ts} +2 -0
- package/dist/types/errors/index.d.ts +1 -0
- package/dist/types/get-context-selector.d.ts +9 -0
- package/dist/types/parse-context-item.d.ts +8 -0
- package/dist/types/query-context-selector.d.ts +7 -0
- package/dist/types/related-context-selector.d.ts +7 -0
- package/dist/types/types.d.ts +1 -1
- package/dist/types/utils/extract-context-id-from-path.d.ts +22 -0
- package/dist/types/utils/resolve-context-from-path.d.ts +9 -16
- package/dist/types/utils/resolve-initial-context.d.ts +3 -6
- package/dist/types/version.d.ts +1 -1
- package/package.json +15 -11
- package/src/ContextConfigBuilder.ts +32 -7
- package/src/ContextProvider.ts +86 -21
- package/src/client/ContextClient.ts +13 -3
- package/src/configurator.ts +16 -12
- package/src/{errors.ts → errors/FusionContextSearchError.ts} +2 -0
- package/src/errors/index.ts +1 -0
- package/src/get-context-selector.ts +18 -0
- package/src/parse-context-item.ts +39 -0
- package/src/query-context-selector.ts +15 -0
- package/src/related-context-selector.ts +15 -0
- package/src/types.ts +1 -1
- package/src/utils/extract-context-id-from-path.ts +39 -0
- package/src/utils/resolve-context-from-path.ts +21 -28
- package/src/utils/resolve-initial-context.ts +11 -23
- package/src/version.ts +1 -1
- package/dist/esm/errors.js.map +0 -1
- package/dist/esm/selectors.js +0 -58
- package/dist/esm/selectors.js.map +0 -1
- package/dist/types/selectors.d.ts +0 -19
- package/src/selectors.ts +0 -70
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,37 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
+
## 8.0.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 1b9d026: Move URL-based initial context resolution to the context-navigation plugin.
|
|
8
|
+
|
|
9
|
+
The context module's `resolveInitialContext` no longer resolves context from the URL path — that responsibility has been moved to `@equinor/fusion-framework-plugin-context-navigation` at the portal level. This decouples URL concerns from the context module.
|
|
10
|
+
|
|
11
|
+
**Changes:**
|
|
12
|
+
|
|
13
|
+
- `resolveInitialContext` no longer accepts the `options` parameter with path resolution config.
|
|
14
|
+
- URL-based initial context resolution is now handled by the context-navigation plugin.
|
|
15
|
+
- Added `version` property to `IContextProvider` interface (non-breaking).
|
|
16
|
+
- Added explanatory `@ts-ignore` directives on compatibility assignments to avoid a breaking API signature change in this release.
|
|
17
|
+
|
|
18
|
+
**Migration:** Apps do not need to change their code. Portal hosts should enable the `@equinor/fusion-framework-plugin-context-navigation` plugin to restore URL-based context resolution behavior.
|
|
19
|
+
|
|
20
|
+
## 8.0.1
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
23
|
+
|
|
24
|
+
- 80c3e4a: Internal: resolve `noExplicitAny`/`noConfusingVoidType` Biome warnings in `ContextConfigBuilder` and `ContextModuleConfigurator`'s `resolveInitialContext` callback type, using explanatory `biome-ignore` comments for load-bearing `any`/`void` usages. No public API or behavior change.
|
|
25
|
+
- 80c3e4a: Internal: move `FusionContextSearchError` into `src/errors/FusionContextSearchError.ts` with an `errors/index.ts` barrel, resolving a `filename-convention` lint violation; no public API changes.
|
|
26
|
+
- 80c3e4a: Internal: add a required fusion-lint intent comment explaining an `as unknown as T` cast in `ContextProvider`. No behavior change.
|
|
27
|
+
- 80c3e4a: Resolve fusion-lint warnings: add missing TSDoc (constructors, getters, setters, overload implementations, `@throws`/`@template` tags), add intent comments above control-flow and RxJS/iterator chains, and split multi-export files to satisfy `single-export-per-file`.
|
|
28
|
+
- Split `selectors.ts` into `query-context-selector.ts` and `related-context-selector.ts` (re-exported from `selectors.ts`), and extracted `parseContextItem` into `parse-context-item.ts`.
|
|
29
|
+
- Split `extractContextIdFromPath` out of `utils/resolve-context-from-path.ts` into `utils/extract-context-id-from-path.ts` (re-exported from the original file).
|
|
30
|
+
- Deferred work items are now tracked as GitHub issues #5115–#5122.
|
|
31
|
+
|
|
32
|
+
- 80c3e4a: Internal: renamed 45 source files across these packages to comply with the `filename-convention` lint rule (e.g. `AIConfigurator.ts` → `AiConfigurator.ts`, `BookmarkProvider.actions.ts` → `bookmark-actions.ts`, `errors/app-build-error.ts` → `errors/AppBuildError.ts`, `plugins/api/plugin.ts` → `plugins/api/ApiPlugin.ts`, `errors.ts` → `UnsupportedApiVersion.ts`, etc.). Also added `enable-signalr.ts` to the `filename-convention` exclude list since the suggested rename would incorrectly split the "SignalR" brand name. No public API changes.
|
|
33
|
+
- 80c3e4a: Internal: added missing intent comments ahead of non-obvious control flow, RxJS `.pipe()` chains, iterator calls, and multi-source object merges to comply with the `require-intent-comment` and `require-tsdoc` lint rules. Also removed dead duplicate files left over from an earlier refactor in `navigation` (`events.ts`, `navigated-event.ts`, `history.flows.ts` — all fully superseded by their split replacements) and renamed `bookmarks/schemas.ts` to `bookmarks/bookmark.schemas.ts` in `services` to match the `*.schemas.ts` filename convention. No public API changes.
|
|
34
|
+
|
|
3
35
|
## 8.0.0
|
|
4
36
|
|
|
5
37
|
### Major Changes
|
package/README.md
CHANGED
|
@@ -127,6 +127,76 @@ enableContext(configurator, (builder) => {
|
|
|
127
127
|
| `setResolveInitialContext(fn)` | Override initial context resolution (default uses `extractContextIdFromPath` → `resolveContextFromPath`) |
|
|
128
128
|
| `setContextClient(client)` | Custom get/query/related clients |
|
|
129
129
|
|
|
130
|
+
## Context Routing in the URL
|
|
131
|
+
|
|
132
|
+
The portal keeps the active context synchronized with the browser URL automatically
|
|
133
|
+
via the `@equinor/fusion-framework-plugin-context-navigation` plugin. As an app
|
|
134
|
+
developer, you control **how** context appears in your URL by declaring a routing
|
|
135
|
+
strategy in your app manifest.
|
|
136
|
+
|
|
137
|
+
### Declare a routing strategy
|
|
138
|
+
|
|
139
|
+
Set `contextRouting` in your manifest's `build.options`:
|
|
140
|
+
|
|
141
|
+
```jsonc
|
|
142
|
+
// app.manifest.config.ts
|
|
143
|
+
{
|
|
144
|
+
"build": {
|
|
145
|
+
"options": {
|
|
146
|
+
"contextRouting": "query"
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
| Value | URL Shape | When to Use |
|
|
153
|
+
|---|---|---|
|
|
154
|
+
| `'path'` (or omitted) | `/apps/{appKey}/{contextId}/sub-route` | Default — simple apps without complex path routing |
|
|
155
|
+
| `'query'` | `/apps/{appKey}/route?$contextId={id}` | Apps with nested routes that would conflict with a context path segment |
|
|
156
|
+
|
|
157
|
+
Apps with custom URL shapes should omit `contextRouting` and register custom hooks instead (see below).
|
|
158
|
+
|
|
159
|
+
> [!NOTE]
|
|
160
|
+
> When `contextRouting` is not set (or set to `null`), the portal defaults to the
|
|
161
|
+
> **path adapter** which encodes context as a path segment after the app key.
|
|
162
|
+
> If your app also registers custom hooks (`setContextPathExtractor` /
|
|
163
|
+
> `setContextPathGenerator`), the custom adapter takes priority over the path
|
|
164
|
+
> adapter regardless of the `contextRouting` value.
|
|
165
|
+
|
|
166
|
+
### Custom URL shapes
|
|
167
|
+
|
|
168
|
+
If your app uses a non-standard URL layout for context (e.g. `/route-a/{contextId}`),
|
|
169
|
+
register custom hooks instead of (or in addition to) declaring `contextRouting`:
|
|
170
|
+
|
|
171
|
+
```ts
|
|
172
|
+
enableContext(configurator, (builder) => {
|
|
173
|
+
builder.setContextType(['ProjectMaster']);
|
|
174
|
+
|
|
175
|
+
// Tell the portal how to find the context id in your URL
|
|
176
|
+
builder.setContextPathExtractor((path) => {
|
|
177
|
+
const segments = path.split('/').filter(Boolean);
|
|
178
|
+
return segments[1]; // e.g. /route-a/{contextId}
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
// Tell the portal how to build a URL with context
|
|
182
|
+
builder.setContextPathGenerator((context, path) => {
|
|
183
|
+
const segments = path.split('/').filter(Boolean);
|
|
184
|
+
const route = segments[0] ?? '';
|
|
185
|
+
return `/${route}/${context.id}`;
|
|
186
|
+
});
|
|
187
|
+
});
|
|
188
|
+
```
|
|
189
|
+
|
|
190
|
+
When these hooks are registered, the portal's custom adapter uses them automatically —
|
|
191
|
+
no `contextRouting` declaration needed in the manifest.
|
|
192
|
+
|
|
193
|
+
### How it works (for reference)
|
|
194
|
+
|
|
195
|
+
The portal's context-navigation plugin reads `contextRouting` from your app's
|
|
196
|
+
manifest at runtime and selects the appropriate URL adapter. You don't install
|
|
197
|
+
or configure the plugin yourself — the portal handles it. Your app only needs to
|
|
198
|
+
declare its preference.
|
|
199
|
+
|
|
130
200
|
## Events
|
|
131
201
|
|
|
132
202
|
The context module dispatches events via the `@equinor/fusion-framework-module-event` system. All events are scoped to the `ContextProvider` source.
|
|
@@ -21,7 +21,7 @@
|
|
|
21
21
|
* - The builder pattern allows chaining configuration methods for clarity and convenience.
|
|
22
22
|
* - The `requireInstance` method enables asynchronous retrieval of module instances by name.
|
|
23
23
|
*
|
|
24
|
-
* @todo - this should extend the BaseConfigBuilder
|
|
24
|
+
* @todo(#5120) - this should extend the BaseConfigBuilder
|
|
25
25
|
*
|
|
26
26
|
* @see ContextModuleConfig
|
|
27
27
|
* @see ModuleInitializerArgs
|
|
@@ -29,10 +29,20 @@
|
|
|
29
29
|
export class ContextConfigBuilder {
|
|
30
30
|
config;
|
|
31
31
|
#init;
|
|
32
|
+
/**
|
|
33
|
+
* Creates a new `ContextConfigBuilder`.
|
|
34
|
+
* @param init - Module initializer arguments used to resolve module instances.
|
|
35
|
+
* @param config - The partial context module config to build upon.
|
|
36
|
+
*/
|
|
32
37
|
constructor(init, config = {}) {
|
|
33
38
|
this.config = config;
|
|
34
39
|
this.#init = init;
|
|
35
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Requires a module instance by key or name.
|
|
43
|
+
* @param module - The key or name of the module to resolve.
|
|
44
|
+
* @returns A promise that resolves to the requested module instance.
|
|
45
|
+
*/
|
|
36
46
|
requireInstance(module) {
|
|
37
47
|
return this.#init.requireInstance(module);
|
|
38
48
|
}
|
|
@@ -124,7 +134,7 @@ export class ContextConfigBuilder {
|
|
|
124
134
|
* @param expire - Optional. The expiration time (in milliseconds) for cached query results. Defaults to 1 minute.
|
|
125
135
|
*/
|
|
126
136
|
setContextClient(client, expire = 1 * 60 * 1000) {
|
|
127
|
-
|
|
137
|
+
const clientConfig = {
|
|
128
138
|
get: typeof client.get === 'function'
|
|
129
139
|
? {
|
|
130
140
|
key: ({ id }) => id,
|
|
@@ -136,7 +146,7 @@ export class ContextConfigBuilder {
|
|
|
136
146
|
: client.get,
|
|
137
147
|
query: typeof client.query === 'function'
|
|
138
148
|
? {
|
|
139
|
-
// TODO - might cast to checksum
|
|
149
|
+
// TODO(#5118) - might cast to checksum
|
|
140
150
|
key: (args) => JSON.stringify(args),
|
|
141
151
|
client: {
|
|
142
152
|
fn: client.query,
|
|
@@ -145,12 +155,13 @@ export class ContextConfigBuilder {
|
|
|
145
155
|
}
|
|
146
156
|
: client.query,
|
|
147
157
|
};
|
|
158
|
+
this.config.client = clientConfig;
|
|
159
|
+
// only override the related-context client config if one was provided
|
|
148
160
|
if (client.related) {
|
|
149
|
-
|
|
150
|
-
this.config.client.related =
|
|
161
|
+
clientConfig.related =
|
|
151
162
|
typeof client.related === 'function'
|
|
152
163
|
? {
|
|
153
|
-
// TODO - might cast to checksum
|
|
164
|
+
// TODO(#5118) - might cast to checksum
|
|
154
165
|
key: (args) => JSON.stringify(args),
|
|
155
166
|
client: {
|
|
156
167
|
fn: client.related,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextConfigBuilder.js","sourceRoot":"","sources":["../../src/ContextConfigBuilder.ts"],"names":[],"mappings":"AA+BA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,MAAM,OAAO,oBAAoB;
|
|
1
|
+
{"version":3,"file":"ContextConfigBuilder.js","sourceRoot":"","sources":["../../src/ContextConfigBuilder.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,29 +44,59 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
44
44
|
#contextFilter;
|
|
45
45
|
#contextParameterFn;
|
|
46
46
|
#contextQueue = new Subject();
|
|
47
|
+
/**
|
|
48
|
+
* The underlying context client used to resolve and hold the current context item.
|
|
49
|
+
* @returns The internal {@link ContextClient} instance.
|
|
50
|
+
*/
|
|
47
51
|
get contextClient() {
|
|
48
52
|
return this.#contextClient;
|
|
49
53
|
}
|
|
54
|
+
/**
|
|
55
|
+
* The query client used to search for context items.
|
|
56
|
+
* @returns The internal `Query` instance used by {@link queryContext}.
|
|
57
|
+
*/
|
|
50
58
|
get queryClient() {
|
|
51
59
|
return this.#contextQuery;
|
|
52
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Observable stream emitting the current context item.
|
|
63
|
+
* @returns Observable that emits the current `ContextItem`, `null`, or `undefined`.
|
|
64
|
+
*/
|
|
53
65
|
get currentContext$() {
|
|
54
66
|
return this.#contextClient.currentContext$;
|
|
55
67
|
}
|
|
68
|
+
/**
|
|
69
|
+
* Snapshot of the current context item.
|
|
70
|
+
* @returns The current `ContextItem`, or `null`/`undefined` if not set.
|
|
71
|
+
*/
|
|
56
72
|
get currentContext() {
|
|
57
73
|
return this.#contextClient.currentContext;
|
|
58
74
|
}
|
|
59
|
-
/**
|
|
75
|
+
/**
|
|
76
|
+
* Sets the current context item.
|
|
77
|
+
* @deprecated do not use, will be removed
|
|
78
|
+
* @param context - The context item to set as current. Must not be `undefined`.
|
|
79
|
+
* @throws Error if `context` is `undefined`.
|
|
80
|
+
*/
|
|
60
81
|
set currentContext(context) {
|
|
61
82
|
console.warn('@deprecated', 'ContextProvider.currentContext', 'use setCurrentContextById|setCurrentContext|clearCurrentContext');
|
|
83
|
+
// undefined is reserved to mean "not yet initialized", so it cannot be set explicitly
|
|
62
84
|
if (context === undefined) {
|
|
63
85
|
throw Error('not allowed to set current context as undefined undefined!');
|
|
64
86
|
}
|
|
65
87
|
this.setCurrentContextAsync(context);
|
|
66
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Creates a new instance of `ContextProvider`.
|
|
91
|
+
* @param args - Constructor arguments.
|
|
92
|
+
* @param args.config - The context module configuration.
|
|
93
|
+
* @param args.event - Optional event module instance for dispatching context change events.
|
|
94
|
+
* @param args.parentContext - Optional parent context provider. Deprecated, use {@link connectParentContext}.
|
|
95
|
+
*/
|
|
67
96
|
constructor(args) {
|
|
68
97
|
const { config, event } = args;
|
|
69
98
|
super({ version, config });
|
|
99
|
+
// warn about deprecated parentContext constructor arg
|
|
70
100
|
if (args.parentContext) {
|
|
71
101
|
console.warn('@deprecated', 'parentContext as arg is deprecated, use ContextProvider.connectParentContext');
|
|
72
102
|
}
|
|
@@ -75,15 +105,18 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
75
105
|
if (config.resolveContext) {
|
|
76
106
|
this.resolveContext = config.resolveContext?.bind(this);
|
|
77
107
|
}
|
|
108
|
+
// override validateContext if configured
|
|
78
109
|
if (config.validateContext) {
|
|
79
110
|
this.validateContext = config.validateContext?.bind(this);
|
|
80
111
|
}
|
|
112
|
+
// override extractContextIdFromPath if configured
|
|
81
113
|
if (config.extractContextIdFromPath) {
|
|
82
|
-
// @ts-
|
|
114
|
+
// @ts-expect-error - this is to avoid breaking change, the signature will be updated in future major release
|
|
83
115
|
this.extractContextIdFromPath = config.extractContextIdFromPath;
|
|
84
116
|
}
|
|
117
|
+
// override generatePathFromContext if configured
|
|
85
118
|
if (config.generatePathFromContext) {
|
|
86
|
-
// @ts-
|
|
119
|
+
// @ts-expect-error - this is to avoid breaking change, the signature will be updated in future major release
|
|
87
120
|
this.generatePathFromContext = config.generatePathFromContext;
|
|
88
121
|
}
|
|
89
122
|
this.#contextType = config.contextType;
|
|
@@ -91,6 +124,7 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
91
124
|
// create clients
|
|
92
125
|
this.#contextClient = new ContextClient(config.client.get);
|
|
93
126
|
this.#contextQuery = new Query(config.client.query);
|
|
127
|
+
// only create the related-context query when the config provides one
|
|
94
128
|
if (config.client.related) {
|
|
95
129
|
this.#contextRelated = new Query(config.client.related);
|
|
96
130
|
}
|
|
@@ -107,9 +141,8 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
107
141
|
this.#subscriptions.add(
|
|
108
142
|
// observe current context changes
|
|
109
143
|
this.currentContext$
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
pairwise())
|
|
144
|
+
// emit previous and next context together for change comparisons
|
|
145
|
+
.pipe(pairwise())
|
|
113
146
|
.subscribe(([previous, next]) => {
|
|
114
147
|
this.#event?.dispatchEvent('onCurrentContextChanged', {
|
|
115
148
|
source: this,
|
|
@@ -153,11 +186,12 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
153
186
|
* @returns A `Subscription` object representing the connection to the parent context.
|
|
154
187
|
*/
|
|
155
188
|
connectParentContext(provider, opt) {
|
|
189
|
+
// build a stream of validated context changes from the parent provider
|
|
156
190
|
const parentContext$ = provider.currentContext$.pipe(
|
|
157
191
|
// do not set context if parent has not initialized
|
|
158
192
|
filter((x) => x !== undefined), filter((next, index) => {
|
|
159
193
|
// skip first item if opt.skipFirst is true
|
|
160
|
-
// TODO: this is a bit hacky, should be handled in a better way
|
|
194
|
+
// TODO(#5121): this is a bit hacky, should be handled in a better way
|
|
161
195
|
if (opt?.skipFirst && index <= 1) {
|
|
162
196
|
console.debug('ContextProvider::connectParentContext', 'skipping first item', next);
|
|
163
197
|
return false;
|
|
@@ -165,8 +199,8 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
165
199
|
// only set context if it has changed
|
|
166
200
|
return this.currentContext?.id !== next?.id;
|
|
167
201
|
}), switchMap(async (next) => {
|
|
202
|
+
// if parent context is null, just return
|
|
168
203
|
if (!next) {
|
|
169
|
-
// if parent context is null, just return
|
|
170
204
|
return { next };
|
|
171
205
|
}
|
|
172
206
|
// notify event observers that parent context is about to change and await for cancelation
|
|
@@ -180,14 +214,16 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
180
214
|
// filter out canceled context changes
|
|
181
215
|
filter((x) => !x.canceled), switchMap(({ next }) => {
|
|
182
216
|
// set current context with validation and resolution
|
|
183
|
-
return this.setCurrentContext(next, {
|
|
217
|
+
return (this.setCurrentContext(next, {
|
|
184
218
|
validate: true,
|
|
185
219
|
resolve: true,
|
|
186
|
-
})
|
|
220
|
+
})
|
|
221
|
+
// swallow errors so a failed context change doesn't break the parent subscription
|
|
222
|
+
.pipe(catchError((err) => {
|
|
187
223
|
console.warn('ContextProvider::onParentContextChanged', 'setCurrentContext', err);
|
|
188
224
|
// do not emit any value if an error occurs
|
|
189
225
|
return EMPTY;
|
|
190
|
-
}));
|
|
226
|
+
})));
|
|
191
227
|
}), catchError((err) => {
|
|
192
228
|
console.warn('ContextProvider::onParentContextChanged', 'unhandled exception', err);
|
|
193
229
|
// do not emit any value if an error occurs
|
|
@@ -217,6 +253,7 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
217
253
|
this.#contextClient
|
|
218
254
|
// resolve context item by id
|
|
219
255
|
.resolveContext(id)
|
|
256
|
+
// filter out invalid items and set as current context
|
|
220
257
|
.pipe(
|
|
221
258
|
// filter out invalid context items
|
|
222
259
|
filter((item) => !!item),
|
|
@@ -256,12 +293,18 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
256
293
|
* If the observable is subscribe, unsubscribing __WILL__ abort the task and remove it from queue
|
|
257
294
|
*
|
|
258
295
|
* @param context context item which would be queue to set as current
|
|
296
|
+
* @param opt Optional settings.
|
|
297
|
+
* @param opt.validate Whether to validate the context item before setting it.
|
|
298
|
+
* @param opt.resolve Whether to attempt to resolve the context item if validation fails.
|
|
299
|
+
* @template T The type of the context item, which extends `ContextItem<Record<string, unknown>>` or can be `null`.
|
|
300
|
+
* @returns An observable that emits the context item once the queued task completes.
|
|
259
301
|
*/
|
|
260
302
|
setCurrentContext(context, opt) {
|
|
261
303
|
// signal for aborting the queue entry
|
|
262
304
|
const abort$ = new Subject();
|
|
263
305
|
// wrapper for returning an observable to the caller
|
|
264
306
|
const subject$ = new Subject();
|
|
307
|
+
// run the actual context-setting logic and relay results/errors to the caller's subject
|
|
265
308
|
const task$ = this._setCurrentContext(context, opt).pipe(
|
|
266
309
|
// send context item which was set to the caller
|
|
267
310
|
tap((x) => subject$.next(x)),
|
|
@@ -278,6 +321,7 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
278
321
|
}));
|
|
279
322
|
// add task to internal queue
|
|
280
323
|
this.#contextQueue.next(task$);
|
|
324
|
+
// tear down the queued task if the caller unsubscribes
|
|
281
325
|
return subject$.pipe(
|
|
282
326
|
// if caller subscribes, unsubscribe should abort queue entry
|
|
283
327
|
finalize(() => abort$.next(true)));
|
|
@@ -311,7 +355,7 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
311
355
|
* - Emit the context and complete the observable.
|
|
312
356
|
*
|
|
313
357
|
* @protected
|
|
314
|
-
* @
|
|
358
|
+
* @template T - The type of the context item, which extends `ContextItem<Record<string, unknown>>` or can be `null`.
|
|
315
359
|
* @param context - The new context to set.
|
|
316
360
|
* @param opt - Optional settings:
|
|
317
361
|
* - `validate`: Whether to validate the context before setting.
|
|
@@ -342,7 +386,10 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
342
386
|
// emit error and complete
|
|
343
387
|
return subscriber.error(Error('failed to validate provided context'));
|
|
344
388
|
}
|
|
389
|
+
// if resolve is enabled, attempt to resolve the invalid context before setting it
|
|
345
390
|
if (opt.resolve) {
|
|
391
|
+
// the recursive `_setCurrentContext` call below is re-entered with the already
|
|
392
|
+
// validated/resolved context, so the generic `T` cast is safe here.
|
|
346
393
|
return of(context)
|
|
347
394
|
.pipe(
|
|
348
395
|
// notify event observers that context is about to get resolved
|
|
@@ -360,7 +407,9 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
360
407
|
return context;
|
|
361
408
|
}),
|
|
362
409
|
// resolve context
|
|
363
|
-
switchMap((context) =>
|
|
410
|
+
switchMap((context) =>
|
|
411
|
+
// Pair the resolved context alongside the original for downstream consumers.
|
|
412
|
+
this.resolveContext(context).pipe(map((resolved) => ({
|
|
364
413
|
context,
|
|
365
414
|
resolved,
|
|
366
415
|
})))),
|
|
@@ -413,7 +462,7 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
413
462
|
*
|
|
414
463
|
* @see {@link setCurrentContext} for more details.
|
|
415
464
|
*
|
|
416
|
-
* @
|
|
465
|
+
* @template T - The type of the context item, which extends `ContextItem<Record<string, unknown>>` or can be `null`.
|
|
417
466
|
* @param context - The context item to set as the current context, or `null` to clear it.
|
|
418
467
|
* @param opt - Optional settings for context handling.
|
|
419
468
|
* @param opt.validate - If `true`, validates the context before setting it.
|
|
@@ -433,6 +482,7 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
433
482
|
*
|
|
434
483
|
* @param search - The search string to filter context items.
|
|
435
484
|
* @returns An Observable that emits an array of `ContextItem` objects matching the search criteria.
|
|
485
|
+
* @throws Re-throws the underlying cause of a `QueryClientError`, otherwise re-throws the original error.
|
|
436
486
|
*/
|
|
437
487
|
queryContext(search) {
|
|
438
488
|
const query$ = this.queryClient
|
|
@@ -442,6 +492,7 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
442
492
|
search,
|
|
443
493
|
type: this.#contextType,
|
|
444
494
|
}))
|
|
495
|
+
// unwrap query-client errors and expose the underlying cause to subscribers
|
|
445
496
|
.pipe(catchError((err) => {
|
|
446
497
|
// if query client throws a QueryClientError, extract the cause and throw it
|
|
447
498
|
if (err.name === 'QueryClientError') {
|
|
@@ -470,8 +521,10 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
470
521
|
* @returns `true` if the context type is not set or if the item's type ID matches one of the allowed types (case-insensitive); otherwise, `false`.
|
|
471
522
|
*/
|
|
472
523
|
validateContext(item) {
|
|
524
|
+
// no context type configured means every context item is considered valid
|
|
473
525
|
if (!this.#contextType)
|
|
474
526
|
return true;
|
|
527
|
+
// normalize allowed types for a case-insensitive comparison
|
|
475
528
|
return this.#contextType.map((x) => x.toLowerCase()).includes(item.type.id.toLowerCase());
|
|
476
529
|
}
|
|
477
530
|
/**
|
|
@@ -492,7 +545,9 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
492
545
|
// request related context items for the given context item with the same context type which the provider is configured with
|
|
493
546
|
return this.relatedContexts({ item, filter: { type: this.#contextType } }).pipe(
|
|
494
547
|
// filter out invalid context items
|
|
495
|
-
map((x) =>
|
|
548
|
+
map((x) =>
|
|
549
|
+
// keep only context items that validate against the provider's context type
|
|
550
|
+
x.filter((item) => this.validateContext(item))), map((values) => {
|
|
496
551
|
// related context should be resolved to a single context item
|
|
497
552
|
const value = values.shift();
|
|
498
553
|
// if no value is found, throw an error
|
|
@@ -536,6 +591,7 @@ export class ContextProvider extends BaseModuleProvider {
|
|
|
536
591
|
}
|
|
537
592
|
// request related context items
|
|
538
593
|
return this.#contextRelated.query(args).pipe(map(({ value }) => value), catchError((err) => {
|
|
594
|
+
// unwrap the underlying cause so callers see the original error
|
|
539
595
|
if (err.cause) {
|
|
540
596
|
throw err.cause;
|
|
541
597
|
}
|
|
@@ -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":"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"}
|
|
@@ -18,7 +18,7 @@ import { Query } from '@equinor/fusion-query';
|
|
|
18
18
|
* @template ContextItem The type of the context item managed by the client.
|
|
19
19
|
* @extends Observable<ContextItem | null | undefined>
|
|
20
20
|
*
|
|
21
|
-
* @todo - should this have `undefined` as a valid value?
|
|
21
|
+
* @todo(#5116) - should this have `undefined` as a valid value?
|
|
22
22
|
*
|
|
23
23
|
* @example
|
|
24
24
|
* ```typescript
|
|
@@ -59,6 +59,10 @@ export class ContextClient extends Observable {
|
|
|
59
59
|
get client() {
|
|
60
60
|
return this.#client;
|
|
61
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Creates a new `ContextClient`.
|
|
64
|
+
* @param options - Query constructor options used to fetch a `ContextItem` by its ID.
|
|
65
|
+
*/
|
|
62
66
|
constructor(options) {
|
|
63
67
|
super((observer) => this.#currentContext$.subscribe(observer));
|
|
64
68
|
this.#client = new Query(options);
|
|
@@ -73,10 +77,11 @@ export class ContextClient extends Observable {
|
|
|
73
77
|
* @param idOrItem - The context identifier (string), a `ContextItem`, or `null`. If omitted, the current context may be cleared.
|
|
74
78
|
*/
|
|
75
79
|
setCurrentContext(idOrItem) {
|
|
80
|
+
// resolve string identifiers to a context item before setting
|
|
76
81
|
if (typeof idOrItem === 'string') {
|
|
77
|
-
// TODO - compare context
|
|
82
|
+
// TODO(#5117) - compare context
|
|
83
|
+
// TODO(#5117) should this catch error?
|
|
78
84
|
this.resolveContext(idOrItem)
|
|
79
|
-
// TODO should this catch error?
|
|
80
85
|
.pipe(catchError(() => EMPTY))
|
|
81
86
|
.subscribe((value) => this.setCurrentContext(value));
|
|
82
87
|
/** only add context if not match */
|
|
@@ -93,9 +98,11 @@ export class ContextClient extends Observable {
|
|
|
93
98
|
* @throws Rethrows the underlying error cause if present, otherwise throws the original error.
|
|
94
99
|
*/
|
|
95
100
|
resolveContext(id) {
|
|
101
|
+
// unwrap the query result into the resolved context item
|
|
96
102
|
return this.#client.query({ id }).pipe(map((x) => x.value),
|
|
97
103
|
// unwrap error
|
|
98
104
|
catchError((err) => {
|
|
105
|
+
// unwrap the underlying cause so callers see the original error
|
|
99
106
|
if (err.cause) {
|
|
100
107
|
throw err.cause;
|
|
101
108
|
}
|
|
@@ -115,6 +122,9 @@ export class ContextClient extends Observable {
|
|
|
115
122
|
const fn = opt?.awaitResolve ? lastValueFrom : firstValueFrom;
|
|
116
123
|
return fn(this.resolveContext(id));
|
|
117
124
|
}
|
|
125
|
+
/**
|
|
126
|
+
* Disposes of the client, completing the internal current-context subject.
|
|
127
|
+
*/
|
|
118
128
|
dispose() {
|
|
119
129
|
this.#currentContext$.complete();
|
|
120
130
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextClient.js","sourceRoot":"","sources":["../../../src/client/ContextClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,MAAM,iBAAiB,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAyB,MAAM,uBAAuB,CAAC;AAMrE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,aAAc,SAAQ,UAA0C;IAC3E,OAAO,CAAqC;IAC5C,uEAAuE;IACvE,gBAAgB,CAAkD;IAElE;;;;OAIG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACrC,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED,YAAY,OAA4D;QACtE,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,CAAiC,SAAS,CAAC,CAAC;IACzF,CAAC;IAED;;;;;;;OAOG;IACI,iBAAiB,CAAC,QAAsC;QAC7D,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,
|
|
1
|
+
{"version":3,"file":"ContextClient.js","sourceRoot":"","sources":["../../../src/client/ContextClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,KAAK,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AACzF,OAAO,EAAE,UAAU,EAAE,GAAG,EAAE,MAAM,gBAAgB,CAAC;AAEjD,OAAO,KAAK,MAAM,iBAAiB,CAAC;AAEpC,OAAO,EAAE,KAAK,EAAyB,MAAM,uBAAuB,CAAC;AAMrE;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,MAAM,OAAO,aAAc,SAAQ,UAA0C;IAC3E,OAAO,CAAqC;IAC5C,uEAAuE;IACvE,gBAAgB,CAAkD;IAElE;;;;OAIG;IACH,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC;IACrC,CAAC;IAED;;;;;;;;OAQG;IACH,IAAI,eAAe;QACjB,OAAO,IAAI,CAAC,gBAAgB,CAAC,YAAY,EAAE,CAAC;IAC9C,CAAC;IAED;;;;OAIG;IACH,IAAI,MAAM;QACR,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;;OAGG;IACH,YAAY,OAA4D;QACtE,KAAK,CAAC,CAAC,QAAQ,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/D,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAClC,IAAI,CAAC,gBAAgB,GAAG,IAAI,eAAe,CAAiC,SAAS,CAAC,CAAC;IACzF,CAAC;IAED;;;;;;;OAOG;IACI,iBAAiB,CAAC,QAAsC;QAC7D,8DAA8D;QAC9D,IAAI,OAAO,QAAQ,KAAK,QAAQ,EAAE,CAAC;YACjC,gCAAgC;YAChC,uCAAuC;YACvC,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC;iBAC1B,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,CAAC;iBAC7B,SAAS,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,CAAC,CAAC;YACvD,oCAAoC;QACtC,CAAC;aAAM,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,EAAE,CAAC;YACzD,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACI,cAAc,CAAC,EAAU;QAC9B,yDAAyD;QACzD,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,IAAI,CACpC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC;QACnB,eAAe;QACf,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;;;;;;;;OAQG;IACI,mBAAmB,CAAC,EAAU,EAAE,GAA+B;QACpE,MAAM,EAAE,GAAG,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,cAAc,CAAC;QAC9D,OAAO,EAAE,CAAC,IAAI,CAAC,cAAc,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC;IAED;;OAEG;IACI,OAAO;QACZ,IAAI,CAAC,gBAAgB,CAAC,QAAQ,EAAE,CAAC;IACnC,CAAC;CACF;AAED,eAAe,aAAa,CAAC"}
|
package/dist/esm/configurator.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { getContextSelector, queryContextSelector, relatedContextSelector } from './
|
|
1
|
+
import { getContextSelector, queryContextSelector, relatedContextSelector, } from './get-context-selector';
|
|
2
2
|
import { ContextConfigBuilder } from './ContextConfigBuilder';
|
|
3
3
|
import resolveInitialContext from './utils/resolve-initial-context';
|
|
4
4
|
/**
|
|
@@ -28,10 +28,12 @@ export class ContextModuleConfigurator {
|
|
|
28
28
|
* @throws Error if no services module is available.
|
|
29
29
|
*/
|
|
30
30
|
async _getServiceProvider(init) {
|
|
31
|
+
// prefer the local services module instance if available
|
|
31
32
|
if (init.hasModule('services')) {
|
|
32
33
|
return init.requireInstance('services');
|
|
33
34
|
}
|
|
34
35
|
const parentServiceModule = init.ref?.services;
|
|
36
|
+
// fall back to the parent module's services instance
|
|
35
37
|
if (!parentServiceModule) {
|
|
36
38
|
throw Error('no service services provider configures [ServicesModule]');
|
|
37
39
|
}
|
|
@@ -49,19 +51,16 @@ export class ContextModuleConfigurator {
|
|
|
49
51
|
* @returns The fully resolved context module configuration.
|
|
50
52
|
*/
|
|
51
53
|
async createConfig(init) {
|
|
54
|
+
// run each registered config builder in sequence, merging results into the accumulated config
|
|
52
55
|
const config = await this.#configBuilders.reduce(async (cur, cb) => {
|
|
53
|
-
//
|
|
56
|
+
// biome-ignore lint/suspicious/noExplicitAny: builder generics are erased here — `unknown` breaks assignability of the concrete `ContextConfigBuilder` instance passed to consumer callbacks
|
|
54
57
|
const builder = new ContextConfigBuilder(init, await cur);
|
|
55
58
|
await Promise.resolve(cb(builder));
|
|
59
|
+
// Merge this builder's config into the accumulator for the next iteration.
|
|
56
60
|
return Object.assign(cur, builder.config);
|
|
57
61
|
}, Promise.resolve({}));
|
|
58
|
-
config.resolveInitialContext ??= resolveInitialContext(
|
|
59
|
-
|
|
60
|
-
extract: config.extractContextIdFromPath,
|
|
61
|
-
validate: config.extractContextIdFromPath ? () => true : undefined,
|
|
62
|
-
},
|
|
63
|
-
});
|
|
64
|
-
// TODO - make less lazy
|
|
62
|
+
config.resolveInitialContext ??= resolveInitialContext();
|
|
63
|
+
// TODO(#5119) - make less lazy
|
|
65
64
|
config.client ??= await (async () => {
|
|
66
65
|
const apiProvider = await this._getServiceProvider(init);
|
|
67
66
|
const contextClient = await apiProvider.createContextClient('json$');
|
|
@@ -77,7 +76,7 @@ export class ContextModuleConfigurator {
|
|
|
77
76
|
client: {
|
|
78
77
|
fn: (query) => contextClient.query('v1', { query }, { selector: queryContextSelector }),
|
|
79
78
|
},
|
|
80
|
-
// TODO - might cast to checksum
|
|
79
|
+
// TODO(#5118) - might cast to checksum
|
|
81
80
|
key: (args) => JSON.stringify(args),
|
|
82
81
|
expire: this.defaultExpireTime,
|
|
83
82
|
},
|
|
@@ -87,7 +86,7 @@ export class ContextModuleConfigurator {
|
|
|
87
86
|
return contextClient.related('v1', { id: args.item.id, query: { filter: args.filter } }, { selector: relatedContextSelector });
|
|
88
87
|
},
|
|
89
88
|
},
|
|
90
|
-
// TODO - might cast to checksum
|
|
89
|
+
// TODO(#5118) - might cast to checksum
|
|
91
90
|
key: (args) => JSON.stringify(args),
|
|
92
91
|
expire: this.defaultExpireTime,
|
|
93
92
|
},
|