@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.
Files changed (56) hide show
  1. package/README.md +78 -2
  2. package/lib/esm/ResourcePage.d.ts +1 -5
  3. package/lib/esm/ResourcePage.d.ts.map +1 -1
  4. package/lib/esm/ResourcePage.js +13 -42
  5. package/lib/esm/asyncResource.d.ts +8 -0
  6. package/lib/esm/asyncResource.d.ts.map +1 -0
  7. package/lib/esm/asyncResource.js +101 -0
  8. package/lib/esm/builder.d.ts +7 -7
  9. package/lib/esm/builder.d.ts.map +1 -1
  10. package/lib/esm/builder.js +5 -4
  11. package/lib/esm/index.d.ts +1 -0
  12. package/lib/esm/index.d.ts.map +1 -1
  13. package/lib/esm/index.js +2 -1
  14. package/lib/esm/instrumentation/Instrumentation.d.ts +37 -13
  15. package/lib/esm/instrumentation/Instrumentation.d.ts.map +1 -1
  16. package/lib/esm/instrumentation/Instrumentation.js +1 -1
  17. package/lib/esm/prepareResource.d.ts +4 -0
  18. package/lib/esm/prepareResource.d.ts.map +1 -0
  19. package/lib/esm/prepareResource.js +11 -0
  20. package/lib/esm/routing/RouteComponentWrapper.d.ts.map +1 -1
  21. package/lib/esm/routing/RouteComponentWrapper.js +14 -3
  22. package/lib/esm/routing/createRouter.d.ts +9 -3
  23. package/lib/esm/routing/createRouter.d.ts.map +1 -1
  24. package/lib/esm/routing/createRouter.js +155 -145
  25. package/lib/esm/tools.d.ts +7 -4
  26. package/lib/esm/tools.d.ts.map +1 -1
  27. package/lib/esm/tools.js +93 -21
  28. package/lib/esm/types.d.ts +131 -54
  29. package/lib/esm/types.d.ts.map +1 -1
  30. package/lib/esm/types.js +1 -1
  31. package/lib/esm/values.d.ts +19 -0
  32. package/lib/esm/values.d.ts.map +1 -0
  33. package/lib/esm/values.js +53 -0
  34. package/lib/tsconfig.esm.tsbuildinfo +1 -1
  35. package/lib/types/ResourcePage.d.ts +1 -5
  36. package/lib/types/ResourcePage.d.ts.map +1 -1
  37. package/lib/types/asyncResource.d.ts +8 -0
  38. package/lib/types/asyncResource.d.ts.map +1 -0
  39. package/lib/types/builder.d.ts +7 -7
  40. package/lib/types/builder.d.ts.map +1 -1
  41. package/lib/types/index.d.ts +1 -0
  42. package/lib/types/index.d.ts.map +1 -1
  43. package/lib/types/instrumentation/Instrumentation.d.ts +37 -13
  44. package/lib/types/instrumentation/Instrumentation.d.ts.map +1 -1
  45. package/lib/types/prepareResource.d.ts +4 -0
  46. package/lib/types/prepareResource.d.ts.map +1 -0
  47. package/lib/types/routing/RouteComponentWrapper.d.ts.map +1 -1
  48. package/lib/types/routing/createRouter.d.ts +9 -3
  49. package/lib/types/routing/createRouter.d.ts.map +1 -1
  50. package/lib/types/tools.d.ts +7 -4
  51. package/lib/types/tools.d.ts.map +1 -1
  52. package/lib/types/types.d.ts +131 -54
  53. package/lib/types/types.d.ts.map +1 -1
  54. package/lib/types/values.d.ts +19 -0
  55. package/lib/types/values.d.ts.map +1 -0
  56. 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 preload data (receives `context`)
211
- - `render?`: Custom render function (receives `context`)
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 __error;
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;AA2BzE,qBAAa,YAAY;IAEvB,OAAO,CAAC,OAAO,CAAe;IAG9B,OAAO,CAAC,QAAQ,CAAqB;IAGrC,OAAO,CAAC,SAAS,CAAqC;IAGtD,OAAO,CAAC,QAAQ,CAA4B;IAG5C,OAAO,CAAC,UAAU,CAAS;gBAQR,MAAM,EAAE,kBAAkB,EAAE,QAAQ,EAAE,MAAM;IAclD,IAAI,IAAI,OAAO,CAAC,kBAAkB,CAAC;IA8BzC,GAAG,IAAI,kBAAkB,GAAG,SAAS;IAWrC,WAAW,IAAI,MAAM;IAerB,IAAI,IAAI,kBAAkB,GAAG,OAAO,CAAC,kBAAkB,CAAC,GAAG,KAAK;YAkBzD,MAAM;CAKrB;AAsBD,wBAAgB,eAAe,CAC7B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,kBAAkB,GACzB,YAAY,GAAG,IAAI,CAOrB"}
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"}
@@ -1,59 +1,30 @@
1
+ import { createAsyncResource } from './asyncResource.js';
1
2
  const resourcePageMap = new Map();
2
3
  export class ResourcePage {
3
- __error;
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.__promise = null;
13
- this.__result = null;
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
- result = result.default;
11
+ return result.default;
22
12
  }
23
- this.__result = result;
24
13
  return result;
