@plumile/router 0.2.3 → 0.2.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/lib/esm/builder.d.ts +1 -0
- package/lib/esm/builder.d.ts.map +1 -1
- package/lib/esm/builder.js +27 -4
- package/lib/esm/errors/HttpRedirect.d.ts +3 -2
- package/lib/esm/errors/HttpRedirect.d.ts.map +1 -1
- package/lib/esm/errors/HttpRedirect.js +1 -1
- package/lib/esm/history/BrowserHistory.d.ts +4 -1
- package/lib/esm/history/BrowserHistory.d.ts.map +1 -1
- package/lib/esm/history/BrowserHistory.js +52 -2
- package/lib/esm/history/types.d.ts +6 -0
- package/lib/esm/history/types.d.ts.map +1 -1
- package/lib/esm/history/types.js +1 -1
- package/lib/esm/instrumentation/Instrumentation.d.ts +8 -10
- package/lib/esm/instrumentation/Instrumentation.d.ts.map +1 -1
- package/lib/esm/instrumentation/Instrumentation.js +1 -1
- package/lib/esm/instrumentation/adapters/devtoolsBridge.d.ts +1 -0
- package/lib/esm/instrumentation/adapters/devtoolsBridge.d.ts.map +1 -1
- package/lib/esm/instrumentation/adapters/devtoolsBridge.js +18 -7
- package/lib/esm/routing/Link.d.ts.map +1 -1
- package/lib/esm/routing/Link.js +24 -10
- package/lib/esm/routing/RouteComponentWrapper.d.ts.map +1 -1
- package/lib/esm/routing/RouteComponentWrapper.js +26 -50
- package/lib/esm/routing/RouterRenderer.d.ts +5 -2
- package/lib/esm/routing/RouterRenderer.d.ts.map +1 -1
- package/lib/esm/routing/RouterRenderer.js +8 -2
- package/lib/esm/routing/createRouter.d.ts +2 -1
- package/lib/esm/routing/createRouter.d.ts.map +1 -1
- package/lib/esm/routing/createRouter.js +192 -16
- package/lib/esm/routing/createStaticRouter.d.ts +16 -2
- package/lib/esm/routing/createStaticRouter.d.ts.map +1 -1
- package/lib/esm/routing/createStaticRouter.js +46 -10
- package/lib/esm/routing/index.d.ts +3 -3
- package/lib/esm/routing/index.d.ts.map +1 -1
- package/lib/esm/routing/index.js +3 -3
- package/lib/esm/routing/routerHydration.d.ts +5 -0
- package/lib/esm/routing/routerHydration.d.ts.map +1 -0
- package/lib/esm/routing/routerHydration.js +57 -0
- package/lib/esm/tools.d.ts +6 -2
- package/lib/esm/tools.d.ts.map +1 -1
- package/lib/esm/tools.js +56 -5
- package/lib/esm/types.d.ts +42 -11
- package/lib/esm/types.d.ts.map +1 -1
- package/lib/esm/types.js +1 -1
- package/lib/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types/builder.d.ts +1 -0
- package/lib/types/builder.d.ts.map +1 -1
- package/lib/types/errors/HttpRedirect.d.ts +3 -2
- package/lib/types/errors/HttpRedirect.d.ts.map +1 -1
- package/lib/types/history/BrowserHistory.d.ts +4 -1
- package/lib/types/history/BrowserHistory.d.ts.map +1 -1
- package/lib/types/history/types.d.ts +6 -0
- package/lib/types/history/types.d.ts.map +1 -1
- package/lib/types/instrumentation/Instrumentation.d.ts +8 -10
- package/lib/types/instrumentation/Instrumentation.d.ts.map +1 -1
- package/lib/types/instrumentation/adapters/devtoolsBridge.d.ts +1 -0
- package/lib/types/instrumentation/adapters/devtoolsBridge.d.ts.map +1 -1
- package/lib/types/routing/Link.d.ts.map +1 -1
- package/lib/types/routing/RouteComponentWrapper.d.ts.map +1 -1
- package/lib/types/routing/RouterRenderer.d.ts +5 -2
- package/lib/types/routing/RouterRenderer.d.ts.map +1 -1
- package/lib/types/routing/createRouter.d.ts +2 -1
- package/lib/types/routing/createRouter.d.ts.map +1 -1
- package/lib/types/routing/createStaticRouter.d.ts +16 -2
- package/lib/types/routing/createStaticRouter.d.ts.map +1 -1
- package/lib/types/routing/index.d.ts +3 -3
- package/lib/types/routing/index.d.ts.map +1 -1
- package/lib/types/routing/routerHydration.d.ts +5 -0
- package/lib/types/routing/routerHydration.d.ts.map +1 -0
- package/lib/types/tools.d.ts +6 -2
- package/lib/types/tools.d.ts.map +1 -1
- package/lib/types/types.d.ts +42 -11
- package/lib/types/types.d.ts.map +1 -1
- package/package.json +3 -3
- package/lib/esm/routing/RouteComponent.d.ts +0 -8
- package/lib/esm/routing/RouteComponent.d.ts.map +0 -1
- package/lib/esm/routing/RouteComponent.js +0 -20
- package/lib/types/routing/RouteComponent.d.ts +0 -8
- package/lib/types/routing/RouteComponent.d.ts.map +0 -1
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import type { ParamData } from 'path-to-regexp';
|
|
2
|
+
import type { HistoryLocationSnapshot } from '../history/types.js';
|
|
2
3
|
import { type RouterQuerySchema } from '../internal/routerSearchState.js';
|
|
3
|
-
import type { RouteNode, RouteEntry, RoutingContextType, UnknownQueryShape } from '../types.js';
|
|
4
|
+
import type { RouteNode, RouteEntry, RouterRedirectStatus, RouterRenderStatus, RoutingContextType, UnknownQueryShape } from '../types.js';
|
|
4
5
|
export type StaticRouterLocation = {
|
|
5
6
|
hash?: string;
|
|
6
7
|
pathname: string;
|
|
@@ -10,11 +11,24 @@ export type CreateStaticRouterOptions<TContext> = {
|
|
|
10
11
|
context?: TContext;
|
|
11
12
|
location: StaticRouterLocation;
|
|
12
13
|
};
|
|
13
|
-
export type
|
|
14
|
+
export type StaticRouterRenderResult<TContext, R extends RouteNode[]> = {
|
|
15
|
+
kind: 'render';
|
|
16
|
+
status: RouterRenderStatus;
|
|
14
17
|
context: RoutingContextType<ParamData, RouterQuerySchema, UnknownQueryShape, TContext>;
|
|
15
18
|
entry: RouteEntry<ParamData, RouterQuerySchema, TContext>;
|
|
16
19
|
routes: R;
|
|
17
20
|
};
|
|
21
|
+
export type StaticRouterRedirectResult = {
|
|
22
|
+
kind: 'redirect';
|
|
23
|
+
status: RouterRedirectStatus;
|
|
24
|
+
location: string;
|
|
25
|
+
};
|
|
26
|
+
export type StaticRouterNotFoundResult = {
|
|
27
|
+
kind: 'not-found';
|
|
28
|
+
status: 404;
|
|
29
|
+
location: HistoryLocationSnapshot;
|
|
30
|
+
};
|
|
31
|
+
export type CreateStaticRouterReturn<TContext, R extends RouteNode[]> = StaticRouterRenderResult<TContext, R> | StaticRouterRedirectResult | StaticRouterNotFoundResult;
|
|
18
32
|
export declare function createStaticRouter<TContext = unknown, R extends RouteNode[] = RouteNode[]>(routes: [...R] | RouteNode[], options: CreateStaticRouterOptions<TContext>): Promise<CreateStaticRouterReturn<TContext, R>>;
|
|
19
33
|
export default createStaticRouter;
|
|
20
34
|
//# sourceMappingURL=createStaticRouter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"createStaticRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/createStaticRouter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"createStaticRouter.d.ts","sourceRoot":"","sources":["../../../src/routing/createStaticRouter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAGhD,OAAO,KAAK,EAAW,uBAAuB,EAAE,MAAM,qBAAqB,CAAC;AAK5E,OAAO,EAEL,KAAK,iBAAiB,EACvB,MAAM,kCAAkC,CAAC;AAC1C,OAAO,KAAK,EACV,SAAS,EACT,UAAU,EACV,oBAAoB,EACpB,kBAAkB,EAClB,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAErB,MAAM,MAAM,oBAAoB,GAAG;IACjC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,yBAAyB,CAAC,QAAQ,IAAI;IAChD,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,QAAQ,EAAE,oBAAoB,CAAC;CAChC,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAAC,QAAQ,EAAE,CAAC,SAAS,SAAS,EAAE,IAAI;IACtE,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,kBAAkB,CAAC;IAC3B,OAAO,EAAE,kBAAkB,CACzB,SAAS,EACT,iBAAiB,EACjB,iBAAiB,EACjB,QAAQ,CACT,CAAC;IACF,KAAK,EAAE,UAAU,CAAC,SAAS,EAAE,iBAAiB,EAAE,QAAQ,CAAC,CAAC;IAC1D,MAAM,EAAE,CAAC,CAAC;CACX,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,UAAU,CAAC;IACjB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,MAAM,MAAM,0BAA0B,GAAG;IACvC,IAAI,EAAE,WAAW,CAAC;IAClB,MAAM,EAAE,GAAG,CAAC;IACZ,QAAQ,EAAE,uBAAuB,CAAC;CACnC,CAAC;AAEF,MAAM,MAAM,wBAAwB,CAAC,QAAQ,EAAE,CAAC,SAAS,SAAS,EAAE,IAChE,wBAAwB,CAAC,QAAQ,EAAE,CAAC,CAAC,GACrC,0BAA0B,GAC1B,0BAA0B,CAAC;AAyG/B,wBAAsB,kBAAkB,CACtC,QAAQ,GAAG,OAAO,EAClB,CAAC,SAAS,SAAS,EAAE,GAAG,SAAS,EAAE,EAEnC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,SAAS,EAAE,EAC5B,OAAO,EAAE,yBAAyB,CAAC,QAAQ,CAAC,GAC3C,OAAO,CAAC,wBAAwB,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAmFhD;eAEc,kBAAkB"}
|
|
@@ -2,6 +2,7 @@ import { buildRoutes } from '../builder.js';
|
|
|
2
2
|
import { prepareMatch } from '../tools.js';
|
|
3
3
|
import { buildDestinationSearch, normalizeSearch } from './destination.js';
|
|
4
4
|
import { calculateLoadState } from '../internal/routerLoadState.js';
|
|
5
|
+
import { HttpRedirect } from '../errors/index.js';
|
|
5
6
|
import { parseSearchState, } from '../internal/routerSearchState.js';
|
|
6
7
|
function normalizeStaticLocation(location) {
|
|
7
8
|
let { pathname } = location;
|
|
@@ -54,6 +55,9 @@ function createStaticRoutingContext(entry, flatRoutes) {
|
|
|
54
55
|
get location() {
|
|
55
56
|
return entry.location;
|
|
56
57
|
},
|
|
58
|
+
get navigation() {
|
|
59
|
+
return entry.navigation;
|
|
60
|
+
},
|
|
57
61
|
init() { },
|
|
58
62
|
push() {
|
|
59
63
|
throw new Error('Static router cannot push history');
|
|
@@ -79,18 +83,46 @@ export async function createStaticRouter(routes, options) {
|
|
|
79
83
|
const location = normalizeStaticLocation(options.location);
|
|
80
84
|
const flatRoutes = buildRoutes(routes);
|
|
81
85
|
const route = findStaticMatchedRoute(flatRoutes, location);
|
|
82
|
-
|
|
86
|
+
if (route == null) {
|
|
87
|
+
return {
|
|
88
|
+
kind: 'not-found',
|
|
89
|
+
status: 404,
|
|
90
|
+
location,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
if (route.route.redirectTo != null) {
|
|
94
|
+
return {
|
|
95
|
+
kind: 'redirect',
|
|
96
|
+
status: route.route.redirectStatus ?? 302,
|
|
97
|
+
location: route.route.redirectTo,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
const activeQuerySchema = route.route.routes.at(-1)?.querySchema;
|
|
83
101
|
const searchState = parseSearchState(location.search, activeQuerySchema);
|
|
84
102
|
const routeContext = options.context;
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
await
|
|
92
|
-
|
|
103
|
+
let preparedMatch;
|
|
104
|
+
try {
|
|
105
|
+
preparedMatch = prepareMatch(route, searchState.query, undefined, routeContext, undefined, {
|
|
106
|
+
rawQuery: searchState.query,
|
|
107
|
+
filters: searchState.filters,
|
|
108
|
+
});
|
|
109
|
+
await Promise.all(preparedMatch.segments.map(async (segment) => {
|
|
110
|
+
await segment.preparedResource?.load();
|
|
111
|
+
await segment.resourcePage?.load();
|
|
112
|
+
}));
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
if (error instanceof HttpRedirect) {
|
|
116
|
+
return {
|
|
117
|
+
kind: 'redirect',
|
|
118
|
+
status: error.statusCode,
|
|
119
|
+
location: error.redirectTo,
|
|
120
|
+
};
|
|
121
|
+
}
|
|
122
|
+
throw error;
|
|
123
|
+
}
|
|
93
124
|
const { activeLoadState, loadState } = calculateLoadState(preparedMatch, 0);
|
|
125
|
+
const status = route.route.routes.at(-1)?.status ?? 200;
|
|
94
126
|
const entry = {
|
|
95
127
|
activeQuerySchema,
|
|
96
128
|
activeLoadState,
|
|
@@ -103,14 +135,18 @@ export async function createStaticRouter(routes, options) {
|
|
|
103
135
|
query: searchState.query,
|
|
104
136
|
rawSearch: location.search,
|
|
105
137
|
route,
|
|
138
|
+
status,
|
|
139
|
+
navigation: { key: 'static', type: 'initial' },
|
|
106
140
|
loadState,
|
|
107
141
|
};
|
|
108
142
|
const routerContext = createStaticRoutingContext(entry, flatRoutes);
|
|
109
143
|
return {
|
|
144
|
+
kind: 'render',
|
|
145
|
+
status,
|
|
110
146
|
context: routerContext,
|
|
111
147
|
entry,
|
|
112
148
|
routes: routes,
|
|
113
149
|
};
|
|
114
150
|
}
|
|
115
151
|
export default createStaticRouter;
|
|
116
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlU3RhdGljUm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JvdXRpbmcvY3JlYXRlU3RhdGljUm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUNMLGdCQUFnQixHQUVqQixNQUFNLGtDQUFrQyxDQUFDO0FBaUMxQyxTQUFTLHVCQUF1QixDQUM5QixRQUE4QjtJQUU5QixJQUFJLEVBQUUsUUFBUSxFQUFFLEdBQUcsUUFBUSxDQUFDO0lBQzVCLElBQUksQ0FBQyxRQUFRLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7UUFDOUIsUUFBUSxHQUFHLElBQUksUUFBUSxFQUFFLENBQUM7SUFDNUIsQ0FBQztJQUNELE9BQU87UUFDTCxJQUFJLEVBQUUsUUFBUSxDQUFDLElBQUksSUFBSSxFQUFFO1FBQ3pCLFFBQVE7UUFDUixNQUFNLEVBQUUsZUFBZSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUM7S0FDekMsQ0FBQztBQUNKLENBQUM7QUFLRCxTQUFTLHNCQUFzQixDQUM3QixNQUFzQyxFQUN0QyxRQUFpQztJQUVqQyxLQUFLLE1BQU0sS0FBSyxJQUFJLE1BQU0sRUFBRSxDQUFDO1FBQzNCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQ3JELElBQUksS0FBSyxLQUFLLEtBQUssRUFBRSxDQUFDO1lBQ3BCLE1BQU0sRUFBRSxJQUFJLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxD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QUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtRQUMzQyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztRQUN2QyxNQUFNLE9BQU8sQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7SUFDckMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNGLE1BQU0sRUFBRSxlQUFlLEVBQUUsU0FBUyxFQUFFLEdBQUcsa0JBQWtCLENBQUMsYUFBYSxFQUFFLENBQUMsQ0FBQyxDQUFDO0lBRTVFLE1BQU0sS0FBSyxHQUF1RDtRQUNoRSxpQkFBaUI7UUFDakIsZUFBZTtRQUNmLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxpQkFBaUI7UUFDaEQsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPO1FBQzVCLGFBQWEsRUFBRSxLQUFLO1FBQ3BCLFFBQVE7UUFDUixhQUFhO1FBQ2IsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLO1FBQ3hCLFNBQVMsRUFBRSxRQUFRLENBQUMsTUFBTTtRQUMxQixLQUFLO1FBQ0wsU0FBUztLQUNWLENBQUM7SUFFRixNQUFNLGFBQWEsR0FBRywwQkFBMEIsQ0FBQyxLQUFLLEVBQUUsVUFBVSxDQUFDLENBQUM7SUFFcEUsT0FBTztRQUNMLE9BQU8sRUFBRSxhQUFhO1FBQ3RCLEtBQUs7UUFDTCxNQUFNLEVBQUUsTUFBVztLQUNwQixDQUFDO0FBQ0osQ0FBQztBQUVELGVBQWUsa0JBQWtCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBhcmFtRGF0YSB9IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcblxuaW1wb3J0IHsgYnVpbGRSb3V0ZXMgfSBmcm9tICcuLi9idWlsZGVyLmpzJztcbmltcG9ydCB0eXBlIHsgSGlzdG9yeSwgSGlzdG9yeUxvY2F0aW9uU25hcHNob3QgfSBmcm9tICcuLi9oaXN0b3J5L3R5cGVzLmpzJztcbmltcG9ydCB7IHByZXBhcmVNYXRjaCB9IGZyb20gJy4uL3Rvb2xzLmpzJztcbmltcG9ydCB7IGJ1aWxkRGVzdGluYXRpb25TZWFyY2gsIG5vcm1hbGl6ZVNlYXJjaCB9IGZyb20gJy4vZGVzdGluYXRpb24uanMnO1xuaW1wb3J0IHsgY2FsY3VsYXRlTG9hZFN0YXRlIH0gZnJvbSAnLi4vaW50ZXJuYWwvcm91dGVyTG9hZFN0YXRlLmpzJztcbmltcG9ydCB7XG4gIHBhcnNlU2VhcmNoU3RhdGUsXG4gIHR5cGUgUm91dGVyUXVlcnlTY2hlbWEsXG59IGZyb20gJy4uL2ludGVybmFsL3JvdXRlclNlYXJjaFN0YXRlLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgUm91dGVOb2RlLFxuICBSb3V0ZUVudHJ5LFxuICBSb3V0aW5nQ29udGV4dFR5cGUsXG4gIFVua25vd25RdWVyeVNoYXBlLFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCB0eXBlIFN0YXRpY1JvdXRlckxvY2F0aW9uID0ge1xuICBoYXNoPzogc3RyaW5nO1xuICBwYXRobmFtZTogc3RyaW5nO1xuICBzZWFyY2g/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVTdGF0aWNSb3V0ZXJPcHRpb25zPFRDb250ZXh0PiA9IHtcbiAgY29udGV4dD86IFRDb250ZXh0O1xuICBsb2NhdGlvbjogU3RhdGljUm91dGVyTG9jYXRpb247XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVTdGF0aWNSb3V0ZXJSZXR1cm48VENvbnRleHQsIFIgZXh0ZW5kcyBSb3V0ZU5vZGVbXT4gPSB7XG4gIGNvbnRleHQ6IFJvdXRpbmdDb250ZXh0VHlwZTxcbiAgICBQYXJhbURhdGEsXG4gICAgUm91dGVyUXVlcnlTY2hlbWEsXG4gICAgVW5rbm93blF1ZXJ5U2hhcGUsXG4gICAgVENvbnRleHRcbiAgPjtcbiAgZW50cnk6IFJvdXRlRW50cnk8UGFyYW1EYXRhLCBSb3V0ZXJRdWVyeVNjaGVtYSwgVENvbnRleHQ+O1xuICByb3V0ZXM6IFI7XG59O1xuXG4vKipcbiAqXG4gKi9cbmZ1bmN0aW9uIG5vcm1hbGl6ZVN0YXRpY0xvY2F0aW9uKFxuICBsb2NhdGlvbjogU3RhdGljUm91dGVyTG9jYXRpb24sXG4pOiBIaXN0b3J5TG9jYXRpb25TbmFwc2hvdCB7XG4gIGxldCB7IHBhdGhuYW1lIH0gPSBsb2NhdGlvbjtcbiAgaWYgKCFwYXRobmFtZS5zdGFydHNXaXRoKCcvJykpIHtcbiAgICBwYXRobmFtZSA9IGAvJHtwYXRobmFtZX1gO1xuICB9XG4gIHJldHVybiB7XG4gICAgaGFzaDogbG9jYXRpb24uaGFzaCA/PyAnJyxcbiAgICBwYXRobmFtZSxcbiAgICBzZWFyY2g6IG5vcm1hbGl6ZVNlYXJjaChsb2NhdGlvbi5zZWFyY2gpLFxuICB9O1xufVxuXG4vKipcbiAqXG4gKi9cbmZ1bmN0aW9uIGZpbmRTdGF0aWNNYXRjaGVkUm91dGUoXG4gIHJvdXRlczogUmV0dXJuVHlwZTx0eXBlb2YgYnVpbGRSb3V0ZXM+LFxuICBsb2NhdGlvbjogSGlzdG9yeUxvY2F0aW9uU25hcHNob3QsXG4pIHtcbiAgZm9yIChjb25zdCByb3V0ZSBvZiByb3V0ZXMpIHtcbiAgICBjb25zdCBtYXRjaCA9IHJvdXRlLm1hdGNoRnVuY3Rpb24obG9jYXRpb24ucGF0aG5hbWUpO1xuICAgIGlmIChtYXRjaCAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHsgcGF0aCwgcGFyYW1zIH0gPSBtYXRjaDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1hdGNoLFxuICAgICAgICByb3V0ZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgfTtcbiAgICB9XG4gIH1cbiAgcmV0dXJuIG51bGw7XG59XG5cbi8qKlxuICpcbiAqL1xuZnVuY3Rpb24gY3JlYXRlU3RhdGljUm91dGluZ0NvbnRleHQ8VENvbnRleHQ+KFxuICBlbnRyeTogUm91dGVFbnRyeTxQYXJhbURhdGEsIFJvdXRlclF1ZXJ5U2NoZW1hLCBUQ29udGV4dD4sXG4gIGZsYXRSb3V0ZXM6IFJldHVyblR5cGU8dHlwZW9mIGJ1aWxkUm91dGVzPixcbik6IFJvdXRpbmdDb250ZXh0VHlwZTxcbiAgUGFyYW1EYXRhLFxuICBSb3V0ZXJRdWVyeVNjaGVtYSxcbiAgVW5rbm93blF1ZXJ5U2hhcGUsXG4gIFRDb250ZXh0XG4+IHtcbiAgcmV0dXJuIHtcbiAgICBidWlsZFNlYXJjaCh7IHBhdGhuYW1lLCBxdWVyeSwgZmlsdGVycyB9KSB7XG4gICAgICBjb25zdCB0YXJnZXRQYXRobmFtZSA9IHBhdGhuYW1lID8/IGVudHJ5LmxvY2F0aW9uLnBhdGhuYW1lO1xuICAgICAgY29uc3QgZGVzdGluYXRpb24gPSBmaW5kU3RhdGljTWF0Y2hlZFJvdXRlKGZsYXRSb3V0ZXMsIHtcbiAgICAgICAgLi4uZW50cnkubG9jYXRpb24sXG4gICAgICAgIHBhdGhuYW1lOiB0YXJnZXRQYXRobmFtZSxcbiAgICAgIH0pO1xuICAgICAgbGV0IHF1ZXJ5U2NoZW1hID0gZW50cnkuYWN0aXZlUXVlcnlTY2hlbWE7XG4gICAgICBpZiAoZGVzdGluYXRpb24gIT0gbnVsbCkge1xuICAgICAgICBxdWVyeVNjaGVtYSA9IGRlc3RpbmF0aW9uLnJvdXRlLnJvdXRlcy5hdCgtMSk/LnF1ZXJ5U2NoZW1hO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJ1aWxkRGVzdGluYXRpb25TZWFyY2goe1xuICAgICAgICBmaWx0ZXJzLFxuICAgICAgICBxdWVyeSxcbiAgICAgICAgcXVlcnlTY2hlbWEsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGdldDogKCkgPT4ge1xuICAgICAgcmV0dXJuIGVudHJ5O1xuICAgIH0sXG4gICAgaGlzdG9yeToge1xuICAgICAgZ2V0IGxvY2F0aW9uKCkge1xuICAgICAgICByZXR1cm4gZW50cnkubG9jYXRpb247XG4gICAgICB9LFxuICAgICAgaW5pdCgpIHt9LFxuICAgICAgcHVzaCgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdGF0aWMgcm91dGVyIGNhbm5vdCBwdXNoIGhpc3RvcnknKTtcbiAgICAgIH0sXG4gICAgICBzZXQoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignU3RhdGljIHJvdXRlciBjYW5ub3QgcmVwbGFjZSBoaXN0b3J5Jyk7XG4gICAgICB9LFxuICAgICAgc3Vic2NyaWJlKCkge1xuICAgICAgICByZXR1cm4gKCkgPT4ge307XG4gICAgICB9LFxuICAgIH0gc2F0aXNmaWVzIEhpc3RvcnksXG4gICAgbmF2aWdhdGUoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0YXRpYyByb3V0ZXIgY2Fubm90IG5hdmlnYXRlJyk7XG4gICAgfSxcbiAgICBwcmVsb2FkKCkge30sXG4gICAgcHJlbG9hZENvZGUoKSB7fSxcbiAgICBzdWJzY3JpYmUoKSB7XG4gICAgICByZXR1cm4gKCkgPT4ge307XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU3RhdGljUm91dGVyPFxuICBUQ29udGV4dCA9IHVua25vd24sXG4gIFIgZXh0ZW5kcyBSb3V0ZU5vZGVbXSA9IFJvdXRlTm9kZVtdLFxuPihcbiAgcm91dGVzOiBbLi4uUl0gfCBSb3V0ZU5vZGVbXSxcbiAgb3B0aW9uczogQ3JlYXRlU3RhdGljUm91dGVyT3B0aW9uczxUQ29udGV4dD4sXG4pOiBQcm9taXNlPENyZWF0ZVN0YXRpY1JvdXRlclJldHVybjxUQ29udGV4dCwgUj4+IHtcbiAgY29uc3QgbG9jYXRpb24gPSBub3JtYWxpemVTdGF0aWNMb2NhdGlvbihvcHRpb25zLmxvY2F0aW9uKTtcbiAgY29uc3QgZmxhdFJvdXRlcyA9IGJ1aWxkUm91dGVzKHJvdXRlcyk7XG4gIGNvbnN0IHJvdXRlID0gZmluZFN0YXRpY01hdGNoZWRSb3V0ZShmbGF0Um91dGVzLCBsb2NhdGlvbik7XG4gIGNvbnN0IGFjdGl2ZVF1ZXJ5U2NoZW1hID0gcm91dGU/LnJvdXRlLnJvdXRlcy5hdCgtMSk/LnF1ZXJ5U2NoZW1hO1xuICBjb25zdCBzZWFyY2hTdGF0ZSA9IHBhcnNlU2VhcmNoU3RhdGUobG9jYXRpb24uc2VhcmNoLCBhY3RpdmVRdWVyeVNjaGVtYSk7XG4gIGNvbnN0IHJvdXRlQ29udGV4dCA9IG9wdGlvbnMuY29udGV4dCBhcyBUQ29udGV4dDtcbiAgY29uc3QgcHJlcGFyZWRNYXRjaCA9IHByZXBhcmVNYXRjaChcbiAgICByb3V0ZSxcbiAgICBzZWFyY2hTdGF0ZS5xdWVyeSxcbiAgICB1bmRlZmluZWQsXG4gICAgcm91dGVDb250ZXh0LFxuICAgIHVuZGVmaW5lZCxcbiAgICB7XG4gICAgICByYXdRdWVyeTogc2VhcmNoU3RhdGUucXVlcnksXG4gICAgICBmaWx0ZXJzOiBzZWFyY2hTdGF0ZS5maWx0ZXJzLFxuICAgIH0sXG4gICk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgcHJlcGFyZWRNYXRjaC5zZWdtZW50cy5tYXAoYXN5bmMgKHNlZ21lbnQpID0+IHtcbiAgICAgIGF3YWl0IHNlZ21lbnQucHJlcGFyZWRSZXNvdXJjZT8ubG9hZCgpO1xuICAgICAgYXdhaXQgc2VnbWVudC5yZXNvdXJjZVBhZ2U/LmxvYWQoKTtcbiAgICB9KSxcbiAgKTtcbiAgY29uc3QgeyBhY3RpdmVMb2FkU3RhdGUsIGxvYWRTdGF0ZSB9ID0gY2FsY3VsYXRlTG9hZFN0YXRlKHByZXBhcmVkTWF0Y2gsIDApO1xuXG4gIGNvbnN0IGVudHJ5OiBSb3V0ZUVudHJ5PFBhcmFtRGF0YSwgUm91dGVyUXVlcnlTY2hlbWEsIFRDb250ZXh0PiA9IHtcbiAgICBhY3RpdmVRdWVyeVNjaGVtYSxcbiAgICBhY3RpdmVMb2FkU3RhdGUsXG4gICAgY29udGV4dDogcm91dGVDb250ZXh0LFxuICAgIGZpbHRlckRpYWdub3N0aWNzOiBzZWFyY2hTdGF0ZS5maWx0ZXJEaWFnbm9zdGljcyxcbiAgICBmaWx0ZXJzOiBzZWFyY2hTdGF0ZS5maWx0ZXJzLFxuICAgIGZvcmNlUmVyZW5kZXI6IGZhbHNlLFxuICAgIGxvY2F0aW9uLFxuICAgIHByZXBhcmVkTWF0Y2gsXG4gICAgcXVlcnk6IHNlYXJjaFN0YXRlLnF1ZXJ5LFxuICAgIHJhd1NlYXJjaDogbG9jYXRpb24uc2VhcmNoLFxuICAgIHJvdXRlLFxuICAgIGxvYWRTdGF0ZSxcbiAgfTtcblxuICBjb25zdCByb3V0ZXJDb250ZXh0ID0gY3JlYXRlU3RhdGljUm91dGluZ0NvbnRleHQoZW50cnksIGZsYXRSb3V0ZXMpO1xuXG4gIHJldHVybiB7XG4gICAgY29udGV4dDogcm91dGVyQ29udGV4dCxcbiAgICBlbnRyeSxcbiAgICByb3V0ZXM6IHJvdXRlcyBhcyBSLFxuICB9O1xufVxuXG5leHBvcnQgZGVmYXVsdCBjcmVhdGVTdGF0aWNSb3V0ZXI7XG4iXX0=
|
|
152
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlU3RhdGljUm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JvdXRpbmcvY3JlYXRlU3RhdGljUm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxXQUFXLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFNUMsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGFBQWEsQ0FBQztBQUMzQyxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsZUFBZSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDM0UsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFDcEUsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBQ2xELE9BQU8sRUFDTCxnQkFBZ0IsR0FFakIsTUFBTSxrQ0FBa0MsQ0FBQztBQXNEMUMsU0FBUyx1QkFBdUIsQ0FDOUIsUUFBOEI7SUFFOUIsSUFBSSxFQUFFLFFBQVEsRUFBRSxHQUFHLFFBQVEsQ0FBQztJQUM1QixJQUFJLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO1FBQzlCLFFBQVEsR0FBRyxJQUFJLFFBQVEsRUFBRSxDQUFDO0lBQzVCLENBQUM7SUFDRCxPQUFPO1FBQ0wsSUFBSSxFQUFFLFFBQVEsQ0FBQyxJQUFJLElBQUksRUFBRTtRQUN6QixRQUFRO1FBQ1IsTUFBTSxFQUFFLGVBQWUsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0tBQ3pDLENBQUM7QUFDSixDQUFDO0FBS0QsU0FBUyxzQkFBc0IsQ0FDN0IsTUFBc0MsRUFDdEMsUUFBaUM7SUFFakMsS0FBSyxNQUFNLEtBQUssSUFBSSxNQUFNLEVBQUUsQ0FBQztRQUMzQixNQUFNLEtBQUssR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNyRCxJQUFJLEtBQUssS0FBSyxLQUFLLEVBQUUsQ0FBQztZQUNwQixNQUFNLEVBQUUsSUFBSSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztZQUMvQixPQUFPO2dCQUNMLEtBQUs7Z0JBQ0wsS0FBSztnQkFDTCxJQUFJO2dCQUNKLE1BQU07YUFDUCxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFDRCxPQUFPLElBQUksQ0FBQztBQUNkLENBQUM7QUFLRCxTQUFTLDBCQUEwQixDQUNqQyxLQUF5RCxFQUN6RCxVQUEwQztJQU8xQyxPQUFPO1FBQ0wsV0FBVyxDQUFDLEVBQUUsUUFBUSxFQUFFLEtBQUssRUFBRSxPQUFPLEVBQUU7WUFDdEMsTUFBTSxjQUFjLEdBQUcsUUFBUSxJQUFJLEtBQUssQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDO1lBQzNELE1BQU0sV0FBVyxHQUFHLHNCQUFzQixDQUFDLFVBQVUsRUFBRTtnQkFDckQsR0FBRyxLQUFLLENBQUMsUUFBUTtnQkFDakIsUUFBUSxFQUFFLGNBQWM7YUFDekIsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxXQUFXLEdBQUcsS0FBSyxDQUFDLGlCQUFpQixDQUFDO1lBQzFDLElBQUksV0FBVyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN4QixXQUFXLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsV0FBVyxDQUFDO1lBQzdELENBQUM7WUFDRCxPQUFPLHNCQUFzQixDQUFDO2dCQUM1QixPQUFPO2dCQUNQLEtBQUs7Z0JBQ0wsV0FBVzthQUNaLENBQUMsQ0FBQztRQUNMLENBQUM7UUFDRCxHQUFHLEVBQUUsR0FBRyxFQUFFO1lBQ1IsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsT0FBTyxFQUFFO1lBQ1AsSUFBSSxRQUFRO2dCQUNWLE9BQU8sS0FBSyxDQUFDLFFBQVEsQ0FBQztZQUN4QixDQUFDO1lBQ0QsSUFBSSxVQUFVO2dCQUNaLE9BQU8sS0FBSyxDQUFDLFVBQVUsQ0FBQztZQUMxQixDQUFDO1lBQ0QsSUFBSSxLQUFJLENBQUM7WUFDVCxJQUFJO2dCQUNGLE1BQU0sSUFBSSxLQUFLLENBQUMsbUNBQW1DLENBQUMsQ0FBQztZQUN2RCxDQUFDO1lBQ0QsR0FBRztnQkFDRCxNQUFNLElBQUksS0FBSyxDQUFDLHNDQUFzQyxDQUFDLENBQUM7WUFDMUQsQ0FBQztZQUNELFNBQVM7Z0JBQ1AsT0FBTyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUM7WUFDbEIsQ0FBQztTQUNnQjtRQUNuQixRQUFRO1lBQ04sTUFBTSxJQUFJLEtBQUssQ0FBQywrQkFBK0IsQ0FBQyxDQUFDO1FBQ25ELENBQUM7UUFDRCxPQUFPLEtBQUksQ0FBQztRQUNaLFdBQVcsS0FBSSxDQUFDO1FBQ2hCLFNBQVM7WUFDUCxPQUFPLEdBQUcsRUFBRSxHQUFFLENBQUMsQ0FBQztRQUNsQixDQUFDO0tBQ0YsQ0FBQztBQUNKLENBQUM7QUFLRCxNQUFNLENBQUMsS0FBSyxVQUFVLGtCQUFrQixDQUl0QyxNQUE0QixFQUM1QixPQUE0QztJQUU1QyxNQUFNLFFBQVEsR0FBRyx1QkFBdUIsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLENBQUM7SUFDM0QsTUFBTSxVQUFVLEdBQUcsV0FBVyxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZDLE1BQU0sS0FBSyxHQUFHLHNCQUFzQixDQUFDLFVBQVUsRUFBRSxRQUFRLENBQUMsQ0FBQztJQUMzRCxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNsQixPQUFPO1lBQ0wsSUFBSSxFQUFFLFdBQVc7WUFDakIsTUFBTSxFQUFFLEdBQUc7WUFDWCxRQUFRO1NBQ1QsQ0FBQztJQUNKLENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxLQUFLLENBQUMsVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ25DLE9BQU87WUFDTCxJQUFJLEVBQUUsVUFBVTtZQUNoQixNQUFNLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxjQUFjLElBQUksR0FBRztZQUN6QyxRQUFRLEVBQUUsS0FBSyxDQUFDLEtBQUssQ0FBQyxVQUFVO1NBQ2pDLENBQUM7SUFDSixDQUFDO0lBQ0QsTUFBTSxpQkFBaUIsR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxXQUFXLENBQUM7SUFDakUsTUFBTSxXQUFXLEdBQUcsZ0JBQWdCLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxpQkFBaUIsQ0FBQyxDQUFDO0lBQ3pFLE1BQU0sWUFBWSxHQUFHLE9BQU8sQ0FBQyxPQUFtQixDQUFDO0lBQ2pELElBQUksYUFJYyxDQUFDO0lBQ25CLElBQUksQ0FBQztRQUNILGFBQWEsR0FBRyxZQUFZLENBQzFCLEtBQUssRUFDTCxXQUFXLENBQUMsS0FBSyxFQUNqQixTQUFTLEVBQ1QsWUFBWSxFQUNaLFNBQVMsRUFDVDtZQUNFLFFBQVEsRUFBRSxXQUFXLENBQUMsS0FBSztZQUMzQixPQUFPLEVBQUUsV0FBVyxDQUFDLE9BQU87U0FDN0IsQ0FDRixDQUFDO1FBQ0YsTUFBTSxPQUFPLENBQUMsR0FBRyxDQUNmLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLEtBQUssRUFBRSxPQUFPLEVBQUUsRUFBRTtZQUMzQyxNQUFNLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxJQUFJLEVBQUUsQ0FBQztZQUN2QyxNQUFNLE9BQU8sQ0FBQyxZQUFZLEVBQUUsSUFBSSxFQUFFLENBQUM7UUFDckMsQ0FBQyxDQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7SUFBQyxPQUFPLEtBQUssRUFBRSxDQUFDO1FBQ2YsSUFBSSxLQUFLLFlBQVksWUFBWSxFQUFFLENBQUM7WUFDbEMsT0FBTztnQkFDTCxJQUFJLEVBQUUsVUFBVTtnQkFDaEIsTUFBTSxFQUFFLEtBQUssQ0FBQyxVQUFVO2dCQUN4QixRQUFRLEVBQUUsS0FBSyxDQUFDLFVBQVU7YUFDM0IsQ0FBQztRQUNKLENBQUM7UUFDRCxNQUFNLEtBQUssQ0FBQztJQUNkLENBQUM7SUFDRCxNQUFNLEVBQUUsZUFBZSxFQUFFLFNBQVMsRUFBRSxHQUFHLGtCQUFrQixDQUFDLGFBQWEsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUM1RSxNQUFNLE1BQU0sR0FBRyxLQUFLLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxNQUFNLElBQUksR0FBRyxDQUFDO0lBRXhELE1BQU0sS0FBSyxHQUF1RDtRQUNoRSxpQkFBaUI7UUFDakIsZUFBZTtRQUNmLE9BQU8sRUFBRSxZQUFZO1FBQ3JCLGlCQUFpQixFQUFFLFdBQVcsQ0FBQyxpQkFBaUI7UUFDaEQsT0FBTyxFQUFFLFdBQVcsQ0FBQyxPQUFPO1FBQzVCLGFBQWEsRUFBRSxLQUFLO1FBQ3BCLFFBQVE7UUFDUixhQUFhO1FBQ2IsS0FBSyxFQUFFLFdBQVcsQ0FBQyxLQUFLO1FBQ3hCLFNBQVMsRUFBRSxRQUFRLENBQUMsTUFBTTtRQUMxQixLQUFLO1FBQ0wsTUFBTTtRQUNOLFVBQVUsRUFBRSxFQUFFLEdBQUcsRUFBRSxRQUFRLEVBQUUsSUFBSSxFQUFFLFNBQVMsRUFBRTtRQUM5QyxTQUFTO0tBQ1YsQ0FBQztJQUVGLE1BQU0sYUFBYSxHQUFHLDBCQUEwQixDQUFDLEtBQUssRUFBRSxVQUFVLENBQUMsQ0FBQztJQUVwRSxPQUFPO1FBQ0wsSUFBSSxFQUFFLFFBQVE7UUFDZCxNQUFNO1FBQ04sT0FBTyxFQUFFLGFBQWE7UUFDdEIsS0FBSztRQUNMLE1BQU0sRUFBRSxNQUFXO0tBQ3BCLENBQUM7QUFDSixDQUFDO0FBRUQsZUFBZSxrQkFBa0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGFyYW1EYXRhIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuXG5pbXBvcnQgeyBidWlsZFJvdXRlcyB9IGZyb20gJy4uL2J1aWxkZXIuanMnO1xuaW1wb3J0IHR5cGUgeyBIaXN0b3J5LCBIaXN0b3J5TG9jYXRpb25TbmFwc2hvdCB9IGZyb20gJy4uL2hpc3RvcnkvdHlwZXMuanMnO1xuaW1wb3J0IHsgcHJlcGFyZU1hdGNoIH0gZnJvbSAnLi4vdG9vbHMuanMnO1xuaW1wb3J0IHsgYnVpbGREZXN0aW5hdGlvblNlYXJjaCwgbm9ybWFsaXplU2VhcmNoIH0gZnJvbSAnLi9kZXN0aW5hdGlvbi5qcyc7XG5pbXBvcnQgeyBjYWxjdWxhdGVMb2FkU3RhdGUgfSBmcm9tICcuLi9pbnRlcm5hbC9yb3V0ZXJMb2FkU3RhdGUuanMnO1xuaW1wb3J0IHsgSHR0cFJlZGlyZWN0IH0gZnJvbSAnLi4vZXJyb3JzL2luZGV4LmpzJztcbmltcG9ydCB7XG4gIHBhcnNlU2VhcmNoU3RhdGUsXG4gIHR5cGUgUm91dGVyUXVlcnlTY2hlbWEsXG59IGZyb20gJy4uL2ludGVybmFsL3JvdXRlclNlYXJjaFN0YXRlLmpzJztcbmltcG9ydCB0eXBlIHtcbiAgUm91dGVOb2RlLFxuICBSb3V0ZUVudHJ5LFxuICBSb3V0ZXJSZWRpcmVjdFN0YXR1cyxcbiAgUm91dGVyUmVuZGVyU3RhdHVzLFxuICBSb3V0aW5nQ29udGV4dFR5cGUsXG4gIFVua25vd25RdWVyeVNoYXBlLFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5cbmV4cG9ydCB0eXBlIFN0YXRpY1JvdXRlckxvY2F0aW9uID0ge1xuICBoYXNoPzogc3RyaW5nO1xuICBwYXRobmFtZTogc3RyaW5nO1xuICBzZWFyY2g/OiBzdHJpbmc7XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVTdGF0aWNSb3V0ZXJPcHRpb25zPFRDb250ZXh0PiA9IHtcbiAgY29udGV4dD86IFRDb250ZXh0O1xuICBsb2NhdGlvbjogU3RhdGljUm91dGVyTG9jYXRpb247XG59O1xuXG5leHBvcnQgdHlwZSBTdGF0aWNSb3V0ZXJSZW5kZXJSZXN1bHQ8VENvbnRleHQsIFIgZXh0ZW5kcyBSb3V0ZU5vZGVbXT4gPSB7XG4gIGtpbmQ6ICdyZW5kZXInO1xuICBzdGF0dXM6IFJvdXRlclJlbmRlclN0YXR1cztcbiAgY29udGV4dDogUm91dGluZ0NvbnRleHRUeXBlPFxuICAgIFBhcmFtRGF0YSxcbiAgICBSb3V0ZXJRdWVyeVNjaGVtYSxcbiAgICBVbmtub3duUXVlcnlTaGFwZSxcbiAgICBUQ29udGV4dFxuICA+O1xuICBlbnRyeTogUm91dGVFbnRyeTxQYXJhbURhdGEsIFJvdXRlclF1ZXJ5U2NoZW1hLCBUQ29udGV4dD47XG4gIHJvdXRlczogUjtcbn07XG5cbmV4cG9ydCB0eXBlIFN0YXRpY1JvdXRlclJlZGlyZWN0UmVzdWx0ID0ge1xuICBraW5kOiAncmVkaXJlY3QnO1xuICBzdGF0dXM6IFJvdXRlclJlZGlyZWN0U3RhdHVzO1xuICBsb2NhdGlvbjogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgU3RhdGljUm91dGVyTm90Rm91bmRSZXN1bHQgPSB7XG4gIGtpbmQ6ICdub3QtZm91bmQnO1xuICBzdGF0dXM6IDQwNDtcbiAgbG9jYXRpb246IEhpc3RvcnlMb2NhdGlvblNuYXBzaG90O1xufTtcblxuZXhwb3J0IHR5cGUgQ3JlYXRlU3RhdGljUm91dGVyUmV0dXJuPFRDb250ZXh0LCBSIGV4dGVuZHMgUm91dGVOb2RlW10+ID1cbiAgfCBTdGF0aWNSb3V0ZXJSZW5kZXJSZXN1bHQ8VENvbnRleHQsIFI+XG4gIHwgU3RhdGljUm91dGVyUmVkaXJlY3RSZXN1bHRcbiAgfCBTdGF0aWNSb3V0ZXJOb3RGb3VuZFJlc3VsdDtcblxuLyoqXG4gKlxuICovXG5mdW5jdGlvbiBub3JtYWxpemVTdGF0aWNMb2NhdGlvbihcbiAgbG9jYXRpb246IFN0YXRpY1JvdXRlckxvY2F0aW9uLFxuKTogSGlzdG9yeUxvY2F0aW9uU25hcHNob3Qge1xuICBsZXQgeyBwYXRobmFtZSB9ID0gbG9jYXRpb247XG4gIGlmICghcGF0aG5hbWUuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgcGF0aG5hbWUgPSBgLyR7cGF0aG5hbWV9YDtcbiAgfVxuICByZXR1cm4ge1xuICAgIGhhc2g6IGxvY2F0aW9uLmhhc2ggPz8gJycsXG4gICAgcGF0aG5hbWUsXG4gICAgc2VhcmNoOiBub3JtYWxpemVTZWFyY2gobG9jYXRpb24uc2VhcmNoKSxcbiAgfTtcbn1cblxuLyoqXG4gKlxuICovXG5mdW5jdGlvbiBmaW5kU3RhdGljTWF0Y2hlZFJvdXRlKFxuICByb3V0ZXM6IFJldHVyblR5cGU8dHlwZW9mIGJ1aWxkUm91dGVzPixcbiAgbG9jYXRpb246IEhpc3RvcnlMb2NhdGlvblNuYXBzaG90LFxuKSB7XG4gIGZvciAoY29uc3Qgcm91dGUgb2Ygcm91dGVzKSB7XG4gICAgY29uc3QgbWF0Y2ggPSByb3V0ZS5tYXRjaEZ1bmN0aW9uKGxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICBpZiAobWF0Y2ggIT09IGZhbHNlKSB7XG4gICAgICBjb25zdCB7IHBhdGgsIHBhcmFtcyB9ID0gbWF0Y2g7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXRjaCxcbiAgICAgICAgcm91dGUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqXG4gKi9cbmZ1bmN0aW9uIGNyZWF0ZVN0YXRpY1JvdXRpbmdDb250ZXh0PFRDb250ZXh0PihcbiAgZW50cnk6IFJvdXRlRW50cnk8UGFyYW1EYXRhLCBSb3V0ZXJRdWVyeVNjaGVtYSwgVENvbnRleHQ+LFxuICBmbGF0Um91dGVzOiBSZXR1cm5UeXBlPHR5cGVvZiBidWlsZFJvdXRlcz4sXG4pOiBSb3V0aW5nQ29udGV4dFR5cGU8XG4gIFBhcmFtRGF0YSxcbiAgUm91dGVyUXVlcnlTY2hlbWEsXG4gIFVua25vd25RdWVyeVNoYXBlLFxuICBUQ29udGV4dFxuPiB7XG4gIHJldHVybiB7XG4gICAgYnVpbGRTZWFyY2goeyBwYXRobmFtZSwgcXVlcnksIGZpbHRlcnMgfSkge1xuICAgICAgY29uc3QgdGFyZ2V0UGF0aG5hbWUgPSBwYXRobmFtZSA/PyBlbnRyeS5sb2NhdGlvbi5wYXRobmFtZTtcbiAgICAgIGNvbnN0IGRlc3RpbmF0aW9uID0gZmluZFN0YXRpY01hdGNoZWRSb3V0ZShmbGF0Um91dGVzLCB7XG4gICAgICAgIC4uLmVudHJ5LmxvY2F0aW9uLFxuICAgICAgICBwYXRobmFtZTogdGFyZ2V0UGF0aG5hbWUsXG4gICAgICB9KTtcbiAgICAgIGxldCBxdWVyeVNjaGVtYSA9IGVudHJ5LmFjdGl2ZVF1ZXJ5U2NoZW1hO1xuICAgICAgaWYgKGRlc3RpbmF0aW9uICE9IG51bGwpIHtcbiAgICAgICAgcXVlcnlTY2hlbWEgPSBkZXN0aW5hdGlvbi5yb3V0ZS5yb3V0ZXMuYXQoLTEpPy5xdWVyeVNjaGVtYTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBidWlsZERlc3RpbmF0aW9uU2VhcmNoKHtcbiAgICAgICAgZmlsdGVycyxcbiAgICAgICAgcXVlcnksXG4gICAgICAgIHF1ZXJ5U2NoZW1hLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBnZXQ6ICgpID0+IHtcbiAgICAgIHJldHVybiBlbnRyeTtcbiAgICB9LFxuICAgIGhpc3Rvcnk6IHtcbiAgICAgIGdldCBsb2NhdGlvbigpIHtcbiAgICAgICAgcmV0dXJuIGVudHJ5LmxvY2F0aW9uO1xuICAgICAgfSxcbiAgICAgIGdldCBuYXZpZ2F0aW9uKCkge1xuICAgICAgICByZXR1cm4gZW50cnkubmF2aWdhdGlvbjtcbiAgICAgIH0sXG4gICAgICBpbml0KCkge30sXG4gICAgICBwdXNoKCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0YXRpYyByb3V0ZXIgY2Fubm90IHB1c2ggaGlzdG9yeScpO1xuICAgICAgfSxcbiAgICAgIHNldCgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdGF0aWMgcm91dGVyIGNhbm5vdCByZXBsYWNlIGhpc3RvcnknKTtcbiAgICAgIH0sXG4gICAgICBzdWJzY3JpYmUoKSB7XG4gICAgICAgIHJldHVybiAoKSA9PiB7fTtcbiAgICAgIH0sXG4gICAgfSBzYXRpc2ZpZXMgSGlzdG9yeSxcbiAgICBuYXZpZ2F0ZSgpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignU3RhdGljIHJvdXRlciBjYW5ub3QgbmF2aWdhdGUnKTtcbiAgICB9LFxuICAgIHByZWxvYWQoKSB7fSxcbiAgICBwcmVsb2FkQ29kZSgpIHt9LFxuICAgIHN1YnNjcmliZSgpIHtcbiAgICAgIHJldHVybiAoKSA9PiB7fTtcbiAgICB9LFxuICB9O1xufVxuXG4vKipcbiAqXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBjcmVhdGVTdGF0aWNSb3V0ZXI8XG4gIFRDb250ZXh0ID0gdW5rbm93bixcbiAgUiBleHRlbmRzIFJvdXRlTm9kZVtdID0gUm91dGVOb2RlW10sXG4+KFxuICByb3V0ZXM6IFsuLi5SXSB8IFJvdXRlTm9kZVtdLFxuICBvcHRpb25zOiBDcmVhdGVTdGF0aWNSb3V0ZXJPcHRpb25zPFRDb250ZXh0Pixcbik6IFByb21pc2U8Q3JlYXRlU3RhdGljUm91dGVyUmV0dXJuPFRDb250ZXh0LCBSPj4ge1xuICBjb25zdCBsb2NhdGlvbiA9IG5vcm1hbGl6ZVN0YXRpY0xvY2F0aW9uKG9wdGlvbnMubG9jYXRpb24pO1xuICBjb25zdCBmbGF0Um91dGVzID0gYnVpbGRSb3V0ZXMocm91dGVzKTtcbiAgY29uc3Qgcm91dGUgPSBmaW5kU3RhdGljTWF0Y2hlZFJvdXRlKGZsYXRSb3V0ZXMsIGxvY2F0aW9uKTtcbiAgaWYgKHJvdXRlID09IG51bGwpIHtcbiAgICByZXR1cm4ge1xuICAgICAga2luZDogJ25vdC1mb3VuZCcsXG4gICAgICBzdGF0dXM6IDQwNCxcbiAgICAgIGxvY2F0aW9uLFxuICAgIH07XG4gIH1cbiAgaWYgKHJvdXRlLnJvdXRlLnJlZGlyZWN0VG8gIT0gbnVsbCkge1xuICAgIHJldHVybiB7XG4gICAgICBraW5kOiAncmVkaXJlY3QnLFxuICAgICAgc3RhdHVzOiByb3V0ZS5yb3V0ZS5yZWRpcmVjdFN0YXR1cyA/PyAzMDIsXG4gICAgICBsb2NhdGlvbjogcm91dGUucm91dGUucmVkaXJlY3RUbyxcbiAgICB9O1xuICB9XG4gIGNvbnN0IGFjdGl2ZVF1ZXJ5U2NoZW1hID0gcm91dGUucm91dGUucm91dGVzLmF0KC0xKT8ucXVlcnlTY2hlbWE7XG4gIGNvbnN0IHNlYXJjaFN0YXRlID0gcGFyc2VTZWFyY2hTdGF0ZShsb2NhdGlvbi5zZWFyY2gsIGFjdGl2ZVF1ZXJ5U2NoZW1hKTtcbiAgY29uc3Qgcm91dGVDb250ZXh0ID0gb3B0aW9ucy5jb250ZXh0IGFzIFRDb250ZXh0O1xuICBsZXQgcHJlcGFyZWRNYXRjaDogUm91dGVFbnRyeTxcbiAgICBQYXJhbURhdGEsXG4gICAgUm91dGVyUXVlcnlTY2hlbWEsXG4gICAgVENvbnRleHRcbiAgPlsncHJlcGFyZWRNYXRjaCddO1xuICB0cnkge1xuICAgIHByZXBhcmVkTWF0Y2ggPSBwcmVwYXJlTWF0Y2goXG4gICAgICByb3V0ZSxcbiAgICAgIHNlYXJjaFN0YXRlLnF1ZXJ5LFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAgcm91dGVDb250ZXh0LFxuICAgICAgdW5kZWZpbmVkLFxuICAgICAge1xuICAgICAgICByYXdRdWVyeTogc2VhcmNoU3RhdGUucXVlcnksXG4gICAgICAgIGZpbHRlcnM6IHNlYXJjaFN0YXRlLmZpbHRlcnMsXG4gICAgICB9LFxuICAgICk7XG4gICAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgICBwcmVwYXJlZE1hdGNoLnNlZ21lbnRzLm1hcChhc3luYyAoc2VnbWVudCkgPT4ge1xuICAgICAgICBhd2FpdCBzZWdtZW50LnByZXBhcmVkUmVzb3VyY2U/LmxvYWQoKTtcbiAgICAgICAgYXdhaXQgc2VnbWVudC5yZXNvdXJjZVBhZ2U/LmxvYWQoKTtcbiAgICAgIH0pLFxuICAgICk7XG4gIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgaWYgKGVycm9yIGluc3RhbmNlb2YgSHR0cFJlZGlyZWN0KSB7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBraW5kOiAncmVkaXJlY3QnLFxuICAgICAgICBzdGF0dXM6IGVycm9yLnN0YXR1c0NvZGUsXG4gICAgICAgIGxvY2F0aW9uOiBlcnJvci5yZWRpcmVjdFRvLFxuICAgICAgfTtcbiAgICB9XG4gICAgdGhyb3cgZXJyb3I7XG4gIH1cbiAgY29uc3QgeyBhY3RpdmVMb2FkU3RhdGUsIGxvYWRTdGF0ZSB9ID0gY2FsY3VsYXRlTG9hZFN0YXRlKHByZXBhcmVkTWF0Y2gsIDApO1xuICBjb25zdCBzdGF0dXMgPSByb3V0ZS5yb3V0ZS5yb3V0ZXMuYXQoLTEpPy5zdGF0dXMgPz8gMjAwO1xuXG4gIGNvbnN0IGVudHJ5OiBSb3V0ZUVudHJ5PFBhcmFtRGF0YSwgUm91dGVyUXVlcnlTY2hlbWEsIFRDb250ZXh0PiA9IHtcbiAgICBhY3RpdmVRdWVyeVNjaGVtYSxcbiAgICBhY3RpdmVMb2FkU3RhdGUsXG4gICAgY29udGV4dDogcm91dGVDb250ZXh0LFxuICAgIGZpbHRlckRpYWdub3N0aWNzOiBzZWFyY2hTdGF0ZS5maWx0ZXJEaWFnbm9zdGljcyxcbiAgICBmaWx0ZXJzOiBzZWFyY2hTdGF0ZS5maWx0ZXJzLFxuICAgIGZvcmNlUmVyZW5kZXI6IGZhbHNlLFxuICAgIGxvY2F0aW9uLFxuICAgIHByZXBhcmVkTWF0Y2gsXG4gICAgcXVlcnk6IHNlYXJjaFN0YXRlLnF1ZXJ5LFxuICAgIHJhd1NlYXJjaDogbG9jYXRpb24uc2VhcmNoLFxuICAgIHJvdXRlLFxuICAgIHN0YXR1cyxcbiAgICBuYXZpZ2F0aW9uOiB7IGtleTogJ3N0YXRpYycsIHR5cGU6ICdpbml0aWFsJyB9LFxuICAgIGxvYWRTdGF0ZSxcbiAgfTtcblxuICBjb25zdCByb3V0ZXJDb250ZXh0ID0gY3JlYXRlU3RhdGljUm91dGluZ0NvbnRleHQoZW50cnksIGZsYXRSb3V0ZXMpO1xuXG4gIHJldHVybiB7XG4gICAga2luZDogJ3JlbmRlcicsXG4gICAgc3RhdHVzLFxuICAgIGNvbnRleHQ6IHJvdXRlckNvbnRleHQsXG4gICAgZW50cnksXG4gICAgcm91dGVzOiByb3V0ZXMgYXMgUixcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlU3RhdGljUm91dGVyO1xuIl19
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export { default as createRouter } from './createRouter.js';
|
|
2
|
-
export { createStaticRouter, default as createStaticRouterDefault, type CreateStaticRouterOptions, type CreateStaticRouterReturn, type StaticRouterLocation, } from './createStaticRouter.js';
|
|
2
|
+
export { createStaticRouter, default as createStaticRouterDefault, type CreateStaticRouterOptions, type CreateStaticRouterReturn, type StaticRouterNotFoundResult, type StaticRouterRedirectResult, type StaticRouterRenderResult, type StaticRouterLocation, } from './createStaticRouter.js';
|
|
3
3
|
export { default as Link, type LinkProps, type LinkHoverPreload, type LinkMouseDownPreload, } from './Link.js';
|
|
4
4
|
export { resolveRouterDestination, type ResolvedRouterDestination, } from './destination.js';
|
|
5
|
-
export {
|
|
5
|
+
export { createRouterHydrationSnapshot } from './routerHydration.js';
|
|
6
6
|
export { default as RouteComponentWrapper } from './RouteComponentWrapper.js';
|
|
7
|
-
export { default as RouterRenderer } from './RouterRenderer.js';
|
|
7
|
+
export { default as RouterRenderer, type RouterRendererProps, } from './RouterRenderer.js';
|
|
8
8
|
export { default as RoutingContext } from './RoutingContext.js';
|
|
9
9
|
export { default as useQuery } from './useQuery.js';
|
|
10
10
|
export { default as useLocation } from './useLocation.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routing/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EACL,kBAAkB,EAClB,OAAO,IAAI,yBAAyB,EACpC,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,GAC1B,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EACL,OAAO,IAAI,IAAI,EACf,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,wBAAwB,EACxB,KAAK,yBAAyB,GAC/B,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/routing/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EACL,kBAAkB,EAClB,OAAO,IAAI,yBAAyB,EACpC,KAAK,yBAAyB,EAC9B,KAAK,wBAAwB,EAC7B,KAAK,0BAA0B,EAC/B,KAAK,0BAA0B,EAC/B,KAAK,wBAAwB,EAC7B,KAAK,oBAAoB,GAC1B,MAAM,yBAAyB,CAAC;AAIjC,OAAO,EACL,OAAO,IAAI,IAAI,EACf,KAAK,SAAS,EACd,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,GAC1B,MAAM,WAAW,CAAC;AACnB,OAAO,EACL,wBAAwB,EACxB,KAAK,yBAAyB,GAC/B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,6BAA6B,EAAE,MAAM,sBAAsB,CAAC;AAGrE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAG9E,OAAO,EACL,OAAO,IAAI,cAAc,EACzB,KAAK,mBAAmB,GACzB,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAEhE,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,eAAe,CAAC;AAEpD,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAG1D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE1D,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,OAAO,IAAI,UAAU,EAAE,MAAM,iBAAiB,CAAC;AAExD,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,2BAA2B,CAAC;AAE5E,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAClE,OAAO,EACL,iBAAiB,EACjB,KAAK,mBAAmB,EACxB,KAAK,wBAAwB,GAC9B,MAAM,wBAAwB,CAAC;AAGhC,OAAO,EAAE,OAAO,IAAI,mBAAmB,EAAE,MAAM,iCAAiC,CAAC"}
|
package/lib/esm/routing/index.js
CHANGED
|
@@ -2,9 +2,9 @@ export { default as createRouter } from './createRouter.js';
|
|
|
2
2
|
export { createStaticRouter, default as createStaticRouterDefault, } from './createStaticRouter.js';
|
|
3
3
|
export { default as Link, } from './Link.js';
|
|
4
4
|
export { resolveRouterDestination, } from './destination.js';
|
|
5
|
-
export {
|
|
5
|
+
export { createRouterHydrationSnapshot } from './routerHydration.js';
|
|
6
6
|
export { default as RouteComponentWrapper } from './RouteComponentWrapper.js';
|
|
7
|
-
export { default as RouterRenderer } from './RouterRenderer.js';
|
|
7
|
+
export { default as RouterRenderer, } from './RouterRenderer.js';
|
|
8
8
|
export { default as RoutingContext } from './RoutingContext.js';
|
|
9
9
|
export { default as useQuery } from './useQuery.js';
|
|
10
10
|
export { default as useLocation } from './useLocation.js';
|
|
@@ -16,4 +16,4 @@ export { default as useFilterDiagnostics } from './useFilterDiagnostics.js';
|
|
|
16
16
|
export { default as useSearchParams } from './useSearchParams.js';
|
|
17
17
|
export { useRouteTelemetry, } from './useRouteTelemetry.js';
|
|
18
18
|
export { default as buildCombinedSearch } from '../tools/buildCombinedSearch.js';
|
|
19
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
19
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxJQUFJLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsT0FBTyxJQUFJLHlCQUF5QixHQU9yQyxNQUFNLHlCQUF5QixDQUFDO0FBSWpDLE9BQU8sRUFDTCxPQUFPLElBQUksSUFBSSxHQUloQixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQ0wsd0JBQXdCLEdBRXpCLE1BQU0sa0JBQWtCLENBQUM7QUFDMUIsT0FBTyxFQUFFLDZCQUE2QixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFHckUsT0FBTyxFQUFFLE9BQU8sSUFBSSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzlFLE9BQU8sRUFDTCxPQUFPLElBQUksY0FBYyxHQUUxQixNQUFNLHFCQUFxQixDQUFDO0FBRzdCLE9BQU8sRUFBRSxPQUFPLElBQUksY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFFaEUsT0FBTyxFQUFFLE9BQU8sSUFBSSxRQUFRLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFcEQsT0FBTyxFQUFFLE9BQU8sSUFBSSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRzFELE9BQU8sRUFBRSxPQUFPLElBQUksV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFMUQsT0FBTyxFQUFFLE9BQU8sSUFBSSxhQUFhLEVBQUUsTUFBTSxvQkFBb0IsQ0FBQztBQUU5RCxPQUFPLEVBQUUsT0FBTyxJQUFJLFVBQVUsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBRXhELE9BQU8sRUFBRSxPQUFPLElBQUksb0JBQW9CLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUU1RSxPQUFPLEVBQUUsT0FBTyxJQUFJLGVBQWUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xFLE9BQU8sRUFDTCxpQkFBaUIsR0FHbEIsTUFBTSx3QkFBd0IsQ0FBQztBQUdoQyxPQUFPLEVBQUUsT0FBTyxJQUFJLG1CQUFtQixFQUFFLE1BQU0saUNBQWlDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBNYWluIHJvdXRlciBmYWN0b3J5IGZ1bmN0aW9uXG5leHBvcnQgeyBkZWZhdWx0IGFzIGNyZWF0ZVJvdXRlciB9IGZyb20gJy4vY3JlYXRlUm91dGVyLmpzJztcbmV4cG9ydCB7XG4gIGNyZWF0ZVN0YXRpY1JvdXRlcixcbiAgZGVmYXVsdCBhcyBjcmVhdGVTdGF0aWNSb3V0ZXJEZWZhdWx0LFxuICB0eXBlIENyZWF0ZVN0YXRpY1JvdXRlck9wdGlvbnMsXG4gIHR5cGUgQ3JlYXRlU3RhdGljUm91dGVyUmV0dXJuLFxuICB0eXBlIFN0YXRpY1JvdXRlck5vdEZvdW5kUmVzdWx0LFxuICB0eXBlIFN0YXRpY1JvdXRlclJlZGlyZWN0UmVzdWx0LFxuICB0eXBlIFN0YXRpY1JvdXRlclJlbmRlclJlc3VsdCxcbiAgdHlwZSBTdGF0aWNSb3V0ZXJMb2NhdGlvbixcbn0gZnJvbSAnLi9jcmVhdGVTdGF0aWNSb3V0ZXIuanMnO1xuXG4vLyBOYXZpZ2F0aW9uIGNvbXBvbmVudCB3aXRoIHByZWxvYWRpbmcgc3VwcG9ydFxuLy8gU3RhbmRhcmQgLmpzIHNwZWNpZmllciAoYnVpbGQgcGlwZWxpbmUgcmV3cml0ZXMgZnJvbSBUUyBzb3VyY2UpXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIExpbmssXG4gIHR5cGUgTGlua1Byb3BzLFxuICB0eXBlIExpbmtIb3ZlclByZWxvYWQsXG4gIHR5cGUgTGlua01vdXNlRG93blByZWxvYWQsXG59IGZyb20gJy4vTGluay5qcyc7XG5leHBvcnQge1xuICByZXNvbHZlUm91dGVyRGVzdGluYXRpb24sXG4gIHR5cGUgUmVzb2x2ZWRSb3V0ZXJEZXN0aW5hdGlvbixcbn0gZnJvbSAnLi9kZXN0aW5hdGlvbi5qcyc7XG5leHBvcnQgeyBjcmVhdGVSb3V0ZXJIeWRyYXRpb25TbmFwc2hvdCB9IGZyb20gJy4vcm91dGVySHlkcmF0aW9uLmpzJztcblxuLy8gSW50ZXJuYWwgd3JhcHBlciBjb21wb25lbnQgZm9yIHJvdXRlIHJlbmRlcmluZ1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSb3V0ZUNvbXBvbmVudFdyYXBwZXIgfSBmcm9tICcuL1JvdXRlQ29tcG9uZW50V3JhcHBlci5qcyc7XG5cbi8vIE1haW4gcmVuZGVyZXIgY29tcG9uZW50IHRoYXQgZGlzcGxheXMgY3VycmVudCByb3V0ZVxuZXhwb3J0IHtcbiAgZGVmYXVsdCBhcyBSb3V0ZXJSZW5kZXJlcixcbiAgdHlwZSBSb3V0ZXJSZW5kZXJlclByb3BzLFxufSBmcm9tICcuL1JvdXRlclJlbmRlcmVyLmpzJztcblxuLy8gUmVhY3QgY29udGV4dCBmb3Igc2hhcmluZyByb3V0ZXIgc3RhdGVcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUm91dGluZ0NvbnRleHQgfSBmcm9tICcuL1JvdXRpbmdDb250ZXh0LmpzJztcbi8vIEhvb2sgdG8gYWNjZXNzIHJhdyBxdWVyeSBwYXJhbWV0ZXJzXG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZVF1ZXJ5IH0gZnJvbSAnLi91c2VRdWVyeS5qcyc7XG4vLyBIb29rIHRvIGFjY2VzcyB0aGUgY3VycmVudCBsb2NhdGlvblxuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VMb2NhdGlvbiB9IGZyb20gJy4vdXNlTG9jYXRpb24uanMnO1xuLy8gSG9vayB0byBhY2Nlc3MgdGhlIGN1cnJlbnQgcGF0aG5hbWVcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlUGF0aG5hbWUgfSBmcm9tICcuL3VzZVBhdGhuYW1lLmpzJztcbi8vIEhvb2sgdG8gYWNjZXNzIHR5cGVkIHF1ZXJ5IHBhcmFtZXRlcnNcbi8vIEhvb2sgdG8gbmF2aWdhdGUgcHJvZ3JhbW1hdGljYWxseVxuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VOYXZpZ2F0ZSB9IGZyb20gJy4vdXNlTmF2aWdhdGUuanMnO1xuLy8gSG9vayB0byBiaW5kIGEgc3BlY2lmaWMgcXVlcnkgcGFyYW0gdG8gY29tcG9uZW50IHN0YXRlXG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZVF1ZXJ5U3RhdGUgfSBmcm9tICcuL3VzZVF1ZXJ5U3RhdGUuanMnO1xuLy8gSG9vayB0byBhY2Nlc3MgYW5kIG11dGF0ZSBmaWx0ZXJzXG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZUZpbHRlcnMgfSBmcm9tICcuL3VzZUZpbHRlcnMuanMnO1xuLy8gSG9vayB0byBhY2Nlc3MgZmlsdGVyIGRpYWdub3N0aWNzXG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZUZpbHRlckRpYWdub3N0aWNzIH0gZnJvbSAnLi91c2VGaWx0ZXJEaWFnbm9zdGljcy5qcyc7XG4vLyBIb29rIHRvIG1hbmFnZSBVUkxTZWFyY2hQYXJhbXNcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlU2VhcmNoUGFyYW1zIH0gZnJvbSAnLi91c2VTZWFyY2hQYXJhbXMuanMnO1xuZXhwb3J0IHtcbiAgdXNlUm91dGVUZWxlbWV0cnksXG4gIHR5cGUgUm91dGVUZWxlbWV0cnlFdmVudCxcbiAgdHlwZSBVc2VSb3V0ZVRlbGVtZXRyeU9wdGlvbnMsXG59IGZyb20gJy4vdXNlUm91dGVUZWxlbWV0cnkuanMnO1xuXG4vLyBQdWJsaWMgaGVscGVyIGZvciB1bmlmaWVkIGZpbHRlci1iYXNlZCBzZWFyY2ggYnVpbGRpbmcgKFBoYXNlIDIpXG5leHBvcnQgeyBkZWZhdWx0IGFzIGJ1aWxkQ29tYmluZWRTZWFyY2ggfSBmcm9tICcuLi90b29scy9idWlsZENvbWJpbmVkU2VhcmNoLmpzJztcbiJdfQ==
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ParamData } from 'path-to-regexp';
|
|
2
|
+
import type { RouteEntry, RouterHydrationSnapshot, RouterJsonValue } from '../types.js';
|
|
3
|
+
export declare function assertRouterJsonValue(value: unknown, ancestors?: Set<object>): asserts value is RouterJsonValue;
|
|
4
|
+
export declare function createRouterHydrationSnapshot(entry: RouteEntry<ParamData>): RouterHydrationSnapshot;
|
|
5
|
+
//# sourceMappingURL=routerHydration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routerHydration.d.ts","sourceRoot":"","sources":["../../../src/routing/routerHydration.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EACV,UAAU,EACV,uBAAuB,EACvB,eAAe,EAChB,MAAM,aAAa,CAAC;AAGrB,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EACd,SAAS,cAAoB,GAC5B,OAAO,CAAC,KAAK,IAAI,eAAe,CAsClC;AAGD,wBAAgB,6BAA6B,CAC3C,KAAK,EAAE,UAAU,CAAC,SAAS,CAAC,GAC3B,uBAAuB,CAwBzB"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
export function assertRouterJsonValue(value, ancestors = new Set()) {
|
|
2
|
+
if (value === null ||
|
|
3
|
+
typeof value === 'string' ||
|
|
4
|
+
typeof value === 'boolean') {
|
|
5
|
+
return;
|
|
6
|
+
}
|
|
7
|
+
if (typeof value === 'number') {
|
|
8
|
+
if (!Number.isFinite(value)) {
|
|
9
|
+
throw new Error('Router hydration values must contain finite JSON numbers');
|
|
10
|
+
}
|
|
11
|
+
return;
|
|
12
|
+
}
|
|
13
|
+
if (typeof value !== 'object') {
|
|
14
|
+
throw new Error('Router hydration values must be finite JSON');
|
|
15
|
+
}
|
|
16
|
+
if (ancestors.has(value)) {
|
|
17
|
+
throw new Error('Router hydration values must not contain cycles');
|
|
18
|
+
}
|
|
19
|
+
ancestors.add(value);
|
|
20
|
+
if (Array.isArray(value)) {
|
|
21
|
+
value.forEach((item) => {
|
|
22
|
+
assertRouterJsonValue(item, ancestors);
|
|
23
|
+
});
|
|
24
|
+
ancestors.delete(value);
|
|
25
|
+
return;
|
|
26
|
+
}
|
|
27
|
+
const prototype = Object.getPrototypeOf(value);
|
|
28
|
+
if (prototype !== Object.prototype && prototype !== null) {
|
|
29
|
+
throw new Error('Router hydration values must use plain JSON objects');
|
|
30
|
+
}
|
|
31
|
+
Object.values(value).forEach((item) => {
|
|
32
|
+
assertRouterJsonValue(item, ancestors);
|
|
33
|
+
});
|
|
34
|
+
ancestors.delete(value);
|
|
35
|
+
}
|
|
36
|
+
export function createRouterHydrationSnapshot(entry) {
|
|
37
|
+
const segments = [];
|
|
38
|
+
entry.preparedMatch.segments.forEach((segment) => {
|
|
39
|
+
if (segment.preparedHydration == null ||
|
|
40
|
+
segment.preparedResource?.getStatus() !== 'resolved') {
|
|
41
|
+
return;
|
|
42
|
+
}
|
|
43
|
+
const prepared = segment.preparedHydration.serialize(segment.preparedResource.get());
|
|
44
|
+
assertRouterJsonValue(prepared);
|
|
45
|
+
segments.push({ key: segment.segmentKey, prepared });
|
|
46
|
+
});
|
|
47
|
+
return {
|
|
48
|
+
version: 1,
|
|
49
|
+
location: {
|
|
50
|
+
pathname: entry.location.pathname,
|
|
51
|
+
search: entry.location.search,
|
|
52
|
+
hash: entry.location.hash,
|
|
53
|
+
},
|
|
54
|
+
segments,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVySHlkcmF0aW9uLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JvdXRpbmcvcm91dGVySHlkcmF0aW9uLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQVNBLE1BQU0sVUFBVSxxQkFBcUIsQ0FDbkMsS0FBYyxFQUNkLFNBQVMsR0FBRyxJQUFJLEdBQUcsRUFBVTtJQUU3QixJQUNFLEtBQUssS0FBSyxJQUFJO1FBQ2QsT0FBTyxLQUFLLEtBQUssUUFBUTtRQUN6QixPQUFPLEtBQUssS0FBSyxTQUFTLEVBQzFCLENBQUM7UUFDRCxPQUFPO0lBQ1QsQ0FBQztJQUNELElBQUksT0FBTyxLQUFLLEtBQUssUUFBUSxFQUFFLENBQUM7UUFDOUIsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUM1QixNQUFNLElBQUksS0FBSyxDQUNiLDBEQUEwRCxDQUMzRCxDQUFDO1FBQ0osQ0FBQztRQUNELE9BQU87SUFDVCxDQUFDO0lBQ0QsSUFBSSxPQUFPLEtBQUssS0FBSyxRQUFRLEVBQUUsQ0FBQztRQUM5QixNQUFNLElBQUksS0FBSyxDQUFDLDZDQUE2QyxDQUFDLENBQUM7SUFDakUsQ0FBQztJQUNELElBQUksU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQ3pCLE1BQU0sSUFBSSxLQUFLLENBQUMsaURBQWlELENBQUMsQ0FBQztJQUNyRSxDQUFDO0lBQ0QsU0FBUyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUN6QixLQUFLLENBQUMsT0FBTyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUU7WUFDckIscUJBQXFCLENBQUMsSUFBSSxFQUFFLFNBQVMsQ0FBQyxDQUFDO1FBQ3pDLENBQUMsQ0FBQyxDQUFDO1FBQ0gsU0FBUyxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN4QixPQUFPO0lBQ1QsQ0FBQztJQUNELE1BQU0sU0FBUyxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsS0FBSyxDQUFrQixDQUFDO0lBQ2hFLElBQUksU0FBUyxLQUFLLE1BQU0sQ0FBQyxTQUFTLElBQUksU0FBUyxLQUFLLElBQUksRUFBRSxDQUFDO1FBQ3pELE1BQU0sSUFBSSxLQUFLLENBQUMscURBQXFELENBQUMsQ0FBQztJQUN6RSxDQUFDO0lBQ0QsTUFBTSxDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRTtRQUNwQyxxQkFBcUIsQ0FBQyxJQUFJLEVBQUUsU0FBUyxDQUFDLENBQUM7SUFDekMsQ0FBQyxDQUFDLENBQUM7SUFDSCxTQUFTLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO0FBQzFCLENBQUM7QUFHRCxNQUFNLFVBQVUsNkJBQTZCLENBQzNDLEtBQTRCO0lBRTVCLE1BQU0sUUFBUSxHQUF3QyxFQUFFLENBQUM7SUFDekQsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7UUFDL0MsSUFDRSxPQUFPLENBQUMsaUJBQWlCLElBQUksSUFBSTtZQUNqQyxPQUFPLENBQUMsZ0JBQWdCLEVBQUUsU0FBUyxFQUFFLEtBQUssVUFBVSxFQUNwRCxDQUFDO1lBQ0QsT0FBTztRQUNULENBQUM7UUFDRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsaUJBQWlCLENBQUMsU0FBUyxDQUNsRCxPQUFPLENBQUMsZ0JBQWdCLENBQUMsR0FBRyxFQUFFLENBQy9CLENBQUM7UUFDRixxQkFBcUIsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUNoQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUUsR0FBRyxFQUFFLE9BQU8sQ0FBQyxVQUFVLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN2RCxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU87UUFDTCxPQUFPLEVBQUUsQ0FBQztRQUNWLFFBQVEsRUFBRTtZQUNSLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUSxDQUFDLFFBQVE7WUFDakMsTUFBTSxFQUFFLEtBQUssQ0FBQyxRQUFRLENBQUMsTUFBTTtZQUM3QixJQUFJLEVBQUUsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJO1NBQzFCO1FBQ0QsUUFBUTtLQUNULENBQUM7QUFDSixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXJhbURhdGEgfSBmcm9tICdwYXRoLXRvLXJlZ2V4cCc7XG5cbmltcG9ydCB0eXBlIHtcbiAgUm91dGVFbnRyeSxcbiAgUm91dGVySHlkcmF0aW9uU25hcHNob3QsXG4gIFJvdXRlckpzb25WYWx1ZSxcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vKiogUmVqZWN0cyB2YWx1ZXMgdGhhdCBjYW5ub3QgY3Jvc3MgdGhlIHJvdXRlcidzIGV4cGxpY2l0IGZpbml0ZS1KU09OIGJvdW5kYXJ5LiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGFzc2VydFJvdXRlckpzb25WYWx1ZShcbiAgdmFsdWU6IHVua25vd24sXG4gIGFuY2VzdG9ycyA9IG5ldyBTZXQ8b2JqZWN0PigpLFxuKTogYXNzZXJ0cyB2YWx1ZSBpcyBSb3V0ZXJKc29uVmFsdWUge1xuICBpZiAoXG4gICAgdmFsdWUgPT09IG51bGwgfHxcbiAgICB0eXBlb2YgdmFsdWUgPT09ICdzdHJpbmcnIHx8XG4gICAgdHlwZW9mIHZhbHVlID09PSAnYm9vbGVhbidcbiAgKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIGlmICh0eXBlb2YgdmFsdWUgPT09ICdudW1iZXInKSB7XG4gICAgaWYgKCFOdW1iZXIuaXNGaW5pdGUodmFsdWUpKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgICdSb3V0ZXIgaHlkcmF0aW9uIHZhbHVlcyBtdXN0IGNvbnRhaW4gZmluaXRlIEpTT04gbnVtYmVycycsXG4gICAgICApO1xuICAgIH1cbiAgICByZXR1cm47XG4gIH1cbiAgaWYgKHR5cGVvZiB2YWx1ZSAhPT0gJ29iamVjdCcpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1JvdXRlciBoeWRyYXRpb24gdmFsdWVzIG11c3QgYmUgZmluaXRlIEpTT04nKTtcbiAgfVxuICBpZiAoYW5jZXN0b3JzLmhhcyh2YWx1ZSkpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1JvdXRlciBoeWRyYXRpb24gdmFsdWVzIG11c3Qgbm90IGNvbnRhaW4gY3ljbGVzJyk7XG4gIH1cbiAgYW5jZXN0b3JzLmFkZCh2YWx1ZSk7XG4gIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgIHZhbHVlLmZvckVhY2goKGl0ZW0pID0+IHtcbiAgICAgIGFzc2VydFJvdXRlckpzb25WYWx1ZShpdGVtLCBhbmNlc3RvcnMpO1xuICAgIH0pO1xuICAgIGFuY2VzdG9ycy5kZWxldGUodmFsdWUpO1xuICAgIHJldHVybjtcbiAgfVxuICBjb25zdCBwcm90b3R5cGUgPSBPYmplY3QuZ2V0UHJvdG90eXBlT2YodmFsdWUpIGFzIG9iamVjdCB8IG51bGw7XG4gIGlmIChwcm90b3R5cGUgIT09IE9iamVjdC5wcm90b3R5cGUgJiYgcHJvdG90eXBlICE9PSBudWxsKSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKCdSb3V0ZXIgaHlkcmF0aW9uIHZhbHVlcyBtdXN0IHVzZSBwbGFpbiBKU09OIG9iamVjdHMnKTtcbiAgfVxuICBPYmplY3QudmFsdWVzKHZhbHVlKS5mb3JFYWNoKChpdGVtKSA9PiB7XG4gICAgYXNzZXJ0Um91dGVySnNvblZhbHVlKGl0ZW0sIGFuY2VzdG9ycyk7XG4gIH0pO1xuICBhbmNlc3RvcnMuZGVsZXRlKHZhbHVlKTtcbn1cblxuLyoqIENyZWF0ZXMgdGhlIHZlcnNpb25lZCwgcm91dGUtYXV0aG9yaXplZCBwcmVwYXJlZC1kYXRhIGh5ZHJhdGlvbiBwYXlsb2FkLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVJvdXRlckh5ZHJhdGlvblNuYXBzaG90KFxuICBlbnRyeTogUm91dGVFbnRyeTxQYXJhbURhdGE+LFxuKTogUm91dGVySHlkcmF0aW9uU25hcHNob3Qge1xuICBjb25zdCBzZWdtZW50czogUm91dGVySHlkcmF0aW9uU25hcHNob3RbJ3NlZ21lbnRzJ10gPSBbXTtcbiAgZW50cnkucHJlcGFyZWRNYXRjaC5zZWdtZW50cy5mb3JFYWNoKChzZWdtZW50KSA9PiB7XG4gICAgaWYgKFxuICAgICAgc2VnbWVudC5wcmVwYXJlZEh5ZHJhdGlvbiA9PSBudWxsIHx8XG4gICAgICBzZWdtZW50LnByZXBhcmVkUmVzb3VyY2U/LmdldFN0YXR1cygpICE9PSAncmVzb2x2ZWQnXG4gICAgKSB7XG4gICAgICByZXR1cm47XG4gICAgfVxuICAgIGNvbnN0IHByZXBhcmVkID0gc2VnbWVudC5wcmVwYXJlZEh5ZHJhdGlvbi5zZXJpYWxpemUoXG4gICAgICBzZWdtZW50LnByZXBhcmVkUmVzb3VyY2UuZ2V0KCksXG4gICAgKTtcbiAgICBhc3NlcnRSb3V0ZXJKc29uVmFsdWUocHJlcGFyZWQpO1xuICAgIHNlZ21lbnRzLnB1c2goeyBrZXk6IHNlZ21lbnQuc2VnbWVudEtleSwgcHJlcGFyZWQgfSk7XG4gIH0pO1xuICByZXR1cm4ge1xuICAgIHZlcnNpb246IDEsXG4gICAgbG9jYXRpb246IHtcbiAgICAgIHBhdGhuYW1lOiBlbnRyeS5sb2NhdGlvbi5wYXRobmFtZSxcbiAgICAgIHNlYXJjaDogZW50cnkubG9jYXRpb24uc2VhcmNoLFxuICAgICAgaGFzaDogZW50cnkubG9jYXRpb24uaGFzaCxcbiAgICB9LFxuICAgIHNlZ21lbnRzLFxuICB9O1xufVxuIl19
|
package/lib/esm/tools.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { ParamData } from 'path-to-regexp';
|
|
2
2
|
import type { HistoryLocationSnapshot } from './history/types.js';
|
|
3
|
-
import { type FilterSchema, type PrepareResult, type PreparedRouteChain, type PreparedRouteSegment, type Redirect, type ResolvedPreparedRouteChain, type Route, type RouteNode, type RouterMatchedRoute, type RawQuery, type UnknownFilters } from './types.js';
|
|
3
|
+
import { type FilterSchema, type PrepareResult, type PreparedRouteChain, type PreparedRouteSegment, type Redirect, type ResolvedPreparedRouteChain, type Route, type RouteNode, type RouterJsonValue, type RouterMatchedRoute, type RawQuery, type UnknownFilters } from './types.js';
|
|
4
4
|
import type { RouterPrepareEvent, RouterNavigationSource, RouterLocationSnapshot } from './instrumentation/Instrumentation.js';
|
|
5
5
|
import type { FlatRoute } from './builder.js';
|
|
6
6
|
type PrepareInstrumentation = {
|
|
@@ -17,6 +17,10 @@ type PrepareSearchState = {
|
|
|
17
17
|
rawQuery?: RawQuery;
|
|
18
18
|
filters?: UnknownFilters;
|
|
19
19
|
};
|
|
20
|
+
export type PrepareHydrationState = {
|
|
21
|
+
values: ReadonlyMap<string, RouterJsonValue>;
|
|
22
|
+
consumed: Set<string>;
|
|
23
|
+
};
|
|
20
24
|
declare const areSegmentParamsEqual: (paramNames: readonly string[], left: ParamData | undefined, right: ParamData) => boolean;
|
|
21
25
|
export declare function getMatchedRoute<TParams extends ParamData>(routes: FlatRoute<TParams>[], location: HistoryLocationSnapshot): RouterMatchedRoute<TParams> | null;
|
|
22
26
|
declare function buildHighlightId(routePath: string | undefined, index: number, moduleId?: string): string;
|
|
@@ -24,7 +28,7 @@ export declare const __testTools: {
|
|
|
24
28
|
readonly buildHighlightId: typeof buildHighlightId;
|
|
25
29
|
readonly areSegmentParamsEqual: typeof areSegmentParamsEqual;
|
|
26
30
|
};
|
|
27
|
-
export declare function prepareMatch<TParams extends ParamData, TContext = unknown>(match: RouterMatchedRoute<TParams> | null, query?: Record<string, unknown>, instrumentation?: PrepareInstrumentation, context?: TContext, reuse?: PrepareReuseInput<TContext>, searchState?: PrepareSearchState): PreparedRouteChain<TParams, TContext>;
|
|
31
|
+
export declare function prepareMatch<TParams extends ParamData, TContext = unknown>(match: RouterMatchedRoute<TParams> | null, query?: Record<string, unknown>, instrumentation?: PrepareInstrumentation, context?: TContext, reuse?: PrepareReuseInput<TContext>, searchState?: PrepareSearchState, hydration?: PrepareHydrationState): PreparedRouteChain<TParams, TContext>;
|
|
28
32
|
export declare function prepareMatchAsync<TParams extends ParamData, TContext = unknown>(match: RouterMatchedRoute<TParams> | null, query?: Record<string, unknown>, instrumentation?: PrepareInstrumentation, context?: TContext): Promise<ResolvedPreparedRouteChain<TParams, TContext>>;
|
|
29
33
|
export declare function r<TContext = unknown, TPrepared extends PrepareResult = PrepareResult, TVariables extends ParamData = ParamData, TQuery extends Record<string, unknown> = Record<string, unknown>, S extends FilterSchema | undefined = FilterSchema | undefined, TChildren extends readonly (RouteNode | Redirect)[] | undefined = readonly (RouteNode | Redirect)[] | undefined>(route: Route<TContext, TPrepared, TVariables, TQuery, S, TChildren>): Route<TContext, TPrepared, TVariables, TQuery, S, TChildren>;
|
|
30
34
|
export {};
|
package/lib/esm/tools.d.ts.map
CHANGED
|
@@ -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;AAChD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EACL,KAAK,YAAY,EACjB,KAAK,aAAa,EAClB,KAAK,kBAAkB,EACvB,KAAK,oBAAoB,EACzB,KAAK,QAAQ,EACb,KAAK,0BAA0B,EAE/B,KAAK,KAAK,EACV,KAAK,SAAS,EACd,KAAK,kBAAkB,EACvB,KAAK,QAAQ,EACb,KAAK,cAAc,EACpB,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;AAEF,KAAK,iBAAiB,CAAC,QAAQ,IAAI;IACjC,gBAAgB,CAAC,EAAE,oBAAoB,CAAC,QAAQ,CAAC,EAAE,CAAC;IACpD,cAAc,CAAC,EAAE,SAAS,CAAC;IAC3B,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB,CAAC;AAEF,KAAK,kBAAkB,GAAG;IACxB,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B,CAAC;AAoBF,QAAA,MAAM,qBAAqB,eACb,SAAS,MAAM,EAAE,QACvB,SAAS,GAAG,SAAS,SACpB,SAAS,KACf,OAUF,CAAC;AAwBF,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAC5B,QAAQ,EAAE,uBAAuB,GAChC,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,CAepC;AAKD,iBAAS,gBAAgB,CACvB,SAAS,EAAE,MAAM,GAAG,SAAS,EAC7B,KAAK,EAAE,MAAM,EACb,QAAQ,CAAC,EAAE,MAAM,GAChB,MAAM,CAaR;AAED,eAAO,MAAM,WAAW;;;CAGd,CAAC;AAUX,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,sBAAsB,EACxC,OAAO,CAAC,EAAE,QAAQ,EAClB,KAAK,CAAC,EAAE,iBAAiB,CAAC,QAAQ,CAAC,EACnC,WAAW,CAAC,EAAE,kBAAkB,
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"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"}
|