@equinor/fusion-framework-module-context 7.0.4-next.0 → 8.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.
- package/CHANGELOG.md +22 -16
- package/README.md +168 -16
- package/dist/esm/ContextConfigBuilder.js +7 -0
- package/dist/esm/ContextConfigBuilder.js.map +1 -1
- package/dist/esm/configurator.js +31 -0
- package/dist/esm/configurator.js.map +1 -1
- package/dist/esm/index.js +12 -0
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/module.js +6 -0
- package/dist/esm/module.js.map +1 -1
- package/dist/esm/utils/index.js +10 -0
- package/dist/esm/utils/index.js.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/types/ContextConfigBuilder.d.ts +15 -0
- package/dist/types/ContextProvider.d.ts +37 -0
- package/dist/types/configurator.d.ts +134 -4
- package/dist/types/index.d.ts +12 -0
- package/dist/types/module.d.ts +11 -0
- package/dist/types/types.d.ts +22 -0
- package/dist/types/utils/index.d.ts +10 -0
- package/dist/types/version.d.ts +1 -1
- package/package.json +9 -9
- package/src/ContextConfigBuilder.ts +15 -0
- package/src/ContextProvider.ts +37 -7
- package/src/configurator.ts +137 -4
- package/src/index.ts +13 -0
- package/src/module.ts +11 -0
- package/src/types.ts +22 -0
- package/src/utils/index.ts +10 -0
- package/src/version.ts +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,14 +1,30 @@
|
|
|
1
1
|
# Change Log
|
|
2
2
|
|
|
3
|
-
##
|
|
3
|
+
## 8.0.0
|
|
4
4
|
|
|
5
|
-
###
|
|
5
|
+
### Major Changes
|
|
6
|
+
|
|
7
|
+
- abffa53: Major version bump for Fusion Framework React 19 release.
|
|
8
|
+
|
|
9
|
+
All packages are bumped to the next major version as part of the React 19 upgrade. This release drops support for React versions below 18 and includes breaking changes across the framework.
|
|
6
10
|
|
|
7
|
-
|
|
11
|
+
**Breaking changes:**
|
|
12
|
+
- Peer dependencies now require React 18 or 19 (`^18.0.0 || ^19.0.0`)
|
|
13
|
+
- React Router upgraded from v6 to v7
|
|
14
|
+
- Navigation module refactored with new history API
|
|
15
|
+
- `renderComponent` and `renderApp` now use `createRoot` API
|
|
16
|
+
|
|
17
|
+
**Migration:**
|
|
18
|
+
- Update your React version to 18.0.0 or higher before upgrading
|
|
19
|
+
- Replace `NavigationProvider.createRouter()` with `@equinor/fusion-framework-react-router`
|
|
20
|
+
- See individual package changelogs for package-specific migration steps
|
|
21
|
+
|
|
22
|
+
### Patch Changes
|
|
8
23
|
|
|
9
|
-
- Updated dependencies [
|
|
10
|
-
|
|
11
|
-
- @equinor/fusion-framework-module@
|
|
24
|
+
- Updated dependencies [abffa53]
|
|
25
|
+
- Updated dependencies [abffa53]
|
|
26
|
+
- @equinor/fusion-framework-module@6.0.0
|
|
27
|
+
- @equinor/fusion-query@7.0.0
|
|
12
28
|
|
|
13
29
|
## 7.0.3
|
|
14
30
|
|
|
@@ -20,16 +36,6 @@
|
|
|
20
36
|
- @equinor/fusion-framework-module@5.0.6
|
|
21
37
|
- @equinor/fusion-query@6.0.4
|
|
22
38
|
|
|
23
|
-
## 7.0.3-next.0
|
|
24
|
-
|
|
25
|
-
### Patch Changes
|
|
26
|
-
|
|
27
|
-
- [#3820](https://github.com/equinor/fusion-framework/pull/3820) [`265bb76`](https://github.com/equinor/fusion-framework/commit/265bb767249989eeb1971e83f3fba94879e0813b) Thanks [@odinr](https://github.com/odinr)! - relase next
|
|
28
|
-
|
|
29
|
-
- Updated dependencies [[`265bb76`](https://github.com/equinor/fusion-framework/commit/265bb767249989eeb1971e83f3fba94879e0813b), [`75c068f`](https://github.com/equinor/fusion-framework/commit/75c068fea13c32435ac26bd9043cc156482bfaf1)]:
|
|
30
|
-
- @equinor/fusion-query@7.0.0-next.0
|
|
31
|
-
- @equinor/fusion-framework-module@5.0.6-next.0
|
|
32
|
-
|
|
33
39
|
## 7.0.2
|
|
34
40
|
|
|
35
41
|
### Patch Changes
|
package/README.md
CHANGED
|
@@ -1,33 +1,185 @@
|
|
|
1
|
-
|
|
1
|
+
# @equinor/fusion-framework-module-context
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
It provides a structured way to handle context information to enrich user experiences and facilitate data sharing across different components of the application.
|
|
3
|
+
Context module for the Fusion Framework. Manages the active context (project, facility, contract, etc.) within Fusion-based applications and portals, providing query, validation, resolution, and parent–child synchronization out of the box.
|
|
5
4
|
|
|
6
|
-
##
|
|
5
|
+
## When to use
|
|
6
|
+
|
|
7
|
+
Use this module when your application or portal needs to:
|
|
8
|
+
|
|
9
|
+
- set, read, or clear the active context (e.g. selecting a project)
|
|
10
|
+
- search and filter available context items from the Fusion context API
|
|
11
|
+
- validate whether a given context item matches the allowed context types
|
|
12
|
+
- resolve context across parent–child provider boundaries (portal → app)
|
|
13
|
+
- deep-link by extracting a context ID from the URL path
|
|
14
|
+
|
|
15
|
+
> **Application developers** will typically use the higher-level
|
|
16
|
+
> `@equinor/fusion-framework-react-app/context` package, which wraps this
|
|
17
|
+
> module with React hooks and providers.
|
|
18
|
+
>
|
|
19
|
+
> **Portal developers** will use `@equinor/fusion-framework-react/context`
|
|
20
|
+
> for the same purpose at the portal level.
|
|
21
|
+
|
|
22
|
+
## Key concepts
|
|
23
|
+
|
|
24
|
+
| Concept | Description |
|
|
25
|
+
|---|---|
|
|
26
|
+
| **ContextItem** | A typed record representing a single context entity (project, facility, etc.). |
|
|
27
|
+
| **ContextProvider** | Runtime service exposing query, set, validate, resolve, and event APIs. |
|
|
28
|
+
| **ContextConfigBuilder** | Fluent builder for configuring context types, filters, clients, and hooks. |
|
|
29
|
+
| **enableContext** | Helper that registers the module on a modules configurator. |
|
|
30
|
+
| **Context resolution** | Automatic lookup of related context items when a context type does not match the configured types. |
|
|
31
|
+
| **Parent connection** | Bi-directional sync between a parent portal context and a child app context. |
|
|
32
|
+
|
|
33
|
+
## Quick start
|
|
7
34
|
|
|
8
35
|
```ts
|
|
9
36
|
import { enableContext } from '@equinor/fusion-framework-module-context';
|
|
10
37
|
|
|
11
|
-
const configure = (configurator
|
|
38
|
+
export const configure = (configurator) => {
|
|
12
39
|
enableContext(configurator, (builder) => {
|
|
13
|
-
//
|
|
40
|
+
// only accept ProjectMaster context items
|
|
41
|
+
builder.setContextType(['ProjectMaster']);
|
|
14
42
|
});
|
|
15
43
|
};
|
|
16
44
|
```
|
|
17
45
|
|
|
18
|
-
|
|
46
|
+
Once initialized, access the provider from the module instance:
|
|
47
|
+
|
|
48
|
+
```ts
|
|
49
|
+
// observe context changes
|
|
50
|
+
modules.context.currentContext$.subscribe((ctx) => {
|
|
51
|
+
console.log('context changed', ctx);
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
// search for context items
|
|
55
|
+
const items = await modules.context.queryContextAsync('Johan');
|
|
56
|
+
|
|
57
|
+
// set context by item
|
|
58
|
+
await modules.context.setCurrentContextAsync(items[0]);
|
|
59
|
+
|
|
60
|
+
// set context by ID
|
|
61
|
+
await modules.context.setCurrentContextByIdAsync('7fd97952-...');
|
|
62
|
+
|
|
63
|
+
// clear the active context
|
|
64
|
+
modules.context.clearCurrentContext();
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
## Configuration
|
|
68
|
+
|
|
69
|
+
All configuration flows through `enableContext` → `ContextConfigBuilder`:
|
|
70
|
+
|
|
71
|
+
```ts
|
|
72
|
+
enableContext(configurator, (builder) => {
|
|
73
|
+
// restrict accepted context types
|
|
74
|
+
builder.setContextType(['ProjectMaster', 'Facility']);
|
|
75
|
+
|
|
76
|
+
// post-query filter
|
|
77
|
+
builder.setContextFilter((items) => items.filter((i) => i.isActive));
|
|
78
|
+
|
|
79
|
+
// custom parameter mapping for the search API
|
|
80
|
+
builder.setContextParameterFn(({ search, type }) => ({
|
|
81
|
+
search,
|
|
82
|
+
filter: { type },
|
|
83
|
+
}));
|
|
84
|
+
|
|
85
|
+
// custom validation logic
|
|
86
|
+
builder.setValidateContext(function (item) {
|
|
87
|
+
return item !== null && this.validateContext(item);
|
|
88
|
+
});
|
|
89
|
+
|
|
90
|
+
// custom context resolution
|
|
91
|
+
builder.setResolveContext(function (item) {
|
|
92
|
+
return this.relatedContexts({ item, filter: { type: ['ProjectMaster'] } });
|
|
93
|
+
});
|
|
94
|
+
|
|
95
|
+
// connect (or disconnect) from parent context
|
|
96
|
+
// when enabled (default), onParentContextChanged fires before mirroring the parent's context locally
|
|
97
|
+
builder.connectParentContext(false);
|
|
98
|
+
|
|
99
|
+
// path ↔ context integration
|
|
100
|
+
// the default resolver uses extractContextIdFromPath to pull a GUID from the URL,
|
|
101
|
+
// then fetches the matching context item — see resolveInitialContext in utils
|
|
102
|
+
builder.setContextPathExtractor((path) => path.split('/')[2]);
|
|
103
|
+
builder.setContextPathGenerator((ctx, path) =>
|
|
104
|
+
path.replace(/\/context\/[^/]+/, `/context/${ctx.id}`),
|
|
105
|
+
);
|
|
106
|
+
|
|
107
|
+
// provide a fully custom context client
|
|
108
|
+
builder.setContextClient({
|
|
109
|
+
get: (args) => fetch(`/api/context/${args.id}`).then((r) => r.json()),
|
|
110
|
+
query: (args) => fetch(`/api/context?q=${args.search}`).then((r) => r.json()),
|
|
111
|
+
});
|
|
112
|
+
});
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
### Configuration reference
|
|
116
|
+
|
|
117
|
+
| Builder method | Purpose |
|
|
118
|
+
|---|---|
|
|
119
|
+
| `setContextType(types)` | Allowed context type IDs for validation |
|
|
120
|
+
| `setContextFilter(fn)` | Post-query result filter |
|
|
121
|
+
| `setContextParameterFn(fn)` | Maps search + type to API query params |
|
|
122
|
+
| `setValidateContext(fn)` | Custom validation (`this` = provider) |
|
|
123
|
+
| `setResolveContext(fn)` | Custom resolution (`this` = provider) |
|
|
124
|
+
| `connectParentContext(bool)` | Enable/disable parent context sync (fires `onParentContextChanged` on change) |
|
|
125
|
+
| `setContextPathExtractor(fn)` | Extract context ID from URL path |
|
|
126
|
+
| `setContextPathGenerator(fn)` | Generate URL path from context item |
|
|
127
|
+
| `setResolveInitialContext(fn)` | Override initial context resolution (default uses `extractContextIdFromPath` → `resolveContextFromPath`) |
|
|
128
|
+
| `setContextClient(client)` | Custom get/query/related clients |
|
|
129
|
+
|
|
130
|
+
## Events
|
|
131
|
+
|
|
132
|
+
The context module dispatches events via the `@equinor/fusion-framework-module-event` system. All events are scoped to the `ContextProvider` source.
|
|
133
|
+
|
|
134
|
+
| Event | When | Cancelable |
|
|
135
|
+
|---|---|---|
|
|
136
|
+
| `onCurrentContextChange` | Before the current context is updated | Yes |
|
|
137
|
+
| `onCurrentContextChanged` | After the current context has changed | No |
|
|
138
|
+
| `onParentContextChanged` | Before a parent context change is mirrored locally | Yes |
|
|
139
|
+
| `onSetContextResolve` | Before context resolution begins | Yes |
|
|
140
|
+
| `onSetContextResolved` | After context resolution completes | Yes |
|
|
141
|
+
| `onSetContextValidationFailed` | When validation fails (no resolution) | No |
|
|
142
|
+
| `onSetContextResolveFailed` | When resolution fails with an error | No |
|
|
143
|
+
|
|
144
|
+
```ts
|
|
145
|
+
modules.event.addEventListener('onCurrentContextChanged', (e) => {
|
|
146
|
+
console.log('previous:', e.detail.previous);
|
|
147
|
+
console.log('next:', e.detail.next);
|
|
148
|
+
});
|
|
149
|
+
```
|
|
150
|
+
|
|
151
|
+
## Errors
|
|
152
|
+
|
|
153
|
+
The module exports `FusionContextSearchError` (from `@equinor/fusion-framework-module-context/errors.js`) for search-related failures:
|
|
154
|
+
|
|
155
|
+
```ts
|
|
156
|
+
import { FusionContextSearchError } from '@equinor/fusion-framework-module-context/errors.js';
|
|
157
|
+
|
|
158
|
+
try {
|
|
159
|
+
await modules.context.queryContextAsync('...');
|
|
160
|
+
} catch (err) {
|
|
161
|
+
if (err instanceof FusionContextSearchError) {
|
|
162
|
+
console.error(err.title, err.description);
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
```
|
|
19
166
|
|
|
20
|
-
|
|
21
|
-
- query context items based on search strings
|
|
22
|
-
- filter context items based on type
|
|
23
|
-
- validate context items against allowed types
|
|
24
|
-
- resolving related context items
|
|
167
|
+
## Utilities
|
|
25
168
|
|
|
26
|
-
|
|
169
|
+
Additional helpers are available from `@equinor/fusion-framework-module-context/utils`:
|
|
27
170
|
|
|
28
|
-
|
|
171
|
+
| Export | Purpose |
|
|
172
|
+
|---|---|
|
|
173
|
+
| `enableContext` | Register the context module on a configurator |
|
|
174
|
+
| `resolveInitialContext` | Default initial-context resolver (path → parent fallback) |
|
|
175
|
+
| `extractContextIdFromPath` | Extract a GUID-format context ID from a URL path |
|
|
176
|
+
| `resolveContextFromPath` | Create a resolver function that fetches a context item from a URL path |
|
|
29
177
|
|
|
30
|
-
|
|
178
|
+
## Package exports
|
|
31
179
|
|
|
32
|
-
|
|
180
|
+
| Specifier | Description |
|
|
181
|
+
|---|---|
|
|
182
|
+
| `@equinor/fusion-framework-module-context` | Main entry — module, provider, configurator, types |
|
|
183
|
+
| `@equinor/fusion-framework-module-context/errors.js` | `FusionContextSearchError` |
|
|
184
|
+
| `@equinor/fusion-framework-module-context/utils` | Utility functions for path resolution and enablement |
|
|
33
185
|
|
|
@@ -101,6 +101,13 @@ export class ContextConfigBuilder {
|
|
|
101
101
|
setContextPathGenerator(fn) {
|
|
102
102
|
this.config.generatePathFromContext = fn;
|
|
103
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Sets the function used to resolve the initial context during module post-initialization.
|
|
106
|
+
*
|
|
107
|
+
* @param fn - A function that returns an observable input emitting the initial context item.
|
|
108
|
+
* The default resolver extracts a context ID from the navigation path, falling
|
|
109
|
+
* back to the parent provider's current context.
|
|
110
|
+
*/
|
|
104
111
|
setResolveInitialContext(fn) {
|
|
105
112
|
this.config.resolveInitialContext = fn;
|
|
106
113
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ContextConfigBuilder.js","sourceRoot":"","sources":["../../src/ContextConfigBuilder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ContextConfigBuilder.js","sourceRoot":"","sources":["../../src/ContextConfigBuilder.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/configurator.js
CHANGED
|
@@ -1,12 +1,32 @@
|
|
|
1
1
|
import { getContextSelector, queryContextSelector, relatedContextSelector } from './selectors';
|
|
2
2
|
import { ContextConfigBuilder } from './ContextConfigBuilder';
|
|
3
3
|
import resolveInitialContext from './utils/resolve-initial-context';
|
|
4
|
+
/**
|
|
5
|
+
* Default implementation of {@link IContextModuleConfigurator}.
|
|
6
|
+
*
|
|
7
|
+
* Collects {@link ContextConfigBuilderCallback} registrations and, when
|
|
8
|
+
* {@link createConfig} is called, runs them in order against a
|
|
9
|
+
* {@link ContextConfigBuilder} to produce the final {@link ContextModuleConfig}.
|
|
10
|
+
*
|
|
11
|
+
* If no custom client is configured, the configurator falls back to
|
|
12
|
+
* creating one from the {@link ServicesModule} API provider.
|
|
13
|
+
*/
|
|
4
14
|
export class ContextModuleConfigurator {
|
|
15
|
+
/** Default cache TTL (in ms) for context query results. */
|
|
5
16
|
defaultExpireTime = 1 * 60 * 1000;
|
|
6
17
|
#configBuilders = [];
|
|
18
|
+
/** @inheritdoc */
|
|
7
19
|
addConfigBuilder(init) {
|
|
8
20
|
this.#configBuilders.push(init);
|
|
9
21
|
}
|
|
22
|
+
/**
|
|
23
|
+
* Resolves the services API provider, preferring the local module
|
|
24
|
+
* instance and falling back to the parent module.
|
|
25
|
+
*
|
|
26
|
+
* @param init - Module initializer arguments.
|
|
27
|
+
* @returns The resolved API provider.
|
|
28
|
+
* @throws Error if no services module is available.
|
|
29
|
+
*/
|
|
10
30
|
async _getServiceProvider(init) {
|
|
11
31
|
if (init.hasModule('services')) {
|
|
12
32
|
return init.requireInstance('services');
|
|
@@ -17,6 +37,17 @@ export class ContextModuleConfigurator {
|
|
|
17
37
|
}
|
|
18
38
|
return parentServiceModule;
|
|
19
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Runs all registered config builders and produces the final
|
|
42
|
+
* {@link ContextModuleConfig}.
|
|
43
|
+
*
|
|
44
|
+
* If no `resolveInitialContext` was set, the default path + parent
|
|
45
|
+
* resolver is used. If no `client` was set, one is created from the
|
|
46
|
+
* {@link ServicesModule} API provider.
|
|
47
|
+
*
|
|
48
|
+
* @param init - Module initializer arguments including dependency instances.
|
|
49
|
+
* @returns The fully resolved context module configuration.
|
|
50
|
+
*/
|
|
20
51
|
async createConfig(init) {
|
|
21
52
|
const config = await this.#configBuilders.reduce(async (cur, cb) => {
|
|
22
53
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"configurator.js","sourceRoot":"","sources":["../../src/configurator.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAC;AAS/F,OAAO,EAAE,oBAAoB,EAAqC,MAAM,wBAAwB,CAAC;AAEjG,OAAO,qBAAqB,MAAM,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"configurator.js","sourceRoot":"","sources":["../../src/configurator.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/index.js
CHANGED
|
@@ -1,3 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Context module for the Fusion Framework.
|
|
3
|
+
*
|
|
4
|
+
* Provides context management for Fusion-based applications and portals,
|
|
5
|
+
* including setting, querying, validating, and resolving context items.
|
|
6
|
+
*
|
|
7
|
+
* Use {@link enableContext} to register the module in a configurator,
|
|
8
|
+
* then access the {@link IContextProvider} from the module instance
|
|
9
|
+
* to interact with context state.
|
|
10
|
+
*
|
|
11
|
+
* @packageDocumentation
|
|
12
|
+
*/
|
|
1
13
|
export { ContextModuleConfigurator, } from './configurator';
|
|
2
14
|
export { ContextProvider } from './ContextProvider';
|
|
3
15
|
export { default, module as contextModule, moduleKey as contextModuleKey, } from './module';
|
package/dist/esm/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,yBAAyB,GAG1B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAoB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,EACL,OAAO,EAEP,MAAM,IAAI,aAAa,EACvB,SAAS,IAAI,gBAAgB,GAC9B,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,cAAc,SAAS,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EACL,yBAAyB,GAG1B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAoB,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEtE,OAAO,EACL,OAAO,EAEP,MAAM,IAAI,aAAa,EACvB,SAAS,IAAI,gBAAgB,GAC9B,MAAM,UAAU,CAAC;AAElB,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,cAAc,SAAS,CAAC"}
|
package/dist/esm/module.js
CHANGED
|
@@ -1,6 +1,12 @@
|
|
|
1
1
|
import { catchError, EMPTY, from, Observable, switchMap, filter, Subscription } from 'rxjs';
|
|
2
2
|
import { ContextModuleConfigurator } from './configurator';
|
|
3
3
|
import { ContextProvider } from './ContextProvider';
|
|
4
|
+
/**
|
|
5
|
+
* Module registration key for the context module.
|
|
6
|
+
*
|
|
7
|
+
* Pass this value—or reference it as `contextModuleKey`—when you need to
|
|
8
|
+
* identify the context module by name at runtime (e.g., `hasModule(contextModuleKey)`).
|
|
9
|
+
*/
|
|
4
10
|
export const moduleKey = 'context';
|
|
5
11
|
/**
|
|
6
12
|
* The `module` object implements the `ContextModule` interface and provides the configuration,
|
package/dist/esm/module.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,MAAM,CAAC;AAQ5F,OAAO,EAAmC,yBAAyB,EAAE,MAAM,gBAAgB,CAAC;AAC5F,OAAO,EAAyB,eAAe,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"module.js","sourceRoot":"","sources":["../../src/module.ts"],"names":[],"mappings":"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"}
|
package/dist/esm/utils/index.js
CHANGED
|
@@ -1,3 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility functions for context module configuration and initialization.
|
|
3
|
+
*
|
|
4
|
+
* - {@link enableContext} — register the context module on a configurator.
|
|
5
|
+
* - {@link resolveInitialContext} — default initial-context resolver (path → parent fallback).
|
|
6
|
+
* - {@link extractContextIdFromPath} — extract a GUID context ID from a URL path.
|
|
7
|
+
* - {@link resolveContextFromPath} — resolve a context item from a URL path.
|
|
8
|
+
*
|
|
9
|
+
* @packageDocumentation
|
|
10
|
+
*/
|
|
1
11
|
export { enableContext } from './enable-context';
|
|
2
12
|
export { resolveInitialContext } from './resolve-initial-context';
|
|
3
13
|
export { extractContextIdFromPath, resolveContextFromPath } from './resolve-context-from-path';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/utils/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,qBAAqB,EAAE,MAAM,2BAA2B,CAAC;AAClE,OAAO,EAAE,wBAAwB,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
|
package/dist/esm/version.js
CHANGED
package/dist/esm/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,2BAA2B;AAC3B,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
|