@plumile/router 0.1.11 → 0.1.13

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 (127) hide show
  1. package/README.md +755 -1
  2. package/lib/esm/builder.d.ts.map +1 -1
  3. package/lib/esm/builder.js +10 -3
  4. package/lib/esm/eslint-rules/index.d.ts +2 -0
  5. package/lib/esm/eslint-rules/index.d.ts.map +1 -0
  6. package/lib/esm/eslint-rules/index.js +2 -0
  7. package/lib/esm/eslint-rules/no-direct-window-location-search.d.ts +4 -0
  8. package/lib/esm/eslint-rules/no-direct-window-location-search.d.ts.map +1 -0
  9. package/lib/esm/eslint-rules/no-direct-window-location-search.js +48 -0
  10. package/lib/esm/history/BrowserHistory.d.ts.map +1 -1
  11. package/lib/esm/history/BrowserHistory.js +4 -2
  12. package/lib/esm/index.d.ts +5 -0
  13. package/lib/esm/index.d.ts.map +1 -1
  14. package/lib/esm/index.js +6 -1
  15. package/lib/esm/routing/Link.d.ts +1 -0
  16. package/lib/esm/routing/Link.d.ts.map +1 -1
  17. package/lib/esm/routing/Link.js +35 -4
  18. package/lib/esm/routing/RouteComponentWrapper.d.ts.map +1 -1
  19. package/lib/esm/routing/RouteComponentWrapper.js +7 -2
  20. package/lib/esm/routing/createRouter.d.ts +8 -1
  21. package/lib/esm/routing/createRouter.d.ts.map +1 -1
  22. package/lib/esm/routing/createRouter.js +540 -17
  23. package/lib/esm/routing/devtools.d.ts +20 -0
  24. package/lib/esm/routing/devtools.d.ts.map +1 -0
  25. package/lib/esm/routing/devtools.js +678 -0
  26. package/lib/esm/routing/filters.d.ts +97 -0
  27. package/lib/esm/routing/filters.d.ts.map +1 -0
  28. package/lib/esm/routing/filters.js +557 -0
  29. package/lib/esm/routing/index.d.ts +10 -0
  30. package/lib/esm/routing/index.d.ts.map +1 -1
  31. package/lib/esm/routing/index.js +11 -1
  32. package/lib/esm/routing/useActiveFilters.d.ts +9 -0
  33. package/lib/esm/routing/useActiveFilters.d.ts.map +1 -0
  34. package/lib/esm/routing/useActiveFilters.js +38 -0
  35. package/lib/esm/routing/useFilterState.d.ts +10 -0
  36. package/lib/esm/routing/useFilterState.d.ts.map +1 -0
  37. package/lib/esm/routing/useFilterState.js +14 -0
  38. package/lib/esm/routing/useNavigate.d.ts +13 -0
  39. package/lib/esm/routing/useNavigate.d.ts.map +1 -0
  40. package/lib/esm/routing/useNavigate.js +11 -0
  41. package/lib/esm/routing/useNavigateWithQuery.d.ts +15 -0
  42. package/lib/esm/routing/useNavigateWithQuery.d.ts.map +1 -0
  43. package/lib/esm/routing/useNavigateWithQuery.js +95 -0
  44. package/lib/esm/routing/useQuery.d.ts +2 -0
  45. package/lib/esm/routing/useQuery.d.ts.map +1 -0
  46. package/lib/esm/routing/useQuery.js +9 -0
  47. package/lib/esm/routing/useQueryObject.d.ts +18 -0
  48. package/lib/esm/routing/useQueryObject.d.ts.map +1 -0
  49. package/lib/esm/routing/useQueryObject.js +107 -0
  50. package/lib/esm/routing/useQueryState.d.ts +13 -0
  51. package/lib/esm/routing/useQueryState.d.ts.map +1 -0
  52. package/lib/esm/routing/useQueryState.js +80 -0
  53. package/lib/esm/routing/useStableRefEquality.d.ts +5 -0
  54. package/lib/esm/routing/useStableRefEquality.d.ts.map +1 -0
  55. package/lib/esm/routing/useStableRefEquality.js +47 -0
  56. package/lib/esm/routing/useTypedQuery.d.ts +2 -0
  57. package/lib/esm/routing/useTypedQuery.d.ts.map +1 -0
  58. package/lib/esm/routing/useTypedQuery.js +36 -0
  59. package/lib/esm/tools/buildSearch.d.ts +12 -0
  60. package/lib/esm/tools/buildSearch.d.ts.map +1 -0
  61. package/lib/esm/tools/buildSearch.js +264 -0
  62. package/lib/esm/tools/query-dsl.d.ts +28 -0
  63. package/lib/esm/tools/query-dsl.d.ts.map +1 -0
  64. package/lib/esm/tools/query-dsl.js +250 -0
  65. package/lib/esm/tools/query.d.ts +2 -0
  66. package/lib/esm/tools/query.d.ts.map +1 -0
  67. package/lib/esm/tools/query.js +43 -0
  68. package/lib/esm/tools.d.ts +2 -2
  69. package/lib/esm/tools.d.ts.map +1 -1
  70. package/lib/esm/tools.js +3 -2
  71. package/lib/esm/type-tests/query-infer.test-d.d.ts +2 -0
  72. package/lib/esm/type-tests/query-infer.test-d.d.ts.map +1 -0
  73. package/lib/esm/type-tests/query-infer.test-d.js +49 -0
  74. package/lib/esm/types.d.ts +47 -4
  75. package/lib/esm/types.d.ts.map +1 -1
  76. package/lib/esm/types.js +1 -1
  77. package/lib/tsconfig.esm.tsbuildinfo +1 -1
  78. package/lib/types/builder.d.ts.map +1 -1
  79. package/lib/types/eslint-rules/index.d.ts +2 -0
  80. package/lib/types/eslint-rules/index.d.ts.map +1 -0
  81. package/lib/types/eslint-rules/no-direct-window-location-search.d.ts +4 -0
  82. package/lib/types/eslint-rules/no-direct-window-location-search.d.ts.map +1 -0
  83. package/lib/types/history/BrowserHistory.d.ts.map +1 -1
  84. package/lib/types/index.d.ts +5 -0
  85. package/lib/types/index.d.ts.map +1 -1
  86. package/lib/types/routing/Link.d.ts +1 -0
  87. package/lib/types/routing/Link.d.ts.map +1 -1
  88. package/lib/types/routing/RouteComponentWrapper.d.ts.map +1 -1
  89. package/lib/types/routing/createRouter.d.ts +8 -1
  90. package/lib/types/routing/createRouter.d.ts.map +1 -1
  91. package/lib/types/routing/devtools.d.ts +20 -0
  92. package/lib/types/routing/devtools.d.ts.map +1 -0
  93. package/lib/types/routing/filters.d.ts +97 -0
  94. package/lib/types/routing/filters.d.ts.map +1 -0
  95. package/lib/types/routing/index.d.ts +10 -0
  96. package/lib/types/routing/index.d.ts.map +1 -1
  97. package/lib/types/routing/useActiveFilters.d.ts +9 -0
  98. package/lib/types/routing/useActiveFilters.d.ts.map +1 -0
  99. package/lib/types/routing/useFilterState.d.ts +10 -0
  100. package/lib/types/routing/useFilterState.d.ts.map +1 -0
  101. package/lib/types/routing/useNavigate.d.ts +13 -0
  102. package/lib/types/routing/useNavigate.d.ts.map +1 -0
  103. package/lib/types/routing/useNavigateWithQuery.d.ts +15 -0
  104. package/lib/types/routing/useNavigateWithQuery.d.ts.map +1 -0
  105. package/lib/types/routing/useQuery.d.ts +2 -0
  106. package/lib/types/routing/useQuery.d.ts.map +1 -0
  107. package/lib/types/routing/useQueryObject.d.ts +18 -0
  108. package/lib/types/routing/useQueryObject.d.ts.map +1 -0
  109. package/lib/types/routing/useQueryState.d.ts +13 -0
  110. package/lib/types/routing/useQueryState.d.ts.map +1 -0
  111. package/lib/types/routing/useStableRefEquality.d.ts +5 -0
  112. package/lib/types/routing/useStableRefEquality.d.ts.map +1 -0
  113. package/lib/types/routing/useTypedQuery.d.ts +2 -0
  114. package/lib/types/routing/useTypedQuery.d.ts.map +1 -0
  115. package/lib/types/tools/buildSearch.d.ts +12 -0
  116. package/lib/types/tools/buildSearch.d.ts.map +1 -0
  117. package/lib/types/tools/query-dsl.d.ts +28 -0
  118. package/lib/types/tools/query-dsl.d.ts.map +1 -0
  119. package/lib/types/tools/query.d.ts +2 -0
  120. package/lib/types/tools/query.d.ts.map +1 -0
  121. package/lib/types/tools.d.ts +2 -2
  122. package/lib/types/tools.d.ts.map +1 -1
  123. package/lib/types/type-tests/query-infer.test-d.d.ts +2 -0
  124. package/lib/types/type-tests/query-infer.test-d.d.ts.map +1 -0
  125. package/lib/types/types.d.ts +47 -4
  126. package/lib/types/types.d.ts.map +1 -1
  127. package/package.json +7 -7
