@plumile/router 0.1.196 → 0.1.198

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 (50) hide show
  1. package/README.md +32 -7
  2. package/lib/esm/routing/Link.d.ts +5 -4
  3. package/lib/esm/routing/Link.d.ts.map +1 -1
  4. package/lib/esm/routing/Link.js +64 -64
  5. package/lib/esm/routing/RouteComponentWrapper.d.ts.map +1 -1
  6. package/lib/esm/routing/RouteComponentWrapper.js +4 -2
  7. package/lib/esm/routing/RouterPrimitives.stories.d.ts.map +1 -1
  8. package/lib/esm/routing/RouterPrimitives.stories.js +2 -2
  9. package/lib/esm/routing/createRouter.d.ts.map +1 -1
  10. package/lib/esm/routing/createRouter.js +40 -62
  11. package/lib/esm/routing/createStaticRouter.d.ts.map +1 -1
  12. package/lib/esm/routing/createStaticRouter.js +9 -37
  13. package/lib/esm/routing/destination.d.ts +25 -0
  14. package/lib/esm/routing/destination.d.ts.map +1 -0
  15. package/lib/esm/routing/destination.js +110 -0
  16. package/lib/esm/routing/index.d.ts +2 -1
  17. package/lib/esm/routing/index.d.ts.map +1 -1
  18. package/lib/esm/routing/index.js +3 -2
  19. package/lib/esm/routing/useNavigate.d.ts +1 -0
  20. package/lib/esm/routing/useNavigate.d.ts.map +1 -1
  21. package/lib/esm/routing/useNavigate.js +1 -1
  22. package/lib/esm/tools.d.ts +7 -3
  23. package/lib/esm/tools.d.ts.map +1 -1
  24. package/lib/esm/tools.js +4 -2
  25. package/lib/esm/type-tests/navigation-destination.test-d.d.ts +2 -0
  26. package/lib/esm/type-tests/navigation-destination.test-d.d.ts.map +1 -0
  27. package/lib/esm/type-tests/navigation-destination.test-d.js +74 -0
  28. package/lib/esm/types.d.ts +33 -11
  29. package/lib/esm/types.d.ts.map +1 -1
  30. package/lib/esm/types.js +1 -1
  31. package/lib/tsconfig.esm.tsbuildinfo +1 -1
  32. package/lib/types/routing/Link.d.ts +5 -4
  33. package/lib/types/routing/Link.d.ts.map +1 -1
  34. package/lib/types/routing/RouteComponentWrapper.d.ts.map +1 -1
  35. package/lib/types/routing/RouterPrimitives.stories.d.ts.map +1 -1
  36. package/lib/types/routing/createRouter.d.ts.map +1 -1
  37. package/lib/types/routing/createStaticRouter.d.ts.map +1 -1
  38. package/lib/types/routing/destination.d.ts +25 -0
  39. package/lib/types/routing/destination.d.ts.map +1 -0
  40. package/lib/types/routing/index.d.ts +2 -1
  41. package/lib/types/routing/index.d.ts.map +1 -1
  42. package/lib/types/routing/useNavigate.d.ts +1 -0
  43. package/lib/types/routing/useNavigate.d.ts.map +1 -1
  44. package/lib/types/tools.d.ts +7 -3
  45. package/lib/types/tools.d.ts.map +1 -1
  46. package/lib/types/type-tests/navigation-destination.test-d.d.ts +2 -0
  47. package/lib/types/type-tests/navigation-destination.test-d.d.ts.map +1 -0
  48. package/lib/types/types.d.ts +33 -11
  49. package/lib/types/types.d.ts.map +1 -1
  50. package/package.json +2 -2
@@ -1,9 +1,8 @@
1
1
  import { parse as parseFilters } from '@plumile/filter-query/parse.js';
2
- import { FILTER_OPERATORS } from '@plumile/filter-query/values.js';
3
2
  import { buildRoutes } from '../builder.js';
4
3
  import { prepareMatch } from '../tools.js';
5
4
  import { parseRawQuery } from '../tools/query.js';