25
- })
26
- .catch((error) => {
27
- this.__error = error;
28
- throw error;
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
- if (this.__result != null) {
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
- if (this.__result != null) {
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiUmVzb3VyY2VQYWdlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL1Jlc291cmNlUGFnZS50c3giXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBUUEsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQXdCLENBQUM7QUFtQnhELE1BQU0sT0FBTyxZQUFZO0lBRWYsT0FBTyxDQUFlO0lBR3RCLFFBQVEsQ0FBcUI7SUFHN0IsU0FBUyxDQUFxQztJQUc5QyxRQUFRLENBQTRCO0lBR3BDLFVBQVUsQ0FBUztJQVEzQixZQUFtQixNQUEwQixFQUFFLFFBQWdCO1FBQzdELElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxDQUFDO1FBQ3BCLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxDQUFDO1FBQ3ZCLElBQUksQ0FBQyxVQUFVLEdBQUcsUUFBUSxDQUFDO1FBQzNCLElBQUksQ0FBQyxTQUFTLEdBQUcsSUFBSSxDQUFDO1FBQ3RCLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDO0lBQ3ZCLENBQUM7SUFRTSxLQUFLLENBQUMsSUFBSTtRQUNmLElBQUksT0FBTyxHQUFHLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDN0IsSUFBSSxPQUFPLElBQUksSUFBSSxFQUFFLENBQUM7WUFDcEIsT0FBTyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUU7aUJBQ3BCLElBQUksQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFFO2dCQUVmLElBQUksTUFBTSxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztvQkFHM0IsTUFBTSxHQUFHLE1BQU0sQ0FBQyxPQUFPLENBQUM7Z0JBQzFCLENBQUM7Z0JBQ0QsSUFBSSxDQUFDLFFBQVEsR0FBRyxNQUFNLENBQUM7Z0JBQ3ZCLE9BQU8sTUFBTSxDQUFDO1lBQ2hCLENBQUMsQ0FBQztpQkFDRCxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsRUFBRTtnQkFDZixJQUFJLENBQUMsT0FBTyxHQUFHLEtBQUssQ0FBQztnQkFDckIsTUFBTSxLQUFLLENBQUM7WUFDZCxDQUFDLENBQUMsQ0FBQztZQUNMLElBQUksQ0FBQyxTQUFTLEdBQUcsT0FBTyxDQUFDO1FBQzNCLENBQUM7UUFDRCxPQUFPLE9BQU8sQ0FBQztJQUNqQixDQUFDO0lBU00sR0FBRztRQUNSLElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkIsQ0FBQztRQUVELE9BQU8sU0FBUyxDQUFDO0lBQ25CLENBQUM7SUFLTSxXQUFXO1FBQ2hCLE9BQU8sSUFBSSxDQUFDLFVBQVUsQ0FBQztJQUN6QixDQUFDO0lBYU0sSUFBSTtRQUNULElBQUksSUFBSSxDQUFDLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUMxQixPQUFPLElBQUksQ0FBQyxRQUFRLENBQUM7UUFDdkIsQ0FBQztRQUVELElBQUksSUFBSSxDQUFDLE9BQU8sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN6QixNQUFNLElBQUksQ0FBQyxPQUFPLENBQUM7UUFDckIsQ0FBQzthQUFNLENBQUM7WUFFTixNQUFNLElBQUksQ0FBQyxTQUFTLENBQUM7UUFDdkIsQ0FBQztJQUNILENBQUM7SUFPTyxLQUFLLENBQUMsTUFBTTtRQUNsQixNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQztRQUVsQyxPQUFPLE9BQU8sQ0FBQyxPQUFPLENBQUMsTUFBTSxFQUFFLENBQUMsQ0FBQztJQUNuQyxDQUFDO0NBQ0Y7QUFzQkQsTUFBTSxVQUFVLGVBQWUsQ0FDN0IsUUFBZ0IsRUFDaEIsTUFBMEI7SUFFMUIsSUFBSSxRQUFRLEdBQUcsZUFBZSxDQUFDLEdBQUcsQ0FBQyxRQUFRLENBQUMsQ0FBQztJQUM3QyxJQUFJLFFBQVEsSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNyQixRQUFRLEdBQUcsSUFBSSxZQUFZLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQyxDQUFDO1FBQzlDLGVBQWUsQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQzFDLENBQUM7SUFDRCxPQUFPLFFBQVEsQ0FBQztBQUNsQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBSZXNvdXJjZVBhZ2VMb2FkZXIsIFJlc291cmNlUGFnZVJldHVybiB9IGZyb20gJy4vdHlwZXMuanMnO1xuXG4vKipcbiAqIEEgY2FjaGUgb2YgcmVzb3VyY2VzIHRvIGF2b2lkIGxvYWRpbmcgdGhlIHNhbWUgbW9kdWxlIHR3aWNlLiBUaGlzIGlzIGltcG9ydGFudFxuICogYmVjYXVzZSBXZWJwYWNrIGR5bmFtaWMgaW1wb3J0cyBvbmx5IGV4cG9zZSBhbiBhc3luY2hyb25vdXMgQVBJIGZvciBsb2FkaW5nXG4gKiBtb2R1bGVzLCBzbyB0byBiZSBhYmxlIHRvIGFjY2VzcyBhbHJlYWR5LWxvYWRlZCBtb2R1bGVzIHN5bmNocm9ub3VzbHkgd2VcbiAqIG11c3QgaGF2ZSBzdG9yZWQgdGhlIHByZXZpb3VzIHJlc3VsdCBzb21ld2hlcmUuXG4gKi9cbmNvbnN0IHJlc291cmNlUGFnZU1hcCA9IG5ldyBNYXA8c3RyaW5nLCBSZXNvdXJjZVBhZ2U+KCk7XG5cbi8qKlxuICogQSByZXNvdXJjZSBtYW5hZ2VyIGZvciBsYXp5LWxvYWRlZCBSZWFjdCBjb21wb25lbnRzIHdpdGggU3VzcGVuc2UgaW50ZWdyYXRpb24uXG4gKiBUaGlzIGNsYXNzIGhhbmRsZXMgdGhlIGxvYWRpbmcgc3RhdGUsIGNhY2hpbmcsIGFuZCBTdXNwZW5zZSBpbnRlZ3JhdGlvbiBmb3JcbiAqIGR5bmFtaWNhbGx5IGltcG9ydGVkIGNvbXBvbmVudHMuXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHJlc291cmNlID0gbmV3IFJlc291cmNlUGFnZShcbiAqICAgKCkgPT4gaW1wb3J0KCcuL015Q29tcG9uZW50JyksXG4gKiAgICdNeUNvbXBvbmVudCdcbiAqICk7XG4gKlxuICogLy8gSW4gYSBSZWFjdCBjb21wb25lbnQgd2l0aCBTdXNwZW5zZSBib3VuZGFyeTpcbiAqIGNvbnN0IENvbXBvbmVudCA9IHJlc291cmNlLnJlYWQoKTtcbiAqIHJldHVybiA8Q29tcG9uZW50IC8+O1xuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBSZXNvdXJjZVBhZ2Uge1xuICAvKiogRXJyb3Igc3RhdGUgaWYgdGhlIHJlc291cmNlIGZhaWxlZCB0byBsb2FkICovXG4gIHByaXZhdGUgX19lcnJvcjogRXJyb3IgfCBudWxsO1xuXG4gIC8qKiBGdW5jdGlvbiB0byBsb2FkIHRoZSByZXNvdXJjZSAqL1xuICBwcml2YXRlIF9fbG9hZGVyOiBSZXNvdXJjZVBhZ2VMb2FkZXI7XG5cbiAgLyoqIFByb21pc2UgcmVwcmVzZW50aW5nIHRoZSBsb2FkaW5nIHN0YXRlICovXG4gIHByaXZhdGUgX19wcm9taXNlOiBQcm9taXNlPFJlc291cmNlUGFnZVJldHVybj4gfCBudWxsO1xuXG4gIC8qKiBUaGUgbG9hZGVkIHJlc291cmNlIHJlc3VsdCAqL1xuICBwcml2YXRlIF9fcmVzdWx0OiBSZXNvdXJjZVBhZ2VSZXR1cm4gfCBudWxsO1xuXG4gIC8qKiBVbmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyByZXNvdXJjZSAqL1xuICBwcml2YXRlIF9fbW9kdWxlSWQ6IHN0cmluZztcblxuICAvKipcbiAgICogQ3JlYXRlcyBhIG5ldyBSZXNvdXJjZVBhZ2UgaW5zdGFuY2UuXG4gICAqXG4gICAqIEBwYXJhbSBsb2FkZXIgLSBGdW5jdGlvbiB0aGF0IHJldHVybnMgYSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgY29tcG9uZW50XG4gICAqIEBwYXJhbSBtb2R1bGVJZCAtIFVuaXF1ZSBpZGVudGlmaWVyIGZvciBjYWNoaW5nIHB1cnBvc2VzXG4gICAqL1xuICBwdWJsaWMgY29uc3RydWN0b3IobG9hZGVyOiBSZXNvdXJjZVBhZ2VMb2FkZXIsIG1vZHVsZUlkOiBzdHJpbmcpIHtcbiAgICB0aGlzLl9fZXJyb3IgPSBudWxsO1xuICAgIHRoaXMuX19sb2FkZXIgPSBsb2FkZXI7XG4gICAgdGhpcy5fX21vZHVsZUlkID0gbW9kdWxlSWQ7XG4gICAgdGhpcy5fX3Byb21pc2UgPSBudWxsO1xuICAgIHRoaXMuX19yZXN1bHQgPSBudWxsO1xuICB9XG5cbiAgLyoqXG4gICAqIExvYWRzIHRoZSByZXNvdXJjZSBpZiBub3QgYWxyZWFkeSBsb2FkZWQgb3IgbG9hZGluZy5cbiAgICogVGhpcyBtZXRob2QgY2FuIGJlIGNhbGxlZCBtdWx0aXBsZSB0aW1lcyBzYWZlbHkgLSBpdCB3aWxsIHJldHVybiB0aGUgc2FtZSBwcm9taXNlLlxuICAgKlxuICAgKiBAcmV0dXJucyBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gdGhlIGxvYWRlZCBjb21wb25lbnRcbiAgICovXG4gIHB1YmxpYyBhc3luYyBsb2FkKCk6IFByb21pc2U8UmVzb3VyY2VQYWdlUmV0dXJuPiB7XG4gICAgbGV0IHByb21pc2UgPSB0aGlzLl9fcHJvbWlzZTtcbiAgICBpZiAocHJvbWlzZSA9PSBudWxsKSB7XG4gICAgICBwcm9taXNlID0gdGhpcy5fX2xvYWQoKVxuICAgICAgICAudGhlbigocmVzdWx0KSA9PiB7XG4gICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogT0tcbiAgICAgICAgICBpZiAocmVzdWx0LmRlZmF1bHQgIT0gbnVsbCkge1xuICAgICAgICAgICAgLy8gQHRzLWV4cGVjdC1lcnJvcjogT0tcbiAgICAgICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1wYXJhbS1yZWFzc2lnblxuICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmRlZmF1bHQ7XG4gICAgICAgICAgfVxuICAgICAgICAgIHRoaXMuX19yZXN1bHQgPSByZXN1bHQ7XG4gICAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlcnJvcikgPT4ge1xuICAgICAgICAgIHRoaXMuX19lcnJvciA9IGVycm9yO1xuICAgICAgICAgIHRocm93IGVycm9yO1xuICAgICAgICB9KTtcbiAgICAgIHRoaXMuX19wcm9taXNlID0gcHJvbWlzZTtcbiAgICB9XG4gICAgcmV0dXJuIHByb21pc2U7XG4gIH1cblxuICAvKipcbiAgICogUmV0dXJucyB0aGUgbG9hZGVkIGNvbXBvbmVudCBpZiBhdmFpbGFibGUsIHVuZGVmaW5lZCBvdGhlcndpc2UuXG4gICAqIFRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIHRvIGNoZWNrIGlmIHRoZSBjb21wb25lbnQgaXMgYWxyZWFkeSBsb2FkZWRcbiAgICogd2l0aG91dCB0cmlnZ2VyaW5nIGEgbG9hZCBvciB0aHJvd2luZyBhbiBlcnJvci5cbiAgICpcbiAgICogQHJldHVybnMgVGhlIGxvYWRlZCBjb21wb25lbnQgb3IgdW5kZWZpbmVkIGlmIG5vdCB5ZXQgbG9hZGVkXG4gICAqL1xuICBwdWJsaWMgZ2V0KCk6IFJlc291cmNlUGFnZVJldHVybiB8IHVuZGVmaW5lZCB7XG4gICAgaWYgKHRoaXMuX19yZXN1bHQgIT0gbnVsbCkge1xuICAgICAgcmV0dXJuIHRoaXMuX19yZXN1bHQ7XG4gICAgfVxuXG4gICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgfVxuXG4gIC8qKlxuICAgKiBSZXR1cm5zIHRoZSBtb2R1bGUgaWRlbnRpZmllciBhc3NvY2lhdGVkIHdpdGggdGhpcyByZXNvdXJjZSAoZGVidWcgaGVscGVyKS5cbiAgICovXG4gIHB1YmxpYyBnZXRNb2R1bGVJZCgpOiBzdHJpbmcge1xuICAgIHJldHVybiB0aGlzLl9fbW9kdWxlSWQ7XG4gIH1cblxuICAvKipcbiAgICogUmVhZHMgdGhlIHJlc291cmNlIHdpdGggUmVhY3QgU3VzcGVuc2UgaW50ZWdyYXRpb24uXG4gICAqIFRoaXMgaXMgdGhlIGtleSBtZXRob2QgZm9yIGludGVncmF0aW5nIHdpdGggUmVhY3QgU3VzcGVuc2U6XG4gICAqIC0gUmV0dXJucyB0aGUgY29tcG9uZW50IGlmIGxvYWRlZFxuICAgKiAtIFRocm93cyBhbiBlcnJvciBpZiBsb2FkaW5nIGZhaWxlZFxuICAgKiAtIFRocm93cyBhIFByb21pc2UgaWYgc3RpbGwgbG9hZGluZyAoU3VzcGVuc2Ugd2lsbCBjYXRjaCB0aGlzKVxuICAgKlxuICAgKiBAcmV0dXJucyBUaGUgbG9hZGVkIGNvbXBvbmVudFxuICAgKiBAdGhyb3dzIFByb21pc2Ugd2hlbiBsb2FkaW5nIChjYXVnaHQgYnkgU3VzcGVuc2UpXG4gICAqIEB0aHJvd3MgRXJyb3Igd2hlbiBsb2FkaW5nIGZhaWxlZFxuICAgKi9cbiAgcHVibGljIHJlYWQoKTogUmVzb3VyY2VQYWdlUmV0dXJuIHwgUHJvbWlzZTxSZXNvdXJjZVBhZ2VSZXR1cm4+IHwgRXJyb3Ige1xuICAgIGlmICh0aGlzLl9fcmVzdWx0ICE9IG51bGwpIHtcbiAgICAgIHJldHVybiB0aGlzLl9fcmVzdWx0O1xuICAgIH1cblxuICAgIGlmICh0aGlzLl9fZXJyb3IgIT0gbnVsbCkge1xuICAgICAgdGhyb3cgdGhpcy5fX2Vycm9yO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L29ubHktdGhyb3ctZXJyb3JcbiAgICAgIHRocm93IHRoaXMuX19wcm9taXNlO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBJbnRlcm5hbCBtZXRob2QgdG8gZXhlY3V0ZSB0aGUgbG9hZGVyIGZ1bmN0aW9uLlxuICAgKlxuICAgKiBAcmV0dXJucyBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgY29tcG9uZW50XG4gICAqL1xuICBwcml2YXRlIGFzeW5jIF9fbG9hZCgpOiBQcm9taXNlPFJlc291cmNlUGFnZVJldHVybj4ge1xuICAgIGNvbnN0IHsgX19sb2FkZXI6IGxvYWRlciB9ID0gdGhpcztcblxuICAgIHJldHVybiBQcm9taXNlLnJlc29sdmUobG9hZGVyKCkpO1xuICB9XG59XG5cbi8qKlxuICogRmFjdG9yeSBmdW5jdGlvbiB0byBjcmVhdGUgb3IgcmV0cmlldmUgYSBjYWNoZWQgUmVzb3VyY2VQYWdlIGluc3RhbmNlLlxuICogVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIGEgc2luZ2xldG9uIHBhdHRlcm4gcGVyIG1vZHVsZUlkIHRvIGVuc3VyZSB0aGF0XG4gKiB0aGUgc2FtZSBjb21wb25lbnQgaXMgbm90IGxvYWRlZCBtdWx0aXBsZSB0aW1lcy5cbiAqXG4gKiBAcGFyYW0gbW9kdWxlSWQgLSBHbG9iYWxseSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhlIHJlc291cmNlIHVzZWQgZm9yIGNhY2hpbmdcbiAqIEBwYXJhbSBsb2FkZXIgLSBGdW5jdGlvbiB0aGF0IHJldHVybnMgYSBQcm9taXNlIHJlc29sdmluZyB0byB0aGUgY29tcG9uZW50XG4gKiBAcmV0dXJucyBSZXNvdXJjZVBhZ2UgaW5zdGFuY2UgKGNhY2hlZCBpZiBwcmV2aW91c2x5IGNyZWF0ZWQpXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIENyZWF0ZSBhIHJlc291cmNlIGZvciBsYXp5IGxvYWRpbmdcbiAqIGNvbnN0IHJlc291cmNlID0gZ2V0UmVzb3VyY2VQYWdlKCdVc2VyUHJvZmlsZScsICgpID0+IGltcG9ydCgnLi9Vc2VyUHJvZmlsZScpKTtcbiAqIHJlc291cmNlLmxvYWQoKTtcbiAqXG4gKiAvLyBJbiBhIFJlYWN0IGNvbXBvbmVudCB3aXRoIFN1c3BlbnNlIGJvdW5kYXJ5OlxuICogY29uc3QgVXNlclByb2ZpbGUgPSByZXNvdXJjZS5yZWFkKCk7XG4gKiByZXR1cm4gPFVzZXJQcm9maWxlIHVzZXJJZD17dXNlcklkfSAvPjtcbiAqIGBgYFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0UmVzb3VyY2VQYWdlKFxuICBtb2R1bGVJZDogc3RyaW5nLFxuICBsb2FkZXI6IFJlc291cmNlUGFnZUxvYWRlcixcbik6IFJlc291cmNlUGFnZSB8IG51bGwge1xuICBsZXQgcmVzb3VyY2UgPSByZXNvdXJjZVBhZ2VNYXAuZ2V0KG1vZHVsZUlkKTtcbiAgaWYgKHJlc291cmNlID09IG51bGwpIHtcbiAgICByZXNvdXJjZSA9IG5ldyBSZXNvdXJjZVBhZ2UobG9hZGVyLCBtb2R1bGVJZCk7XG4gICAgcmVzb3VyY2VQYWdlTWFwLnNldChtb2R1bGVJZCwgcmVzb3VyY2UpO1xuICB9XG4gIHJldHVybiByZXNvdXJjZTtcbn1cbiJdfQ==
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==
@@ -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: AnyRoute[];
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?: AnyRoute<TContext>[], prefix?: string): FlatRoute<ParamData>[];
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
@@ -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,EAAE,cAAc,EAAE,QAAQ,EAAS,QAAQ,EAAE,MAAM,YAAY,CAAC;AAQ5E,qBAAa,SAAS,CAAC,OAAO,SAAS,SAAS;IAEvC,IAAI,EAAE,MAAM,CAAC;IAGb,MAAM,EAAE,QAAQ,EAAE,CAAC;IAGnB,aAAa,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAGtC,UAAU,CAAC,EAAE,MAAM,CAAC;gBAOR,KAAK,EAAE,cAAc,CAAC,OAAO,CAAC;CAOlD;AAGD,wBAAgB,UAAU,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,KAAK,IAAI,QAAQ,CAGxE;AASD,wBAAgB,UAAU,CAAC,QAAQ,EACjC,WAAW,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,QAAQ,CAAC,EAAE,EAC9C,YAAY,GAAE,QAAQ,CAAC,QAAQ,CAAC,EAAO,EACvC,MAAM,SAAK,GACV,SAAS,CAAC,SAAS,CAAC,EAAE,CA8DxB;AAOD,wBAAgB,WAAW,CAAC,QAAQ,EAClC,WAAW,EAAE,QAAQ,CAAC,QAAQ,CAAC,EAAE,GAChC,SAAS,CAAC,SAAS,CAAC,EAAE,CAExB"}
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"}
@@ -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 { children } = route;
33
+ const routeDefinition = route;
34
+ const { children } = routeDefinition;
34
35
  if (!isRedirect(route) && children != null) {
35
- const routes = buildRoute(children, [...parentRoutes, route], newPath);
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, route],
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQXNDLE1BQU0sZ0JBQWdCLENBQUM7QUFVM0UsTUFBTSxPQUFPLFNBQVM7SUFFYixJQUFJLENBQVM7SUFHYixNQUFNLENBQWE7SUFHbkIsYUFBYSxDQUF5QjtJQUd0QyxVQUFVLENBQVU7SUFPM0IsWUFBbUIsS0FBOEI7UUFDL0MsTUFBTSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUMxRCxJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsVUFBVSxHQUFHLFVBQVUsQ0FBQztRQUM3QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztJQUNyQyxDQUFDO0NBQ0Y7QUFHRCxNQUFNLFVBQVUsVUFBVSxDQUFDLEtBQTBCO0lBRW5ELE9BQVEsS0FBa0IsQ0FBQyxFQUFFLElBQUksSUFBSSxDQUFDO0FBQ3hDLENBQUM7QUFTRCxNQUFNLFVBQVUsVUFBVSxDQUN4QixXQUE4QyxFQUM5QyxlQUFxQyxFQUFFLEVBQ3ZDLE1BQU0sR0FBRyxFQUFFO0lBRVgsTUFBTSxVQUFVLEdBQTJCLEVBQUUsQ0FBQztJQUU5QyxLQUFLLE1BQU0sS0FBSyxJQUFJLFdBQVcsRUFBRSxDQUFDO1FBQ2hDLE1BQU0sS0FBSyxHQUFHLEVBQUUsQ0FBQztRQUNqQixJQUFJLE1BQU0sS0FBSyxFQUFFLEVBQUUsQ0FBQztZQUNsQixLQUFLLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1FBQ3JCLENBQUM7UUFDRCxJQUFJLEtBQUssQ0FBQyxJQUFJLElBQUksSUFBSSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssRUFBRSxJQUFJLEtBQUssQ0FBQyxJQUFJLEtBQUssR0FBRyxFQUFFLENBQUM7WUFDbEUsSUFBSSxVQUFVLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQztZQUM1QixJQUFJLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDL0IsVUFBVSxHQUFHLFVBQVUsQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDbkMsQ0FBQztZQUNELEtBQUssQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7UUFDekIsQ0FBQztRQUVELE1BQU0sT0FBTyxHQUFHLEtBQUssQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7UUFFaEMsTUFBTSxFQUFFLFFBQVEsRUFBRSxHQUFHLEtBQXVDLENBQUM7UUFFN0QsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDM0MsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsWUFBWSxFQUFFLEtBQUssQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ3ZFLFVBQVUsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLENBQUMsQ0FBQztZQUUzQixTQUFTO1FBQ1gsQ0FBQztRQUVELE1BQU0sYUFBYSxHQUFHLEtBQUssQ0FBQyxJQUFJLE9BQU8sRUFBRSxFQUFFO1lBQ3pDLFFBQVEsRUFBRSxLQUFLO1NBQ2hCLENBQUMsQ0FBQztRQUVILElBQUksSUFBSSxHQUFHLE9BQU8sQ0FBQztRQUNuQixJQUFJLENBQUMsT0FBTyxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1lBQzdCLElBQUksR0FBRyxJQUFJLE9BQU8sRUFBRSxDQUFDO1FBQ3ZCLENBQUM7UUFFRCxJQUFJLFVBQVUsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBQ3RCLElBQUksVUFBVSxHQUFHLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFFMUIsSUFBSSxDQUFDLFVBQVUsQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztnQkFDaEMsVUFBVSxHQUFHLEdBQUcsSUFBSSxJQUFJLFVBQVUsRUFBRSxDQUFDO1lBQ3ZDLENBQUM7WUFDRCxVQUFVLENBQUMsSUFBSSxDQUNiLElBQUksU0FBUyxDQUFDO2dCQUNaLElBQUk7Z0JBQ0osVUFBVTtnQkFDVixhQUFhO2dCQUNiLE1BQU0sRUFBRSxDQUFDLEdBQUcsWUFBWSxDQUFlO2FBQ3hDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQzthQUFNLENBQUM7WUFDTixVQUFVLENBQUMsSUFBSSxDQUNiLElBQUksU0FBUyxDQUFDO2dCQUNaLElBQUk7Z0JBQ0osYUFBYTtnQkFDYixNQUFNLEVBQUUsQ0FBQyxHQUFHLFlBQVksRUFBRSxLQUFLLENBQWU7YUFDL0MsQ0FBQyxDQUNILENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVELE9BQU8sVUFBVSxDQUFDO0FBQ3BCLENBQUM7QUFPRCxNQUFNLFVBQVUsV0FBVyxDQUN6QixXQUFpQztJQUVqQyxPQUFPLFVBQVUsQ0FBQyxXQUFXLENBQUMsQ0FBQztBQUNqQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgbWF0Y2gsIHR5cGUgTWF0Y2hGdW5jdGlvbiwgdHlwZSBQYXJhbURhdGEgfSBmcm9tICdwYXRoLXRvLXJlZ2V4cCc7XG5cbmltcG9ydCB0eXBlIHsgRmxhdFJvdXRlSW5wdXQsIFJlZGlyZWN0LCBSb3V0ZSwgQW55Um91dGUgfSBmcm9tICcuL3R5cGVzLmpzJztcblxuLyoqXG4gKiBSZXByZXNlbnRzIGEgZmxhdHRlbmVkIHJvdXRlIHdpdGggYSBjb21waWxlZCBtYXRjaCBmdW5jdGlvbi5cbiAqIFRoaXMgaXMgYW4gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gdXNlZCBieSB0aGUgcm91dGVyIHRvIGVmZmljaWVudGx5IG1hdGNoIFVSTHMuXG4gKlxuICogQHRlbXBsYXRlIFRQYXJhbXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKi9cbmV4cG9ydCBjbGFzcyBGbGF0Um91dGU8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YT4ge1xuICAvKiogVGhlIFVSTCBwYXRoIHBhdHRlcm4gZm9yIHRoaXMgcm91dGUgKi9cbiAgcHVibGljIHBhdGg6IHN0cmluZztcblxuICAvKiogTmVzdGVkIHJvdXRlcyB0aGF0IHNob3VsZCBiZSByZW5kZXJlZCB3aXRoaW4gdGhpcyByb3V0ZSAqL1xuICBwdWJsaWMgcm91dGVzOiBBbnlSb3V0ZVtdO1xuXG4gIC8qKiBDb21waWxlZCBmdW5jdGlvbiB0byBtYXRjaCBVUkwgcGF0aHMgYWdhaW5zdCB0aGlzIHJvdXRlIHBhdHRlcm4gKi9cbiAgcHVibGljIG1hdGNoRnVuY3Rpb246IE1hdGNoRnVuY3Rpb248VFBhcmFtcz47XG5cbiAgLyoqIE9wdGlvbmFsIHJlZGlyZWN0IGRlc3RpbmF0aW9uIGlmIHRoaXMgcm91dGUgc2hvdWxkIHJlZGlyZWN0ICovXG4gIHB1YmxpYyByZWRpcmVjdFRvPzogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBDcmVhdGVzIGEgbmV3IEZsYXRSb3V0ZSBpbnN0YW5jZS5cbiAgICpcbiAgICogQHBhcmFtIGlucHV0IC0gQ29uZmlndXJhdGlvbiBmb3IgdGhlIGZsYXQgcm91dGVcbiAgICovXG4gIHB1YmxpYyBjb25zdHJ1Y3RvcihpbnB1dDogRmxhdFJvdXRlSW5wdXQ8VFBhcmFtcz4pIHtcbiAgICBjb25zdCB7IG1hdGNoRnVuY3Rpb24sIHBhdGgsIHJlZGlyZWN0VG8sIHJvdXRlcyB9ID0gaW5wdXQ7XG4gICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICB0aGlzLnJlZGlyZWN0VG8gPSByZWRpcmVjdFRvO1xuICAgIHRoaXMucm91dGVzID0gcm91dGVzO1xuICAgIHRoaXMubWF0Y2hGdW5jdGlvbiA9IG1hdGNoRnVuY3Rpb247XG4gIH1cbn1cblxuLyoqIE5hcnJvdyBhIHJvdXRlIGNvbmZpZ3VyYXRpb24gdG8gYSByZWRpcmVjdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZGlyZWN0KHJvdXRlOiBBbnlSb3V0ZSB8IFJlZGlyZWN0KTogcm91dGUgaXMgUmVkaXJlY3Qge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuICByZXR1cm4gKHJvdXRlIGFzIFJlZGlyZWN0KS50byAhPSBudWxsO1xufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGZsYXR0ZW5zIG5lc3RlZCByb3V0ZSBkZWZpbml0aW9ucyBpbnRvIGBGbGF0Um91dGVgIGVudHJpZXMuXG4gKlxuICogQHBhcmFtIHJvdXRlQ29uZmlnIC0gUm91dGUgb3IgcmVkaXJlY3QgZGVmaW5pdGlvbnMgdG8gcHJvY2Vzcy5cbiAqIEBwYXJhbSBwYXJlbnRSb3V0ZXMgLSBBY2N1bXVsYXRlZCBwYXJlbnQgcm91dGVzIGZvciBuZXN0aW5nIGNvbnRleHQuXG4gKiBAcGFyYW0gcHJlZml4IC0gQ3VycmVudCBwYXRoIHByZWZpeCBwcm9wYWdhdGVkIGZyb20gcGFyZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUm91dGU8VENvbnRleHQ+KFxuICByb3V0ZUNvbmZpZzogKEFueVJvdXRlPFRDb250ZXh0PiB8IFJlZGlyZWN0KVtdLFxuICBwYXJlbnRSb3V0ZXM6IEFueVJvdXRlPFRDb250ZXh0PltdID0gW10sXG4gIHByZWZpeCA9ICcnLFxuKTogRmxhdFJvdXRlPFBhcmFtRGF0YT5bXSB7XG4gIGNvbnN0IGZsYXRSb3V0ZXM6IEZsYXRSb3V0ZTxQYXJhbURhdGE+W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlQ29uZmlnKSB7XG4gICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICBpZiAocHJlZml4ICE9PSAnJykge1xuICAgICAgcGFydHMucHVzaChwcmVmaXgpO1xuICAgIH1cbiAgICBpZiAocm91dGUucGF0aCAhPSBudWxsICYmIHJvdXRlLnBhdGggIT09ICcnICYmIHJvdXRlLnBhdGggIT09ICcvJykge1xuICAgICAgbGV0IG5vcm1hbGl6ZWQgPSByb3V0ZS5wYXRoO1xuICAgICAgaWYgKG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnNsaWNlKDEpO1xuICAgICAgfVxuICAgICAgcGFydHMucHVzaChub3JtYWxpemVkKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdQYXRoID0gcGFydHMuam9pbignLycpO1xuXG4gICAgY29uc3QgeyBjaGlsZHJlbiB9ID0gcm91dGUgYXMgUm91dGU8YW55LCBhbnksIGFueSwgYW55LCBhbnk+O1xuXG4gICAgaWYgKCFpc1JlZGlyZWN0KHJvdXRlKSAmJiBjaGlsZHJlbiAhPSBudWxsKSB7XG4gICAgICBjb25zdCByb3V0ZXMgPSBidWlsZFJvdXRlKGNoaWxkcmVuLCBbLi4ucGFyZW50Um91dGVzLCByb3V0ZV0sIG5ld1BhdGgpO1xuICAgICAgZmxhdFJvdXRlcy5wdXNoKC4uLnJvdXRlcyk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udGludWVcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoRnVuY3Rpb24gPSBtYXRjaChgLyR7bmV3UGF0aH1gLCB7XG4gICAgICB0cmFpbGluZzogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBsZXQgcGF0aCA9IG5ld1BhdGg7XG4gICAgaWYgKCFuZXdQYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgcGF0aCA9IGAvJHtuZXdQYXRofWA7XG4gICAgfVxuXG4gICAgaWYgKGlzUmVkaXJlY3Qocm91dGUpKSB7XG4gICAgICBsZXQgcmVkaXJlY3RUbyA9IHJvdXRlLnRvO1xuXG4gICAgICBpZiAoIXJlZGlyZWN0VG8uc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgIHJlZGlyZWN0VG8gPSBgJHtwYXRofS8ke3JlZGlyZWN0VG99YDtcbiAgICAgIH1cbiAgICAgIGZsYXRSb3V0ZXMucHVzaChcbiAgICAgICAgbmV3IEZsYXRSb3V0ZSh7XG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByZWRpcmVjdFRvLFxuICAgICAgICAgIG1hdGNoRnVuY3Rpb24sXG4gICAgICAgICAgcm91dGVzOiBbLi4ucGFyZW50Um91dGVzXSBhcyBBbnlSb3V0ZVtdLFxuICAgICAgICB9KSxcbiAgICAgICk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGZsYXRSb3V0ZXMucHVzaChcbiAgICAgICAgbmV3IEZsYXRSb3V0ZSh7XG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBtYXRjaEZ1bmN0aW9uLFxuICAgICAgICAgIHJvdXRlczogWy4uLnBhcmVudFJvdXRlcywgcm91dGVdIGFzIEFueVJvdXRlW10sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmxhdFJvdXRlcztcbn1cblxuLyoqXG4gKiBUb3AtbGV2ZWwgY29udmVuaWVuY2UgdG8gZmxhdHRlbiBhIHJvdXRlIGNvbmZpZ3VyYXRpb24gaW50byBgRmxhdFJvdXRlYHMuXG4gKlxuICogQHBhcmFtIHJvdXRlQ29uZmlnIC0gUm91dGUgZGVmaW5pdGlvbnMgdG8gZmxhdHRlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUm91dGVzPFRDb250ZXh0PihcbiAgcm91dGVDb25maWc6IEFueVJvdXRlPFRDb250ZXh0PltdLFxuKTogRmxhdFJvdXRlPFBhcmFtRGF0YT5bXSB7XG4gIHJldHVybiBidWlsZFJvdXRlKHJvdXRlQ29uZmlnKTtcbn1cbiJdfQ==
72
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9idWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxLQUFLLEVBQXNDLE1BQU0sZ0JBQWdCLENBQUM7QUFlM0UsTUFBTSxPQUFPLFNBQVM7SUFFYixJQUFJLENBQVM7SUFHYixNQUFNLENBQTJCO0lBR2pDLGFBQWEsQ0FBeUI7SUFHdEMsVUFBVSxDQUFVO0lBTzNCLFlBQW1CLEtBQXdDO1FBQ3pELE1BQU0sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7UUFDMUQsSUFBSSxDQUFDLElBQUksR0FBRyxJQUFJLENBQUM7UUFDakIsSUFBSSxDQUFDLFVBQVUsR0FBRyxVQUFVLENBQUM7UUFDN0IsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7SUFDckMsQ0FBQztDQUNGO0FBR0QsTUFBTSxVQUFVLFVBQVUsQ0FDeEIsS0FBb0M7SUFHcEMsT0FBUSxLQUFrQixDQUFDLEVBQUUsSUFBSSxJQUFJLENBQUM7QUFDeEMsQ0FBQztBQVNELE1BQU0sVUFBVSxVQUFVLENBQ3hCLFdBQThDLEVBQzlDLGVBQXlDLEVBQUUsRUFDM0MsTUFBTSxHQUFHLEVBQUU7SUFFWCxNQUFNLFVBQVUsR0FBcUMsRUFBRSxDQUFDO0lBRXhELEtBQUssTUFBTSxLQUFLLElBQUksV0FBVyxFQUFFLENBQUM7UUFDaEMsTUFBTSxLQUFLLEdBQUcsRUFBRSxDQUFDO1FBQ2pCLElBQUksTUFBTSxLQUFLLEVBQUUsRUFBRSxDQUFDO1lBQ2xCLEtBQUssQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFDckIsQ0FBQztRQUNELElBQUksS0FBSyxDQUFDLElBQUksSUFBSSxJQUFJLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxFQUFFLElBQUksS0FBSyxDQUFDLElBQUksS0FBSyxHQUFHLEVBQUUsQ0FBQztZQUNsRSxJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsSUFBSSxDQUFDO1lBQzVCLElBQUksVUFBVSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO2dCQUMvQixVQUFVLEdBQUcsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQztZQUNuQyxDQUFDO1lBQ0QsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUN6QixDQUFDO1FBRUQsTUFBTSxPQUFPLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUVoQyxNQUFNLGVBQWUsR0FBRyxLQUEyQixDQUFDO1FBQ3BELE1BQU0sRUFBRSxRQUFRLEVBQUUsR0FBRyxlQUFlLENBQUM7UUFFckMsSUFBSSxDQUFDLFVBQVUsQ0FBQyxLQUFLLENBQUMsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDM0MsTUFBTSxNQUFNLEdBQUcsVUFBVSxDQUN2QixRQUFRLEVBQ1IsQ0FBQyxHQUFHLFlBQVksRUFBRSxlQUFlLENBQUMsRUFDbEMsT0FBTyxDQUNSLENBQUM7WUFDRixVQUFVLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUM7WUFFM0IsU0FBUztRQUNYLENBQUM7UUFFRCxNQUFNLGFBQWEsR0FBRyxLQUFLLENBQUMsSUFBSSxPQUFPLEVBQUUsRUFBRTtZQUN6QyxRQUFRLEVBQUUsS0FBSztTQUNoQixDQUFDLENBQUM7UUFFSCxJQUFJLElBQUksR0FBRyxPQUFPLENBQUM7UUFDbkIsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUM3QixJQUFJLEdBQUcsSUFBSSxPQUFPLEVBQUUsQ0FBQztRQUN2QixDQUFDO1FBRUQsSUFBSSxVQUFVLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUN0QixJQUFJLFVBQVUsR0FBRyxLQUFLLENBQUMsRUFBRSxDQUFDO1lBRTFCLElBQUksQ0FBQyxVQUFVLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLFVBQVUsR0FBRyxHQUFHLElBQUksSUFBSSxVQUFVLEVBQUUsQ0FBQztZQUN2QyxDQUFDO1lBQ0QsVUFBVSxDQUFDLElBQUksQ0FDYixJQUFJLFNBQVMsQ0FBQztnQkFDWixJQUFJO2dCQUNKLFVBQVU7Z0JBQ1YsYUFBYTtnQkFDYixNQUFNLEVBQUUsQ0FBQyxHQUFHLFlBQVksQ0FBQzthQUMxQixDQUFDLENBQ0gsQ0FBQztRQUNKLENBQUM7YUFBTSxDQUFDO1lBQ04sVUFBVSxDQUFDLElBQUksQ0FDYixJQUFJLFNBQVMsQ0FBQztnQkFDWixJQUFJO2dCQUNKLGFBQWE7Z0JBQ2IsTUFBTSxFQUFFLENBQUMsR0FBRyxZQUFZLEVBQUUsZUFBZSxDQUFDO2FBQzNDLENBQUMsQ0FDSCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRCxPQUFPLFVBQVUsQ0FBQztBQUNwQixDQUFDO0FBT0QsTUFBTSxVQUFVLFdBQVcsQ0FDekIsV0FBaUM7SUFFakMsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDLENBQUM7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IG1hdGNoLCB0eXBlIE1hdGNoRnVuY3Rpb24sIHR5cGUgUGFyYW1EYXRhIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIEZsYXRSb3V0ZUlucHV0LFxuICBSZWRpcmVjdCxcbiAgQW55Um91dGUsXG4gIFVua25vd25Sb3V0ZSxcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbi8qKlxuICogUmVwcmVzZW50cyBhIGZsYXR0ZW5lZCByb3V0ZSB3aXRoIGEgY29tcGlsZWQgbWF0Y2ggZnVuY3Rpb24uXG4gKiBUaGlzIGlzIGFuIGludGVybmFsIHJlcHJlc2VudGF0aW9uIHVzZWQgYnkgdGhlIHJvdXRlciB0byBlZmZpY2llbnRseSBtYXRjaCBVUkxzLlxuICpcbiAqIEB0ZW1wbGF0ZSBUUGFyYW1zIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICovXG5leHBvcnQgY2xhc3MgRmxhdFJvdXRlPFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGEsIFRDb250ZXh0ID0gdW5rbm93bj4ge1xuICAvKiogVGhlIFVSTCBwYXRoIHBhdHRlcm4gZm9yIHRoaXMgcm91dGUgKi9cbiAgcHVibGljIHBhdGg6IHN0cmluZztcblxuICAvKiogTmVzdGVkIHJvdXRlcyB0aGF0IHNob3VsZCBiZSByZW5kZXJlZCB3aXRoaW4gdGhpcyByb3V0ZSAqL1xuICBwdWJsaWMgcm91dGVzOiBVbmtub3duUm91dGU8VENvbnRleHQ+W107XG5cbiAgLyoqIENvbXBpbGVkIGZ1bmN0aW9uIHRvIG1hdGNoIFVSTCBwYXRocyBhZ2FpbnN0IHRoaXMgcm91dGUgcGF0dGVybiAqL1xuICBwdWJsaWMgbWF0Y2hGdW5jdGlvbjogTWF0Y2hGdW5jdGlvbjxUUGFyYW1zPjtcblxuICAvKiogT3B0aW9uYWwgcmVkaXJlY3QgZGVzdGluYXRpb24gaWYgdGhpcyByb3V0ZSBzaG91bGQgcmVkaXJlY3QgKi9cbiAgcHVibGljIHJlZGlyZWN0VG8/OiBzdHJpbmc7XG5cbiAgLyoqXG4gICAqIENyZWF0ZXMgYSBuZXcgRmxhdFJvdXRlIGluc3RhbmNlLlxuICAgKlxuICAgKiBAcGFyYW0gaW5wdXQgLSBDb25maWd1cmF0aW9uIGZvciB0aGUgZmxhdCByb3V0ZVxuICAgKi9cbiAgcHVibGljIGNvbnN0cnVjdG9yKGlucHV0OiBGbGF0Um91dGVJbnB1dDxUUGFyYW1zLCBUQ29udGV4dD4pIHtcbiAgICBjb25zdCB7IG1hdGNoRnVuY3Rpb24sIHBhdGgsIHJlZGlyZWN0VG8sIHJvdXRlcyB9ID0gaW5wdXQ7XG4gICAgdGhpcy5wYXRoID0gcGF0aDtcbiAgICB0aGlzLnJlZGlyZWN0VG8gPSByZWRpcmVjdFRvO1xuICAgIHRoaXMucm91dGVzID0gcm91dGVzO1xuICAgIHRoaXMubWF0Y2hGdW5jdGlvbiA9IG1hdGNoRnVuY3Rpb247XG4gIH1cbn1cblxuLyoqIE5hcnJvdyBhIHJvdXRlIGNvbmZpZ3VyYXRpb24gdG8gYSByZWRpcmVjdC4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpc1JlZGlyZWN0PFRDb250ZXh0PihcbiAgcm91dGU6IEFueVJvdXRlPFRDb250ZXh0PiB8IFJlZGlyZWN0LFxuKTogcm91dGUgaXMgUmVkaXJlY3Qge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVubmVjZXNzYXJ5LWNvbmRpdGlvblxuICByZXR1cm4gKHJvdXRlIGFzIFJlZGlyZWN0KS50byAhPSBudWxsO1xufVxuXG4vKipcbiAqIFJlY3Vyc2l2ZWx5IGZsYXR0ZW5zIG5lc3RlZCByb3V0ZSBkZWZpbml0aW9ucyBpbnRvIGBGbGF0Um91dGVgIGVudHJpZXMuXG4gKlxuICogQHBhcmFtIHJvdXRlQ29uZmlnIC0gUm91dGUgb3IgcmVkaXJlY3QgZGVmaW5pdGlvbnMgdG8gcHJvY2Vzcy5cbiAqIEBwYXJhbSBwYXJlbnRSb3V0ZXMgLSBBY2N1bXVsYXRlZCBwYXJlbnQgcm91dGVzIGZvciBuZXN0aW5nIGNvbnRleHQuXG4gKiBAcGFyYW0gcHJlZml4IC0gQ3VycmVudCBwYXRoIHByZWZpeCBwcm9wYWdhdGVkIGZyb20gcGFyZW50cy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUm91dGU8VENvbnRleHQ+KFxuICByb3V0ZUNvbmZpZzogKEFueVJvdXRlPFRDb250ZXh0PiB8IFJlZGlyZWN0KVtdLFxuICBwYXJlbnRSb3V0ZXM6IFVua25vd25Sb3V0ZTxUQ29udGV4dD5bXSA9IFtdLFxuICBwcmVmaXggPSAnJyxcbik6IEZsYXRSb3V0ZTxQYXJhbURhdGEsIFRDb250ZXh0PltdIHtcbiAgY29uc3QgZmxhdFJvdXRlczogRmxhdFJvdXRlPFBhcmFtRGF0YSwgVENvbnRleHQ+W10gPSBbXTtcblxuICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlQ29uZmlnKSB7XG4gICAgY29uc3QgcGFydHMgPSBbXTtcbiAgICBpZiAocHJlZml4ICE9PSAnJykge1xuICAgICAgcGFydHMucHVzaChwcmVmaXgpO1xuICAgIH1cbiAgICBpZiAocm91dGUucGF0aCAhPSBudWxsICYmIHJvdXRlLnBhdGggIT09ICcnICYmIHJvdXRlLnBhdGggIT09ICcvJykge1xuICAgICAgbGV0IG5vcm1hbGl6ZWQgPSByb3V0ZS5wYXRoO1xuICAgICAgaWYgKG5vcm1hbGl6ZWQuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgIG5vcm1hbGl6ZWQgPSBub3JtYWxpemVkLnNsaWNlKDEpO1xuICAgICAgfVxuICAgICAgcGFydHMucHVzaChub3JtYWxpemVkKTtcbiAgICB9XG5cbiAgICBjb25zdCBuZXdQYXRoID0gcGFydHMuam9pbignLycpO1xuXG4gICAgY29uc3Qgcm91dGVEZWZpbml0aW9uID0gcm91dGUgYXMgQW55Um91dGU8VENvbnRleHQ+O1xuICAgIGNvbnN0IHsgY2hpbGRyZW4gfSA9IHJvdXRlRGVmaW5pdGlvbjtcblxuICAgIGlmICghaXNSZWRpcmVjdChyb3V0ZSkgJiYgY2hpbGRyZW4gIT0gbnVsbCkge1xuICAgICAgY29uc3Qgcm91dGVzID0gYnVpbGRSb3V0ZShcbiAgICAgICAgY2hpbGRyZW4sXG4gICAgICAgIFsuLi5wYXJlbnRSb3V0ZXMsIHJvdXRlRGVmaW5pdGlvbl0sXG4gICAgICAgIG5ld1BhdGgsXG4gICAgICApO1xuICAgICAgZmxhdFJvdXRlcy5wdXNoKC4uLnJvdXRlcyk7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgbm8tY29udGludWVcbiAgICAgIGNvbnRpbnVlO1xuICAgIH1cblxuICAgIGNvbnN0IG1hdGNoRnVuY3Rpb24gPSBtYXRjaChgLyR7bmV3UGF0aH1gLCB7XG4gICAgICB0cmFpbGluZzogZmFsc2UsXG4gICAgfSk7XG5cbiAgICBsZXQgcGF0aCA9IG5ld1BhdGg7XG4gICAgaWYgKCFuZXdQYXRoLnN0YXJ0c1dpdGgoJy8nKSkge1xuICAgICAgcGF0aCA9IGAvJHtuZXdQYXRofWA7XG4gICAgfVxuXG4gICAgaWYgKGlzUmVkaXJlY3Qocm91dGUpKSB7XG4gICAgICBsZXQgcmVkaXJlY3RUbyA9IHJvdXRlLnRvO1xuXG4gICAgICBpZiAoIXJlZGlyZWN0VG8uc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgICAgIHJlZGlyZWN0VG8gPSBgJHtwYXRofS8ke3JlZGlyZWN0VG99YDtcbiAgICAgIH1cbiAgICAgIGZsYXRSb3V0ZXMucHVzaChcbiAgICAgICAgbmV3IEZsYXRSb3V0ZSh7XG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICByZWRpcmVjdFRvLFxuICAgICAgICAgIG1hdGNoRnVuY3Rpb24sXG4gICAgICAgICAgcm91dGVzOiBbLi4ucGFyZW50Um91dGVzXSxcbiAgICAgICAgfSksXG4gICAgICApO1xuICAgIH0gZWxzZSB7XG4gICAgICBmbGF0Um91dGVzLnB1c2goXG4gICAgICAgIG5ldyBGbGF0Um91dGUoe1xuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgbWF0Y2hGdW5jdGlvbixcbiAgICAgICAgICByb3V0ZXM6IFsuLi5wYXJlbnRSb3V0ZXMsIHJvdXRlRGVmaW5pdGlvbl0sXG4gICAgICAgIH0pLFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gZmxhdFJvdXRlcztcbn1cblxuLyoqXG4gKiBUb3AtbGV2ZWwgY29udmVuaWVuY2UgdG8gZmxhdHRlbiBhIHJvdXRlIGNvbmZpZ3VyYXRpb24gaW50byBgRmxhdFJvdXRlYHMuXG4gKlxuICogQHBhcmFtIHJvdXRlQ29uZmlnIC0gUm91dGUgZGVmaW5pdGlvbnMgdG8gZmxhdHRlbi5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUm91dGVzPFRDb250ZXh0PihcbiAgcm91dGVDb25maWc6IEFueVJvdXRlPFRDb250ZXh0PltdLFxuKTogRmxhdFJvdXRlPFBhcmFtRGF0YSwgVENvbnRleHQ+W10ge1xuICByZXR1cm4gYnVpbGRSb3V0ZShyb3V0ZUNvbmZpZyk7XG59XG4iXX0=
@@ -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
@@ -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;AAG3B,mBAAmB,YAAY,CAAC;AAGhC,cAAc,4BAA4B,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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsY0FBYyxtQkFBbUIsQ0FBQztBQUdsQyxjQUFjLG9CQUFvQixDQUFDO0FBR25DLGNBQWMsb0JBQW9CLENBQUM7QUFHbkMsY0FBYyxjQUFjLENBQUM7QUFHN0IsY0FBYyxtQkFBbUIsQ0FBQztBQUdsQyxjQUFjLFlBQVksQ0FBQztBQU0zQixjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRXhwb3J0IGVycm9yIGhhbmRsaW5nIHV0aWxpdGllc1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvcnMvaW5kZXguanMnO1xuXG4vLyBFeHBvcnQgYnJvd3NlciBoaXN0b3J5IG1hbmFnZW1lbnRcbmV4cG9ydCAqIGZyb20gJy4vaGlzdG9yeS9pbmRleC5qcyc7XG5cbi8vIEV4cG9ydCByb3V0aW5nIGNvbXBvbmVudHMgYW5kIHV0aWxpdGllc1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0aW5nL2luZGV4LmpzJztcblxuLy8gRXhwb3J0IHJvdXRlIGJ1aWxkaW5nIHV0aWxpdGllc1xuZXhwb3J0ICogZnJvbSAnLi9idWlsZGVyLmpzJztcblxuLy8gRXhwb3J0IHJlc291cmNlIHBhZ2UgbWFuYWdlbWVudCBmb3IgbGF6eSBsb2FkaW5nXG5leHBvcnQgKiBmcm9tICcuL1Jlc291cmNlUGFnZS5qcyc7XG5cbi8vIEV4cG9ydCB1dGlsaXR5IGZ1bmN0aW9uc1xuZXhwb3J0ICogZnJvbSAnLi90b29scy5qcyc7XG5cbi8vIEV4cG9ydCBhbGwgVHlwZVNjcmlwdCB0eXBlc1xuZXhwb3J0IHR5cGUgKiBmcm9tICcuL3R5cGVzLmpzJztcblxuLy8gRXhwb3J0IGluc3RydW1lbnRhdGlvbiBoZWxwZXJzXG5leHBvcnQgKiBmcm9tICcuL2luc3RydW1lbnRhdGlvbi9pbmRleC5qcyc7XG4iXX0=
9
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsY0FBYyxtQkFBbUIsQ0FBQztBQUdsQyxjQUFjLG9CQUFvQixDQUFDO0FBR25DLGNBQWMsb0JBQW9CLENBQUM7QUFHbkMsY0FBYyxjQUFjLENBQUM7QUFHN0IsY0FBYyxtQkFBbUIsQ0FBQztBQUdsQyxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLGFBQWEsQ0FBQztBQU01QixjQUFjLDRCQUE0QixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gRXhwb3J0IGVycm9yIGhhbmRsaW5nIHV0aWxpdGllc1xuZXhwb3J0ICogZnJvbSAnLi9lcnJvcnMvaW5kZXguanMnO1xuXG4vLyBFeHBvcnQgYnJvd3NlciBoaXN0b3J5IG1hbmFnZW1lbnRcbmV4cG9ydCAqIGZyb20gJy4vaGlzdG9yeS9pbmRleC5qcyc7XG5cbi8vIEV4cG9ydCByb3V0aW5nIGNvbXBvbmVudHMgYW5kIHV0aWxpdGllc1xuZXhwb3J0ICogZnJvbSAnLi9yb3V0aW5nL2luZGV4LmpzJztcblxuLy8gRXhwb3J0IHJvdXRlIGJ1aWxkaW5nIHV0aWxpdGllc1xuZXhwb3J0ICogZnJvbSAnLi9idWlsZGVyLmpzJztcblxuLy8gRXhwb3J0IHJlc291cmNlIHBhZ2UgbWFuYWdlbWVudCBmb3IgbGF6eSBsb2FkaW5nXG5leHBvcnQgKiBmcm9tICcuL1Jlc291cmNlUGFnZS5qcyc7XG5cbi8vIEV4cG9ydCB1dGlsaXR5IGZ1bmN0aW9uc1xuZXhwb3J0ICogZnJvbSAnLi90b29scy5qcyc7XG5leHBvcnQgKiBmcm9tICcuL3ZhbHVlcy5qcyc7XG5cbi8vIEV4cG9ydCBhbGwgVHlwZVNjcmlwdCB0eXBlc1xuZXhwb3J0IHR5cGUgKiBmcm9tICcuL3R5cGVzLmpzJztcblxuLy8gRXhwb3J0IGluc3RydW1lbnRhdGlvbiBoZWxwZXJzXG5leHBvcnQgKiBmcm9tICcuL2luc3RydW1lbnRhdGlvbi9pbmRleC5qcyc7XG4iXX0=
@@ -1,17 +1,33 @@
1
- import type { RouteEntry } from '../types.js';
2
- export type RouterNavigationSource = 'link-click' | 'link-hover' | 'preload-hover' | 'programmatic' | 'popstate-back' | 'popstate-forward' | 'popstate-unknown' | 'external' | 'normalize';
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?: RouteEntry<any>['preparedMatch'];
12
- filters?: RouteEntry<any>['filters'];
13
- filterDiagnostics?: RouteEntry<any>['filterDiagnostics'];
14
- activeQuerySchema?: RouteEntry<any>['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: 'code' | 'full';
45
+ mode: RouterPreloadModeValue;
30
46
  };
31
47
  export type RouterHistoryEvent = RouterEventBase & {
32
48
  kind: 'history';
33
49
  source: RouterNavigationSource;
34
- action: 'push' | 'replace' | 'normalize';
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: 'back' | 'forward' | 'unknown';
56
+ direction: RouterPopstateDirectionValue;
41
57
  details?: Record<string, unknown>;
42
58
  };
43
- export type RouterPrepareEvent = RouterEventBase & {
44
- kind: 'prepare-start' | 'prepare-end';
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?: number;
49
- hasPrepared?: boolean;
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":"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"}
1
+ {"version":3,"file":"Instrumentation.d.ts","sourceRoot":"","sources":["../../../src/instrumentation/Instrumentation.ts"],"names":[],"mappings":"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"}