@@ -0,0 +1,250 @@
1
+ const __typedCache = new WeakMap();
2
+ function makeDescriptor(cfg) {
3
+ return {
4
+ __type: undefined,
5
+ optional: cfg.optional === true,
6
+ hasDefault: cfg.defaultValue !== undefined,
7
+ defaultValue: cfg.defaultValue,
8
+ parse: cfg.parse,
9
+ serialize: cfg.serialize,
10
+ };
11
+ }
12
+ function stringDesc() {
13
+ return makeDescriptor({
14
+ parse(values) {
15
+ return values.at(-1);
16
+ },
17
+ serialize(value) {
18
+ return [value];
19
+ },
20
+ });
21
+ }
22
+ function numberDesc() {
23
+ return makeDescriptor({
24
+ parse(values) {
25
+ const v = values.at(-1);
26
+ if (v == null)
27
+ return undefined;
28
+ const n = Number(v);
29
+ if (Number.isNaN(n))
30
+ return undefined;
31
+ return n;
32
+ },
33
+ serialize(value) {
34
+ return [String(value)];
35
+ },
36
+ });
37
+ }
38
+ function booleanDesc() {
39
+ return makeDescriptor({
40
+ parse(values) {
41
+ if (values.length === 0)
42
+ return undefined;
43
+ const v = values.at(-1);
44
+ if (v === '' || v == null)
45
+ return true;
46
+ const lower = v.toLowerCase();
47
+ if (lower === '1' || lower === 'true')
48
+ return true;
49
+ if (lower === '0' || lower === 'false')
50
+ return false;
51
+ return undefined;
52
+ },
53
+ serialize(value) {
54
+ if (value) {
55
+ return ['1'];
56
+ }
57
+ return ['0'];
58
+ },
59
+ });
60
+ }
61
+ function enumDesc(...values) {
62
+ const set = new Set(values);
63
+ return makeDescriptor({
64
+ parse(arr) {
65
+ const v = arr.at(-1);
66
+ if (v != null && set.has(v))
67
+ return v;
68
+ return undefined;
69
+ },
70
+ serialize(value) {
71
+ return [value];
72
+ },
73
+ });
74
+ }
75
+ function arrayOf(inner) {
76
+ return makeDescriptor({
77
+ parse(values) {
78
+ const out = [];
79
+ values.forEach((v) => {
80
+ const parsed = inner.parse([v]);
81
+ if (parsed !== undefined)
82
+ out.push(parsed);
83
+ });
84
+ return out;
85
+ },
86
+ serialize(value) {
87
+ return value.flatMap((v) => {
88
+ return inner.serialize(v);
89
+ });
90
+ },
91
+ });
92
+ }
93
+ function optional(d) {
94
+ return { ...d, optional: true };
95
+ }
96
+ function withDefault(d, value) {
97
+ return { ...d, defaultValue: value, hasDefault: true };
98
+ }
99
+ function emptyAsUndefined(d) {
100
+ return {
101
+ ...d,
102
+ parse(values) {
103
+ const v = d.parse(values);
104
+ if (v === '')
105
+ return undefined;
106
+ return v;
107
+ },
108
+ };
109
+ }
110
+ function custom(handlers) {
111
+ return makeDescriptor({
112
+ parse: handlers.parse,
113
+ serialize: handlers.serialize,
114
+ });
115
+ }
116
+ export const q = {
117
+ string: stringDesc,
118
+ number: numberDesc,
119
+ boolean: booleanDesc,
120
+ enum: enumDesc,
121
+ array: arrayOf,
122
+ optional,
123
+ default: withDefault,
124
+ emptyAsUndefined,
125
+ custom,
126
+ };
127
+ export function parseTypedQuery(schema, raw) {
128
+ if (schema == null)
129
+ return raw;
130
+ let cacheForSchema = __typedCache.get(schema);
131
+ if (cacheForSchema == null) {
132
+ cacheForSchema = new Map();
133
+ __typedCache.set(schema, cacheForSchema);
134
+ }
135
+ const canonicalParts = [];
136
+ const sortedKeys = Object.keys(raw).sort();
137
+ for (const k of sortedKeys) {
138
+ const v = raw[k];
139
+ if (Array.isArray(v)) {
140
+ v.forEach((vv) => {
141
+ canonicalParts.push(`${k}=${vv}`);
142
+ });
143
+ }
144
+ else {
145
+ canonicalParts.push(`${k}=${v}`);
146
+ }
147
+ }
148
+ const cacheKey = canonicalParts.join('&');
149
+ const cached = cacheForSchema.get(cacheKey);
150
+ if (cached !== undefined)
151
+ return cached;
152
+ const result = {};
153
+ const entries = Object.entries(schema);
154
+ for (const [key, descriptor] of entries) {
155
+ const rawValue = raw[key];
156
+ let values = [];
157
+ if (rawValue != null) {
158
+ if (Array.isArray(rawValue)) {
159
+ values = rawValue;
160
+ }
161
+ else {
162
+ values = [rawValue];
163
+ }
164
+ }
165
+ let parsed = descriptor.parse(values);
166
+ if (parsed === undefined) {
167
+ if (descriptor.hasDefault)
168
+ parsed = descriptor.defaultValue;
169
+ else if (descriptor.optional)
170
+ parsed = undefined;
171
+ }
172
+ if (parsed !== undefined)
173
+ result[key] = parsed;
174
+ else if (!descriptor.optional && descriptor.hasDefault) {
175
+ result[key] = descriptor.defaultValue;
176
+ }
177
+ }
178
+ let reuse;
179
+ cacheForSchema.forEach((value) => {
180
+ if (reuse != null) {
181
+ return;
182
+ }
183
+ if (value != null && typeof value === 'object') {
184
+ let equal = true;
185
+ const rKeys = Object.keys(result);
186
+ const vKeys = Object.keys(value);
187
+ if (rKeys.length !== vKeys.length) {
188
+ equal = false;
189
+ }
190
+ else {
191
+ for (const k of rKeys) {
192
+ if (!Object.prototype.hasOwnProperty.call(value, k)) {
193
+ equal = false;
194
+ break;
195
+ }
196
+ const resRec = result;
197
+ const valRec = value;
198
+ const a = resRec[k];
199
+ const b = valRec[k];
200
+ if (Array.isArray(a) && Array.isArray(b)) {
201
+ if (a.length !== b.length) {
202
+ equal = false;
203
+ break;
204
+ }
205
+ for (let i = 0; i < a.length; i += 1) {
206
+ if (a[i] !== b[i]) {
207
+ equal = false;
208
+ break;
209
+ }
210
+ }
211
+ if (!equal)
212
+ break;
213
+ }
214
+ else if (a !== b) {
215
+ equal = false;
216
+ break;
217
+ }
218
+ }
219
+ }
220
+ if (equal) {
221
+ reuse = value;
222
+ }
223
+ }
224
+ });
225
+ if (reuse != null) {
226
+ cacheForSchema.set(cacheKey, reuse);
227
+ return reuse;
228
+ }
229
+ cacheForSchema.set(cacheKey, result);
230
+ return result;
231
+ }
232
+ export function parseSearch(schema, search) {
233
+ let actual = search;
234
+ if (search.startsWith('?')) {
235
+ actual = search.slice(1);
236
+ }
237
+ const params = new URLSearchParams(actual);
238
+ const raw = {};
239
+ params.forEach((value, key) => {
240
+ const existing = raw[key];
241
+ if (existing == null)
242
+ raw[key] = value;
243
+ else if (Array.isArray(existing))
244
+ existing.push(value);
245
+ else
246
+ raw[key] = [existing, value];
247
+ });
248
+ return parseTypedQuery(schema, raw);
249
+ }
250
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktZHNsLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3Rvb2xzL3F1ZXJ5LWRzbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFHQSxNQUFNLFlBQVksR0FBRyxJQUFJLE9BQU8sRUFBNEIsQ0FBQztBQUc3RCxTQUFTLGNBQWMsQ0FBSSxHQUsxQjtJQUNDLE9BQU87UUFDTCxNQUFNLEVBQUUsU0FBcUI7UUFDN0IsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRLEtBQUssSUFBSTtRQUMvQixVQUFVLEVBQUUsR0FBRyxDQUFDLFlBQVksS0FBSyxTQUFTO1FBQzFDLFlBQVksRUFBRSxHQUFHLENBQUMsWUFBWTtRQUM5QixLQUFLLEVBQUUsR0FBRyxDQUFDLEtBQUs7UUFDaEIsU0FBUyxFQUFFLEdBQUcsQ0FBQyxTQUFTO0tBQ3pCLENBQUM7QUFDSixDQUFDO0FBR0QsU0FBUyxVQUFVO0lBQ2pCLE9BQU8sY0FBYyxDQUFTO1FBQzVCLEtBQUssQ0FBQyxNQUFNO1lBQ1YsT0FBTyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7UUFDdkIsQ0FBQztRQUNELFNBQVMsQ0FBQyxLQUFLO1lBQ2IsT0FBTyxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQ2pCLENBQUM7S0FDRixDQUFDLENBQUM7QUFDTCxDQUFDO0FBR0QsU0FBUyxVQUFVO0lBQ2pCLE9BQU8sY0FBYyxDQUFTO1FBQzVCLEtBQUssQ0FBQyxNQUFNO1lBQ1YsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3hCLElBQUksQ0FBQyxJQUFJLElBQUk7Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFDaEMsTUFBTSxDQUFDLEdBQUcsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDO1lBQ3BCLElBQUksTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUM7Z0JBQUUsT0FBTyxTQUFTLENBQUM7WUFDdEMsT0FB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LFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztJQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNILE9BQU8sZUFBZSxDQUFDLE1BQU0sRUFBRSxHQUFHLENBQVEsQ0FBQztBQUM3QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBRdWVyeURlc2NyaXB0b3IsIFF1ZXJ5U2NoZW1hLCBJbmZlclF1ZXJ5IH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG4vLyBXZWFrTWFwIGJhc2VkIGNhY2hlOiBzY2hlbWFSZWYgLT4gKGNhbm9uaWNhbFNlYXJjaCAtPiBwYXJzZWRSZXN1bHQpXG5jb25zdCBfX3R5cGVkQ2FjaGUgPSBuZXcgV2Vha01hcDxvYmplY3QsIE1hcDxzdHJpbmcsIGFueT4+KCk7XG5cbi8qKiBCdWlsZCBhIGRlc2NyaXB0b3Igd2l0aCBkZWZhdWx0cyAqL1xuZnVuY3Rpb24gbWFrZURlc2NyaXB0b3I8VD4oY2ZnOiB7XG4gIHBhcnNlOiBRdWVyeURlc2NyaXB0b3I8VD5bJ3BhcnNlJ107XG4gIHNlcmlhbGl6ZTogUXVlcnlEZXNjcmlwdG9yPFQ+WydzZXJpYWxpemUnXTtcbiAgb3B0aW9uYWw/OiBib29sZWFuO1xuICBkZWZhdWx0VmFsdWU/OiBUO1xufSk6IFF1ZXJ5RGVzY3JpcHRvcjxUPiB7XG4gIHJldHVybiB7XG4gICAgX190eXBlOiB1bmRlZmluZWQgYXMgYW55IGFzIFQsXG4gICAgb3B0aW9uYWw6IGNmZy5vcHRpb25hbCA9PT0gdHJ1ZSxcbiAgICBoYXNEZWZhdWx0OiBjZmcuZGVmYXVsdFZhbHVlICE9PSB1bmRlZmluZWQsXG4gICAgZGVmYXVsdFZhbHVlOiBjZmcuZGVmYXVsdFZhbHVlLFxuICAgIHBhcnNlOiBjZmcucGFyc2UsXG4gICAgc2VyaWFsaXplOiBjZmcuc2VyaWFsaXplLFxuICB9O1xufVxuXG4vKiogU3RyaW5nIGRlc2NyaXB0b3IgKi9cbmZ1bmN0aW9uIHN0cmluZ0Rlc2MoKTogUXVlcnlEZXNjcmlwdG9yPHN0cmluZz4ge1xuICByZXR1cm4gbWFrZURlc2NyaXB0b3I8c3RyaW5nPih7XG4gICAgcGFyc2UodmFsdWVzKSB7XG4gICAgICByZXR1cm4gdmFsdWVzLmF0KC0xKTtcbiAgICB9LFxuICAgIHNlcmlhbGl6ZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIFt2YWx1ZV07XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKiBOdW1iZXIgZGVzY3JpcHRvciAqL1xuZnVuY3Rpb24gbnVtYmVyRGVzYygpOiBRdWVyeURlc2NyaXB0b3I8bnVtYmVyPiB7XG4gIHJldHVybiBtYWtlRGVzY3JpcHRvcjxudW1iZXI+KHtcbiAgICBwYXJzZSh2YWx1ZXMpIHtcbiAgICAgIGNvbnN0IHYgPSB2YWx1ZXMuYXQoLTEpO1xuICAgICAgaWYgKHYgPT0gbnVsbCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IG4gPSBOdW1iZXIodik7XG4gICAgICBpZiAoTnVtYmVyLmlzTmFOKG4pKSByZXR1cm4gdW5kZWZpbmVkO1xuICAgICAgcmV0dXJuIG47XG4gICAgfSxcbiAgICBzZXJpYWxpemUodmFsdWUpIHtcbiAgICAgIHJldHVybiBbU3RyaW5nKHZhbHVlKV07XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKiBCb29sZWFuIGRlc2NyaXB0b3IgKi9cbmZ1bmN0aW9uIGJvb2xlYW5EZXNjKCk6IFF1ZXJ5RGVzY3JpcHRvcjxib29sZWFuPiB7XG4gIHJldHVybiBtYWtlRGVzY3JpcHRvcjxib29sZWFuPih7XG4gICAgcGFyc2UodmFsdWVzKSB7XG4gICAgICBpZiAodmFsdWVzLmxlbmd0aCA9PT0gMCkgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICAgIGNvbnN0IHYgPSB2YWx1ZXMuYXQoLTEpO1xuICAgICAgaWYgKHYgPT09ICcnIHx8IHYgPT0gbnVsbCkgcmV0dXJuIHRydWU7XG4gICAgICBjb25zdCBsb3dlciA9IHYudG9Mb3dlckNhc2UoKTtcbiAgICAgIGlmIChsb3dlciA9PT0gJzEnIHx8IGxvd2VyID09PSAndHJ1ZScpIHJldHVybiB0cnVlO1xuICAgICAgaWYgKGxvd2VyID09PSAnMCcgfHwgbG93ZXIgPT09ICdmYWxzZScpIHJldHVybiBmYWxzZTtcbiAgICAgIHJldHVybiB1bmRlZmluZWQ7XG4gICAgfSxcbiAgICBzZXJpYWxpemUodmFsdWUpIHtcbiAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICByZXR1cm4gWycxJ107XG4gICAgICB9XG4gICAgICByZXR1cm4gWycwJ107XG4gICAgfSxcbiAgfSk7XG59XG5cbi8qKiBFbnVtIGRlc2NyaXB0b3IgKi9cbmZ1bmN0aW9uIGVudW1EZXNjPFQgZXh0ZW5kcyBzdHJpbmc+KC4uLnZhbHVlczogVFtdKTogUXVlcnlEZXNjcmlwdG9yPFQ+IHtcbiAgY29uc3Qgc2V0ID0gbmV3IFNldCh2YWx1ZXMpO1xuICByZXR1cm4gbWFrZURlc2NyaXB0b3I8VD4oe1xuICAgIHBhcnNlKGFycikge1xuICAgICAgY29uc3QgdiA9IGFyci5hdCgtMSkgYXMgVCB8IHVuZGVmaW5lZDtcbiAgICAgIGlmICh2ICE9IG51bGwgJiYgc2V0Lmhhcyh2KSkgcmV0dXJuIHY7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH0sXG4gICAgc2VyaWFsaXplKHZhbHVlKSB7XG4gICAgICByZXR1cm4gW3ZhbHVlXTtcbiAgICB9LFxuICB9KTtcbn1cblxuLyoqIEFycmF5IGRlc2NyaXB0b3IgKi9cbmZ1bmN0aW9uIGFycmF5T2Y8VD4oaW5uZXI6IFF1ZXJ5RGVzY3JpcHRvcjxUPik6IFF1ZXJ5RGVzY3JpcHRvcjxUW10+IHtcbiAgcmV0dXJuIG1ha2VEZXNjcmlwdG9yPFRbXT4oe1xuICAgIHBhcnNlKHZhbHVlcykge1xuICAgICAgY29uc3Qgb3V0OiBUW10gPSBbXTtcbiAgICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgIGNvbnN0IHBhcnNlZCA9IGlubmVyLnBhcnNlKFt2XSk7XG4gICAgICAgIGlmIChwYXJzZWQgIT09IHVuZGVmaW5lZCkgb3V0LnB1c2gocGFyc2VkKTtcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIG91dDtcbiAgICB9LFxuICAgIHNlcmlhbGl6ZSh2YWx1ZSkge1xuICAgICAgcmV0dXJuIHZhbHVlLmZsYXRNYXAoKHYpID0+IHtcbiAgICAgICAgcmV0dXJuIGlubmVyLnNlcmlhbGl6ZSh2KTtcbiAgICAgIH0pO1xuICAgIH0sXG4gIH0pO1xufVxuXG4vKiogTWFyayBkZXNjcmlwdG9yIG9wdGlvbmFsICovXG5mdW5jdGlvbiBvcHRpb25hbDxUPihkOiBRdWVyeURlc2NyaXB0b3I8VD4pOiBRdWVyeURlc2NyaXB0b3I8VCB8IHVuZGVmaW5lZD4ge1xuICByZXR1cm4geyAuLi5kLCBvcHRpb25hbDogdHJ1ZSB9IGFzIGFueTtcbn1cblxuLyoqIEF0dGFjaCBkZWZhdWx0IHZhbHVlICovXG5mdW5jdGlvbiB3aXRoRGVmYXVsdDxUPihkOiBRdWVyeURlc2NyaXB0b3I8VD4sIHZhbHVlOiBUKTogUXVlcnlEZXNjcmlwdG9yPFQ+IHtcbiAgcmV0dXJuIHsgLi4uZCwgZGVmYXVsdFZhbHVlOiB2YWx1ZSwgaGFzRGVmYXVsdDogdHJ1ZSB9O1xufVxuXG4vKiogVHJlYXQgZW1wdHkgc3RyaW5nIHJlc3VsdCBmcm9tIHVuZGVybHlpbmcgZGVzY3JpcHRvciBhcyB1bmRlZmluZWQgKHBhcnNlIHNpZGUgb25seSkgKi9cbmZ1bmN0aW9uIGVtcHR5QXNVbmRlZmluZWQoZDogUXVlcnlEZXNjcmlwdG9yPHN0cmluZz4pOiBRdWVyeURlc2NyaXB0b3I8c3RyaW5nPiB7XG4gIHJldHVybiB7XG4gICAgLi4uZCxcbiAgICBwYXJzZSh2YWx1ZXMpIHtcbiAgICAgIGNvbnN0IHYgPSBkLnBhcnNlKHZhbHVlcyk7XG4gICAgICBpZiAodiA9PT0gJycpIHJldHVybiB1bmRlZmluZWQ7XG4gICAgICByZXR1cm4gdjtcbiAgICB9LFxuICB9IGFzIFF1ZXJ5RGVzY3JpcHRvcjxzdHJpbmc+O1xufVxuXG4vKiogQ3VzdG9tIGRlc2NyaXB0b3IgZmFjdG9yeSAqL1xuZnVuY3Rpb24gY3VzdG9tPFQ+KGhhbmRsZXJzOiB7XG4gIHBhcnNlOiAodmFsdWVzOiBzdHJpbmdbXSkgPT4gVCB8IHVuZGVmaW5lZDtcbiAgc2VyaWFsaXplOiAodmFsdWU6IFQpID0+IHN0cmluZ1tdO1xufSk6IFF1ZXJ5RGVzY3JpcHRvcjxUPiB7XG4gIHJldHVybiBtYWtlRGVzY3JpcHRvcjxUPih7XG4gICAgcGFyc2U6IGhhbmRsZXJzLnBhcnNlLFxuICAgIHNlcmlhbGl6ZTogaGFuZGxlcnMuc2VyaWFsaXplLFxuICB9KTtcbn1cblxuZXhwb3J0IGNvbnN0IHEgPSB7XG4gIHN0cmluZzogc3RyaW5nRGVzYyxcbiAgbnVtYmVyOiBudW1iZXJEZXNjLFxuICBib29sZWFuOiBib29sZWFuRGVzYyxcbiAgZW51bTogZW51bURlc2MsXG4gIGFycmF5OiBhcnJheU9mLFxuICBvcHRpb25hbCxcbiAgZGVmYXVsdDogd2l0aERlZmF1bHQsXG4gIGVtcHR5QXNVbmRlZmluZWQsXG4gIGN1c3RvbSxcbn07XG5cbi8qKiBQYXJzZSByYXcgcXVlcnkgb2JqZWN0IHVzaW5nIGEgc2NoZW1hIGludG8gYSB0eXBlZCBvYmplY3QgKi9cbmV4cG9ydCBmdW5jdGlvbiBwYXJzZVR5cGVkUXVlcnk8UyBleHRlbmRzIFF1ZXJ5U2NoZW1hIHwgdW5kZWZpbmVkPihcbiAgc2NoZW1hOiBTLFxuICByYXc6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPixcbik6IFMgZXh0ZW5kcyBRdWVyeVNjaGVtYSA/IEluZmVyUXVlcnk8RXhjbHVkZTxTLCB1bmRlZmluZWQ+PiA6IHR5cGVvZiByYXcge1xuICBpZiAoc2NoZW1hID09IG51bGwpIHJldHVybiByYXcgYXMgYW55O1xuICAvLyBCdWlsZCBjYW5vbmljYWwga2V5IGZyb20gcmF3IGVudHJpZXMgKHNvcnRlZCBrZXlzICYgdmFsdWVzKVxuICBsZXQgY2FjaGVGb3JTY2hlbWEgPSBfX3R5cGVkQ2FjaGUuZ2V0KHNjaGVtYSBhcyB1bmtub3duIGFzIG9iamVjdCk7XG4gIGlmIChjYWNoZUZvclNjaGVtYSA9PSBudWxsKSB7XG4gICAgY2FjaGVGb3JTY2hlbWEgPSBuZXcgTWFwKCk7XG4gICAgX190eXBlZENhY2hlLnNldChzY2hlbWEgYXMgdW5rbm93biBhcyBvYmplY3QsIGNhY2hlRm9yU2NoZW1hKTtcbiAgfVxuICBjb25zdCBjYW5vbmljYWxQYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qgc29ydGVkS2V5cyA9IE9iamVjdC5rZXlzKHJhdykuc29ydCgpO1xuICBmb3IgKGNvbnN0IGsgb2Ygc29ydGVkS2V5cykge1xuICAgIGNvbnN0IHYgPSByYXdba107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgIHYuZm9yRWFjaCgodnYpID0+IHtcbiAgICAgICAgY2Fub25pY2FsUGFydHMucHVzaChgJHtrfT0ke3Z2fWApO1xuICAgICAgfSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNhbm9uaWNhbFBhcnRzLnB1c2goYCR7a309JHt2fWApO1xuICAgIH1cbiAgfVxuICBjb25zdCBjYWNoZUtleSA9IGNhbm9uaWNhbFBhcnRzLmpvaW4oJyYnKTtcbiAgY29uc3QgY2FjaGVkID0gY2FjaGVGb3JTY2hlbWEuZ2V0KGNhY2hlS2V5KTtcbiAgaWYgKGNhY2hlZCAhPT0gdW5kZWZpbmVkKSByZXR1cm4gY2FjaGVkO1xuICBjb25zdCByZXN1bHQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgY29uc3QgZW50cmllcyA9IE9iamVjdC5lbnRyaWVzKHNjaGVtYSk7XG4gIGZvciAoY29uc3QgW2tleSwgZGVzY3JpcHRvcl0gb2YgZW50cmllcykge1xuICAgIGNvbnN0IHJhd1ZhbHVlID0gcmF3W2tleV07XG4gICAgbGV0IHZhbHVlczogc3RyaW5nW10gPSBbXTtcbiAgICBpZiAocmF3VmFsdWUgIT0gbnVsbCkge1xuICAgICAgaWYgKEFycmF5LmlzQXJyYXkocmF3VmFsdWUpKSB7XG4gICAgICAgIHZhbHVlcyA9IHJhd1ZhbHVlO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgdmFsdWVzID0gW3Jhd1ZhbHVlXTtcbiAgICAgIH1cbiAgICB9XG4gICAgbGV0IHBhcnNlZCA9IGRlc2NyaXB0b3IucGFyc2UodmFsdWVzKTtcbiAgICBpZiAocGFyc2VkID09PSB1bmRlZmluZWQpIHtcbiAgICAgIGlmIChkZXNjcmlwdG9yLmhhc0RlZmF1bHQpIHBhcnNlZCA9IGRlc2NyaXB0b3IuZGVmYXVsdFZhbHVlO1xuICAgICAgZWxzZSBpZiAoZGVzY3JpcHRvci5vcHRpb25hbCkgcGFyc2VkID0gdW5kZWZpbmVkO1xuICAgIH1cbiAgICBpZiAocGFyc2VkICE9PSB1bmRlZmluZWQpIHJlc3VsdFtrZXldID0gcGFyc2VkO1xuICAgIGVsc2UgaWYgKCFkZXNjcmlwdG9yLm9wdGlvbmFsICYmIGRlc2NyaXB0b3IuaGFzRGVmYXVsdCkge1xuICAgICAgcmVzdWx0W2tleV0gPSBkZXNjcmlwdG9yLmRlZmF1bHRWYWx1ZTtcbiAgICB9XG4gIH1cbiAgLy8gRGVlcCBlcXVhbGl0eTogaWYgYW5vdGhlciBjYWNoZWQgdmFsdWUgaXMgc3RydWN0dXJhbGx5IGVxdWFsLCByZXVzZSBpdHMgcmVmZXJlbmNlIGZvciBzdGFiaWxpdHlcbiAgbGV0IHJldXNlOiBhbnk7XG4gIGNhY2hlRm9yU2NoZW1hLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgaWYgKHJldXNlICE9IG51bGwpIHtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gICAgaWYgKHZhbHVlICE9IG51bGwgJiYgdHlwZW9mIHZhbHVlID09PSAnb2JqZWN0Jykge1xuICAgICAgbGV0IGVxdWFsID0gdHJ1ZTtcbiAgICAgIGNvbnN0IHJLZXlzID0gT2JqZWN0LmtleXMocmVzdWx0KTtcbiAgICAgIGNvbnN0IHZLZXlzID0gT2JqZWN0LmtleXModmFsdWUgYXMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4pO1xuICAgICAgaWYgKHJLZXlzLmxlbmd0aCAhPT0gdktleXMubGVuZ3RoKSB7XG4gICAgICAgIGVxdWFsID0gZmFsc2U7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBmb3IgKGNvbnN0IGsgb2YgcktleXMpIHtcbiAgICAgICAgICBpZiAoIU9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbCh2YWx1ZSwgaykpIHtcbiAgICAgICAgICAgIGVxdWFsID0gZmFsc2U7XG4gICAgICAgICAgICBicmVhaztcbiAgICAgICAgICB9XG4gICAgICAgICAgY29uc3QgcmVzUmVjID0gcmVzdWx0IGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgICAgIGNvbnN0IHZhbFJlYyA9IHZhbHVlIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgICAgICAgIGNvbnN0IGEgPSByZXNSZWNba107XG4gICAgICAgICAgY29uc3QgYiA9IHZhbFJlY1trXTtcbiAgICAgICAgICBpZiAoQXJyYXkuaXNBcnJheShhKSAmJiBBcnJheS5pc0FycmF5KGIpKSB7XG4gICAgICAgICAgICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgICAgICAgICAgIGVxdWFsID0gZmFsc2U7XG4gICAgICAgICAgICAgIGJyZWFrO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBhLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgICAgICAgICAgIGlmIChhW2ldICE9PSBiW2ldKSB7XG4gICAgICAgICAgICAgICAgZXF1YWwgPSBmYWxzZTtcbiAgICAgICAgICAgICAgICBicmVhaztcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfVxuICAgICAgICAgICAgaWYgKCFlcXVhbCkgYnJlYWs7XG4gICAgICAgICAgfSBlbHNlIGlmIChhICE9PSBiKSB7XG4gICAgICAgICAgICBlcXVhbCA9IGZhbHNlO1xuICAgICAgICAgICAgYnJlYWs7XG4gICAgICAgICAgfVxuICAgICAgICB9XG4gICAgICB9XG4gICAgICBpZiAoZXF1YWwpIHtcbiAgICAgICAgcmV1c2UgPSB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG4gIH0pO1xuICBpZiAocmV1c2UgIT0gbnVsbCkge1xuICAgIGNhY2hlRm9yU2NoZW1hLnNldChjYWNoZUtleSwgcmV1c2UpO1xuICAgIHJldHVybiByZXVzZTtcbiAgfVxuICBjYWNoZUZvclNjaGVtYS5zZXQoY2FjaGVLZXksIHJlc3VsdCk7XG4gIHJldHVybiByZXN1bHQgYXMgYW55O1xufVxuXG4vKiogQ29udmVuaWVuY2UgYWxpYXM6IHBhcnNlIGZ1bGwgc2VhcmNoIHN0cmluZyB3aXRoIG9wdGlvbmFsIHNjaGVtYSAqL1xuZXhwb3J0IGZ1bmN0aW9uIHBhcnNlU2VhcmNoPFMgZXh0ZW5kcyBRdWVyeVNjaGVtYSB8IHVuZGVmaW5lZD4oXG4gIHNjaGVtYTogUyxcbiAgc2VhcmNoOiBzdHJpbmcsXG4pOiBTIGV4dGVuZHMgUXVlcnlTY2hlbWFcbiAgPyBJbmZlclF1ZXJ5PEV4Y2x1ZGU8UywgdW5kZWZpbmVkPj5cbiAgOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXT4ge1xuICBsZXQgYWN0dWFsID0gc2VhcmNoO1xuICBpZiAoc2VhcmNoLnN0YXJ0c1dpdGgoJz8nKSkge1xuICAgIGFjdHVhbCA9IHNlYXJjaC5zbGljZSgxKTtcbiAgfVxuICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKGFjdHVhbCk7XG4gIGNvbnN0IHJhdzogUmVjb3JkPHN0cmluZywgc3RyaW5nIHwgc3RyaW5nW10+ID0ge307XG4gIHBhcmFtcy5mb3JFYWNoKCh2YWx1ZSwga2V5KSA9PiB7XG4gICAgY29uc3QgZXhpc3RpbmcgPSByYXdba2V5XTtcbiAgICBpZiAoZXhpc3RpbmcgPT0gbnVsbCkgcmF3W2tleV0gPSB2YWx1ZTtcbiAgICBlbHNlIGlmIChBcnJheS5pc0FycmF5KGV4aXN0aW5nKSkgZXhpc3RpbmcucHVzaCh2YWx1ZSk7XG4gICAgZWxzZSByYXdba2V5XSA9IFtleGlzdGluZywgdmFsdWVdO1xuICB9KTtcbiAgcmV0dXJuIHBhcnNlVHlwZWRRdWVyeShzY2hlbWEsIHJhdykgYXMgYW55O1xufVxuIl19
@@ -0,0 +1,2 @@
1
+ export declare function parseRawQuery(search: string | undefined): Record<string, string | string[]>;
2
+ //# sourceMappingURL=query.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../../src/tools/query.ts"],"names":[],"mappings":"AAYA,wBAAgB,aAAa,CAC3B,MAAM,EAAE,MAAM,GAAG,SAAS,GACzB,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CAAC,CAmCnC"}
@@ -0,0 +1,43 @@
1
+ const __rawQueryCache = new Map();
2
+ const __emptyRaw = Object.freeze({});
3
+ export function parseRawQuery(search) {
4
+ if (search == null || search === '' || search === '?')
5
+ return __emptyRaw;
6
+ let raw = search;
7
+ if (raw.startsWith('?'))
8
+ raw = raw.slice(1);
9
+ const params = new URLSearchParams(raw);
10
+ const agg = {};
11
+ params.forEach((value, key) => {
12
+ const existing = agg[key];
13
+ if (existing == null) {
14
+ agg[key] = value;
15
+ }
16
+ else if (Array.isArray(existing)) {
17
+ existing.push(value);
18
+ }
19
+ else {
20
+ agg[key] = [existing, value];
21
+ }
22
+ });
23
+ const parts = [];
24
+ const keys = Object.keys(agg).sort();
25
+ for (const k of keys) {
26
+ const v = agg[k];
27
+ if (Array.isArray(v)) {
28
+ for (const vv of v)
29
+ parts.push(`${k}=${vv}`);
30
+ }
31
+ else {
32
+ parts.push(`${k}=${v}`);
33
+ }
34
+ }
35
+ const key = parts.join('&');
36
+ const cached = __rawQueryCache.get(key);
37
+ if (cached != null) {
38
+ return cached;
39
+ }
40
+ __rawQueryCache.set(key, agg);
41
+ return agg;
42
+ }
43
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvcXVlcnkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBTUEsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLEVBQTZDLENBQUM7QUFDN0UsTUFBTSxVQUFVLEdBQXNDLE1BQU0sQ0FBQyxNQUFNLENBQUMsRUFBRSxDQUFDLENBQUM7QUFLeEUsTUFBTSxVQUFVLGFBQWEsQ0FDM0IsTUFBMEI7SUFFMUIsSUFBSSxNQUFNLElBQUksSUFBSSxJQUFJLE1BQU0sS0FBSyxFQUFFLElBQUksTUFBTSxLQUFLLEdBQUc7UUFBRSxPQUFPLFVBQVUsQ0FBQztJQUN6RSxJQUFJLEdBQUcsR0FBRyxNQUFNLENBQUM7SUFDakIsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLEdBQUcsQ0FBQztRQUFFLEdBQUcsR0FBRyxHQUFHLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQzVDLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBRXhDLE1BQU0sR0FBRyxHQUFzQyxFQUFFLENBQUM7SUFDbEQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxDQUFDLEtBQUssRUFBRSxHQUFHLEVBQUUsRUFBRTtRQUM1QixNQUFNLFFBQVEsR0FBRyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDMUIsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7WUFDckIsR0FBRyxDQUFDLEdBQUcsQ0FBQyxHQUFHLEtBQUssQ0FBQztRQUNuQixDQUFDO2FBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUM7WUFDbkMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUN2QixDQUFDO2FBQU0sQ0FBQztZQUNOLEdBQUcsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUMsQ0FBQztRQUMvQixDQUFDO0lBQ0gsQ0FBQyxDQUFDLENBQUM7SUFFSCxNQUFNLEtBQUssR0FBYSxFQUFFLENBQUM7SUFDM0IsTUFBTSxJQUFJLEdBQUcsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsQ0FBQztJQUNyQyxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3JCLE1BQU0sQ0FBQyxHQUFHLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNqQixJQUFJLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztZQUNyQixLQUFLLE1BQU0sRUFBRSxJQUFJLENBQUM7Z0JBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQy9DLENBQUM7YUFBTSxDQUFDO1lBQ04sS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLENBQUM7SUFDSCxDQUFDO0lBQ0QsTUFBTSxHQUFHLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUM1QixNQUFNLE1BQU0sR0FBRyxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hDLElBQUksTUFBTSxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ25CLE9BQU8sTUFBTSxDQUFDO0lBQ2hCLENBQUM7SUFDRCxlQUFlLENBQUMsR0FBRyxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUMsQ0FBQztJQUM5QixPQUFPLEdBQUcsQ0FBQztBQUNiLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFBhcnNlIGEgc2VhcmNoIHN0cmluZyBpbnRvIGEgcmF3IHF1ZXJ5IG9iamVjdCBtYXBwaW5nIGtleXMgdG8gc3RyaW5nIHwgc3RyaW5nW10uXG4gKiBEdXBsaWNhdGUga2V5cyBhcmUgYWNjdW11bGF0ZWQgaW50byBhcnJheXMgcHJlc2VydmluZyBlbmNvdW50ZXIgb3JkZXIuXG4gKi9cbi8vIFJhdyBxdWVyeSByZWZlcmVudGlhbCBjYWNoZSAoY2Fub25pY2FsS2V5IC0+IHF1ZXJ5T2JqZWN0KVxuLy8gUHJvdmlkZXMgc3RhYmxlIHJlZmVyZW5jZXMgYWNyb3NzIGlkZW50aWNhbCBzZW1hbnRpYyBxdWVyeSBjb250ZW50c1xuY29uc3QgX19yYXdRdWVyeUNhY2hlID0gbmV3IE1hcDxzdHJpbmcsIFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPj4oKTtcbmNvbnN0IF9fZW1wdHlSYXc6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPiA9IE9iamVjdC5mcmVlemUoe30pO1xuXG4vKipcbiAqIFBhcnNlIHJhdyBxdWVyeVxuICovXG5leHBvcnQgZnVuY3Rpb24gcGFyc2VSYXdRdWVyeShcbiAgc2VhcmNoOiBzdHJpbmcgfCB1bmRlZmluZWQsXG4pOiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmcgfCBzdHJpbmdbXT4ge1xuICBpZiAoc2VhcmNoID09IG51bGwgfHwgc2VhcmNoID09PSAnJyB8fCBzZWFyY2ggPT09ICc/JykgcmV0dXJuIF9fZW1wdHlSYXc7XG4gIGxldCByYXcgPSBzZWFyY2g7XG4gIGlmIChyYXcuc3RhcnRzV2l0aCgnPycpKSByYXcgPSByYXcuc2xpY2UoMSk7XG4gIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMocmF3KTtcbiAgLy8gRmlyc3QgYnVpbGQgYWdncmVnYXRlIG9iamVjdFxuICBjb25zdCBhZ2c6IFJlY29yZDxzdHJpbmcsIHN0cmluZyB8IHN0cmluZ1tdPiA9IHt9O1xuICBwYXJhbXMuZm9yRWFjaCgodmFsdWUsIGtleSkgPT4ge1xuICAgIGNvbnN0IGV4aXN0aW5nID0gYWdnW2tleV07XG4gICAgaWYgKGV4aXN0aW5nID09IG51bGwpIHtcbiAgICAgIGFnZ1trZXldID0gdmFsdWU7XG4gICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KGV4aXN0aW5nKSkge1xuICAgICAgZXhpc3RpbmcucHVzaCh2YWx1ZSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIGFnZ1trZXldID0gW2V4aXN0aW5nLCB2YWx1ZV07XG4gICAgfVxuICB9KTtcbiAgLy8gQnVpbGQgY2Fub25pY2FsIHNpZ25hdHVyZSAoc29ydGVkIGtleXMsIHByZXNlcnZlIGFycmF5IG9yZGVyKVxuICBjb25zdCBwYXJ0czogc3RyaW5nW10gPSBbXTtcbiAgY29uc3Qga2V5cyA9IE9iamVjdC5rZXlzKGFnZykuc29ydCgpO1xuICBmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xuICAgIGNvbnN0IHYgPSBhZ2dba107XG4gICAgaWYgKEFycmF5LmlzQXJyYXkodikpIHtcbiAgICAgIGZvciAoY29uc3QgdnYgb2YgdikgcGFydHMucHVzaChgJHtrfT0ke3Z2fWApO1xuICAgIH0gZWxzZSB7XG4gICAgICBwYXJ0cy5wdXNoKGAke2t9PSR7dn1gKTtcbiAgICB9XG4gIH1cbiAgY29uc3Qga2V5ID0gcGFydHMuam9pbignJicpO1xuICBjb25zdCBjYWNoZWQgPSBfX3Jhd1F1ZXJ5Q2FjaGUuZ2V0KGtleSk7XG4gIGlmIChjYWNoZWQgIT0gbnVsbCkge1xuICAgIHJldHVybiBjYWNoZWQ7XG4gIH1cbiAgX19yYXdRdWVyeUNhY2hlLnNldChrZXksIGFnZyk7XG4gIHJldHVybiBhZ2c7XG59XG4iXX0=
@@ -2,6 +2,6 @@ import type { ParamData } from 'path-to-regexp';
2
2
  import type { PrepareResult, PreparedMatch, Route, RouterMatchedRoute } from './types.js';
