@plumile/router 0.1.14 → 0.1.18
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +87 -422
- package/lib/esm/builder.d.ts +5 -5
- package/lib/esm/builder.d.ts.map +1 -1
- package/lib/esm/builder.js +1 -1
- package/lib/esm/index.d.ts +0 -4
- package/lib/esm/index.d.ts.map +1 -1
- package/lib/esm/index.js +1 -5
- package/lib/esm/routing/Link.d.ts +3 -3
- package/lib/esm/routing/Link.d.ts.map +1 -1
- package/lib/esm/routing/Link.js +3 -8
- package/lib/esm/routing/RouteComponentWrapper.d.ts +6 -5
- package/lib/esm/routing/RouteComponentWrapper.d.ts.map +1 -1
- package/lib/esm/routing/RouteComponentWrapper.js +1 -1
- package/lib/esm/routing/RouterRenderer.d.ts.map +1 -1
- package/lib/esm/routing/RouterRenderer.js +1 -1
- package/lib/esm/routing/createRouter.d.ts +5 -6
- package/lib/esm/routing/createRouter.d.ts.map +1 -1
- package/lib/esm/routing/createRouter.js +458 -444
- package/lib/esm/routing/index.d.ts +2 -6
- package/lib/esm/routing/index.d.ts.map +1 -1
- package/lib/esm/routing/index.js +3 -7
- package/lib/esm/routing/useAllQuery.d.ts +7 -0
- package/lib/esm/routing/useAllQuery.d.ts.map +1 -0
- package/lib/esm/routing/useAllQuery.js +31 -0
- package/lib/esm/routing/useFilterDiagnostics.d.ts +2 -0
- package/lib/esm/routing/useFilterDiagnostics.d.ts.map +1 -0
- package/lib/esm/routing/useFilterDiagnostics.js +11 -0
- package/lib/esm/routing/useFilters.d.ts +16 -0
- package/lib/esm/routing/useFilters.d.ts.map +1 -0
- package/lib/esm/routing/useFilters.js +83 -0
- package/lib/esm/routing/useNavigate.d.ts +2 -9
- package/lib/esm/routing/useNavigate.d.ts.map +1 -1
- package/lib/esm/routing/useNavigate.js +1 -1
- package/lib/esm/routing/useQueryState.d.ts +1 -1
- package/lib/esm/routing/useQueryState.d.ts.map +1 -1
- package/lib/esm/routing/useQueryState.js +2 -2
- package/lib/esm/routing/useTypedQuery.js +1 -1
- package/lib/esm/tools/buildCombinedSearch.d.ts +11 -0
- package/lib/esm/tools/buildCombinedSearch.d.ts.map +1 -0
- package/lib/esm/tools/buildCombinedSearch.js +28 -0
- package/lib/esm/tools/buildSearch.d.ts +2 -8
- package/lib/esm/tools/buildSearch.d.ts.map +1 -1
- package/lib/esm/tools/buildSearch.js +12 -216
- package/lib/esm/tools.d.ts +6 -2
- package/lib/esm/tools.d.ts.map +1 -1
- package/lib/esm/tools.js +1 -1
- package/lib/esm/type-tests/routes-inference.test-d.d.ts +2 -0
- package/lib/esm/type-tests/routes-inference.test-d.d.ts.map +1 -0
- package/lib/esm/type-tests/routes-inference.test-d.js +49 -0
- package/lib/esm/types.d.ts +64 -38
- package/lib/esm/types.d.ts.map +1 -1
- package/lib/esm/types.js +1 -1
- package/lib/tsconfig.esm.tsbuildinfo +1 -1
- package/lib/types/builder.d.ts +5 -5
- package/lib/types/builder.d.ts.map +1 -1
- package/lib/types/index.d.ts +0 -4
- package/lib/types/index.d.ts.map +1 -1
- package/lib/types/routing/Link.d.ts +3 -3
- package/lib/types/routing/Link.d.ts.map +1 -1
- package/lib/types/routing/RouteComponentWrapper.d.ts +6 -5
- package/lib/types/routing/RouteComponentWrapper.d.ts.map +1 -1
- package/lib/types/routing/RouterRenderer.d.ts.map +1 -1
- package/lib/types/routing/createRouter.d.ts +5 -6
- package/lib/types/routing/createRouter.d.ts.map +1 -1
- package/lib/types/routing/index.d.ts +2 -6
- package/lib/types/routing/index.d.ts.map +1 -1
- package/lib/types/routing/useAllQuery.d.ts +7 -0
- package/lib/types/routing/useAllQuery.d.ts.map +1 -0
- package/lib/types/routing/useFilterDiagnostics.d.ts +2 -0
- package/lib/types/routing/useFilterDiagnostics.d.ts.map +1 -0
- package/lib/types/routing/useFilters.d.ts +16 -0
- package/lib/types/routing/useFilters.d.ts.map +1 -0
- package/lib/types/routing/useNavigate.d.ts +2 -9
- package/lib/types/routing/useNavigate.d.ts.map +1 -1
- package/lib/types/routing/useQueryState.d.ts +1 -1
- package/lib/types/routing/useQueryState.d.ts.map +1 -1
- package/lib/types/tools/buildCombinedSearch.d.ts +11 -0
- package/lib/types/tools/buildCombinedSearch.d.ts.map +1 -0
- package/lib/types/tools/buildSearch.d.ts +2 -8
- package/lib/types/tools/buildSearch.d.ts.map +1 -1
- package/lib/types/tools.d.ts +6 -2
- package/lib/types/tools.d.ts.map +1 -1
- package/lib/types/type-tests/routes-inference.test-d.d.ts +2 -0
- package/lib/types/type-tests/routes-inference.test-d.d.ts.map +1 -0
- package/lib/types/types.d.ts +64 -38
- package/lib/types/types.d.ts.map +1 -1
- package/package.json +6 -5
- package/lib/esm/routing/devtools.d.ts +0 -21
- package/lib/esm/routing/devtools.d.ts.map +0 -1
- package/lib/esm/routing/devtools.js +0 -690
- package/lib/esm/routing/filters.d.ts +0 -97
- package/lib/esm/routing/filters.d.ts.map +0 -1
- package/lib/esm/routing/filters.js +0 -557
- package/lib/esm/routing/useActiveFilters.d.ts +0 -9
- package/lib/esm/routing/useActiveFilters.d.ts.map +0 -1
- package/lib/esm/routing/useActiveFilters.js +0 -38
- package/lib/esm/routing/useFilterState.d.ts +0 -10
- package/lib/esm/routing/useFilterState.d.ts.map +0 -1
- package/lib/esm/routing/useFilterState.js +0 -14
- package/lib/esm/routing/useNavigateWithQuery.d.ts +0 -15
- package/lib/esm/routing/useNavigateWithQuery.d.ts.map +0 -1
- package/lib/esm/routing/useNavigateWithQuery.js +0 -95
- package/lib/esm/routing/useQueryObject.d.ts +0 -18
- package/lib/esm/routing/useQueryObject.d.ts.map +0 -1
- package/lib/esm/routing/useQueryObject.js +0 -107
- package/lib/esm/routing/useStableRefEquality.d.ts +0 -5
- package/lib/esm/routing/useStableRefEquality.d.ts.map +0 -1
- package/lib/esm/routing/useStableRefEquality.js +0 -47
- package/lib/types/routing/devtools.d.ts +0 -21
- package/lib/types/routing/devtools.d.ts.map +0 -1
- package/lib/types/routing/filters.d.ts +0 -97
- package/lib/types/routing/filters.d.ts.map +0 -1
- package/lib/types/routing/useActiveFilters.d.ts +0 -9
- package/lib/types/routing/useActiveFilters.d.ts.map +0 -1
- package/lib/types/routing/useFilterState.d.ts +0 -10
- package/lib/types/routing/useFilterState.d.ts.map +0 -1
- package/lib/types/routing/useNavigateWithQuery.d.ts +0 -15
- package/lib/types/routing/useNavigateWithQuery.d.ts.map +0 -1
- package/lib/types/routing/useQueryObject.d.ts +0 -18
- package/lib/types/routing/useQueryObject.d.ts.map +0 -1
- package/lib/types/routing/useStableRefEquality.d.ts +0 -5
- package/lib/types/routing/useStableRefEquality.d.ts.map +0 -1
|
@@ -1,230 +1,26 @@
|
|
|
1
|
-
import { buildFiltersQuery, OPERATOR_PRIORITY, } from '../routing/filters.js';
|
|
2
1
|
function serializeValue(descriptor, value) {
|
|
3
2
|
return descriptor.serialize(value);
|
|
4
3
|
}
|
|
5
4
|
export function buildSearch(query, schema, opts) {
|
|
6
|
-
|
|
7
|
-
opts.filters !== undefined &&
|
|
8
|
-
opts.filterSchema !== undefined;
|
|
9
|
-
if (query == null && !hasFilters) {
|
|
5
|
+
if (query == null)
|
|
10
6
|
return '';
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
let workingQuery = {};
|
|
14
|
-
if (query != null) {
|
|
15
|
-
workingQuery = { ...query };
|
|
16
|
-
}
|
|
17
|
-
if (hasFilters && filterSchema !== undefined && filters !== undefined) {
|
|
18
|
-
let emptySchema = false;
|
|
19
|
-
if (filterSchema !== undefined && filterSchema !== null) {
|
|
20
|
-
const inner = filterSchema
|
|
21
|
-
.schema;
|
|
22
|
-
let keys = [];
|
|
23
|
-
if (inner !== undefined) {
|
|
24
|
-
keys = Object.keys(inner);
|
|
25
|
-
}
|
|
26
|
-
if (keys.length === 0) {
|
|
27
|
-
emptySchema = true;
|
|
28
|
-
}
|
|
29
|
-
}
|
|
30
|
-
let effectiveFilters = filters;
|
|
31
|
-
if (pruneEmptyFilterOperators) {
|
|
32
|
-
const pruned = {};
|
|
33
|
-
for (const [field, ops] of Object.entries(filters)) {
|
|
34
|
-
if (ops != null && typeof ops === 'object') {
|
|
35
|
-
const nextOps = {};
|
|
36
|
-
for (const [op, value] of Object.entries(ops)) {
|
|
37
|
-
if (value == null) {
|
|
38
|
-
}
|
|
39
|
-
else if (op === 'between') {
|
|
40
|
-
if (Array.isArray(value)) {
|
|
41
|
-
const clean = [];
|
|
42
|
-
for (const t of value) {
|
|
43
|
-
if (Array.isArray(t) && t.length === 2) {
|
|
44
|
-
clean.push(t);
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
if (clean.length > 0)
|
|
48
|
-
nextOps[op] = clean;
|
|
49
|
-
}
|
|
50
|
-
}
|
|
51
|
-
else if (Array.isArray(value)) {
|
|
52
|
-
if (value.length > 0)
|
|
53
|
-
nextOps[op] = value.slice();
|
|
54
|
-
}
|
|
55
|
-
else if (typeof value === 'boolean') {
|
|
56
|
-
nextOps[op] = value;
|
|
57
|
-
}
|
|
58
|
-
}
|
|
59
|
-
if (Object.keys(nextOps).length > 0) {
|
|
60
|
-
pruned[field] = nextOps;
|
|
61
|
-
}
|
|
62
|
-
}
|
|
63
|
-
}
|
|
64
|
-
effectiveFilters = pruned;
|
|
65
|
-
}
|
|
66
|
-
if (!emptySchema) {
|
|
67
|
-
workingQuery = buildFiltersQuery(filterSchema, workingQuery, effectiveFilters);
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
const flat = {};
|
|
71
|
-
for (const [field, ops] of Object.entries(effectiveFilters)) {
|
|
72
|
-
if (ops !== undefined && ops !== null && typeof ops === 'object') {
|
|
73
|
-
for (const [op, value] of Object.entries(ops)) {
|
|
74
|
-
if (value === undefined || value === null) {
|
|
75
|
-
}
|
|
76
|
-
else {
|
|
77
|
-
const key = `${field}.${op}`;
|
|
78
|
-
if (op === 'exists' && typeof value === 'boolean') {
|
|
79
|
-
if (value) {
|
|
80
|
-
flat[key] = 'true';
|
|
81
|
-
}
|
|
82
|
-
else {
|
|
83
|
-
flat[key] = 'false';
|
|
84
|
-
}
|
|
85
|
-
}
|
|
86
|
-
else if (op === 'between') {
|
|
87
|
-
const ranges = value;
|
|
88
|
-
for (const r of ranges) {
|
|
89
|
-
if (Array.isArray(r) && r.length === 2) {
|
|
90
|
-
const a = r[0];
|
|
91
|
-
const b = r[1];
|
|
92
|
-
const pair = [String(a), String(b)];
|
|
93
|
-
const existing = flat[key];
|
|
94
|
-
if (existing === undefined) {
|
|
95
|
-
flat[key] = pair;
|
|
96
|
-
}
|
|
97
|
-
else if (Array.isArray(existing)) {
|
|
98
|
-
flat[key] = [...existing, ...pair];
|
|
99
|
-
}
|
|
100
|
-
else {
|
|
101
|
-
flat[key] = [existing, ...pair];
|
|
102
|
-
}
|
|
103
|
-
}
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
else if (Array.isArray(value)) {
|
|
107
|
-
for (const v of value) {
|
|
108
|
-
const sv = String(v);
|
|
109
|
-
const existing = flat[key];
|
|
110
|
-
if (existing === undefined) {
|
|
111
|
-
flat[key] = sv;
|
|
112
|
-
}
|
|
113
|
-
else if (Array.isArray(existing)) {
|
|
114
|
-
existing.push(sv);
|
|
115
|
-
}
|
|
116
|
-
else {
|
|
117
|
-
flat[key] = [existing, sv];
|
|
118
|
-
}
|
|
119
|
-
}
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
}
|
|
124
|
-
}
|
|
125
|
-
workingQuery = { ...workingQuery, ...flat };
|
|
126
|
-
}
|
|
127
|
-
if (omitEmptyFilters) {
|
|
128
|
-
const next = {};
|
|
129
|
-
for (const [k, v] of Object.entries(workingQuery)) {
|
|
130
|
-
if (Array.isArray(v) && v.length === 0) {
|
|
131
|
-
}
|
|
132
|
-
else {
|
|
133
|
-
next[k] = v;
|
|
134
|
-
}
|
|
135
|
-
}
|
|
136
|
-
workingQuery = next;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
if (Object.keys(workingQuery).length === 0) {
|
|
140
|
-
return '';
|
|
141
|
-
}
|
|
142
|
-
let keys = Object.keys(workingQuery);
|
|
7
|
+
const { omitDefaults = false, sortKeys = true } = opts ?? {};
|
|
8
|
+
let keys = Object.keys(query);
|
|
143
9
|
if (sortKeys) {
|
|
144
10
|
if (schema != null) {
|
|
145
11
|
const schemaKeys = Object.keys(schema);
|
|
146
|
-
const
|
|
12
|
+
const ordered = [];
|
|
147
13
|
for (const sk of schemaKeys) {
|
|
148
|
-
if (Object.prototype.hasOwnProperty.call(
|
|
149
|
-
|
|
150
|
-
}
|
|
151
|
-
}
|
|
152
|
-
const filterKeys = [];
|
|
153
|
-
const otherKeys = [];
|
|
154
|
-
if (filterSchema != null) {
|
|
155
|
-
const fsSchema = filterSchema.schema;
|
|
156
|
-
const fieldSet = new Set(Object.keys(fsSchema));
|
|
157
|
-
for (const k of keys) {
|
|
158
|
-
if (!schemaKeys.includes(k)) {
|
|
159
|
-
const dot = k.indexOf('.');
|
|
160
|
-
if (dot > 0) {
|
|
161
|
-
const field = k.slice(0, dot);
|
|
162
|
-
if (fieldSet.has(field)) {
|
|
163
|
-
filterKeys.push(k);
|
|
164
|
-
}
|
|
165
|
-
else {
|
|
166
|
-
otherKeys.push(k);
|
|
167
|
-
}
|
|
168
|
-
}
|
|
169
|
-
else {
|
|
170
|
-
otherKeys.push(k);
|
|
171
|
-
}
|
|
172
|
-
}
|
|
14
|
+
if (Object.prototype.hasOwnProperty.call(query, sk)) {
|
|
15
|
+
ordered.push(sk);
|
|
173
16
|
}
|
|
174
17
|
}
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
otherKeys.push(k);
|
|
179
|
-
}
|
|
180
|
-
}
|
|
181
|
-
otherKeys.sort();
|
|
182
|
-
const grouped = {};
|
|
183
|
-
for (const fk of filterKeys) {
|
|
184
|
-
const dot = fk.indexOf('.');
|
|
185
|
-
let field = fk;
|
|
186
|
-
if (dot > 0) {
|
|
187
|
-
field = fk.slice(0, dot);
|
|
188
|
-
}
|
|
189
|
-
grouped[field] ??= [];
|
|
190
|
-
{
|
|
191
|
-
const existing = grouped[field];
|
|
192
|
-
if (Array.isArray(existing)) {
|
|
193
|
-
existing.push(fk);
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
const orderedFields = Object.keys(grouped).sort();
|
|
198
|
-
const orderedFilterKeys = [];
|
|
199
|
-
for (const field of orderedFields) {
|
|
200
|
-
const ops = grouped[field];
|
|
201
|
-
if (ops !== undefined) {
|
|
202
|
-
ops.sort((a, b) => {
|
|
203
|
-
const opA = a.slice(a.indexOf('.') + 1);
|
|
204
|
-
const opB = b.slice(b.indexOf('.') + 1);
|
|
205
|
-
const ia = OPERATOR_PRIORITY.indexOf(opA);
|
|
206
|
-
const ib = OPERATOR_PRIORITY.indexOf(opB);
|
|
207
|
-
let sa = ia;
|
|
208
|
-
if (sa === -1)
|
|
209
|
-
sa = 999;
|
|
210
|
-
let sb = ib;
|
|
211
|
-
if (sb === -1)
|
|
212
|
-
sb = 999;
|
|
213
|
-
if (sa < sb)
|
|
214
|
-
return -1;
|
|
215
|
-
if (sa > sb)
|
|
216
|
-
return 1;
|
|
217
|
-
if (opA < opB)
|
|
218
|
-
return -1;
|
|
219
|
-
if (opA > opB)
|
|
220
|
-
return 1;
|
|
221
|
-
return 0;
|
|
222
|
-
});
|
|
223
|
-
for (const ok of ops)
|
|
224
|
-
orderedFilterKeys.push(ok);
|
|
18
|
+
for (const k of keys) {
|
|
19
|
+
if (!schemaKeys.includes(k)) {
|
|
20
|
+
ordered.push(k);
|
|
225
21
|
}
|
|
226
22
|
}
|
|
227
|
-
keys =
|
|
23
|
+
keys = ordered;
|
|
228
24
|
}
|
|
229
25
|
else {
|
|
230
26
|
keys.sort();
|
|
@@ -232,7 +28,7 @@ export function buildSearch(query, schema, opts) {
|
|
|
232
28
|
}
|
|
233
29
|
const parts = [];
|
|
234
30
|
for (const key of keys) {
|
|
235
|
-
const value =
|
|
31
|
+
const value = query[key];
|
|
236
32
|
if (value == null) {
|
|
237
33
|
}
|
|
238
34
|
else {
|
|
@@ -261,4 +57,4 @@ export function buildSearch(query, schema, opts) {
|
|
|
261
57
|
return '';
|
|
262
58
|
return `?${parts.join('&')}`;
|
|
263
59
|
}
|
|
264
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRTZWFyY2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvYnVpbGRTZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUNMLGlCQUFpQixFQUNqQixpQkFBaUIsR0FHbEIsTUFBTSx1QkFBdUIsQ0FBQztBQUcvQixTQUFTLGNBQWMsQ0FDckIsVUFBZ0MsRUFDaEMsS0FBYztJQUVkLE9BQU8sVUFBVSxDQUFDLFNBQVMsQ0FBQyxLQUFZLENBQUMsQ0FBQztBQUM1QyxDQUFDO0FBMEJELE1BQU0sVUFBVSxXQUFXLENBQ3pCLEtBQXNDLEVBQ3RDLE1BQStCLEVBQy9CLElBQXlCO0lBRXpCLE1BQU0sVUFBVSxHQUNkLElBQUksS0FBSyxTQUFTO1FBQ2xCLElBQUksQ0FBQyxPQUFPLEtBQUssU0FBUztRQUMxQixJQUFJLENBQUMsWUFBWSxLQUFLLFNBQVMsQ0FBQztJQUNsQyxJQUFJLEtBQUssSUFBSSxJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUUsQ0FBQztRQUNqQyxPQUFPLEVBQUUsQ0FBQztJQUNaLENBQUM7SUFDRCxNQUFNLEVBQ0osWUFBWSxHQUFHLEtBQUssRUFDcEIsUUFBUSxHQUFHLElBQUksRUFDZixPQUFPLEVBQ1AsWUFBWSxFQUNaLGdCQUFnQixHQUFHLElBQUksRUFDdkIseUJBQXlCLEdBQUcsSUFBSSxHQUNqQyxHQUFHLElBQUksSUFBSSxFQUFFLENBQUM7SUFDZixJQUFJLFlBQVksR0FBd0IsRUFBRSxDQUFDO0lBQzNDLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2xCLFlBQVksR0FBRyxFQUFFLEdBQUcsS0FBSyxFQUFFLENBQUM7SUFDOUIsQ0FBQztJQUNELElBQUksVUFBVSxJQUFJLFlBQVksS0FBSyxTQUFTLElBQUksT0FBTyxLQUFLLFNBQVMsRUFBRSxDQUFDO1FBQ3RFLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLFlBQVksS0FB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QUNKLENBQUMsQ0FBQyxDQUFDO1lBQ0wsQ0FBQztpQkFBTSxDQUFDO2dCQUNOLEtBQUssQ0FBQyxJQUFJLENBQ1IsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxNQUFNLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUNsRSxDQUFDO1lBQ0osQ0FBQztRQUNILENBQUM7SUFDSCxDQUFDO0lBQ0QsSUFBSSxLQUFLLENBQUMsTUFBTSxLQUFLLENBQUM7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUNsQyxPQUFPLElBQUksS0FBSyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDO0FBQy9CLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFF1ZXJ5U2NoZW1hLCBRdWVyeURlc2NyaXB0b3IgfSBmcm9tICcuLi90eXBlcy5qcyc7XG5pbXBvcnQge1xuICBidWlsZEZpbHRlcnNRdWVyeSxcbiAgT1BFUkFUT1JfUFJJT1JJVFksXG4gIHR5cGUgRGVmaW5lZEZpbHRlclNjaGVtYSxcbiAgdHlwZSBJbmZlckZpbHRlcnMsXG59IGZyb20gJy4uL3JvdXRpbmcvZmlsdGVycy5qcyc7XG5cbi8qKiBTZXJpYWxpemUgYSBzaW5nbGUgdmFsdWUgd2l0aCBpdHMgZGVzY3JpcHRvciAqL1xuZnVuY3Rpb24gc2VyaWFsaXplVmFsdWUoXG4gIGRlc2NyaXB0b3I6IFF1ZXJ5RGVzY3JpcHRvcjxhbnk+LFxuICB2YWx1ZTogdW5rbm93bixcbik6IHN0cmluZ1tdIHtcbiAgcmV0dXJuIGRlc2NyaXB0b3Iuc2VyaWFsaXplKHZhbHVlIGFzIGFueSk7XG59XG5cbi8qKiBTZXJpYWxpemUgYSBxdWVyeSBvYmplY3QgdXNpbmcgYW4gb3B0aW9uYWwgc2NoZW1hICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1aWxkU2VhcmNoT3B0aW9uczxcbiAgRiBleHRlbmRzIERlZmluZWRGaWx0ZXJTY2hlbWE8YW55PiB8IHVuZGVmaW5lZCA9IGFueSxcbj4ge1xuICBvbWl0RGVmYXVsdHM/OiBib29sZWFuO1xuICBzb3J0S2V5cz86IGJvb2xlYW47XG4gIC8qKiBTdHJ1Y3R1cmVkIGZpbHRlcnMgb2JqZWN0IChhbHJlYWR5IHBhcnNlZCkgdG8gbWVyZ2UgKi9cbiAgZmlsdGVycz86IEYgZXh0ZW5kcyBEZWZpbmVkRmlsdGVyU2NoZW1hPGFueT5cbiAgICA/IEluZmVyRmlsdGVyczxGWydzY2hlbWEnXT5cbiAgICA6IGFueTtcbiAgLyoqIEZpbHRlciBzY2hlbWEgd3JhcHBlciAocmVxdWlyZWQgaWYgZmlsdGVycyBwcm92aWRlZCkgKi9cbiAgZmlsdGVyU2NoZW1hPzogRjtcbiAgLyoqIFdoZW4gdHJ1ZSwgb21pdCBlbXB0eSBmaWx0ZXIgb3BlcmF0b3Igc2V0cyBlbnRpcmVseSAqL1xuICBvbWl0RW1wdHlGaWx0ZXJzPzogYm9vbGVhbjtcbiAgLyoqIFBydW5lIGVtcHR5IG9wZXJhdG9yIGFycmF5cyAvIGludmFsaWQgdHVwbGVzIHJlY3Vyc2l2ZWx5IGJlZm9yZSBzZXJpYWxpemF0aW9uIChkZWZhdWx0cyB0cnVlKSAqL1xuICBwcnVuZUVtcHR5RmlsdGVyT3BlcmF0b3JzPzogYm9vbGVhbjtcbn1cblxuLyoqXG4gKiBCdWlsZCBhIHNlYXJjaCBzdHJpbmcgZnJvbSAodHlwZWQpIHF1ZXJ5ICsgb3B0aW9uYWwgc3RydWN0dXJlZCBmaWx0ZXJzLlxuICogLSBBcHBsaWVzIG9taXREZWZhdWx0cyBmb3Igc2NoZW1hLWJhY2tlZCBxdWVyeSBrZXlzLlxuICogLSBTZXJpYWxpemVzIGZpbHRlcnMgdmlhIGJ1aWxkRmlsdGVyc1F1ZXJ5IHRoZW4gbWVyZ2VzLlxuICogLSBEZXRlcm1pbmlzdGljIGtleSBvcmRlcmluZyAoc2NoZW1hIG9yZGVyIHRoZW4gZXh0cmFzKSB3aGVuIHNvcnRLZXlzIGVuYWJsZWQuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNlYXJjaChcbiAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQsXG4gIHNjaGVtYTogUXVlcnlTY2hlbWEgfCB1bmRlZmluZWQsXG4gIG9wdHM/OiBCdWlsZFNlYXJjaE9wdGlvbnMsXG4pOiBzdHJpbmcge1xuICBjb25zdCBoYXNGaWx0ZXJzID1cbiAgICBvcHRzICE9PSB1bmRlZmluZWQgJiZcbiAgICBvcHRzLmZpbHRlcnMgIT09IHVuZGVmaW5lZCAmJlxuICAgIG9wdHMuZmlsdGVyU2NoZW1hICE9PSB1bmRlZmluZWQ7XG4gIGlmIChxdWVyeSA9PSBudWxsICYmICFoYXNGaWx0ZXJzKSB7XG4gICAgcmV0dXJuICcnO1xuICB9XG4gIGNvbnN0IHtcbiAgICBvbWl0RGVmYXVsdHMgPSBmYWxzZSxcbiAgICBzb3J0S2V5cyA9IHRydWUsXG4gICAgZmlsdGVycyxcbiAgICBmaWx0ZXJTY2hlbWEsXG4gICAgb21pdEVtcHR5RmlsdGVycyA9IHRydWUsXG4gICAgcHJ1bmVFbXB0eUZpbHRlck9wZXJhdG9ycyA9IHRydWUsXG4gIH0gPSBvcHRzID8/IHt9O1xuICBsZXQgd29ya2luZ1F1ZXJ5OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gIGlmIChxdWVyeSAhPSBudWxsKSB7XG4gICAgd29ya2luZ1F1ZXJ5ID0geyAuLi5xdWVyeSB9O1xuICB9XG4gIGlmIChoYXNGaWx0ZXJzICYmIGZpbHRlclNjaGVtYSAhPT0gdW5kZWZpbmVkICYmIGZpbHRlcnMgIT09IHVuZGVmaW5lZCkge1xuICAgIGxldCBlbXB0eVNjaGVtYSA9IGZhbHNlO1xuICAgIGlmIChmaWx0ZXJTY2hlbWEgIT09IHVuZGVmaW5lZCAmJiBmaWx0ZXJTY2hlbWEgIT09IG51bGwpIHtcbiAgICAgIGNvbnN0IGlubmVyID0gKGZpbHRlclNjaGVtYSBhcyB7IHNjaGVtYT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH0pXG4gICAgICAgIC5zY2hlbWE7XG4gICAgICBsZXQga2V5czogc3RyaW5nW10gPSBbXTtcbiAgICAgIGlmIChpbm5lciAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGtleXMgPSBPYmplY3Qua2V5cyhpbm5lcik7XG4gICAgICB9XG4gICAgICBpZiAoa2V5cy5sZW5ndGggPT09IDApIHtcbiAgICAgICAgZW1wdHlTY2hlbWEgPSB0cnVlO1xuICAgICAgfVxuICAgIH1cbiAgICBsZXQgZWZmZWN0aXZlRmlsdGVyczogYW55ID0gZmlsdGVycztcbiAgICBpZiAocHJ1bmVFbXB0eUZpbHRlck9wZXJhdG9ycykge1xuICAgICAgLy8gRGVlcCBjbG9uZSAmIHBydW5lIGVtcHR5IGFycmF5cyAvIGJldHdlZW4gdHVwbGVzIGxlbmd0aCE9MiAvIGV4aXN0cyB1bmRlZmluZWRcbiAgICAgIGNvbnN0IHBydW5lZDogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgZm9yIChjb25zdCBbZmllbGQsIG9wc10gb2YgT2JqZWN0LmVudHJpZXMoXG4gICAgICAgIGZpbHRlcnMgYXMgUmVjb3JkPHN0cmluZywgYW55PixcbiAgICAgICkpIHtcbiAgICAgICAgaWYgKG9wcyAhPSBudWxsICYmIHR5cGVvZiBvcHMgPT09ICdvYmplY3QnKSB7XG4gICAgICAgICAgY29uc3QgbmV4dE9wczogUmVjb3JkPHN0cmluZywgYW55PiA9IHt9O1xuICAgICAgICAgIGZvciAoY29uc3QgW29wLCB2YWx1ZV0gb2YgT2JqZWN0LmVudHJpZXMob3BzKSkge1xuICAgICAgICAgICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgICAgICAgICAgLy8gc2tpcCBudWxsaXNoXG4gICAgICAgICAgICB9IGVsc2UgaWYgKG9wID09PSAnYmV0d2VlbicpIHtcbiAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodmFsdWUpKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgY2xlYW46IFthbnksIGFueV1bXSA9IFtdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgdCBvZiB2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkodCkgJiYgdC5sZW5ndGggPT09IDIpIHtcbiAgICAgICAgICAgICAgICAgICAgY2xlYW4ucHVzaCh0IGFzIFthbnksIGFueV0pO1xuICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoY2xlYW4ubGVuZ3RoID4gMCkgbmV4dE9wc1tvcF0gPSBjbGVhbjtcbiAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICAgICAgICBpZiAodmFsdWUubGVuZ3RoID4gMCkgbmV4dE9wc1tvcF0gPSB2YWx1ZS5zbGljZSgpO1xuICAgICAgICAgICAgfSBlbHNlIGlmICh0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICBuZXh0T3BzW29wXSA9IHZhbHVlOyAvLyBleGlzdHNcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgICAgaWYgKE9iamVjdC5rZXlzKG5leHRPcHMpLmxlbmd0aCA+IDApIHtcbiAgICAgICAgICAgIHBydW5lZFtmaWVsZF0gPSBuZXh0T3BzO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgZWZmZWN0aXZlRmlsdGVycyA9IHBydW5lZDtcbiAgICB9XG4gICAgaWYgKCFlbXB0eVNjaGVtYSkge1xuICAgICAgd29ya2luZ1F1ZXJ5ID0gYnVpbGRGaWx0ZXJzUXVlcnkoXG4gICAgICAgIGZpbHRlclNjaGVtYSxcbiAgICAgICAgd29ya2luZ1F1ZXJ5LFxuICAgICAgICBlZmZlY3RpdmVGaWx0ZXJzIGFzIHVua25vd24gYXMgYW55LFxuICAgICAgKTtcbiAgICB9IGVsc2Uge1xuICAgICAgLy8gRmFsbGJhY2s6IGRpcmVjdCBmbGF0dGVuIGZpZWxkLm9wIGZvciBwcm92aWRlZCBvcGVyYXRvcnNcbiAgICAgIGNvbnN0IGZsYXQ6IFJlY29yZDxzdHJpbmcsIGFueT4gPSB7fTtcbiAgICAgIGZvciAoY29uc3QgW2ZpZWxkLCBvcHNdIG9mIE9iamVjdC5lbnRyaWVzKFxuICAgICAgICBlZmZlY3RpdmVGaWx0ZXJzIGFzIFJlY29yZDxzdHJpbmcsIGFueT4sXG4gICAgICApKSB7XG4gICAgICAgIGlmIChvcHMgIT09IHVuZGVmaW5lZCAmJiBvcHMgIT09IG51bGwgJiYgdHlwZW9mIG9wcyA9PT0gJ29iamVjdCcpIHtcbiAgICAgICAgICBmb3IgKGNvbnN0IFtvcCwgdmFsdWVdIG9mIE9iamVjdC5lbnRyaWVzKFxuICAgICAgICAgICAgb3BzIGFzIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICAgICAgICAgICkpIHtcbiAgICAgICAgICAgIGlmICh2YWx1ZSA9PT0gdW5kZWZpbmVkIHx8IHZhbHVlID09PSBudWxsKSB7XG4gICAgICAgICAgICAgIC8vIHNraXAgbnVsbGlzaFxuICAgICAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICAgICAgY29uc3Qga2V5ID0gYCR7ZmllbGR9LiR7b3B9YDtcbiAgICAgICAgICAgICAgaWYgKG9wID09PSAnZXhpc3RzJyAmJiB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgICAgICAgIGlmICh2YWx1ZSkge1xuICAgICAgICAgICAgICAgICAgZmxhdFtrZXldID0gJ3RydWUnO1xuICAgICAgICAgICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICAgICAgICBmbGF0W2tleV0gPSAnZmFsc2UnO1xuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgfSBlbHNlIGlmIChvcCA9PT0gJ2JldHdlZW4nKSB7XG4gICAgICAgICAgICAgICAgY29uc3QgcmFuZ2VzID0gdmFsdWUgYXMgdW5rbm93bltdO1xuICAgICAgICAgICAgICAgIGZvciAoY29uc3QgciBvZiByYW5nZXMpIHtcbiAgICAgICAgICAgICAgICAgIGlmIChBcnJheS5pc0FycmF5KHIpICYmIHIubGVuZ3RoID09PSAyKSB7XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGEgPSByWzBdO1xuICAgICAgICAgICAgICAgICAgICBjb25zdCBiID0gclsxXTtcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgcGFpciA9IFtTdHJpbmcoYSksIFN0cmluZyhiKV07XG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gZmxhdFtrZXldO1xuICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICAgIGZsYXRba2V5XSA9IHBhaXI7XG4gICAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShleGlzdGluZykpIHtcbiAgICAgICAgICAgICAgICAgICAgICBmbGF0W2tleV0gPSBbLi4uZXhpc3RpbmcsIC4uLnBhaXJdO1xuICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICAgIGZsYXRba2V5XSA9IFtleGlzdGluZywgLi4ucGFpcl07XG4gICAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICAgICAgICBmb3IgKGNvbnN0IHYgb2YgdmFsdWUpIHtcbiAgICAgICAgICAgICAgICAgIGNvbnN0IHN2ID0gU3RyaW5nKHYpO1xuICAgICAgICAgICAgICAgICAgY29uc3QgZXhpc3RpbmcgPSBmbGF0W2tleV07XG4gICAgICAgICAgICAgICAgICBpZiAoZXhpc3RpbmcgPT09IHVuZGVmaW5lZCkge1xuICAgICAgICAgICAgICAgICAgICBmbGF0W2tleV0gPSBzdjtcbiAgICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheShleGlzdGluZykpIHtcbiAgICAgICAgICAgICAgICAgICAgZXhpc3RpbmcucHVzaChzdik7XG4gICAgICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgICAgICBmbGF0W2tleV0gPSBbZXhpc3RpbmcsIHN2XTtcbiAgICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgIH1cbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdvcmtpbmdRdWVyeSA9IHsgLi4ud29ya2luZ1F1ZXJ5LCAuLi5mbGF0IH07XG4gICAgfVxuICAgIGlmIChvbWl0RW1wdHlGaWx0ZXJzKSB7XG4gICAgICBjb25zdCBuZXh0OiBSZWNvcmQ8c3RyaW5nLCBhbnk+ID0ge307XG4gICAgICBmb3IgKGNvbnN0IFtrLCB2XSBvZiBPYmplY3QuZW50cmllcyh3b3JraW5nUXVlcnkpKSB7XG4gICAgICAgIGlmIChBcnJheS5pc0FycmF5KHYpICYmIHYubGVuZ3RoID09PSAwKSB7XG4gICAgICAgICAgLy8gc2tpcCBlbXB0eSBhcnJheSBmaWx0ZXIga2V5XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbmV4dFtrXSA9IHY7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIHdvcmtpbmdRdWVyeSA9IG5leHQ7XG4gICAgfVxuICB9XG4gIGlmIChPYmplY3Qua2V5cyh3b3JraW5nUXVlcnkpLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiAnJztcbiAgfVxuICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHdvcmtpbmdRdWVyeSk7XG4gIGlmIChzb3J0S2V5cykge1xuICAgIGlmIChzY2hlbWEgIT0gbnVsbCkge1xuICAgICAgY29uc3Qgc2NoZW1hS2V5cyA9IE9iamVjdC5rZXlzKHNjaGVtYSk7XG4gICAgICBjb25zdCBzY2hlbWFPcmRlcmVkOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgZm9yIChjb25zdCBzayBvZiBzY2hlbWFLZXlzKSB7XG4gICAgICAgIGlmIChPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwod29ya2luZ1F1ZXJ5LCBzaykpIHtcbiAgICAgICAgICBzY2hlbWFPcmRlcmVkLnB1c2goc2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBjb25zdCBmaWx0ZXJLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgY29uc3Qgb3RoZXJLZXlzOiBzdHJpbmdbXSA9IFtdO1xuICAgICAgaWYgKGZpbHRlclNjaGVtYSAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGZzU2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IChcbiAgICAgICAgICBmaWx0ZXJTY2hlbWEgYXMge1xuICAgICAgICAgICAgc2NoZW1hOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICAgICAgICB9XG4gICAgICAgICkuc2NoZW1hO1xuICAgICAgICBjb25zdCBmaWVsZFNldCA9IG5ldyBTZXQoT2JqZWN0LmtleXMoZnNTY2hlbWEpKTtcbiAgICAgICAgZm9yIChjb25zdCBrIG9mIGtleXMpIHtcbiAgICAgICAgICBpZiAoIXNjaGVtYUtleXMuaW5jbHVkZXMoaykpIHtcbiAgICAgICAgICAgIGNvbnN0IGRvdCA9IGsuaW5kZXhPZignLicpO1xuICAgICAgICAgICAgaWYgKGRvdCA+IDApIHtcbiAgICAgICAgICAgICAgY29uc3QgZmllbGQgPSBrLnNsaWNlKDAsIGRvdCk7XG4gICAgICAgICAgICAgIGlmIChmaWVsZFNldC5oYXMoZmllbGQpKSB7XG4gICAgICAgICAgICAgICAgZmlsdGVyS2V5cy5wdXNoKGspO1xuICAgICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICAgIG90aGVyS2V5cy5wdXNoKGspO1xuICAgICAgICAgICAgICB9XG4gICAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgICBvdGhlcktleXMucHVzaChrKTtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGZvciAoY29uc3QgayBvZiBrZXlzKSB7XG4gICAgICAgICAgaWYgKCFzY2hlbWFLZXlzLmluY2x1ZGVzKGspKSBvdGhlcktleXMucHVzaChrKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgICAgLy8gRGVkdXBsaWNhdGUgYWxyZWFkeSBhY2NvdW50ZWQgc2NoZW1hIGtleXMgZnJvbSBvdGhlcnNcbiAgICAgIC8vIE9yZGVyIG5vbi1maWx0ZXIgZXh0cmFzIGFscGhhYmV0aWNhbGx5XG4gICAgICBvdGhlcktleXMuc29ydCgpO1xuICAgICAgLy8gT25seSBpbXBsZW1lbnRlZCBvcmRlcmluZzogYWZ0ZXItcXVlcnlcbiAgICAgIGNvbnN0IGdyb3VwZWQ6IFJlY29yZDxzdHJpbmcsIHN0cmluZ1tdPiA9IHt9O1xuICAgICAgZm9yIChjb25zdCBmayBvZiBmaWx0ZXJLZXlzKSB7XG4gICAgICAgIGNvbnN0IGRvdCA9IGZrLmluZGV4T2YoJy4nKTtcbiAgICAgICAgbGV0IGZpZWxkID0gZms7XG4gICAgICAgIGlmIChkb3QgPiAwKSB7XG4gICAgICAgICAgZmllbGQgPSBmay5zbGljZSgwLCBkb3QpO1xuICAgICAgICB9XG4gICAgICAgIGdyb3VwZWRbZmllbGRdID8/PSBbXTtcbiAgICAgICAge1xuICAgICAgICAgIGNvbnN0IGV4aXN0aW5nID0gZ3JvdXBlZFtmaWVsZF07XG4gICAgICAgICAgaWYgKEFycmF5LmlzQXJyYXkoZXhpc3RpbmcpKSB7XG4gICAgICAgICAgICBleGlzdGluZy5wdXNoKGZrKTtcbiAgICAgICAgICB9XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGNvbnN0IG9yZGVyZWRGaWVsZHMgPSBPYmplY3Qua2V5cyhncm91cGVkKS5zb3J0KCk7XG4gICAgICBjb25zdCBvcmRlcmVkRmlsdGVyS2V5czogc3RyaW5nW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3QgZmllbGQgb2Ygb3JkZXJlZEZpZWxkcykge1xuICAgICAgICBjb25zdCBvcHMgPSBncm91cGVkW2ZpZWxkXTtcbiAgICAgICAgaWYgKG9wcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgICAgb3BzLnNvcnQoKGEsIGIpID0+IHtcbiAgICAgICAgICAgIGNvbnN0IG9wQSA9IGEuc2xpY2UoYS5pbmRleE9mKCcuJykgKyAxKTtcbiAgICAgICAgICAgIGNvbnN0IG9wQiA9IGIuc2xpY2UoYi5pbmRleE9mKCcuJykgKyAxKTtcbiAgICAgICAgICAgIGNvbnN0IGlhID0gT1BFUkFUT1JfUFJJT1JJVFkuaW5kZXhPZihvcEEgYXMgYW55KTtcbiAgICAgICAgICAgIGNvbnN0IGliID0gT1BFUkFUT1JfUFJJT1JJVFkuaW5kZXhPZihvcEIgYXMgYW55KTtcbiAgICAgICAgICAgIGxldCBzYSA9IGlhO1xuICAgICAgICAgICAgaWYgKHNhID09PSAtMSkgc2EgPSA5OTk7XG4gICAgICAgICAgICBsZXQgc2IgPSBpYjtcbiAgICAgICAgICAgIGlmIChzYiA9PT0gLTEpIHNiID0gOTk5O1xuICAgICAgICAgICAgaWYgKHNhIDwgc2IpIHJldHVybiAtMTtcbiAgICAgICAgICAgIGlmIChzYSA+IHNiKSByZXR1cm4gMTtcbiAgICAgICAgICAgIGlmIChvcEEgPCBvcEIpIHJldHVybiAtMTtcbiAgICAgICAgICAgIGlmIChvcEEgPiBvcEIpIHJldHVybiAxO1xuICAgICAgICAgICAgcmV0dXJuIDA7XG4gICAgICAgICAgfSk7XG4gICAgICAgICAgZm9yIChjb25zdCBvayBvZiBvcHMpIG9yZGVyZWRGaWx0ZXJLZXlzLnB1c2gob2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBrZXlzID0gWy4uLnNjaGVtYU9yZGVyZWQsIC4uLm90aGVyS2V5cywgLi4ub3JkZXJlZEZpbHRlcktleXNdO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlzLnNvcnQoKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHdvcmtpbmdRdWVyeVtrZXldO1xuICAgIGlmICh2YWx1ZSA9PSBudWxsKSB7XG4gICAgICAvLyBza2lwIG51bGxpc2ggdmFsdWVzXG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGRlc2NyaXB0b3IgPSBzY2hlbWE/LltrZXldO1xuICAgICAgaWYgKGRlc2NyaXB0b3IgIT0gbnVsbCkge1xuICAgICAgICBjb25zdCBpc0RlZmF1bHQgPVxuICAgICAgICAgIGRlc2NyaXB0b3IuaGFzRGVmYXVsdCAmJiB2YWx1ZSA9PT0gZGVzY3JpcHRvci5kZWZhdWx0VmFsdWU7XG4gICAgICAgIGNvbnN0IHNraXBEZWZhdWx0ID0gb21pdERlZmF1bHRzICYmIGlzRGVmYXVsdDtcbiAgICAgICAgaWYgKCFza2lwRGVmYXVsdCkge1xuICAgICAgICAgIGNvbnN0IHZhbHVlcyA9IHNlcmlhbGl6ZVZhbHVlKGRlc2NyaXB0b3IsIHZhbHVlKTtcbiAgICAgICAgICB2YWx1ZXMuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgICAgcGFydHMucHVzaChcbiAgICAgICAgICAgICAgYCR7ZW5jb2RlVVJJQ29tcG9uZW50KGtleSl9PSR7ZW5jb2RlVVJJQ29tcG9uZW50KFN0cmluZyh2KSl9YCxcbiAgICAgICAgICAgICk7XG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgdmFsdWUuZm9yRWFjaCgodikgPT4ge1xuICAgICAgICAgIHBhcnRzLnB1c2goXG4gICAgICAgICAgICBgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5KX09JHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHYpKX1gLFxuICAgICAgICAgICk7XG4gICAgICAgIH0pO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgcGFydHMucHVzaChcbiAgICAgICAgICBgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5KX09JHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHZhbHVlKSl9YCxcbiAgICAgICAgKTtcbiAgICAgIH1cbiAgICB9XG4gIH1cbiAgaWYgKHBhcnRzLmxlbmd0aCA9PT0gMCkgcmV0dXJuICcnO1xuICByZXR1cm4gYD8ke3BhcnRzLmpvaW4oJyYnKX1gO1xufVxuIl19
|
|
60
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYnVpbGRTZWFyY2guanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdG9vbHMvYnVpbGRTZWFyY2gudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBR0EsU0FBUyxjQUFjLENBQ3JCLFVBQWdDLEVBQ2hDLEtBQWM7SUFFZCxPQUFPLFVBQVUsQ0FBQyxTQUFTLENBQUMsS0FBWSxDQUFDLENBQUM7QUFDNUMsQ0FBQztBQUdELE1BQU0sVUFBVSxXQUFXLENBQ3pCLEtBQXNDLEVBQ3RDLE1BQStCLEVBQy9CLElBQXFEO0lBRXJELElBQUksS0FBSyxJQUFJLElBQUk7UUFBRSxPQUFPLEVBQUUsQ0FBQztJQUM3QixNQUFNLEVBQUUsWUFBWSxHQUFHLEtBQUssRUFBRSxRQUFRLEdBQUcsSUFBSSxFQUFFLEdBQUcsSUFBSSxJQUFJLEVBQUUsQ0FBQztJQUM3RCxJQUFJLElBQUksR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLElBQUksUUFBUSxFQUFFLENBQUM7UUFDYixJQUFJLE1BQU0sSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUVuQixNQUFNLFVBQVUsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1lBQ3ZDLE1BQU0sT0FBTyxHQUFhLEVBQUUsQ0FBQztZQUM3QixLQUFLLE1BQU0sRUFBRSxJQUFJLFVBQVUsRUFBRSxDQUFDO2dCQUM1QixJQUFJLE1BQU0sQ0FBQyxTQUFTLENBQUMsY0FBYyxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQztvQkFDcEQsT0FBTyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsQ0FBQztnQkFDbkIsQ0FBQztZQUNILENBQUM7WUFDRCxLQUFLLE1BQU0sQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUNyQixJQUFJLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO29CQUM1QixPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO2dCQUNsQixDQUFDO1lBQ0gsQ0FBQztZQUNELElBQUksR0FBRyxPQUFPLENBQUM7UUFDakIsQ0FBQzthQUFNLENBQUM7WUFDTixJQUFJLENBQUMsSUFBSSxFQUFFLENBQUM7UUFDZCxDQUFDO0lBQ0gsQ0FBQztJQUNELE1BQU0sS0FBSyxHQUFhLEVBQUUsQ0FBQztJQUMzQixLQUFLLE1BQU0sR0FBRyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ3ZCLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUN6QixJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUUsQ0FBQztRQUVwQixDQUFDO2FBQU0sQ0FBQztZQUNOLE1BQU0sVUFBVSxHQUFHLE1BQU0sRUFBRSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1lBQ2pDLElBQUksVUFBVSxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUN2QixNQUFNLFNBQVMsR0FDYixVQUFVLENBQUMsVUFBVSxJQUFJLEtBQUssS0FBSyxVQUFVLENBQUMsWUFBWSxDQUFDO2dCQUM3RCxNQUFNLFdBQVcsR0FBRyxZQUFZLElBQUksU0FBUyxDQUFDO2dCQUM5QyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUM7b0JBQ2pCLE1BQU0sTUFBTSxHQUFHLGNBQWMsQ0FBQyxVQUFVLEVBQUUsS0FBSyxDQUFDLENBQUM7b0JBQ2pELE1BQU0sQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTt3QkFDbkIsS0FBSyxDQUFDLElBQUksQ0FDUixHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzlELENBQUM7b0JBQ0osQ0FBQyxDQUFDLENBQUM7Z0JBQ0wsQ0FBQztZQUNILENBQUM7aUJBQU0sSUFBSSxLQUFLLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxFQUFFLENBQUM7Z0JBQ2hDLEtBQUssQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtvQkFDbEIsS0FBSyxDQUFDLElBQUksQ0FDUixHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQzlELENBQUM7Z0JBQ0osQ0FBQyxDQUFDLENBQUM7WUFDTCxDQUFDO2lCQUFNLENBQUM7Z0JBQ04sS0FBSyxDQUFDLElBQUksQ0FDUixHQUFHLGtCQUFrQixDQUFDLEdBQUcsQ0FBQyxJQUFJLGtCQUFrQixDQUFDLE1BQU0sQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQ2xFLENBQUM7WUFDSixDQUFDO1FBQ0gsQ0FBQztJQUNILENBQUM7SUFDRCxJQUFJLEtBQUssQ0FBQyxNQUFNLEtBQUssQ0FBQztRQUFFLE9BQU8sRUFBRSxDQUFDO0lBQ2xDLE9BQU8sSUFBSSxLQUFLLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUM7QUFDL0IsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgUXVlcnlTY2hlbWEsIFF1ZXJ5RGVzY3JpcHRvciB9IGZyb20gJy4uL3R5cGVzLmpzJztcblxuLyoqIFNlcmlhbGl6ZSBhIHNpbmdsZSB2YWx1ZSB3aXRoIGl0cyBkZXNjcmlwdG9yICovXG5mdW5jdGlvbiBzZXJpYWxpemVWYWx1ZShcbiAgZGVzY3JpcHRvcjogUXVlcnlEZXNjcmlwdG9yPGFueT4sXG4gIHZhbHVlOiB1bmtub3duLFxuKTogc3RyaW5nW10ge1xuICByZXR1cm4gZGVzY3JpcHRvci5zZXJpYWxpemUodmFsdWUgYXMgYW55KTtcbn1cblxuLyoqIFNlcmlhbGl6ZSBhIHF1ZXJ5IG9iamVjdCB1c2luZyBhbiBvcHRpb25hbCBzY2hlbWEgKi9cbmV4cG9ydCBmdW5jdGlvbiBidWlsZFNlYXJjaChcbiAgcXVlcnk6IFJlY29yZDxzdHJpbmcsIGFueT4gfCB1bmRlZmluZWQsXG4gIHNjaGVtYTogUXVlcnlTY2hlbWEgfCB1bmRlZmluZWQsXG4gIG9wdHM/OiB7IG9taXREZWZhdWx0cz86IGJvb2xlYW47IHNvcnRLZXlzPzogYm9vbGVhbiB9LFxuKTogc3RyaW5nIHtcbiAgaWYgKHF1ZXJ5ID09IG51bGwpIHJldHVybiAnJztcbiAgY29uc3QgeyBvbWl0RGVmYXVsdHMgPSBmYWxzZSwgc29ydEtleXMgPSB0cnVlIH0gPSBvcHRzID8/IHt9O1xuICBsZXQga2V5cyA9IE9iamVjdC5rZXlzKHF1ZXJ5KTtcbiAgaWYgKHNvcnRLZXlzKSB7XG4gICAgaWYgKHNjaGVtYSAhPSBudWxsKSB7XG4gICAgICAvLyBPcmRlciBrZXlzIGJhc2VkIG9uIHNjaGVtYSBkZWNsYXJhdGlvbiBvcmRlciwgdGhlbiBhcHBlbmQgYW55IGV4dHJhIGtleXNcbiAgICAgIGNvbnN0IHNjaGVtYUtleXMgPSBPYmplY3Qua2V5cyhzY2hlbWEpO1xuICAgICAgY29uc3Qgb3JkZXJlZDogc3RyaW5nW10gPSBbXTtcbiAgICAgIGZvciAoY29uc3Qgc2sgb2Ygc2NoZW1hS2V5cykge1xuICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHF1ZXJ5LCBzaykpIHtcbiAgICAgICAgICBvcmRlcmVkLnB1c2goc2spO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBmb3IgKGNvbnN0IGsgb2Yga2V5cykge1xuICAgICAgICBpZiAoIXNjaGVtYUtleXMuaW5jbHVkZXMoaykpIHtcbiAgICAgICAgICBvcmRlcmVkLnB1c2goayk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICAgIGtleXMgPSBvcmRlcmVkO1xuICAgIH0gZWxzZSB7XG4gICAgICBrZXlzLnNvcnQoKTtcbiAgICB9XG4gIH1cbiAgY29uc3QgcGFydHM6IHN0cmluZ1tdID0gW107XG4gIGZvciAoY29uc3Qga2V5IG9mIGtleXMpIHtcbiAgICBjb25zdCB2YWx1ZSA9IHF1ZXJ5W2tleV07XG4gICAgaWYgKHZhbHVlID09IG51bGwpIHtcbiAgICAgIC8vIHNraXAgbnVsbGlzaCB2YWx1ZXNcbiAgICB9IGVsc2Uge1xuICAgICAgY29uc3QgZGVzY3JpcHRvciA9IHNjaGVtYT8uW2tleV07XG4gICAgICBpZiAoZGVzY3JpcHRvciAhPSBudWxsKSB7XG4gICAgICAgIGNvbnN0IGlzRGVmYXVsdCA9XG4gICAgICAgICAgZGVzY3JpcHRvci5oYXNEZWZhdWx0ICYmIHZhbHVlID09PSBkZXNjcmlwdG9yLmRlZmF1bHRWYWx1ZTtcbiAgICAgICAgY29uc3Qgc2tpcERlZmF1bHQgPSBvbWl0RGVmYXVsdHMgJiYgaXNEZWZhdWx0O1xuICAgICAgICBpZiAoIXNraXBEZWZhdWx0KSB7XG4gICAgICAgICAgY29uc3QgdmFsdWVzID0gc2VyaWFsaXplVmFsdWUoZGVzY3JpcHRvciwgdmFsdWUpO1xuICAgICAgICAgIHZhbHVlcy5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICAgICAgICBgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5KX09JHtlbmNvZGVVUklDb21wb25lbnQoU3RyaW5nKHYpKX1gLFxuICAgICAgICAgICAgKTtcbiAgICAgICAgICB9KTtcbiAgICAgICAgfVxuICAgICAgfSBlbHNlIGlmIChBcnJheS5pc0FycmF5KHZhbHVlKSkge1xuICAgICAgICB2YWx1ZS5mb3JFYWNoKCh2KSA9PiB7XG4gICAgICAgICAgcGFydHMucHVzaChcbiAgICAgICAgICAgIGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodikpfWAsXG4gICAgICAgICAgKTtcbiAgICAgICAgfSk7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBwYXJ0cy5wdXNoKFxuICAgICAgICAgIGAke2VuY29kZVVSSUNvbXBvbmVudChrZXkpfT0ke2VuY29kZVVSSUNvbXBvbmVudChTdHJpbmcodmFsdWUpKX1gLFxuICAgICAgICApO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICBpZiAocGFydHMubGVuZ3RoID09PSAwKSByZXR1cm4gJyc7XG4gIHJldHVybiBgPyR7cGFydHMuam9pbignJicpfWA7XG59XG4iXX0=
|
package/lib/esm/tools.d.ts
CHANGED
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
import type { ParamData } from 'path-to-regexp';
|
|
2
|
-
import type { PrepareResult, PreparedMatch, Route, RouterMatchedRoute } from './types.js';
|
|
2
|
+
import type { PrepareResult, PreparedMatch, Route, RouterMatchedRoute, QuerySchema, InferQuery } 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
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,
|
|
6
|
+
export declare function r<TPrepared extends PrepareResult = PrepareResult, TVariables extends ParamData = ParamData, TQuery extends Record<string, unknown> = Record<string, unknown>, TSchema extends QuerySchema | undefined = undefined>(route: (TSchema extends QuerySchema ? Omit<Route<TPrepared, TVariables, InferQuery<TSchema>>, 'query'> & {
|
|
7
|
+
query: TSchema;
|
|
8
|
+
} : Route<TPrepared, TVariables, TQuery>) & {
|
|
9
|
+
query?: TSchema;
|
|
10
|
+
}): Route<TPrepared, TVariables, TSchema extends QuerySchema ? InferQuery<TSchema> : TQuery>;
|
|
7
11
|
//# sourceMappingURL=tools.d.ts.map
|
package/lib/esm/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/tools.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,OAAO,KAAK,EACV,aAAa,EACb,aAAa,EAEb,KAAK,EACL,kBAAkB,
|
|
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,EAClB,WAAW,EACX,UAAU,EACX,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,CAmDxB;AAwBD,wBAAgB,CAAC,CACf,SAAS,SAAS,aAAa,GAAG,aAAa,EAC/C,UAAU,SAAS,SAAS,GAAG,SAAS,EACxC,MAAM,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChE,OAAO,SAAS,WAAW,GAAG,SAAS,GAAG,SAAS,EAEnD,KAAK,EAAE,CAAC,OAAO,SAAS,WAAW,GAC/B,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG;IACjE,KAAK,EAAE,OAAO,CAAC;CAChB,GACD,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,GAAG;IAAE,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,GAC9D,KAAK,CACN,SAAS,EACT,UAAU,EACV,OAAO,SAAS,WAAW,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,MAAM,CAC3D,CAMA"}
|
package/lib/esm/tools.js
CHANGED
|
@@ -56,4 +56,4 @@ export function prepareMatch(match, query) {
|
|
|
56
56
|
export function r(route) {
|
|
57
57
|
return route;
|
|
58
58
|
}
|
|
59
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
59
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9vbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdG9vbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBdUJBLE1BQU0sVUFBVSxlQUFlLENBQzdCLE1BQTRCLEVBQzVCLFFBQWtCO0lBRWxCLEtBQUssTUFBTSxLQUFLLElBQUksTUFBTSxFQUFFLENBQUM7UUFDM0IsTUFBTSxLQUFLLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDckQsSUFBSSxLQUFLLEtBQUssS0FBSyxFQUFFLENBQUM7WUFDcEIsTUFBTSxFQUFFLElBQUksRUFBRSxNQUFNLEVBQUUsR0FBRyxLQUFLLENBQUM7WUFDL0IsT0FBTztnQkFDTCxLQUFLO2dCQUNMLEtBQUs7Z0JBQ0wsSUFBSTtnQkFDSixNQUFNO2FBQ1AsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQsT0FBTyxJQUFJLENBQUM7QUFDZCxDQUFDO0FBVUQsTUFBTSxVQUFVLFlBQVksQ0FDMUIsS0FBeUMsRUFDekMsS0FBK0I7SUFNL0IsSUFBSSxLQUFLLElBQUksSUFBSSxFQUFFLENBQUM7UUFDbEIsT0FBTztZQUNMLEtBQUs7WUFDTCxNQUFNLEVBQUUsRUFBRTtTQUNYLENBQUM7SUFDSixDQUFDO0lBRUQsTUFBTSxZQUFZLEdBQUcsS0FBSyxDQUFDLEtBQUssQ0FBQztJQUVqQyxNQUFNLE1BQU0sR0FBeUIsS0FBSyxDQUFDLEtBQUssQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxFQUFFLEVBQUU7UUFDcEUsTUFBTSxFQUFFLElBQUksRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sRUFBRSxHQUFHLEtBQUssQ0FBQztRQUV0RCxJQUFJLFNBQWtCLENBQUM7UUFDdkIsSUFBSSxRQUFtQyxDQUFDO1FBRXhDLElBQUksT0FBTyxJQUFJLElBQUksRUFBRSxDQUFDO1lBQ3BCLFFBQVEsR0FBRyxPQUFPLENBQUM7Z0JBQ2pCLEtBQUs7Z0JBQ0wsWUFBWTtnQkFDWixZQUFZO2dCQUVaLFNBQVMsRUFBRSxFQUFFLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRTtnQkFDOUIsS0FBSyxFQUFFLEtBQUssSUFBSSxFQUFFO2FBQ25CLENBQUMsQ0FBQztRQUNMLENBQUM7UUFFRCxJQUFJLFlBQVksSUFBSSxJQUFJLEVBQUUsQ0FBQztZQUN6QixTQUFTLEdBQUcsWUFBWSxDQUFDLEdBQUcsRUFBRSxDQUFDO1lBQy9CLElBQUksU0FBUyxJQUFJLElBQUksRUFBRSxDQUFDO2dCQUV0QixZQUFZLENBQUMsSUFBSSxFQUFFLENBQUM7WUFDdEIsQ0FBQztRQUNILENBQUM7UUFDRCxPQUFPO1lBQ0wsSUFBSTtZQUNKLFFBQVE7WUFDUixVQUFVLEVBQUUsWUFBWSxDQUFDLFVBQVUsSUFBSSxJQUFJO1lBQzNDLE1BQU07WUFDTixZQUFZO1NBQ2IsQ0FBQztJQUNKLENBQUMsQ0FBQyxDQUFDO0lBRUgsT0FBTztRQUNMLEtBQUs7UUFDTCxNQUFNO0tBQ1AsQ0FBQztBQUNKLENBQUM7QUF3QkQsTUFBTSxVQUFVLENBQUMsQ0FNZixLQUkrRDtJQU0vRCxPQUFPLEtBSU4sQ0FBQztBQUNKLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IFBhcmFtRGF0YSB9IGZyb20gJ3BhdGgtdG8tcmVnZXhwJztcblxuaW1wb3J0IHR5cGUge1xuICBQcmVwYXJlUmVzdWx0LFxuICBQcmVwYXJlZE1hdGNoLFxuICBQcmVwYXJlZE1hdGNoUm91dGUsXG4gIFJvdXRlLFxuICBSb3V0ZXJNYXRjaGVkUm91dGUsXG4gIFF1ZXJ5U2NoZW1hLFxuICBJbmZlclF1ZXJ5LFxufSBmcm9tICcuL3R5cGVzLmpzJztcblxuaW1wb3J0IHR5cGUgeyBGbGF0Um91dGUgfSBmcm9tICcuL2J1aWxkZXIuanMnO1xuXG4vKipcbiAqIEZpbmRzIHRoZSBmaXJzdCByb3V0ZSB0aGF0IG1hdGNoZXMgdGhlIGdpdmVuIGxvY2F0aW9uLlxuICogSXRlcmF0ZXMgdGhyb3VnaCBhbGwgcm91dGVzIGFuZCByZXR1cm5zIHRoZSBmaXJzdCBtYXRjaCBmb3VuZC5cbiAqXG4gKiBAdGVtcGxhdGUgVFBhcmFtcyAtIFJvdXRlIHBhcmFtZXRlciB0eXBlcyBleHRyYWN0ZWQgZnJvbSB0aGUgVVJMIHBhdGhcbiAqIEBwYXJhbSByb3V0ZXMgLSBBcnJheSBvZiBmbGF0IHJvdXRlcyB0byBzZWFyY2ggdGhyb3VnaFxuICogQHBhcmFtIGxvY2F0aW9uIC0gQnJvd3NlciBsb2NhdGlvbiBvYmplY3QgY29udGFpbmluZyBwYXRobmFtZSB0byBtYXRjaFxuICogQHJldHVybnMgVGhlIG1hdGNoZWQgcm91dGUgd2l0aCBleHRyYWN0ZWQgcGFyYW1ldGVycywgb3IgbnVsbCBpZiBubyBtYXRjaFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0TWF0Y2hlZFJvdXRlPFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGE+KFxuICByb3V0ZXM6IEZsYXRSb3V0ZTxUUGFyYW1zPltdLFxuICBsb2NhdGlvbjogTG9jYXRpb24sXG4pOiBSb3V0ZXJNYXRjaGVkUm91dGU8VFBhcmFtcz4gfCBudWxsIHtcbiAgZm9yIChjb25zdCByb3V0ZSBvZiByb3V0ZXMpIHtcbiAgICBjb25zdCBtYXRjaCA9IHJvdXRlLm1hdGNoRnVuY3Rpb24obG9jYXRpb24ucGF0aG5hbWUpO1xuICAgIGlmIChtYXRjaCAhPT0gZmFsc2UpIHtcbiAgICAgIGNvbnN0IHsgcGF0aCwgcGFyYW1zIH0gPSBtYXRjaDtcbiAgICAgIHJldHVybiB7XG4gICAgICAgIG1hdGNoLFxuICAgICAgICByb3V0ZSxcbiAgICAgICAgcGF0aCxcbiAgICAgICAgcGFyYW1zLFxuICAgICAgfTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbnVsbDtcbn1cblxuLyoqXG4gKiBQcmVwYXJlcyBhIG1hdGNoZWQgcm91dGUgZm9yIHJlbmRlcmluZyBieSBsb2FkaW5nIGNvbXBvbmVudHMgYW5kIGV4ZWN1dGluZyBwcmVwYXJlIGZ1bmN0aW9ucy5cbiAqIFRoaXMgZnVuY3Rpb24gcHJvY2Vzc2VzIHRoZSByb3V0ZSBoaWVyYXJjaHkgYW5kIGxvYWRzIGFueSByZXF1aXJlZCBkYXRhIG9yIGNvbXBvbmVudHMuXG4gKlxuICogQHRlbXBsYXRlIFRQYXJhbXMgLSBSb3V0ZSBwYXJhbWV0ZXIgdHlwZXMgZXh0cmFjdGVkIGZyb20gdGhlIFVSTCBwYXRoXG4gKiBAcGFyYW0gbWF0Y2ggLSBUaGUgbWF0Y2hlZCByb3V0ZSB0byBwcmVwYXJlLCBvciBudWxsIGlmIG5vIHJvdXRlIG1hdGNoZWRcbiAqIEByZXR1cm5zIFByZXBhcmVkIG1hdGNoIHdpdGggbG9hZGVkIGNvbXBvbmVudHMgYW5kIGRhdGEgcmVhZHkgZm9yIHJlbmRlcmluZ1xuICovXG5leHBvcnQgZnVuY3Rpb24gcHJlcGFyZU1hdGNoPFRQYXJhbXMgZXh0ZW5kcyBQYXJhbURhdGE+KFxuICBtYXRjaDogUm91dGVyTWF0Y2hlZFJvdXRlPFRQYXJhbXM+IHwgbnVsbCxcbiAgcXVlcnk/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbik6IFByZXBhcmVkTWF0Y2g8VFBhcmFtcz4ge1xuICAvLyBOT1RFOiBSdW50aW1lIHJldGFpbnMgYSBnZW5lcmljIFByZXBhcmVkUmVzdWx0OyB0eXBlLWxldmVsIG5hcnJvd2luZyBpcyBhY2hpZXZlZCBleHRlcm5hbGx5XG4gIC8vIHRocm91Z2ggdGhlIHJvdXRlIHVuaW9uIGFuZCBQcmVwYXJlZEFjY2VzcyBoZWxwZXJzLiBXZSBpbnRlbnRpb25hbGx5IGF2b2lkIGluamVjdGluZ1xuICAvLyBnZW5lcmljIHBhcmFtZXRlcnMgaGVyZSB0byBrZWVwIHJ1bnRpbWUgbGlnaHR3ZWlnaHQgd2hpbGUgc3RpbGwgZW5hYmxpbmcgY29tcGlsZS10aW1lXG4gIC8vIGRpc2NyaW1pbmF0aW9uIGluIHVzZXJsYW5kIHZpYSBjcmVhdGVSb3V0ZXIgZ2VuZXJpY3MuXG4gIGlmIChtYXRjaCA9PSBudWxsKSB7XG4gICAgcmV0dXJuIHtcbiAgICAgIG1hdGNoLFxuICAgICAgcm91dGVzOiBbXSxcbiAgICB9O1xuICB9XG5cbiAgY29uc3QgbWF0Y2hlZFJvdXRlID0gbWF0Y2gucm91dGU7XG5cbiAgY29uc3Qgcm91dGVzOiBQcmVwYXJlZE1hdGNoUm91dGVbXSA9IG1hdGNoLnJvdXRlLnJvdXRlcy5tYXAoKHJvdXRlKSA9PiB7XG4gICAgY29uc3QgeyBwYXRoLCBwcmVwYXJlLCByZXNvdXJjZVBhZ2UsIHJlbmRlciB9ID0gcm91dGU7XG5cbiAgICBsZXQgQ29tcG9uZW50OiB1bmtub3duO1xuICAgIGxldCBwcmVwYXJlZDogUHJlcGFyZVJlc3VsdCB8IHVuZGVmaW5lZDtcblxuICAgIGlmIChwcmVwYXJlICE9IG51bGwpIHtcbiAgICAgIHByZXBhcmVkID0gcHJlcGFyZSh7XG4gICAgICAgIG1hdGNoLFxuICAgICAgICBtYXRjaGVkUm91dGUsXG4gICAgICAgIHJlc291cmNlUGFnZSxcbiAgICAgICAgLy8gRml4IE9iamVjdC5jcmVhdGUobnVsbCkgaXNzdWUgaW4gcGF0aC10by1yZWdleHBcbiAgICAgICAgdmFyaWFibGVzOiB7IC4uLm1hdGNoLnBhcmFtcyB9LFxuICAgICAgICBxdWVyeTogcXVlcnkgPz8ge30sXG4gICAgICB9KTtcbiAgICB9XG5cbiAgICBpZiAocmVzb3VyY2VQYWdlICE9IG51bGwpIHtcbiAgICAgIENvbXBvbmVudCA9IHJlc291cmNlUGFnZS5nZXQoKTtcbiAgICAgIGlmIChDb21wb25lbnQgPT0gbnVsbCkge1xuICAgICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLWZsb2F0aW5nLXByb21pc2VzXG4gICAgICAgIHJlc291cmNlUGFnZS5sb2FkKCk7IC8vIGVhZ2VybHkgbG9hZFxuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4ge1xuICAgICAgcGF0aCxcbiAgICAgIHByZXBhcmVkLFxuICAgICAgcmVkaXJlY3RUbzogbWF0Y2hlZFJvdXRlLnJlZGlyZWN0VG8gPz8gbnVsbCxcbiAgICAgIHJlbmRlcixcbiAgICAgIHJlc291cmNlUGFnZSxcbiAgICB9O1xuICB9KTtcblxuICByZXR1cm4ge1xuICAgIG1hdGNoLFxuICAgIHJvdXRlcyxcbiAgfTtcbn1cblxuLyoqXG4gKiBUeXBlIGhlbHBlciBmdW5jdGlvbiBmb3IgY3JlYXRpbmcgc3Ryb25nbHktdHlwZWQgcm91dGUgZGVmaW5pdGlvbnMuXG4gKiBUaGlzIGZ1bmN0aW9uIGRvZXNuJ3QgbW9kaWZ5IHRoZSByb3V0ZSwgaXQganVzdCBwcm92aWRlcyBUeXBlU2NyaXB0IHR5cGUgaW5mZXJlbmNlLlxuICpcbiAqIEB0ZW1wbGF0ZSBUUHJlcGFyZWQgLSBUaGUgdHlwZSBvZiBwcmVwYXJlZCBkYXRhIHJldHVybmVkIGJ5IHRoZSByb3V0ZSdzIHByZXBhcmUgZnVuY3Rpb25cbiAqIEB0ZW1wbGF0ZSBUVmFyaWFibGVzIC0gUm91dGUgcGFyYW1ldGVyIHR5cGVzIGV4dHJhY3RlZCBmcm9tIHRoZSBVUkwgcGF0aFxuICogQHBhcmFtIHJvdXRlIC0gVGhlIHJvdXRlIGNvbmZpZ3VyYXRpb24gdG8gdHlwZVxuICogQHJldHVybnMgVGhlIHNhbWUgcm91dGUgd2l0aCBwcm9wZXIgVHlwZVNjcmlwdCB0eXBlc1xuICpcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiBjb25zdCB1c2VyUm91dGUgPSByPHsgdXNlcjogVXNlciB9LCB7IGlkOiBzdHJpbmcgfT4oe1xuICogICBwYXRoOiAnL3VzZXJzLzppZCcsXG4gKiAgIHByZXBhcmU6ICh7IHZhcmlhYmxlcyB9KSA9PiBmZXRjaFVzZXIodmFyaWFibGVzLmlkKSxcbiAqIH0pO1xuICogYGBgXG4gKi9cbi8qKlxuICogUm91dGUgaGVscGVyIHdpdGggY29uZGl0aW9uYWwgcXVlcnkgc2NoZW1hIGluZmVyZW5jZS4gSWYgYSBgcXVlcnlgIHNjaGVtYSBvYmplY3QgaXMgcHJlc2VudCxcbiAqIHRoZSByZXN1bHRpbmcgcm91dGUncyB0aGlyZCBnZW5lcmljIHBhcmFtZXRlciBpcyBpbmZlcnJlZCBmcm9tIGRlc2NyaXB0b3IgbWFwOyBvdGhlcndpc2UgaXRcbiAqIGZhbGxzIGJhY2sgdG8gdGhlIHByb3ZpZGVkIGdlbmVyaWMgKGRlZmF1bHQgUmVjb3JkPHN0cmluZyx1bmtub3duPikuXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiByPFxuICBUUHJlcGFyZWQgZXh0ZW5kcyBQcmVwYXJlUmVzdWx0ID0gUHJlcGFyZVJlc3VsdCxcbiAgVFZhcmlhYmxlcyBleHRlbmRzIFBhcmFtRGF0YSA9IFBhcmFtRGF0YSxcbiAgVFF1ZXJ5IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbiAgVFNjaGVtYSBleHRlbmRzIFF1ZXJ5U2NoZW1hIHwgdW5kZWZpbmVkID0gdW5kZWZpbmVkLFxuPihcbiAgcm91dGU6IChUU2NoZW1hIGV4dGVuZHMgUXVlcnlTY2hlbWFcbiAgICA/IE9taXQ8Um91dGU8VFByZXBhcmVkLCBUVmFyaWFibGVzLCBJbmZlclF1ZXJ5PFRTY2hlbWE+PiwgJ3F1ZXJ5Jz4gJiB7XG4gICAgICAgIHF1ZXJ5OiBUU2NoZW1hO1xuICAgICAgfVxuICAgIDogUm91dGU8VFByZXBhcmVkLCBUVmFyaWFibGVzLCBUUXVlcnk+KSAmIHsgcXVlcnk/OiBUU2NoZW1hIH0sXG4pOiBSb3V0ZTxcbiAgVFByZXBhcmVkLFxuICBUVmFyaWFibGVzLFxuICBUU2NoZW1hIGV4dGVuZHMgUXVlcnlTY2hlbWEgPyBJbmZlclF1ZXJ5PFRTY2hlbWE+IDogVFF1ZXJ5XG4+IHtcbiAgcmV0dXJuIHJvdXRlIGFzIHVua25vd24gYXMgUm91dGU8XG4gICAgVFByZXBhcmVkLFxuICAgIFRWYXJpYWJsZXMsXG4gICAgVFNjaGVtYSBleHRlbmRzIFF1ZXJ5U2NoZW1hID8gSW5mZXJRdWVyeTxUU2NoZW1hPiA6IFRRdWVyeVxuICA+O1xufVxuIl19
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"routes-inference.test-d.d.ts","sourceRoot":"","sources":["../../../src/type-tests/routes-inference.test-d.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
import { r, q, createRouter } from '../index.js';
|
|
2
|
+
const schema = { page: q.number() };
|
|
3
|
+
const plansRoute = r({
|
|
4
|
+
path: '/plans',
|
|
5
|
+
query: schema,
|
|
6
|
+
prepare: () => {
|
|
7
|
+
return { plansLoaded: true };
|
|
8
|
+
},
|
|
9
|
+
});
|
|
10
|
+
const userRoute = r({
|
|
11
|
+
path: '/users/:id',
|
|
12
|
+
prepare: ({ variables }) => {
|
|
13
|
+
return { userId: variables.id };
|
|
14
|
+
},
|
|
15
|
+
});
|
|
16
|
+
const searchRoute = r({
|
|
17
|
+
path: '/search',
|
|
18
|
+
query: { q: q.string() },
|
|
19
|
+
prepare: ({ query }) => {
|
|
20
|
+
return { term: query.q };
|
|
21
|
+
},
|
|
22
|
+
});
|
|
23
|
+
const { context } = createRouter([plansRoute, userRoute, searchRoute]);
|
|
24
|
+
const entry = context.get();
|
|
25
|
+
function __consume(_v) {
|
|
26
|
+
}
|
|
27
|
+
if (entry.route?.path === '/plans') {
|
|
28
|
+
const typed = entry.typedQuery;
|
|
29
|
+
if (typed != null) {
|
|
30
|
+
__consume(typed.page);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
if (entry.route?.path === '/users/:id') {
|
|
34
|
+
const prepared = entry.preparedMatch.routes.find((r) => {
|
|
35
|
+
return r.path === '/users/:id';
|
|
36
|
+
})?.prepared;
|
|
37
|
+
if (prepared != null) {
|
|
38
|
+
__consume(prepared.userId);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
if (entry.route?.path === '/search') {
|
|
42
|
+
const p = entry.preparedMatch.routes.find((r) => {
|
|
43
|
+
return r.path === '/search';
|
|
44
|
+
})?.prepared;
|
|
45
|
+
if (p != null) {
|
|
46
|
+
__consume(p.term);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm91dGVzLWluZmVyZW5jZS50ZXN0LWQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdHlwZS10ZXN0cy9yb3V0ZXMtaW5mZXJlbmNlLnRlc3QtZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxZQUFZLEVBQUUsTUFBTSxhQUFhLENBQUM7QUFHakQsTUFBTSxNQUFNLEdBQUcsRUFBRSxJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sRUFBRSxFQUFXLENBQUM7QUFFN0MsTUFBTSxVQUFVLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLElBQUksRUFBRSxRQUFRO0lBQ2QsS0FBSyxFQUFFLE1BQU07SUFDYixPQUFPLEVBQUUsR0FBRyxFQUFFO1FBQ1osT0FBTyxFQUFFLFdBQVcsRUFBRSxJQUFhLEVBQUUsQ0FBQztJQUN4QyxDQUFDO0NBQ0YsQ0FBQyxDQUFDO0FBRUgsTUFBTSxTQUFTLEdBQUcsQ0FBQyxDQUFxQztJQUN0RCxJQUFJLEVBQUUsWUFBWTtJQUNsQixPQUFPLEVBQUUsQ0FBQyxFQUFFLFNBQVMsRUFBRSxFQUFFLEVBQUU7UUFDekIsT0FBTyxFQUFFLE1BQU0sRUFBRSxTQUFTLENBQUMsRUFBRSxFQUFFLENBQUM7SUFDbEMsQ0FBQztDQUNGLENBQUMsQ0FBQztBQUVILE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQztJQUNwQixJQUFJLEVBQUUsU0FBUztJQUNmLEtBQUssRUFBRSxFQUFFLENBQUMsRUFBRSxDQUFDLENBQUMsTUFBTSxFQUFFLEVBQVc7SUFDakMsT0FBTyxFQUFFLENBQUMsRUFBRSxLQUFLLEVBQUUsRUFBRSxFQUFFO1FBQ3JCLE9BQU8sRUFBRSxJQUFJLEVBQUUsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDO0lBQzNCLENBQUM7Q0FDRixDQUFDLENBQUM7QUFFSCxNQUFNLEVBQUUsT0FBTyxFQUFFLEdBQUcsWUFBWSxDQUFDLENBQUMsVUFBVSxFQUFFLFNBQVMsRUFBRSxXQUFXLENBQVUsQ0FBQyxDQUFDO0FBR2hGLE1BQU0sS0FBSyxHQUFHLE9BQU8sQ0FBQyxHQUFHLEVBQUUsQ0FBQztBQUc1QixTQUFTLFNBQVMsQ0FBSSxFQUFLO0FBRTNCLENBQUM7QUFDRCxJQUFJLEtBQUssQ0FBQyxLQUFLLEVBQUUsSUFBSSxLQUFLLFFBQVEsRUFBRSxDQUFDO0lBQ25DLE1BQU0sS0FBSyxHQUFHLEtBQUssQ0FBQyxVQUEyQyxDQUFDO0lBQ2hFLElBQUksS0FBSyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2xCLFNBQVMsQ0FBcUIsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO0lBQzVDLENBQUM7QUFDSCxDQUFDO0FBQ0QsSUFBSSxLQUFLLENBQUMsS0FBSyxFQUFFLElBQUksS0FBSyxZQUFZLEVBQUUsQ0FBQztJQUN2QyxNQUFNLFFBQVEsR0FBRyxLQUFLLENBQUMsYUFBYSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRTtRQUNyRCxPQUFPLENBQUMsQ0FBQyxJQUFJLEtBQUssWUFBWSxDQUFDO0lBQ2pDLENBQUMsQ0FBQyxFQUFFLFFBQTBDLENBQUM7SUFDL0MsSUFBSSxRQUFRLElBQUksSUFBSSxFQUFFLENBQUM7UUFDckIsU0FBUyxDQUFTLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNyQyxDQUFDO0FBQ0gsQ0FBQztBQUNELElBQUksS0FBSyxDQUFDLEtBQUssRUFBRSxJQUFJLEtBQUssU0FBUyxFQUFFLENBQUM7SUFDcEMsTUFBTSxDQUFDLEdBQUcsS0FBSyxDQUFDLGFBQWEsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUU7UUFDOUMsT0FBTyxDQUFDLENBQUMsSUFBSSxLQUFLLFNBQVMsQ0FBQztJQUM5QixDQUFDLENBQUMsRUFBRSxRQUFvRCxDQUFDO0lBQ3pELElBQUksQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDO1FBQ2QsU0FBUyxDQUFxQixDQUFDLENBQUMsSUFBSSxDQUFDLENBQUM7SUFDeEMsQ0FBQztBQUNILENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyByLCBxLCBjcmVhdGVSb3V0ZXIgfSBmcm9tICcuLi9pbmRleC5qcyc7XG5cbi8vIEJhc2ljIHF1ZXJ5IHNjaGVtYVxuY29uc3Qgc2NoZW1hID0geyBwYWdlOiBxLm51bWJlcigpIH0gYXMgY29uc3Q7XG5cbmNvbnN0IHBsYW5zUm91dGUgPSByKHtcbiAgcGF0aDogJy9wbGFucycsXG4gIHF1ZXJ5OiBzY2hlbWEsXG4gIHByZXBhcmU6ICgpID0+IHtcbiAgICByZXR1cm4geyBwbGFuc0xvYWRlZDogdHJ1ZSBhcyBjb25zdCB9O1xuICB9LFxufSk7XG5cbmNvbnN0IHVzZXJSb3V0ZSA9IHI8eyB1c2VySWQ6IHN0cmluZyB9LCB7IGlkOiBzdHJpbmcgfT4oe1xuICBwYXRoOiAnL3VzZXJzLzppZCcsXG4gIHByZXBhcmU6ICh7IHZhcmlhYmxlcyB9KSA9PiB7XG4gICAgcmV0dXJuIHsgdXNlcklkOiB2YXJpYWJsZXMuaWQgfTtcbiAgfSxcbn0pO1xuXG5jb25zdCBzZWFyY2hSb3V0ZSA9IHIoe1xuICBwYXRoOiAnL3NlYXJjaCcsXG4gIHF1ZXJ5OiB7IHE6IHEuc3RyaW5nKCkgfSBhcyBjb25zdCxcbiAgcHJlcGFyZTogKHsgcXVlcnkgfSkgPT4ge1xuICAgIHJldHVybiB7IHRlcm06IHF1ZXJ5LnEgfTtcbiAgfSxcbn0pO1xuXG5jb25zdCB7IGNvbnRleHQgfSA9IGNyZWF0ZVJvdXRlcihbcGxhbnNSb3V0ZSwgdXNlclJvdXRlLCBzZWFyY2hSb3V0ZV0gYXMgY29uc3QpO1xuXG4vLyBOYXJyb3dpbmcgdGVzdHMgKGNvbXBpbGUtdGltZSBvbmx5KVxuY29uc3QgZW50cnkgPSBjb250ZXh0LmdldCgpO1xuLyoqIE5vLW9wIHNpbmsgdG8gZm9yY2UgdHlwZSBldmFsdWF0aW9uIHdpdGhvdXQgcnVudGltZSB1c2FnZSAqL1xuLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby11bnVzZWQtdmFyc1xuZnVuY3Rpb24gX19jb25zdW1lPFQ+KF92OiBUKTogdm9pZCB7XG4gIC8qIG5vb3AgKi9cbn1cbmlmIChlbnRyeS5yb3V0ZT8ucGF0aCA9PT0gJy9wbGFucycpIHtcbiAgY29uc3QgdHlwZWQgPSBlbnRyeS50eXBlZFF1ZXJ5IGFzIHsgcGFnZT86IG51bWJlciB9IHwgdW5kZWZpbmVkO1xuICBpZiAodHlwZWQgIT0gbnVsbCkge1xuICAgIF9fY29uc3VtZTxudW1iZXIgfCB1bmRlZmluZWQ+KHR5cGVkLnBhZ2UpO1xuICB9XG59XG5pZiAoZW50cnkucm91dGU/LnBhdGggPT09ICcvdXNlcnMvOmlkJykge1xuICBjb25zdCBwcmVwYXJlZCA9IGVudHJ5LnByZXBhcmVkTWF0Y2gucm91dGVzLmZpbmQoKHIpID0+IHtcbiAgICByZXR1cm4gci5wYXRoID09PSAnL3VzZXJzLzppZCc7XG4gIH0pPy5wcmVwYXJlZCBhcyB7IHVzZXJJZDogc3RyaW5nIH0gfCB1bmRlZmluZWQ7XG4gIGlmIChwcmVwYXJlZCAhPSBudWxsKSB7XG4gICAgX19jb25zdW1lPHN0cmluZz4ocHJlcGFyZWQudXNlcklkKTtcbiAgfVxufVxuaWYgKGVudHJ5LnJvdXRlPy5wYXRoID09PSAnL3NlYXJjaCcpIHtcbiAgY29uc3QgcCA9IGVudHJ5LnByZXBhcmVkTWF0Y2gucm91dGVzLmZpbmQoKHIpID0+IHtcbiAgICByZXR1cm4gci5wYXRoID09PSAnL3NlYXJjaCc7XG4gIH0pPy5wcmVwYXJlZCBhcyB7IHRlcm06IHN0cmluZyB8IHVuZGVmaW5lZCB9IHwgdW5kZWZpbmVkO1xuICBpZiAocCAhPSBudWxsKSB7XG4gICAgX19jb25zdW1lPHN0cmluZyB8IHVuZGVmaW5lZD4ocC50ZXJtKTtcbiAgfVxufVxuIl19
|
package/lib/esm/types.d.ts
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import type { ComponentType, ReactElement, ReactNode, JSX } from 'react';
|
|
2
|
+
import type { Schema as FilterSchema, InferFilters as InferFilterResult, Diagnostic as FilterDiagnostic } from '@plumile/filter-query';
|
|
2
3
|
import type { Match, MatchFunction, ParamData } from 'path-to-regexp';
|
|
3
4
|
import type { FlatRoute } from './builder.js';
|
|
4
5
|
import type { ResourcePage } from './ResourcePage.js';
|
|
@@ -16,16 +17,16 @@ export type RouterMatchedRoute<TVariables extends ParamData> = {
|
|
|
16
17
|
route: FlatRoute<TVariables>;
|
|
17
18
|
};
|
|
18
19
|
export type RouteReactComponent<TProps = Record<string, unknown>> = (props: TProps) => JSX.Element | null;
|
|
19
|
-
export type RouteRenderOpts<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData> = {
|
|
20
|
+
export type RouteRenderOpts<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = {
|
|
20
21
|
children: ReactNode;
|
|
21
22
|
Component?: RouteReactComponent;
|
|
22
23
|
prepared: TPrepared | undefined;
|
|
23
24
|
preparedRoute: PreparedMatchRoute;
|
|
24
25
|
route: FlatRoute<TVariables> | null;
|
|
25
26
|
rawQuery: Record<string, string | string[]>;
|
|
26
|
-
query:
|
|
27
|
+
query: TQueryShape;
|
|
27
28
|
};
|
|
28
|
-
export type RouteRender<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData> = (opts: RouteRenderOpts<TPrepared, TVariables>) => ReactElement
|
|
29
|
+
export type RouteRender<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = (opts: RouteRenderOpts<TPrepared, TVariables, TQueryShape>) => ReactElement | null;
|
|
29
30
|
export type PreparedMatchRoute = {
|
|
30
31
|
path?: string;
|
|
31
32
|
prepared: PrepareResult | undefined;
|
|
@@ -44,7 +45,9 @@ export type RouteEntry<TVariables extends ParamData> = {
|
|
|
44
45
|
forceRerender: boolean;
|
|
45
46
|
rawSearch?: string;
|
|
46
47
|
query: Record<string, string | string[]>;
|
|
47
|
-
typedQuery?:
|
|
48
|
+
typedQuery?: Record<string, unknown>;
|
|
49
|
+
filters?: Record<string, unknown>;
|
|
50
|
+
filterDiagnostics?: FilterDiagnostic[];
|
|
48
51
|
};
|
|
49
52
|
export type QueryDescriptor<T> = {
|
|
50
53
|
__type: T;
|
|
@@ -69,33 +72,30 @@ export type Redirect = {
|
|
|
69
72
|
status?: RouterRedirectStatus;
|
|
70
73
|
};
|
|
71
74
|
export type PrepareResult = Record<string, any>;
|
|
72
|
-
export type PrepareParams<TVariables extends ParamData,
|
|
75
|
+
export type PrepareParams<TVariables extends ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = {
|
|
73
76
|
match: RouterMatchedRoute<TVariables>;
|
|
74
77
|
matchedRoute: FlatRoute<TVariables>;
|
|
75
78
|
resourcePage?: ResourcePage | null;
|
|
76
79
|
variables: TVariables;
|
|
77
|
-
query:
|
|
80
|
+
query: TQueryShape;
|
|
78
81
|
};
|
|
79
|
-
export type RoutePrepare<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData,
|
|
80
|
-
export type Route<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData,
|
|
81
|
-
children?: (Route<
|
|
82
|
+
export type RoutePrepare<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = (params: PrepareParams<TVariables, TQueryShape>) => TPrepared;
|
|
83
|
+
export type Route<TPrepared extends PrepareResult, TVariables extends ParamData = ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = {
|
|
84
|
+
children?: (Route<PrepareResult> | Redirect)[];
|
|
82
85
|
resourcePage?: ResourcePage | null;
|
|
83
86
|
path?: string;
|
|
84
|
-
prepare?: RoutePrepare<TPrepared, TVariables,
|
|
85
|
-
render?: RouteRender<TPrepared, TVariables>;
|
|
87
|
+
prepare?: RoutePrepare<TPrepared, TVariables, TQueryShape>;
|
|
88
|
+
render?: RouteRender<TPrepared, TVariables, TQueryShape>;
|
|
86
89
|
query?: QuerySchema;
|
|
87
|
-
filterSchema?:
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
export type RouteComponentProps<TVariables extends ParamData> = {
|
|
93
|
-
children: ReactElement<any>;
|
|
94
|
-
routerContext: RoutingContextType<TVariables>;
|
|
90
|
+
filterSchema?: FilterSchema;
|
|
91
|
+
};
|
|
92
|
+
export type RouteComponentProps<TVariables extends ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = {
|
|
93
|
+
children: ReactElement;
|
|
94
|
+
routerContext: RoutingContextType<TVariables, TQueryShape>;
|
|
95
95
|
route: Route<any, any>;
|
|
96
96
|
};
|
|
97
97
|
export type SubscribeCallback<TVariables extends ParamData> = (nextEntry: RouteEntry<TVariables>) => void;
|
|
98
|
-
export type RoutingContextType<TVariables extends ParamData> = {
|
|
98
|
+
export type RoutingContextType<TVariables extends ParamData, TQueryShape extends Record<string, unknown> = Record<string, unknown>> = {
|
|
99
99
|
history: BrowserHistory;
|
|
100
100
|
get: () => RouteEntry<TVariables>;
|
|
101
101
|
preloadCode: (pathname: string) => void;
|
|
@@ -103,27 +103,53 @@ export type RoutingContextType<TVariables extends ParamData> = {
|
|
|
103
103
|
subscribe: (callback: SubscribeCallback<TVariables>) => () => void;
|
|
104
104
|
navigate: (opts: {
|
|
105
105
|
pathname?: string;
|
|
106
|
-
query?:
|
|
106
|
+
query?: TQueryShape;
|
|
107
|
+
filters?: Record<string, unknown>;
|
|
107
108
|
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
109
|
}) => 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;
|
|
124
110
|
};
|
|
125
111
|
export type ResourcePageReturn = {
|
|
126
|
-
default: ComponentType<
|
|
127
|
-
} | ComponentType<
|
|
112
|
+
default: ComponentType<unknown>;
|
|
113
|
+
} | ComponentType<unknown>;
|
|
128
114
|
export type ResourcePageLoader = () => Promise<ResourcePageReturn>;
|
|
115
|
+
export type InferFilters<S extends FilterSchema | undefined> = S extends FilterSchema ? InferFilterResult<S> : Record<string, never>;
|
|
116
|
+
export type { FilterSchema };
|
|
117
|
+
export type AnyRoute = Route<any, any, any>;
|
|
118
|
+
export type PreparedOf<R> = R extends Route<infer P, any, any> ? P : never;
|
|
119
|
+
export type VariablesOf<R> = R extends Route<any, infer V, any> ? V : never;
|
|
120
|
+
export type QueryShapeOf<R> = R extends Route<any, any, infer Q> ? Q : never;
|
|
121
|
+
export type PathOf<R> = R extends {
|
|
122
|
+
path?: infer P;
|
|
123
|
+
} ? P extends string ? P : never : never;
|
|
124
|
+
export type PathsOf<Routes extends readonly AnyRoute[]> = PathOf<Routes[number]>;
|
|
125
|
+
export type PreparedMap<Routes extends readonly AnyRoute[]> = {
|
|
126
|
+
[K in PathsOf<Routes>]: PreparedOf<Extract<Routes[number], {
|
|
127
|
+
path?: K;
|
|
128
|
+
}>> | undefined;
|
|
129
|
+
};
|
|
130
|
+
export type QueryShapeMap<Routes extends readonly AnyRoute[]> = {
|
|
131
|
+
[K in PathsOf<Routes>]: QueryShapeOf<Extract<Routes[number], {
|
|
132
|
+
path?: K;
|
|
133
|
+
}>>;
|
|
134
|
+
};
|
|
135
|
+
export interface PreparedAccess<Routes extends readonly AnyRoute[]> {
|
|
136
|
+
getPrepared: <P extends PathsOf<Routes>>(path: P) => PreparedMap<Routes>[P];
|
|
137
|
+
getTypedQuery: <P extends PathsOf<Routes>>(path: P) => QueryShapeMap<Routes>[P] | undefined;
|
|
138
|
+
}
|
|
139
|
+
export type NavigateInputForPath<Routes extends readonly AnyRoute[], P extends PathsOf<Routes>> = {
|
|
140
|
+
pathname: P;
|
|
141
|
+
query?: QueryShapeMap<Routes>[P];
|
|
142
|
+
filters?: Record<string, unknown>;
|
|
143
|
+
replace?: boolean;
|
|
144
|
+
};
|
|
145
|
+
export type NavigateInputUntyped = {
|
|
146
|
+
pathname?: string;
|
|
147
|
+
query?: Record<string, any>;
|
|
148
|
+
filters?: Record<string, any>;
|
|
149
|
+
replace?: boolean;
|
|
150
|
+
};
|
|
151
|
+
export interface NavigateOverloads<Routes extends readonly AnyRoute[]> {
|
|
152
|
+
<P extends PathsOf<Routes>>(opts: NavigateInputForPath<Routes, P>): void;
|
|
153
|
+
(opts: NavigateInputUntyped): void;
|
|
154
|
+
}
|
|
129
155
|
//# sourceMappingURL=types.d.ts.map
|