@plumile/router 0.1.48 → 0.1.50
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/README.md +78 -2
- package/lib/esm/ResourcePage.d.ts +1 -5
- package/lib/esm/ResourcePage.d.ts.map +1 -1
- package/lib/esm/ResourcePage.js +13 -42
- package/lib/esm/asyncResource.d.ts +8 -0
- package/lib/esm/asyncResource.d.ts.map +1 -0
- package/lib/esm/asyncResource.js +101 -0
- package/lib/esm/builder.d.ts +7 -7
- package/lib/esm/builder.d.ts.map +1 -1
- package/lib/esm/builder.js +5 -4
- package/lib/esm/index.d.ts +1 -0
- package/lib/esm/index.d.ts.map +1 -1
- package/lib/esm/index.js +2 -1
- package/lib/esm/instrumentation/Instrumentation.d.ts +37 -13
- package/lib/esm/instrumentation/Instrumentation.d.ts.map +1 -1
- package/lib/esm/instrumentation/Instrumentation.js +1 -1
- package/lib/esm/prepareResource.d.ts +4 -0
- package/lib/esm/prepareResource.d.ts.map +1 -0
- package/lib/esm/prepareResource.js +11 -0
- package/lib/esm/routing/RouteComponentWrapper.d.ts.map +1 -1
- package/lib/esm/routing/RouteComponentWrapper.js +14 -3
- package/lib/esm/routing/createRouter.d.ts +9 -3
- package/lib/esm/routing/createRouter.d.ts.map +1 -1
- package/lib/esm/routing/createRouter.js +155 -145
- package/lib/esm/tools.d.ts +7 -4
- package/lib/esm/tools.d.ts.map +1 -1
- package/lib/esm/tools.js +93 -21
- package/lib/esm/types.d.ts +131 -54
- package/lib/esm/types.d.ts.map +1 -1
- package/lib/esm/types.js +1 -1
- package/lib/esm/values.d.ts +19 -0
- package/lib/esm/values.d.ts.map +1 -0
- package/lib/esm/values.js +53 -0
- package/lib/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types/ResourcePage.d.ts +1 -5
- package/lib/types/ResourcePage.d.ts.map +1 -1
- package/lib/types/asyncResource.d.ts +8 -0
- package/lib/types/asyncResource.d.ts.map +1 -0
- package/lib/types/builder.d.ts +7 -7
- package/lib/types/builder.d.ts.map +1 -1
- package/lib/types/index.d.ts +1 -0
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/instrumentation/Instrumentation.d.ts +37 -13
- package/lib/types/instrumentation/Instrumentation.d.ts.map +1 -1
- package/lib/types/prepareResource.d.ts +4 -0
- package/lib/types/prepareResource.d.ts.map +1 -0
- package/lib/types/routing/RouteComponentWrapper.d.ts.map +1 -1
- package/lib/types/routing/createRouter.d.ts +9 -3
- package/lib/types/routing/createRouter.d.ts.map +1 -1
- package/lib/types/tools.d.ts +7 -4
- package/lib/types/tools.d.ts.map +1 -1
- package/lib/types/types.d.ts +131 -54
- package/lib/types/types.d.ts.map +1 -1
- package/lib/types/values.d.ts +19 -0
- package/lib/types/values.d.ts.map +1 -0
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -207,8 +207,55 @@ Route definition interface.
|
|
|
207
207
|
- `path?`: string - URL path pattern
|
|
208
208
|
- `children?`: Route[] | Redirect[] - Nested routes
|
|
209
209
|
- `resourcePage?`: ResourcePage - Lazy-loaded component
|
|
210
|
-
- `prepare?`: Function to
|
|
211
|
-
- `render?`: Custom render function
|
|
210
|
+
- `prepare?`: Function to prepare route data before rendering. May return a value or a Promise.
|
|
211
|
+
- `render?`: Custom render function. May return a React node, `undefined`, or a Promise.
|
|
212
|
+
|
|
213
|
+
### Route Prepare Lifecycle
|
|
214
|
+
|
|
215
|
+
`prepare` is now a first-class Suspense primitive.
|
|
216
|
+
|
|
217
|
+
Behavior:
|
|
218
|
+
|
|
219
|
+
- `prepare` may be synchronous or asynchronous.
|
|
220
|
+
- The router wraps its result in an internal prepared resource.
|
|
221
|
+
- Route components and `render` callbacks only receive resolved `prepared` values.
|
|
222
|
+
- If `prepare` is still pending, the router suspends through React Suspense.
|
|
223
|
+
- If `prepare` rejects, the error is rethrown to the nearest Error Boundary.
|
|
224
|
+
|
|
225
|
+
Example with synchronous prepare:
|
|
226
|
+
|
|
227
|
+
```ts
|
|
228
|
+
const routes = [
|
|
229
|
+
{
|
|
230
|
+
path: '/users/:id',
|
|
231
|
+
resourcePage: getResourcePage('UserPage', () => import('./UserPage')),
|
|
232
|
+
prepare: ({ variables }) => {
|
|
233
|
+
return { userId: variables.id };
|
|
234
|
+
},
|
|
235
|
+
},
|
|
236
|
+
];
|
|
237
|
+
```
|
|
238
|
+
|
|
239
|
+
Example with asynchronous prepare:
|
|
240
|
+
|
|
241
|
+
```ts
|
|
242
|
+
const routes = [
|
|
243
|
+
{
|
|
244
|
+
path: '/projects/:id',
|
|
245
|
+
resourcePage: getResourcePage('ProjectPage', () => import('./ProjectPage')),
|
|
246
|
+
prepare: async ({ variables, context }) => {
|
|
247
|
+
const project = await context.api.fetchProject(variables.id);
|
|
248
|
+
return { project };
|
|
249
|
+
},
|
|
250
|
+
},
|
|
251
|
+
];
|
|
252
|
+
```
|
|
253
|
+
|
|
254
|
+
In both cases:
|
|
255
|
+
|
|
256
|
+
- `render` receives `prepared` only after resolution;
|
|
257
|
+
- the route component receives `prepared` only after resolution;
|
|
258
|
+
- no `Promise` is ever exposed as `prepared` to userland consumers.
|
|
212
259
|
|
|
213
260
|
#### `Redirect`
|
|
214
261
|
|
|
@@ -267,6 +314,23 @@ Finds the matching route for a given location.
|
|
|
267
314
|
|
|
268
315
|
Prepares route data and components for rendering.
|
|
269
316
|
|
|
317
|
+
`prepareMatch()` is synchronous at the API level, but it eagerly creates route resources for:
|
|
318
|
+
|
|
319
|
+
- code loading through `resourcePage`;
|
|
320
|
+
- data preparation through `prepare`.
|
|
321
|
+
|
|
322
|
+
If a route `prepare` is asynchronous, `prepareMatch()` returns a prepared route whose prepared value is backed by a Suspense-aware resource.
|
|
323
|
+
|
|
324
|
+
#### `prepareMatchAsync(match, query?, instrumentation?, context?)`
|
|
325
|
+
|
|
326
|
+
Resolves all prepared route values eagerly and returns a fully resolved prepared match.
|
|
327
|
+
|
|
328
|
+
Use this helper when you need route prepared data outside the normal React render flow, for example:
|
|
329
|
+
|
|
330
|
+
- tests that need resolved prepared values;
|
|
331
|
+
- non-React tooling;
|
|
332
|
+
- future SSR-like workflows.
|
|
333
|
+
|
|
270
334
|
#### `r<TContext, TPrepared, TVariables>(route)`
|
|
271
335
|
|
|
272
336
|
Type helper for strongly-typed route definitions.
|
|
@@ -278,6 +342,18 @@ The router now unifies page-like query parameters and structured filters under a
|
|
|
278
342
|
Key points:
|
|
279
343
|
|
|
280
344
|
- A route can declare a `querySchema` (filter schema) on its deepest branch.
|
|
345
|
+
|
|
346
|
+
## Preloading Semantics
|
|
347
|
+
|
|
348
|
+
The router exposes two distinct preload strategies:
|
|
349
|
+
|
|
350
|
+
- `preloadCode()`: load route code only. This triggers `resourcePage.load()` and never executes `prepare`.
|
|
351
|
+
- `preload()`: load both route code and prepared data. This triggers `resourcePage.load()` and eagerly starts each route `prepare`.
|
|
352
|
+
|
|
353
|
+
Use `preloadCode()` when you only want to warm the code path.
|
|
354
|
+
|
|
355
|
+
Use `preload()` when you want the next navigation to reuse both code and route-level prepared data.
|
|
356
|
+
|
|
281
357
|
- All URL parameters (simple key=value and filter operators like `price.gt=10`) are parsed into a single `filters` object.
|
|
282
358
|
- Equality is implicit: `field=value` maps to internal operator `eq`.
|
|
283
359
|
- The current active schema is exposed as `entry.activeQuerySchema` for tooling.
|
|
@@ -1,16 +1,12 @@
|
|
|
1
1
|
import type { ResourcePageLoader, ResourcePageReturn } from './types.js';
|
|
2
2
|
export declare class ResourcePage {
|
|
3
|
-
private
|
|
4
|
-
private __loader;
|
|
5
|
-
private __promise;
|
|
6
|
-
private __result;
|
|
3
|
+
private __resource;
|
|
7
4
|
private __moduleId;
|
|
8
5
|
constructor(loader: ResourcePageLoader, moduleId: string);
|
|
9
6
|
load(): Promise<ResourcePageReturn>;
|
|
10
7
|
get(): ResourcePageReturn | undefined;
|
|
11
8
|
getModuleId(): string;
|
|
12
9
|
read(): ResourcePageReturn | Promise<ResourcePageReturn> | Error;
|
|
13
|
-
private __load;
|
|
14
10
|
}
|
|
15
11
|
export declare function getResourcePage(moduleId: string, loader: ResourcePageLoader): ResourcePage | null;
|
|
16
12
|
//# sourceMappingURL=ResourcePage.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResourcePage.d.ts","sourceRoot":"","sources":["../../src/ResourcePage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"ResourcePage.d.ts","sourceRoot":"","sources":["../../src/ResourcePage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AA4BzE,qBAAa,YAAY;IACvB,OAAO,CAAC,UAAU,CAAC;IAGnB,OAAO,CAAC,UAAU,CAAS;gBAQR,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM;IAoBlD,IAAI,IAAI,OAAO,CAAC,kBAAkB,CAAC;IAWzC,GAAG,IAAI,kBAAkB,GAAG,SAAS;IAOrC,WAAW,IAAI,MAAM;IAerB,IAAI,IAAI,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,KAAK;CAGxE;AAsBD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,kBAAkB,GACzB,YAAY,GAAG,IAAI,CAOrB"}
|
package/lib/esm/ResourcePage.js
CHANGED
|
@@ -1,59 +1,30 @@
|
|
|
1
|
+
import { createAsyncResource } from './asyncResource.js';
|
|
1
2
|
const resourcePageMap = new Map();
|
|
2
3
|
export class ResourcePage {
|
|
3
|
-
|
|
4
|
-
__loader;
|
|
5
|
-
__promise;
|
|
6
|
-
__result;
|
|
4
|
+
__resource;
|
|
7
5
|
__moduleId;
|
|
8
6
|
constructor(loader, moduleId) {
|
|
9
|
-
this.__error = null;
|
|
10
|
-
this.__loader = loader;
|
|
11
7
|
this.__moduleId = moduleId;
|
|
12
|
-
this.
|
|
13
|
-
|
|
14
|
-
}
|
|
15
|
-
async load() {
|
|
16
|
-
let promise = this.__promise;
|
|
17
|
-
if (promise == null) {
|
|
18
|
-
promise = this.__load()
|
|
19
|
-
.then((result) => {
|
|
8
|
+
this.__resource = createAsyncResource(loader, {
|
|
9
|
+
normalize: (result) => {
|
|
20
10
|
if (result.default != null) {
|
|
21
|
-
|
|
11
|
+
return result.default;
|
|
22
12
|
}
|
|
23
|
-
this.__result = result;
|
|
24
13
|
return result;
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
this.__promise = promise;
|
|
31
|
-
}
|
|
32
|
-
return promise;
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
async load() {
|
|
18
|
+
return this.__resource.load();
|
|
33
19
|
}
|
|
34
20
|
get() {
|
|
35
|
-
|
|
36
|
-
return this.__result;
|
|
37
|
-
}
|
|
38
|
-
return undefined;
|
|
21
|
+
return this.__resource.get();
|
|
39
22
|
}
|
|
40
23
|
getModuleId() {
|
|
41
24
|
return this.__moduleId;
|
|
42
25
|
}
|
|
43
26
|
read() {
|
|
44
|
-
|
|
45
|
-
return this.__result;
|
|
46
|
-
}
|
|
47
|
-
if (this.__error != null) {
|
|
48
|
-
throw this.__error;
|
|
49
|
-
}
|
|
50
|
-
else {
|
|
51
|
-
throw this.__promise;
|
|
52
|
-
}
|
|
53
|
-
}
|
|
54
|
-
async __load() {
|
|
55
|
-
const { __loader: loader } = this;
|
|
56
|
-
return Promise.resolve(loader());
|
|
27
|
+
return this.__resource.read();
|
|
57
28
|
}
|
|
58
29
|
}
|
|
59
30
|
export function getResourcePage(moduleId, loader) {
|
|
@@ -64,4 +35,4 @@ export function getResourcePage(moduleId, loader) {
|
|
|
64
35
|
}
|
|
65
36
|
return resource;
|
|
66
37
|
}
|
|
67
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
38
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VQYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1Jlc291cmNlUGFnZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFFLG1CQUFtQixFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFRekQsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7QUFtQnhELE1BQU0sT0FBTyxZQUFZO0lBQ2YsVUFBVSxDQUFDO0lBR1gsVUFBVSxDQUFTO0lBUTNCLFlBQW1CLE1BQTBCLEVBQUUsUUFBZ0I7UUFDN0QsSUFBSSxDQUFDLFVBQVUsR0FBRyxRQUFRLENBQUM7UUFDM0IsSUFBSSxDQUFDLFVBQVUsR0FBRyxtQkFBbUIsQ0FBQyxNQUFNLEVBQUU7WUFDNUMsU0FBUyxFQUFFLENBQUMsTUFBTSxFQUFFLEVBQUU7Z0JBRXBCLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFFM0IsT0FBTyxNQUFNLENBQUMsT0FBTyxDQUFDO2dCQUN4QixDQUFDO2dCQUNELE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUM7U0FDRixDQUFDLENBQUM7SUFDTCxDQUFDO0lBUU0sS0FBSyxDQUFDLElBQUk7UUFDZixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxFQUFFLENBQUM7SUFDaEMsQ0FBQztJQVNNLEdBQUc7UUFDUixPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxFQUFFLENBQUM7SUFDL0IsQ0FBQztJQUtNLFdBQVc7UUFDaEIsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDO0lBQ3pCLENBQUM7SUFhTSxJQUFJO1FBQ1QsT0FBTyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQXNCRCxNQUFNLFVBQVUsZUFBZSxDQUM3QixRQUFnQixFQUNoQixNQUEwQjtJQUUxQixJQUFJLFFBQVEsR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLFFBQVEsQ0FBQyxDQUFDO0lBQzdDLElBQUksUUFBUSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3JCLFFBQVEsR0FBRyxJQUFJLFlBQVksQ0FBQyxNQUFNLEVBQUUsUUFBUSxDQUFDLENBQUM7UUFDOUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDMUMsQ0FBQztJQUNELE9BQU8sUUFBUSxDQUFDO0FBQ2xCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFJlc291cmNlUGFnZUxvYWRlciwgUmVzb3VyY2VQYWdlUmV0dXJuIH0gZnJvbSAnLi90eXBlcy5qcyc7XG5pbXBvcnQgeyBjcmVhdGVBc3luY1Jlc291cmNlIH0gZnJvbSAnLi9hc3luY1Jlc291cmNlLmpzJztcblxuLyoqXG4gKiBBIGNhY2hlIG9mIHJlc291cmNlcyB0byBhdm9pZCBsb2FkaW5nIHRoZSBzYW1lIG1vZHVsZSB0d2ljZS4gVGhpcyBpcyBpbXBvcnRhbnRcbiAqIGJlY2F1c2UgV2VicGFjayBkeW5hbWljIGltcG9ydHMgb25seSBleHBvc2UgYW4gYXN5bmNocm9ub3VzIEFQSSBmb3IgbG9hZGluZ1xuICogbW9kdWxlcywgc28gdG8gYmUgYWJsZSB0byBhY2Nlc3MgYWxyZWFkeS1sb2FkZWQgbW9kdWxlcyBzeW5jaHJvbm91c2x5IHdlXG4gKiBtdXN0IGhhdmUgc3RvcmVkIHRoZSBwcmV2aW91cyByZXN1bHQgc29tZXdoZXJlLlxuICovXG5jb25zdCByZXNvdXJjZVBhZ2VNYXAgPSBuZXcgTWFwPHN0cmluZywgUmVzb3VyY2VQYWdlPigpO1xuXG4vKipcbiAqIEEgcmVzb3VyY2UgbWFuYWdlciBmb3IgbGF6eS1sb2FkZWQgUmVhY3QgY29tcG9uZW50cyB3aXRoIFN1c3BlbnNlIGludGVncmF0aW9uLlxuICogVGhpcyBjbGFzcyBoYW5kbGVzIHRoZSBsb2FkaW5nIHN0YXRlLCBjYWNoaW5nLCBhbmQgU3VzcGVuc2UgaW50ZWdyYXRpb24gZm9yXG4gKiBkeW5hbWljYWxseSBpbXBvcnRlZCBjb21wb25lbnRzLlxuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCByZXNvdXJjZSA9IG5ldyBSZXNvdXJjZVBhZ2UoXG4gKiAgICgpID0+IGltcG9ydCgnLi9NeUNvbXBvbmVudCcpLFxuICogICAnTXlDb21wb25lbnQnXG4gKiApO1xuICpcbiAqIC8vIEluIGEgUmVhY3QgY29tcG9uZW50IHdpdGggU3VzcGVuc2UgYm91bmRhcnk6XG4gKiBjb25zdCBDb21wb25lbnQgPSByZXNvdXJjZS5yZWFkKCk7XG4gKiByZXR1cm4gPENvbXBvbmVudCAvPjtcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgUmVzb3VyY2VQYWdlIHtcbiAgcHJpdmF0ZSBfX3Jlc291cmNlO1xuXG4gIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyByZXNvdXJjZSAqL1xuICBwcml2YXRlIF9fbW9kdWxlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBSZXNvdXJjZVBhZ2UgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBsb2FkZXIgLSBGdW5jdGlvbiB0aGF0IHJldHVybnMgYSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgY29tcG9uZW50XG4gICAqIEBwYXJhbSBtb2R1bGVJZCAtIFVuaXF1ZSBpZGVudGlmaWVyIGZvciBjYWNoaW5nIHB1cnBvc2VzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IobG9hZGVyOiBSZXNvdXJjZVBhZ2VMb2FkZXIsIG1vZHVsZUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9fbW9kdWxlSWQgPSBtb2R1bGVJZDtcbiAgICB0aGlzLl9fcmVzb3VyY2UgPSBjcmVhdGVBc3luY1Jlc291cmNlKGxvYWRlciwge1xuICAgICAgbm9ybWFsaXplOiAocmVzdWx0KSA9PiB7XG4gICAgICAgIC8vIEB0cy1leHBlY3QtZXJyb3I6IE9LXG4gICAgICAgIGlmIChyZXN1bHQuZGVmYXVsdCAhPSBudWxsKSB7XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogT0tcbiAgICAgICAgICByZXR1cm4gcmVzdWx0LmRlZmF1bHQ7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0sXG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZHMgdGhlIHJlc291cmNlIGlmIG5vdCBhbHJlYWR5IGxvYWRlZCBvciBsb2FkaW5nLlxuICAgKiBUaGlzIG1ldGhvZCBjYW4gYmUgY2FsbGVkIG11bHRpcGxlIHRpbWVzIHNhZmVseSAtIGl0IHdpbGwgcmV0dXJuIHRoZSBzYW1lIHByb21pc2UuXG4gICAqXG4gICAqIEByZXR1cm5zIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbG9hZGVkIGNvbXBvbmVudFxuICAgKi9cbiAgcHVibGljIGFzeW5jIGxvYWQoKTogUHJvbWlzZTxSZXNvdXJjZVBhZ2VSZXR1cm4+IHtcbiAgICByZXR1cm4gdGhpcy5fX3Jlc291cmNlLmxvYWQoKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBsb2FkZWQgY29tcG9uZW50IGlmIGF2YWlsYWJsZSwgdW5kZWZpbmVkIG90aGVyd2lzZS5cbiAgICogVGhpcyBtZXRob2QgY2FuIGJlIHVzZWQgdG8gY2hlY2sgaWYgdGhlIGNvbXBvbmVudCBpcyBhbHJlYWR5IGxvYWRlZFxuICAgKiB3aXRob3V0IHRyaWdnZXJpbmcgYSBsb2FkIG9yIHRocm93aW5nIGFuIGVycm9yLlxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgbG9hZGVkIGNvbXBvbmVudCBvciB1bmRlZmluZWQgaWYgbm90IHlldCBsb2FkZWRcbiAgICovXG4gIHB1YmxpYyBnZXQoKTogUmVzb3VyY2VQYWdlUmV0dXJuIHwgdW5kZWZpbmVkIHtcbiAgICByZXR1cm4gdGhpcy5fX3Jlc291cmNlLmdldCgpO1xuICB9XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdGhlIG1vZHVsZSBpZGVudGlmaWVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHJlc291cmNlIChkZWJ1ZyBoZWxwZXIpLlxuICAgKi9cbiAgcHVibGljIGdldE1vZHVsZUlkKCk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuX19tb2R1bGVJZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZWFkcyB0aGUgcmVzb3VyY2Ugd2l0aCBSZWFjdCBTdXNwZW5zZSBpbnRlZ3JhdGlvbi5cbiAgICogVGhpcyBpcyB0aGUga2V5IG1ldGhvZCBmb3IgaW50ZWdyYXRpbmcgd2l0aCBSZWFjdCBTdXNwZW5zZTpcbiAgICogLSBSZXR1cm5zIHRoZSBjb21wb25lbnQgaWYgbG9hZGVkXG4gICAqIC0gVGhyb3dzIGFuIGVycm9yIGlmIGxvYWRpbmcgZmFpbGVkXG4gICAqIC0gVGhyb3dzIGEgUHJvbWlzZSBpZiBzdGlsbCBsb2FkaW5nIChTdXNwZW5zZSB3aWxsIGNhdGNoIHRoaXMpXG4gICAqXG4gICAqIEByZXR1cm5zIFRoZSBsb2FkZWQgY29tcG9uZW50XG4gICAqIEB0aHJvd3MgUHJvbWlzZSB3aGVuIGxvYWRpbmcgKGNhdWdodCBieSBTdXNwZW5zZSlcbiAgICogQHRocm93cyBFcnJvciB3aGVuIGxvYWRpbmcgZmFpbGVkXG4gICAqL1xuICBwdWJsaWMgcmVhZCgpOiBSZXNvdXJjZVBhZ2VSZXR1cm4gfCBQcm9taXNlPFJlc291cmNlUGFnZVJldHVybj4gfCBFcnJvciB7XG4gICAgcmV0dXJuIHRoaXMuX19yZXNvdXJjZS5yZWFkKCk7XG4gIH1cbn1cblxuLyoqXG4gKiBGYWN0b3J5IGZ1bmN0aW9uIHRvIGNyZWF0ZSBvciByZXRyaWV2ZSBhIGNhY2hlZCBSZXNvdXJjZVBhZ2UgaW5zdGFuY2UuXG4gKiBUaGlzIGZ1bmN0aW9uIGltcGxlbWVudHMgYSBzaW5nbGV0b24gcGF0dGVybiBwZXIgbW9kdWxlSWQgdG8gZW5zdXJlIHRoYXRcbiAqIHRoZSBzYW1lIGNvbXBvbmVudCBpcyBub3QgbG9hZGVkIG11bHRpcGxlIHRpbWVzLlxuICpcbiAqIEBwYXJhbSBtb2R1bGVJZCAtIEdsb2JhbGx5IHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGUgcmVzb3VyY2UgdXNlZCBmb3IgY2FjaGluZ1xuICogQHBhcmFtIGxvYWRlciAtIEZ1bmN0aW9uIHRoYXQgcmV0dXJucyBhIFByb21pc2UgcmVzb2x2aW5nIHRvIHRoZSBjb21wb25lbnRcbiAqIEByZXR1cm5zIFJlc291cmNlUGFnZSBpbnN0YW5jZSAoY2FjaGVkIGlmIHByZXZpb3VzbHkgY3JlYXRlZClcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogLy8gQ3JlYXRlIGEgcmVzb3VyY2UgZm9yIGxhenkgbG9hZGluZ1xuICogY29uc3QgcmVzb3VyY2UgPSBnZXRSZXNvdXJjZVBhZ2UoJ1VzZXJQcm9maWxlJywgKCkgPT4gaW1wb3J0KCcuL1VzZXJQcm9maWxlJykpO1xuICogcmVzb3VyY2UubG9hZCgpO1xuICpcbiAqIC8vIEluIGEgUmVhY3QgY29tcG9uZW50IHdpdGggU3VzcGVuc2UgYm91bmRhcnk6XG4gKiBjb25zdCBVc2VyUHJvZmlsZSA9IHJlc291cmNlLnJlYWQoKTtcbiAqIHJldHVybiA8VXNlclByb2ZpbGUgdXNlcklkPXt1c2VySWR9IC8+O1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRSZXNvdXJjZVBhZ2UoXG4gIG1vZHVsZUlkOiBzdHJpbmcsXG4gIGxvYWRlcjogUmVzb3VyY2VQYWdlTG9hZGVyLFxuKTogUmVzb3VyY2VQYWdlIHwgbnVsbCB7XG4gIGxldCByZXNvdXJjZSA9IHJlc291cmNlUGFnZU1hcC5nZXQobW9kdWxlSWQpO1xuICBpZiAocmVzb3VyY2UgPT0gbnVsbCkge1xuICAgIHJlc291cmNlID0gbmV3IFJlc291cmNlUGFnZShsb2FkZXIsIG1vZHVsZUlkKTtcbiAgICByZXNvdXJjZVBhZ2VNYXAuc2V0KG1vZHVsZUlkLCByZXNvdXJjZSk7XG4gIH1cbiAgcmV0dXJuIHJlc291cmNlO1xufVxuIl19
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { MaybePromise, ReadableResource } from './types.js';
|
|
2
|
+
type CreateAsyncResourceOptions<TInput, TValue> = {
|
|
3
|
+
normalize?: (input: TInput) => TValue;
|
|
4
|
+
};
|
|
5
|
+
export declare function isPromiseLike<T>(value: unknown): value is PromiseLike<T>;
|
|
6
|
+
export declare function createAsyncResource<TInput, TValue = TInput>(loader: () => MaybePromise<TInput>, options?: CreateAsyncResourceOptions<TInput, TValue>): ReadableResource<TValue>;
|
|
7
|
+
export {};
|
|
8
|
+
//# sourceMappingURL=asyncResource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"asyncResource.d.ts","sourceRoot":"","sources":["../../src/asyncResource.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AASjE,KAAK,0BAA0B,CAAC,MAAM,EAAE,MAAM,IAAI;IAChD,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,MAAM,CAAC;CACvC,CAAC;AAYF,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,WAAW,CAAC,CAAC,CAAC,CAOxE;AASD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EACzD,MAAM,EAAE,MAAM,YAAY,CAAC,MAAM,CAAC,EAClC,OAAO,CAAC,EAAE,0BAA0B,CAAC,MAAM,EAAE,MAAM,CAAC,GACnD,gBAAgB,CAAC,MAAM,CAAC,CAyG1B"}
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
function identity(value) {
|
|
2
|
+
return value;
|
|
3
|
+
}
|
|
4
|
+
export function isPromiseLike(value) {
|
|
5
|
+
return (typeof value === 'object' &&
|
|
6
|
+
value != null &&
|
|
7
|
+
'then' in value &&
|
|
8
|
+
typeof value.then === 'function');
|
|
9
|
+
}
|
|
10
|
+
export function createAsyncResource(loader, options) {
|
|
11
|
+
const normalize = options?.normalize ?? identity;
|
|
12
|
+
const state = {
|
|
13
|
+
error: null,
|
|
14
|
+
promise: null,
|
|
15
|
+
status: 'idle',
|
|
16
|
+
value: undefined,
|
|
17
|
+
};
|
|
18
|
+
function isResolved() {
|
|
19
|
+
return state.status === 'resolved';
|
|
20
|
+
}
|
|
21
|
+
function runLoad() {
|
|
22
|
+
let resolved;
|
|
23
|
+
try {
|
|
24
|
+
resolved = loader();
|
|
25
|
+
}
|
|
26
|
+
catch (error) {
|
|
27
|
+
state.error = error;
|
|
28
|
+
state.promise = null;
|
|
29
|
+
state.status = 'rejected';
|
|
30
|
+
throw error;
|
|
31
|
+
}
|
|
32
|
+
if (!isPromiseLike(resolved)) {
|
|
33
|
+
const normalized = normalize(resolved);
|
|
34
|
+
state.value = normalized;
|
|
35
|
+
state.error = null;
|
|
36
|
+
state.status = 'resolved';
|
|
37
|
+
const settled = Promise.resolve(normalized);
|
|
38
|
+
state.promise = settled;
|
|
39
|
+
return settled;
|
|
40
|
+
}
|
|
41
|
+
state.status = 'pending';
|
|
42
|
+
const pending = Promise.resolve(resolved)
|
|
43
|
+
.then((value) => {
|
|
44
|
+
const normalized = normalize(value);
|
|
45
|
+
state.value = normalized;
|
|
46
|
+
state.error = null;
|
|
47
|
+
state.status = 'resolved';
|
|
48
|
+
const settled = Promise.resolve(normalized);
|
|
49
|
+
state.promise = settled;
|
|
50
|
+
return normalized;
|
|
51
|
+
})
|
|
52
|
+
.catch((error) => {
|
|
53
|
+
state.error = error;
|
|
54
|
+
state.status = 'rejected';
|
|
55
|
+
state.promise = null;
|
|
56
|
+
throw error;
|
|
57
|
+
});
|
|
58
|
+
state.promise = pending;
|
|
59
|
+
return pending;
|
|
60
|
+
}
|
|
61
|
+
return {
|
|
62
|
+
get() {
|
|
63
|
+
return state.value;
|
|
64
|
+
},
|
|
65
|
+
getError() {
|
|
66
|
+
return state.error;
|
|
67
|
+
},
|
|
68
|
+
getStatus() {
|
|
69
|
+
return state.status;
|
|
70
|
+
},
|
|
71
|
+
load() {
|
|
72
|
+
if (state.status === 'resolved') {
|
|
73
|
+
return Promise.resolve(state.value);
|
|
74
|
+
}
|
|
75
|
+
if (state.status === 'rejected') {
|
|
76
|
+
return Promise.reject(state.error);
|
|
77
|
+
}
|
|
78
|
+
if (state.promise != null) {
|
|
79
|
+
return state.promise;
|
|
80
|
+
}
|
|
81
|
+
return runLoad();
|
|
82
|
+
},
|
|
83
|
+
read() {
|
|
84
|
+
if (isResolved()) {
|
|
85
|
+
return state.value;
|
|
86
|
+
}
|
|
87
|
+
if (state.status === 'rejected') {
|
|
88
|
+
throw state.error;
|
|
89
|
+
}
|
|
90
|
+
if (state.promise != null) {
|
|
91
|
+
throw state.promise;
|
|
92
|
+
}
|
|
93
|
+
const pending = runLoad();
|
|
94
|
+
if (isResolved()) {
|
|
95
|
+
return state.value;
|
|
96
|
+
}
|
|
97
|
+
throw pending;
|
|
98
|
+
},
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXN5bmNSZXNvdXJjZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hc3luY1Jlc291cmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQWdCQSxTQUFTLFFBQVEsQ0FBSSxLQUFRO0lBQzNCLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQztBQUtELE1BQU0sVUFBVSxhQUFhLENBQUksS0FBYztJQUM3QyxPQUFPLENBQ0wsT0FBTyxLQUFLLEtBQUssUUFBUTtRQUN6QixLQUFLLElBQUksSUFBSTtRQUNiLE1BQU0sSUFBSSxLQUFLO1FBQ2YsT0FBTyxLQUFLLENBQUMsSUFBSSxLQUFLLFVBQVUsQ0FDakMsQ0FBQztBQUNKLENBQUM7QUFTRCxNQUFNLFVBQVUsbUJBQW1CLENBQ2pDLE1BQWtDLEVBQ2xDLE9BQW9EO0lBRXBELE1BQU0sU0FBUyxHQUNiLE9BQU8sRUFBRSxTQUFTLElBQUssUUFBc0MsQ0FBQztJQUNoRSxNQUFNLEtBQUssR0FBK0I7UUFDeEMsS0FBSyxFQUFFLElBQUk7UUFDWCxPQUFPLEVBQUUsSUFBSTtRQUNiLE1BQU0sRUFBRSxNQUFNO1FBQ2QsS0FBSyxFQUFFLFNBQVM7S0FDakIsQ0FBQztJQUtGLFNBQVMsVUFBVTtRQUNqQixPQUFPLEtBQUssQ0FBQyxNQUFNLEtBQUssVUFBVSxDQUFDO0lBQ3JDLENBQUM7SUFNRCxTQUFTLE9BQU87UUFDZCxJQUFJLFFBQThCLENBQUM7UUFDbkMsSUFBSSxDQUFDO1lBQ0gsUUFBUSxHQUFHLE1BQU0sRUFBRSxDQUFDO1FBQ3RCLENBQUM7UUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1lBQ2YsS0FBSyxDQUFDLEtBQUssR0FBRyxLQUFLLENBQUM7WUFDcEIsS0FBSyxDQUFDLE9BQU8sR0FBRyxJQUFJLENBQUM7WUFDckIsS0FBSyxDQUFDLE1BQU0sR0FBRyxVQUFVLENBQUM7WUFDMUIsTUFBTSxLQUFLLENBQUM7UUFDZCxDQUFDO1FBRUQsSUFBSSxDQUFDLGFBQWEsQ0FBUyxR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QkFDakIsT0FBTyxLQUFLLENBQUMsS0FBZSxDQUFDO1lBQy9CLENBQUM7WUFFRCxNQUFNLE9BQU8sQ0FBQztRQUNoQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IE1heWJlUHJvbWlzZSwgUmVhZGFibGVSZXNvdXJjZSB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG50eXBlIEFzeW5jUmVzb3VyY2VTdGF0ZTxUPiA9IHtcbiAgZXJyb3I6IHVua25vd247XG4gIHByb21pc2U6IFByb21pc2U8VD4gfCBudWxsO1xuICBzdGF0dXM6ICdpZGxlJyB8ICdwZW5kaW5nJyB8ICdyZXNvbHZlZCcgfCAncmVqZWN0ZWQnO1xuICB2YWx1ZTogVCB8IHVuZGVmaW5lZDtcbn07XG5cbnR5cGUgQ3JlYXRlQXN5bmNSZXNvdXJjZU9wdGlvbnM8VElucHV0LCBUVmFsdWU+ID0ge1xuICBub3JtYWxpemU/OiAoaW5wdXQ6IFRJbnB1dCkgPT4gVFZhbHVlO1xufTtcblxuLyoqXG4gKiBSZXR1cm5zIHRoZSBnaXZlbiB2YWx1ZSB1bmNoYW5nZWQuXG4gKi9cbmZ1bmN0aW9uIGlkZW50aXR5PFQ+KHZhbHVlOiBUKTogVCB7XG4gIHJldHVybiB2YWx1ZTtcbn1cblxuLyoqXG4gKiBEZXRlY3RzIHByb21pc2UtbGlrZSBvYmplY3RzIHVzZWQgYnkgcmVzb3VyY2UgbG9hZGVycy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGlzUHJvbWlzZUxpa2U8VD4odmFsdWU6IHVua25vd24pOiB2YWx1ZSBpcyBQcm9taXNlTGlrZTxUPiB7XG4gIHJldHVybiAoXG4gICAgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0JyAmJlxuICAgIHZhbHVlICE9IG51bGwgJiZcbiAgICAndGhlbicgaW4gdmFsdWUgJiZcbiAgICB0eXBlb2YgdmFsdWUudGhlbiA9PT0gJ2Z1bmN0aW9uJ1xuICApO1xufVxuXG4vKipcbiAqIENyZWF0ZXMgYSBzbWFsbCBTdXNwZW5zZS1mcmllbmRseSByZXNvdXJjZSBhcm91bmQgc3luYyBvciBhc3luYyBsb2FkZXJzLlxuICpcbiAqIEBwYXJhbSBsb2FkZXIgLSBGdW5jdGlvbiByZXR1cm5pbmcgdGhlIHJhdyB2YWx1ZSBvciBhIHByb21pc2UgZm9yIGl0LlxuICogQHBhcmFtIG9wdGlvbnMgLSBPcHRpb25hbCBub3JtYWxpemF0aW9uIHN0ZXAgYXBwbGllZCBiZWZvcmUgc3RvcmluZyB0aGUgdmFsdWUuXG4gKiBAcmV0dXJucyBSZWFkYWJsZSByZXNvdXJjZSBleHBvc2luZyBzeW5jIHJlYWRzIGFuZCBleHBsaWNpdCBsb2FkaW5nIHN0YXRlLlxuICovXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQXN5bmNSZXNvdXJjZTxUSW5wdXQsIFRWYWx1ZSA9IFRJbnB1dD4oXG4gIGxvYWRlcjogKCkgPT4gTWF5YmVQcm9taXNlPFRJbnB1dD4sXG4gIG9wdGlvbnM/OiBDcmVhdGVBc3luY1Jlc291cmNlT3B0aW9uczxUSW5wdXQsIFRWYWx1ZT4sXG4pOiBSZWFkYWJsZVJlc291cmNlPFRWYWx1ZT4ge1xuICBjb25zdCBub3JtYWxpemUgPVxuICAgIG9wdGlvbnM/Lm5vcm1hbGl6ZSA/PyAoaWRlbnRpdHkgYXMgKHZhbHVlOiBUSW5wdXQpID0+IFRWYWx1ZSk7XG4gIGNvbnN0IHN0YXRlOiBBc3luY1Jlc291cmNlU3RhdGU8VFZhbHVlPiA9IHtcbiAgICBlcnJvcjogbnVsbCxcbiAgICBwcm9taXNlOiBudWxsLFxuICAgIHN0YXR1czogJ2lkbGUnLFxuICAgIHZhbHVlOiB1bmRlZmluZWQsXG4gIH07XG5cbiAgLyoqXG4gICAqIFJldHVybnMgdHJ1ZSB3aGVuIHRoZSByZXNvdXJjZSBoYXMgYWxyZWFkeSByZXNvbHZlZC5cbiAgICovXG4gIGZ1bmN0aW9uIGlzUmVzb2x2ZWQoKTogYm9vbGVhbiB7XG4gICAgcmV0dXJuIHN0YXRlLnN0YXR1cyA9PT0gJ3Jlc29sdmVkJztcbiAgfVxuXG4gIC8qKlxuICAgKiBFeGVjdXRlcyB0aGUgbG9hZGVyIGFuZCBzdG9yZXMgdGhlIHJlc3VsdGluZyBzdGF0ZSB0cmFuc2l0aW9uLlxuICAgKi9cbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9wcm9taXNlLWZ1bmN0aW9uLWFzeW5jXG4gIGZ1bmN0aW9uIHJ1bkxvYWQoKTogUHJvbWlzZTxUVmFsdWU+IHtcbiAgICBsZXQgcmVzb2x2ZWQ6IE1heWJlUHJvbWlzZTxUSW5wdXQ+O1xuICAgIHRyeSB7XG4gICAgICByZXNvbHZlZCA9IGxvYWRlcigpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBzdGF0ZS5lcnJvciA9IGVycm9yO1xuICAgICAgc3RhdGUucHJvbWlzZSA9IG51bGw7XG4gICAgICBzdGF0ZS5zdGF0dXMgPSAncmVqZWN0ZWQnO1xuICAgICAgdGhyb3cgZXJyb3I7XG4gICAgfVxuXG4gICAgaWYgKCFpc1Byb21pc2VMaWtlPFRJbnB1dD4ocmVzb2x2ZWQpKSB7XG4gICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplKHJlc29sdmVkKTtcbiAgICAgIHN0YXRlLnZhbHVlID0gbm9ybWFsaXplZDtcbiAgICAgIHN0YXRlLmVycm9yID0gbnVsbDtcbiAgICAgIHN0YXRlLnN0YXR1cyA9ICdyZXNvbHZlZCc7XG4gICAgICBjb25zdCBzZXR0bGVkID0gUHJvbWlzZS5yZXNvbHZlKG5vcm1hbGl6ZWQpO1xuICAgICAgc3RhdGUucHJvbWlzZSA9IHNldHRsZWQ7XG4gICAgICByZXR1cm4gc2V0dGxlZDtcbiAgICB9XG5cbiAgICBzdGF0ZS5zdGF0dXMgPSAncGVuZGluZyc7XG4gICAgY29uc3QgcGVuZGluZyA9IFByb21pc2UucmVzb2x2ZShyZXNvbHZlZClcbiAgICAgIC50aGVuKCh2YWx1ZSkgPT4ge1xuICAgICAgICBjb25zdCBub3JtYWxpemVkID0gbm9ybWFsaXplKHZhbHVlKTtcbiAgICAgICAgc3RhdGUudmFsdWUgPSBub3JtYWxpemVkO1xuICAgICAgICBzdGF0ZS5lcnJvciA9IG51bGw7XG4gICAgICAgIHN0YXRlLnN0YXR1cyA9ICdyZXNvbHZlZCc7XG4gICAgICAgIGNvbnN0IHNldHRsZWQgPSBQcm9taXNlLnJlc29sdmUobm9ybWFsaXplZCk7XG4gICAgICAgIHN0YXRlLnByb21pc2UgPSBzZXR0bGVkO1xuICAgICAgICByZXR1cm4gbm9ybWFsaXplZDtcbiAgICAgIH0pXG4gICAgICAuY2F0Y2goKGVycm9yKSA9PiB7XG4gICAgICAgIHN0YXRlLmVycm9yID0gZXJyb3I7XG4gICAgICAgIHN0YXRlLnN0YXR1cyA9ICdyZWplY3RlZCc7XG4gICAgICAgIHN0YXRlLnByb21pc2UgPSBudWxsO1xuICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH0pO1xuICAgIHN0YXRlLnByb21pc2UgPSBwZW5kaW5nO1xuICAgIHJldHVybiBwZW5kaW5nO1xuICB9XG5cbiAgcmV0dXJuIHtcbiAgICBnZXQoKSB7XG4gICAgICByZXR1cm4gc3RhdGUudmFsdWU7XG4gICAgfSxcbiAgICBnZXRFcnJvcigpIHtcbiAgICAgIHJldHVybiBzdGF0ZS5lcnJvcjtcbiAgICB9LFxuICAgIGdldFN0YXR1cygpIHtcbiAgICAgIHJldHVybiBzdGF0ZS5zdGF0dXM7XG4gICAgfSxcbiAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L3Byb21pc2UtZnVuY3Rpb24tYXN5bmNcbiAgICBsb2FkKCkge1xuICAgICAgaWYgKHN0YXRlLnN0YXR1cyA9PT0gJ3Jlc29sdmVkJykge1xuICAgICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHN0YXRlLnZhbHVlIGFzIFRWYWx1ZSk7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAncmVqZWN0ZWQnKSB7XG4gICAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChzdGF0ZS5lcnJvcik7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGUucHJvbWlzZSAhPSBudWxsKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS5wcm9taXNlO1xuICAgICAgfVxuICAgICAgcmV0dXJuIHJ1bkxvYWQoKTtcbiAgICB9LFxuICAgIHJlYWQoKSB7XG4gICAgICBpZiAoaXNSZXNvbHZlZCgpKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS52YWx1ZSBhcyBUVmFsdWU7XG4gICAgICB9XG4gICAgICBpZiAoc3RhdGUuc3RhdHVzID09PSAncmVqZWN0ZWQnKSB7XG4gICAgICAgIHRocm93IHN0YXRlLmVycm9yO1xuICAgICAgfVxuICAgICAgaWYgKHN0YXRlLnByb21pc2UgIT0gbnVsbCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L29ubHktdGhyb3ctZXJyb3JcbiAgICAgICAgdGhyb3cgc3RhdGUucHJvbWlzZTtcbiAgICAgIH1cbiAgICAgIGNvbnN0IHBlbmRpbmcgPSBydW5Mb2FkKCk7XG4gICAgICBpZiAoaXNSZXNvbHZlZCgpKSB7XG4gICAgICAgIHJldHVybiBzdGF0ZS52YWx1ZSBhcyBUVmFsdWU7XG4gICAgICB9XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L29ubHktdGhyb3ctZXJyb3JcbiAgICAgIHRocm93IHBlbmRpbmc7XG4gICAgfSxcbiAgfTtcbn1cbiJdfQ==
|
package/lib/esm/builder.d.ts
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { type MatchFunction, type ParamData } from 'path-to-regexp';
|
|
2
|
-
import type { FlatRouteInput, Redirect, AnyRoute } from './types.js';
|
|
3
|
-
export declare class FlatRoute<TParams extends ParamData> {
|
|
2
|
+
import type { FlatRouteInput, Redirect, AnyRoute, UnknownRoute } from './types.js';
|
|
3
|
+
export declare class FlatRoute<TParams extends ParamData, TContext = unknown> {
|
|
4
4
|
path: string;
|
|
5
|
-
routes:
|
|
5
|
+
routes: UnknownRoute<TContext>[];
|
|
6
6
|
matchFunction: MatchFunction<TParams>;
|
|
7
7
|
redirectTo?: string;
|
|
8
|
-
constructor(input: FlatRouteInput<TParams>);
|
|
8
|
+
constructor(input: FlatRouteInput<TParams, TContext>);
|
|
9
9
|
}
|
|
10
|
-
export declare function isRedirect(route: AnyRoute | Redirect): route is Redirect;
|
|
11
|
-
export declare function buildRoute<TContext>(routeConfig: (AnyRoute<TContext> | Redirect)[], parentRoutes?:
|
|
12
|
-
export declare function buildRoutes<TContext>(routeConfig: AnyRoute<TContext>[]): FlatRoute<ParamData>[];
|
|
10
|
+
export declare function isRedirect<TContext>(route: AnyRoute<TContext> | Redirect): route is Redirect;
|
|
11
|
+
export declare function buildRoute<TContext>(routeConfig: (AnyRoute<TContext> | Redirect)[], parentRoutes?: UnknownRoute<TContext>[], prefix?: string): FlatRoute<ParamData, TContext>[];
|
|
12
|
+
export declare function buildRoutes<TContext>(routeConfig: AnyRoute<TContext>[]): FlatRoute<ParamData, TContext>[];
|
|
13
13
|
//# sourceMappingURL=builder.d.ts.map
|
package/lib/esm/builder.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"builder.d.ts","sourceRoot":"","sources":["../../src/builder.ts"],"names":[],"mappings":"AAAA,OAAO,EAAS,KAAK,aAAa,EAAE,KAAK,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3E,OAAO,KAAK,EACV,cAAc,EACd,QAAQ,EACR,QAAQ,EACR,YAAY,EACb,MAAM,YAAY,CAAC;AAQpB,qBAAa,SAAS,CAAC,OAAO,SAAS,SAAS,EAAE,QAAQ,GAAG,OAAO;IAE3D,IAAI,EAAE,MAAM,CAAC;IAGb,MAAM,EAAE,YAAY,CAAC,QAAQ,CAAC,EAAE,CAAC;IAGjC,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAGtC,UAAU,CAAC,EAAE,MAAM,CAAC;gBAOR,KAAK,EAAE,cAAc,CAAC,OAAO,EAAE,QAAQ,CAAC;CAO5D;AAGD,wBAAgB,UAAU,CAAC,QAAQ,EACjC,KAAK,EAAE,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,GACnC,KAAK,IAAI,QAAQ,CAGnB;AASD,wBAAgB,UAAU,CAAC,QAAQ,EACjC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,EAC9C,YAAY,GAAE,YAAY,CAAC,QAAQ,CAAC,EAAO,EAC3C,MAAM,SAAK,GACV,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAmElC;AAOD,wBAAgB,WAAW,CAAC,QAAQ,EAClC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAChC,SAAS,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,CAElC"}
|
package/lib/esm/builder.js
CHANGED
|
@@ -30,9 +30,10 @@ export function buildRoute(routeConfig, parentRoutes = [], prefix = '') {
|
|
|
30
30
|
parts.push(normalized);
|
|
31
31
|
}
|
|
32
32
|
const newPath = parts.join('/');
|
|
33
|
-
const
|
|
33
|
+
const routeDefinition = route;
|
|
34
|
+
const { children } = routeDefinition;
|
|
34
35
|
if (!isRedirect(route) && children != null) {
|
|
35
|
-
const routes = buildRoute(children, [...parentRoutes,
|
|
36
|
+
const routes = buildRoute(children, [...parentRoutes, routeDefinition], newPath);
|
|
36
37
|
flatRoutes.push(...routes);
|
|
37
38
|
continue;
|
|
38
39
|
}
|
|
@@ -59,7 +60,7 @@ export function buildRoute(routeConfig, parentRoutes = [], prefix = '') {
|
|
|
59
60
|
flatRoutes.push(new FlatRoute({
|
|
60
61
|
path,
|
|
61
62
|
matchFunction,
|
|
62
|
-
routes: [...parentRoutes,
|
|
63
|
+
routes: [...parentRoutes, routeDefinition],
|
|
63
64
|
}));
|
|
64
65
|
}
|
|
65
66
|
}
|
|
@@ -68,4 +69,4 @@ export function buildRoute(routeConfig, parentRoutes = [], prefix = '') {
|
|
|
68
69
|
export function buildRoutes(routeConfig) {
|
|
69
70
|
return buildRoute(routeConfig);
|
|
70
71
|
}
|
|
71
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
72
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQXNDLE1BQU0sZ0JBQWdCLENBQUM7QUFlM0UsTUFBTSxPQUFPLFNBQVM7SUFFYixJQUFJLENBQVM7SUFHYixNQUFNLENBQTJCO0lBR2pDLGFBQWEsQ0FBeUI7SUFHdEMsVUFBVSxDQUFVO0lBTzNCLFlBQW1CLEtBQXdDO1FBQ3pELE1BQU0sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDMUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDckMsQ0FBQztDQUNGO0FBR0QsTUFBTSxVQUFVLFVBQVUsQ0FDeEIsS0FBb0M7SUFHcEMsT0FBUSxLQUFrQixDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUM7QUFDeEMsQ0FBQztBQVNELE1BQU0sVUFBVSxVQUFVLENBQ3hCLFdBQThDLEVBQzlDLGVBQXlDLEVBQUUsRUFDM0MsTUFBTSxHQUFHLEVBQUU7SUFFWCxNQUFNLFVBQVUsR0FBcUMsRUFBRSxDQUFDO0lBRXhELEtBQUssTUFBTSxLQUFLLElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNsRSxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQzVCLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMvQixVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVoQyxNQUFNLGVBQWUsR0FBRyxLQUEyQixDQUFDO1FBQ3BELE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxlQUFlLENBQUM7UUFFckMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDM0MsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUN2QixRQUFRLEVBQ1IsQ0FBQyxHQUFHLFlBQVksRUFBRSxlQUFlLENBQUMsRUFDbEMsT0FBTyxDQUNSLENBQUM7WUFDRixVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7WUFFM0IsU0FBUztRQUNYLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxPQUFPLEVBQUUsRUFBRTtZQUN6QyxRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN2QixDQUFDO1FBRUQsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBRTFCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLFVBQVUsR0FBRyxHQUFHLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUN2QyxDQUFDO1lBQ0QsVUFBVSxDQUFDLElBQUksQ0FDYixJQUFJLFNBQVMsQ0FBQztnQkFDWixJQUFJO2dCQUNKLFVBQVU7Z0JBQ1YsYUFBYTtnQkFDYixNQUFNLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQzthQUMxQixDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sVUFBVSxDQUFDLElBQUksQ0FDYixJQUFJLFNBQVMsQ0FBQztnQkFDWixJQUFJO2dCQUNKLGFBQWE7Z0JBQ2IsTUFBTSxFQUFFLENBQUMsR0FBRyxZQUFZLEVBQUUsZUFBZSxDQUFDO2FBQzNDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBT0QsTUFBTSxVQUFVLFdBQVcsQ0FDekIsV0FBaUM7SUFFakMsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hdGNoLCB0eXBlIE1hdGNoRnVuY3Rpb24sIHR5cGUgUGFyYW1EYXRhIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIEZsYXRSb3V0ZUlucHV0LFxuICBSZWRpcmVjdCxcbiAgQW55Um91dGUsXG4gIFVua25vd25Sb3V0ZSxcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGZsYXR0ZW5lZCByb3V0ZSB3aXRoIGEgY29tcGlsZWQgbWF0Y2ggZnVuY3Rpb24uXG4gKiBUaGlzIGlzIGFuIGludGVybmFsIHJlcHJlc2VudGF0aW9uIHVzZWQgYnkgdGhlIHJvdXRlciB0byBlZmZpY2llbnRseSBtYXRjaCBVUkxzLlxuICpcbiAqIEB0ZW1wbGF0ZSBUUGFyYW1zIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgY2xhc3MgRmxhdFJvdXRlPFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGEsIFRDb250ZXh0ID0gdW5rbm93bj4ge1xuICAvKiogVGhlIFVSTCBwYXRoIHBhdHRlcm4gZm9yIHRoaXMgcm91dGUgKi9cbiAgcHVibGljIHBhdGg6IHN0cmluZztcblxuICAvKiogTmVzdGVkIHJvdXRlcyB0aGF0IHNob3VsZCBiZSByZW5kZXJlZCB3aXRoaW4gdGhpcyByb3V0ZSAqL1xuICBwdWJsaWMgcm91dGVzOiBVbmtub3duUm91dGU8VENvbnRleHQ+W107XG5cbiAgLyoqIENvbXBpbGVkIGZ1bmN0aW9uIHRvIG1hdGNoIFVSTCBwYXRocyBhZ2FpbnN0IHRoaXMgcm91dGUgcGF0dGVybiAqL1xuICBwdWJsaWMgbWF0Y2hGdW5jdGlvbjogTWF0Y2hGdW5jdGlvbjxUUGFyYW1zPjtcblxuICAvKiogT3B0aW9uYWwgcmVkaXJlY3QgZGVzdGluYXRpb24gaWYgdGhpcyByb3V0ZSBzaG91bGQgcmVkaXJlY3QgKi9cbiAgcHVibGljIHJlZGlyZWN0VG8/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgRmxhdFJvdXRlIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gaW5wdXQgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgZmxhdCByb3V0ZVxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGlucHV0OiBGbGF0Um91dGVJbnB1dDxUUGFyYW1zLCBUQ29udGV4dD4pIHtcbiAgICBjb25zdCB7IG1hdGNoRnVuY3Rpb24sIHBhdGgsIHJlZGlyZWN0VG8sIHJvdXRlcyB9ID0gaW5wdXQ7XG4gICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICB0aGlzLnJlZGlyZWN0VG8gPSByZWRpcmVjdFRvO1xuICAgIHRoaXMucm91dGVzID0gcm91dGVzO1xuICAgIHRoaXMubWF0Y2hGdW5jdGlvbiA9IG1hdGNoRnVuY3Rpb247XG4gIH1cbn1cblxuLyoqIE5hcnJvdyBhIHJvdXRlIGNvbmZpZ3VyYXRpb24gdG8gYSByZWRpcmVjdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZGlyZWN0PFRDb250ZXh0PihcbiAgcm91dGU6IEFueVJvdXRlPFRDb250ZXh0PiB8IFJlZGlyZWN0LFxuKTogcm91dGUgaXMgUmVkaXJlY3Qge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuICByZXR1cm4gKHJvdXRlIGFzIFJlZGlyZWN0KS50byAhPSBudWxsO1xufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGZsYXR0ZW5zIG5lc3RlZCByb3V0ZSBkZWZpbml0aW9ucyBpbnRvIGBGbGF0Um91dGVgIGVudHJpZXMuXG4gKlxuICogQHBhcmFtIHJvdXRlQ29uZmlnIC0gUm91dGUgb3IgcmVkaXJlY3QgZGVmaW5pdGlvbnMgdG8gcHJvY2Vzcy5cbiAqIEBwYXJhbSBwYXJlbnRSb3V0ZXMgLSBBY2N1bXVsYXRlZCBwYXJlbnQgcm91dGVzIGZvciBuZXN0aW5nIGNvbnRleHQuXG4gKiBAcGFyYW0gcHJlZml4IC0gQ3VycmVudCBwYXRoIHByZWZpeCBwcm9wYWdhdGVkIGZyb20gcGFyZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUm91dGU8VENvbnRleHQ+KFxuICByb3V0ZUNvbmZpZzogKEFueVJvdXRlPFRDb250ZXh0PiB8IFJlZGlyZWN0KVtdLFxuICBwYXJlbnRSb3V0ZXM6IFVua25vd25Sb3V0ZTxUQ29udGV4dD5bXSA9IFtdLFxuICBwcmVmaXggPSAnJyxcbik6IEZsYXRSb3V0ZTxQYXJhbURhdGEsIFRDb250ZXh0PltdIHtcbiAgY29uc3QgZmxhdFJvdXRlczogRmxhdFJvdXRlPFBhcmFtRGF0YSwgVENvbnRleHQ+W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlQ29uZmlnKSB7XG4gICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICBpZiAocHJlZml4ICE9PSAnJykge1xuICAgICAgcGFydHMucHVzaChwcmVmaXgpO1xuICAgIH1cbiAgICBpZiAocm91dGUucGF0aCAhPSBudWxsICYmIHJvdXRlLnBhdGggIT09ICcnICYmIHJvdXRlLnBhdGggIT09ICcvJykge1xuICAgICAgbGV0IG5vcm1hbGl6ZWQgPSByb3V0ZS5wYXRoO1xuICAgICAgaWYgKG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnNsaWNlKDEpO1xuICAgICAgfVxuICAgICAgcGFydHMucHVzaChub3JtYWxpemVkKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdQYXRoID0gcGFydHMuam9pbignLycpO1xuXG4gICAgY29uc3Qgcm91dGVEZWZpbml0aW9uID0gcm91dGUgYXMgQW55Um91dGU8VENvbnRleHQ+O1xuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHJvdXRlRGVmaW5pdGlvbjtcblxuICAgIGlmICghaXNSZWRpcmVjdChyb3V0ZSkgJiYgY2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAgY29uc3Qgcm91dGVzID0gYnVpbGRSb3V0ZShcbiAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgIFsuLi5wYXJlbnRSb3V0ZXMsIHJvdXRlRGVmaW5pdGlvbl0sXG4gICAgICAgIG5ld1BhdGgsXG4gICAgICApO1xuICAgICAgZmxhdFJvdXRlcy5wdXNoKC4uLnJvdXRlcyk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udGludWVcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoRnVuY3Rpb24gPSBtYXRjaChgLyR7bmV3UGF0aH1gLCB7XG4gICAgICB0cmFpbGluZzogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBsZXQgcGF0aCA9IG5ld1BhdGg7XG4gICAgaWYgKCFuZXdQYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgcGF0aCA9IGAvJHtuZXdQYXRofWA7XG4gICAgfVxuXG4gICAgaWYgKGlzUmVkaXJlY3Qocm91dGUpKSB7XG4gICAgICBsZXQgcmVkaXJlY3RUbyA9IHJvdXRlLnRvO1xuXG4gICAgICBpZiAoIXJlZGlyZWN0VG8uc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgIHJlZGlyZWN0VG8gPSBgJHtwYXRofS8ke3JlZGlyZWN0VG99YDtcbiAgICAgIH1cbiAgICAgIGZsYXRSb3V0ZXMucHVzaChcbiAgICAgICAgbmV3IEZsYXRSb3V0ZSh7XG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByZWRpcmVjdFRvLFxuICAgICAgICAgIG1hdGNoRnVuY3Rpb24sXG4gICAgICAgICAgcm91dGVzOiBbLi4ucGFyZW50Um91dGVzXSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBmbGF0Um91dGVzLnB1c2goXG4gICAgICAgIG5ldyBGbGF0Um91dGUoe1xuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgbWF0Y2hGdW5jdGlvbixcbiAgICAgICAgICByb3V0ZXM6IFsuLi5wYXJlbnRSb3V0ZXMsIHJvdXRlRGVmaW5pdGlvbl0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmxhdFJvdXRlcztcbn1cblxuLyoqXG4gKiBUb3AtbGV2ZWwgY29udmVuaWVuY2UgdG8gZmxhdHRlbiBhIHJvdXRlIGNvbmZpZ3VyYXRpb24gaW50byBgRmxhdFJvdXRlYHMuXG4gKlxuICogQHBhcmFtIHJvdXRlQ29uZmlnIC0gUm91dGUgZGVmaW5pdGlvbnMgdG8gZmxhdHRlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUm91dGVzPFRDb250ZXh0PihcbiAgcm91dGVDb25maWc6IEFueVJvdXRlPFRDb250ZXh0PltdLFxuKTogRmxhdFJvdXRlPFBhcmFtRGF0YSwgVENvbnRleHQ+W10ge1xuICByZXR1cm4gYnVpbGRSb3V0ZShyb3V0ZUNvbmZpZyk7XG59XG4iXX0=
|
package/lib/esm/index.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ export * from './routing/index.js';
|
|
|
4
4
|
export * from './builder.js';
|
|
5
5
|
export * from './ResourcePage.js';
|
|
6
6
|
export * from './tools.js';
|
|
7
|
+
export * from './values.js';
|
|
7
8
|
export type * from './types.js';
|
|
8
9
|
export * from './instrumentation/index.js';
|
|
9
10
|
//# sourceMappingURL=index.d.ts.map
|
package/lib/esm/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,cAAc,CAAC;AAG7B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AACA,cAAc,mBAAmB,CAAC;AAGlC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,oBAAoB,CAAC;AAGnC,cAAc,cAAc,CAAC;AAG7B,cAAc,mBAAmB,CAAC;AAGlC,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAG5B,mBAAmB,YAAY,CAAC;AAGhC,cAAc,4BAA4B,CAAC"}
|
package/lib/esm/index.js
CHANGED
|
@@ -4,5 +4,6 @@ export * from './routing/index.js';
|
|
|
4
4
|
export * from './builder.js';
|
|
5
5
|
export * from './ResourcePage.js';
|
|
6
6
|
export * from './tools.js';
|
|
7
|
+
export * from './values.js';
|
|
7
8
|
export * from './instrumentation/index.js';
|
|
8
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
9
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsY0FBYyxtQkFBbUIsQ0FBQztBQUdsQyxjQUFjLG9CQUFvQixDQUFDO0FBR25DLGNBQWMsb0JBQW9CLENBQUM7QUFHbkMsY0FBYyxjQUFjLENBQUM7QUFHN0IsY0FBYyxtQkFBbUIsQ0FBQztBQUdsQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGFBQWEsQ0FBQztBQU01QixjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRXhwb3J0IGVycm9yIGhhbmRsaW5nIHV0aWxpdGllc1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvcnMvaW5kZXguanMnO1xuXG4vLyBFeHBvcnQgYnJvd3NlciBoaXN0b3J5IG1hbmFnZW1lbnRcbmV4cG9ydCAqIGZyb20gJy4vaGlzdG9yeS9pbmRleC5qcyc7XG5cbi8vIEV4cG9ydCByb3V0aW5nIGNvbXBvbmVudHMgYW5kIHV0aWxpdGllc1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0aW5nL2luZGV4LmpzJztcblxuLy8gRXhwb3J0IHJvdXRlIGJ1aWxkaW5nIHV0aWxpdGllc1xuZXhwb3J0ICogZnJvbSAnLi9idWlsZGVyLmpzJztcblxuLy8gRXhwb3J0IHJlc291cmNlIHBhZ2UgbWFuYWdlbWVudCBmb3IgbGF6eSBsb2FkaW5nXG5leHBvcnQgKiBmcm9tICcuL1Jlc291cmNlUGFnZS5qcyc7XG5cbi8vIEV4cG9ydCB1dGlsaXR5IGZ1bmN0aW9uc1xuZXhwb3J0ICogZnJvbSAnLi90b29scy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3ZhbHVlcy5qcyc7XG5cbi8vIEV4cG9ydCBhbGwgVHlwZVNjcmlwdCB0eXBlc1xuZXhwb3J0IHR5cGUgKiBmcm9tICcuL3R5cGVzLmpzJztcblxuLy8gRXhwb3J0IGluc3RydW1lbnRhdGlvbiBoZWxwZXJzXG5leHBvcnQgKiBmcm9tICcuL2luc3RydW1lbnRhdGlvbi9pbmRleC5qcyc7XG4iXX0=
|
|
@@ -1,17 +1,33 @@
|
|
|
1
|
-
import type {
|
|
2
|
-
|
|
1
|
+
import type { AsyncResourceStatus, PreparedValueResource, UnknownFilters } from '../types.js';
|
|
2
|
+
import type { Schema as FilterSchema } from '@plumile/filter-query';
|
|
3
|
+
import type { RouterHistoryActionValue, RouterNavigationSourceValue, RouterPopstateDirectionValue, RouterPreloadModeValue, RouterPrepareStatusValue } from '../values.js';
|
|
4
|
+
export type RouterNavigationSource = RouterNavigationSourceValue;
|
|
3
5
|
export type RouterLocationSnapshot = {
|
|
4
6
|
pathname: string;
|
|
5
7
|
search: string;
|
|
6
8
|
hash: string;
|
|
7
9
|
};
|
|
10
|
+
export type RouterPreparedSegmentSnapshot = {
|
|
11
|
+
path?: string;
|
|
12
|
+
fullPath?: string;
|
|
13
|
+
segmentIndex: number;
|
|
14
|
+
preparedResource?: PreparedValueResource;
|
|
15
|
+
redirectTo: string | null;
|
|
16
|
+
highlightId?: string;
|
|
17
|
+
querySchema?: FilterSchema;
|
|
18
|
+
preparedStatus?: AsyncResourceStatus;
|
|
19
|
+
};
|
|
20
|
+
export type RouterPreparedMatchSnapshot = {
|
|
21
|
+
segments: RouterPreparedSegmentSnapshot[];
|
|
22
|
+
routes: RouterPreparedSegmentSnapshot[];
|
|
23
|
+
};
|
|
8
24
|
export type RouterEntrySnapshot = {
|
|
9
25
|
location: RouterLocationSnapshot;
|
|
10
26
|
routePath?: string;
|
|
11
|
-
preparedMatch?:
|
|
12
|
-
filters?:
|
|
13
|
-
filterDiagnostics?:
|
|
14
|
-
activeQuerySchema?:
|
|
27
|
+
preparedMatch?: RouterPreparedMatchSnapshot;
|
|
28
|
+
filters?: UnknownFilters;
|
|
29
|
+
filterDiagnostics?: unknown[];
|
|
30
|
+
activeQuerySchema?: FilterSchema;
|
|
15
31
|
};
|
|
16
32
|
export type RouterEventBase = {
|
|
17
33
|
timestamp: number;
|
|
@@ -26,28 +42,36 @@ export type RouterPreloadEvent = RouterEventBase & {
|
|
|
26
42
|
kind: 'preload';
|
|
27
43
|
source: RouterNavigationSource;
|
|
28
44
|
targetPathname: string;
|
|
29
|
-
mode:
|
|
45
|
+
mode: RouterPreloadModeValue;
|
|
30
46
|
};
|
|
31
47
|
export type RouterHistoryEvent = RouterEventBase & {
|
|
32
48
|
kind: 'history';
|
|
33
49
|
source: RouterNavigationSource;
|
|
34
|
-
action:
|
|
50
|
+
action: RouterHistoryActionValue;
|
|
35
51
|
details?: Record<string, unknown>;
|
|
36
52
|
};
|
|
37
53
|
export type RouterPopstateEvent = RouterEventBase & {
|
|
38
54
|
kind: 'popstate';
|
|
39
55
|
source: RouterNavigationSource;
|
|
40
|
-
direction:
|
|
56
|
+
direction: RouterPopstateDirectionValue;
|
|
41
57
|
details?: Record<string, unknown>;
|
|
42
58
|
};
|
|
43
|
-
export type
|
|
44
|
-
kind: 'prepare-start'
|
|
59
|
+
export type RouterPrepareStartEvent = RouterEventBase & {
|
|
60
|
+
kind: 'prepare-start';
|
|
61
|
+
source: RouterNavigationSource;
|
|
62
|
+
routePath?: string;
|
|
63
|
+
moduleId?: string;
|
|
64
|
+
};
|
|
65
|
+
export type RouterPrepareCompleteEvent = RouterEventBase & {
|
|
66
|
+
kind: 'prepare-complete';
|
|
45
67
|
source: RouterNavigationSource;
|
|
46
68
|
routePath?: string;
|
|
47
69
|
moduleId?: string;
|
|
48
|
-
durationMs
|
|
49
|
-
hasPrepared
|
|
70
|
+
durationMs: number;
|
|
71
|
+
hasPrepared: boolean;
|
|
72
|
+
status: Exclude<RouterPrepareStatusValue, 'pending'>;
|
|
50
73
|
};
|
|
74
|
+
export type RouterPrepareEvent = RouterPrepareStartEvent | RouterPrepareCompleteEvent;
|
|
51
75
|
export type RouterEvent = RouterSnapshotEvent | RouterPreloadEvent | RouterHistoryEvent | RouterPopstateEvent | RouterPrepareEvent;
|
|
52
76
|
export type InstrumentationAPI = {
|
|
53
77
|
onEvent?: (event: RouterEvent) => void;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Instrumentation.d.ts","sourceRoot":"","sources":["../../../src/instrumentation/Instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"Instrumentation.d.ts","sourceRoot":"","sources":["../../../src/instrumentation/Instrumentation.ts"],"names":[],"mappings":"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"}
|