@plumile/router 0.1.45 → 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 +4 -5
@@ -1,12 +1,15 @@
1
1
  import type { ParamData } from 'path-to-regexp';
2
- import { type PrepareResult, type PreparedMatch, type Route, type RouterMatchedRoute } from './types.js';
2
+ import { type PrepareResult, type PreparedMatch, type ResolvedPreparedMatch, type Route, type RouterMatchedRoute } from './types.js';
3
3
  import type { RouterPrepareEvent, RouterNavigationSource, RouterLocationSnapshot } from './instrumentation/Instrumentation.js';
4
4
  import type { FlatRoute } from './builder.js';
5
- export declare function getMatchedRoute<TParams extends ParamData>(routes: FlatRoute<TParams>[], location: Location): RouterMatchedRoute<TParams> | null;
6
- export declare function prepareMatch<TParams extends ParamData, TContext = unknown>(match: RouterMatchedRoute<TParams> | null, query?: Record<string, unknown>, instrumentation?: {
5
+ type PrepareInstrumentation = {
7
6
  emit: (event: RouterPrepareEvent) => void;
8
7
  source: RouterNavigationSource;
9
8
  location: RouterLocationSnapshot;
10
- }, context?: TContext): PreparedMatch<TParams>;
9
+ };
10
+ export declare function getMatchedRoute<TParams extends ParamData, TContext = unknown>(routes: FlatRoute<TParams, TContext>[], location: Location): RouterMatchedRoute<TParams, TContext> | null;
11
+ export declare function prepareMatch<TParams extends ParamData, TContext = unknown>(match: RouterMatchedRoute<TParams, TContext> | null, query?: Record<string, unknown>, instrumentation?: PrepareInstrumentation, context?: TContext): PreparedMatch<TParams, TContext>;
12
+ export declare function prepareMatchAsync<TParams extends ParamData, TContext = unknown>(match: RouterMatchedRoute<TParams, TContext> | null, query?: Record<string, unknown>, instrumentation?: PrepareInstrumentation, context?: TContext): Promise<ResolvedPreparedMatch<TParams, TContext>>;
11
13
  export declare function r<TContext = unknown, TPrepared extends PrepareResult = PrepareResult, TVariables extends ParamData = ParamData, TQuery extends Record<string, unknown> = Record<string, unknown>>(route: Route<TContext, TPrepared, TVariables, TQuery>): Route<TContext, TPrepared, TVariables, TQuery>;