3
3
  import type { FlatRoute } from './builder.js';
4
4
  export declare function getMatchedRoute<TParams extends ParamData>(routes: FlatRoute<TParams>[], location: Location): RouterMatchedRoute<TParams> | null;
5
- export declare function prepareMatch<TParams extends ParamData>(match: RouterMatchedRoute<TParams> | null): PreparedMatch<TParams>;
6
- export declare function r<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData>(route: Route<TPrepared, TVariables>): Route<TPrepared, TVariables>;
5
+ export declare function prepareMatch<TParams extends ParamData>(match: RouterMatchedRoute<TParams> | null, query?: Record<string, unknown>): PreparedMatch<TParams>;
6
+ export declare function r<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQuery = unknown>(route: Route<TPrepared, TVariables, TQuery>): Route<TPrepared, TVariables, TQuery>;
7
7
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EAEb,KAAK,EACL,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAW9C,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAC5B,QAAQ,EAAE,QAAQ,GACjB,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,CAepC;AAUD,wBAAgB,YAAY,CAAC,OAAO,SAAS,SAAS,EACpD,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,GACxC,aAAa,CAAC,OAAO,CAAC,CA8CxB;AAmBD,wBAAgB,CAAC,CACf,SAAS,SAAS,aAAa,EAC/B,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC,SAAS,EAAE,UAAU,CAAC,CAEnE"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EAEb,KAAK,EACL,kBAAkB,EACnB,MAAM,YAAY,CAAC;AAEpB,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAW9C,wBAAgB,eAAe,CAAC,OAAO,SAAS,SAAS,EACvD,MAAM,EAAE,SAAS,CAAC,OAAO,CAAC,EAAE,EAC5B,QAAQ,EAAE,QAAQ,GACjB,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,CAepC;AAUD,wBAAgB,YAAY,CAAC,OAAO,SAAS,SAAS,EACpD,KAAK,EAAE,kBAAkB,CAAC,OAAO,CAAC,GAAG,IAAI,EACzC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC9B,aAAa,CAAC,OAAO,CAAC,CA+CxB;AAmBD,wBAAgB,CAAC,CACf,SAAS,SAAS,aAAa,EAC/B,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,MAAM,GAAG,OAAO,EAEhB,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,GAC1C,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAEtC"}
package/lib/esm/tools.js CHANGED
@@ -13,7 +13,7 @@ export function getMatchedRoute(routes, location) {
13
13
  }