6
- import buildCombinedSearch from '../tools/buildCombinedSearch.js';
5
+ import { buildDestinationSearch } from './destination.js';
7
6
  function buildResolvedLoadState(preparedMatch) {
8
7
  const activeLoadState = {
9
8
  status: 'resolved',
@@ -76,22 +75,6 @@ function parseSearchState(search, querySchema) {
76
75
  };
77
76
  }
78
77
  function createStaticRoutingContext(entry, flatRoutes) {
79
- const filterOperators = new Set(FILTER_OPERATORS);
80
- const looksLikeFilters = (value) => {
81
- if (value == null || typeof value !== 'object' || Array.isArray(value)) {
82
- return false;
83
- }
84
- return Object.values(value).some((fieldValue) => {
85
- if (fieldValue != null &&
86
- typeof fieldValue === 'object' &&
87
- !Array.isArray(fieldValue)) {
88
- return Object.keys(fieldValue).some((key) => {
89
- return filterOperators.has(key);
90
- });
91
- }
92
- return false;
93
- });
94
- };
95
78
  return {
96
79
  buildSearch({ pathname, query, filters }) {
97
80
  const targetPathname = pathname ?? entry.location.pathname;
@@ -103,19 +86,9 @@ function createStaticRoutingContext(entry, flatRoutes) {
103
86
  if (destination != null) {
104
87
  querySchema = destination.route.routes.at(-1)?.querySchema;
105
88
  }
106
- const useQueryAsFilters = filters == null &&
107
- querySchema != null &&
108
- query != null &&
109
- looksLikeFilters(query);
110
- let filtersInput = filters;
111
- let queryInput = query;
112
- if (useQueryAsFilters) {
113
- filtersInput = query;
114
- queryInput = undefined;
115
- }
116
- return buildCombinedSearch({
117
- filters: filtersInput,
118
- query: queryInput,
89
+ return buildDestinationSearch({
90
+ filters,
91
+ query,
119
92
  querySchema,
120
93
  });
121
94
  },
@@ -151,11 +124,10 @@ export async function createStaticRouter(routes, options) {
151
124
  const activeQuerySchema = route?.route.routes.at(-1)?.querySchema;
152
125
  const searchState = parseSearchState(location.search, activeQuerySchema);
153
126
  const routeContext = options.context;
154
- let routeInput = searchState.query;
155
- if (activeQuerySchema != null) {
156
- routeInput = searchState.filters ?? {};
157
- }
158
- const preparedMatch = prepareMatch(route, routeInput, undefined, routeContext);
127
+ const preparedMatch = prepareMatch(route, searchState.query, undefined, routeContext, undefined, {
128
+ rawQuery: searchState.query,
129
+ filters: searchState.filters,
130
+ });
159
131
  await Promise.all(preparedMatch.segments.map(async (segment) => {
160
132
  await segment.preparedResource?.load();
161
133
  await segment.resourcePage?.load();
@@ -183,4 +155,4 @@ export async function createStaticRouter(routes, options) {
183
155
  };
184
156
  }
185
157
  export default createStaticRouter;
186
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlU3RhdGljUm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JvdXRpbmcvY3JlYXRlU3RhdGljUm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLElBQUksWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFFdkUsT0FBTyxFQUFFLGdCQUFnQixFQUFFLE1BQU0saUNBQWlDLENBQUM7QUFHbkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLG1CQUFtQixNQUFNLGlDQUFpQyxDQUFDO0FBNkNsRSxTQUFTLHNCQUFzQixDQUM3QixhQUlrQjtJQUtsQixNQUFNLGVBQWUsR0FBMEI7UUFDN0MsTUFBTSxFQUFFLFVBQVU7UUFDbEIsWUFBWSxFQUFFLENBQUM7UUFDZixhQUFhLEVBQUUsQ0FBQztRQUNoQixPQUFPLEVBQUUsQ0FBQztLQUNYLENBQUM7SUFDRixPQUFPO1FBQ0wsZUFBZTtRQUNmLFNBQVMsRUFBRTtZQUNULEdBQUcsZUFBZTtZQUNsQixRQUFRLEVBQUUsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxPQUFPLEVBQUUsRUFBRTtnQkFDL0MsT0FBTztvQkFDTCxJQUFJLEVBQUUsT0FBTyxDQUFDLElBQUk7b0JBQ2xCLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUTtvQkFDMUIsWUFBWSxFQUFFLE9BQU8sQ0FBQyxZQUFZO29CQUNsQyxhQUFhLEVBQUUsT0FBTyxDQUFDLGdCQUFnQixFQUFFLFNBQVMsRUFBRSxJQUFJLE1BQU07b0JBQzlELFVBQVUsRUFBRSxPQUFPLENBQUMsWUFBWSxFQUFFLFNBQVMsRUFBRSxJQUFJLE1BQU07b0JBQ3ZELE1BQU0sRUFBRSxV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ZXNDb250ZW50IjpbImltcG9ydCB7IHR5cGUgRGlhZ25vc3RpYyBhcyBGaWx0ZXJEaWFnbm9zdGljIH0gZnJvbSAnQHBsdW1pbGUvZmlsdGVyLXF1ZXJ5L2Vycm9ycy5qcyc7XG5pbXBvcnQgeyBwYXJzZSBhcyBwYXJzZUZpbHRlcnMgfSBmcm9tICdAcGx1bWlsZS9maWx0ZXItcXVlcnkvcGFyc2UuanMnO1xuaW1wb3J0IHsgdHlwZSBTY2hlbWEgYXMgRmlsdGVyU2NoZW1hIH0gZnJvbSAnQHBsdW1pbGUvZmlsdGVyLXF1ZXJ5L3R5cGVzLmpzJztcbmltcG9ydCB7IEZJTFRFUl9PUEVSQVRPUlMgfSBmcm9tICdAcGx1bWlsZS9maWx0ZXItcXVlcnkvdmFsdWVzLmpzJztcbmltcG9ydCB0eXBlIHsgUGFyYW1EYXRhIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuXG5pbXBvcnQgeyBidWlsZFJvdXRlcyB9IGZyb20gJy4uL2J1aWxkZXIuanMnO1xuaW1wb3J0IHsgcHJlcGFyZU1hdGNoIH0gZnJvbSAnLi4vdG9vbHMuanMnO1xuaW1wb3J0IHsgcGFyc2VSYXdRdWVyeSB9IGZyb20gJy4uL3Rvb2xzL3F1ZXJ5LmpzJztcbmltcG9ydCBidWlsZENvbWJpbmVkU2VhcmNoIGZyb20gJy4uL3Rvb2xzL2J1aWxkQ29tYmluZWRTZWFyY2guanMnO1xuaW1wb3J0IHR5cGUge1xuICBBbnlSb3V0ZSxcbiAgUm91dGVFbnRyeSxcbiAgUm91dGluZ0NvbnRleHRUeXBlLFxuICBVbmtub3duRmlsdGVycyxcbiAgVW5rbm93blF1ZXJ5U2hhcGUsXG4gIFJhd1F1ZXJ5LFxuICBSb3V0ZXJBY3RpdmVMb2FkU3RhdGUsXG4gIFJvdXRlckxvYWRTdGF0ZSxcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG50eXBlIFJvdXRlclF1ZXJ5U2NoZW1hID0gRmlsdGVyU2NoZW1hIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgdHlwZSBTdGF0aWNSb3V0ZXJMb2NhdGlvbiA9IHtcbiAgaGFzaD86IHN0cmluZztcbiAgcGF0aG5hbWU6IHN0cmluZztcbiAgc2VhcmNoPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ3JlYXRlU3RhdGljUm91dGVyT3B0aW9uczxUQ29udGV4dD4gPSB7XG4gIGNvbnRleHQ/OiBUQ29udGV4dDtcbiAgbG9jYXRpb246IFN0YXRpY1JvdXRlckxvY2F0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgQ3JlYXRlU3RhdGljUm91dGVyUmV0dXJuPFRDb250ZXh0LCBSIGV4dGVuZHMgQW55Um91dGVbXT4gPSB7XG4gIGNvbnRleHQ6IFJvdXRpbmdDb250ZXh0VHlwZTxcbiAgICBQYXJhbURhdGEsXG4gICAgUm91dGVyUXVlcnlTY2hlbWEsXG4gICAgVW5rbm93blF1ZXJ5U2hhcGUsXG4gICAgVENvbnRleHRcbiAgPjtcbiAgZW50cnk6IFJvdXRlRW50cnk8UGFyYW1EYXRhLCBSb3V0ZXJRdWVyeVNjaGVtYSwgVENvbnRleHQ+O1xuICByb3V0ZXM6IFI7XG59O1xuXG50eXBlIFBhcnNlZFNlYXJjaFN0YXRlID0ge1xuICBxdWVyeTogUmF3UXVlcnk7XG4gIGZpbHRlcnM/OiBVbmtub3duRmlsdGVycztcbiAgZmlsdGVyRGlhZ25vc3RpY3M/OiBGaWx0ZXJEaWFnbm9zdGljW107XG59O1xuXG4vKipcbiAqXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkUmVzb2x2ZWRMb2FkU3RhdGU8VENvbnRleHQ+KFxuICBwcmVwYXJlZE1hdGNoOiBSb3V0ZUVudHJ5PFxuICAgIFBhcmFtRGF0YSxcbiAgICBSb3V0ZXJRdWVyeVNjaGVtYSxcbiAgICBUQ29udGV4dFxuICA+WydwcmVwYXJlZE1hdGNoJ10sXG4pOiB7XG4gIGFjdGl2ZUxvYWRTdGF0ZTogUm91dGVyQWN0aXZlTG9hZFN0YXRlO1xuICBsb2FkU3RhdGU6IFJvdXRlckxvYWRTdGF0ZTtcbn0ge1xuICBjb25zdCBhY3RpdmVMb2FkU3RhdGU6IFJvdXRlckFjdGl2ZUxvYWRTdGF0ZSA9IHtcbiAgICBzdGF0dXM6ICdyZXNvbHZlZCcsXG4gICAgcGVuZGluZ0NvdW50OiAwLFxuICAgIHJlamVjdGVkQ291bnQ6IDAsXG4gICAgdmVyc2lvbjogMCxcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhY3RpdmVMb2FkU3RhdGUsXG4gICAgbG9hZFN0YXRlOiB7XG4gICAgICAuLi5hY3RpdmVMb2FkU3RhdGUsXG4gICAgICBzZWdtZW50czogcHJlcGFyZWRNYXRjaC5zZWdtZW50cy5tYXAoKHNlZ21lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYXRoOiBzZWdtZW50LnBhdGgsXG4gICAgICAgICAgZnVsbFBhdGg6IHNlZ21lbnQuZnVsbFBhdGgsXG4gICAgICAgICAgc2VnbWVudEluZGV4OiBzZWdtZW50LnNlZ21lbnRJbmRleCxcbiAgICAgICAgICBwcmVwYXJlU3RhdHVzOiBzZWdtZW50LnByZXBhcmVkUmVzb3VyY2U/LmdldFN0YXR1cygpID8/ICdpZGxlJyxcbiAgICAgICAgICBjb2RlU3RhdHVzOiBzZWdtZW50LnJlc291cmNlUGFnZT8uZ2V0U3RhdHVzKCkgPz8gJ2lkbGUnLFxuICAgICAgICAgIHN0YXR1czogJ3Jlc29sdmVkJyxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICpcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplU2VhcmNoKHNlYXJjaDogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgaWYgKHNlYXJjaCA9PSBudWxsIHx8IHNlYXJjaCA9PT0gJycpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKHNlYXJjaC5zdGFydHNXaXRoKCc/JykpIHtcbiAgICByZXR1cm4gc2VhcmNoO1xuICB9XG4gIHJldHVybiBgPyR7c2VhcmNofWA7XG59XG5cbi8qKlxuICpcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplU3RhdGljTG9jYXRpb24obG9jYXRpb246IFN0YXRpY1JvdXRlckxvY2F0aW9uKTogTG9jYXRpb24ge1xuICBsZXQgeyBwYXRobmFtZSB9ID0gbG9jYXRpb247XG4gIGlmICghcGF0aG5hbWUuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgcGF0aG5hbWUgPSBgLyR7cGF0aG5hbWV9YDtcbiAgfVxuICByZXR1cm4ge1xuICAgIGhhc2g6IGxvY2F0aW9uLmhhc2ggPz8gJycsXG4gICAgcGF0aG5hbWUsXG4gICAgc2VhcmNoOiBub3JtYWxpemVTZWFyY2gobG9jYXRpb24uc2VhcmNoKSxcbiAgfSBhcyBMb2NhdGlvbjtcbn1cblxuLyoqXG4gKlxuICovXG5mdW5jdGlvbiBmaW5kU3RhdGljTWF0Y2hlZFJvdXRlKFxuICByb3V0ZXM6IFJldHVyblR5cGU8dHlwZW9mIGJ1aWxkUm91dGVzPixcbiAgbG9jYXRpb246IExvY2F0aW9uLFxuKSB7XG4gIGZvciAoY29uc3Qgcm91dGUgb2Ygcm91dGVzKSB7XG4gICAgY29uc3QgbWF0Y2ggPSByb3V0ZS5tYXRjaEZ1bmN0aW9uKGxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICBpZiAobWF0Y2ggIT09IGZhbHNlKSB7XG4gICAgICBjb25zdCB7IHBhdGgsIHBhcmFtcyB9ID0gbWF0Y2g7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXRjaCxcbiAgICAgICAgcm91dGUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqXG4gKi9cbmZ1bmN0aW9uIHBhcnNlU2VhcmNoU3RhdGUoXG4gIHNlYXJjaDogc3RyaW5nLFxuICBxdWVyeVNjaGVtYTogUm91dGVyUXVlcnlTY2hlbWEsXG4pOiBQYXJzZWRTZWFyY2hTdGF0ZSB7XG4gIGNvbnN0IHF1ZXJ5ID0gcGFyc2VSYXdRdWVyeShzZWFyY2gpO1xuICBpZiAocXVlcnlTY2hlbWEgPT0gbnVsbCkge1xuICAgIHJldHVybiB7IHF1ZXJ5IH07XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gcGFyc2VGaWx0ZXJzKHNlYXJjaCwgcXVlcnlTY2hlbWEpO1xuICByZXR1cm4ge1xuICAgIHF1ZXJ5LFxuICAgIGZpbHRlcnM6IHBhcnNlZC5maWx0ZXJzLFxuICAgIGZpbHRlckRpYWdub3N0aWNzOiBwYXJzZWQuZGlhZ25vc3RpY3MsXG4gIH07XG59XG5cbi8qKlxuICpcbiAqL1xuZnVuY3Rpb24gY3JlYXRlU3RhdGljUm91dGluZ0NvbnRleHQ8VENvbnRleHQ+KFxuICBlbnRyeTogUm91dGVFbnRyeTxQYXJhbURhdGEsIFJvdXRlclF1ZXJ5U2NoZW1hLCBUQ29udGV4dD4sXG4gIGZsYXRSb3V0ZXM6IFJldHVyblR5cGU8dHlwZW9mIGJ1aWxkUm91dGVzPixcbik6IFJvdXRpbmdDb250ZXh0VHlwZTxcbiAgUGFyYW1EYXRhLFxuICBSb3V0ZXJRdWVyeVNjaGVtYSxcbiAgVW5rbm93blF1ZXJ5U2hhcGUsXG4gIFRDb250ZXh0XG4+IHtcbiAgY29uc3QgZmlsdGVyT3BlcmF0b3JzID0gbmV3IFNldDxzdHJpbmc+KEZJTFRFUl9PUEVSQVRPUlMpO1xuICBjb25zdCBsb29rc0xpa2VGaWx0ZXJzID0gKHZhbHVlOiB1bmtub3duKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKHZhbHVlID09IG51bGwgfHwgdHlwZW9mIHZhbHVlICE9PSAnb2JqZWN0JyB8fCBBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gT2JqZWN0LnZhbHVlcyh2YWx1ZSkuc29tZSgoZmllbGRWYWx1ZSkgPT4ge1xuICAgICAgaWYgKFxuICAgICAgICBmaWVsZFZhbHVlICE9IG51bGwgJiZcbiAgICAgICAgdHlwZW9mIGZpZWxkVmFsdWUgPT09ICdvYmplY3QnICYmXG4gICAgICAgICFBcnJheS5pc0FycmF5KGZpZWxkVmFsdWUpXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIE9iamVjdC5rZXlzKGZpZWxkVmFsdWUpLnNvbWUoKGtleSkgPT4ge1xuICAgICAgICAgIHJldHVybiBmaWx0ZXJPcGVyYXRvcnMuaGFzKGtleSk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH0pO1xuICB9O1xuICByZXR1cm4ge1xuICAgIGJ1aWxkU2VhcmNoKHsgcGF0aG5hbWUsIHF1ZXJ5LCBmaWx0ZXJzIH0pIHtcbiAgICAgIGNvbnN0IHRhcmdldFBhdGhuYW1lID0gcGF0aG5hbWUgPz8gZW50cnkubG9jYXRpb24ucGF0aG5hbWU7XG4gICAgICBjb25zdCBkZXN0aW5hdGlvbiA9IGZpbmRTdGF0aWNNYXRjaGVkUm91dGUoZmxhdFJvdXRlcywge1xuICAgICAgICAuLi5lbnRyeS5sb2NhdGlvbixcbiAgICAgICAgcGF0aG5hbWU6IHRhcmdldFBhdGhuYW1lLFxuICAgICAgfSk7XG4gICAgICBsZXQgcXVlcnlTY2hlbWEgPSBlbnRyeS5hY3RpdmVRdWVyeVNjaGVtYTtcbiAgICAgIGlmIChkZXN0aW5hdGlvbiAhPSBudWxsKSB7XG4gICAgICAgIHF1ZXJ5U2NoZW1hID0gZGVzdGluYXRpb24ucm91dGUucm91dGVzLmF0KC0xKT8ucXVlcnlTY2hlbWE7XG4gICAgICB9XG4gICAgICBjb25zdCB1c2VRdWVyeUFzRmlsdGVycyA9XG4gICAgICAgIGZpbHRlcnMgPT0gbnVsbCAmJlxuICAgICAgICBxdWVyeVNjaGVtYSAhPSBudWxsICYmXG4gICAgICAgIHF1ZXJ5ICE9IG51bGwgJiZcbiAgICAgICAgbG9va3NMaWtlRmlsdGVycyhxdWVyeSk7XG4gICAgICBsZXQgZmlsdGVyc0lucHV0ID0gZmlsdGVycztcbiAgICAgIGxldCBxdWVyeUlucHV0ID0gcXVlcnk7XG4gICAgICBpZiAodXNlUXVlcnlBc0ZpbHRlcnMpIHtcbiAgICAgICAgZmlsdGVyc0lucHV0ID0gcXVlcnk7XG4gICAgICAgIHF1ZXJ5SW5wdXQgPSB1bmRlZmluZWQ7XG4gICAgICB9XG4gICAgICByZXR1cm4gYnVpbGRDb21iaW5lZFNlYXJjaCh7XG4gICAgICAgIGZpbHRlcnM6IGZpbHRlcnNJbnB1dCxcbiAgICAgICAgcXVlcnk6IHF1ZXJ5SW5wdXQsXG4gICAgICAgIHF1ZXJ5U2NoZW1hLFxuICAgICAgfSk7XG4gICAgfSxcbiAgICBnZXQ6ICgpID0+IHtcbiAgICAgIHJldHVybiBlbnRyeTtcbiAgICB9LFxuICAgIGhpc3Rvcnk6IHtcbiAgICAgIGluaXQoKSB7fSxcbiAgICAgIHB1c2goKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignU3RhdGljIHJvdXRlciBjYW5ub3QgcHVzaCBoaXN0b3J5Jyk7XG4gICAgICB9LFxuICAgICAgc2V0KCkge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0YXRpYyByb3V0ZXIgY2Fubm90IHJlcGxhY2UgaGlzdG9yeScpO1xuICAgICAgfSxcbiAgICAgIHN1YnNjcmliZSgpIHtcbiAgICAgICAgcmV0dXJuICgpID0+IHt9O1xuICAgICAgfSxcbiAgICB9IGFzIHVua25vd24gYXMgUm91dGluZ0NvbnRleHRUeXBlPFxuICAgICAgUGFyYW1EYXRhLFxuICAgICAgUm91dGVyUXVlcnlTY2hlbWEsXG4gICAgICBVbmtub3duUXVlcnlTaGFwZSxcbiAgICAgIFRDb250ZXh0XG4gICAgPlsnaGlzdG9yeSddLFxuICAgIG5hdmlnYXRlKCkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdGF0aWMgcm91dGVyIGNhbm5vdCBuYXZpZ2F0ZScpO1xuICAgIH0sXG4gICAgcHJlbG9hZCgpIHt9LFxuICAgIHByZWxvYWRDb2RlKCkge30sXG4gICAgc3Vic2NyaWJlKCkge1xuICAgICAgcmV0dXJuICgpID0+IHt9O1xuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICpcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNyZWF0ZVN0YXRpY1JvdXRlcjxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuICBSIGV4dGVuZHMgQW55Um91dGVbXSA9IEFueVJvdXRlW10sXG4+KFxuICByb3V0ZXM6IFsuLi5SXSB8IEFueVJvdXRlW10sXG4gIG9wdGlvbnM6IENyZWF0ZVN0YXRpY1JvdXRlck9wdGlvbnM8VENvbnRleHQ+LFxuKTogUHJvbWlzZTxDcmVhdGVTdGF0aWNSb3V0ZXJSZXR1cm48VENvbnRleHQsIFI+PiB7XG4gIGNvbnN0IGxvY2F0aW9uID0gbm9ybWFsaXplU3RhdGljTG9jYXRpb24ob3B0aW9ucy5sb2NhdGlvbik7XG4gIGNvbnN0IGZsYXRSb3V0ZXMgPSBidWlsZFJvdXRlcyhyb3V0ZXMpO1xuICBjb25zdCByb3V0ZSA9IGZpbmRTdGF0aWNNYXRjaGVkUm91dGUoZmxhdFJvdXRlcywgbG9jYXRpb24pO1xuICBjb25zdCBhY3RpdmVRdWVyeVNjaGVtYSA9IHJvdXRlPy5yb3V0ZS5yb3V0ZXMuYXQoLTEpPy5xdWVyeVNjaGVtYTtcbiAgY29uc3Qgc2VhcmNoU3RhdGUgPSBwYXJzZVNlYXJjaFN0YXRlKGxvY2F0aW9uLnNlYXJjaCwgYWN0aXZlUXVlcnlTY2hlbWEpO1xuICBjb25zdCByb3V0ZUNvbnRleHQgPSBvcHRpb25zLmNvbnRleHQgYXMgVENvbnRleHQ7XG4gIGxldCByb3V0ZUlucHV0OiBSYXdRdWVyeSB8IFVua25vd25GaWx0ZXJzID0gc2VhcmNoU3RhdGUucXVlcnk7XG4gIGlmIChhY3RpdmVRdWVyeVNjaGVtYSAhPSBudWxsKSB7XG4gICAgcm91dGVJbnB1dCA9IHNlYXJjaFN0YXRlLmZpbHRlcnMgPz8ge307XG4gIH1cbiAgY29uc3QgcHJlcGFyZWRNYXRjaCA9IHByZXBhcmVNYXRjaChcbiAgICByb3V0ZSxcbiAgICByb3V0ZUlucHV0LFxuICAgIHVuZGVmaW5lZCxcbiAgICByb3V0ZUNvbnRleHQsXG4gICk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgcHJlcGFyZWRNYXRjaC5zZWdtZW50cy5tYXAoYXN5bmMgKHNlZ21lbnQpID0+IHtcbiAgICAgIGF3YWl0IHNlZ21lbnQucHJlcGFyZWRSZXNvdXJjZT8ubG9hZCgpO1xuICAgICAgYXdhaXQgc2VnbWVudC5yZXNvdXJjZVBhZ2U/LmxvYWQoKTtcbiAgICB9KSxcbiAgKTtcbiAgY29uc3QgeyBhY3RpdmVMb2FkU3RhdGUsIGxvYWRTdGF0ZSB9ID0gYnVpbGRSZXNvbHZlZExvYWRTdGF0ZShwcmVwYXJlZE1hdGNoKTtcblxuICBjb25zdCBlbnRyeTogUm91dGVFbnRyeTxQYXJhbURhdGEsIFJvdXRlclF1ZXJ5U2NoZW1hLCBUQ29udGV4dD4gPSB7XG4gICAgYWN0aXZlUXVlcnlTY2hlbWEsXG4gICAgYWN0aXZlTG9hZFN0YXRlLFxuICAgIGNvbnRleHQ6IHJvdXRlQ29udGV4dCxcbiAgICBmaWx0ZXJEaWFnbm9zdGljczogc2VhcmNoU3RhdGUuZmlsdGVyRGlhZ25vc3RpY3MsXG4gICAgZmlsdGVyczogc2VhcmNoU3RhdGUuZmlsdGVycyxcbiAgICBmb3JjZVJlcmVuZGVyOiBmYWxzZSxcbiAgICBsb2NhdGlvbixcbiAgICBwcmVwYXJlZE1hdGNoLFxuICAgIHF1ZXJ5OiBzZWFyY2hTdGF0ZS5xdWVyeSxcbiAgICByYXdTZWFyY2g6IGxvY2F0aW9uLnNlYXJjaCxcbiAgICByb3V0ZSxcbiAgICBsb2FkU3RhdGUsXG4gIH07XG5cbiAgY29uc3Qgcm91dGVyQ29udGV4dCA9IGNyZWF0ZVN0YXRpY1JvdXRpbmdDb250ZXh0KGVudHJ5LCBmbGF0Um91dGVzKTtcblxuICByZXR1cm4ge1xuICAgIGNvbnRleHQ6IHJvdXRlckNvbnRleHQsXG4gICAgZW50cnksXG4gICAgcm91dGVzOiByb3V0ZXMgYXMgUixcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlU3RhdGljUm91dGVyO1xuIl19
158
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY3JlYXRlU3RhdGljUm91dGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3JvdXRpbmcvY3JlYXRlU3RhdGljUm91dGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxLQUFLLElBQUksWUFBWSxFQUFFLE1BQU0sZ0NBQWdDLENBQUM7QUFJdkUsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUM1QyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sYUFBYSxDQUFDO0FBQzNDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNsRCxPQUFPLEVBQUUsc0JBQXNCLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQTZDMUQsU0FBUyxzQkFBc0IsQ0FDN0IsYUFJa0I7SUFLbEIsTUFBTSxlQUFlLEdBQTBCO1FBQzdDLE1BQU0sRUFBRSxVQUFVO1FBQ2xCLFlBQVksRUFBRSxDQUFDO1FBQ2YsYUFBYSxFQUFFLENBQUM7UUFDaEIsT0FBTyxFQUFFLENBQUM7S0FDWCxDQUFDO0lBQ0YsT0FBTztRQUNMLGVBQWU7UUFDZixTQUFTLEVBQUU7WUFDVCxHQUFHLGVBQWU7WUFDbEIsUUFBUSxFQUFFLGFBQWEsQ0FBQyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUU7Z0JBQy9DLE9BQU87b0JBQ0wsSUFBSSxFQUFFLE9BQU8sQ0FBQyxJQUFJO29CQUNsQixRQUFRLEVBQUUsT0FBTyxDQUFDLFFBQVE7b0JBQzFCLFlBQVksRUFBRSxPQUFPLENBQUMsWUFBWTtvQkFDbEMsYUFBYSxFQUFFLE9BQU8sQ0FBQyxnQkFBZ0IsRUFBRSxTQUFTLEVBQUUsSUFBSSxNQUFNO29CQUM5RCxVQUFVLEVBQUUsT0FBTyxDQUFDLFlBQVksRUFBRSxTQUFTLEVBQUUsSUFBSSxNQUFNO29CQUN2RCxNQUFNLEVBQUUsVUFBVTtpQkFDbkIsQ0FBQztZQUNKLENBQUMsQ0FBQztTQUNI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Q2pCLFNBQVMsRUFDVCxZQUFZLEVBQ1osU0FBUyxFQUNUO1FBQ0UsUUFBUSxFQUFFLFdBQVcsQ0FBQyxLQUFLO1FBQzNCLE9BQU8sRUFBRSxXQUFXLENBQUMsT0FBTztLQUM3QixDQUNGLENBQUM7SUFFRixNQUFNLE9BQU8sQ0FBQyxHQUFHLENBQ2YsYUFBYSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sRUFBRSxFQUFFO1FBQzNDLE1BQU0sT0FBTyxDQUFDLGdCQUFnQixFQUFFLElBQUksRUFBRSxDQUFDO1FBQ3ZDLE1BQU0sT0FBTyxDQUFDLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQztJQUNyQyxDQUFDLENBQUMsQ0FDSCxDQUFDO0lBQ0YsTUFBTSxFQUFFLGVBQWUsRUFBRSxTQUFTLEVBQUUsR0FBRyxzQkFBc0IsQ0FBQyxhQUFhLENBQUMsQ0FBQztJQUU3RSxNQUFNLEtBQUssR0FBdUQ7UUFDaEUsaUJBQWlCO1FBQ2pCLGVBQWU7UUFDZixPQUFPLEVBQUUsWUFBWTtRQUNyQixpQkFBaUIsRUFBRSxXQUFXLENBQUMsaUJBQWlCO1FBQ2hELE9BQU8sRUFBRSxXQUFXLENBQUMsT0FBTztRQUM1QixhQUFhLEVBQUUsS0FBSztRQUNwQixRQUFRO1FBQ1IsYUFBYTtRQUNiLEtBQUssRUFBRSxXQUFXLENBQUMsS0FBSztRQUN4QixTQUFTLEVBQUUsUUFBUSxDQUFDLE1BQU07UUFDMUIsS0FBSztRQUNMLFNBQVM7S0FDVixDQUFDO0lBRUYsTUFBTSxhQUFhLEdBQUcsMEJBQTBCLENBQUMsS0FBSyxFQUFFLFVBQVUsQ0FBQyxDQUFDO0lBRXBFLE9BQU87UUFDTCxPQUFPLEVBQUUsYUFBYTtRQUN0QixLQUFLO1FBQ0wsTUFBTSxFQUFFLE1BQVc7S0FDcEIsQ0FBQztBQUNKLENBQUM7QUFFRCxlQUFlLGtCQUFrQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgdHlwZSBEaWFnbm9zdGljIGFzIEZpbHRlckRpYWdub3N0aWMgfSBmcm9tICdAcGx1bWlsZS9maWx0ZXItcXVlcnkvZXJyb3JzLmpzJztcbmltcG9ydCB7IHBhcnNlIGFzIHBhcnNlRmlsdGVycyB9IGZyb20gJ0BwbHVtaWxlL2ZpbHRlci1xdWVyeS9wYXJzZS5qcyc7XG5pbXBvcnQgeyB0eXBlIFNjaGVtYSBhcyBGaWx0ZXJTY2hlbWEgfSBmcm9tICdAcGx1bWlsZS9maWx0ZXItcXVlcnkvdHlwZXMuanMnO1xuaW1wb3J0IHR5cGUgeyBQYXJhbURhdGEgfSBmcm9tICdwYXRoLXRvLXJlZ2V4cCc7XG5cbmltcG9ydCB7IGJ1aWxkUm91dGVzIH0gZnJvbSAnLi4vYnVpbGRlci5qcyc7XG5pbXBvcnQgeyBwcmVwYXJlTWF0Y2ggfSBmcm9tICcuLi90b29scy5qcyc7XG5pbXBvcnQgeyBwYXJzZVJhd1F1ZXJ5IH0gZnJvbSAnLi4vdG9vbHMvcXVlcnkuanMnO1xuaW1wb3J0IHsgYnVpbGREZXN0aW5hdGlvblNlYXJjaCB9IGZyb20gJy4vZGVzdGluYXRpb24uanMnO1xuaW1wb3J0IHR5cGUge1xuICBBbnlSb3V0ZSxcbiAgUm91dGVFbnRyeSxcbiAgUm91dGluZ0NvbnRleHRUeXBlLFxuICBVbmtub3duRmlsdGVycyxcbiAgVW5rbm93blF1ZXJ5U2hhcGUsXG4gIFJhd1F1ZXJ5LFxuICBSb3V0ZXJBY3RpdmVMb2FkU3RhdGUsXG4gIFJvdXRlckxvYWRTdGF0ZSxcbn0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG50eXBlIFJvdXRlclF1ZXJ5U2NoZW1hID0gRmlsdGVyU2NoZW1hIHwgdW5kZWZpbmVkO1xuXG5leHBvcnQgdHlwZSBTdGF0aWNSb3V0ZXJMb2NhdGlvbiA9IHtcbiAgaGFzaD86IHN0cmluZztcbiAgcGF0aG5hbWU6IHN0cmluZztcbiAgc2VhcmNoPzogc3RyaW5nO1xufTtcblxuZXhwb3J0IHR5cGUgQ3JlYXRlU3RhdGljUm91dGVyT3B0aW9uczxUQ29udGV4dD4gPSB7XG4gIGNvbnRleHQ/OiBUQ29udGV4dDtcbiAgbG9jYXRpb246IFN0YXRpY1JvdXRlckxvY2F0aW9uO1xufTtcblxuZXhwb3J0IHR5cGUgQ3JlYXRlU3RhdGljUm91dGVyUmV0dXJuPFRDb250ZXh0LCBSIGV4dGVuZHMgQW55Um91dGVbXT4gPSB7XG4gIGNvbnRleHQ6IFJvdXRpbmdDb250ZXh0VHlwZTxcbiAgICBQYXJhbURhdGEsXG4gICAgUm91dGVyUXVlcnlTY2hlbWEsXG4gICAgVW5rbm93blF1ZXJ5U2hhcGUsXG4gICAgVENvbnRleHRcbiAgPjtcbiAgZW50cnk6IFJvdXRlRW50cnk8UGFyYW1EYXRhLCBSb3V0ZXJRdWVyeVNjaGVtYSwgVENvbnRleHQ+O1xuICByb3V0ZXM6IFI7XG59O1xuXG50eXBlIFBhcnNlZFNlYXJjaFN0YXRlID0ge1xuICBxdWVyeTogUmF3UXVlcnk7XG4gIGZpbHRlcnM/OiBVbmtub3duRmlsdGVycztcbiAgZmlsdGVyRGlhZ25vc3RpY3M/OiBGaWx0ZXJEaWFnbm9zdGljW107XG59O1xuXG4vKipcbiAqXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkUmVzb2x2ZWRMb2FkU3RhdGU8VENvbnRleHQ+KFxuICBwcmVwYXJlZE1hdGNoOiBSb3V0ZUVudHJ5PFxuICAgIFBhcmFtRGF0YSxcbiAgICBSb3V0ZXJRdWVyeVNjaGVtYSxcbiAgICBUQ29udGV4dFxuICA+WydwcmVwYXJlZE1hdGNoJ10sXG4pOiB7XG4gIGFjdGl2ZUxvYWRTdGF0ZTogUm91dGVyQWN0aXZlTG9hZFN0YXRlO1xuICBsb2FkU3RhdGU6IFJvdXRlckxvYWRTdGF0ZTtcbn0ge1xuICBjb25zdCBhY3RpdmVMb2FkU3RhdGU6IFJvdXRlckFjdGl2ZUxvYWRTdGF0ZSA9IHtcbiAgICBzdGF0dXM6ICdyZXNvbHZlZCcsXG4gICAgcGVuZGluZ0NvdW50OiAwLFxuICAgIHJlamVjdGVkQ291bnQ6IDAsXG4gICAgdmVyc2lvbjogMCxcbiAgfTtcbiAgcmV0dXJuIHtcbiAgICBhY3RpdmVMb2FkU3RhdGUsXG4gICAgbG9hZFN0YXRlOiB7XG4gICAgICAuLi5hY3RpdmVMb2FkU3RhdGUsXG4gICAgICBzZWdtZW50czogcHJlcGFyZWRNYXRjaC5zZWdtZW50cy5tYXAoKHNlZ21lbnQpID0+IHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICBwYXRoOiBzZWdtZW50LnBhdGgsXG4gICAgICAgICAgZnVsbFBhdGg6IHNlZ21lbnQuZnVsbFBhdGgsXG4gICAgICAgICAgc2VnbWVudEluZGV4OiBzZWdtZW50LnNlZ21lbnRJbmRleCxcbiAgICAgICAgICBwcmVwYXJlU3RhdHVzOiBzZWdtZW50LnByZXBhcmVkUmVzb3VyY2U/LmdldFN0YXR1cygpID8/ICdpZGxlJyxcbiAgICAgICAgICBjb2RlU3RhdHVzOiBzZWdtZW50LnJlc291cmNlUGFnZT8uZ2V0U3RhdHVzKCkgPz8gJ2lkbGUnLFxuICAgICAgICAgIHN0YXR1czogJ3Jlc29sdmVkJyxcbiAgICAgICAgfTtcbiAgICAgIH0pLFxuICAgIH0sXG4gIH07XG59XG5cbi8qKlxuICpcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplU2VhcmNoKHNlYXJjaDogc3RyaW5nIHwgdW5kZWZpbmVkKTogc3RyaW5nIHtcbiAgaWYgKHNlYXJjaCA9PSBudWxsIHx8IHNlYXJjaCA9PT0gJycpIHtcbiAgICByZXR1cm4gJyc7XG4gIH1cbiAgaWYgKHNlYXJjaC5zdGFydHNXaXRoKCc/JykpIHtcbiAgICByZXR1cm4gc2VhcmNoO1xuICB9XG4gIHJldHVybiBgPyR7c2VhcmNofWA7XG59XG5cbi8qKlxuICpcbiAqL1xuZnVuY3Rpb24gbm9ybWFsaXplU3RhdGljTG9jYXRpb24obG9jYXRpb246IFN0YXRpY1JvdXRlckxvY2F0aW9uKTogTG9jYXRpb24ge1xuICBsZXQgeyBwYXRobmFtZSB9ID0gbG9jYXRpb247XG4gIGlmICghcGF0aG5hbWUuc3RhcnRzV2l0aCgnLycpKSB7XG4gICAgcGF0aG5hbWUgPSBgLyR7cGF0aG5hbWV9YDtcbiAgfVxuICByZXR1cm4ge1xuICAgIGhhc2g6IGxvY2F0aW9uLmhhc2ggPz8gJycsXG4gICAgcGF0aG5hbWUsXG4gICAgc2VhcmNoOiBub3JtYWxpemVTZWFyY2gobG9jYXRpb24uc2VhcmNoKSxcbiAgfSBhcyBMb2NhdGlvbjtcbn1cblxuLyoqXG4gKlxuICovXG5mdW5jdGlvbiBmaW5kU3RhdGljTWF0Y2hlZFJvdXRlKFxuICByb3V0ZXM6IFJldHVyblR5cGU8dHlwZW9mIGJ1aWxkUm91dGVzPixcbiAgbG9jYXRpb246IExvY2F0aW9uLFxuKSB7XG4gIGZvciAoY29uc3Qgcm91dGUgb2Ygcm91dGVzKSB7XG4gICAgY29uc3QgbWF0Y2ggPSByb3V0ZS5tYXRjaEZ1bmN0aW9uKGxvY2F0aW9uLnBhdGhuYW1lKTtcbiAgICBpZiAobWF0Y2ggIT09IGZhbHNlKSB7XG4gICAgICBjb25zdCB7IHBhdGgsIHBhcmFtcyB9ID0gbWF0Y2g7XG4gICAgICByZXR1cm4ge1xuICAgICAgICBtYXRjaCxcbiAgICAgICAgcm91dGUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIHBhcmFtcyxcbiAgICAgIH07XG4gICAgfVxuICB9XG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqXG4gKi9cbmZ1bmN0aW9uIHBhcnNlU2VhcmNoU3RhdGUoXG4gIHNlYXJjaDogc3RyaW5nLFxuICBxdWVyeVNjaGVtYTogUm91dGVyUXVlcnlTY2hlbWEsXG4pOiBQYXJzZWRTZWFyY2hTdGF0ZSB7XG4gIGNvbnN0IHF1ZXJ5ID0gcGFyc2VSYXdRdWVyeShzZWFyY2gpO1xuICBpZiAocXVlcnlTY2hlbWEgPT0gbnVsbCkge1xuICAgIHJldHVybiB7IHF1ZXJ5IH07XG4gIH1cbiAgY29uc3QgcGFyc2VkID0gcGFyc2VGaWx0ZXJzKHNlYXJjaCwgcXVlcnlTY2hlbWEpO1xuICByZXR1cm4ge1xuICAgIHF1ZXJ5LFxuICAgIGZpbHRlcnM6IHBhcnNlZC5maWx0ZXJzLFxuICAgIGZpbHRlckRpYWdub3N0aWNzOiBwYXJzZWQuZGlhZ25vc3RpY3MsXG4gIH07XG59XG5cbi8qKlxuICpcbiAqL1xuZnVuY3Rpb24gY3JlYXRlU3RhdGljUm91dGluZ0NvbnRleHQ8VENvbnRleHQ+KFxuICBlbnRyeTogUm91dGVFbnRyeTxQYXJhbURhdGEsIFJvdXRlclF1ZXJ5U2NoZW1hLCBUQ29udGV4dD4sXG4gIGZsYXRSb3V0ZXM6IFJldHVyblR5cGU8dHlwZW9mIGJ1aWxkUm91dGVzPixcbik6IFJvdXRpbmdDb250ZXh0VHlwZTxcbiAgUGFyYW1EYXRhLFxuICBSb3V0ZXJRdWVyeVNjaGVtYSxcbiAgVW5rbm93blF1ZXJ5U2hhcGUsXG4gIFRDb250ZXh0XG4+IHtcbiAgcmV0dXJuIHtcbiAgICBidWlsZFNlYXJjaCh7IHBhdGhuYW1lLCBxdWVyeSwgZmlsdGVycyB9KSB7XG4gICAgICBjb25zdCB0YXJnZXRQYXRobmFtZSA9IHBhdGhuYW1lID8/IGVudHJ5LmxvY2F0aW9uLnBhdGhuYW1lO1xuICAgICAgY29uc3QgZGVzdGluYXRpb24gPSBmaW5kU3RhdGljTWF0Y2hlZFJvdXRlKGZsYXRSb3V0ZXMsIHtcbiAgICAgICAgLi4uZW50cnkubG9jYXRpb24sXG4gICAgICAgIHBhdGhuYW1lOiB0YXJnZXRQYXRobmFtZSxcbiAgICAgIH0pO1xuICAgICAgbGV0IHF1ZXJ5U2NoZW1hID0gZW50cnkuYWN0aXZlUXVlcnlTY2hlbWE7XG4gICAgICBpZiAoZGVzdGluYXRpb24gIT0gbnVsbCkge1xuICAgICAgICBxdWVyeVNjaGVtYSA9IGRlc3RpbmF0aW9uLnJvdXRlLnJvdXRlcy5hdCgtMSk/LnF1ZXJ5U2NoZW1hO1xuICAgICAgfVxuICAgICAgcmV0dXJuIGJ1aWxkRGVzdGluYXRpb25TZWFyY2goe1xuICAgICAgICBmaWx0ZXJzLFxuICAgICAgICBxdWVyeSxcbiAgICAgICAgcXVlcnlTY2hlbWEsXG4gICAgICB9KTtcbiAgICB9LFxuICAgIGdldDogKCkgPT4ge1xuICAgICAgcmV0dXJuIGVudHJ5O1xuICAgIH0sXG4gICAgaGlzdG9yeToge1xuICAgICAgaW5pdCgpIHt9LFxuICAgICAgcHVzaCgpIHtcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdTdGF0aWMgcm91dGVyIGNhbm5vdCBwdXNoIGhpc3RvcnknKTtcbiAgICAgIH0sXG4gICAgICBzZXQoKSB7XG4gICAgICAgIHRocm93IG5ldyBFcnJvcignU3RhdGljIHJvdXRlciBjYW5ub3QgcmVwbGFjZSBoaXN0b3J5Jyk7XG4gICAgICB9LFxuICAgICAgc3Vic2NyaWJlKCkge1xuICAgICAgICByZXR1cm4gKCkgPT4ge307XG4gICAgICB9LFxuICAgIH0gYXMgdW5rbm93biBhcyBSb3V0aW5nQ29udGV4dFR5cGU8XG4gICAgICBQYXJhbURhdGEsXG4gICAgICBSb3V0ZXJRdWVyeVNjaGVtYSxcbiAgICAgIFVua25vd25RdWVyeVNoYXBlLFxuICAgICAgVENvbnRleHRcbiAgICA+WydoaXN0b3J5J10sXG4gICAgbmF2aWdhdGUoKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ1N0YXRpYyByb3V0ZXIgY2Fubm90IG5hdmlnYXRlJyk7XG4gICAgfSxcbiAgICBwcmVsb2FkKCkge30sXG4gICAgcHJlbG9hZENvZGUoKSB7fSxcbiAgICBzdWJzY3JpYmUoKSB7XG4gICAgICByZXR1cm4gKCkgPT4ge307XG4gICAgfSxcbiAgfTtcbn1cblxuLyoqXG4gKlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlU3RhdGljUm91dGVyPFxuICBUQ29udGV4dCA9IHVua25vd24sXG4gIFIgZXh0ZW5kcyBBbnlSb3V0ZVtdID0gQW55Um91dGVbXSxcbj4oXG4gIHJvdXRlczogWy4uLlJdIHwgQW55Um91dGVbXSxcbiAgb3B0aW9uczogQ3JlYXRlU3RhdGljUm91dGVyT3B0aW9uczxUQ29udGV4dD4sXG4pOiBQcm9taXNlPENyZWF0ZVN0YXRpY1JvdXRlclJldHVybjxUQ29udGV4dCwgUj4+IHtcbiAgY29uc3QgbG9jYXRpb24gPSBub3JtYWxpemVTdGF0aWNMb2NhdGlvbihvcHRpb25zLmxvY2F0aW9uKTtcbiAgY29uc3QgZmxhdFJvdXRlcyA9IGJ1aWxkUm91dGVzKHJvdXRlcyk7XG4gIGNvbnN0IHJvdXRlID0gZmluZFN0YXRpY01hdGNoZWRSb3V0ZShmbGF0Um91dGVzLCBsb2NhdGlvbik7XG4gIGNvbnN0IGFjdGl2ZVF1ZXJ5U2NoZW1hID0gcm91dGU/LnJvdXRlLnJvdXRlcy5hdCgtMSk/LnF1ZXJ5U2NoZW1hO1xuICBjb25zdCBzZWFyY2hTdGF0ZSA9IHBhcnNlU2VhcmNoU3RhdGUobG9jYXRpb24uc2VhcmNoLCBhY3RpdmVRdWVyeVNjaGVtYSk7XG4gIGNvbnN0IHJvdXRlQ29udGV4dCA9IG9wdGlvbnMuY29udGV4dCBhcyBUQ29udGV4dDtcbiAgY29uc3QgcHJlcGFyZWRNYXRjaCA9IHByZXBhcmVNYXRjaChcbiAgICByb3V0ZSxcbiAgICBzZWFyY2hTdGF0ZS5xdWVyeSxcbiAgICB1bmRlZmluZWQsXG4gICAgcm91dGVDb250ZXh0LFxuICAgIHVuZGVmaW5lZCxcbiAgICB7XG4gICAgICByYXdRdWVyeTogc2VhcmNoU3RhdGUucXVlcnksXG4gICAgICBmaWx0ZXJzOiBzZWFyY2hTdGF0ZS5maWx0ZXJzLFxuICAgIH0sXG4gICk7XG5cbiAgYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgcHJlcGFyZWRNYXRjaC5zZWdtZW50cy5tYXAoYXN5bmMgKHNlZ21lbnQpID0+IHtcbiAgICAgIGF3YWl0IHNlZ21lbnQucHJlcGFyZWRSZXNvdXJjZT8ubG9hZCgpO1xuICAgICAgYXdhaXQgc2VnbWVudC5yZXNvdXJjZVBhZ2U/LmxvYWQoKTtcbiAgICB9KSxcbiAgKTtcbiAgY29uc3QgeyBhY3RpdmVMb2FkU3RhdGUsIGxvYWRTdGF0ZSB9ID0gYnVpbGRSZXNvbHZlZExvYWRTdGF0ZShwcmVwYXJlZE1hdGNoKTtcblxuICBjb25zdCBlbnRyeTogUm91dGVFbnRyeTxQYXJhbURhdGEsIFJvdXRlclF1ZXJ5U2NoZW1hLCBUQ29udGV4dD4gPSB7XG4gICAgYWN0aXZlUXVlcnlTY2hlbWEsXG4gICAgYWN0aXZlTG9hZFN0YXRlLFxuICAgIGNvbnRleHQ6IHJvdXRlQ29udGV4dCxcbiAgICBmaWx0ZXJEaWFnbm9zdGljczogc2VhcmNoU3RhdGUuZmlsdGVyRGlhZ25vc3RpY3MsXG4gICAgZmlsdGVyczogc2VhcmNoU3RhdGUuZmlsdGVycyxcbiAgICBmb3JjZVJlcmVuZGVyOiBmYWxzZSxcbiAgICBsb2NhdGlvbixcbiAgICBwcmVwYXJlZE1hdGNoLFxuICAgIHF1ZXJ5OiBzZWFyY2hTdGF0ZS5xdWVyeSxcbiAgICByYXdTZWFyY2g6IGxvY2F0aW9uLnNlYXJjaCxcbiAgICByb3V0ZSxcbiAgICBsb2FkU3RhdGUsXG4gIH07XG5cbiAgY29uc3Qgcm91dGVyQ29udGV4dCA9IGNyZWF0ZVN0YXRpY1JvdXRpbmdDb250ZXh0KGVudHJ5LCBmbGF0Um91dGVzKTtcblxuICByZXR1cm4ge1xuICAgIGNvbnRleHQ6IHJvdXRlckNvbnRleHQsXG4gICAgZW50cnksXG4gICAgcm91dGVzOiByb3V0ZXMgYXMgUixcbiAgfTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgY3JlYXRlU3RhdGljUm91dGVyO1xuIl19
@@ -0,0 +1,25 @@
1
+ import type { FilterSchema, RouterDestinationInput, UnknownFilters, UnknownQueryShape } from '../types.js';
2
+ export type ResolvedRouterDestination = {
3
+ pathname: string;
4
+ search: string;
5
+ hash: string;
6
+ href: string;
7
+ isExternal: boolean;
8
+ };
9
+ export declare function normalizeSearch(search: string | undefined): string;
10
+ export declare function normalizeHash(hash: string | undefined): string;
11
+ export declare function buildDestinationSearch(input: {
12
+ filters?: UnknownFilters;
13
+ query?: UnknownQueryShape;
14
+ querySchema?: FilterSchema;
15
+ }): string;
16
+ export declare function resolveRouterDestination(input: {
17
+ destination: RouterDestinationInput;
18
+ currentHref?: string;
19
+ buildSearch: (input: {
20
+ pathname: string;
21
+ filters?: UnknownFilters;
22
+ query?: UnknownQueryShape;
23
+ }) => string;
24
+ }): ResolvedRouterDestination;
25
+ //# sourceMappingURL=destination.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"destination.d.ts","sourceRoot":"","sources":["../../../src/routing/destination.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EAEZ,sBAAsB,EACtB,cAAc,EACd,iBAAiB,EAClB,MAAM,aAAa,CAAC;AAGrB,MAAM,MAAM,yBAAyB,GAAG;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAGF,wBAAgB,eAAe,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAIlE;AAGD,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAI9D;AAGD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE;IAC5C,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,WAAW,CAAC,EAAE,YAAY,CAAC;CAC5B,GAAG,MAAM,CAMT;AA2DD,wBAAgB,wBAAwB,CAAC,KAAK,EAAE;IAC9C,WAAW,EAAE,sBAAsB,CAAC;IACpC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,CAAC,KAAK,EAAE;QACnB,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,cAAc,CAAC;QACzB,KAAK,CAAC,EAAE,iBAAiB,CAAC;KAC3B,KAAK,MAAM,CAAC;CACd,GAAG,yBAAyB,CAoC5B"}
@@ -0,0 +1,110 @@
1
+ import buildCombinedSearch from '../tools/buildCombinedSearch.js';
2
+ export function normalizeSearch(search) {
3
+ if (search == null || search === '')
4
+ return '';
5
+ if (search.startsWith('?'))
6
+ return search;
7
+ return `?${search}`;
8
+ }
9
+ export function normalizeHash(hash) {
10
+ if (hash == null || hash === '')
11
+ return '';
12
+ if (hash.startsWith('#'))
13
+ return hash;
14
+ return `#${hash}`;
15
+ }
16
+ export function buildDestinationSearch(input) {
17
+ return buildCombinedSearch({
18
+ filters: input.filters,
19
+ query: input.query,
20
+ querySchema: input.querySchema,
21
+ });
22
+ }
23
+ const hasScheme = (value) => {
24
+ return /^[a-z][a-z\d+.-]*:/i.test(value) || value.startsWith('//');
25
+ };
26
+ const resolveStringDestination = (value, currentHref) => {
27
+ if (value === '#') {
28
+ return {
29
+ pathname: '#',
30
+ search: '',
31
+ hash: '',
32
+ href: '#',
33
+ isExternal: false,
34
+ };
35
+ }
36
+ const fallbackBase = 'http://plumile.local/';
37
+ const base = currentHref ?? fallbackBase;
38
+ let url;
39
+ try {
40
+ url = new URL(value, base);
41
+ }
42
+ catch {
43
+ return {
44
+ pathname: value,
45
+ search: '',
46
+ hash: '',
47
+ href: value,
48
+ isExternal: true,
49
+ };
50
+ }
51
+ const baseUrl = new URL(base, fallbackBase);
52
+ const isExternal = hasScheme(value) && url.origin !== baseUrl.origin;
53
+ if (isExternal || !['http:', 'https:'].includes(url.protocol)) {
54
+ return {
55
+ pathname: value,
56
+ search: '',
57
+ hash: '',
58
+ href: value,
59
+ isExternal: true,
60
+ };
61
+ }
62
+ const { pathname } = url;
63
+ const { search } = url;
64
+ const { hash } = url;
65
+ return {
66
+ pathname,
67
+ search,
68
+ hash,
69
+ href: `${pathname}${search}${hash}`,
70
+ isExternal: false,
71
+ };
72
+ };
73
+ export function resolveRouterDestination(input) {
74
+ if (typeof input.destination === 'string') {
75
+ return resolveStringDestination(input.destination, input.currentHref);
76
+ }
77
+ const destination = input.destination;
78
+ const base = resolveStringDestination(destination.pathname, input.currentHref);
79
+ if (base.isExternal)
80
+ return base;
81
+ let search;
82
+ if ('search' in destination && destination.search != null) {
83
+ search = normalizeSearch(destination.search);
84
+ }
85
+ else if (!('filters' in destination) && !('query' in destination)) {
86
+ search = base.search;
87
+ }
88
+ else {
89
+ let filters;
90
+ let query;
91
+ if ('filters' in destination)
92
+ filters = destination.filters;
93
+ if ('query' in destination)
94
+ query = destination.query;
95
+ search = input.buildSearch({
96
+ pathname: base.pathname,
97
+ filters,
98
+ query,
99
+ });
100
+ }
101
+ const hash = normalizeHash(destination.hash ?? base.hash);
102
+ return {
103
+ pathname: base.pathname,
104
+ search,
105
+ hash,
106
+ href: `${base.pathname}${search}${hash}`,
107
+ isExternal: false,
108
+ };
109
+ }
110
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZGVzdGluYXRpb24uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy9kZXN0aW5hdGlvbi50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFPQSxPQUFPLG1CQUFtQixNQUFNLGlDQUFpQyxDQUFDO0FBV2xFLE1BQU0sVUFBVSxlQUFlLENBQUMsTUFBMEI7SUFDeEQsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sS0FBSyxFQUFFO1FBQUUsT0FBTyxFQUFFLENBQUM7SUFDL0MsSUFBSSxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUFFLE9BQU8sTUFBTSxDQUFDO0lBQzFDLE9BQU8sSUFBSSxNQUFNLEVBQUUsQ0FBQztBQUN0QixDQUFDO0FBR0QsTUFBTSxVQUFVLGFBQWEsQ0FBQyxJQUF3QjtJQUNwRCxJQUFJLElBQUksSUFBSSxJQUFJLElBQUksSUFBSSxLQUFLLEVBQUU7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUMzQyxJQUFJLElBQUksQ0FBQyxVQUFVLENBQUMsR0FBRyxDQUFDO1FBQUUsT0FBTyxJQUFJLENBQUM7SUFDdEMsT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO0FBQ3BCLENBQUM7QUFHRCxNQUFNLFVBQVUsc0JBQXNCLENBQUMsS0FJdEM7SUFDQyxPQUFPLG1CQUFtQixDQUFDO1FBQ3pCLE9BQU8sRUFBRSxLQUFLLENBQUMsT0FBTztRQUN0QixLQUFLLEVBQUUsS0FBSyxDQUFDLEtBQUs7UUFDbEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO0tBQy9CLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRCxNQUFNLFNBQVMsR0FBRyxDQUFDLEtBQWEsRUFBVyxFQUFFO0lBQzNDLE9BQU8scUJBQXFCLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEtBQUssQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDckUsQ0FBQyxDQUFDO0FBRUYsTUFBTSx3QkFBd0IsR0FBRyxDQUMv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QUksS0FBb0MsQ0FBQztRQUN6QyxJQUFJLFNBQVMsSUFBSSxXQUFXO1lBQUUsT0FBTyxHQUFHLFdBQVcsQ0FBQyxPQUFPLENBQUM7UUFDNUQsSUFBSSxPQUFPLElBQUksV0FBVztZQUFFLEtBQUssR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDO1FBQ3RELE1BQU0sR0FBRyxLQUFLLENBQUMsV0FBVyxDQUFDO1lBQ3pCLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtZQUN2QixPQUFPO1lBQ1AsS0FBSztTQUNOLENBQUMsQ0FBQztJQUNMLENBQUM7SUFDRCxNQUFNLElBQUksR0FBRyxhQUFhLENBQUMsV0FBVyxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDMUQsT0FBTztRQUNMLFFBQVEsRUFBRSxJQUFJLENBQUMsUUFBUTtRQUN2QixNQUFNO1FBQ04sSUFBSTtRQUNKLElBQUksRUFBRSxHQUFHLElBQUksQ0FBQyxRQUFRLEdBQUcsTUFBTSxHQUFHLElBQUksRUFBRTtRQUN4QyxVQUFVLEVBQUUsS0FBSztLQUNsQixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHtcbiAgRmlsdGVyU2NoZW1hLFxuICBSb3V0ZXJEZXN0aW5hdGlvbixcbiAgUm91dGVyRGVzdGluYXRpb25JbnB1dCxcbiAgVW5rbm93bkZpbHRlcnMsXG4gIFVua25vd25RdWVyeVNoYXBlLFxufSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQgYnVpbGRDb21iaW5lZFNlYXJjaCBmcm9tICcuLi90b29scy9idWlsZENvbWJpbmVkU2VhcmNoLmpzJztcblxuZXhwb3J0IHR5cGUgUmVzb2x2ZWRSb3V0ZXJEZXN0aW5hdGlvbiA9IHtcbiAgcGF0aG5hbWU6IHN0cmluZztcbiAgc2VhcmNoOiBzdHJpbmc7XG4gIGhhc2g6IHN0cmluZztcbiAgaHJlZjogc3RyaW5nO1xuICBpc0V4dGVybmFsOiBib29sZWFuO1xufTtcblxuLyoqIE5vcm1hbGl6ZXMgYW4gb3B0aW9uYWwgc2VhcmNoIHN0cmluZyBmb3IgdXNlIGluIGEgcm91dGVyIGxvY2F0aW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIG5vcm1hbGl6ZVNlYXJjaChzZWFyY2g6IHN0cmluZyB8IHVuZGVmaW5lZCk6IHN0cmluZyB7XG4gIGlmIChzZWFyY2ggPT0gbnVsbCB8fCBzZWFyY2ggPT09ICcnKSByZXR1cm4gJyc7XG4gIGlmIChzZWFyY2guc3RhcnRzV2l0aCgnPycpKSByZXR1cm4gc2VhcmNoO1xuICByZXR1cm4gYD8ke3NlYXJjaH1gO1xufVxuXG4vKiogTm9ybWFsaXplcyBhbiBvcHRpb25hbCBoYXNoIGZvciB1c2UgaW4gYSByb3V0ZXIgbG9jYXRpb24uICovXG5leHBvcnQgZnVuY3Rpb24gbm9ybWFsaXplSGFzaChoYXNoOiBzdHJpbmcgfCB1bmRlZmluZWQpOiBzdHJpbmcge1xuICBpZiAoaGFzaCA9PSBudWxsIHx8IGhhc2ggPT09ICcnKSByZXR1cm4gJyc7XG4gIGlmIChoYXNoLnN0YXJ0c1dpdGgoJyMnKSkgcmV0dXJuIGhhc2g7XG4gIHJldHVybiBgIyR7aGFzaH1gO1xufVxuXG4vKiogU2VyaWFsaXplcyBleHBsaWNpdCBmaWx0ZXJzIGFuZCByYXcgcXVlcnkgdmFsdWVzIGZvciBhIGRlc3RpbmF0aW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkRGVzdGluYXRpb25TZWFyY2goaW5wdXQ6IHtcbiAgZmlsdGVycz86IFVua25vd25GaWx0ZXJzO1xuICBxdWVyeT86IFVua25vd25RdWVyeVNoYXBlO1xuICBxdWVyeVNjaGVtYT86IEZpbHRlclNjaGVtYTtcbn0pOiBzdHJpbmcge1xuICByZXR1cm4gYnVpbGRDb21iaW5lZFNlYXJjaCh7XG4gICAgZmlsdGVyczogaW5wdXQuZmlsdGVycyxcbiAgICBxdWVyeTogaW5wdXQucXVlcnksXG4gICAgcXVlcnlTY2hlbWE6IGlucHV0LnF1ZXJ5U2NoZW1hLFxuICB9KTtcbn1cblxuY29uc3QgaGFzU2NoZW1lID0gKHZhbHVlOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgcmV0dXJuIC9eW2Etel1bYS16XFxkKy4tXSo6L2kudGVzdCh2YWx1ZSkgfHwgdmFsdWUuc3RhcnRzV2l0aCgnLy8nKTtcbn07XG5cbmNvbnN0IHJlc29sdmVTdHJpbmdEZXN0aW5hdGlvbiA9IChcbiAgdmFsdWU6IHN0cmluZyxcbiAgY3VycmVudEhyZWY6IHN0cmluZyB8IHVuZGVmaW5lZCxcbik6IFJlc29sdmVkUm91dGVyRGVzdGluYXRpb24gPT4ge1xuICBpZiAodmFsdWUgPT09ICcjJykge1xuICAgIHJldHVybiB7XG4gICAgICBwYXRobmFtZTogJyMnLFxuICAgICAgc2VhcmNoOiAnJyxcbiAgICAgIGhhc2g6ICcnLFxuICAgICAgaHJlZjogJyMnLFxuICAgICAgaXNFeHRlcm5hbDogZmFsc2UsXG4gICAgfTtcbiAgfVxuICBjb25zdCBmYWxsYmFja0Jhc2UgPSAnaHR0cDovL3BsdW1pbGUubG9jYWwvJztcbiAgY29uc3QgYmFzZSA9IGN1cnJlbnRIcmVmID8/IGZhbGxiYWNrQmFzZTtcbiAgbGV0IHVybDogVVJMO1xuICB0cnkge1xuICAgIHVybCA9IG5ldyBVUkwodmFsdWUsIGJhc2UpO1xuICB9IGNhdGNoIHtcbiAgICByZXR1cm4ge1xuICAgICAgcGF0aG5hbWU6IHZhbHVlLFxuICAgICAgc2VhcmNoOiAnJyxcbiAgICAgIGhhc2g6ICcnLFxuICAgICAgaHJlZjogdmFsdWUsXG4gICAgICBpc0V4dGVybmFsOiB0cnVlLFxuICAgIH07XG4gIH1cblxuICBjb25zdCBiYXNlVXJsID0gbmV3IFVSTChiYXNlLCBmYWxsYmFja0Jhc2UpO1xuICBjb25zdCBpc0V4dGVybmFsID0gaGFzU2NoZW1lKHZhbHVlKSAmJiB1cmwub3JpZ2luICE9PSBiYXNlVXJsLm9yaWdpbjtcbiAgaWYgKGlzRXh0ZXJuYWwgfHwgIVsnaHR0cDonLCAnaHR0cHM6J10uaW5jbHVkZXModXJsLnByb3RvY29sKSkge1xuICAgIHJldHVybiB7XG4gICAgICBwYXRobmFtZTogdmFsdWUsXG4gICAgICBzZWFyY2g6ICcnLFxuICAgICAgaGFzaDogJycsXG4gICAgICBocmVmOiB2YWx1ZSxcbiAgICAgIGlzRXh0ZXJuYWw6IHRydWUsXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IHsgcGF0aG5hbWUgfSA9IHVybDtcbiAgY29uc3QgeyBzZWFyY2ggfSA9IHVybDtcbiAgY29uc3QgeyBoYXNoIH0gPSB1cmw7XG4gIHJldHVybiB7XG4gICAgcGF0aG5hbWUsXG4gICAgc2VhcmNoLFxuICAgIGhhc2gsXG4gICAgaHJlZjogYCR7cGF0aG5hbWV9JHtzZWFyY2h9JHtoYXNofWAsXG4gICAgaXNFeHRlcm5hbDogZmFsc2UsXG4gIH07XG59O1xuXG4vKiogUmVzb2x2ZXMgYSBkZXN0aW5hdGlvbiBpbnRvIHRoZSBsb2NhdGlvbiB1c2VkIGJ5IGxpbmtzIGFuZCBuYXZpZ2F0aW9uLiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHJlc29sdmVSb3V0ZXJEZXN0aW5hdGlvbihpbnB1dDoge1xuICBkZXN0aW5hdGlvbjogUm91dGVyRGVzdGluYXRpb25JbnB1dDtcbiAgY3VycmVudEhyZWY/OiBzdHJpbmc7XG4gIGJ1aWxkU2VhcmNoOiAoaW5wdXQ6IHtcbiAgICBwYXRobmFtZTogc3RyaW5nO1xuICAgIGZpbHRlcnM/OiBVbmtub3duRmlsdGVycztcbiAgICBxdWVyeT86IFVua25vd25RdWVyeVNoYXBlO1xuICB9KSA9PiBzdHJpbmc7XG59KTogUmVzb2x2ZWRSb3V0ZXJEZXN0aW5hdGlvbiB7XG4gIGlmICh0eXBlb2YgaW5wdXQuZGVzdGluYXRpb24gPT09ICdzdHJpbmcnKSB7XG4gICAgcmV0dXJuIHJlc29sdmVTdHJpbmdEZXN0aW5hdGlvbihpbnB1dC5kZXN0aW5hdGlvbiwgaW5wdXQuY3VycmVudEhyZWYpO1xuICB9XG5cbiAgY29uc3QgZGVzdGluYXRpb24gPSBpbnB1dC5kZXN0aW5hdGlvbiBhcyBSb3V0ZXJEZXN0aW5hdGlvbjtcbiAgY29uc3QgYmFzZSA9IHJlc29sdmVTdHJpbmdEZXN0aW5hdGlvbihcbiAgICBkZXN0aW5hdGlvbi5wYXRobmFtZSxcbiAgICBpbnB1dC5jdXJyZW50SHJlZixcbiAgKTtcbiAgaWYgKGJhc2UuaXNFeHRlcm5hbCkgcmV0dXJuIGJhc2U7XG5cbiAgbGV0IHNlYXJjaDogc3RyaW5nO1xuICBpZiAoJ3NlYXJjaCcgaW4gZGVzdGluYXRpb24gJiYgZGVzdGluYXRpb24uc2VhcmNoICE9IG51bGwpIHtcbiAgICBzZWFyY2ggPSBub3JtYWxpemVTZWFyY2goZGVzdGluYXRpb24uc2VhcmNoKTtcbiAgfSBlbHNlIGlmICghKCdmaWx0ZXJzJyBpbiBkZXN0aW5hdGlvbikgJiYgISgncXVlcnknIGluIGRlc3RpbmF0aW9uKSkge1xuICAgIHNlYXJjaCA9IGJhc2Uuc2VhcmNoO1xuICB9IGVsc2Uge1xuICAgIGxldCBmaWx0ZXJzOiBVbmtub3duRmlsdGVycyB8IHVuZGVmaW5lZDtcbiAgICBsZXQgcXVlcnk6IFVua25vd25RdWVyeVNoYXBlIHwgdW5kZWZpbmVkO1xuICAgIGlmICgnZmlsdGVycycgaW4gZGVzdGluYXRpb24pIGZpbHRlcnMgPSBkZXN0aW5hdGlvbi5maWx0ZXJzO1xuICAgIGlmICgncXVlcnknIGluIGRlc3RpbmF0aW9uKSBxdWVyeSA9IGRlc3RpbmF0aW9uLnF1ZXJ5O1xuICAgIHNlYXJjaCA9IGlucHV0LmJ1aWxkU2VhcmNoKHtcbiAgICAgIHBhdGhuYW1lOiBiYXNlLnBhdGhuYW1lLFxuICAgICAgZmlsdGVycyxcbiAgICAgIHF1ZXJ5LFxuICAgIH0pO1xuICB9XG4gIGNvbnN0IGhhc2ggPSBub3JtYWxpemVIYXNoKGRlc3RpbmF0aW9uLmhhc2ggPz8gYmFzZS5oYXNoKTtcbiAgcmV0dXJuIHtcbiAgICBwYXRobmFtZTogYmFzZS5wYXRobmFtZSxcbiAgICBzZWFyY2gsXG4gICAgaGFzaCxcbiAgICBocmVmOiBgJHtiYXNlLnBhdGhuYW1lfSR7c2VhcmNofSR7aGFzaH1gLFxuICAgIGlzRXh0ZXJuYWw6IGZhbHNlLFxuICB9O1xufVxuIl19
@@ -1,6 +1,7 @@
1
1
  export { default as createRouter } from './createRouter.js';
2
2
  export { createStaticRouter, default as createStaticRouterDefault, type CreateStaticRouterOptions, type CreateStaticRouterReturn, type StaticRouterLocation, } from './createStaticRouter.js';
3
- export { default as Link } from './Link.js';
3
+ export { default as Link, type LinkProps, type LinkHoverPreload, type LinkMouseDownPreload, } from './Link.js';
4
+ export { resolveRouterDestination, type ResolvedRouterDestination, } from './destination.js';
4
5
  export { default as RouteComponent } from './RouteComponent.js';
5
6
  export { default as RouteComponentWrapper } from './RouteComponentWrapper.js';
6
7
  export { default as RouterRenderer } from './RouterRenderer.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,EAAE,OAAO,IAAI,IAAI,EAAE,MAAM,WAAW,CAAC;AAG5C,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAG9E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGhE,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"}
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;AAG1B,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGhE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAG9E,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAGhE,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"}
@@ -1,6 +1,7 @@
1
1
  export { default as createRouter } from './createRouter.js';
2
2
  export { createStaticRouter, default as createStaticRouterDefault, } from './createStaticRouter.js';
3
- export { default as Link } from './Link.js';
3
+ export { default as Link, } from './Link.js';
4
+ export { resolveRouterDestination, } from './destination.js';
4
5
  export { default as RouteComponent } from './RouteComponent.js';
5
6
  export { default as RouteComponentWrapper } from './RouteComponentWrapper.js';
6
7
  export { default as RouterRenderer } from './RouterRenderer.js';
@@ -15,4 +16,4 @@ export { default as useFilterDiagnostics } from './useFilterDiagnostics.js';
15
16
  export { default as useSearchParams } from './useSearchParams.js';
16
17
  export { useRouteTelemetry, } from './useRouteTelemetry.js';
17
18
  export { default as buildCombinedSearch } from '../tools/buildCombinedSearch.js';
18
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxJQUFJLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsT0FBTyxJQUFJLHlCQUF5QixHQUlyQyxNQUFNLHlCQUF5QixDQUFDO0FBSWpDLE9BQU8sRUFBRSxPQUFPLElBQUksSUFBSSxFQUFFLE1BQU0sV0FBVyxDQUFDO0FBRzVDLE9BQU8sRUFBRSxPQUFPLElBQUksY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHaEUsT0FBTyxFQUFFLE9BQU8sSUFBSSxxQkFBcUIsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBRzlFLE9BQU8sRUFBRSxPQUFPLElBQUksY0FBYyxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFHaEUsT0FBTyxFQUFFLE9BQU8sSUFBSSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUVoRSxPQUFPLEVBQUUsT0FBTyxJQUFJLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUVwRCxPQUFPLEVBQUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTFELE9BQU8sRUFBRSxPQUFPLElBQUksV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFHMUQsT0FBTyxFQUFFLE9BQU8sSUFBSSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUUxRCxPQUFPLEVBQUUsT0FBTyxJQUFJLGFBQWEsRUFBRSxNQUFNLG9CQUFvQixDQUFDO0FBRTlELE9BQU8sRUFBRSxPQUFPLElBQUksVUFBVSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFFeEQsT0FBTyxFQUFFLE9BQU8sSUFBSSxvQkFBb0IsRUFBRSxNQUFNLDJCQUEyQixDQUFDO0FBRTVFLE9BQU8sRUFBRSxPQUFPLElBQUksZUFBZSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEUsT0FBTyxFQUNMLGlCQUFpQixHQUdsQixNQUFNLHdCQUF3QixDQUFDO0FBR2hDLE9BQU8sRUFBRSxPQUFPLElBQUksbUJBQW1CLEVBQUUsTUFBTSxpQ0FBaUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8vIE1haW4gcm91dGVyIGZhY3RvcnkgZnVuY3Rpb25cbmV4cG9ydCB7IGRlZmF1bHQgYXMgY3JlYXRlUm91dGVyIH0gZnJvbSAnLi9jcmVhdGVSb3V0ZXIuanMnO1xuZXhwb3J0IHtcbiAgY3JlYXRlU3RhdGljUm91dGVyLFxuICBkZWZhdWx0IGFzIGNyZWF0ZVN0YXRpY1JvdXRlckRlZmF1bHQsXG4gIHR5cGUgQ3JlYXRlU3RhdGljUm91dGVyT3B0aW9ucyxcbiAgdHlwZSBDcmVhdGVTdGF0aWNSb3V0ZXJSZXR1cm4sXG4gIHR5cGUgU3RhdGljUm91dGVyTG9jYXRpb24sXG59IGZyb20gJy4vY3JlYXRlU3RhdGljUm91dGVyLmpzJztcblxuLy8gTmF2aWdhdGlvbiBjb21wb25lbnQgd2l0aCBwcmVsb2FkaW5nIHN1cHBvcnRcbi8vIFN0YW5kYXJkIC5qcyBzcGVjaWZpZXIgKGJ1aWxkIHBpcGVsaW5lIHJld3JpdGVzIGZyb20gVFMgc291cmNlKVxuZXhwb3J0IHsgZGVmYXVsdCBhcyBMaW5rIH0gZnJvbSAnLi9MaW5rLmpzJztcblxuLy8gUm91dGUgY29tcG9uZW50IHdyYXBwZXIgZm9yIGhhbmRsaW5nIGluZGl2aWR1YWwgcm91dGVzXG5leHBvcnQgeyBkZWZhdWx0IGFzIFJvdXRlQ29tcG9uZW50IH0gZnJvbSAnLi9Sb3V0ZUNvbXBvbmVudC5qcyc7XG5cbi8vIEludGVybmFsIHdyYXBwZXIgY29tcG9uZW50IGZvciByb3V0ZSByZW5kZXJpbmdcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUm91dGVDb21wb25lbnRXcmFwcGVyIH0gZnJvbSAnLi9Sb3V0ZUNvbXBvbmVudFdyYXBwZXIuanMnO1xuXG4vLyBNYWluIHJlbmRlcmVyIGNvbXBvbmVudCB0aGF0IGRpc3BsYXlzIGN1cnJlbnQgcm91dGVcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUm91dGVyUmVuZGVyZXIgfSBmcm9tICcuL1JvdXRlclJlbmRlcmVyLmpzJztcblxuLy8gUmVhY3QgY29udGV4dCBmb3Igc2hhcmluZyByb3V0ZXIgc3RhdGVcbmV4cG9ydCB7IGRlZmF1bHQgYXMgUm91dGluZ0NvbnRleHQgfSBmcm9tICcuL1JvdXRpbmdDb250ZXh0LmpzJztcbi8vIEhvb2sgdG8gYWNjZXNzIHJhdyBxdWVyeSBwYXJhbWV0ZXJzXG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZVF1ZXJ5IH0gZnJvbSAnLi91c2VRdWVyeS5qcyc7XG4vLyBIb29rIHRvIGFjY2VzcyB0aGUgY3VycmVudCBsb2NhdGlvblxuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VMb2NhdGlvbiB9IGZyb20gJy4vdXNlTG9jYXRpb24uanMnO1xuLy8gSG9vayB0byBhY2Nlc3MgdGhlIGN1cnJlbnQgcGF0aG5hbWVcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlUGF0aG5hbWUgfSBmcm9tICcuL3VzZVBhdGhuYW1lLmpzJztcbi8vIEhvb2sgdG8gYWNjZXNzIHR5cGVkIHF1ZXJ5IHBhcmFtZXRlcnNcbi8vIEhvb2sgdG8gbmF2aWdhdGUgcHJvZ3JhbW1hdGljYWxseVxuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VOYXZpZ2F0ZSB9IGZyb20gJy4vdXNlTmF2aWdhdGUuanMnO1xuLy8gSG9vayB0byBiaW5kIGEgc3BlY2lmaWMgcXVlcnkgcGFyYW0gdG8gY29tcG9uZW50IHN0YXRlXG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZVF1ZXJ5U3RhdGUgfSBmcm9tICcuL3VzZVF1ZXJ5U3RhdGUuanMnO1xuLy8gSG9vayB0byBhY2Nlc3MgYW5kIG11dGF0ZSBmaWx0ZXJzXG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZUZpbHRlcnMgfSBmcm9tICcuL3VzZUZpbHRlcnMuanMnO1xuLy8gSG9vayB0byBhY2Nlc3MgZmlsdGVyIGRpYWdub3N0aWNzXG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZUZpbHRlckRpYWdub3N0aWNzIH0gZnJvbSAnLi91c2VGaWx0ZXJEaWFnbm9zdGljcy5qcyc7XG4vLyBIb29rIHRvIG1hbmFnZSBVUkxTZWFyY2hQYXJhbXNcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlU2VhcmNoUGFyYW1zIH0gZnJvbSAnLi91c2VTZWFyY2hQYXJhbXMuanMnO1xuZXhwb3J0IHtcbiAgdXNlUm91dGVUZWxlbWV0cnksXG4gIHR5cGUgUm91dGVUZWxlbWV0cnlFdmVudCxcbiAgdHlwZSBVc2VSb3V0ZVRlbGVtZXRyeU9wdGlvbnMsXG59IGZyb20gJy4vdXNlUm91dGVUZWxlbWV0cnkuanMnO1xuXG4vLyBQdWJsaWMgaGVscGVyIGZvciB1bmlmaWVkIGZpbHRlci1iYXNlZCBzZWFyY2ggYnVpbGRpbmcgKFBoYXNlIDIpXG5leHBvcnQgeyBkZWZhdWx0IGFzIGJ1aWxkQ29tYmluZWRTZWFyY2ggfSBmcm9tICcuLi90b29scy9idWlsZENvbWJpbmVkU2VhcmNoLmpzJztcbiJdfQ==
19
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsT0FBTyxJQUFJLFlBQVksRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQzVELE9BQU8sRUFDTCxrQkFBa0IsRUFDbEIsT0FBTyxJQUFJLHlCQUF5QixHQUlyQyxNQUFNLHlCQUF5QixDQUFDO0FBSWpDLE9BQU8sRUFDTCxPQUFPLElBQUksSUFBSSxHQUloQixNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQ0wsd0JBQXdCLEdBRXpCLE1BQU0sa0JBQWtCLENBQUM7QUFHMUIsT0FBTyxFQUFFLE9BQU8sSUFBSSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsT0FBTyxJQUFJLHFCQUFxQixFQUFFLE1BQU0sNEJBQTRCLENBQUM7QUFHOUUsT0FBTyxFQUFFLE9BQU8sSUFBSSxjQUFjLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUdoRSxPQUFPLEVBQUUsT0FBTyxJQUFJLGNBQWMsRUFBRSxNQUFNLHFCQUFxQixDQUFDO0FBRWhFLE9BQU8sRUFBRSxPQUFPLElBQUksUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRXBELE9BQU8sRUFBRSxPQUFPLElBQUksV0FBVyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFMUQsT0FBTyxFQUFFLE9BQU8sSUFBSSxXQUFXLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUcxRCxPQUFPLEVBQUUsT0FBTyxJQUFJLFdBQVcsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRTFELE9BQU8sRUFBRSxPQUFPLElBQUksYUFBYSxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFFOUQsT0FBTyxFQUFFLE9BQU8sSUFBSSxVQUFVLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUV4RCxPQUFPLEVBQUUsT0FBTyxJQUFJLG9CQUFvQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFNUUsT0FBTyxFQUFFLE9BQU8sSUFBSSxlQUFlLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNsRSxPQUFPLEVBQ0wsaUJBQWlCLEdBR2xCLE1BQU0sd0JBQXdCLENBQUM7QUFHaEMsT0FBTyxFQUFFLE9BQU8sSUFBSSxtQkFBbUIsRUFBRSxNQUFNLGlDQUFpQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLy8gTWFpbiByb3V0ZXIgZmFjdG9yeSBmdW5jdGlvblxuZXhwb3J0IHsgZGVmYXVsdCBhcyBjcmVhdGVSb3V0ZXIgfSBmcm9tICcuL2NyZWF0ZVJvdXRlci5qcyc7XG5leHBvcnQge1xuICBjcmVhdGVTdGF0aWNSb3V0ZXIsXG4gIGRlZmF1bHQgYXMgY3JlYXRlU3RhdGljUm91dGVyRGVmYXVsdCxcbiAgdHlwZSBDcmVhdGVTdGF0aWNSb3V0ZXJPcHRpb25zLFxuICB0eXBlIENyZWF0ZVN0YXRpY1JvdXRlclJldHVybixcbiAgdHlwZSBTdGF0aWNSb3V0ZXJMb2NhdGlvbixcbn0gZnJvbSAnLi9jcmVhdGVTdGF0aWNSb3V0ZXIuanMnO1xuXG4vLyBOYXZpZ2F0aW9uIGNvbXBvbmVudCB3aXRoIHByZWxvYWRpbmcgc3VwcG9ydFxuLy8gU3RhbmRhcmQgLmpzIHNwZWNpZmllciAoYnVpbGQgcGlwZWxpbmUgcmV3cml0ZXMgZnJvbSBUUyBzb3VyY2UpXG5leHBvcnQge1xuICBkZWZhdWx0IGFzIExpbmssXG4gIHR5cGUgTGlua1Byb3BzLFxuICB0eXBlIExpbmtIb3ZlclByZWxvYWQsXG4gIHR5cGUgTGlua01vdXNlRG93blByZWxvYWQsXG59IGZyb20gJy4vTGluay5qcyc7XG5leHBvcnQge1xuICByZXNvbHZlUm91dGVyRGVzdGluYXRpb24sXG4gIHR5cGUgUmVzb2x2ZWRSb3V0ZXJEZXN0aW5hdGlvbixcbn0gZnJvbSAnLi9kZXN0aW5hdGlvbi5qcyc7XG5cbi8vIFJvdXRlIGNvbXBvbmVudCB3cmFwcGVyIGZvciBoYW5kbGluZyBpbmRpdmlkdWFsIHJvdXRlc1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBSb3V0ZUNvbXBvbmVudCB9IGZyb20gJy4vUm91dGVDb21wb25lbnQuanMnO1xuXG4vLyBJbnRlcm5hbCB3cmFwcGVyIGNvbXBvbmVudCBmb3Igcm91dGUgcmVuZGVyaW5nXG5leHBvcnQgeyBkZWZhdWx0IGFzIFJvdXRlQ29tcG9uZW50V3JhcHBlciB9IGZyb20gJy4vUm91dGVDb21wb25lbnRXcmFwcGVyLmpzJztcblxuLy8gTWFpbiByZW5kZXJlciBjb21wb25lbnQgdGhhdCBkaXNwbGF5cyBjdXJyZW50IHJvdXRlXG5leHBvcnQgeyBkZWZhdWx0IGFzIFJvdXRlclJlbmRlcmVyIH0gZnJvbSAnLi9Sb3V0ZXJSZW5kZXJlci5qcyc7XG5cbi8vIFJlYWN0IGNvbnRleHQgZm9yIHNoYXJpbmcgcm91dGVyIHN0YXRlXG5leHBvcnQgeyBkZWZhdWx0IGFzIFJvdXRpbmdDb250ZXh0IH0gZnJvbSAnLi9Sb3V0aW5nQ29udGV4dC5qcyc7XG4vLyBIb29rIHRvIGFjY2VzcyByYXcgcXVlcnkgcGFyYW1ldGVyc1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VRdWVyeSB9IGZyb20gJy4vdXNlUXVlcnkuanMnO1xuLy8gSG9vayB0byBhY2Nlc3MgdGhlIGN1cnJlbnQgbG9jYXRpb25cbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlTG9jYXRpb24gfSBmcm9tICcuL3VzZUxvY2F0aW9uLmpzJztcbi8vIEhvb2sgdG8gYWNjZXNzIHRoZSBjdXJyZW50IHBhdGhuYW1lXG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZVBhdGhuYW1lIH0gZnJvbSAnLi91c2VQYXRobmFtZS5qcyc7XG4vLyBIb29rIHRvIGFjY2VzcyB0eXBlZCBxdWVyeSBwYXJhbWV0ZXJzXG4vLyBIb29rIHRvIG5hdmlnYXRlIHByb2dyYW1tYXRpY2FsbHlcbmV4cG9ydCB7IGRlZmF1bHQgYXMgdXNlTmF2aWdhdGUgfSBmcm9tICcuL3VzZU5hdmlnYXRlLmpzJztcbi8vIEhvb2sgdG8gYmluZCBhIHNwZWNpZmljIHF1ZXJ5IHBhcmFtIHRvIGNvbXBvbmVudCBzdGF0ZVxuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VRdWVyeVN0YXRlIH0gZnJvbSAnLi91c2VRdWVyeVN0YXRlLmpzJztcbi8vIEhvb2sgdG8gYWNjZXNzIGFuZCBtdXRhdGUgZmlsdGVyc1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VGaWx0ZXJzIH0gZnJvbSAnLi91c2VGaWx0ZXJzLmpzJztcbi8vIEhvb2sgdG8gYWNjZXNzIGZpbHRlciBkaWFnbm9zdGljc1xuZXhwb3J0IHsgZGVmYXVsdCBhcyB1c2VGaWx0ZXJEaWFnbm9zdGljcyB9IGZyb20gJy4vdXNlRmlsdGVyRGlhZ25vc3RpY3MuanMnO1xuLy8gSG9vayB0byBtYW5hZ2UgVVJMU2VhcmNoUGFyYW1zXG5leHBvcnQgeyBkZWZhdWx0IGFzIHVzZVNlYXJjaFBhcmFtcyB9IGZyb20gJy4vdXNlU2VhcmNoUGFyYW1zLmpzJztcbmV4cG9ydCB7XG4gIHVzZVJvdXRlVGVsZW1ldHJ5LFxuICB0eXBlIFJvdXRlVGVsZW1ldHJ5RXZlbnQsXG4gIHR5cGUgVXNlUm91dGVUZWxlbWV0cnlPcHRpb25zLFxufSBmcm9tICcuL3VzZVJvdXRlVGVsZW1ldHJ5LmpzJztcblxuLy8gUHVibGljIGhlbHBlciBmb3IgdW5pZmllZCBmaWx0ZXItYmFzZWQgc2VhcmNoIGJ1aWxkaW5nIChQaGFzZSAyKVxuZXhwb3J0IHsgZGVmYXVsdCBhcyBidWlsZENvbWJpbmVkU2VhcmNoIH0gZnJvbSAnLi4vdG9vbHMvYnVpbGRDb21iaW5lZFNlYXJjaC5qcyc7XG4iXX0=
@@ -2,6 +2,7 @@ export default function useNavigate<TQuery extends Record<string, unknown> = Rec
2
2
  pathname?: string;
3
3
  query?: TQuery;
4
4
  filters?: TFilters;
5
+ hash?: string;
5
6
  replace?: boolean;
6
7
  }) => void;
7
8
  //# sourceMappingURL=useNavigate.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"useNavigate.d.ts","sourceRoot":"","sources":["../../../src/routing/useNavigate.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,UAAU,WAAW,CACjC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/D,CAAC,IAAI,EAAE;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,KAAK,IAAI,CAST"}
1
+ {"version":3,"file":"useNavigate.d.ts","sourceRoot":"","sources":["../../../src/routing/useNavigate.ts"],"names":[],"mappings":"AAQA,MAAM,CAAC,OAAO,UAAU,WAAW,CACjC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,QAAQ,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC/D,CAAC,IAAI,EAAE;IACV,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,QAAQ,CAAC;IACnB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,KAAK,IAAI,CAST"}
@@ -8,4 +8,4 @@ export default function useNavigate() {
8
8
  ctx.navigate(opts);
9
9
  }, [ctx]);
10
10
  }
11
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlTmF2aWdhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy91c2VOYXZpZ2F0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNoRCxPQUFPLGNBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQU9qRCxNQUFNLENBQUMsT0FBTyxVQUFVLFdBQVc7SUFTakMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sV0FBVyxDQUNoQixDQUFDLElBQUksRUFBRSxFQUFFO1FBQ1AsSUFBSSxHQUFHLElBQUksSUFBSTtZQUFFLE9BQU87UUFDeEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQixDQUFDLEVBQ0QsQ0FBQyxHQUFHLENBQUMsQ0FDTixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJvdXRpbmdDb250ZXh0IGZyb20gJy4vUm91dGluZ0NvbnRleHQuanMnO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHJvdXRlcidzIGBuYXZpZ2F0ZWAgaGVscGVyIGJvdW5kIHRvIHRoZSBjdXJyZW50IGNvbnRleHQuXG4gKlxuICogQHJldHVybnMgRnVuY3Rpb24gYWNjZXB0aW5nIG9wdGlvbmFsIHBhdGhuYW1lLCB0eXBlZCBxdWVyeSBhbmQgcmVwbGFjZSBmbGFnLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VOYXZpZ2F0ZTxcbiAgVFF1ZXJ5IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgVEZpbHRlcnMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuPigpOiAob3B0czoge1xuICBwYXRobmFtZT86IHN0cmluZztcbiAgcXVlcnk/OiBUUXVlcnk7XG4gIGZpbHRlcnM/OiBURmlsdGVycztcbiAgcmVwbGFjZT86IGJvb2xlYW47XG59KSA9PiB2b2lkIHtcbiAgY29uc3QgY3R4ID0gdXNlQ29udGV4dChSb3V0aW5nQ29udGV4dCk7XG4gIHJldHVybiB1c2VDYWxsYmFjayhcbiAgICAob3B0cykgPT4ge1xuICAgICAgaWYgKGN0eCA9PSBudWxsKSByZXR1cm47XG4gICAgICBjdHgubmF2aWdhdGUob3B0cyk7XG4gICAgfSxcbiAgICBbY3R4XSxcbiAgKTtcbn1cbiJdfQ==
11
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXNlTmF2aWdhdGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvcm91dGluZy91c2VOYXZpZ2F0ZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUNoRCxPQUFPLGNBQWMsTUFBTSxxQkFBcUIsQ0FBQztBQU9qRCxNQUFNLENBQUMsT0FBTyxVQUFVLFdBQVc7SUFVakMsTUFBTSxHQUFHLEdBQUcsVUFBVSxDQUFDLGNBQWMsQ0FBQyxDQUFDO0lBQ3ZDLE9BQU8sV0FBVyxDQUNoQixDQUFDLElBQUksRUFBRSxFQUFFO1FBQ1AsSUFBSSxHQUFHLElBQUksSUFBSTtZQUFFLE9BQU87UUFDeEIsR0FBRyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUNyQixDQUFDLEVBQ0QsQ0FBQyxHQUFHLENBQUMsQ0FDTixDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHVzZUNhbGxiYWNrLCB1c2VDb250ZXh0IH0gZnJvbSAncmVhY3QnO1xuaW1wb3J0IFJvdXRpbmdDb250ZXh0IGZyb20gJy4vUm91dGluZ0NvbnRleHQuanMnO1xuXG4vKipcbiAqIFJldHVybnMgdGhlIHJvdXRlcidzIGBuYXZpZ2F0ZWAgaGVscGVyIGJvdW5kIHRvIHRoZSBjdXJyZW50IGNvbnRleHQuXG4gKlxuICogQHJldHVybnMgRnVuY3Rpb24gYWNjZXB0aW5nIG9wdGlvbmFsIHBhdGhuYW1lLCB0eXBlZCBxdWVyeSBhbmQgcmVwbGFjZSBmbGFnLlxuICovXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiB1c2VOYXZpZ2F0ZTxcbiAgVFF1ZXJ5IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgVEZpbHRlcnMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuPigpOiAob3B0czoge1xuICBwYXRobmFtZT86IHN0cmluZztcbiAgcXVlcnk/OiBUUXVlcnk7XG4gIGZpbHRlcnM/OiBURmlsdGVycztcbiAgaGFzaD86IHN0cmluZztcbiAgcmVwbGFjZT86IGJvb2xlYW47XG59KSA9PiB2b2lkIHtcbiAgY29uc3QgY3R4ID0gdXNlQ29udGV4dChSb3V0aW5nQ29udGV4dCk7XG4gIHJldHVybiB1c2VDYWxsYmFjayhcbiAgICAob3B0cykgPT4ge1xuICAgICAgaWYgKGN0eCA9PSBudWxsKSByZXR1cm47XG4gICAgICBjdHgubmF2aWdhdGUob3B0cyk7XG4gICAgfSxcbiAgICBbY3R4XSxcbiAgKTtcbn1cbiJdfQ==
@@ -1,5 +1,5 @@
1
1
  import type { ParamData } from 'path-to-regexp';
2
- import { type FilterSchema, type PrepareResult, type PreparedMatch, type PreparedRouteSegment, type Redirect, type ResolvedPreparedMatch, type Route, type RouteNode, type RouterMatchedRoute } from './types.js';
2
+ import { type FilterSchema, type PrepareResult, type PreparedMatch, type PreparedRouteSegment, type Redirect, type ResolvedPreparedMatch, type Route, type RouteNode, type RouterMatchedRoute, type RawQuery, type UnknownFilters } from './types.js';
3
3
  import type { RouterPrepareEvent, RouterNavigationSource, RouterLocationSnapshot } from './instrumentation/Instrumentation.js';
4
4
  import type { FlatRoute } from './builder.js';
5
5
  type PrepareInstrumentation = {
@@ -12,6 +12,10 @@ type PrepareReuseInput<TContext> = {
12
12
  previousParams?: ParamData;
13
13
  sameSearch?: boolean;
14
14
  };
15
+ type PrepareSearchState = {
16
+ rawQuery?: RawQuery;
17
+ filters?: UnknownFilters;
18
+ };
15
19
  declare const areSegmentParamsEqual: (paramNames: readonly string[], left: ParamData | undefined, right: ParamData) => boolean;
16
20
  export declare function getMatchedRoute<TParams extends ParamData>(routes: FlatRoute<TParams>[], location: Location): RouterMatchedRoute<TParams> | null;
17
21
  declare function buildHighlightId(routePath: string | undefined, index: number, moduleId?: string): string;
@@ -19,8 +23,8 @@ export declare const __testTools: {
19
23
  readonly buildHighlightId: typeof buildHighlightId;
20
24
  readonly areSegmentParamsEqual: typeof areSegmentParamsEqual;
21
25
  };
22
- export declare function prepareMatch<TParams extends ParamData, TContext = unknown>(match: RouterMatchedRoute<TParams> | null, query?: Record<string, unknown>, instrumentation?: PrepareInstrumentation, context?: TContext, reuse?: PrepareReuseInput<TContext>): PreparedMatch<TParams, TContext>;
26
+ 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): PreparedMatch<TParams, TContext>;
23
27
  export declare function prepareMatchAsync<TParams extends ParamData, TContext = unknown>(match: RouterMatchedRoute<TParams> | null, query?: Record<string, unknown>, instrumentation?: PrepareInstrumentation, context?: TContext): Promise<ResolvedPreparedMatch<TParams, TContext>>;
24
- export declare function r<TContext = unknown, TPrepared extends PrepareResult = PrepareResult, TVariables extends ParamData = ParamData, TQuery extends Record<string, unknown> = Record<string, unknown>, TChildren extends readonly (RouteNode | Redirect)[] | undefined = readonly (RouteNode | Redirect)[] | undefined>(route: Route<TContext, TPrepared, TVariables, TQuery, FilterSchema | undefined, TChildren>): Route<TContext, TPrepared, TVariables, TQuery, FilterSchema | undefined, TChildren>;
28
+ 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>;
25
29
  export {};
26
30
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"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"}
package/lib/esm/tools.js CHANGED
@@ -67,7 +67,7 @@ export const __testTools = {
67
67
  buildHighlightId,
68
68
  areSegmentParamsEqual,
69
69
  };
70
- export function prepareMatch(match, query, instrumentation, context, reuse) {
70
+ export function prepareMatch(match, query, instrumentation, context, reuse, searchState) {
71
71
  if (match == null) {
72
72
  return {
73
73
  match,
@@ -117,6 +117,8 @@ export function prepareMatch(match, query, instrumentation, context, reuse) {
117
117
  resourcePage,
118
118
  variables: { ...match.params },
119
119
  query: query ?? {},
120
+ rawQuery: searchState?.rawQuery ?? query ?? {},
121
+ filters: searchState?.filters,
120
122
  });
121
123
  });
122
124
  const preparedLoad = preparedResource.load();
@@ -234,4 +236,4 @@ export async function prepareMatchAsync(match, query, instrumentation, context)
234
236
  export function r(route) {
235
237
  return route;
236
238
  }
237
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUJBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBY25FLE1BQU0saUJBQWlCLEdBQUcsQ0FDeEIsSUFBdUIsRUFDdkIsS0FBd0IsRUFDZixFQUFFO0lBQ1gsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUNoRCxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLEVBQUUsQ0FBQztZQUNsRCxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxJQUFJLElBQUksQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQ2pDLE9BQU8sS0FBSyxDQUFDO1FBQ2YsQ0FBQztRQUNELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtZQUNqQyxPQUFPLEtBQUssS0FBSyxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDaEMsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBQ0QsT0FBTyxJQUFJLEtBQUssS0FBSyxDQUFDO0FBQ3hCLENBQUMsQ0FBQztBQUVGLE1BQU0scUJBQXFCLEdBQUcsQ0FDNUIsVUFBNkIsRUFDN0IsSUFBMkIsRUFDM0IsS0FBZ0IsRUFDUCxFQUFFO0lBQ1gsSUFBSSxVQUFVLENBQUMsTUFBTSxLQUFLLENBQUMsRUFBRSxDQUFDO1FBQzVCLE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQztJQUNELElBQUksSUFBSSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2pCLE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQztJQUNE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SSxFQUFFLENBQUM7UUFDakQsQ0FBQztRQUNELE9BQU87WUFDTCxTQUFTLEVBQUUsS0FBSyxDQUFDLFNBQVM7WUFDMUIsSUFBSSxFQUFFLEtBQUssQ0FBQyxJQUFJO1lBQ2hCLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxRQUFRO1lBQ1IsVUFBVSxFQUFFLEtBQUssQ0FBQyxVQUFVO1lBQzVCLE1BQU0sRUFBRSxLQUFLLENBQUMsTUFBTTtZQUNwQixZQUFZLEVBQUUsS0FBSyxDQUFDLFlBQVk7WUFDaEMsZ0JBQWdCLEVBQUUsS0FBSyxDQUFDLGdCQUFnQjtZQUN4QyxRQUFRLEVBQUUsS0FBSyxDQUFDLFFBQVE7WUFDeEIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1lBQzlCLFdBQVcsRUFBRSxLQUFLLENBQUMsV0FBVztTQUMvQixDQUFDO0lBQ0osQ0FBQyxDQUNGLENBQ0YsQ0FBQztJQUVGLE9BQU87UUFDTCxLQUFLLEVBQUUsYUFBYSxDQUFDLEtBQUs7UUFDMUIsUUFBUTtRQUNSLE1BQU0sRUFBRSxRQUFRO0tBQ2pCLENBQUM7QUFDSixDQUFDO0FBT0QsTUFBTSxVQUFVLENBQUMsQ0FRZixLQU9DO0lBU0QsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXJhbURhdGEgfSBmcm9tICdwYXRoLXRvLXJlZ2V4cCc7XG5cbmltcG9ydCB7XG4gIHR5cGUgRmlsdGVyU2NoZW1hLFxuICB0eXBlIFByZXBhcmVSZXN1bHQsXG4gIHR5cGUgUHJlcGFyZWRNYXRjaCxcbiAgdHlwZSBQcmVwYXJlZE1hdGNoUm91dGUsXG4gIHR5cGUgUHJlcGFyZWRSb3V0ZVNlZ21lbnQsXG4gIHR5cGUgUmVkaXJlY3QsXG4gIHR5cGUgUmVzb2x2ZWRQcmVwYXJlZE1hdGNoLFxuICB0eXBlIFJlc29sdmVkUHJlcGFyZWRSb3V0ZVNlZ21lbnQsXG4gIHR5cGUgUm91dGUsXG4gIHR5cGUgUm91dGVOb2RlLFxuICB0eXBlIFJvdXRlck1hdGNoZWRSb3V0ZSxcbn0gZnJvbSAnLi90eXBlcy5qcyc7XG5cbmltcG9ydCB0eXBlIHtcbiAgUm91dGVyUHJlcGFyZUV2ZW50LFxuICBSb3V0ZXJOYXZpZ2F0aW9uU291cmNlLFxuICBSb3V0ZXJMb2NhdGlvblNuYXBzaG90LFxufSBmcm9tICcuL2luc3RydW1lbnRhdGlvbi9JbnN0cnVtZW50YXRpb24uanMnO1xuXG5pbXBvcnQgdHlwZSB7IEZsYXRSb3V0ZSB9IGZyb20gJy4vYnVpbGRlci5qcyc7XG5pbXBvcnQgeyBjcmVhdGVQcmVwYXJlZFZhbHVlUmVzb3VyY2UgfSBmcm9tICcuL3ByZXBhcmVSZXNvdXJjZS5qcyc7XG5cbnR5cGUgUHJlcGFyZUluc3RydW1lbnRhdGlvbiA9IHtcbiAgZW1pdDogKGV2ZW50OiBSb3V0ZXJQcmVwYXJlRXZlbnQpID0+IHZvaWQ7XG4gIHNvdXJjZTogUm91dGVyTmF2aWdhdGlvblNvdXJjZTtcbiAgbG9jYXRpb246IFJvdXRlckxvY2F0aW9uU25hcHNob3Q7XG59O1xuXG50eXBlIFByZXBhcmVSZXVzZUlucHV0PFRDb250ZXh0PiA9IHtcbiAgcHJldmlvdXNTZWdtZW50cz86IFByZXBhcmVkUm91dGVTZWdtZW50PFRDb250ZXh0PltdO1xuICBwcmV2aW91c1BhcmFtcz86IFBhcmFtRGF0YTtcbiAgc2FtZVNlYXJjaD86IGJvb2xlYW47XG59O1xuXG5jb25zdCBpc1BhcmFtVmFsdWVFcXVhbCA9IChcbiAgbGVmdDogUGFyYW1EYXRhW3N0cmluZ10sXG4gIHJpZ2h0OiBQYXJhbURhdGFbc3RyaW5nXSxcbik6IGJvb2xlYW4gPT4ge1xuICBpZiAoQXJyYXkuaXNBcnJheShsZWZ0KSB8fCBBcnJheS5pc0FycmF5KHJpZ2h0KSkge1xuICAgIGlmICghQXJyYXkuaXNBcnJheShsZWZ0KSB8fCAhQXJyYXkuaXNBcnJheShyaWdodCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgaWYgKGxlZnQubGVuZ3RoICE9PSByaWdodC5sZW5ndGgpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgcmV0dXJuIGxlZnQuZXZlcnkoKHZhbHVlLCBpbmRleCkgPT4ge1xuICAgICAgcmV0dXJuIHZhbHVlID09PSByaWdodFtpbmRleF07XG4gICAgfSk7XG4gIH1cbiAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0O1xufTtcblxuY29uc3QgYXJlU2VnbWVudFBhcmFtc0VxdWFsID0gKFxuICBwYXJhbU5hbWVzOiByZWFkb25seSBzdHJpbmdbXSxcbiAgbGVmdDogUGFyYW1EYXRhIHwgdW5kZWZpbmVkLFxuICByaWdodDogUGFyYW1EYXRhLFxuKTogYm9vbGVhbiA9PiB7XG4gIGlmIChwYXJhbU5hbWVzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB0cnVlO1xuICB9XG4gIGlmIChsZWZ0ID09IG51bGwpIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH1cbiAgcmV0dXJuIHBhcmFtTmFtZXMuZXZlcnkoKHBhcmFtTmFtZSkgPT4ge1xuICAgIHJldHVybiBpc1BhcmFtVmFsdWVFcXVhbChsZWZ0W3BhcmFtTmFtZV0sIHJpZ2h0W3BhcmFtTmFtZV0pO1xuICB9KTtcbn07XG5cbi8qKiBFbWl0cyBwcmVwYXJlIGluc3RydW1lbnRhdGlvbiB3aXRob3V0IGFsbG93aW5nIGluc3RydW1lbnRhdGlvbiBmYWlsdXJlcyB0byBhZmZlY3Qgcm91dGluZy4gKi9cbmZ1bmN0aW9uIGVtaXRQcmVwYXJlSW5zdHJ1bWVudGF0aW9uKFxuICBpbnN0cnVtZW50YXRpb246IFByZXBhcmVJbnN0cnVtZW50YXRpb24gfCB1bmRlZmluZWQsXG4gIGV2ZW50OiBSb3V0ZXJQcmVwYXJlRXZlbnQsXG4pOiB2b2lkIHtcbiAgaWYgKGluc3RydW1lbnRhdGlvbiA9PSBudWxsKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIHRyeSB7XG4gICAgaW5zdHJ1bWVudGF0aW9uLmVtaXQoZXZlbnQpO1xuICB9IGNhdGNoIHtcbiAgICAvLyBJbnN0cnVtZW50YXRpb24gbXVzdCBuZXZlciBicmVhayByb3V0aW5nIG9yIHByZXBhcmUgbGlmZWN5Y2xlLlxuICB9XG59XG5cbi8qKlxuICogRmluZHMgdGhlIGZpcnN0IGZsYXQgcm91dGUgbWF0Y2hpbmcgdGhlIHByb3ZpZGVkIGxvY2F0aW9uLlxuICpcbiAqIEBwYXJhbSByb3V0ZXMgLSBGbGF0dGVuZWQgcm91dGUgbGlzdCB0byBldmFsdWF0ZS5cbiAqIEBwYXJhbSBsb2NhdGlvbiAtIEJyb3dzZXIgbG9jYXRpb24gd2hvc2UgcGF0aG5hbWUgc2hvdWxkIGJlIG1hdGNoZWQuXG4gKiBAcmV0dXJucyBNYXRjaGVkIHJvdXRlIHdpdGggcGFyYW1zIG9yIGBudWxsYCBpZiBub25lIG1hdGNoLlxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWF0Y2hlZFJvdXRlPFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGE+KFxuICByb3V0ZXM6IEZsYXRSb3V0ZTxUUGFyYW1zPltdLFxuICBsb2NhdGlvbjogTG9jYXRpb24sXG4pOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFBhcmFtcz4gfCBudWxsIHtcbiAgZm9yIChjb25zdCByb3V0ZSBvZiByb3V0ZXMpIHtcbiAgICBjb25zdCBtYXRjaCA9IHJvdXRlLm1hdGNoRnVuY3Rpb24obG9jYXRpb24ucGF0aG5hbWUpO1xuICAgIGlmIChtYXRjaCAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHsgcGF0aCwgcGFyYW1zIH0gPSBtYXRjaDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1hdGNoLFxuICAgICAgICByb3V0ZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBEZXJpdmVzIGEgZGV0ZXJtaW5pc3RpYyBpZGVudGlmaWVyIHRoYXQgbGlua3MgcHJlcGFyZWQgcm91dGVzIHRvIERPTSBtYXJrZXJzLlxuICovXG5mdW5jdGlvbiBidWlsZEhpZ2hsaWdodElkKFxuICByb3V0ZVBhdGg6IHN0cmluZyB8IHVuZGVmaW5lZCxcbiAgaW5kZXg6IG51bWJlcixcbiAgbW9kdWxlSWQ/OiBzdHJpbmcsXG4pOiBzdHJpbmcge1xuICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgaWYgKHR5cGVvZiBtb2R1bGVJZCA9PT0gJ3N0cmluZycgJiYgbW9kdWxlSWQudHJpbSgpICE9PSAnJykge1xuICAgIHBhcnRzLnB1c2goYG1vZHVsZToke21vZHVsZUlkfWApO1xuICB9XG4gIGlmICh0eXBlb2Ygcm91dGVQYXRoID09PSAnc3RyaW5nJyAmJiByb3V0ZVBhdGgudHJpbSgpICE9PSAnJykge1xuICAgIHBhcnRzLnB1c2goYHBhdGg6JHtyb3V0ZVBhdGh9YCk7XG4gIH1cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkge1xuICAgIHBhcnRzLnB1c2goJ3JvdXRlJyk7XG4gIH1cbiAgcGFydHMucHVzaChgaW5kZXg6JHtpbmRleH1gKTtcbiAgcmV0dXJuIHBhcnRzLmpvaW4oJ3wnKTtcbn1cblxuZXhwb3J0IGNvbnN0IF9fdGVzdFRvb2xzID0ge1xuICBidWlsZEhpZ2hsaWdodElkLFxuICBhcmVTZWdtZW50UGFyYW1zRXF1YWwsXG59IGFzIGNvbnN0O1xuXG4vKipcbiAqIFByZXBhcmVzIGEgbWF0Y2hlZCByb3V0ZSBieSBleGVjdXRpbmcgYHByZXBhcmVgIGNhbGxiYWNrcyBhbmQgcmVzb2x2aW5nIHJlc291cmNlIHBhZ2VzLlxuICpcbiAqIEBwYXJhbSBtYXRjaCAtIE1hdGNoZWQgcm91dGUgZGVzY3JpcHRvciAob3IgYG51bGxgIHdoZW4gbm90aGluZyBtYXRjaGVkKS5cbiAqIEBwYXJhbSBxdWVyeSAtIE9wdGlvbmFsIHF1ZXJ5IG9iamVjdCBmb3J3YXJkZWQgdG8gcHJlcGFyZSBmdW5jdGlvbnMuXG4gKiBAcGFyYW0gY29udGV4dCAtIE9wdGlvbmFsIHJvdXRlciBjb250ZXh0IGZvcndhcmRlZCB0byBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqIEByZXR1cm5zIFByZXBhcmVkIGhpZXJhcmNoeSByZWFkeSBmb3IgdGhlIHJlbmRlcmVyLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZU1hdGNoPFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGEsIFRDb250ZXh0ID0gdW5rbm93bj4oXG4gIG1hdGNoOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFBhcmFtcz4gfCBudWxsLFxuICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBpbnN0cnVtZW50YXRpb24/OiBQcmVwYXJlSW5zdHJ1bWVudGF0aW9uLFxuICBjb250ZXh0PzogVENvbnRleHQsXG4gIHJldXNlPzogUHJlcGFyZVJldXNlSW5wdXQ8VENvbnRleHQ+LFxuKTogUHJlcGFyZWRNYXRjaDxUUGFyYW1zLCBUQ29udGV4dD4ge1xuICAvLyBOT1RFOiBSdW50aW1lIHJldGFpbnMgYSBnZW5lcmljIFByZXBhcmVkUmVzdWx0OyB0eXBlLWxldmVsIG5hcnJvd2luZyBpcyBhY2hpZXZlZCBleHRlcm5hbGx5XG4gIC8vIHRocm91Z2ggdGhlIHJvdXRlIHVuaW9uIGFuZCBQcmVwYXJlZEFjY2VzcyBoZWxwZXJzLiBXZSBpbnRlbnRpb25hbGx5IGF2b2lkIGluamVjdGluZ1xuICAvLyBnZW5lcmljIHBhcmFtZXRlcnMgaGVyZSB0byBrZWVwIHJ1bnRpbWUgbGlnaHR3ZWlnaHQgd2hpbGUgc3RpbGwgZW5hYmxpbmcgY29tcGlsZS10aW1lXG4gIC8vIGRpc2NyaW1pbmF0aW9uIGluIHVzZXJsYW5kIHZpYSBjcmVhdGVSb3V0ZXIgZ2VuZXJpY3MuXG4gIGlmIChtYXRjaCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1hdGNoLFxuICAgICAgc2VnbWVudHM6IFtdLFxuICAgICAgcm91dGVzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgbWF0Y2hlZFJvdXRlID0gbWF0Y2gucm91dGU7XG5cbiAgY29uc3Qgc2VnbWVudHM6IFByZXBhcmVkUm91dGVTZWdtZW50PFRDb250ZXh0PltdID0gbWF0Y2gucm91dGUucm91dGVzLm1hcChcbiAgICAocm91dGUsIHJvdXRlSW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcHJlcGFyZSxcbiAgICAgICAgcXVlcnlTY2hlbWEsXG4gICAgICAgIHJlc291cmNlUGFnZSxcbiAgICAgICAgcmVuZGVyLFxuICAgICAgICBzdXNwZW5zZUJvdW5kYXJ5LFxuICAgICAgICBmYWxsYmFjayxcbiAgICAgIH0gPSByb3V0ZTtcbiAgICAgIGNvbnN0IHJvdXRlU2VnbWVudCA9IG1hdGNoLnJvdXRlLnJvdXRlU2VnbWVudHM/Lltyb3V0ZUluZGV4XTtcbiAgICAgIGNvbnN0IHByZXZpb3VzU2VnbWVudCA9IHJldXNlPy5wcmV2aW91c1NlZ21lbnRzPy5bcm91dGVJbmRleF07XG4gICAgICBpZiAoXG4gICAgICAgIHByZXZpb3VzU2VnbWVudD8ucm91dGVOb2RlID09PSByb3V0ZSAmJlxuICAgICAgICAocmV1c2U/LnNhbWVTZWFyY2ggPT09IHRydWUgfHxcbiAgICAgICAgICByb3V0ZS5wcmVwYXJlU2VhcmNoQmVoYXZpb3IgPT09ICdwYXRoJyB8fFxuICAgICAgICAgIHByZXBhcmUgPT0gbnVsbCkgJiZcbiAgICAgICAgYXJlU2VnbWVudFBhcmFtc0VxdWFsKFxuICAgICAgICAgIHJvdXRlU2VnbWVudD8ucGFyYW1OYW1lcyA/PyBbXSxcbiAgICAgICAgICByZXVzZT8ucHJldmlvdXNQYXJhbXMsXG4gICAgICAgICAgbWF0Y2gucGFyYW1zLFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzU2VnbWVudDtcbiAgICAgIH1cblxuICAgICAgbGV0IG1vZHVsZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAoXG4gICAgICAgIHJlc291cmNlUGFnZSAhPSBudWxsICYmXG4gICAgICAgIHR5cGVvZiByZXNvdXJjZVBhZ2UuZ2V0TW9kdWxlSWQgPT09ICdmdW5jdGlvbidcbiAgICAgICkge1xuICAgICAgICBjb25zdCByZXNvbHZlZE1vZHVsZUlkID0gcmVzb3VyY2VQYWdlLmdldE1vZHVsZUlkKCk7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzb2x2ZWRNb2R1bGVJZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBtb2R1bGVJZCA9IHJlc29sdmVkTW9kdWxlSWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGV0IHByZXBhcmVTdGFydGVkQXQgPSAwO1xuICAgICAgaWYgKGluc3RydW1lbnRhdGlvbiAhPSBudWxsKSB7XG4gICAgICAgIHByZXBhcmVTdGFydGVkQXQgPSBEYXRlLm5vdygpO1xuICAgICAgICBlbWl0UHJlcGFyZUluc3RydW1lbnRhdGlvbihpbnN0cnVtZW50YXRpb24sIHtcbiAgICAgICAgICBraW5kOiAncHJlcGFyZS1zdGFydCcsXG4gICAgICAgICAgc291cmNlOiBpbnN0cnVtZW50YXRpb24uc291cmNlLFxuICAgICAgICAgIHRpbWVzdGFtcDogcHJlcGFyZVN0YXJ0ZWRBdCxcbiAgICAgICAgICBsb2NhdGlvbjogaW5zdHJ1bWVudGF0aW9uLmxvY2F0aW9uLFxuICAgICAgICAgIHJvdXRlUGF0aDogcGF0aCxcbiAgICAgICAgICBtb2R1bGVJZCxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwcmVwYXJlZFJlc291cmNlOiBQcmVwYXJlZE1hdGNoUm91dGVbJ3ByZXBhcmVkUmVzb3VyY2UnXTtcbiAgICAgIGlmIChwcmVwYXJlICE9IG51bGwpIHtcbiAgICAgICAgcHJlcGFyZWRSZXNvdXJjZSA9IGNyZWF0ZVByZXBhcmVkVmFsdWVSZXNvdXJjZSgoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHByZXBhcmUoe1xuICAgICAgICAgICAgbWF0Y2gsXG4gICAgICAgICAgICBtYXRjaGVkUm91dGUsXG4gICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0IGFzIFRDb250ZXh0LFxuICAgICAgICAgICAgcmVzb3VyY2VQYWdlLFxuICAgICAgICAgICAgLy8gRml4IE9iamVjdC5jcmVhdGUobnVsbCkgaXNzdWUgaW4gcGF0aC10by1yZWdleHBcbiAgICAgICAgICAgIHZhcmlhYmxlczogeyAuLi5tYXRjaC5wYXJhbXMgfSxcbiAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSA/PyB7fSxcbiAgICAgICAgICB9KTtcbiAgICAgICAgfSk7XG4gICAgICAgIC8vIEVhZ2VybHkgZXZhbHVhdGUgcHJlcGFyZSBzbyB0aGUgcHJlcGFyZWQgcmVzb3VyY2UgaW1tZWRpYXRlbHkgcmVmbGVjdHNcbiAgICAgICAgLy8gc3luYyByZXNvbHV0aW9uIG9yIGFzeW5jIHBlbmRpbmcgc3RhdGUgZm9yIHRoZSBjdXJyZW50IHJvdXRlIHNuYXBzaG90LlxuICAgICAgICBjb25zdCBwcmVwYXJlZExvYWQgPSBwcmVwYXJlZFJlc291cmNlLmxvYWQoKTtcblxuICAgICAgICBpZiAoaW5zdHJ1bWVudGF0aW9uICE9IG51bGwpIHtcbiAgICAgICAgICBwcmVwYXJlZExvYWRcbiAgICAgICAgICAgIC50aGVuKCgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZmluaXNoZWRBdCA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgIGVtaXRQcmVwYXJlSW5zdHJ1bWVudGF0aW9uKGluc3RydW1lbnRhdGlvbiwge1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdwcmVwYXJlLWNvbXBsZXRlJyxcbiAgICAgICAgICAgICAgICBzb3VyY2U6IGluc3RydW1lbnRhdGlvbi5zb3VyY2UsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBmaW5pc2hlZEF0LFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpbnN0cnVtZW50YXRpb24ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgcm91dGVQYXRoOiBwYXRoLFxuICAgICAgICAgICAgICAgIG1vZHVsZUlkLFxuICAgICAgICAgICAgICAgIGR1cmF0aW9uTXM6IGZpbmlzaGVkQXQgLSBwcmVwYXJlU3RhcnRlZEF0LFxuICAgICAgICAgICAgICAgIGhhc1ByZXBhcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJ3Jlc29sdmVkJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KVxuICAgICAgICAgICAgLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgICAgY29uc3QgZmluaXNoZWRBdCA9IERhdGUubm93KCk7XG4gICAgICAgICAgICAgIGVtaXRQcmVwYXJlSW5zdHJ1bWVudGF0aW9uKGluc3RydW1lbnRhdGlvbiwge1xuICAgICAgICAgICAgICAgIGtpbmQ6ICdwcmVwYXJlLWNvbXBsZXRlJyxcbiAgICAgICAgICAgICAgICBzb3VyY2U6IGluc3RydW1lbnRhdGlvbi5zb3VyY2UsXG4gICAgICAgICAgICAgICAgdGltZXN0YW1wOiBmaW5pc2hlZEF0LFxuICAgICAgICAgICAgICAgIGxvY2F0aW9uOiBpbnN0cnVtZW50YXRpb24ubG9jYXRpb24sXG4gICAgICAgICAgICAgICAgcm91dGVQYXRoOiBwYXRoLFxuICAgICAgICAgICAgICAgIG1vZHVsZUlkLFxuICAgICAgICAgICAgICAgIGR1cmF0aW9uTXM6IGZpbmlzaGVkQXQgLSBwcmVwYXJlU3RhcnRlZEF0LFxuICAgICAgICAgICAgICAgIGhhc1ByZXBhcmVkOiB0cnVlLFxuICAgICAgICAgICAgICAgIHN0YXR1czogJ3JlamVjdGVkJyxcbiAgICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBwcmVwYXJlZExvYWQuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgLy8gSW50ZW50aW9uYWxseSBpZ25vcmVkOiByb3V0ZSByZW5kZXJpbmcvZXJyb3IgYm91bmRhcmllcyBvd24gdGhlIGZhaWx1cmUuXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgaWYgKGluc3RydW1lbnRhdGlvbiAhPSBudWxsICYmIHByZXBhcmUgPT0gbnVsbCkge1xuICAgICAgICBjb25zdCBmaW5pc2hlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uLCB7XG4gICAgICAgICAga2luZDogJ3ByZXBhcmUtY29tcGxldGUnLFxuICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICB0aW1lc3RhbXA6IGZpbmlzaGVkQXQsXG4gICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgICAgZHVyYXRpb25NczogZmluaXNoZWRBdCAtIHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgaGFzUHJlcGFyZWQ6IGZhbHNlLFxuICAgICAgICAgIHN0YXR1czogJ3Jlc29sdmVkJyxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGlmIChyZXNvdXJjZVBhZ2UgIT0gbnVsbCAmJiByZXNvdXJjZVBhZ2UuZ2V0KCkgPT0gbnVsbCkge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIFByb21pc2UucmVzb2x2ZShyZXNvdXJjZVBhZ2UubG9hZCgpKS5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBJbnRlbnRpb25hbGx5IGlnbm9yZWQ6IHJvdXRlIHJlbmRlcmluZy9lcnJvciBib3VuZGFyaWVzIG93biB0aGUgZmFpbHVyZS5cbiAgICAgICAgICB9KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gSW50ZW50aW9uYWxseSBpZ25vcmVkOiByb3V0ZSByZW5kZXJpbmcvZXJyb3IgYm91bmRhcmllcyBvd24gdGhlIGZhaWx1cmUuXG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHJldHVybiB7XG4gICAgICAgIHJvdXRlTm9kZTogcm91dGUsXG4gICAgICAgIHBhdGgsXG4gICAgICAgIGZ1bGxQYXRoOiByb3V0ZVNlZ21lbnQ/LmZ1bGxQYXRoID8/IHBhdGgsXG4gICAgICAgIHNlZ21lbnRLZXk6XG4gICAgICAgICAgcm91dGVTZWdtZW50Py5rZXkgPz8gYnVpbGRIaWdobGlnaHRJZChwYXRoLCByb3V0ZUluZGV4LCBtb2R1bGVJZCksXG4gICAgICAgIHBhcmFtTmFtZXM6IHJvdXRlU2VnbWVudD8ucGFyYW1OYW1lcyA/PyBbXSxcbiAgICAgICAgc2VnbWVudEluZGV4OiByb3V0ZUluZGV4LFxuICAgICAgICBwcmVwYXJlZFJlc291cmNlLFxuICAgICAgICByZWRpcmVjdFRvOiBtYXRjaGVkUm91dGUucmVkaXJlY3RUbyA/PyBudWxsLFxuICAgICAgICByZW5kZXIsXG4gICAgICAgIHJlc291cmNlUGFnZSxcbiAgICAgICAgc3VzcGVuc2VCb3VuZGFyeTogc3VzcGVuc2VCb3VuZGFyeSA/PyAnaW5oZXJpdCcsXG4gICAgICAgIGZhbGxiYWNrLFxuICAgICAgICBoaWdobGlnaHRJZDogYnVpbGRIaWdobGlnaHRJZChwYXRoLCByb3V0ZUluZGV4LCBtb2R1bGVJZCksXG4gICAgICAgIHF1ZXJ5U2NoZW1hLFxuICAgICAgfTtcbiAgICB9LFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgbWF0Y2gsXG4gICAgc2VnbWVudHMsXG4gICAgcm91dGVzOiBzZWdtZW50cyxcbiAgfTtcbn1cblxuLyoqXG4gKiBSZXNvbHZlcyBldmVyeSBhc3luYyBwcmVwYXJlIHJlc291cmNlIGZvciBhIG1hdGNoZWQgcm91dGUgaGllcmFyY2h5LlxuICpcbiAqIEBwYXJhbSBtYXRjaCAtIE1hdGNoZWQgcm91dGUgZGVzY3JpcHRvciAob3IgYG51bGxgIHdoZW4gbm90aGluZyBtYXRjaGVkKS5cbiAqIEBwYXJhbSBxdWVyeSAtIE9wdGlvbmFsIHF1ZXJ5IG9iamVjdCBmb3J3YXJkZWQgdG8gcHJlcGFyZSBmdW5jdGlvbnMuXG4gKiBAcGFyYW0gaW5zdHJ1bWVudGF0aW9uIC0gT3B0aW9uYWwgaW5zdHJ1bWVudGF0aW9uIHNpbmsgZm9yIHByZXBhcmUgbGlmZWN5Y2xlIGV2ZW50cy5cbiAqIEBwYXJhbSBjb250ZXh0IC0gT3B0aW9uYWwgcm91dGVyIGNvbnRleHQgZm9yd2FyZGVkIHRvIHByZXBhcmUgZnVuY3Rpb25zLlxuICogQHJldHVybnMgUHJlcGFyZWQgaGllcmFyY2h5IHdpdGggY29uY3JldGUgcHJlcGFyZWQgdmFsdWVzIGluc3RlYWQgb2YgcmVzb3VyY2VzLlxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gcHJlcGFyZU1hdGNoQXN5bmM8XG4gIFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGEsXG4gIFRDb250ZXh0ID0gdW5rbm93bixcbj4oXG4gIG1hdGNoOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFBhcmFtcz4gfCBudWxsLFxuICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBpbnN0cnVtZW50YXRpb24/OiBQcmVwYXJlSW5zdHJ1bWVudGF0aW9uLFxuICBjb250ZXh0PzogVENvbnRleHQsXG4pOiBQcm9taXNlPFJlc29sdmVkUHJlcGFyZWRNYXRjaDxUUGFyYW1zLCBUQ29udGV4dD4+IHtcbiAgY29uc3QgcHJlcGFyZWRNYXRjaCA9IHByZXBhcmVNYXRjaChtYXRjaCwgcXVlcnksIGluc3RydW1lbnRhdGlvbiwgY29udGV4dCk7XG4gIGNvbnN0IHNlZ21lbnRzID0gYXdhaXQgUHJvbWlzZS5hbGwoXG4gICAgcHJlcGFyZWRNYXRjaC5zZWdtZW50cy5tYXAoXG4gICAgICBhc3luYyAocm91dGUpOiBQcm9taXNlPFJlc29sdmVkUHJlcGFyZWRSb3V0ZVNlZ21lbnQ8VENvbnRleHQ+PiA9PiB7XG4gICAgICAgIGxldCBwcmVwYXJlZDogdW5rbm93bjtcbiAgICAgICAgaWYgKHJvdXRlLnByZXBhcmVkUmVzb3VyY2UgIT0gbnVsbCkge1xuICAgICAgICAgIHByZXBhcmVkID0gYXdhaXQgcm91dGUucHJlcGFyZWRSZXNvdXJjZS5sb2FkKCk7XG4gICAgICAgIH1cbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICByb3V0ZU5vZGU6IHJvdXRlLnJvdXRlTm9kZSxcbiAgICAgICAgICBwYXRoOiByb3V0ZS5wYXRoLFxuICAgICAgICAgIGZ1bGxQYXRoOiByb3V0ZS5mdWxsUGF0aCxcbiAgICAgICAgICBzZWdtZW50S2V5OiByb3V0ZS5zZWdtZW50S2V5LFxuICAgICAgICAgIHBhcmFtTmFtZXM6IHJvdXRlLnBhcmFtTmFtZXMsXG4gICAgICAgICAgc2VnbWVudEluZGV4OiByb3V0ZS5zZWdtZW50SW5kZXgsXG4gICAgICAgICAgcHJlcGFyZWQsXG4gICAgICAgICAgcmVkaXJlY3RUbzogcm91dGUucmVkaXJlY3RUbyxcbiAgICAgICAgICByZW5kZXI6IHJvdXRlLnJlbmRlcixcbiAgICAgICAgICByZXNvdXJjZVBhZ2U6IHJvdXRlLnJlc291cmNlUGFnZSxcbiAgICAgICAgICBzdXNwZW5zZUJvdW5kYXJ5OiByb3V0ZS5zdXNwZW5zZUJvdW5kYXJ5LFxuICAgICAgICAgIGZhbGxiYWNrOiByb3V0ZS5mYWxsYmFjayxcbiAgICAgICAgICBoaWdobGlnaHRJZDogcm91dGUuaGlnaGxpZ2h0SWQsXG4gICAgICAgICAgcXVlcnlTY2hlbWE6IHJvdXRlLnF1ZXJ5U2NoZW1hLFxuICAgICAgICB9O1xuICAgICAgfSxcbiAgICApLFxuICApO1xuXG4gIHJldHVybiB7XG4gICAgbWF0Y2g6IHByZXBhcmVkTWF0Y2gubWF0Y2gsXG4gICAgc2VnbWVudHMsXG4gICAgcm91dGVzOiBzZWdtZW50cyxcbiAgfTtcbn1cblxuLyoqXG4gKiBSb3V0ZSBoZWxwZXIgdGhhdCBwcmVzZXJ2ZXMgVHlwZVNjcmlwdCBpbmZlcmVuY2UgKGluY2x1ZGluZyBjb25kaXRpb25hbCBxdWVyeS1zY2hlbWEgaW5mZXJlbmNlKS5cbiAqXG4gKiBAcGFyYW0gcm91dGUgLSBSb3V0ZSBkZWZpbml0aW9uIHRvIHJldHVybiB1bmNoYW5nZWQgd2l0aCBpbmZlcnJlZCBnZW5lcmljcy5cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHI8XG4gIFRDb250ZXh0ID0gdW5rbm93bixcbiAgVFByZXBhcmVkIGV4dGVuZHMgUHJlcGFyZVJlc3VsdCA9IFByZXBhcmVSZXN1bHQsXG4gIFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGEgPSBQYXJhbURhdGEsXG4gIFRRdWVyeSBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIFRDaGlsZHJlbiBleHRlbmRzIHJlYWRvbmx5IChSb3V0ZU5vZGUgfCBSZWRpcmVjdClbXSB8IHVuZGVmaW5lZCA9XG4gICAgcmVhZG9ubHkgKFJvdXRlTm9kZSB8IFJlZGlyZWN0KVtdIHwgdW5kZWZpbmVkLFxuPihcbiAgcm91dGU6IFJvdXRlPFxuICAgIFRDb250ZXh0LFxuICAgIFRQcmVwYXJlZCxcbiAgICBUVmFyaWFibGVzLFxuICAgIFRRdWVyeSxcbiAgICBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQsXG4gICAgVENoaWxkcmVuXG4gID4sXG4pOiBSb3V0ZTxcbiAgVENvbnRleHQsXG4gIFRQcmVwYXJlZCxcbiAgVFZhcmlhYmxlcyxcbiAgVFF1ZXJ5LFxuICBGaWx0ZXJTY2hlbWEgfCB1bmRlZmluZWQsXG4gIFRDaGlsZHJlblxuPiB7XG4gIHJldHVybiByb3V0ZTtcbn1cbiJdfQ==
239
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBeUJBLE9BQU8sRUFBRSwyQkFBMkIsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBbUJuRSxNQUFNLGlCQUFpQixHQUFHLENBQ3hCLElBQXVCLEVBQ3ZCLEtBQXdCLEVBQ2YsRUFBRTtJQUNYLElBQUksS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7UUFDaEQsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDbEQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDO1FBQ0QsSUFBSSxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUNqQyxPQUFPLEtBQUssQ0FBQztRQUNmLENBQUM7UUFDRCxPQUFPLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLEVBQUU7WUFDakMsT0FBTyxLQUFLLEtBQUssS0FBSyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2hDLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUNELE9BQU8sSUFBSSxLQUFLLEtBQUssQ0FBQztBQUN4QixDQUFDLENBQUM7QUFFRixNQUFNLHFCQUFxQixHQUFHLENBQzVCLFVBQTZCLEVBQzdCLElBQTJCLEVBQzNCLEtBQWdCLEVBQ1AsRUFBRTtJQUNYLElBQUksVUFBVSxDQUFDLE1BQU0sS0FBSyxDQUFDLEVBQUUsQ0FBQztRQUM1QixPQUFPLElBQUksQ0FBQztJQUNkLENBQUM7SUFDRCxJQUFJLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUNqQixPQUFPLEtBQUssQ0FBQztJQUNmLENBQUM7SUFD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QUFDO1FBQ3RCLElBQUksS0FBSyxDQUFDLGdCQUFnQixJQUFJLElBQUksRUFBRSxDQUFDO1lBQ25DLFFBQVEsR0FBRyxNQUFNLEtBQUssQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsT0FBTztZQUNMLFNBQVMsRUFBRSxLQUFLLENBQUMsU0FBUztZQUMxQixJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUk7WUFDaEIsUUFBUSxFQUFFLEtBQUssQ0FBQyxRQUFRO1lBQ3hCLFVBQVUsRUFBRSxLQUFLLENBQUMsVUFBVTtZQUM1QixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsWUFBWSxFQUFFLEtBQUssQ0FBQyxZQUFZO1lBQ2hDLFFBQVE7WUFDUixVQUFVLEVBQUUsS0FBSyxDQUFDLFVBQVU7WUFDNUIsTUFBTSxFQUFFLEtBQUssQ0FBQyxNQUFNO1lBQ3BCLFlBQVksRUFBRSxLQUFLLENBQUMsWUFBWTtZQUNoQyxnQkFBZ0IsRUFBRSxLQUFLLENBQUMsZ0JBQWdCO1lBQ3hDLFFBQVEsRUFBRSxLQUFLLENBQUMsUUFBUTtZQUN4QixXQUFXLEVBQUUsS0FBSyxDQUFDLFdBQVc7WUFDOUIsV0FBVyxFQUFFLEtBQUssQ0FBQyxXQUFXO1NBQy9CLENBQUM7SUFDSixDQUFDLENBQ0YsQ0FDRixDQUFDO0lBRUYsT0FBTztRQUNMLEtBQUssRUFBRSxhQUFhLENBQUMsS0FBSztRQUMxQixRQUFRO1FBQ1IsTUFBTSxFQUFFLFFBQVE7S0FDakIsQ0FBQztBQUNKLENBQUM7QUFPRCxNQUFNLFVBQVUsQ0FBQyxDQVNmLEtBQW1FO0lBRW5FLE9BQU8sS0FBSyxDQUFDO0FBQ2YsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUGFyYW1EYXRhIH0gZnJvbSAncGF0aC10by1yZWdleHAnO1xuXG5pbXBvcnQge1xuICB0eXBlIEZpbHRlclNjaGVtYSxcbiAgdHlwZSBQcmVwYXJlUmVzdWx0LFxuICB0eXBlIFByZXBhcmVkTWF0Y2gsXG4gIHR5cGUgUHJlcGFyZWRNYXRjaFJvdXRlLFxuICB0eXBlIFByZXBhcmVkUm91dGVTZWdtZW50LFxuICB0eXBlIFJlZGlyZWN0LFxuICB0eXBlIFJlc29sdmVkUHJlcGFyZWRNYXRjaCxcbiAgdHlwZSBSZXNvbHZlZFByZXBhcmVkUm91dGVTZWdtZW50LFxuICB0eXBlIFJvdXRlLFxuICB0eXBlIFJvdXRlTm9kZSxcbiAgdHlwZSBSb3V0ZXJNYXRjaGVkUm91dGUsXG4gIHR5cGUgUmF3UXVlcnksXG4gIHR5cGUgVW5rbm93bkZpbHRlcnMsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuXG5pbXBvcnQgdHlwZSB7XG4gIFJvdXRlclByZXBhcmVFdmVudCxcbiAgUm91dGVyTmF2aWdhdGlvblNvdXJjZSxcbiAgUm91dGVyTG9jYXRpb25TbmFwc2hvdCxcbn0gZnJvbSAnLi9pbnN0cnVtZW50YXRpb24vSW5zdHJ1bWVudGF0aW9uLmpzJztcblxuaW1wb3J0IHR5cGUgeyBGbGF0Um91dGUgfSBmcm9tICcuL2J1aWxkZXIuanMnO1xuaW1wb3J0IHsgY3JlYXRlUHJlcGFyZWRWYWx1ZVJlc291cmNlIH0gZnJvbSAnLi9wcmVwYXJlUmVzb3VyY2UuanMnO1xuXG50eXBlIFByZXBhcmVJbnN0cnVtZW50YXRpb24gPSB7XG4gIGVtaXQ6IChldmVudDogUm91dGVyUHJlcGFyZUV2ZW50KSA9PiB2b2lkO1xuICBzb3VyY2U6IFJvdXRlck5hdmlnYXRpb25Tb3VyY2U7XG4gIGxvY2F0aW9uOiBSb3V0ZXJMb2NhdGlvblNuYXBzaG90O1xufTtcblxudHlwZSBQcmVwYXJlUmV1c2VJbnB1dDxUQ29udGV4dD4gPSB7XG4gIHByZXZpb3VzU2VnbWVudHM/OiBQcmVwYXJlZFJvdXRlU2VnbWVudDxUQ29udGV4dD5bXTtcbiAgcHJldmlvdXNQYXJhbXM/OiBQYXJhbURhdGE7XG4gIHNhbWVTZWFyY2g/OiBib29sZWFuO1xufTtcblxudHlwZSBQcmVwYXJlU2VhcmNoU3RhdGUgPSB7XG4gIHJhd1F1ZXJ5PzogUmF3UXVlcnk7XG4gIGZpbHRlcnM/OiBVbmtub3duRmlsdGVycztcbn07XG5cbmNvbnN0IGlzUGFyYW1WYWx1ZUVxdWFsID0gKFxuICBsZWZ0OiBQYXJhbURhdGFbc3RyaW5nXSxcbiAgcmlnaHQ6IFBhcmFtRGF0YVtzdHJpbmddLFxuKTogYm9vbGVhbiA9PiB7XG4gIGlmIChBcnJheS5pc0FycmF5KGxlZnQpIHx8IEFycmF5LmlzQXJyYXkocmlnaHQpKSB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGxlZnQpIHx8ICFBcnJheS5pc0FycmF5KHJpZ2h0KSkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICBpZiAobGVmdC5sZW5ndGggIT09IHJpZ2h0Lmxlbmd0aCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgICByZXR1cm4gbGVmdC5ldmVyeSgodmFsdWUsIGluZGV4KSA9PiB7XG4gICAgICByZXR1cm4gdmFsdWUgPT09IHJpZ2h0W2luZGV4XTtcbiAgICB9KTtcbiAgfVxuICByZXR1cm4gbGVmdCA9PT0gcmlnaHQ7XG59O1xuXG5jb25zdCBhcmVTZWdtZW50UGFyYW1zRXF1YWwgPSAoXG4gIHBhcmFtTmFtZXM6IHJlYWRvbmx5IHN0cmluZ1tdLFxuICBsZWZ0OiBQYXJhbURhdGEgfCB1bmRlZmluZWQsXG4gIHJpZ2h0OiBQYXJhbURhdGEsXG4pOiBib29sZWFuID0+IHtcbiAgaWYgKHBhcmFtTmFtZXMubGVuZ3RoID09PSAwKSB7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbiAgaWYgKGxlZnQgPT0gbnVsbCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuICByZXR1cm4gcGFyYW1OYW1lcy5ldmVyeSgocGFyYW1OYW1lKSA9PiB7XG4gICAgcmV0dXJuIGlzUGFyYW1WYWx1ZUVxdWFsKGxlZnRbcGFyYW1OYW1lXSwgcmlnaHRbcGFyYW1OYW1lXSk7XG4gIH0pO1xufTtcblxuLyoqIEVtaXRzIHByZXBhcmUgaW5zdHJ1bWVudGF0aW9uIHdpdGhvdXQgYWxsb3dpbmcgaW5zdHJ1bWVudGF0aW9uIGZhaWx1cmVzIHRvIGFmZmVjdCByb3V0aW5nLiAqL1xuZnVuY3Rpb24gZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oXG4gIGluc3RydW1lbnRhdGlvbjogUHJlcGFyZUluc3RydW1lbnRhdGlvbiB8IHVuZGVmaW5lZCxcbiAgZXZlbnQ6IFJvdXRlclByZXBhcmVFdmVudCxcbik6IHZvaWQge1xuICBpZiAoaW5zdHJ1bWVudGF0aW9uID09IG51bGwpIHtcbiAgICByZXR1cm47XG4gIH1cbiAgdHJ5IHtcbiAgICBpbnN0cnVtZW50YXRpb24uZW1pdChldmVudCk7XG4gIH0gY2F0Y2gge1xuICAgIC8vIEluc3RydW1lbnRhdGlvbiBtdXN0IG5ldmVyIGJyZWFrIHJvdXRpbmcgb3IgcHJlcGFyZSBsaWZlY3ljbGUuXG4gIH1cbn1cblxuLyoqXG4gKiBGaW5kcyB0aGUgZmlyc3QgZmxhdCByb3V0ZSBtYXRjaGluZyB0aGUgcHJvdmlkZWQgbG9jYXRpb24uXG4gKlxuICogQHBhcmFtIHJvdXRlcyAtIEZsYXR0ZW5lZCByb3V0ZSBsaXN0IHRvIGV2YWx1YXRlLlxuICogQHBhcmFtIGxvY2F0aW9uIC0gQnJvd3NlciBsb2NhdGlvbiB3aG9zZSBwYXRobmFtZSBzaG91bGQgYmUgbWF0Y2hlZC5cbiAqIEByZXR1cm5zIE1hdGNoZWQgcm91dGUgd2l0aCBwYXJhbXMgb3IgYG51bGxgIGlmIG5vbmUgbWF0Y2guXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXRjaGVkUm91dGU8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YT4oXG4gIHJvdXRlczogRmxhdFJvdXRlPFRQYXJhbXM+W10sXG4gIGxvY2F0aW9uOiBMb2NhdGlvbixcbik6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwge1xuICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgIGNvbnN0IG1hdGNoID0gcm91dGUubWF0Y2hGdW5jdGlvbihsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgaWYgKG1hdGNoICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgeyBwYXRoLCBwYXJhbXMgfSA9IG1hdGNoO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIHJvdXRlLFxuICAgICAgICBwYXRoLFxuICAgICAgICBwYXJhbXMsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIERlcml2ZXMgYSBkZXRlcm1pbmlzdGljIGlkZW50aWZpZXIgdGhhdCBsaW5rcyBwcmVwYXJlZCByb3V0ZXMgdG8gRE9NIG1hcmtlcnMuXG4gKi9cbmZ1bmN0aW9uIGJ1aWxkSGlnaGxpZ2h0SWQoXG4gIHJvdXRlUGF0aDogc3RyaW5nIHwgdW5kZWZpbmVkLFxuICBpbmRleDogbnVtYmVyLFxuICBtb2R1bGVJZD86IHN0cmluZyxcbik6IHN0cmluZyB7XG4gIGNvbnN0IHBhcnRzOiBzdHJpbmdbXSA9IFtdO1xuICBpZiAodHlwZW9mIG1vZHVsZUlkID09PSAnc3RyaW5nJyAmJiBtb2R1bGVJZC50cmltKCkgIT09ICcnKSB7XG4gICAgcGFydHMucHVzaChgbW9kdWxlOiR7bW9kdWxlSWR9YCk7XG4gIH1cbiAgaWYgKHR5cGVvZiByb3V0ZVBhdGggPT09ICdzdHJpbmcnICYmIHJvdXRlUGF0aC50cmltKCkgIT09ICcnKSB7XG4gICAgcGFydHMucHVzaChgcGF0aDoke3JvdXRlUGF0aH1gKTtcbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSB7XG4gICAgcGFydHMucHVzaCgncm91dGUnKTtcbiAgfVxuICBwYXJ0cy5wdXNoKGBpbmRleDoke2luZGV4fWApO1xuICByZXR1cm4gcGFydHMuam9pbignfCcpO1xufVxuXG5leHBvcnQgY29uc3QgX190ZXN0VG9vbHMgPSB7XG4gIGJ1aWxkSGlnaGxpZ2h0SWQsXG4gIGFyZVNlZ21lbnRQYXJhbXNFcXVhbCxcbn0gYXMgY29uc3Q7XG5cbi8qKlxuICogUHJlcGFyZXMgYSBtYXRjaGVkIHJvdXRlIGJ5IGV4ZWN1dGluZyBgcHJlcGFyZWAgY2FsbGJhY2tzIGFuZCByZXNvbHZpbmcgcmVzb3VyY2UgcGFnZXMuXG4gKlxuICogQHBhcmFtIG1hdGNoIC0gTWF0Y2hlZCByb3V0ZSBkZXNjcmlwdG9yIChvciBgbnVsbGAgd2hlbiBub3RoaW5nIG1hdGNoZWQpLlxuICogQHBhcmFtIHF1ZXJ5IC0gT3B0aW9uYWwgcXVlcnkgb2JqZWN0IGZvcndhcmRlZCB0byBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqIEBwYXJhbSBjb250ZXh0IC0gT3B0aW9uYWwgcm91dGVyIGNvbnRleHQgZm9yd2FyZGVkIHRvIHByZXBhcmUgZnVuY3Rpb25zLlxuICogQHJldHVybnMgUHJlcGFyZWQgaGllcmFyY2h5IHJlYWR5IGZvciB0aGUgcmVuZGVyZXIuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlTWF0Y2g8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YSwgVENvbnRleHQgPSB1bmtub3duPihcbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwsXG4gIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGluc3RydW1lbnRhdGlvbj86IFByZXBhcmVJbnN0cnVtZW50YXRpb24sXG4gIGNvbnRleHQ/OiBUQ29udGV4dCxcbiAgcmV1c2U/OiBQcmVwYXJlUmV1c2VJbnB1dDxUQ29udGV4dD4sXG4gIHNlYXJjaFN0YXRlPzogUHJlcGFyZVNlYXJjaFN0YXRlLFxuKTogUHJlcGFyZWRNYXRjaDxUUGFyYW1zLCBUQ29udGV4dD4ge1xuICAvLyBOT1RFOiBSdW50aW1lIHJldGFpbnMgYSBnZW5lcmljIFByZXBhcmVkUmVzdWx0OyB0eXBlLWxldmVsIG5hcnJvd2luZyBpcyBhY2hpZXZlZCBleHRlcm5hbGx5XG4gIC8vIHRocm91Z2ggdGhlIHJvdXRlIHVuaW9uIGFuZCBQcmVwYXJlZEFjY2VzcyBoZWxwZXJzLiBXZSBpbnRlbnRpb25hbGx5IGF2b2lkIGluamVjdGluZ1xuICAvLyBnZW5lcmljIHBhcmFtZXRlcnMgaGVyZSB0byBrZWVwIHJ1bnRpbWUgbGlnaHR3ZWlnaHQgd2hpbGUgc3RpbGwgZW5hYmxpbmcgY29tcGlsZS10aW1lXG4gIC8vIGRpc2NyaW1pbmF0aW9uIGluIHVzZXJsYW5kIHZpYSBjcmVhdGVSb3V0ZXIgZ2VuZXJpY3MuXG4gIGlmIChtYXRjaCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1hdGNoLFxuICAgICAgc2VnbWVudHM6IFtdLFxuICAgICAgcm91dGVzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgbWF0Y2hlZFJvdXRlID0gbWF0Y2gucm91dGU7XG5cbiAgY29uc3Qgc2VnbWVudHM6IFByZXBhcmVkUm91dGVTZWdtZW50PFRDb250ZXh0PltdID0gbWF0Y2gucm91dGUucm91dGVzLm1hcChcbiAgICAocm91dGUsIHJvdXRlSW5kZXgpID0+IHtcbiAgICAgIGNvbnN0IHtcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcHJlcGFyZSxcbiAgICAgICAgcXVlcnlTY2hlbWEsXG4gICAgICAgIHJlc291cmNlUGFnZSxcbiAgICAgICAgcmVuZGVyLFxuICAgICAgICBzdXNwZW5zZUJvdW5kYXJ5LFxuICAgICAgICBmYWxsYmFjayxcbiAgICAgIH0gPSByb3V0ZTtcbiAgICAgIGNvbnN0IHJvdXRlU2VnbWVudCA9IG1hdGNoLnJvdXRlLnJvdXRlU2VnbWVudHM/Lltyb3V0ZUluZGV4XTtcbiAgICAgIGNvbnN0IHByZXZpb3VzU2VnbWVudCA9IHJldXNlPy5wcmV2aW91c1NlZ21lbnRzPy5bcm91dGVJbmRleF07XG4gICAgICBpZiAoXG4gICAgICAgIHByZXZpb3VzU2VnbWVudD8ucm91dGVOb2RlID09PSByb3V0ZSAmJlxuICAgICAgICAocmV1c2U/LnNhbWVTZWFyY2ggPT09IHRydWUgfHxcbiAgICAgICAgICByb3V0ZS5wcmVwYXJlU2VhcmNoQmVoYXZpb3IgPT09ICdwYXRoJyB8fFxuICAgICAgICAgIHByZXBhcmUgPT0gbnVsbCkgJiZcbiAgICAgICAgYXJlU2VnbWVudFBhcmFtc0VxdWFsKFxuICAgICAgICAgIHJvdXRlU2VnbWVudD8ucGFyYW1OYW1lcyA/PyBbXSxcbiAgICAgICAgICByZXVzZT8ucHJldmlvdXNQYXJhbXMsXG4gICAgICAgICAgbWF0Y2gucGFyYW1zLFxuICAgICAgICApXG4gICAgICApIHtcbiAgICAgICAgcmV0dXJuIHByZXZpb3VzU2VnbWVudDtcbiAgICAgIH1cblxuICAgICAgbGV0IG1vZHVsZUlkOiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICBpZiAoXG4gICAgICAgIHJlc291cmNlUGFnZSAhPSBudWxsICYmXG4gICAgICAgIHR5cGVvZiByZXNvdXJjZVBhZ2UuZ2V0TW9kdWxlSWQgPT09ICdmdW5jdGlvbidcbiAgICAgICkge1xuICAgICAgICBjb25zdCByZXNvbHZlZE1vZHVsZUlkID0gcmVzb3VyY2VQYWdlLmdldE1vZHVsZUlkKCk7XG4gICAgICAgIGlmICh0eXBlb2YgcmVzb2x2ZWRNb2R1bGVJZCA9PT0gJ3N0cmluZycpIHtcbiAgICAgICAgICBtb2R1bGVJZCA9IHJlc29sdmVkTW9kdWxlSWQ7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgbGV0IHByZXBhcmVTdGFydGVkQXQgPSAwO1xuICAgICAgaWYgKGluc3RydW1lbnRhdGlvbiAhPSBudWxsKSB7XG4gICAgICAgIHByZXBhcmVTdGFydGVkQXQgPSBEYXRlLm5vdygpO1xuICAgICAgICBlbWl0UHJlcGFyZUluc3RydW1lbnRhdGlvbihpbnN0cnVtZW50YXRpb24sIHtcbiAgICAgICAgICBraW5kOiAncHJlcGFyZS1zdGFydCcsXG4gICAgICAgICAgc291cmNlOiBpbnN0cnVtZW50YXRpb24uc291cmNlLFxuICAgICAgICAgIHRpbWVzdGFtcDogcHJlcGFyZVN0YXJ0ZWRBdCxcbiAgICAgICAgICBsb2NhdGlvbjogaW5zdHJ1bWVudGF0aW9uLmxvY2F0aW9uLFxuICAgICAgICAgIHJvdXRlUGF0aDogcGF0aCxcbiAgICAgICAgICBtb2R1bGVJZCxcbiAgICAgICAgfSk7XG4gICAgICB9XG5cbiAgICAgIGxldCBwcmVwYXJlZFJlc291cmNlOiBQcmVwYXJlZE1hdGNoUm91dGVbJ3ByZXBhcmVkUmVzb3VyY2UnXTtcbiAgICAgIGlmIChwcmVwYXJlICE9IG51bGwpIHtcbiAgICAgICAgcHJlcGFyZWRSZXNvdXJjZSA9IGNyZWF0ZVByZXBhcmVkVmFsdWVSZXNvdXJjZSgoKSA9PiB7XG4gICAgICAgICAgcmV0dXJuIHByZXBhcmUoe1xuICAgICAgICAgICAgbWF0Y2gsXG4gICAgICAgICAgICBtYXRjaGVkUm91dGUsXG4gICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0IGFzIFRDb250ZXh0LFxuICAgICAgICAgICAgcmVzb3VyY2VQYWdlLFxuICAgICAgICAgICAgLy8gRml4IE9iamVjdC5jcmVhdGUobnVsbCkgaXNzdWUgaW4gcGF0aC10by1yZWdleHBcbiAgICAgICAgICAgIHZhcmlhYmxlczogeyAuLi5tYXRjaC5wYXJhbXMgfSxcbiAgICAgICAgICAgIHF1ZXJ5OiBxdWVyeSA/PyB7fSxcbiAgICAgICAgICAgIHJhd1F1ZXJ5OlxuICAgICAgICAgICAgICBzZWFyY2hTdGF0ZT8ucmF3UXVlcnkgPz8gKHF1ZXJ5IGFzIFJhd1F1ZXJ5IHwgdW5kZWZpbmVkKSA/PyB7fSxcbiAgICAgICAgICAgIGZpbHRlcnM6IHNlYXJjaFN0YXRlPy5maWx0ZXJzLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9KTtcbiAgICAgICAgLy8gRWFnZXJseSBldmFsdWF0ZSBwcmVwYXJlIHNvIHRoZSBwcmVwYXJlZCByZXNvdXJjZSBpbW1lZGlhdGVseSByZWZsZWN0c1xuICAgICAgICAvLyBzeW5jIHJlc29sdXRpb24gb3IgYXN5bmMgcGVuZGluZyBzdGF0ZSBmb3IgdGhlIGN1cnJlbnQgcm91dGUgc25hcHNob3QuXG4gICAgICAgIGNvbnN0IHByZXBhcmVkTG9hZCA9IHByZXBhcmVkUmVzb3VyY2UubG9hZCgpO1xuXG4gICAgICAgIGlmIChpbnN0cnVtZW50YXRpb24gIT0gbnVsbCkge1xuICAgICAgICAgIHByZXBhcmVkTG9hZFxuICAgICAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaW5pc2hlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uLCB7XG4gICAgICAgICAgICAgICAga2luZDogJ3ByZXBhcmUtY29tcGxldGUnLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGZpbmlzaGVkQXQsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgICAgICAgICAgZHVyYXRpb25NczogZmluaXNoZWRBdCAtIHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgICAgICAgaGFzUHJlcGFyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAncmVzb2x2ZWQnLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgICAuY2F0Y2goKCkgPT4ge1xuICAgICAgICAgICAgICBjb25zdCBmaW5pc2hlZEF0ID0gRGF0ZS5ub3coKTtcbiAgICAgICAgICAgICAgZW1pdFByZXBhcmVJbnN0cnVtZW50YXRpb24oaW5zdHJ1bWVudGF0aW9uLCB7XG4gICAgICAgICAgICAgICAga2luZDogJ3ByZXBhcmUtY29tcGxldGUnLFxuICAgICAgICAgICAgICAgIHNvdXJjZTogaW5zdHJ1bWVudGF0aW9uLnNvdXJjZSxcbiAgICAgICAgICAgICAgICB0aW1lc3RhbXA6IGZpbmlzaGVkQXQsXG4gICAgICAgICAgICAgICAgbG9jYXRpb246IGluc3RydW1lbnRhdGlvbi5sb2NhdGlvbixcbiAgICAgICAgICAgICAgICByb3V0ZVBhdGg6IHBhdGgsXG4gICAgICAgICAgICAgICAgbW9kdWxlSWQsXG4gICAgICAgICAgICAgICAgZHVyYXRpb25NczogZmluaXNoZWRBdCAtIHByZXBhcmVTdGFydGVkQXQsXG4gICAgICAgICAgICAgICAgaGFzUHJlcGFyZWQ6IHRydWUsXG4gICAgICAgICAgICAgICAgc3RhdHVzOiAncmVqZWN0ZWQnLFxuICAgICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIH0pO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByZXBhcmVkTG9hZC5jYXRjaCgoKSA9PiB7XG4gICAgICAgICAgICAvLyBJbnRlbnRpb25hbGx5IGlnbm9yZWQ6IHJvdXRlIHJlbmRlcmluZy9lcnJvciBib3VuZGFyaWVzIG93biB0aGUgZmFpbHVyZS5cbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICBpZiAoaW5zdHJ1bWVudGF0aW9uICE9IG51bGwgJiYgcHJlcGFyZSA9PSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGZpbmlzaGVkQXQgPSBEYXRlLm5vdygpO1xuICAgICAgICBlbWl0UHJlcGFyZUluc3RydW1lbnRhdGlvbihpbnN0cnVtZW50YXRpb24sIHtcbiAgICAgICAgICBraW5kOiAncHJlcGFyZS1jb21wbGV0ZScsXG4gICAgICAgICAgc291cmNlOiBpbnN0cnVtZW50YXRpb24uc291cmNlLFxuICAgICAgICAgIHRpbWVzdGFtcDogZmluaXNoZWRBdCxcbiAgICAgICAgICBsb2NhdGlvbjogaW5zdHJ1bWVudGF0aW9uLmxvY2F0aW9uLFxuICAgICAgICAgIHJvdXRlUGF0aDogcGF0aCxcbiAgICAgICAgICBtb2R1bGVJZCxcbiAgICAgICAgICBkdXJhdGlvbk1zOiBmaW5pc2hlZEF0IC0gcHJlcGFyZVN0YXJ0ZWRBdCxcbiAgICAgICAgICBoYXNQcmVwYXJlZDogZmFsc2UsXG4gICAgICAgICAgc3RhdHVzOiAncmVzb2x2ZWQnLFxuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgICAgaWYgKHJlc291cmNlUGFnZSAhPSBudWxsICYmIHJlc291cmNlUGFnZS5nZXQoKSA9PSBudWxsKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgUHJvbWlzZS5yZXNvbHZlKHJlc291cmNlUGFnZS5sb2FkKCkpLmNhdGNoKCgpID0+IHtcbiAgICAgICAgICAgIC8vIEludGVudGlvbmFsbHkgaWdub3JlZDogcm91dGUgcmVuZGVyaW5nL2Vycm9yIGJvdW5kYXJpZXMgb3duIHRoZSBmYWlsdXJlLlxuICAgICAgICAgIH0pO1xuICAgICAgICB9IGNhdGNoIHtcbiAgICAgICAgICAvLyBJbnRlbnRpb25hbGx5IGlnbm9yZWQ6IHJvdXRlIHJlbmRlcmluZy9lcnJvciBib3VuZGFyaWVzIG93biB0aGUgZmFpbHVyZS5cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgcm91dGVOb2RlOiByb3V0ZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgZnVsbFBhdGg6IHJvdXRlU2VnbWVudD8uZnVsbFBhdGggPz8gcGF0aCxcbiAgICAgICAgc2VnbWVudEtleTpcbiAgICAgICAgICByb3V0ZVNlZ21lbnQ/LmtleSA/PyBidWlsZEhpZ2hsaWdodElkKHBhdGgsIHJvdXRlSW5kZXgsIG1vZHVsZUlkKSxcbiAgICAgICAgcGFyYW1OYW1lczogcm91dGVTZWdtZW50Py5wYXJhbU5hbWVzID8/IFtdLFxuICAgICAgICBzZWdtZW50SW5kZXg6IHJvdXRlSW5kZXgsXG4gICAgICAgIHByZXBhcmVkUmVzb3VyY2UsXG4gICAgICAgIHJlZGlyZWN0VG86IG1hdGNoZWRSb3V0ZS5yZWRpcmVjdFRvID8/IG51bGwsXG4gICAgICAgIHJlbmRlcixcbiAgICAgICAgcmVzb3VyY2VQYWdlLFxuICAgICAgICBzdXNwZW5zZUJvdW5kYXJ5OiBzdXNwZW5zZUJvdW5kYXJ5ID8/ICdpbmhlcml0JyxcbiAgICAgICAgZmFsbGJhY2ssXG4gICAgICAgIGhpZ2hsaWdodElkOiBidWlsZEhpZ2hsaWdodElkKHBhdGgsIHJvdXRlSW5kZXgsIG1vZHVsZUlkKSxcbiAgICAgICAgcXVlcnlTY2hlbWEsXG4gICAgICB9O1xuICAgIH0sXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBtYXRjaCxcbiAgICBzZWdtZW50cyxcbiAgICByb3V0ZXM6IHNlZ21lbnRzLFxuICB9O1xufVxuXG4vKipcbiAqIFJlc29sdmVzIGV2ZXJ5IGFzeW5jIHByZXBhcmUgcmVzb3VyY2UgZm9yIGEgbWF0Y2hlZCByb3V0ZSBoaWVyYXJjaHkuXG4gKlxuICogQHBhcmFtIG1hdGNoIC0gTWF0Y2hlZCByb3V0ZSBkZXNjcmlwdG9yIChvciBgbnVsbGAgd2hlbiBub3RoaW5nIG1hdGNoZWQpLlxuICogQHBhcmFtIHF1ZXJ5IC0gT3B0aW9uYWwgcXVlcnkgb2JqZWN0IGZvcndhcmRlZCB0byBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqIEBwYXJhbSBpbnN0cnVtZW50YXRpb24gLSBPcHRpb25hbCBpbnN0cnVtZW50YXRpb24gc2luayBmb3IgcHJlcGFyZSBsaWZlY3ljbGUgZXZlbnRzLlxuICogQHBhcmFtIGNvbnRleHQgLSBPcHRpb25hbCByb3V0ZXIgY29udGV4dCBmb3J3YXJkZWQgdG8gcHJlcGFyZSBmdW5jdGlvbnMuXG4gKiBAcmV0dXJucyBQcmVwYXJlZCBoaWVyYXJjaHkgd2l0aCBjb25jcmV0ZSBwcmVwYXJlZCB2YWx1ZXMgaW5zdGVhZCBvZiByZXNvdXJjZXMuXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwcmVwYXJlTWF0Y2hBc3luYzxcbiAgVFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YSxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuPihcbiAgbWF0Y2g6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwsXG4gIHF1ZXJ5PzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIGluc3RydW1lbnRhdGlvbj86IFByZXBhcmVJbnN0cnVtZW50YXRpb24sXG4gIGNvbnRleHQ/OiBUQ29udGV4dCxcbik6IFByb21pc2U8UmVzb2x2ZWRQcmVwYXJlZE1hdGNoPFRQYXJhbXMsIFRDb250ZXh0Pj4ge1xuICBjb25zdCBwcmVwYXJlZE1hdGNoID0gcHJlcGFyZU1hdGNoKG1hdGNoLCBxdWVyeSwgaW5zdHJ1bWVudGF0aW9uLCBjb250ZXh0KTtcbiAgY29uc3Qgc2VnbWVudHMgPSBhd2FpdCBQcm9taXNlLmFsbChcbiAgICBwcmVwYXJlZE1hdGNoLnNlZ21lbnRzLm1hcChcbiAgICAgIGFzeW5jIChyb3V0ZSk6IFByb21pc2U8UmVzb2x2ZWRQcmVwYXJlZFJvdXRlU2VnbWVudDxUQ29udGV4dD4+ID0+IHtcbiAgICAgICAgbGV0IHByZXBhcmVkOiB1bmtub3duO1xuICAgICAgICBpZiAocm91dGUucHJlcGFyZWRSZXNvdXJjZSAhPSBudWxsKSB7XG4gICAgICAgICAgcHJlcGFyZWQgPSBhd2FpdCByb3V0ZS5wcmVwYXJlZFJlc291cmNlLmxvYWQoKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4ge1xuICAgICAgICAgIHJvdXRlTm9kZTogcm91dGUucm91dGVOb2RlLFxuICAgICAgICAgIHBhdGg6IHJvdXRlLnBhdGgsXG4gICAgICAgICAgZnVsbFBhdGg6IHJvdXRlLmZ1bGxQYXRoLFxuICAgICAgICAgIHNlZ21lbnRLZXk6IHJvdXRlLnNlZ21lbnRLZXksXG4gICAgICAgICAgcGFyYW1OYW1lczogcm91dGUucGFyYW1OYW1lcyxcbiAgICAgICAgICBzZWdtZW50SW5kZXg6IHJvdXRlLnNlZ21lbnRJbmRleCxcbiAgICAgICAgICBwcmVwYXJlZCxcbiAgICAgICAgICByZWRpcmVjdFRvOiByb3V0ZS5yZWRpcmVjdFRvLFxuICAgICAgICAgIHJlbmRlcjogcm91dGUucmVuZGVyLFxuICAgICAgICAgIHJlc291cmNlUGFnZTogcm91dGUucmVzb3VyY2VQYWdlLFxuICAgICAgICAgIHN1c3BlbnNlQm91bmRhcnk6IHJvdXRlLnN1c3BlbnNlQm91bmRhcnksXG4gICAgICAgICAgZmFsbGJhY2s6IHJvdXRlLmZhbGxiYWNrLFxuICAgICAgICAgIGhpZ2hsaWdodElkOiByb3V0ZS5oaWdobGlnaHRJZCxcbiAgICAgICAgICBxdWVyeVNjaGVtYTogcm91dGUucXVlcnlTY2hlbWEsXG4gICAgICAgIH07XG4gICAgICB9LFxuICAgICksXG4gICk7XG5cbiAgcmV0dXJuIHtcbiAgICBtYXRjaDogcHJlcGFyZWRNYXRjaC5tYXRjaCxcbiAgICBzZWdtZW50cyxcbiAgICByb3V0ZXM6IHNlZ21lbnRzLFxuICB9O1xufVxuXG4vKipcbiAqIFJvdXRlIGhlbHBlciB0aGF0IHByZXNlcnZlcyBUeXBlU2NyaXB0IGluZmVyZW5jZSAoaW5jbHVkaW5nIGNvbmRpdGlvbmFsIHF1ZXJ5LXNjaGVtYSBpbmZlcmVuY2UpLlxuICpcbiAqIEBwYXJhbSByb3V0ZSAtIFJvdXRlIGRlZmluaXRpb24gdG8gcmV0dXJuIHVuY2hhbmdlZCB3aXRoIGluZmVycmVkIGdlbmVyaWNzLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcjxcbiAgVENvbnRleHQgPSB1bmtub3duLFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0ID0gUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbiAgVFF1ZXJ5IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgUyBleHRlbmRzIEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCA9IEZpbHRlclNjaGVtYSB8IHVuZGVmaW5lZCxcbiAgVENoaWxkcmVuIGV4dGVuZHMgcmVhZG9ubHkgKFJvdXRlTm9kZSB8IFJlZGlyZWN0KVtdIHwgdW5kZWZpbmVkID1cbiAgICByZWFkb25seSAoUm91dGVOb2RlIHwgUmVkaXJlY3QpW10gfCB1bmRlZmluZWQsXG4+KFxuICByb3V0ZTogUm91dGU8VENvbnRleHQsIFRQcmVwYXJlZCwgVFZhcmlhYmxlcywgVFF1ZXJ5LCBTLCBUQ2hpbGRyZW4+LFxuKTogUm91dGU8VENvbnRleHQsIFRQcmVwYXJlZCwgVFZhcmlhYmxlcywgVFF1ZXJ5LCBTLCBUQ2hpbGRyZW4+IHtcbiAgcmV0dXJuIHJvdXRlO1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=navigation-destination.test-d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"navigation-destination.test-d.d.ts","sourceRoot":"","sources":["../../../src/type-tests/navigation-destination.test-d.ts"],"names":[],"mappings":""}