14
+ export {};
12
15
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAElB,KAAK,KAAK,EACV,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAS9C,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAC5B,QAAQ,EAAE,QAAQ,GACjB,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,CAepC;AAgCD,wBAAgB,YAAY,CAAC,OAAO,SAAS,SAAS,EAAE,QAAQ,GAAG,OAAO,EACxE,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,EACzC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,eAAe,CAAC,EAAE;IAChB,IAAI,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC1C,MAAM,EAAE,sBAAsB,CAAC;IAC/B,QAAQ,EAAE,sBAAsB,CAAC;CAClC,EACD,OAAO,CAAC,EAAE,QAAQ,GACjB,aAAa,CAAC,OAAO,CAAC,CA2FxB;AAOD,wBAAgB,CAAC,CACf,QAAQ,GAAG,OAAO,EAClB,SAAS,SAAS,aAAa,GAAG,aAAa,EAC/C,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAEhE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,GACpD,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAEhD"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,EACL,KAAK,aAAa,EAClB,KAAK,aAAa,EAGlB,KAAK,qBAAqB,EAE1B,KAAK,KAAK,EACV,KAAK,kBAAkB,EACxB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EACV,kBAAkB,EAClB,sBAAsB,EACtB,sBAAsB,EACvB,MAAM,sCAAsC,CAAC;AAE9C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,KAAK,sBAAsB,GAAG;IAC5B,IAAI,EAAE,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,CAAC;IAC1C,MAAM,EAAE,sBAAsB,CAAC;IAC/B,QAAQ,EAAE,sBAAsB,CAAC;CAClC,CAAC;AASF,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EAAE,QAAQ,GAAG,OAAO,EAC3E,MAAM,EAAE,SAAS,CAAC,OAAO,EAAE,QAAQ,CAAC,EAAE,EACtC,QAAQ,EAAE,QAAQ,GACjB,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,CAe9C;AAgCD,wBAAgB,YAAY,CAAC,OAAO,SAAS,SAAS,EAAE,QAAQ,GAAG,OAAO,EACxE,KAAK,EAAE,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,EACnD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,eAAe,CAAC,EAAE,sBAAsB,EACxC,OAAO,CAAC,EAAE,QAAQ,GACjB,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,CA2IlC;AAWD,wBAAsB,iBAAiB,CACrC,OAAO,SAAS,SAAS,EACzB,QAAQ,GAAG,OAAO,EAElB,KAAK,EAAE,kBAAkB,CAAC,OAAO,EAAE,QAAQ,CAAC,GAAG,IAAI,EACnD,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,eAAe,CAAC,EAAE,sBAAsB,EACxC,OAAO,CAAC,EAAE,QAAQ,GACjB,OAAO,CAAC,qBAAqB,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC,CA6BnD;AAOD,wBAAgB,CAAC,CACf,QAAQ,GAAG,OAAO,EAClB,SAAS,SAAS,aAAa,GAAG,aAAa,EAC/C,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAEhE,KAAK,EAAE,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,GACpD,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAEhD"}
package/lib/esm/tools.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { createPreparedValueResource } from './prepareResource.js';
1
2
  export function getMatchedRoute(routes, location) {
2
3
  for (const route of routes) {
3
4
  const match = route.matchFunction(location.pathname);
@@ -31,12 +32,13 @@ export function prepareMatch(match, query, instrumentation, context) {
31
32
  if (match == null) {
32
33
  return {
33
34
  match,
35
+ segments: [],
34
36
  routes: [],
35
37
  };
36
38
  }
37
39
  const matchedRoute = match.route;
38
- const routes = match.route.routes.map((route, routeIndex) => {
39
- const { path, prepare, resourcePage, render } = route;
40
+ const segments = match.route.routes.map((route, routeIndex) => {
41
+ const { path, prepare, querySchema, resourcePage, render } = route;
40
42
  let moduleId;
41
43
  if (resourcePage != null &&
42
44
  typeof resourcePage.getModuleId === 'function') {
@@ -45,8 +47,6 @@ export function prepareMatch(match, query, instrumentation, context) {
45
47
  moduleId = resolvedModuleId;
46
48
  }
47
49
  }
48
- let Component;
49
- let prepared;
50
50
  let prepareStartedAt = 0;
51
51
  if (instrumentation != null) {
52
52
  prepareStartedAt = Date.now();
@@ -59,49 +59,121 @@ export function prepareMatch(match, query, instrumentation, context) {
59
59
  moduleId,
60
60
  });
61
61
  }
62
+ let preparedResource;
62
63
  if (prepare != null) {
63
- prepared = prepare({
64
- match,
65
- matchedRoute,
66
- context,
67
- resourcePage,
68
- variables: { ...match.params },
69
- query: query ?? {},
64
+ preparedResource = createPreparedValueResource(() => {
65
+ return prepare({
66
+ match,
67
+ matchedRoute,
68
+ context: context,
69
+ resourcePage,
70
+ variables: { ...match.params },
71
+ query: query ?? {},
72
+ });
70
73
  });
74
+ const preparedLoad = preparedResource.load();
75
+ if (instrumentation != null) {
76
+ preparedLoad
77
+ .then(() => {
78
+ const finishedAt = Date.now();
79
+ instrumentation.emit({
80
+ kind: 'prepare-complete',
81
+ source: instrumentation.source,
82
+ timestamp: finishedAt,
83
+ location: instrumentation.location,
84
+ routePath: path,
85
+ moduleId,
86
+ durationMs: finishedAt - prepareStartedAt,
87
+ hasPrepared: true,
88
+ status: 'resolved',
89
+ });
90
+ })
91
+ .catch(() => {
92
+ const finishedAt = Date.now();
93
+ instrumentation.emit({
94
+ kind: 'prepare-complete',
95
+ source: instrumentation.source,
96
+ timestamp: finishedAt,
97
+ location: instrumentation.location,
98
+ routePath: path,
99
+ moduleId,
100
+ durationMs: finishedAt - prepareStartedAt,
101
+ hasPrepared: true,
102
+ status: 'rejected',
103
+ });
104
+ });
105
+ }
106
+ else {
107
+ preparedLoad.catch(() => {
108
+ });
109
+ }
71
110
  }
72
- if (instrumentation != null) {
111
+ if (instrumentation != null && prepare == null) {
73
112
  const finishedAt = Date.now();
74
113
  instrumentation.emit({
75
- kind: 'prepare-end',
114
+ kind: 'prepare-complete',
76
115
  source: instrumentation.source,
77
116
  timestamp: finishedAt,
78
117
  location: instrumentation.location,
79
118
  routePath: path,
119
+ moduleId,
80
120
  durationMs: finishedAt - prepareStartedAt,
81
- hasPrepared: prepare != null,
121
+ hasPrepared: false,
122
+ status: 'resolved',
82
123
  });
83
124
  }
84
- if (resourcePage != null) {
85
- Component = resourcePage.get();
86
- if (Component == null) {
87
- resourcePage.load();
125
+ if (resourcePage != null && resourcePage.get() == null) {
126
+ try {
127
+ Promise.resolve(resourcePage.load()).catch(() => {
128
+ });
129
+ }
130
+ catch {
88
131
  }
89
132
  }
90
133
  return {
91
134
  path,
92
- prepared,
135
+ fullPath: path,
136
+ segmentIndex: routeIndex,
137
+ preparedResource,
93
138
  redirectTo: matchedRoute.redirectTo ?? null,
94
139
  render,
95
140
  resourcePage,
96
141
  highlightId: buildHighlightId(path, routeIndex, moduleId),
142
+ querySchema,
97
143
  };
98
144
  });
99
145
  return {
100
146
  match,
101
- routes,
147
+ segments,
148
+ routes: segments,
149
+ };
150
+ }
151
+ export async function prepareMatchAsync(match, query, instrumentation, context) {
152
+ const preparedMatch = prepareMatch(match, query, instrumentation, context);
153
+ const segments = await Promise.all(preparedMatch.segments.map(async (route) => {
154
+ let prepared;
155
+ if (route.preparedResource != null) {
156
+ prepared = await route.preparedResource.load();
157
+ }
158
+ return {
159
+ path: route.path,
160
+ fullPath: route.fullPath,
161
+ segmentIndex: route.segmentIndex,
162
+ prepared,
163
+ redirectTo: route.redirectTo,
164
+ render: route.render,
165
+ resourcePage: route.resourcePage,
166
+ highlightId: route.highlightId,
167
+ querySchema: route.querySchema,
168
+ };
169
+ }));
170
+ return {
171
+ match: preparedMatch.match,
172
+ segments,
173
+ routes: segments,
102
174
  };
103
175
  }
104
176
  export function r(route) {
105
177
  return route;
106
178
  }
107
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUJBLE1BQU0sVUFBVSxlQUFlLENBQzdCLE1BQTRCLEVBQzVCLFFBQWtCO0lBRWxCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7UUFDM0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckQsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDcEIsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDL0IsT0FBTztnQkFDTCxLQUFLO2dCQUNMLEtBQUs7Z0JBQ0wsSUFBSTtnQkFDSixNQUFNO2FBQ1AsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBS0QsU0FBUyxnQkFBZ0IsQ0FDdkIsU0FBNkIsRUFDN0IsS0FBYSxFQUNiLFFBQWlCO0lBRWpCLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUMzQixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDM0QsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUM3RCxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3ZCLEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUM7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UTtZQUNSLFVBQVUsRUFBRSxZQUFZLENBQUMsVUFBVSxJQUFJLElBQUk7WUFDM0MsTUFBTTtZQUNOLFlBQVk7WUFDWixXQUFXLEVBQUUsZ0JBQWdCLENBQUMsSUFBSSxFQUFFLFVBQVUsRUFBRSxRQUFRLENBQUM7U0FDMUQsQ0FBQztJQUNKLENBQUMsQ0FDRixDQUFDO0lBRUYsT0FBTztRQUNMLEtBQUs7UUFDTCxNQUFNO0tBQ1AsQ0FBQztBQUNKLENBQUM7QUFPRCxNQUFNLFVBQVUsQ0FBQyxDQU1mLEtBQXFEO0lBRXJELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGFyYW1EYXRhIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuXG5pbXBvcnQge1xuICB0eXBlIFByZXBhcmVSZXN1bHQsXG4gIHR5cGUgUHJlcGFyZWRNYXRjaCxcbiAgdHlwZSBQcmVwYXJlZE1hdGNoUm91dGUsXG4gIHR5cGUgUm91dGUsXG4gIHR5cGUgUm91dGVyTWF0Y2hlZFJvdXRlLFxufSBmcm9tICcuL3R5cGVzLmpzJztcblxuaW1wb3J0IHR5cGUge1xuICBSb3V0ZXJQcmVwYXJlRXZlbnQsXG4gIFJvdXRlck5hdmlnYXRpb25Tb3VyY2UsXG4gIFJvdXRlckxvY2F0aW9uU25hcHNob3QsXG59IGZyb20gJy4vaW5zdHJ1bWVudGF0aW9uL0luc3RydW1lbnRhdGlvbi5qcyc7XG5cbmltcG9ydCB0eXBlIHsgRmxhdFJvdXRlIH0gZnJvbSAnLi9idWlsZGVyLmpzJztcblxuLyoqXG4gKiBGaW5kcyB0aGUgZmlyc3QgZmxhdCByb3V0ZSBtYXRjaGluZyB0aGUgcHJvdmlkZWQgbG9jYXRpb24uXG4gKlxuICogQHBhcmFtIHJvdXRlcyAtIEZsYXR0ZW5lZCByb3V0ZSBsaXN0IHRvIGV2YWx1YXRlLlxuICogQHBhcmFtIGxvY2F0aW9uIC0gQnJvd3NlciBsb2NhdGlvbiB3aG9zZSBwYXRobmFtZSBzaG91bGQgYmUgbWF0Y2hlZC5cbiAqIEByZXR1cm5zIE1hdGNoZWQgcm91dGUgd2l0aCBwYXJhbXMgb3IgYG51bGxgIGlmIG5vbmUgbWF0Y2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXRjaGVkUm91dGU8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YT4oXG4gIHJvdXRlczogRmxhdFJvdXRlPFRQYXJhbXM+W10sXG4gIGxvY2F0aW9uOiBMb2NhdGlvbixcbik6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwge1xuICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgIGNvbnN0IG1hdGNoID0gcm91dGUubWF0Y2hGdW5jdGlvbihsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgaWYgKG1hdGNoICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgeyBwYXRoLCBwYXJhbXMgfSA9IG1hdGNoO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIHJvdXRlLFxuICAgICAgICBwYXRoLFxuICAgICAgICBwYXJhbXMsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIERlcml2ZXMgYSBkZXRlcm1pbmlzdGljIGlkZW50aWZpZXIgdGhhdCBsaW5rcyBwcmVwYXJlZCByb3V0ZXMgdG8gRE9NIG1hcmtlcnMuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkSGlnaGxpZ2h0SWQoXG4gIHJvdXRlUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBpbmRleDogbnVtYmVyLFxuICBtb2R1bGVJZD86IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAodHlwZW9mIG1vZHVsZUlkID09PSAnc3RyaW5nJyAmJiBtb2R1bGVJZC50cmltKCkgIT09ICcnKSB7XG4gICAgcGFydHMucHVzaChgbW9kdWxlOiR7bW9kdWxlSWR9YCk7XG4gIH1cbiAgaWYgKHR5cGVvZiByb3V0ZVBhdGggPT09ICdzdHJpbmcnICYmIHJvdXRlUGF0aC50cmltKCkgIT09ICcnKSB7XG4gICAgcGFydHMucHVzaChgcGF0aDoke3JvdXRlUGF0aH1gKTtcbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgcGFydHMucHVzaCgncm91dGUnKTtcbiAgfVxuICBwYXJ0cy5wdXNoKGBpbmRleDoke2luZGV4fWApO1xuICByZXR1cm4gcGFydHMuam9pbignfCcpO1xufVxuXG4vKipcbiAqIFByZXBhcmVzIGEgbWF0Y2hlZCByb3V0ZSBieSBleGVjdXRpbmcgYHByZXBhcmVgIGNhbGxiYWNrcyBhbmQgcmVzb2x2aW5nIHJlc291cmNlIHBhZ2VzLlxuICpcbiAqIEBwYXJhbSBtYXRjaCAtIE1hdGNoZWQgcm91dGUgZGVzY3JpcHRvciAob3IgYG51bGxgIHdoZW4gbm90aGluZyBtYXRjaGVkKS5cbiAqIEBwYXJhbSBxdWVyeSAtIE9wdGlvbmFsIHF1ZXJ5IG9iamVjdCBmb3J3YXJkZWQgdG8gcHJlcGFyZSBmdW5jdGlvbnMuXG4gKiBAcGFyYW0gY29udGV4dCAtIE9wdGlvbmFsIHJvdXRlciBjb250ZXh0IGZvcndhcmRlZCB0byBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqIEByZXR1cm5zIFByZXBhcmVkIGhpZXJhcmNoeSByZWFkeSBmb3IgdGhlIHJlbmRlcmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZU1hdGNoPFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGEsIFRDb250ZXh0ID0gdW5rbm93bj4oXG4gIG1hdGNoOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFBhcmFtcz4gfCBudWxsLFxuICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBpbnN0cnVtZW50YXRpb24/OiB7XG4gICAgZW1pdDogKGV2ZW50OiBSb3V0ZXJQcmVwYXJlRXZlbnQpID0+IHZvaWQ7XG4gICAgc291cmNlOiBSb3V0ZXJOYXZpZ2F0aW9uU291cmNlO1xuICAgIGxvY2F0aW9uOiBSb3V0ZXJMb2NhdGlvblNuYXBzaG90O1xuICB9LFxuICBjb250ZXh0PzogVENvbnRleHQsXG4pOiBQcmVwYXJlZE1hdGNoPFRQYXJhbXM+IHtcbiAgLy8gTk9URTogUnVudGltZSByZXRhaW5zIGEgZ2VuZXJpYyBQcmVwYXJlZFJlc3VsdDsgdHlwZS1sZXZlbCBuYXJyb3dpbmcgaXMgYWNoaWV2ZWQgZXh0ZXJuYWxseVxuICAvLyB0aHJvdWdoIHRoZSByb3V0ZSB1bmlvbiBhbmQgUHJlcGFyZWRBY2Nlc3MgaGVscGVycy4gV2UgaW50ZW50aW9uYWxseSBhdm9pZCBpbmplY3RpbmdcbiAgLy8gZ2VuZXJpYyBwYXJhbWV0ZXJzIGhlcmUgdG8ga2VlcCBydW50aW1lIGxpZ2h0d2VpZ2h0IHdoaWxlIHN0aWxsIGVuYWJsaW5nIGNvbXBpbGUtdGltZVxuICAvLyBkaXNjcmltaW5hdGlvbiBpbiB1c2VybGFuZCB2aWEgY3JlYXRlUm91dGVyIGdlbmVyaWNzLlxuICBpZiAobWF0Y2ggPT0gbnVsbCkge1xuICAgIHJldHVybiB7XG4gICAgICBtYXRjaCxcbiAgICAgIHJvdXRlczogW10sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoZWRSb3V0ZSA9IG1hdGNoLnJvdXRlO1xuXG4gIGNvbnN0IHJvdXRlczogUHJlcGFyZWRNYXRjaFJvdXRlW10gPSBtYXRjaC5yb3V0ZS5yb3V0ZXMubWFwKFxuICAgIChyb3V0ZSwgcm91dGVJbmRleCkgPT4ge1xuICAgICAgY29uc3QgeyBwYXRoLCBwcmVwYXJlLCByZXNvdXJjZVBhZ2UsIHJlbmRlciB9ID0gcm91dGU7XG4gICAgICBsZXQgbW9kdWxlSWQ6IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIGlmIChcbiAgICAgICAgcmVzb3VyY2VQYWdlICE9IG51bGwgJiZcbiAgICAgICAgdHlwZW9mIHJlc291cmNlUGFnZS5nZXRNb2R1bGVJZCA9PT0gJ2Z1bmN0aW9uJ1xuICAgICAgKSB7XG4gICAgICAgIGNvbnN0IHJlc29sdmVkTW9kdWxlSWQgPSByZXNvdXJjZVBhZ2UuZ2V0TW9kdWxlSWQoKTtcbiAgICAgICAgaWYgKHR5cGVvZiByZXNvbHZlZE1vZHVsZUlkID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIG1vZHVsZUlkID0gcmVzb2x2ZWRNb2R1bGVJZDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBsZXQgQ29tcG9uZW50OiB1bmtub3duO1xuICAgICAgbGV0IHByZXBhcmVkOiBQcmVwYXJlUmVzdWx0IHwgdW5kZWZpbmVkO1xuXG4gICAgICBsZXQgcHJlcGFyZVN0YXJ0ZWRBdCA9IDA7XG4gICAgICBpZiAoaW5zdHJ1bWVudGF0aW9uICE9IG51bGwpIHtcbiAgICAgICAgcHJlcGFyZVN0YXJ0ZWRBdCA9IERhdGUubm93KCk7XG4gICAgICAgIGluc3RydW1lbnRhdGlvbi5lbWl0KHtcbiAgICAgICAgICBraW5kOiAncHJlcGFyZS1zdGFydCcsXG4gICAgICAgICAgc291cmNlOiBpbnN0cnVtZW50YXRpb24uc291cmNlLFxuICAgICAgICAgIHRpbWVzdGFtcDogcHJlcGFyZVN0YXJ0ZWRBdCxcbiAgICAgICAgICBsb2NhdGlvbjogaW5zdHJ1bWVudGF0aW9uLmxvY2F0aW9uLFxuICAgICAgICAgIHJvdXRlUGF0aDogcGF0aCxcbiAgICAgICAgICBtb2R1bGVJZCxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChwcmVwYXJlICE9IG51bGwpIHtcbiAgICAgICAgcHJlcGFyZWQgPSBwcmVwYXJlKHtcbiAgICAgICAgICBtYXRjaCxcbiAgICAgICAgICBtYXRjaGVkUm91dGUsXG4gICAgICAgICAgY29udGV4dCxcbiAgICAgICAgICByZXNvdXJjZVBhZ2UsXG4gICAgICAgICAgLy8gRml4IE9iamVjdC5jcmVhdGUobnVsbCkgaXNzdWUgaW4gcGF0aC10by1yZWdleHBcbiAgICAgICAgICB2YXJpYWJsZXM6IHsgLi4ubWF0Y2gucGFyYW1zIH0sXG4gICAgICAgICAgcXVlcnk6IHF1ZXJ5ID8/IHt9LFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKGluc3RydW1lbnRhdGlvbiAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGZpbmlzaGVkQXQgPSBEYXRlLm5vdygpO1xuICAgICAgICBpbnN0cnVtZW50YXRpb24uZW1pdCh7XG4gICAgICAgICAga2luZDogJ3ByZXBhcmUtZW5kJyxcbiAgICAgICAgICBzb3VyY2U6IGluc3RydW1lbnRhdGlvbi5zb3VyY2UsXG4gICAgICAgICAgdGltZXN0YW1wOiBmaW5pc2hlZEF0LFxuICAgICAgICAgIGxvY2F0aW9uOiBpbnN0cnVtZW50YXRpb24ubG9jYXRpb24sXG4gICAgICAgICAgcm91dGVQYXRoOiBwYXRoLFxuICAgICAgICAgIGR1cmF0aW9uTXM6IGZpbmlzaGVkQXQgLSBwcmVwYXJlU3RhcnRlZEF0LFxuICAgICAgICAgIGhhc1ByZXBhcmVkOiBwcmVwYXJlICE9IG51bGwsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzb3VyY2VQYWdlICE9IG51bGwpIHtcbiAgICAgICAgQ29tcG9uZW50ID0gcmVzb3VyY2VQYWdlLmdldCgpO1xuICAgICAgICBpZiAoQ29tcG9uZW50ID09IG51bGwpIHtcbiAgICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzXG4gICAgICAgICAgcmVzb3VyY2VQYWdlLmxvYWQoKTsgLy8gZWFnZXJseSBsb2FkXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIHByZXBhcmVkLFxuICAgICAgICByZWRpcmVjdFRvOiBtYXRjaGVkUm91dGUucmVkaXJlY3RUbyA/PyBudWxsLFxuICAgICAgICByZW5kZXIsXG4gICAgICAgIHJlc291cmNlUGFnZSxcbiAgICAgICAgaGlnaGxpZ2h0SWQ6IGJ1aWxkSGlnaGxpZ2h0SWQocGF0aCwgcm91dGVJbmRleCwgbW9kdWxlSWQpLFxuICAgICAgfTtcbiAgICB9LFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgbWF0Y2gsXG4gICAgcm91dGVzLFxuICB9O1xufVxuXG4vKipcbiAqIFJvdXRlIGhlbHBlciB0aGF0IHByZXNlcnZlcyBUeXBlU2NyaXB0IGluZmVyZW5jZSAoaW5jbHVkaW5nIGNvbmRpdGlvbmFsIHF1ZXJ5LXNjaGVtYSBpbmZlcmVuY2UpLlxuICpcbiAqIEBwYXJhbSByb3V0ZSAtIFJvdXRlIGRlZmluaXRpb24gdG8gcmV0dXJuIHVuY2hhbmdlZCB3aXRoIGluZmVycmVkIGdlbmVyaWNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcjxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0ID0gUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbiAgVFF1ZXJ5IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4oXG4gIHJvdXRlOiBSb3V0ZTxUQ29udGV4dCwgVFByZXBhcmVkLCBUVmFyaWFibGVzLCBUUXVlcnk+LFxuKTogUm91dGU8VENvbnRleHQsIFRQcmVwYXJlZCwgVFZhcmlhYmxlcywgVFF1ZXJ5PiB7XG4gIHJldHVybiByb3V0ZTtcbn1cbiJdfQ==
179
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBb0JBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBZW5FLE1BQU0sVUFBVSxlQUFlLENBQzdCLE1BQXNDLEVBQ3RDLFFBQWtCO0lBRWxCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7UUFDM0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckQsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDcEIsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDL0IsT0FBTztnQkFDTCxLQUFLO2dCQUNMLEtBQUs7Z0JBQ0wsSUFBSTtnQkFDSixNQUFNO2FBQ1AsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBS0QsU0FBUyxnQkFBZ0IsQ0FDdkIsU0FBNkIsRUFDN0IsS0FBYSxFQUNiLFFBQWlCO0lBRWpCLE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUMzQixJQUFJLE9BQU8sUUFBUSxLQUFLLFFBQVEsSUFBSSxRQUFRLENBQUMsSUFBSSxFQUFFLEtBQUssRUFBRSxFQUFFLENBQUM7UUFDM0QsS0FBSyxDQUFDLElBQUksQ0FBQyxVQUFVLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDbkMsQ0FBQztJQUNELElBQUksT0FBTyxTQUFTLEtBQUssUUFBUSxJQUFJLFNBQVMsQ0FBQyxJQUFJLEVBQUUsS0FBSyxFQUFFLEVBQUUsQ0FBQztRQUM3RCxLQUFLLENBQUMsSUFBSSxDQUFDLFFBQVEsU0FBUyxFQUFFLENBQUMsQ0FBQztJQUNsQyxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxD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O1FBQ0QsT0FBTztZQUNMLElBQUksRUFBRSxLQUFLLENBQUMsSUFBSTtZQUNoQixRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLFFBQVE7WUFDUixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1NBQy9CLENBQUM7SUFDSixDQUFDLENBQ0YsQ0FDRixDQUFDO0lBRUYsT0FBTztRQUNMLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSztRQUMxQixRQUFRO1FBQ1IsTUFBTSxFQUFFLFFBQVE7S0FDakIsQ0FBQztBQUNKLENBQUM7QUFPRCxNQUFNLFVBQVUsQ0FBQyxDQU1mLEtBQXFEO0lBRXJELE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGFyYW1EYXRhIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuXG5pbXBvcnQge1xuICB0eXBlIFByZXBhcmVSZXN1bHQsXG4gIHR5cGUgUHJlcGFyZWRNYXRjaCxcbiAgdHlwZSBQcmVwYXJlZE1hdGNoUm91dGUsXG4gIHR5cGUgUHJlcGFyZWRSb3V0ZVNlZ21lbnQsXG4gIHR5cGUgUmVzb2x2ZWRQcmVwYXJlZE1hdGNoLFxuICB0eXBlIFJlc29sdmVkUHJlcGFyZWRSb3V0ZVNlZ21lbnQsXG4gIHR5cGUgUm91dGUsXG4gIHR5cGUgUm91dGVyTWF0Y2hlZFJvdXRlLFxufSBmcm9tICcuL3R5cGVzLmpzJztcblxuaW1wb3J0IHR5cGUge1xuICBSb3V0ZXJQcmVwYXJlRXZlbnQsXG4gIFJvdXRlck5hdmlnYXRpb25Tb3VyY2UsXG4gIFJvdXRlckxvY2F0aW9uU25hcHNob3QsXG59IGZyb20gJy4vaW5zdHJ1bWVudGF0aW9uL0luc3RydW1lbnRhdGlvbi5qcyc7XG5cbmltcG9ydCB0eXBlIHsgRmxhdFJvdXRlIH0gZnJvbSAnLi9idWlsZGVyLmpzJztcbmltcG9ydCB7IGNyZWF0ZVByZXBhcmVkVmFsdWVSZXNvdXJjZSB9IGZyb20gJy4vcHJlcGFyZVJlc291cmNlLmpzJztcblxudHlwZSBQcmVwYXJlSW5zdHJ1bWVudGF0aW9uID0ge1xuICBlbWl0OiAoZXZlbnQ6IFJvdXRlclByZXBhcmVFdmVudCkgPT4gdm9pZDtcbiAgc291cmNlOiBSb3V0ZXJOYXZpZ2F0aW9uU291cmNlO1xuICBsb2NhdGlvbjogUm91dGVyTG9jYXRpb25TbmFwc2hvdDtcbn07XG5cbi8qKlxuICogRmluZHMgdGhlIGZpcnN0IGZsYXQgcm91dGUgbWF0Y2hpbmcgdGhlIHByb3ZpZGVkIGxvY2F0aW9uLlxuICpcbiAqIEBwYXJhbSByb3V0ZXMgLSBGbGF0dGVuZWQgcm91dGUgbGlzdCB0byBldmFsdWF0ZS5cbiAqIEBwYXJhbSBsb2NhdGlvbiAtIEJyb3dzZXIgbG9jYXRpb24gd2hvc2UgcGF0aG5hbWUgc2hvdWxkIGJlIG1hdGNoZWQuXG4gKiBAcmV0dXJucyBNYXRjaGVkIHJvdXRlIHdpdGggcGFyYW1zIG9yIGBudWxsYCBpZiBub25lIG1hdGNoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWF0Y2hlZFJvdXRlPFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGEsIFRDb250ZXh0ID0gdW5rbm93bj4oXG4gIHJvdXRlczogRmxhdFJvdXRlPFRQYXJhbXMsIFRDb250ZXh0PltdLFxuICBsb2NhdGlvbjogTG9jYXRpb24sXG4pOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFBhcmFtcywgVENvbnRleHQ+IHwgbnVsbCB7XG4gIGZvciAoY29uc3Qgcm91dGUgb2Ygcm91dGVzKSB7XG4gICAgY29uc3QgbWF0Y2ggPSByb3V0ZS5tYXRjaEZ1bmN0aW9uKGxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICBpZiAobWF0Y2ggIT09IGZhbHNlKSB7XG4gICAgICBjb25zdCB7IHBhdGgsIHBhcmFtcyB9ID0gbWF0Y2g7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXRjaCxcbiAgICAgICAgcm91dGUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH07XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICogRGVyaXZlcyBhIGRldGVybWluaXN0aWMgaWRlbnRpZmllciB0aGF0IGxpbmtzIHByZXBhcmVkIHJvdXRlcyB0byBET00gbWFya2Vycy5cbiAqL1xuZnVuY3Rpb24gYnVpbGRIaWdobGlnaHRJZChcbiAgcm91dGVQYXRoOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4gIGluZGV4OiBudW1iZXIsXG4gIG1vZHVsZUlkPzogc3RyaW5nLFxuKTogc3RyaW5nIHtcbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gIGlmICh0eXBlb2YgbW9kdWxlSWQgPT09ICdzdHJpbmcnICYmIG1vZHVsZUlkLnRyaW0oKSAhPT0gJycpIHtcbiAgICBwYXJ0cy5wdXNoKGBtb2R1bGU6JHttb2R1bGVJZH1gKTtcbiAgfVxuICBpZiAodHlwZW9mIHJvdXRlUGF0aCA9PT0gJ3N0cmluZycgJiYgcm91dGVQYXRoLnRyaW0oKSAhPT0gJycpIHtcbiAgICBwYXJ0cy5wdXNoKGBwYXRoOiR7cm91dGVQYXRofWApO1xuICB9XG4gIGlmIChwYXJ0cy5sZW5ndGggPT09IDApIHtcbiAgICBwYXJ0cy5wdXNoKCdyb3V0ZScpO1xuICB9XG4gIHBhcnRzLnB1c2goYGluZGV4OiR7aW5kZXh9YCk7XG4gIHJldHVybiBwYXJ0cy5qb2luKCd8Jyk7XG59XG5cbi8qKlxuICogUHJlcGFyZXMgYSBtYXRjaGVkIHJvdXRlIGJ5IGV4ZWN1dGluZyBgcHJlcGFyZWAgY2FsbGJhY2tzIGFuZCByZXNvbHZpbmcgcmVzb3VyY2UgcGFnZXMuXG4gKlxuICogQHBhcmFtIG1hdGNoIC0gTWF0Y2hlZCByb3V0ZSBkZXNjcmlwdG9yIChvciBgbnVsbGAgd2hlbiBub3RoaW5nIG1hdGNoZWQpLlxuICogQHBhcmFtIHF1ZXJ5IC0gT3B0aW9uYWwgcXVlcnkgb2JqZWN0IGZvcndhcmRlZCB0byBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqIEBwYXJhbSBjb250ZXh0IC0gT3B0aW9uYWwgcm91dGVyIGNvbnRleHQgZm9yd2FyZGVkIHRvIHByZXBhcmUgZnVuY3Rpb25zLlxuICogQHJldHVybnMgUHJlcGFyZWQgaGllcmFyY2h5IHJlYWR5IGZvciB0aGUgcmVuZGVyZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlTWF0Y2g8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YSwgVENvbnRleHQgPSB1bmtub3duPihcbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zLCBUQ29udGV4dD4gfCBudWxsLFxuICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBpbnN0cnVtZW50YXRpb24/OiBQcmVwYXJlSW5zdHJ1bWVudGF0aW9uLFxuICBjb250ZXh0PzogVENvbnRleHQsXG4pOiBQcmVwYXJlZE1hdGNoPFRQYXJhbXMsIFRDb250ZXh0PiB7XG4gIC8vIE5PVEU6IFJ1bnRpbWUgcmV0YWlucyBhIGdlbmVyaWMgUHJlcGFyZWRSZXN1bHQ7IHR5cGUtbGV2ZWwgbmFycm93aW5nIGlzIGFjaGlldmVkIGV4dGVybmFsbHlcbiAgLy8gdGhyb3VnaCB0aGUgcm91dGUgdW5pb24gYW5kIFByZXBhcmVkQWNjZXNzIGhlbHBlcnMuIFdlIGludGVudGlvbmFsbHkgYXZvaWQgaW5qZWN0aW5nXG4gIC8vIGdlbmVyaWMgcGFyYW1ldGVycyBoZXJlIHRvIGtlZXAgcnVudGltZSBsaWdodHdlaWdodCB3aGlsZSBzdGlsbCBlbmFibGluZyBjb21waWxlLXRpbWVcbiAgLy8gZGlzY3JpbWluYXRpb24gaW4gdXNlcmxhbmQgdmlhIGNyZWF0ZVJvdXRlciBnZW5lcmljcy5cbiAgaWYgKG1hdGNoID09IG51bGwpIHtcbiAgICByZXR1cm4ge1xuICAgICAgbWF0Y2gsXG4gICAgICBzZWdtZW50czogW10sXG4gICAgICByb3V0ZXM6IFtdLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBtYXRjaGVkUm91dGUgPSBtYXRjaC5yb3V0ZTtcblxuICBjb25zdCBzZWdtZW50czogUHJlcGFyZWRSb3V0ZVNlZ21lbnQ8VENvbnRleHQ+W10gPSBtYXRjaC5yb3V0ZS5yb3V0ZXMubWFwKFxuICAgIChyb3V0ZSwgcm91dGVJbmRleCkgPT4ge1xuICAgICAgY29uc3QgeyBwYXRoLCBwcmVwYXJlLCBxdWVyeVNjaGVtYSwgcmVzb3VyY2VQYWdlLCByZW5kZXIgfSA9IHJvdXRlO1xuICAgICAgbGV0IG1vZHVsZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAoXG4gICAgICAgIHJlc291cmNlUGFnZSAhPSBudWxsICYmXG4gICAgICAgIHR5cGVvZiByZXNvdXJjZVBhZ2UuZ2V0TW9kdWxlSWQgPT09ICdmdW5jdGlvbidcbiAgICAgICkge1xuICAgICAgICBjb25zdCByZXNvbHZlZE1vZHVsZUlkID0gcmVzb3VyY2VQYWdlLmdldE1vZHVsZUlkKCk7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzb2x2ZWRNb2R1bGVJZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBtb2R1bGVJZCA9IHJlc29sdmVkTW9kdWxlSWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGV0IHByZXBhcmVTdGFydGVkQXQgPSAwO1xuICAgICAgaWYgKGluc3RydW1lbnRhdGlvbiAhPSBudWxsKSB7XG4gICAgICAgIHByZXBhcmVTdGFydGVkQXQgPSBEYXRlLm5vdygpO1xuICAgICAgICBpbnN0cnVtZW50YXRpb24uZW1pdCh7XG4gICAgICAgICAga2luZDogJ3ByZXBhcmUtc3RhcnQnLFxuICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICB0aW1lc3RhbXA6IHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBsZXQgcHJlcGFyZWRSZXNvdXJjZTogUHJlcGFyZWRNYXRjaFJvdXRlWydwcmVwYXJlZFJlc291cmNlJ107XG4gICAgICBpZiAocHJlcGFyZSAhPSBudWxsKSB7XG4gICAgICAgIHByZXBhcmVkUmVzb3VyY2UgPSBjcmVhdGVQcmVwYXJlZFZhbHVlUmVzb3VyY2UoKCkgPT4ge1xuICAgICAgICAgIHJldHVybiBwcmVwYXJlKHtcbiAgICAgICAgICAgIG1hdGNoLFxuICAgICAgICAgICAgbWF0Y2hlZFJvdXRlLFxuICAgICAgICAgICAgY29udGV4dDogY29udGV4dCBhcyBUQ29udGV4dCxcbiAgICAgICAgICAgIHJlc291cmNlUGFnZSxcbiAgICAgICAgICAgIC8vIEZpeCBPYmplY3QuY3JlYXRlKG51bGwpIGlzc3VlIGluIHBhdGgtdG8tcmVnZXhwXG4gICAgICAgICAgICB2YXJpYWJsZXM6IHsgLi4ubWF0Y2gucGFyYW1zIH0sXG4gICAgICAgICAgICBxdWVyeTogcXVlcnkgPz8ge30sXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0pO1xuICAgICAgICAvLyBFYWdlcmx5IGV2YWx1YXRlIHByZXBhcmUgc28gdGhlIHByZXBhcmVkIHJlc291cmNlIGltbWVkaWF0ZWx5IHJlZmxlY3RzXG4gICAgICAgIC8vIHN5bmMgcmVzb2x1dGlvbiBvciBhc3luYyBwZW5kaW5nIHN0YXRlIGZvciB0aGUgY3VycmVudCByb3V0ZSBzbmFwc2hvdC5cbiAgICAgICAgY29uc3QgcHJlcGFyZWRMb2FkID0gcHJlcGFyZWRSZXNvdXJjZS5sb2FkKCk7XG5cbiAgICAgICAgaWYgKGluc3RydW1lbnRhdGlvbiAhPSBudWxsKSB7XG4gICAgICAgICAgcHJlcGFyZWRMb2FkXG4gICAgICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgICAgIGNvbnN0IGZpbmlzaGVkQXQgPSBEYXRlLm5vdygpO1xuICAgICAgICAgICAgICBpbnN0cnVtZW50YXRpb24uZW1pdCh7XG4gICAgICAgICAgICAgICAga2luZDogJ3ByZXBhcmUtY29tcGxldGUnLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGZpbmlzaGVkQXQsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgICAgICAgICAgZHVyYXRpb25NczogZmluaXNoZWRBdCAtIHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgICAgICAgaGFzUHJlcGFyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAncmVzb2x2ZWQnLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaW5pc2hlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgaW5zdHJ1bWVudGF0aW9uLmVtaXQoe1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdwcmVwYXJlLWNvbXBsZXRlJyxcbiAgICAgICAgICAgICAgICBzb3VyY2U6IGluc3RydW1lbnRhdGlvbi5zb3VyY2UsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBmaW5pc2hlZEF0LFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpbnN0cnVtZW50YXRpb24ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgcm91dGVQYXRoOiBwYXRoLFxuICAgICAgICAgICAgICAgIG1vZHVsZUlkLFxuICAgICAgICAgICAgICAgIGR1cmF0aW9uTXM6IGZpbmlzaGVkQXQgLSBwcmVwYXJlU3RhcnRlZEF0LFxuICAgICAgICAgICAgICAgIGhhc1ByZXBhcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJ3JlamVjdGVkJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmVwYXJlZExvYWQuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgLy8gSW50ZW50aW9uYWxseSBpZ25vcmVkOiByb3V0ZSByZW5kZXJpbmcvZXJyb3IgYm91bmRhcmllcyBvd24gdGhlIGZhaWx1cmUuXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGluc3RydW1lbnRhdGlvbiAhPSBudWxsICYmIHByZXBhcmUgPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBmaW5pc2hlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgaW5zdHJ1bWVudGF0aW9uLmVtaXQoe1xuICAgICAgICAgIGtpbmQ6ICdwcmVwYXJlLWNvbXBsZXRlJyxcbiAgICAgICAgICBzb3VyY2U6IGluc3RydW1lbnRhdGlvbi5zb3VyY2UsXG4gICAgICAgICAgdGltZXN0YW1wOiBmaW5pc2hlZEF0LFxuICAgICAgICAgIGxvY2F0aW9uOiBpbnN0cnVtZW50YXRpb24ubG9jYXRpb24sXG4gICAgICAgICAgcm91dGVQYXRoOiBwYXRoLFxuICAgICAgICAgIG1vZHVsZUlkLFxuICAgICAgICAgIGR1cmF0aW9uTXM6IGZpbmlzaGVkQXQgLSBwcmVwYXJlU3RhcnRlZEF0LFxuICAgICAgICAgIGhhc1ByZXBhcmVkOiBmYWxzZSxcbiAgICAgICAgICBzdGF0dXM6ICdyZXNvbHZlZCcsXG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICBpZiAocmVzb3VyY2VQYWdlICE9IG51bGwgJiYgcmVzb3VyY2VQYWdlLmdldCgpID09IG51bGwpIHtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBQcm9taXNlLnJlc29sdmUocmVzb3VyY2VQYWdlLmxvYWQoKSkuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgLy8gSW50ZW50aW9uYWxseSBpZ25vcmVkOiByb3V0ZSByZW5kZXJpbmcvZXJyb3IgYm91bmRhcmllcyBvd24gdGhlIGZhaWx1cmUuXG4gICAgICAgICAgfSk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIC8vIEludGVudGlvbmFsbHkgaWdub3JlZDogcm91dGUgcmVuZGVyaW5nL2Vycm9yIGJvdW5kYXJpZXMgb3duIHRoZSBmYWlsdXJlLlxuICAgICAgICB9XG4gICAgICB9XG4gICAgICByZXR1cm4ge1xuICAgICAgICBwYXRoLFxuICAgICAgICBmdWxsUGF0aDogcGF0aCxcbiAgICAgICAgc2VnbWVudEluZGV4OiByb3V0ZUluZGV4LFxuICAgICAgICBwcmVwYXJlZFJlc291cmNlLFxuICAgICAgICByZWRpcmVjdFRvOiBtYXRjaGVkUm91dGUucmVkaXJlY3RUbyA/PyBudWxsLFxuICAgICAgICByZW5kZXIsXG4gICAgICAgIHJlc291cmNlUGFnZSxcbiAgICAgICAgaGlnaGxpZ2h0SWQ6IGJ1aWxkSGlnaGxpZ2h0SWQocGF0aCwgcm91dGVJbmRleCwgbW9kdWxlSWQpLFxuICAgICAgICBxdWVyeVNjaGVtYSxcbiAgICAgIH07XG4gICAgfSxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIG1hdGNoLFxuICAgIHNlZ21lbnRzLFxuICAgIHJvdXRlczogc2VnbWVudHMsXG4gIH07XG59XG5cbi8qKlxuICogUmVzb2x2ZXMgZXZlcnkgYXN5bmMgcHJlcGFyZSByZXNvdXJjZSBmb3IgYSBtYXRjaGVkIHJvdXRlIGhpZXJhcmNoeS5cbiAqXG4gKiBAcGFyYW0gbWF0Y2ggLSBNYXRjaGVkIHJvdXRlIGRlc2NyaXB0b3IgKG9yIGBudWxsYCB3aGVuIG5vdGhpbmcgbWF0Y2hlZCkuXG4gKiBAcGFyYW0gcXVlcnkgLSBPcHRpb25hbCBxdWVyeSBvYmplY3QgZm9yd2FyZGVkIHRvIHByZXBhcmUgZnVuY3Rpb25zLlxuICogQHBhcmFtIGluc3RydW1lbnRhdGlvbiAtIE9wdGlvbmFsIGluc3RydW1lbnRhdGlvbiBzaW5rIGZvciBwcmVwYXJlIGxpZmVjeWNsZSBldmVudHMuXG4gKiBAcGFyYW0gY29udGV4dCAtIE9wdGlvbmFsIHJvdXRlciBjb250ZXh0IGZvcndhcmRlZCB0byBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqIEByZXR1cm5zIFByZXBhcmVkIGhpZXJhcmNoeSB3aXRoIGNvbmNyZXRlIHByZXBhcmVkIHZhbHVlcyBpbnN0ZWFkIG9mIHJlc291cmNlcy5cbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHByZXBhcmVNYXRjaEFzeW5jPFxuICBUUGFyYW1zIGV4dGVuZHMgUGFyYW1EYXRhLFxuICBUQ29udGV4dCA9IHVua25vd24sXG4+KFxuICBtYXRjaDogUm91dGVyTWF0Y2hlZFJvdXRlPFRQYXJhbXMsIFRDb250ZXh0PiB8IG51bGwsXG4gIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGluc3RydW1lbnRhdGlvbj86IFByZXBhcmVJbnN0cnVtZW50YXRpb24sXG4gIGNvbnRleHQ/OiBUQ29udGV4dCxcbik6IFByb21pc2U8UmVzb2x2ZWRQcmVwYXJlZE1hdGNoPFRQYXJhbXMsIFRDb250ZXh0Pj4ge1xuICBjb25zdCBwcmVwYXJlZE1hdGNoID0gcHJlcGFyZU1hdGNoKG1hdGNoLCBxdWVyeSwgaW5zdHJ1bWVudGF0aW9uLCBjb250ZXh0KTtcbiAgY29uc3Qgc2VnbWVudHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBwcmVwYXJlZE1hdGNoLnNlZ21lbnRzLm1hcChcbiAgICAgIGFzeW5jIChyb3V0ZSk6IFByb21pc2U8UmVzb2x2ZWRQcmVwYXJlZFJvdXRlU2VnbWVudDxUQ29udGV4dD4+ID0+IHtcbiAgICAgICAgbGV0IHByZXBhcmVkOiB1bmtub3duO1xuICAgICAgICBpZiAocm91dGUucHJlcGFyZWRSZXNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgICAgcHJlcGFyZWQgPSBhd2FpdCByb3V0ZS5wcmVwYXJlZFJlc291cmNlLmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHBhdGg6IHJvdXRlLnBhdGgsXG4gICAgICAgICAgZnVsbFBhdGg6IHJvdXRlLmZ1bGxQYXRoLFxuICAgICAgICAgIHNlZ21lbnRJbmRleDogcm91dGUuc2VnbWVudEluZGV4LFxuICAgICAgICAgIHByZXBhcmVkLFxuICAgICAgICAgIHJlZGlyZWN0VG86IHJvdXRlLnJlZGlyZWN0VG8sXG4gICAgICAgICAgcmVuZGVyOiByb3V0ZS5yZW5kZXIsXG4gICAgICAgICAgcmVzb3VyY2VQYWdlOiByb3V0ZS5yZXNvdXJjZVBhZ2UsXG4gICAgICAgICAgaGlnaGxpZ2h0SWQ6IHJvdXRlLmhpZ2hsaWdodElkLFxuICAgICAgICAgIHF1ZXJ5U2NoZW1hOiByb3V0ZS5xdWVyeVNjaGVtYSxcbiAgICAgICAgfTtcbiAgICAgIH0sXG4gICAgKSxcbiAgKTtcblxuICByZXR1cm4ge1xuICAgIG1hdGNoOiBwcmVwYXJlZE1hdGNoLm1hdGNoLFxuICAgIHNlZ21lbnRzLFxuICAgIHJvdXRlczogc2VnbWVudHMsXG4gIH07XG59XG5cbi8qKlxuICogUm91dGUgaGVscGVyIHRoYXQgcHJlc2VydmVzIFR5cGVTY3JpcHQgaW5mZXJlbmNlIChpbmNsdWRpbmcgY29uZGl0aW9uYWwgcXVlcnktc2NoZW1hIGluZmVyZW5jZSkuXG4gKlxuICogQHBhcmFtIHJvdXRlIC0gUm91dGUgZGVmaW5pdGlvbiB0byByZXR1cm4gdW5jaGFuZ2VkIHdpdGggaW5mZXJyZWQgZ2VuZXJpY3MuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByPFxuICBUQ29udGV4dCA9IHVua25vd24sXG4gIFRQcmVwYXJlZCBleHRlbmRzIFByZXBhcmVSZXN1bHQgPSBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuICBUUXVlcnkgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuPihcbiAgcm91dGU6IFJvdXRlPFRDb250ZXh0LCBUUHJlcGFyZWQsIFRWYXJpYWJsZXMsIFRRdWVyeT4sXG4pOiBSb3V0ZTxUQ29udGV4dCwgVFByZXBhcmVkLCBUVmFyaWFibGVzLCBUUXVlcnk+IHtcbiAgcmV0dXJuIHJvdXRlO1xufVxuIl19
@@ -4,88 +4,140 @@ import type { Match, MatchFunction, ParamData } from 'path-to-regexp';
4
4
  import type { FlatRoute } from './builder.js';
5
5
  import type { ResourcePage } from './ResourcePage.js';
6
6
  import type { BrowserHistory } from './history/index.js';
7
- export type FlatRouteInput<TVariables extends ParamData> = {
7
+ export type MaybePromise<T> = T | Promise<T>;
8
+ export type RawQueryValue = string | string[];
9
+ export type RawQuery = Record<string, RawQueryValue>;
10
+ export type UnknownQueryShape = Record<string, unknown>;
11
+ export type UnknownFilters = Record<string, unknown>;
12
+ export type AsyncResourceStatus = 'idle' | 'pending' | 'resolved' | 'rejected';
13
+ export type ReadableResource<T> = {
14
+ get: () => T | undefined;
15
+ getError: () => unknown;
16
+ getStatus: () => AsyncResourceStatus;
17
+ load: () => Promise<T>;
18
+ read: () => T;
19
+ };
20
+ export type FlatRouteInput<TVariables extends ParamData, TContext = unknown> = {
8
21
  path: string;
9
22
  redirectTo?: string;
10
23
  matchFunction: MatchFunction<TVariables>;
11
- routes: AnyRoute[];
24
+ routes: UnknownRoute<TContext>[];
12
25
  };
13
- export type RouterMatchedRoute<TVariables extends ParamData> = {
26
+ export type RouterMatchedRoute<TVariables extends ParamData, TContext = unknown> = {
14
27
  match: Match<TVariables>;
15
28
  params: TVariables;
16
29
  path: string;
17
- route: FlatRoute<TVariables>;
30
+ route: FlatRoute<TVariables, TContext>;
18
31
  };
19
32
  export type RouteReactComponent<TProps = Record<string, unknown>> = (props: TProps) => JSX.Element | null;
20
- export type RouteRenderOpts<TContext, TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = {
33
+ export type RouteRenderOpts<TContext, TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends UnknownQueryShape = UnknownQueryShape> = {
21
34
  children: ReactNode;
22
35
  Component?: RouteReactComponent;
23
36
  prepared: TPrepared | undefined;
24
- preparedRoute: PreparedMatchRoute;
25
- route: FlatRoute<TVariables> | null;
37
+ preparedSegment: PreparedRouteSegment<TContext, TPrepared, TVariables, TQueryShape>;
38
+ preparedRoute: PreparedRouteSegment<TContext, TPrepared, TVariables, TQueryShape>;
39
+ preparedSegments: PreparedRouteSegments<TContext>;
40
+ segmentIndex: number;
41
+ leafSegment: PreparedRouteSegment<TContext>;
42
+ route: FlatRoute<TVariables, TContext> | null;
26
43
  context: TContext;
27
- rawQuery: Record<string, string | string[]>;
44
+ rawQuery: RawQuery;
28
45
  query: TQueryShape;
29
46
  };
30
- export type RouteRender<TContext, TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = (opts: RouteRenderOpts<TContext, TPrepared, TVariables, TQueryShape>) => ReactElement | null;
31
- export type RouteRenderArgs<TContext, TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = RouteRenderOpts<TContext, TPrepared, TVariables, TQueryShape>;
32
- export type PreparedMatchRoute = {
47
+ export type RouteRender<TContext, TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends UnknownQueryShape = UnknownQueryShape> = (opts: RouteRenderOpts<TContext, TPrepared, TVariables, TQueryShape>) => ReactElement | null | undefined | Promise<ReactElement | null | undefined>;
48
+ export type RouteRenderArgs<TContext, TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends UnknownQueryShape = UnknownQueryShape> = RouteRenderOpts<TContext, TPrepared, TVariables, TQueryShape>;
49
+ export type PreparedRouteSegment<TContext = unknown, TPrepared extends PrepareResult = PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends UnknownQueryShape = UnknownQueryShape> = {
33
50
  path?: string;
34
- prepared: PrepareResult | undefined;
35
- render?: RouteRender<any, any, any, any>;
51
+ fullPath?: string;
52
+ segmentIndex: number;
53
+ preparedResource?: PreparedValueResource<TPrepared>;
54
+ render?: RouteRender<TContext, TPrepared, TVariables, TQueryShape>;
55
+ redirectTo: string | null;
56
+ resourcePage?: ResourcePage | null;
57
+ highlightId?: string;
58
+ querySchema?: FilterSchema;
59
+ };
60
+ export type PreparedMatchRoute = PreparedRouteSegment;
61
+ export type PreparedRouteSegments<TContext = unknown> = PreparedRouteSegment<TContext>[];
62
+ export type PreparedRouteSegmentSnapshot = {
63
+ path?: string;
64
+ fullPath?: string;
65
+ segmentIndex: number;
66
+ preparedResource?: PreparedValueResource;
67
+ redirectTo: string | null;
68
+ resourcePage?: ResourcePage | null;
69
+ highlightId?: string;
70
+ querySchema?: FilterSchema;
71
+ };
72
+ export type PreparedRouteChain<TVariables extends ParamData, TContext = unknown> = {
73
+ match: RouterMatchedRoute<TVariables, TContext> | null;
74
+ segments: PreparedRouteSegments<TContext>;
75
+ routes: PreparedRouteSegments<TContext>;
76
+ };
77
+ export type PreparedMatch<TVariables extends ParamData, TContext = unknown> = PreparedRouteChain<TVariables, TContext>;
78
+ export type ResolvedPreparedRouteSegment<TContext = unknown, TPrepared extends PrepareResult = PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends UnknownQueryShape = UnknownQueryShape> = {
79
+ path?: string;
80
+ fullPath?: string;
81
+ segmentIndex: number;
82
+ prepared: TPrepared | undefined;
83
+ render?: RouteRender<TContext, TPrepared, TVariables, TQueryShape>;
36
84
  redirectTo: string | null;
37
85
  resourcePage?: ResourcePage | null;
38
86
  highlightId?: string;
87
+ querySchema?: FilterSchema;
39
88
  };
40
- export type PreparedMatch<TVariables extends ParamData> = {
41
- match: RouterMatchedRoute<TVariables> | null;
42
- routes: PreparedMatchRoute[];
89
+ export type ResolvedPreparedMatchRoute = ResolvedPreparedRouteSegment;
90
+ export type ResolvedPreparedRouteChain<TVariables extends ParamData, TContext = unknown> = {
91
+ match: RouterMatchedRoute<TVariables, TContext> | null;
92
+ segments: ResolvedPreparedRouteSegment<TContext>[];
93
+ routes: ResolvedPreparedRouteSegment<TContext>[];
43
94
  };
95
+ export type ResolvedPreparedMatch<TVariables extends ParamData, TContext = unknown> = ResolvedPreparedRouteChain<TVariables, TContext>;
44
96
  export type RouteEntry<TVariables extends ParamData, S extends FilterSchema | undefined = FilterSchema | undefined, TContext = unknown> = {
45
- preparedMatch: PreparedMatch<TVariables>;
97
+ preparedMatch: PreparedRouteChain<TVariables, TContext>;
46
98
  context: TContext;
47
99
  location: Location;
48
- route: RouterMatchedRoute<TVariables> | null;
100
+ route: RouterMatchedRoute<TVariables, TContext> | null;
49
101
  forceRerender: boolean;
50
102
  rawSearch?: string;
51
- query: Record<string, string | string[]>;
52
- filters?: S extends FilterSchema ? InferFilterResult<S> : Record<string, unknown>;
103
+ query: RawQuery;
104
+ filters?: S extends FilterSchema ? InferFilterResult<S> : UnknownFilters;
53
105
  filterDiagnostics?: FilterDiagnostic[];
54
106
  activeQuerySchema?: S;
55
107
  };
56
108
  export type RouterRedirectStatus = 301 | 302;
57
- export type MatchedRoute<TVariables extends ParamData> = {
109
+ export type MatchedRoute<TVariables extends ParamData, TContext = unknown> = {
58
110
  match: RegExpExecArray;
59
- route: FlatRoute<TVariables>;
111
+ route: FlatRoute<TVariables, TContext>;
60
112
  };
61
113
  export type Redirect = {
62
114
  path?: string;
63
115
  to: string;
64
116
  status?: RouterRedirectStatus;
65
117
  };
66
- export type PrepareResult = Record<string, any>;
67
- export type PrepareParams<TContext, TVariables extends ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = {
68
- match: RouterMatchedRoute<TVariables>;
69
- matchedRoute: FlatRoute<TVariables>;
118
+ export type PrepareResult = unknown;
119
+ export type PrepareParams<TContext, TVariables extends ParamData, TQueryShape extends UnknownQueryShape = UnknownQueryShape> = {
120
+ match: RouterMatchedRoute<TVariables, TContext>;
121
+ matchedRoute: FlatRoute<TVariables, TContext>;
70
122
  context: TContext;
71
123
  resourcePage?: ResourcePage | null;
72
124
  variables: TVariables;
73
125
  query: TQueryShape;
74
126
  };
75
- export type RoutePrepareArgs<TContext, TVariables extends ParamData = ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = PrepareParams<TContext, TVariables, TQueryShape>;
76
- export type RoutePrepare<TContext, TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = (params: PrepareParams<TContext, TVariables, TQueryShape>) => TPrepared;
77
- export type Route<TContext, TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>, S extends FilterSchema | undefined = FilterSchema | undefined> = {
78
- children?: (AnyRoute | Redirect)[];
127
+ export type RoutePrepareArgs<TContext, TVariables extends ParamData = ParamData, TQueryShape extends UnknownQueryShape = UnknownQueryShape> = PrepareParams<TContext, TVariables, TQueryShape>;
128
+ export type RoutePrepare<TContext, TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends UnknownQueryShape = UnknownQueryShape> = (params: PrepareParams<TContext, TVariables, TQueryShape>) => MaybePromise<TPrepared>;
129
+ export type Route<TContext, TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends UnknownQueryShape = UnknownQueryShape, S extends FilterSchema | undefined = FilterSchema | undefined> = {
130
+ children?: (UnknownRoute<TContext> | Redirect)[];
79
131
  resourcePage?: ResourcePage | null;
80
132
  path?: string;
81
133
  prepare?: RoutePrepare<TContext, TPrepared, TVariables, TQueryShape>;
82
134
  render?: RouteRender<TContext, TPrepared, TVariables, TQueryShape>;
83
135
  querySchema?: S;
84
136
  };
85
- export type RouteComponentProps<TVariables extends ParamData, S extends FilterSchema | undefined = FilterSchema | undefined, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = {
137
+ export type RouteComponentProps<TVariables extends ParamData, S extends FilterSchema | undefined = FilterSchema | undefined, TQueryShape extends UnknownQueryShape = UnknownQueryShape> = {
86
138
  children: ReactElement;
87
139
  routerContext: RoutingContextType<TVariables, S, TQueryShape>;
88
- route: Route<any, any, any, any, S>;
140
+ route: Route<unknown, unknown, ParamData, UnknownQueryShape, S>;
89
141
  };
90
142
  export type SubscribeCallback<TVariables extends ParamData, S extends FilterSchema | undefined = FilterSchema | undefined, TContext = unknown> = (nextEntry: RouteEntry<TVariables, S, TContext>) => void;
91
143
  export type PreloadTarget = {
@@ -93,7 +145,7 @@ export type PreloadTarget = {
93
145
  search?: string;
94
146
  source?: string;
95
147
  };
96
- export type RoutingContextType<TVariables extends ParamData, S extends FilterSchema | undefined = FilterSchema | undefined, TQueryShape extends Record<string, unknown> = Record<string, unknown>, TContext = unknown> = {
148
+ export type RoutingContextType<TVariables extends ParamData, S extends FilterSchema | undefined = FilterSchema | undefined, TQueryShape extends UnknownQueryShape = UnknownQueryShape, TContext = unknown> = {
97
149
  history: BrowserHistory;
98
150
  get: () => RouteEntry<TVariables, S, TContext>;
99
151
  preloadCode: (target: PreloadTarget) => void;
@@ -102,14 +154,15 @@ export type RoutingContextType<TVariables extends ParamData, S extends FilterSch
102
154
  navigate: (opts: {
103
155
  pathname?: string;
104
156
  query?: TQueryShape;
105
- filters?: S extends FilterSchema ? InferFilterResult<S> : Record<string, unknown>;
157
+ filters?: S extends FilterSchema ? InferFilterResult<S> : UnknownFilters;
106
158
  replace?: boolean;
107
159
  }) => void;
108
160
  };
109
161
  export type ResourcePageReturn = {
110
- default: ComponentType<any>;
111
- } | ComponentType<any>;
162
+ default: ComponentType<unknown>;
163
+ } | ComponentType<unknown>;
112
164
  export type ResourcePageLoader = () => Promise<ResourcePageReturn>;
165
+ export type PreparedValueResource<TPrepared extends PrepareResult = PrepareResult> = ReadableResource<TPrepared>;
113
166
  export type InferFilters<S extends FilterSchema | undefined> = S extends FilterSchema ? InferFilterResult<S> : Record<string, never>;
114
167
  export type { FilterSchema };
115
168
  export type { InferFilterField as InferField };
@@ -127,21 +180,44 @@ export type TypedFilterActions<S extends FilterSchema> = {
127
180
  replace?: boolean;
128
181
  }) => void;
129
182
  };
130
- export type AnyRoute<TContext = any> = Route<TContext, any, any, any, any>;
131
- export type PreparedOf<R> = R extends Route<any, infer P, any, any, any> ? P : never;
132
- export type VariablesOf<R> = R extends Route<any, any, infer V, any, any> ? V : never;
133
- export type QueryShapeOf<R> = R extends Route<any, any, any, infer Q, any> ? Q : never;
183
+ export type RouteTreeNode = {
184
+ path?: string;
185
+ children?: readonly unknown[];
186
+ querySchema?: FilterSchema | undefined;
187
+ };
188
+ export type UnknownRoute<TContext = unknown> = Route<TContext, unknown>;
189
+ export type AnyRoute<TContext = unknown> = UnknownRoute<TContext>;
190
+ export type ChildRouteOf<R> = R extends {
191
+ children?: readonly (infer C)[];
192
+ } ? Extract<C, RouteTreeNode> : never;
193
+ export type RouteTreeRouteUnion<R> = R extends RouteTreeNode ? R | RouteTreeRouteUnion<ChildRouteOf<R>> : never;
194
+ export type RouteUnion<Routes extends readonly unknown[]> = RouteTreeRouteUnion<Routes[number]>;
195
+ type RouteTypeParts<R> = R extends Route<infer TContext, infer TPrepared, infer TVars, infer TQuery, infer TSchema> ? {
196
+ context: TContext;
197
+ prepared: TPrepared;
198
+ variables: TVars;
199
+ query: TQuery;
200
+ schema: TSchema;
201
+ } : never;
202
+ export type PreparedOf<R> = RouteTypeParts<R>['prepared'];
203
+ export type VariablesOf<R> = RouteTypeParts<R>['variables'];
204
+ export type QueryShapeOf<R> = RouteTypeParts<R>['query'];
134
205
  export type PathOf<R> = R extends {
135
206
  path?: infer P;
136
207
  } ? P extends string ? P : never : never;
137
- export type PathsOf<Routes extends readonly AnyRoute[]> = PathOf<Routes[number]>;
138
- export type PreparedMap<Routes extends readonly AnyRoute[]> = {
139
- [K in PathsOf<Routes>]: PreparedOf<Extract<Routes[number], {
208
+ export type PathsOf<Routes extends readonly unknown[]> = PathOf<RouteUnion<Routes>>;
209
+ export type PreparedMap<Routes extends readonly unknown[]> = {
210
+ [K in PathsOf<Routes>]: PreparedOf<Extract<RouteUnion<Routes>, {
140
211
  path?: K;
141
212
  }>> | undefined;
142
213
  };
143
- export type QueryShapeMap<Routes extends readonly AnyRoute[]> = {
144
- [K in PathsOf<Routes>]: QueryShapeOf<Extract<Routes[number], {
214
+ export type RouteForPath<Routes extends readonly unknown[], P extends PathsOf<Routes>> = Extract<RouteUnion<Routes>, {
215
+ path?: P;
216
+ }>;
217
+ export type PreparedValueForPath<Routes extends readonly unknown[], P extends PathsOf<Routes>> = PreparedOf<RouteForPath<Routes, P>> | undefined;
218
+ export type PreparedSegmentsMap<Routes extends readonly unknown[]> = Record<PathsOf<Routes>, PreparedRouteSegment[]>;
219
+ export type QueryShapeMap<Routes extends readonly unknown[]> = {
220
+ [K in PathsOf<Routes>]: QueryShapeOf<Extract<RouteUnion<Routes>, {
145
221
  path?: K;
146
222
  }>>;
147
223
  };
@@ -149,15 +225,16 @@ export type SchemaOf<R> = R extends {
149
225
  querySchema?: infer S;
150
226
  } ? S extends FilterSchema ? S : undefined : undefined;
151
227
  export type FiltersOf<R> = SchemaOf<R> extends FilterSchema ? InferFilterResult<SchemaOf<R>> : Record<string, never>;
152
- export type FiltersMap<Routes extends readonly AnyRoute[]> = {
153
- [K in PathsOf<Routes>]: FiltersOf<Extract<Routes[number], {
228
+ export type FiltersMap<Routes extends readonly unknown[]> = {
229
+ [K in PathsOf<Routes>]: FiltersOf<Extract<RouteUnion<Routes>, {
154
230
  path?: K;
155
231
  }>>;
156
232
  };
157
- export interface PreparedAccess<Routes extends readonly AnyRoute[]> {
158
- getPrepared: <P extends PathsOf<Routes>>(path: P) => PreparedMap<Routes>[P];
159
- }
160
- export type NavigateInputForPath<Routes extends readonly AnyRoute[], P extends PathsOf<Routes>> = {
233
+ export type PreparedAccess<Routes extends readonly unknown[]> = Record<never, never> & {
234
+ getPrepared: (path: string) => PreparedOf<RouteUnion<Routes>> | undefined;
235
+ getPreparedSegments: (path: string) => PreparedRouteSegmentSnapshot[];
236
+ };
237
+ export type NavigateInputForPath<Routes extends readonly unknown[], P extends PathsOf<Routes>> = {
161
238
  pathname: P;
162
239
  query?: QueryShapeMap<Routes>[P];
163
240
  filters?: FiltersMap<Routes>[P];
@@ -165,11 +242,11 @@ export type NavigateInputForPath<Routes extends readonly AnyRoute[], P extends P
165
242
  };
166
243
  export type NavigateInputUntyped = {
167
244
  pathname?: string;
168
- query?: Record<string, any>;
169
- filters?: Record<string, any>;
245
+ query?: UnknownQueryShape;
246
+ filters?: UnknownFilters;
170
247
  replace?: boolean;
171
248
  };
172
- export interface NavigateOverloads<Routes extends readonly AnyRoute[]> {
249
+ export interface NavigateOverloads<Routes extends readonly unknown[]> {
173
250
  <P extends PathsOf<Routes>>(opts: NavigateInputForPath<Routes, P>): void;
174
251
  (opts: NavigateInputUntyped): void;
175
252
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}