14
14
  return null;
15
15
  }
16
- export function prepareMatch(match) {
16
+ export function prepareMatch(match, query) {
17
17
  if (match == null) {
18
18
  return {
19
19
  match,
@@ -31,6 +31,7 @@ export function prepareMatch(match) {
31
31
  matchedRoute,
32
32
  resourcePage,
33
33
  variables: { ...match.params },
34
+ query: query ?? {},
34
35
  });
35
36
  }
36
37
  if (resourcePage != null) {
@@ -55,4 +56,4 @@ export function prepareMatch(match) {
55
56
  export function r(route) {
56
57
  return route;
57
58
  }
58
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUJBLE1BQU0sVUFBVSxlQUFlLENBQzdCLE1BQTRCLEVBQzVCLFFBQWtCO0lBRWxCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7UUFDM0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckQsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDcEIsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDL0IsT0FBTztnQkFDTCxLQUFLO2dCQUNMLEtBQUs7Z0JBQ0wsSUFBSTtnQkFDSixNQUFNO2FBQ1AsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBVUQsTUFBTSxVQUFVLFlBQVksQ0FDMUIsS0FBeUM7SUFFekMsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbEIsT0FBTztZQUNMLEtBQUs7WUFDTCxNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUVqQyxNQUFNLE1BQU0sR0FBeUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDcEUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUV0RCxJQUFJLFNBQWtCLENBQUM7UUFDdkIsSUFBSSxRQUFtQyxDQUFDO1FBRXhDLElBQUksT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3BCLFFBQVEsR0FBRyxPQUFPLENBQUM7Z0JBQ2pCLEtBQUs7Z0JBQ0wsWUFBWTtnQkFDWixZQUFZO2dCQUVaLFNBQVMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRTthQUMvQixDQUFDLENBQUM7UUFDTCxDQUFDO1FBRUQsSUFBSSxZQUFZLElBQUksSUFBSSxFQUFFLENBQUM7WUFDekIsU0FBUyxHQUFHLFlBQVksQ0FBQyxHQUFHLEVBQUUsQ0FBQztZQUMvQixJQUFJLFNBQVMsSUFBSSxJQUFJLEVBQUUsQ0FBQztnQkFFdEIsWUFBWSxDQUFDLElBQUksRUFBRSxDQUFDO1lBQ3RCLENBQUM7UUFDSCxDQUFDO1FBQ0QsT0FBTztZQUNMLElBQUk7WUFDSixRQUFRO1lBQ1IsVUFBVSxFQUFFLFlBQVksQ0FBQyxVQUFVLElBQUksSUFBSTtZQUMzQyxNQUFNO1lBQ04sWUFBWTtTQUNiLENBQUM7SUFDSixDQUFDLENBQUMsQ0FBQztJQUVILE9BQU87UUFDTCxLQUFLO1FBQ0wsTUFBTTtLQUNQLENBQUM7QUFDSixDQUFDO0FBbUJELE1BQU0sVUFBVSxDQUFDLENBR2YsS0FBbUM7SUFDbkMsT0FBTyxLQUFLLENBQUM7QUFDZixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBQYXJhbURhdGEgfSBmcm9tICdwYXRoLXRvLXJlZ2V4cCc7XG5cbmltcG9ydCB0eXBlIHtcbiAgUHJlcGFyZVJlc3VsdCxcbiAgUHJlcGFyZWRNYXRjaCxcbiAgUHJlcGFyZWRNYXRjaFJvdXRlLFxuICBSb3V0ZSxcbiAgUm91dGVyTWF0Y2hlZFJvdXRlLFxufSBmcm9tICcuL3R5cGVzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBGbGF0Um91dGUgfSBmcm9tICcuL2J1aWxkZXIuanMnO1xuXG4vKipcbiAqIEZpbmRzIHRoZSBmaXJzdCByb3V0ZSB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuIGxvY2F0aW9uLlxuICogSXRlcmF0ZXMgdGhyb3VnaCBhbGwgcm91dGVzIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBtYXRjaCBmb3VuZC5cbiAqXG4gKiBAdGVtcGxhdGUgVFBhcmFtcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqIEBwYXJhbSByb3V0ZXMgLSBBcnJheSBvZiBmbGF0IHJvdXRlcyB0byBzZWFyY2ggdGhyb3VnaFxuICogQHBhcmFtIGxvY2F0aW9uIC0gQnJvd3NlciBsb2NhdGlvbiBvYmplY3QgY29udGFpbmluZyBwYXRobmFtZSB0byBtYXRjaFxuICogQHJldHVybnMgVGhlIG1hdGNoZWQgcm91dGUgd2l0aCBleHRyYWN0ZWQgcGFyYW1ldGVycywgb3IgbnVsbCBpZiBubyBtYXRjaFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWF0Y2hlZFJvdXRlPFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGE+KFxuICByb3V0ZXM6IEZsYXRSb3V0ZTxUUGFyYW1zPltdLFxuICBsb2NhdGlvbjogTG9jYXRpb24sXG4pOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFBhcmFtcz4gfCBudWxsIHtcbiAgZm9yIChjb25zdCByb3V0ZSBvZiByb3V0ZXMpIHtcbiAgICBjb25zdCBtYXRjaCA9IHJvdXRlLm1hdGNoRnVuY3Rpb24obG9jYXRpb24ucGF0aG5hbWUpO1xuICAgIGlmIChtYXRjaCAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHsgcGF0aCwgcGFyYW1zIH0gPSBtYXRjaDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1hdGNoLFxuICAgICAgICByb3V0ZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBQcmVwYXJlcyBhIG1hdGNoZWQgcm91dGUgZm9yIHJlbmRlcmluZyBieSBsb2FkaW5nIGNvbXBvbmVudHMgYW5kIGV4ZWN1dGluZyBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSByb3V0ZSBoaWVyYXJjaHkgYW5kIGxvYWRzIGFueSByZXF1aXJlZCBkYXRhIG9yIGNvbXBvbmVudHMuXG4gKlxuICogQHRlbXBsYXRlIFRQYXJhbXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKiBAcGFyYW0gbWF0Y2ggLSBUaGUgbWF0Y2hlZCByb3V0ZSB0byBwcmVwYXJlLCBvciBudWxsIGlmIG5vIHJvdXRlIG1hdGNoZWRcbiAqIEByZXR1cm5zIFByZXBhcmVkIG1hdGNoIHdpdGggbG9hZGVkIGNvbXBvbmVudHMgYW5kIGRhdGEgcmVhZHkgZm9yIHJlbmRlcmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZU1hdGNoPFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGE+KFxuICBtYXRjaDogUm91dGVyTWF0Y2hlZFJvdXRlPFRQYXJhbXM+IHwgbnVsbCxcbik6IFByZXBhcmVkTWF0Y2g8VFBhcmFtcz4ge1xuICBpZiAobWF0Y2ggPT0gbnVsbCkge1xuICAgIHJldHVybiB7XG4gICAgICBtYXRjaCxcbiAgICAgIHJvdXRlczogW10sXG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IG1hdGNoZWRSb3V0ZSA9IG1hdGNoLnJvdXRlO1xuXG4gIGNvbnN0IHJvdXRlczogUHJlcGFyZWRNYXRjaFJvdXRlW10gPSBtYXRjaC5yb3V0ZS5yb3V0ZXMubWFwKChyb3V0ZSkgPT4ge1xuICAgIGNvbnN0IHsgcGF0aCwgcHJlcGFyZSwgcmVzb3VyY2VQYWdlLCByZW5kZXIgfSA9IHJvdXRlO1xuXG4gICAgbGV0IENvbXBvbmVudDogdW5rbm93bjtcbiAgICBsZXQgcHJlcGFyZWQ6IFByZXBhcmVSZXN1bHQgfCB1bmRlZmluZWQ7XG5cbiAgICBpZiAocHJlcGFyZSAhPSBudWxsKSB7XG4gICAgICBwcmVwYXJlZCA9IHByZXBhcmUoe1xuICAgICAgICBtYXRjaCxcbiAgICAgICAgbWF0Y2hlZFJvdXRlLFxuICAgICAgICByZXNvdXJjZVBhZ2UsXG4gICAgICAgIC8vIEZpeCBPYmplY3QuY3JlYXRlKG51bGwpIGlzc3VlIGluIHBhdGgtdG8tcmVnZXhwXG4gICAgICAgIHZhcmlhYmxlczogeyAuLi5tYXRjaC5wYXJhbXMgfSxcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIGlmIChyZXNvdXJjZVBhZ2UgIT0gbnVsbCkge1xuICAgICAgQ29tcG9uZW50ID0gcmVzb3VyY2VQYWdlLmdldCgpO1xuICAgICAgaWYgKENvbXBvbmVudCA9PSBudWxsKSB7XG4gICAgICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tZmxvYXRpbmctcHJvbWlzZXNcbiAgICAgICAgcmVzb3VyY2VQYWdlLmxvYWQoKTsgLy8gZWFnZXJseSBsb2FkXG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICBwYXRoLFxuICAgICAgcHJlcGFyZWQsXG4gICAgICByZWRpcmVjdFRvOiBtYXRjaGVkUm91dGUucmVkaXJlY3RUbyA/PyBudWxsLFxuICAgICAgcmVuZGVyLFxuICAgICAgcmVzb3VyY2VQYWdlLFxuICAgIH07XG4gIH0pO1xuXG4gIHJldHVybiB7XG4gICAgbWF0Y2gsXG4gICAgcm91dGVzLFxuICB9O1xufVxuXG4vKipcbiAqIFR5cGUgaGVscGVyIGZ1bmN0aW9uIGZvciBjcmVhdGluZyBzdHJvbmdseS10eXBlZCByb3V0ZSBkZWZpbml0aW9ucy5cbiAqIFRoaXMgZnVuY3Rpb24gZG9lc24ndCBtb2RpZnkgdGhlIHJvdXRlLCBpdCBqdXN0IHByb3ZpZGVzIFR5cGVTY3JpcHQgdHlwZSBpbmZlcmVuY2UuXG4gKlxuICogQHRlbXBsYXRlIFRQcmVwYXJlZCAtIFRoZSB0eXBlIG9mIHByZXBhcmVkIGRhdGEgcmV0dXJuZWQgYnkgdGhlIHJvdXRlJ3MgcHJlcGFyZSBmdW5jdGlvblxuICogQHRlbXBsYXRlIFRWYXJpYWJsZXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKiBAcGFyYW0gcm91dGUgLSBUaGUgcm91dGUgY29uZmlndXJhdGlvbiB0byB0eXBlXG4gKiBAcmV0dXJucyBUaGUgc2FtZSByb3V0ZSB3aXRoIHByb3BlciBUeXBlU2NyaXB0IHR5cGVzXG4gKlxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIGNvbnN0IHVzZXJSb3V0ZSA9IHI8eyB1c2VyOiBVc2VyIH0sIHsgaWQ6IHN0cmluZyB9Pih7XG4gKiAgIHBhdGg6ICcvdXNlcnMvOmlkJyxcbiAqICAgcHJlcGFyZTogKHsgdmFyaWFibGVzIH0pID0+IGZldGNoVXNlcih2YXJpYWJsZXMuaWQpLFxuICogfSk7XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIHI8XG4gIFRQcmVwYXJlZCBleHRlbmRzIFByZXBhcmVSZXN1bHQsXG4gIFRWYXJpYWJsZXMgZXh0ZW5kcyBQYXJhbURhdGEgPSBQYXJhbURhdGEsXG4+KHJvdXRlOiBSb3V0ZTxUUHJlcGFyZWQsIFRWYXJpYWJsZXM+KTogUm91dGU8VFByZXBhcmVkLCBUVmFyaWFibGVzPiB7XG4gIHJldHVybiByb3V0ZTtcbn1cbiJdfQ==
59
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBcUJBLE1BQU0sVUFBVSxlQUFlLENBQzdCLE1BQTRCLEVBQzVCLFFBQWtCO0lBRWxCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7UUFDM0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckQsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDcEIsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDL0IsT0FBTztnQkFDTCxLQUFLO2dCQUNMLEtBQUs7Z0JBQ0wsSUFBSTtnQkFDSixNQUFNO2FBQ1AsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBVUQsTUFBTSxVQUFVLFlBQVksQ0FDMUIsS0FBeUMsRUFDekMsS0FBK0I7SUFFL0IsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbEIsT0FBTztZQUNMLEtBQUs7WUFDTCxNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUVqQyxNQUFNLE1BQU0sR0FBeUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDcEUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUV0RCxJQUFJLFNBQWtCLENBQUM7UUFDdkIsSUFBSSxRQUFtQyxDQUFDO1FBRXhDLElBQUksT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3BCLFFBQVEsR0FBRyxPQUFPLENBQUM7Z0JBQ2pCLEtBQUs7Z0JBQ0wsWUFBWTtnQkFDWixZQUFZO2dCQUVaLFNBQVMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRTtnQkFDOUIsS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFO2FBQ25CLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLFlBQVksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN6QixTQUFTLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQy9CLElBQUksU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUV0QixZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPO1lBQ0wsSUFBSTtZQUNKLFFBQVE7WUFDUixVQUFVLEVBQUUsWUFBWSxDQUFDLFVBQVUsSUFBSSxJQUFJO1lBQzNDLE1BQU07WUFDTixZQUFZO1NBQ2IsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTztRQUNMLEtBQUs7UUFDTCxNQUFNO0tBQ1AsQ0FBQztBQUNKLENBQUM7QUFtQkQsTUFBTSxVQUFVLENBQUMsQ0FLZixLQUEyQztJQUUzQyxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBhcmFtRGF0YSB9IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcblxuaW1wb3J0IHR5cGUge1xuICBQcmVwYXJlUmVzdWx0LFxuICBQcmVwYXJlZE1hdGNoLFxuICBQcmVwYXJlZE1hdGNoUm91dGUsXG4gIFJvdXRlLFxuICBSb3V0ZXJNYXRjaGVkUm91dGUsXG59IGZyb20gJy4vdHlwZXMuanMnO1xuXG5pbXBvcnQgdHlwZSB7IEZsYXRSb3V0ZSB9IGZyb20gJy4vYnVpbGRlci5qcyc7XG5cbi8qKlxuICogRmluZHMgdGhlIGZpcnN0IHJvdXRlIHRoYXQgbWF0Y2hlcyB0aGUgZ2l2ZW4gbG9jYXRpb24uXG4gKiBJdGVyYXRlcyB0aHJvdWdoIGFsbCByb3V0ZXMgYW5kIHJldHVybnMgdGhlIGZpcnN0IG1hdGNoIGZvdW5kLlxuICpcbiAqIEB0ZW1wbGF0ZSBUUGFyYW1zIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICogQHBhcmFtIHJvdXRlcyAtIEFycmF5IG9mIGZsYXQgcm91dGVzIHRvIHNlYXJjaCB0aHJvdWdoXG4gKiBAcGFyYW0gbG9jYXRpb24gLSBCcm93c2VyIGxvY2F0aW9uIG9iamVjdCBjb250YWluaW5nIHBhdGhuYW1lIHRvIG1hdGNoXG4gKiBAcmV0dXJucyBUaGUgbWF0Y2hlZCByb3V0ZSB3aXRoIGV4dHJhY3RlZCBwYXJhbWV0ZXJzLCBvciBudWxsIGlmIG5vIG1hdGNoXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRNYXRjaGVkUm91dGU8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YT4oXG4gIHJvdXRlczogRmxhdFJvdXRlPFRQYXJhbXM+W10sXG4gIGxvY2F0aW9uOiBMb2NhdGlvbixcbik6IFJvdXRlck1hdGNoZWRSb3V0ZTxUUGFyYW1zPiB8IG51bGwge1xuICBmb3IgKGNvbnN0IHJvdXRlIG9mIHJvdXRlcykge1xuICAgIGNvbnN0IG1hdGNoID0gcm91dGUubWF0Y2hGdW5jdGlvbihsb2NhdGlvbi5wYXRobmFtZSk7XG4gICAgaWYgKG1hdGNoICE9PSBmYWxzZSkge1xuICAgICAgY29uc3QgeyBwYXRoLCBwYXJhbXMgfSA9IG1hdGNoO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgbWF0Y2gsXG4gICAgICAgIHJvdXRlLFxuICAgICAgICBwYXRoLFxuICAgICAgICBwYXJhbXMsXG4gICAgICB9O1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBudWxsO1xufVxuXG4vKipcbiAqIFByZXBhcmVzIGEgbWF0Y2hlZCByb3V0ZSBmb3IgcmVuZGVyaW5nIGJ5IGxvYWRpbmcgY29tcG9uZW50cyBhbmQgZXhlY3V0aW5nIHByZXBhcmUgZnVuY3Rpb25zLlxuICogVGhpcyBmdW5jdGlvbiBwcm9jZXNzZXMgdGhlIHJvdXRlIGhpZXJhcmNoeSBhbmQgbG9hZHMgYW55IHJlcXVpcmVkIGRhdGEgb3IgY29tcG9uZW50cy5cbiAqXG4gKiBAdGVtcGxhdGUgVFBhcmFtcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqIEBwYXJhbSBtYXRjaCAtIFRoZSBtYXRjaGVkIHJvdXRlIHRvIHByZXBhcmUsIG9yIG51bGwgaWYgbm8gcm91dGUgbWF0Y2hlZFxuICogQHJldHVybnMgUHJlcGFyZWQgbWF0Y2ggd2l0aCBsb2FkZWQgY29tcG9uZW50cyBhbmQgZGF0YSByZWFkeSBmb3IgcmVuZGVyaW5nXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBwcmVwYXJlTWF0Y2g8VFBhcmFtcyBleHRlbmRzIFBhcmFtRGF0YT4oXG4gIG1hdGNoOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFBhcmFtcz4gfCBudWxsLFxuICBxdWVyeT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuKTogUHJlcGFyZWRNYXRjaDxUUGFyYW1zPiB7XG4gIGlmIChtYXRjaCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1hdGNoLFxuICAgICAgcm91dGVzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgbWF0Y2hlZFJvdXRlID0gbWF0Y2gucm91dGU7XG5cbiAgY29uc3Qgcm91dGVzOiBQcmVwYXJlZE1hdGNoUm91dGVbXSA9IG1hdGNoLnJvdXRlLnJvdXRlcy5tYXAoKHJvdXRlKSA9PiB7XG4gICAgY29uc3QgeyBwYXRoLCBwcmVwYXJlLCByZXNvdXJjZVBhZ2UsIHJlbmRlciB9ID0gcm91dGU7XG5cbiAgICBsZXQgQ29tcG9uZW50OiB1bmtub3duO1xuICAgIGxldCBwcmVwYXJlZDogUHJlcGFyZVJlc3VsdCB8IHVuZGVmaW5lZDtcblxuICAgIGlmIChwcmVwYXJlICE9IG51bGwpIHtcbiAgICAgIHByZXBhcmVkID0gcHJlcGFyZSh7XG4gICAgICAgIG1hdGNoLFxuICAgICAgICBtYXRjaGVkUm91dGUsXG4gICAgICAgIHJlc291cmNlUGFnZSxcbiAgICAgICAgLy8gRml4IE9iamVjdC5jcmVhdGUobnVsbCkgaXNzdWUgaW4gcGF0aC10by1yZWdleHBcbiAgICAgICAgdmFyaWFibGVzOiB7IC4uLm1hdGNoLnBhcmFtcyB9LFxuICAgICAgICBxdWVyeTogcXVlcnkgPz8ge30sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzb3VyY2VQYWdlICE9IG51bGwpIHtcbiAgICAgIENvbXBvbmVudCA9IHJlc291cmNlUGFnZS5nZXQoKTtcbiAgICAgIGlmIChDb21wb25lbnQgPT0gbnVsbCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzXG4gICAgICAgIHJlc291cmNlUGFnZS5sb2FkKCk7IC8vIGVhZ2VybHkgbG9hZFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcGF0aCxcbiAgICAgIHByZXBhcmVkLFxuICAgICAgcmVkaXJlY3RUbzogbWF0Y2hlZFJvdXRlLnJlZGlyZWN0VG8gPz8gbnVsbCxcbiAgICAgIHJlbmRlcixcbiAgICAgIHJlc291cmNlUGFnZSxcbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIG1hdGNoLFxuICAgIHJvdXRlcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBUeXBlIGhlbHBlciBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgc3Ryb25nbHktdHlwZWQgcm91dGUgZGVmaW5pdGlvbnMuXG4gKiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgbW9kaWZ5IHRoZSByb3V0ZSwgaXQganVzdCBwcm92aWRlcyBUeXBlU2NyaXB0IHR5cGUgaW5mZXJlbmNlLlxuICpcbiAqIEB0ZW1wbGF0ZSBUUHJlcGFyZWQgLSBUaGUgdHlwZSBvZiBwcmVwYXJlZCBkYXRhIHJldHVybmVkIGJ5IHRoZSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb25cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICogQHBhcmFtIHJvdXRlIC0gVGhlIHJvdXRlIGNvbmZpZ3VyYXRpb24gdG8gdHlwZVxuICogQHJldHVybnMgVGhlIHNhbWUgcm91dGUgd2l0aCBwcm9wZXIgVHlwZVNjcmlwdCB0eXBlc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB1c2VyUm91dGUgPSByPHsgdXNlcjogVXNlciB9LCB7IGlkOiBzdHJpbmcgfT4oe1xuICogICBwYXRoOiAnL3VzZXJzLzppZCcsXG4gKiAgIHByZXBhcmU6ICh7IHZhcmlhYmxlcyB9KSA9PiBmZXRjaFVzZXIodmFyaWFibGVzLmlkKSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByPFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0LFxuICBUVmFyaWFibGVzIGV4dGVuZHMgUGFyYW1EYXRhID0gUGFyYW1EYXRhLFxuICBUUXVlcnkgPSB1bmtub3duLFxuPihcbiAgcm91dGU6IFJvdXRlPFRQcmVwYXJlZCwgVFZhcmlhYmxlcywgVFF1ZXJ5Pixcbik6IFJvdXRlPFRQcmVwYXJlZCwgVFZhcmlhYmxlcywgVFF1ZXJ5PiB7XG4gIHJldHVybiByb3V0ZTtcbn1cbiJdfQ==
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=query-infer.test-d.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query-infer.test-d.d.ts","sourceRoot":"","sources":["../../../src/type-tests/query-infer.test-d.ts"],"names":[],"mappings":"AAiEA,OAAO,EAAE,CAAC"}
@@ -0,0 +1,49 @@
1
+ import { q, parseTypedQuery } from '../tools/query-dsl.js';
2
+ const schema1 = {
3
+ page: q.default(q.number(), 1),
4
+ tag: q.array(q.string()),
5
+ mode: q.optional(q.enum('list', 'grid')),
6
+ flag: q.optional(q.boolean()),
7
+ raw: q.string(),
8
+ };
9
+ const parsed1 = parseTypedQuery(schema1, {
10
+ page: '2',
11
+ tag: ['a', 'b'],
12
+ mode: 'list',
13
+ flag: '1',
14
+ raw: 'x',
15
+ });
16
+ _consume(parsed1);
17
+ expectType(parsed1.page);
18
+ expectType(parsed1.tag);
19
+ expectType(parsed1.mode);
20
+ expectType(parsed1.flag);
21
+ expectType(parsed1.raw);
22
+ expectType(parsed1.page);
23
+ expectType(parsed1.tag);
24
+ const schema2 = { a: q.default(q.optional(q.number()), 5) };
25
+ const parsed2 = parseTypedQuery(schema2, {});
26
+ expectType(parsed2.a);
27
+ expectType(parsed2.a);
28
+ const schema3 = { tags: q.array(q.string()) };
29
+ const parsed3 = parseTypedQuery(schema3, {});
30
+ expectType(parsed3.tags);
31
+ expectType(parsed3.tags);
32
+ parsed1.page;
33
+ parsed2.a;
34
+ parsed3.tags.length;
35
+ const routeWithQuery = {
36
+ path: '/x/:id',
37
+ query: { page: q.number() },
38
+ prepare: ({ variables, query }) => ({
39
+ value: Number(variables.id) + query.page,
40
+ }),
41
+ };
42
+ routeWithQuery.prepare?.({
43
+ match: undefined,
44
+ matchedRoute: undefined,
45
+ resourcePage: undefined,
46
+ variables: { id: '1' },
47
+ query: { page: 2 },
48
+ });
49
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicXVlcnktaW5mZXIudGVzdC1kLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL3R5cGUtdGVzdHMvcXVlcnktaW5mZXIudGVzdC1kLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUlBLE9BQU8sRUFBRSxDQUFDLEVBQUUsZUFBZSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFNM0QsTUFBTSxPQUFPLEdBQUc7SUFDZCxJQUFJLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQzlCLEdBQUcsRUFBRSxDQUFDLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxNQUFNLEVBQUUsQ0FBQztJQUN4QixJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxNQUFNLENBQUMsQ0FBQztJQUN4QyxJQUFJLEVBQUUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDN0IsR0FBRyxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUU7Q0FDUCxDQUFDO0FBS1gsTUFBTSxPQUFPLEdBQUcsZUFBZSxDQUFDLE9BQU8sRUFBRTtJQUN2QyxJQUFJLEVBQUUsR0FBRztJQUNULEdBQUcsRUFBRSxDQUFDLEdBQUcsRUFBRSxHQUFHLENBQUM7SUFDZixJQUFJLEVBQUUsTUFBTTtJQUNaLElBQUksRUFBRSxHQUFHO0lBQ1QsR0FBRyxFQUFFLEdBQUc7Q0FDVCxDQUFDLENBQUM7QUFHSCxRQUFRLENBQTZCLE9BQU8sQ0FBQyxDQUFDO0FBRTlDLFVBQVUsQ0FBUyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFDakMsVUFBVSxDQUFXLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNsQyxVQUFVLENBQThCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUN0RCxVQUFVLENBQXNCLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUM5QyxVQUFVLENBQVMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxDQUFDO0FBR2hDLFVBQVUsQ0FBUyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUM7QUFFakMsVUFBVSxDQUFTLE9BQU8sQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUtoQyxNQUFNLE9BQU8sR0FBRyxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQVcsQ0FBQztBQUNyRSxNQUFNLE9BQU8sR0FBRyxlQUFlLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDO0FBRTdDLFVBQVUsQ0FBcUIsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBRTFDLFVBQVUsQ0FBUyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7QUFHOUIsTUFBTSxPQUFPLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLEtBQUssQ0FBQyxDQUFDLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBVyxDQUFDO0FBQ3ZELE1BQU0sT0FBTyxHQUFHLGVBQWUsQ0FBQyxPQUFPLEVBQUUsRUFBRSxDQUFDLENBQUM7QUFDN0MsVUFBVSxDQUFXLE9BQU8sQ0FBQyxJQUFJLENBQUMsQ0FBQztBQUVuQyxVQUFVLENBQVMsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO0FBR2pDLE9BQU8sQ0FBQyxJQUFJLENBQUM7QUFDYixPQUFPLENBQUMsQ0FBQyxDQUFDO0FBQ1YsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUM7QUFVcEIsTUFBTSxjQUFjLEdBQTZCO0lBQy9DLElBQUksRUFBRSxRQUFRO0lBQ2QsS0FBSyxFQUFFLEVBQUUsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLEVBQUUsRUFBRTtJQUMzQixPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUNsQyxLQUFLLEVBQUUsTUFBTSxDQUFDLFNBQVMsQ0FBQyxFQUFFLENBQUMsR0FBRyxLQUFLLENBQUMsSUFBSTtLQUN6QyxDQUFDO0NBQ0gsQ0FBQztBQUVGLGNBQWMsQ0FBQyxPQUFPLEVBQUUsQ0FBQztJQUV2QixLQUFLLEVBQUUsU0FBUztJQUVoQixZQUFZLEVBQUUsU0FBZ0I7SUFDOUIsWUFBWSxFQUFFLFNBQVM7SUFDdkIsU0FBUyxFQUFFLEVBQUUsRUFBRSxFQUFFLEdBQUcsRUFBRTtJQUN0QixLQUFLLEVBQUUsRUFBRSxJQUFJLEVBQUUsQ0FBQyxFQUFFO0NBQ25CLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qIGVzbGludC1kaXNhYmxlICovXG4vLyBUeXBlIEluZmVyZW5jZSBUZXN0cyBmb3IgUGx1bWlsZSBSb3V0ZXIgUXVlcnkgRFNMXG4vLyBUaGVzZSBhc3NlcnRpb25zIHJlbHkgb24gVHlwZVNjcmlwdCBjb21waWxlLXRpbWUgY2hlY2tpbmcuXG5cbmltcG9ydCB7IHEsIHBhcnNlVHlwZWRRdWVyeSB9IGZyb20gJy4uL3Rvb2xzL3F1ZXJ5LWRzbC5qcyc7XG5pbXBvcnQgdHlwZSB7IEluZmVyUXVlcnksIFJvdXRlIH0gZnJvbSAnLi4vdHlwZXMuanMnO1xuXG5kZWNsYXJlIGZ1bmN0aW9uIGV4cGVjdFR5cGU8VD4oX3ZhbHVlOiBUKTogdm9pZDtcblxuLy8gU2NoZW1hIDFcbmNvbnN0IHNjaGVtYTEgPSB7XG4gIHBhZ2U6IHEuZGVmYXVsdChxLm51bWJlcigpLCAxKSxcbiAgdGFnOiBxLmFycmF5KHEuc3RyaW5nKCkpLFxuICBtb2RlOiBxLm9wdGlvbmFsKHEuZW51bSgnbGlzdCcsICdncmlkJykpLFxuICBmbGFnOiBxLm9wdGlvbmFsKHEuYm9vbGVhbigpKSxcbiAgcmF3OiBxLnN0cmluZygpLFxufSBhcyBjb25zdDtcblxuLy8gSGVscGVyIHRvIGNvbnN1bWUgdHlwZXMgbGF0ZXJcbmRlY2xhcmUgZnVuY3Rpb24gX2NvbnN1bWU8VD4oX3Y6IFQpOiB2b2lkO1xuXG5jb25zdCBwYXJzZWQxID0gcGFyc2VUeXBlZFF1ZXJ5KHNjaGVtYTEsIHtcbiAgcGFnZTogJzInLFxuICB0YWc6IFsnYScsICdiJ10sXG4gIG1vZGU6ICdsaXN0JyxcbiAgZmxhZzogJzEnLFxuICByYXc6ICd4Jyxcbn0pO1xuXG4vLyBDb25zdW1lIGluZmVycmVkIHR5cGUgKGFmdGVyIGRlZmluaXRpb24gdG8gYXZvaWQgdGVtcG9yYWwgZGVhZCB6b25lIGlzc3Vlcylcbl9jb25zdW1lPEluZmVyUXVlcnk8dHlwZW9mIHNjaGVtYTE+PihwYXJzZWQxKTtcblxuZXhwZWN0VHlwZTxudW1iZXI+KHBhcnNlZDEucGFnZSk7XG5leHBlY3RUeXBlPHN0cmluZ1tdPihwYXJzZWQxLnRhZyk7XG5leHBlY3RUeXBlPCdsaXN0JyB8ICdncmlkJyB8IHVuZGVmaW5lZD4ocGFyc2VkMS5tb2RlKTtcbmV4cGVjdFR5cGU8Ym9vbGVhbiB8IHVuZGVmaW5lZD4ocGFyc2VkMS5mbGFnKTtcbmV4cGVjdFR5cGU8c3RyaW5nPihwYXJzZWQxLnJhdyk7XG5cbi8vIEB0cy1leHBlY3QtZXJyb3IgcGFnZSBpcyBudW1iZXJcbmV4cGVjdFR5cGU8c3RyaW5nPihwYXJzZWQxLnBhZ2UpO1xuLy8gQHRzLWV4cGVjdC1lcnJvciB0YWcgaXMgc3RyaW5nW11cbmV4cGVjdFR5cGU8c3RyaW5nPihwYXJzZWQxLnRhZyk7XG4vLyBSZW1vdmUgaW5jb3JyZWN0IGV4cGVjdGF0aW9uOiByYXcgaXMgcmVxdWlyZWQgc3RyaW5nOyBhc3NlcnRpbmcgYnJvYWRlciB0eXBlIHNob3VsZCBlcnJvci5cbi8vIChyYXcgbmVnYXRpdmUgdGVzdCBvbWl0dGVkOiB3aWRlbmluZyB0byBzdHJpbmcgfCB1bmRlZmluZWQgd291bGQgbm90IGVycm9yIGluIFRTKVxuXG4vLyBTY2hlbWEgMiAob3B0aW9uYWwgKyBkZWZhdWx0KVxuY29uc3Qgc2NoZW1hMiA9IHsgYTogcS5kZWZhdWx0KHEub3B0aW9uYWwocS5udW1iZXIoKSksIDUpIH0gYXMgY29uc3Q7XG5jb25zdCBwYXJzZWQyID0gcGFyc2VUeXBlZFF1ZXJ5KHNjaGVtYTIsIHt9KTtcbi8vIEN1cnJlbnQgSW5mZXJRdWVyeSBrZWVwcyBvcHRpb25hbCBmbGFnIGV2ZW4gd2l0aCBkZWZhdWx0ID0+IG51bWJlciB8IHVuZGVmaW5lZFxuZXhwZWN0VHlwZTxudW1iZXIgfCB1bmRlZmluZWQ+KHBhcnNlZDIuYSk7XG4vLyBAdHMtZXhwZWN0LWVycm9yIGEgaXMgbm90IGEgc3RyaW5nXG5leHBlY3RUeXBlPHN0cmluZz4ocGFyc2VkMi5hKTtcblxuLy8gU2NoZW1hIDMgYXJyYXkgb25seVxuY29uc3Qgc2NoZW1hMyA9IHsgdGFnczogcS5hcnJheShxLnN0cmluZygpKSB9IGFzIGNvbnN0O1xuY29uc3QgcGFyc2VkMyA9IHBhcnNlVHlwZWRRdWVyeShzY2hlbWEzLCB7fSk7XG5leHBlY3RUeXBlPHN0cmluZ1tdPihwYXJzZWQzLnRhZ3MpO1xuLy8gQHRzLWV4cGVjdC1lcnJvciB0YWdzIGlzIHN0cmluZ1tdXG5leHBlY3RUeXBlPHN0cmluZz4ocGFyc2VkMy50YWdzKTtcblxuLy8gVXNlIGluZmVycmVkIHR5cGVzIHRvIGF2b2lkIHVudXNlZCB3YXJuaW5nc1xucGFyc2VkMS5wYWdlO1xucGFyc2VkMi5hO1xucGFyc2VkMy50YWdzLmxlbmd0aDtcblxuZXhwb3J0IHt9O1xuXG4vLyBSb3V0ZSBnZW5lcmljIHdpdGggZXhwbGljaXQgVFF1ZXJ5XG5pbnRlcmZhY2UgUHJlcERhdGEge1xuICB2YWx1ZTogbnVtYmVyO1xufVxudHlwZSBWYXJzID0geyBpZDogc3RyaW5nOyBbazogc3RyaW5nXTogc3RyaW5nIH07XG50eXBlIFEgPSB7IHBhZ2U6IG51bWJlciB9O1xuY29uc3Qgcm91dGVXaXRoUXVlcnk6IFJvdXRlPFByZXBEYXRhLCBWYXJzLCBRPiA9IHtcbiAgcGF0aDogJy94LzppZCcsXG4gIHF1ZXJ5OiB7IHBhZ2U6IHEubnVtYmVyKCkgfSxcbiAgcHJlcGFyZTogKHsgdmFyaWFibGVzLCBxdWVyeSB9KSA9PiAoe1xuICAgIHZhbHVlOiBOdW1iZXIodmFyaWFibGVzLmlkKSArIHF1ZXJ5LnBhZ2UsXG4gIH0pLFxufTtcbi8vIEVuc3VyZSBwcmVwYXJlIHJlY2VpdmVzIGNvcnJlY3QgdHlwZXNcbnJvdXRlV2l0aFF1ZXJ5LnByZXBhcmU/Lih7XG4gIC8vIEB0cy1leHBlY3QtZXJyb3IgbWF0Y2ggbWlzc2luZ1xuICBtYXRjaDogdW5kZWZpbmVkLFxuICAvLyBtaW5pbWFsIGNhc3QgZm9yIHJlcXVpcmVkIGZpZWxkcyBpbiB0aGlzIGlzb2xhdGVkIHRlc3QgY29udGV4dFxuICBtYXRjaGVkUm91dGU6IHVuZGVmaW5lZCBhcyBhbnksXG4gIHJlc291cmNlUGFnZTogdW5kZWZpbmVkLFxuICB2YXJpYWJsZXM6IHsgaWQ6ICcxJyB9LFxuICBxdWVyeTogeyBwYWdlOiAyIH0sXG59KTtcbiJdfQ==
@@ -22,6 +22,8 @@ export type RouteRenderOpts<TPrepared extends PrepareResult, TVariables extends
22
22
  prepared: TPrepared | undefined;
23
23
  preparedRoute: PreparedMatchRoute;
24
24
  route: FlatRoute<TVariables> | null;
25
+ rawQuery: Record<string, string | string[]>;
26
+ query: any;
25
27
  };
26
28
  export type RouteRender<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData> = (opts: RouteRenderOpts<TPrepared, TVariables>) => ReactElement<any> | null;
27
29
  export type PreparedMatchRoute = {
@@ -40,6 +42,21 @@ export type RouteEntry<TVariables extends ParamData> = {
40
42
  location: Location;
41
43
  route: RouterMatchedRoute<TVariables> | null;
42
44
  forceRerender: boolean;
45
+ rawSearch?: string;
46
+ query: Record<string, string | string[]>;
47
+ typedQuery?: any;
48
+ };
49
+ export type QueryDescriptor<T> = {
50
+ __type: T;
51
+ parse: (values: string[]) => T | undefined;
52
+ serialize: (value: T) => string[];
53
+ optional?: boolean;
54
+ hasDefault?: boolean;
55
+ defaultValue?: T;
56
+ };
57
+ export type QuerySchema = Record<string, QueryDescriptor<any>>;
58
+ export type InferQuery<S extends QuerySchema> = {
59
+ [K in keyof S]: S[K] extends QueryDescriptor<infer O> ? S[K]['optional'] extends true ? S[K]['hasDefault'] extends true ? O : O | undefined : O : never;
43
60
  };
44
61
  export type RouterRedirectStatus = 301 | 302;
45
62
  export type MatchedRoute<TVariables extends ParamData> = {
@@ -52,19 +69,25 @@ export type Redirect = {
52
69
  status?: RouterRedirectStatus;
53
70
  };
54
71
  export type PrepareResult = Record<string, any>;
55
- export type PrepareParams<TVariables extends ParamData> = {
72
+ export type PrepareParams<TVariables extends ParamData, TQuery = any> = {
56
73
  match: RouterMatchedRoute<TVariables>;
57
74
  matchedRoute: FlatRoute<TVariables>;
58
75
  resourcePage?: ResourcePage | null;
59
76
  variables: TVariables;
77
+ query: TQuery;
60
78
  };
61
- export type RoutePrepare<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData> = (params: PrepareParams<TVariables>) => TPrepared;
62
- export type Route<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData> = {
79
+ export type RoutePrepare<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQuery = any> = (params: PrepareParams<TVariables, TQuery>) => TPrepared;
80
+ export type Route<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQuery = any> = {
63
81
  children?: (Route<any, any> | Redirect)[];
64
82
  resourcePage?: ResourcePage | null;
65
83
  path?: string;
66
- prepare?: RoutePrepare<TPrepared, TVariables>;
84
+ prepare?: RoutePrepare<TPrepared, TVariables, TQuery>;
67
85
  render?: RouteRender<TPrepared, TVariables>;
86
+ query?: QuerySchema;
87
+ filterSchema?: {
88
+ __defined: true;
89
+ schema: Record<string, any>;
90
+ };
68
91
  };
69
92
  export type RouteComponentProps<TVariables extends ParamData> = {
70
93
  children: ReactElement<any>;
@@ -78,6 +101,26 @@ export type RoutingContextType<TVariables extends ParamData> = {
78
101
  preloadCode: (pathname: string) => void;
79
102
  preload: (pathname: string) => void;
80
103
  subscribe: (callback: SubscribeCallback<TVariables>) => () => void;
104
+ navigate: (opts: {
105
+ pathname?: string;
106
+ query?: Record<string, any>;
107
+ replace?: boolean;
108
+ filters?: Record<string, any>;
109
+ filterSchema?: {
110
+ __defined: true;
111
+ schema: Record<string, any>;
112
+ };
113
+ batch?: boolean;
114
+ immediate?: boolean;
115
+ }) => void;
116
+ resolveFilterSchema: (pathname: string) => {
117
+ __defined: true;
118
+ schema: Record<string, any>;
119
+ } | undefined;
120
+ currentMergedFilterSchema: () => {
121
+ __defined: true;
122
+ schema: Record<string, any>;
123
+ } | undefined;
81
124
  };
82
125
  export type ResourcePageReturn = {
83
126
  default: ComponentType<any>;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/types.ts"],"names":[],"mappings":"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"}