@argon-router/core 0.8.3 → 0.9.0
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/dist/index.cjs +1 -1
- package/dist/index.d.ts +12 -7
- package/dist/index.js +768 -1014
- package/package.json +7 -6
package/dist/index.js
CHANGED
|
@@ -1,1186 +1,917 @@
|
|
|
1
|
-
import { createEffect
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
t && (n = n.filter(function(a) {
|
|
7
|
-
return Object.getOwnPropertyDescriptor(e, a).enumerable;
|
|
8
|
-
})), r.push.apply(r, n);
|
|
9
|
-
}
|
|
10
|
-
return r;
|
|
11
|
-
}
|
|
12
|
-
function P(e) {
|
|
13
|
-
for (var t = 1; t < arguments.length; t++) {
|
|
14
|
-
var r = arguments[t] != null ? arguments[t] : {};
|
|
15
|
-
t % 2 ? C(Object(r), !0).forEach(function(n) {
|
|
16
|
-
ne(e, n, r[n]);
|
|
17
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : C(Object(r)).forEach(function(n) {
|
|
18
|
-
Object.defineProperty(e, n, Object.getOwnPropertyDescriptor(r, n));
|
|
19
|
-
});
|
|
20
|
-
}
|
|
21
|
-
return e;
|
|
22
|
-
}
|
|
23
|
-
function ne(e, t, r) {
|
|
24
|
-
return (t = ae(t)) in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e;
|
|
25
|
-
}
|
|
26
|
-
function ae(e) {
|
|
27
|
-
var t = oe(e, "string");
|
|
28
|
-
return typeof t == "symbol" ? t : t + "";
|
|
29
|
-
}
|
|
30
|
-
function oe(e, t) {
|
|
31
|
-
if (typeof e != "object" || !e) return e;
|
|
32
|
-
var r = e[Symbol.toPrimitive];
|
|
33
|
-
if (r !== void 0) {
|
|
34
|
-
var n = r.call(e, t);
|
|
35
|
-
if (typeof n != "object") return n;
|
|
36
|
-
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
37
|
-
}
|
|
38
|
-
return (t === "string" ? String : Number)(e);
|
|
39
|
-
}
|
|
40
|
-
function ze(e) {
|
|
41
|
-
let t;
|
|
42
|
-
const r = S(() => {
|
|
43
|
-
var m;
|
|
44
|
-
return (m = t) === null || m === void 0 ? void 0 : m();
|
|
45
|
-
}, {
|
|
1
|
+
import { createEffect, createStore, createEvent, sample, split, attach, scopeBind } from "effector";
|
|
2
|
+
import queryString from "query-string";
|
|
3
|
+
function createRoute(config) {
|
|
4
|
+
let asyncImport;
|
|
5
|
+
const waitForAsyncBundleFx = createEffect(() => asyncImport == null ? void 0 : asyncImport(), {
|
|
46
6
|
name: "waitForAsyncBundleFx",
|
|
47
|
-
sid: "
|
|
48
|
-
})
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
await
|
|
7
|
+
sid: "1y76ms"
|
|
8
|
+
});
|
|
9
|
+
const beforeOpenFx = createEffect(async () => {
|
|
10
|
+
for (const fx of config.beforeOpen ?? []) {
|
|
11
|
+
await fx();
|
|
52
12
|
}
|
|
53
13
|
}, {
|
|
54
14
|
name: "beforeOpenFx",
|
|
55
|
-
sid: "-
|
|
56
|
-
})
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
15
|
+
sid: "-65tb76"
|
|
16
|
+
});
|
|
17
|
+
const openFx = createEffect(async (payload) => {
|
|
18
|
+
await waitForAsyncBundleFx();
|
|
19
|
+
await beforeOpenFx();
|
|
20
|
+
const parent = config.parent;
|
|
21
|
+
if (parent) {
|
|
22
|
+
await parent.internal.openFx({
|
|
23
|
+
...payload ?? {
|
|
24
|
+
params: {}
|
|
25
|
+
},
|
|
26
|
+
navigate: false
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
return payload;
|
|
64
30
|
}, {
|
|
65
31
|
name: "openFx",
|
|
66
|
-
sid: "
|
|
67
|
-
})
|
|
32
|
+
sid: "p3u4q7"
|
|
33
|
+
});
|
|
34
|
+
const $params = createStore({}, {
|
|
68
35
|
name: "$params",
|
|
69
|
-
sid: "-
|
|
70
|
-
})
|
|
36
|
+
sid: "-a34rm3"
|
|
37
|
+
});
|
|
38
|
+
const $isOpened = createStore(false, {
|
|
71
39
|
name: "$isOpened",
|
|
72
|
-
sid: "
|
|
73
|
-
})
|
|
40
|
+
sid: "7m6f5g"
|
|
41
|
+
});
|
|
42
|
+
const $isPending = openFx.pending;
|
|
43
|
+
const open = createEvent({
|
|
74
44
|
name: "open",
|
|
75
|
-
sid: "
|
|
76
|
-
})
|
|
45
|
+
sid: "ur5fa6"
|
|
46
|
+
});
|
|
47
|
+
const close = createEvent({
|
|
77
48
|
name: "close",
|
|
78
|
-
sid: "-
|
|
79
|
-
})
|
|
49
|
+
sid: "-k33yie"
|
|
50
|
+
});
|
|
51
|
+
const opened = createEvent({
|
|
80
52
|
name: "opened",
|
|
81
|
-
sid: "-
|
|
82
|
-
})
|
|
53
|
+
sid: "-nt8hns"
|
|
54
|
+
});
|
|
55
|
+
const openedOnServer = createEvent({
|
|
83
56
|
name: "openedOnServer",
|
|
84
|
-
sid: "
|
|
85
|
-
})
|
|
57
|
+
sid: "hbjexo"
|
|
58
|
+
});
|
|
59
|
+
const openedOnClient = createEvent({
|
|
86
60
|
name: "openedOnClient",
|
|
87
|
-
sid: "
|
|
88
|
-
})
|
|
61
|
+
sid: "h92wzn"
|
|
62
|
+
});
|
|
63
|
+
const navigated = createEvent({
|
|
89
64
|
name: "navigated",
|
|
90
|
-
sid: "-
|
|
91
|
-
})
|
|
65
|
+
sid: "-8amrhe"
|
|
66
|
+
});
|
|
67
|
+
const closed = createEvent({
|
|
92
68
|
name: "closed",
|
|
93
|
-
sid: "
|
|
69
|
+
sid: "-pql6th"
|
|
94
70
|
});
|
|
95
|
-
|
|
71
|
+
sample({
|
|
96
72
|
and: [{
|
|
97
|
-
clock:
|
|
98
|
-
target:
|
|
73
|
+
clock: open,
|
|
74
|
+
target: openFx
|
|
99
75
|
}],
|
|
100
76
|
or: {
|
|
101
|
-
sid: "
|
|
77
|
+
sid: "ymah4t"
|
|
102
78
|
}
|
|
103
79
|
});
|
|
104
|
-
const
|
|
105
|
-
|
|
80
|
+
const defaultParams = {};
|
|
81
|
+
sample({
|
|
106
82
|
and: [{
|
|
107
|
-
clock:
|
|
108
|
-
fn: (
|
|
109
|
-
|
|
83
|
+
clock: navigated,
|
|
84
|
+
fn: (payload) => {
|
|
85
|
+
if (!payload) {
|
|
86
|
+
return defaultParams;
|
|
87
|
+
}
|
|
88
|
+
return "params" in payload ? {
|
|
89
|
+
...payload.params
|
|
90
|
+
} : defaultParams;
|
|
91
|
+
},
|
|
92
|
+
target: $params
|
|
110
93
|
}],
|
|
111
94
|
or: {
|
|
112
|
-
sid: "
|
|
95
|
+
sid: "z1opqx"
|
|
113
96
|
}
|
|
114
|
-
})
|
|
97
|
+
});
|
|
98
|
+
split({
|
|
115
99
|
and: [{
|
|
116
|
-
source:
|
|
117
|
-
match: () => typeof window
|
|
100
|
+
source: navigated,
|
|
101
|
+
match: () => typeof window === "undefined" ? "server" : "client",
|
|
118
102
|
cases: {
|
|
119
|
-
server:
|
|
120
|
-
client:
|
|
103
|
+
server: openedOnServer,
|
|
104
|
+
client: openedOnClient
|
|
121
105
|
}
|
|
122
106
|
}],
|
|
123
107
|
or: {
|
|
124
|
-
sid: "
|
|
108
|
+
sid: "-zha4na"
|
|
125
109
|
}
|
|
126
|
-
})
|
|
110
|
+
});
|
|
111
|
+
sample({
|
|
127
112
|
and: [{
|
|
128
|
-
clock: [
|
|
129
|
-
target:
|
|
113
|
+
clock: [openedOnClient, openedOnServer],
|
|
114
|
+
target: opened
|
|
130
115
|
}],
|
|
131
116
|
or: {
|
|
132
|
-
sid: "-
|
|
117
|
+
sid: "-z08i93"
|
|
133
118
|
}
|
|
134
|
-
})
|
|
119
|
+
});
|
|
120
|
+
sample({
|
|
135
121
|
and: [{
|
|
136
|
-
clock:
|
|
137
|
-
target:
|
|
122
|
+
clock: close,
|
|
123
|
+
target: closed
|
|
138
124
|
}],
|
|
139
125
|
or: {
|
|
140
|
-
sid: "-
|
|
126
|
+
sid: "-yxhjaa"
|
|
141
127
|
}
|
|
142
|
-
})
|
|
128
|
+
});
|
|
129
|
+
sample({
|
|
143
130
|
and: [{
|
|
144
|
-
clock: [
|
|
145
|
-
target:
|
|
131
|
+
clock: [opened.map(() => true), closed.map(() => false)],
|
|
132
|
+
target: $isOpened
|
|
146
133
|
}],
|
|
147
134
|
or: {
|
|
148
|
-
sid: "-
|
|
135
|
+
sid: "-yj6vuw"
|
|
149
136
|
}
|
|
150
|
-
})
|
|
151
|
-
|
|
152
|
-
$
|
|
153
|
-
$
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
137
|
+
});
|
|
138
|
+
return {
|
|
139
|
+
$params,
|
|
140
|
+
$isOpened,
|
|
141
|
+
$isPending,
|
|
142
|
+
open,
|
|
143
|
+
closed,
|
|
144
|
+
opened,
|
|
145
|
+
openedOnClient,
|
|
146
|
+
openedOnServer,
|
|
147
|
+
...config,
|
|
160
148
|
internal: {
|
|
161
|
-
navigated
|
|
162
|
-
close
|
|
163
|
-
openFx
|
|
164
|
-
setAsyncImport: (
|
|
149
|
+
navigated,
|
|
150
|
+
close,
|
|
151
|
+
openFx,
|
|
152
|
+
setAsyncImport: (value) => asyncImport = value
|
|
165
153
|
},
|
|
166
154
|
"@@unitShape": () => ({
|
|
167
|
-
params:
|
|
168
|
-
isPending:
|
|
169
|
-
isOpened:
|
|
170
|
-
onOpen:
|
|
155
|
+
params: $params,
|
|
156
|
+
isPending: $isPending,
|
|
157
|
+
isOpened: $isOpened,
|
|
158
|
+
onOpen: open
|
|
171
159
|
})
|
|
172
|
-
}
|
|
160
|
+
};
|
|
173
161
|
}
|
|
174
|
-
const
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
162
|
+
const anySymbol = Symbol("any");
|
|
163
|
+
const numberSymbol = Symbol("number");
|
|
164
|
+
const stringSymbol = Symbol("string");
|
|
165
|
+
const arraySymbol = Symbol("array");
|
|
166
|
+
const booleanSymbol = Symbol("boolean");
|
|
167
|
+
const parameters = {
|
|
168
|
+
any: anySymbol,
|
|
169
|
+
number: numberSymbol,
|
|
170
|
+
string: stringSymbol,
|
|
171
|
+
array: arraySymbol,
|
|
172
|
+
boolean: booleanSymbol
|
|
180
173
|
};
|
|
181
|
-
function
|
|
182
|
-
for (const
|
|
183
|
-
if (
|
|
184
|
-
return
|
|
185
|
-
|
|
174
|
+
function isForRouteActive(forRoutes, activeRoutes) {
|
|
175
|
+
for (const route of forRoutes) {
|
|
176
|
+
if (activeRoutes.includes(route)) {
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
return false;
|
|
186
181
|
}
|
|
187
|
-
function
|
|
188
|
-
for (const
|
|
189
|
-
const
|
|
190
|
-
if (Array.isArray(
|
|
191
|
-
return
|
|
192
|
-
|
|
182
|
+
function isHaveValidParams(query, neededParameters) {
|
|
183
|
+
for (const key in neededParameters) {
|
|
184
|
+
const parameterType = neededParameters[key];
|
|
185
|
+
if (Array.isArray(parameterType) && (!query[key] || JSON.stringify(parameterType) !== query[key])) {
|
|
186
|
+
return false;
|
|
187
|
+
}
|
|
188
|
+
switch (typeof parameterType) {
|
|
193
189
|
case "number": {
|
|
194
|
-
if (!
|
|
195
|
-
return
|
|
190
|
+
if (!query[key] || parameterType.toString() !== query[key]) {
|
|
191
|
+
return false;
|
|
192
|
+
}
|
|
196
193
|
break;
|
|
197
194
|
}
|
|
198
195
|
case "object": {
|
|
199
|
-
if (!
|
|
200
|
-
return
|
|
196
|
+
if (!query[key] || JSON.stringify(parameterType) !== query[key]) {
|
|
197
|
+
return false;
|
|
198
|
+
}
|
|
201
199
|
break;
|
|
202
200
|
}
|
|
203
201
|
case "string": {
|
|
204
|
-
if (!
|
|
205
|
-
return
|
|
202
|
+
if (!query[key] || parameterType !== query[key]) {
|
|
203
|
+
return false;
|
|
204
|
+
}
|
|
206
205
|
break;
|
|
207
206
|
}
|
|
208
207
|
case "boolean": {
|
|
209
|
-
if (!
|
|
210
|
-
return
|
|
208
|
+
if (!query[key] || !["0", "1", "false", "true"].includes(query[key])) {
|
|
209
|
+
return false;
|
|
210
|
+
}
|
|
211
211
|
break;
|
|
212
212
|
}
|
|
213
213
|
}
|
|
214
|
-
switch (
|
|
215
|
-
case
|
|
216
|
-
if (!
|
|
217
|
-
return
|
|
214
|
+
switch (parameterType) {
|
|
215
|
+
case parameters.any: {
|
|
216
|
+
if (!query[key]) {
|
|
217
|
+
return false;
|
|
218
|
+
}
|
|
218
219
|
break;
|
|
219
220
|
}
|
|
220
|
-
case
|
|
221
|
-
if (!
|
|
222
|
-
return
|
|
221
|
+
case parameters.string: {
|
|
222
|
+
if (!query[key] || Array.isArray(query[key])) {
|
|
223
|
+
return false;
|
|
224
|
+
}
|
|
223
225
|
break;
|
|
224
226
|
}
|
|
225
|
-
case
|
|
226
|
-
if (!
|
|
227
|
-
return
|
|
227
|
+
case parameters.array: {
|
|
228
|
+
if (!query[key] || !Array.isArray(query[key])) {
|
|
229
|
+
return false;
|
|
230
|
+
}
|
|
228
231
|
break;
|
|
229
232
|
}
|
|
230
|
-
case
|
|
231
|
-
if (!
|
|
232
|
-
return
|
|
233
|
+
case parameters.number: {
|
|
234
|
+
if (!query[key] || Array.isArray(query[key]) || isNaN(parseInt(query[key])) && isNaN(parseFloat(query[key]))) {
|
|
235
|
+
return false;
|
|
236
|
+
}
|
|
233
237
|
break;
|
|
234
238
|
}
|
|
235
|
-
case
|
|
236
|
-
if (!
|
|
237
|
-
return
|
|
239
|
+
case parameters.boolean: {
|
|
240
|
+
if (!query[key] || Array.isArray(query[key]) || !["0", "1", "false", "true"].includes(query[key])) {
|
|
241
|
+
return false;
|
|
242
|
+
}
|
|
238
243
|
break;
|
|
239
244
|
}
|
|
240
245
|
}
|
|
241
246
|
}
|
|
242
|
-
return
|
|
247
|
+
return true;
|
|
243
248
|
}
|
|
244
|
-
function
|
|
245
|
-
const
|
|
246
|
-
for (const
|
|
247
|
-
const
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
249
|
+
function transformParams(query, neededParameters) {
|
|
250
|
+
const result = {};
|
|
251
|
+
for (const key in neededParameters) {
|
|
252
|
+
const parameterType = neededParameters[key];
|
|
253
|
+
const data = query[key];
|
|
254
|
+
if (Array.isArray(parameterType)) {
|
|
255
|
+
const arrayData = query[key];
|
|
256
|
+
result[key] = arrayData;
|
|
251
257
|
continue;
|
|
252
258
|
}
|
|
253
|
-
switch (typeof
|
|
259
|
+
switch (typeof parameterType) {
|
|
254
260
|
case "number": {
|
|
255
|
-
|
|
261
|
+
result[key] = isNaN(parseInt(data)) ? parseFloat(data) : parseInt(data);
|
|
256
262
|
break;
|
|
257
263
|
}
|
|
258
264
|
case "object": {
|
|
259
|
-
|
|
265
|
+
result[key] = JSON.parse(data);
|
|
260
266
|
break;
|
|
261
267
|
}
|
|
262
|
-
case "string":
|
|
263
|
-
|
|
268
|
+
case "string": {
|
|
269
|
+
result[key] = data;
|
|
270
|
+
}
|
|
264
271
|
case "boolean": {
|
|
265
|
-
|
|
272
|
+
result[key] = data === "1" || data === "true";
|
|
266
273
|
break;
|
|
267
274
|
}
|
|
268
275
|
}
|
|
269
|
-
switch (
|
|
270
|
-
case
|
|
271
|
-
case
|
|
272
|
-
case
|
|
273
|
-
|
|
276
|
+
switch (parameterType) {
|
|
277
|
+
case parameters.any:
|
|
278
|
+
case parameters.string:
|
|
279
|
+
case parameters.array: {
|
|
280
|
+
result[key] = query[key];
|
|
274
281
|
break;
|
|
275
282
|
}
|
|
276
|
-
case
|
|
277
|
-
const
|
|
278
|
-
|
|
283
|
+
case parameters.number: {
|
|
284
|
+
const data2 = query[key];
|
|
285
|
+
result[key] = isNaN(parseInt(data2)) ? parseFloat(data2) : parseInt(data2);
|
|
279
286
|
break;
|
|
280
287
|
}
|
|
281
|
-
case
|
|
282
|
-
const
|
|
283
|
-
|
|
288
|
+
case parameters.boolean: {
|
|
289
|
+
const data2 = query[key];
|
|
290
|
+
result[key] = data2 === "1" || data2 === "true";
|
|
284
291
|
break;
|
|
285
292
|
}
|
|
286
293
|
}
|
|
287
294
|
}
|
|
288
|
-
return
|
|
295
|
+
return result;
|
|
289
296
|
}
|
|
290
|
-
function
|
|
297
|
+
function trackQueryControlsFactory(_ref) {
|
|
291
298
|
let {
|
|
292
|
-
$query
|
|
293
|
-
navigate
|
|
294
|
-
} =
|
|
295
|
-
return
|
|
296
|
-
$activeRoutes:
|
|
299
|
+
$query,
|
|
300
|
+
navigate
|
|
301
|
+
} = _ref;
|
|
302
|
+
return trackQueryFactory({
|
|
303
|
+
$activeRoutes: createStore([], {
|
|
297
304
|
name: "$activeRoutes",
|
|
298
305
|
sid: "7ol7tr"
|
|
299
306
|
}),
|
|
300
|
-
$query
|
|
301
|
-
navigate
|
|
307
|
+
$query,
|
|
308
|
+
navigate
|
|
302
309
|
});
|
|
303
310
|
}
|
|
304
|
-
function
|
|
311
|
+
function trackQueryFactory(_ref2) {
|
|
305
312
|
let {
|
|
306
|
-
$activeRoutes
|
|
307
|
-
$query
|
|
308
|
-
navigate
|
|
309
|
-
} =
|
|
310
|
-
return (
|
|
313
|
+
$activeRoutes,
|
|
314
|
+
$query,
|
|
315
|
+
navigate
|
|
316
|
+
} = _ref2;
|
|
317
|
+
return (config) => {
|
|
311
318
|
const {
|
|
312
|
-
parameters:
|
|
313
|
-
forRoutes
|
|
314
|
-
} =
|
|
319
|
+
parameters: parameters2,
|
|
320
|
+
forRoutes
|
|
321
|
+
} = config;
|
|
322
|
+
const $entered = createStore(false, {
|
|
315
323
|
name: "$entered",
|
|
316
324
|
sid: "-okbvx4"
|
|
317
|
-
})
|
|
325
|
+
});
|
|
326
|
+
const entered = createEvent({
|
|
318
327
|
name: "entered",
|
|
319
328
|
sid: "-1bbi51"
|
|
320
|
-
})
|
|
329
|
+
});
|
|
330
|
+
const exited = createEvent({
|
|
321
331
|
name: "exited",
|
|
322
332
|
sid: "-lw34uy"
|
|
323
|
-
})
|
|
333
|
+
});
|
|
334
|
+
const exit = createEvent({
|
|
324
335
|
name: "exit",
|
|
325
336
|
sid: "5l9ghz"
|
|
326
|
-
})
|
|
337
|
+
});
|
|
338
|
+
const changeEntered = createEvent({
|
|
327
339
|
name: "changeEntered",
|
|
328
340
|
sid: "en4cc0"
|
|
329
341
|
});
|
|
330
|
-
|
|
342
|
+
sample({
|
|
331
343
|
and: [{
|
|
332
|
-
clock:
|
|
333
|
-
target:
|
|
344
|
+
clock: changeEntered,
|
|
345
|
+
target: $entered
|
|
334
346
|
}],
|
|
335
347
|
or: {
|
|
336
348
|
sid: "-gssa85"
|
|
337
349
|
}
|
|
338
|
-
})
|
|
350
|
+
});
|
|
351
|
+
sample({
|
|
339
352
|
and: [{
|
|
340
353
|
source: {
|
|
341
|
-
activeRoutes:
|
|
342
|
-
query:
|
|
354
|
+
activeRoutes: $activeRoutes,
|
|
355
|
+
query: $query
|
|
343
356
|
},
|
|
344
|
-
filter: (
|
|
357
|
+
filter: (_ref3) => {
|
|
345
358
|
let {
|
|
346
|
-
activeRoutes
|
|
347
|
-
query
|
|
348
|
-
} =
|
|
349
|
-
return (!
|
|
359
|
+
activeRoutes,
|
|
360
|
+
query
|
|
361
|
+
} = _ref3;
|
|
362
|
+
return (!forRoutes || isForRouteActive(forRoutes, activeRoutes)) && isHaveValidParams(query, parameters2);
|
|
350
363
|
},
|
|
351
|
-
fn: (
|
|
364
|
+
fn: (_ref4) => {
|
|
352
365
|
let {
|
|
353
|
-
query
|
|
354
|
-
} =
|
|
355
|
-
return
|
|
366
|
+
query
|
|
367
|
+
} = _ref4;
|
|
368
|
+
return transformParams(query, parameters2);
|
|
356
369
|
},
|
|
357
|
-
target: [
|
|
370
|
+
target: [entered, changeEntered.prepend(() => true)]
|
|
358
371
|
}],
|
|
359
372
|
or: {
|
|
360
373
|
sid: "-gehmsr"
|
|
361
374
|
}
|
|
362
|
-
})
|
|
375
|
+
});
|
|
376
|
+
sample({
|
|
363
377
|
and: [{
|
|
364
378
|
source: {
|
|
365
|
-
activeRoutes:
|
|
366
|
-
query:
|
|
367
|
-
entered:
|
|
379
|
+
activeRoutes: $activeRoutes,
|
|
380
|
+
query: $query,
|
|
381
|
+
entered: $entered
|
|
368
382
|
},
|
|
369
|
-
filter: (
|
|
383
|
+
filter: (_ref5) => {
|
|
370
384
|
let {
|
|
371
|
-
activeRoutes
|
|
372
|
-
query
|
|
373
|
-
entered:
|
|
374
|
-
} =
|
|
375
|
-
return
|
|
385
|
+
activeRoutes,
|
|
386
|
+
query,
|
|
387
|
+
entered: entered2
|
|
388
|
+
} = _ref5;
|
|
389
|
+
return entered2 && !((!forRoutes || isForRouteActive(forRoutes, activeRoutes)) && isHaveValidParams(query, parameters2));
|
|
376
390
|
},
|
|
377
|
-
target: [
|
|
378
|
-
}), u.prepend(() => !1)]
|
|
391
|
+
target: [exited.prepend(() => void 0), changeEntered.prepend(() => false)]
|
|
379
392
|
}],
|
|
380
393
|
or: {
|
|
381
394
|
sid: "-fxzszx"
|
|
382
395
|
}
|
|
383
|
-
})
|
|
396
|
+
});
|
|
397
|
+
sample({
|
|
384
398
|
and: [{
|
|
385
|
-
clock:
|
|
386
|
-
source:
|
|
387
|
-
fn: (
|
|
388
|
-
if (
|
|
389
|
-
const
|
|
390
|
-
for (const
|
|
391
|
-
|
|
399
|
+
clock: exit,
|
|
400
|
+
source: $query,
|
|
401
|
+
fn: (query, payload) => {
|
|
402
|
+
if (payload && payload.ignoreParams) {
|
|
403
|
+
const copy = {};
|
|
404
|
+
for (const key of payload.ignoreParams) {
|
|
405
|
+
if (query[key]) {
|
|
406
|
+
copy[key] = query[key];
|
|
407
|
+
}
|
|
408
|
+
}
|
|
392
409
|
return {
|
|
393
|
-
query:
|
|
410
|
+
query: copy
|
|
394
411
|
};
|
|
395
412
|
}
|
|
396
413
|
return {
|
|
397
414
|
query: {}
|
|
398
415
|
};
|
|
399
416
|
},
|
|
400
|
-
target:
|
|
417
|
+
target: navigate
|
|
401
418
|
}],
|
|
402
419
|
or: {
|
|
403
420
|
sid: "-fer08a"
|
|
404
421
|
}
|
|
405
|
-
})
|
|
406
|
-
|
|
407
|
-
|
|
408
|
-
|
|
422
|
+
});
|
|
423
|
+
return {
|
|
424
|
+
entered,
|
|
425
|
+
exited,
|
|
426
|
+
exit
|
|
409
427
|
};
|
|
410
428
|
};
|
|
411
429
|
}
|
|
412
|
-
function
|
|
413
|
-
return (
|
|
414
|
-
const
|
|
415
|
-
let
|
|
416
|
-
function
|
|
417
|
-
|
|
430
|
+
function prepareParser(tokens) {
|
|
431
|
+
return (input) => {
|
|
432
|
+
const rawTokens = input.split("/").map((part) => part.trim()).filter((part) => part !== "");
|
|
433
|
+
let params = null;
|
|
434
|
+
function setKey(key, value) {
|
|
435
|
+
if (!params) {
|
|
436
|
+
params = {};
|
|
437
|
+
}
|
|
438
|
+
params[key] = value;
|
|
439
|
+
}
|
|
440
|
+
if (tokens.length === 0) {
|
|
441
|
+
return rawTokens.length === 0 ? {
|
|
442
|
+
path: input,
|
|
443
|
+
params: null
|
|
444
|
+
} : null;
|
|
418
445
|
}
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
} : null;
|
|
423
|
-
for (let s = 0; s < e.length; s++) {
|
|
424
|
-
const c = e[s];
|
|
425
|
-
switch (c.type) {
|
|
446
|
+
for (let i = 0; i < tokens.length; i++) {
|
|
447
|
+
const token = tokens[i];
|
|
448
|
+
switch (token.type) {
|
|
426
449
|
case "const": {
|
|
427
|
-
if (
|
|
450
|
+
if (token.name !== rawTokens.shift()) {
|
|
451
|
+
return null;
|
|
452
|
+
}
|
|
428
453
|
continue;
|
|
429
454
|
}
|
|
430
455
|
case "parameter": {
|
|
431
456
|
const {
|
|
432
|
-
arrayProps
|
|
433
|
-
genericProps
|
|
434
|
-
required
|
|
435
|
-
} =
|
|
436
|
-
if (
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
443
|
-
|
|
457
|
+
arrayProps,
|
|
458
|
+
genericProps,
|
|
459
|
+
required
|
|
460
|
+
} = token.payload;
|
|
461
|
+
if (arrayProps) {
|
|
462
|
+
const array = [];
|
|
463
|
+
let rawToken2;
|
|
464
|
+
while (true) {
|
|
465
|
+
rawToken2 = rawTokens.shift();
|
|
466
|
+
if (!rawToken2) {
|
|
467
|
+
break;
|
|
468
|
+
}
|
|
469
|
+
switch (genericProps == null ? void 0 : genericProps.type) {
|
|
444
470
|
case "number": {
|
|
445
|
-
if (isNaN(+
|
|
446
|
-
|
|
471
|
+
if (isNaN(+rawToken2)) {
|
|
472
|
+
return null;
|
|
473
|
+
}
|
|
474
|
+
array.push(+rawToken2);
|
|
447
475
|
break;
|
|
448
476
|
}
|
|
449
477
|
case "union": {
|
|
450
|
-
if (!
|
|
451
|
-
|
|
478
|
+
if (!genericProps.items.includes(rawToken2)) {
|
|
479
|
+
return null;
|
|
480
|
+
}
|
|
481
|
+
array.push(rawToken2);
|
|
452
482
|
break;
|
|
453
483
|
}
|
|
454
484
|
default: {
|
|
455
|
-
|
|
485
|
+
array.push(rawToken2);
|
|
456
486
|
break;
|
|
457
487
|
}
|
|
458
488
|
}
|
|
459
|
-
if (
|
|
489
|
+
if (array.length >= (arrayProps.max ?? Infinity)) {
|
|
490
|
+
break;
|
|
491
|
+
}
|
|
492
|
+
}
|
|
493
|
+
if (array.length < (arrayProps.min ?? 0)) {
|
|
494
|
+
return null;
|
|
460
495
|
}
|
|
461
|
-
if (
|
|
462
|
-
|
|
496
|
+
if (rawTokens.length > 0 && !tokens[i + 1]) {
|
|
497
|
+
return null;
|
|
498
|
+
}
|
|
499
|
+
setKey(token.name, array);
|
|
463
500
|
break;
|
|
464
501
|
}
|
|
465
|
-
const
|
|
466
|
-
if (
|
|
467
|
-
|
|
468
|
-
|
|
502
|
+
const rawToken = rawTokens.shift();
|
|
503
|
+
if (required && !rawToken) {
|
|
504
|
+
return null;
|
|
505
|
+
}
|
|
506
|
+
if (!rawToken) {
|
|
507
|
+
setKey(token.name, void 0);
|
|
469
508
|
continue;
|
|
470
509
|
}
|
|
471
|
-
switch (
|
|
510
|
+
switch (genericProps == null ? void 0 : genericProps.type) {
|
|
472
511
|
case "number": {
|
|
473
|
-
if (isNaN(+
|
|
474
|
-
|
|
512
|
+
if (isNaN(+rawToken)) {
|
|
513
|
+
return null;
|
|
514
|
+
}
|
|
515
|
+
setKey(token.name, +rawToken);
|
|
475
516
|
break;
|
|
476
517
|
}
|
|
477
518
|
case "union": {
|
|
478
|
-
if (!
|
|
479
|
-
|
|
519
|
+
if (!genericProps.items.includes(rawToken)) {
|
|
520
|
+
return null;
|
|
521
|
+
}
|
|
522
|
+
setKey(token.name, rawToken);
|
|
480
523
|
break;
|
|
481
524
|
}
|
|
482
525
|
default: {
|
|
483
|
-
|
|
526
|
+
setKey(token.name, rawToken);
|
|
484
527
|
break;
|
|
485
528
|
}
|
|
486
529
|
}
|
|
487
530
|
}
|
|
488
531
|
}
|
|
489
532
|
}
|
|
490
|
-
|
|
491
|
-
|
|
492
|
-
|
|
533
|
+
if (rawTokens.length > 0) {
|
|
534
|
+
return null;
|
|
535
|
+
}
|
|
536
|
+
return {
|
|
537
|
+
path: input,
|
|
538
|
+
params
|
|
493
539
|
};
|
|
494
540
|
};
|
|
495
541
|
}
|
|
496
|
-
function
|
|
497
|
-
if (!
|
|
498
|
-
|
|
499
|
-
|
|
500
|
-
|
|
501
|
-
|
|
502
|
-
|
|
542
|
+
function getTokenParameters(params) {
|
|
543
|
+
if (!params) {
|
|
544
|
+
return null;
|
|
545
|
+
}
|
|
546
|
+
const name = params[1];
|
|
547
|
+
let genericProps;
|
|
548
|
+
let arrayProps;
|
|
549
|
+
let modificator;
|
|
550
|
+
for (const parameter of params.slice(2)) {
|
|
551
|
+
if (!parameter) {
|
|
503
552
|
continue;
|
|
504
553
|
}
|
|
505
|
-
if (
|
|
506
|
-
|
|
554
|
+
if (parameter.includes("<")) {
|
|
555
|
+
genericProps = parameter.replaceAll(/\s/g, "").replace("<", "").replace(">", "");
|
|
556
|
+
continue;
|
|
557
|
+
}
|
|
558
|
+
if (parameter.includes("{")) {
|
|
559
|
+
arrayProps = parameter.replace("{", "").replace("}", "").split(",").map((item) => parseInt(item));
|
|
560
|
+
}
|
|
561
|
+
if (["*", "?", "+"].includes(parameter)) {
|
|
562
|
+
modificator = parameter;
|
|
507
563
|
continue;
|
|
508
564
|
}
|
|
509
565
|
}
|
|
510
566
|
return {
|
|
511
|
-
name
|
|
512
|
-
genericProps
|
|
513
|
-
arrayProps
|
|
514
|
-
modificator
|
|
567
|
+
name,
|
|
568
|
+
genericProps,
|
|
569
|
+
arrayProps,
|
|
570
|
+
modificator
|
|
515
571
|
};
|
|
516
572
|
}
|
|
517
|
-
function
|
|
518
|
-
return (
|
|
519
|
-
const
|
|
520
|
-
if (
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
573
|
+
function prepareBuilder(tokens) {
|
|
574
|
+
return (params) => {
|
|
575
|
+
const result = [];
|
|
576
|
+
if (tokens.length === 0) {
|
|
577
|
+
return "/";
|
|
578
|
+
}
|
|
579
|
+
for (const token of tokens) {
|
|
580
|
+
switch (token.type) {
|
|
581
|
+
case "const": {
|
|
582
|
+
result.push(token.name);
|
|
583
|
+
break;
|
|
584
|
+
}
|
|
585
|
+
case "parameter": {
|
|
586
|
+
if (!params[token.name]) {
|
|
587
|
+
continue;
|
|
588
|
+
}
|
|
589
|
+
if (Array.isArray(params[token.name])) {
|
|
590
|
+
for (const param of params[token.name]) {
|
|
591
|
+
result.push(param.toString());
|
|
592
|
+
}
|
|
593
|
+
} else {
|
|
594
|
+
result.push(params[token.name].toString());
|
|
595
|
+
}
|
|
596
|
+
break;
|
|
597
|
+
}
|
|
531
598
|
}
|
|
532
599
|
}
|
|
533
|
-
return
|
|
600
|
+
return `/${result.join("/")}`;
|
|
534
601
|
};
|
|
535
602
|
}
|
|
536
|
-
function
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
var r = arguments[t] != null ? arguments[t] : {};
|
|
549
|
-
t % 2 ? q(Object(r), !0).forEach(function(n) {
|
|
550
|
-
be(e, n, r[n]);
|
|
551
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : q(Object(r)).forEach(function(n) {
|
|
552
|
-
Object.defineProperty(e, n, Object.getOwnPropertyDescriptor(r, n));
|
|
553
|
-
});
|
|
554
|
-
}
|
|
555
|
-
return e;
|
|
556
|
-
}
|
|
557
|
-
function be(e, t, r) {
|
|
558
|
-
return (t = ge(t)) in e ? Object.defineProperty(e, t, {
|
|
559
|
-
value: r,
|
|
560
|
-
enumerable: !0,
|
|
561
|
-
configurable: !0,
|
|
562
|
-
writable: !0
|
|
563
|
-
}) : e[t] = r, e;
|
|
564
|
-
}
|
|
565
|
-
function ge(e) {
|
|
566
|
-
var t = he(e, "string");
|
|
567
|
-
return typeof t == "symbol" ? t : t + "";
|
|
568
|
-
}
|
|
569
|
-
function he(e, t) {
|
|
570
|
-
if (typeof e != "object" || !e) return e;
|
|
571
|
-
var r = e[Symbol.toPrimitive];
|
|
572
|
-
if (r !== void 0) {
|
|
573
|
-
var n = r.call(e, t);
|
|
574
|
-
if (typeof n != "object") return n;
|
|
575
|
-
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
576
|
-
}
|
|
577
|
-
return (t === "string" ? String : Number)(e);
|
|
578
|
-
}
|
|
579
|
-
function Oe(e) {
|
|
580
|
-
const t = [], r = /:(\w+)(<[\w|]+>)?({\d+\,\d+})?([+*?])?/, n = e.split("/").filter(Boolean);
|
|
581
|
-
for (let a = 0; a < n.length; a++) {
|
|
582
|
-
const o = n[a];
|
|
583
|
-
if (!o) continue;
|
|
584
|
-
const i = me(o.match(r));
|
|
585
|
-
if (!i) {
|
|
586
|
-
t.push({
|
|
603
|
+
function compile(path) {
|
|
604
|
+
const tokens = [];
|
|
605
|
+
const regexp = /:(\w+)(<[\s?\w|]+>)?({\d+\,\d+})?([+*?])?/;
|
|
606
|
+
const parsedTokens = path.split("/").filter(Boolean);
|
|
607
|
+
for (let i = 0; i < parsedTokens.length; i++) {
|
|
608
|
+
const parsedToken = parsedTokens[i];
|
|
609
|
+
if (!parsedToken) {
|
|
610
|
+
continue;
|
|
611
|
+
}
|
|
612
|
+
const parameters2 = getTokenParameters(parsedToken.match(regexp));
|
|
613
|
+
if (!parameters2) {
|
|
614
|
+
tokens.push({
|
|
587
615
|
type: "const",
|
|
588
|
-
name:
|
|
616
|
+
name: parsedToken,
|
|
589
617
|
payload: void 0
|
|
590
618
|
});
|
|
591
619
|
continue;
|
|
592
620
|
}
|
|
593
621
|
const {
|
|
594
|
-
arrayProps
|
|
595
|
-
genericProps
|
|
596
|
-
modificator
|
|
597
|
-
name
|
|
598
|
-
} =
|
|
599
|
-
if (!
|
|
600
|
-
|
|
622
|
+
arrayProps,
|
|
623
|
+
genericProps,
|
|
624
|
+
modificator,
|
|
625
|
+
name
|
|
626
|
+
} = parameters2;
|
|
627
|
+
if (!name) {
|
|
628
|
+
throw new Error(`Invalid path: "${path}". Name for argument must be provided`);
|
|
629
|
+
}
|
|
630
|
+
const token = {
|
|
601
631
|
type: "parameter",
|
|
602
|
-
name
|
|
632
|
+
name,
|
|
603
633
|
payload: {
|
|
604
|
-
required:
|
|
634
|
+
required: true
|
|
605
635
|
}
|
|
606
636
|
};
|
|
607
|
-
|
|
608
|
-
|
|
609
|
-
|
|
610
|
-
|
|
611
|
-
|
|
612
|
-
|
|
637
|
+
if (genericProps && genericProps === "number") {
|
|
638
|
+
token.payload.genericProps = {
|
|
639
|
+
type: "number"
|
|
640
|
+
};
|
|
641
|
+
}
|
|
642
|
+
if (genericProps && genericProps.includes("|")) {
|
|
643
|
+
token.payload.genericProps = {
|
|
644
|
+
type: "union",
|
|
645
|
+
items: genericProps.split("|")
|
|
646
|
+
};
|
|
647
|
+
}
|
|
648
|
+
switch (modificator) {
|
|
613
649
|
case "*": {
|
|
614
|
-
|
|
650
|
+
token.payload.arrayProps = {};
|
|
615
651
|
break;
|
|
616
652
|
}
|
|
617
653
|
case "+": {
|
|
618
|
-
|
|
654
|
+
token.payload.arrayProps = {
|
|
619
655
|
min: 1
|
|
620
656
|
};
|
|
621
657
|
break;
|
|
622
658
|
}
|
|
623
659
|
case "?": {
|
|
624
|
-
|
|
660
|
+
token.payload.required = false;
|
|
625
661
|
break;
|
|
626
662
|
}
|
|
627
663
|
}
|
|
628
|
-
|
|
629
|
-
|
|
630
|
-
|
|
631
|
-
|
|
664
|
+
if (arrayProps) {
|
|
665
|
+
token.payload.arrayProps = {
|
|
666
|
+
...token.payload.arrayProps,
|
|
667
|
+
min: arrayProps[0],
|
|
668
|
+
max: arrayProps[1]
|
|
669
|
+
};
|
|
670
|
+
}
|
|
671
|
+
tokens.push(token);
|
|
632
672
|
}
|
|
633
673
|
return {
|
|
634
674
|
/**
|
|
635
675
|
* @param input Input path
|
|
636
676
|
* @returns `{ path: string; params: Params }` | `null`
|
|
637
677
|
*/
|
|
638
|
-
parse:
|
|
678
|
+
parse: prepareParser(tokens),
|
|
639
679
|
/**
|
|
640
680
|
* @param params Route parameters
|
|
641
681
|
* @returns string
|
|
642
682
|
*/
|
|
643
|
-
build:
|
|
644
|
-
};
|
|
645
|
-
}
|
|
646
|
-
const M = "%[a-f0-9]{2}", B = new RegExp("(" + M + ")|([^%]+?)", "gi"), _ = new RegExp("(" + M + ")+", "gi");
|
|
647
|
-
function A(e, t) {
|
|
648
|
-
try {
|
|
649
|
-
return [decodeURIComponent(e.join(""))];
|
|
650
|
-
} catch {
|
|
651
|
-
}
|
|
652
|
-
if (e.length === 1)
|
|
653
|
-
return e;
|
|
654
|
-
t = t || 1;
|
|
655
|
-
const r = e.slice(0, t), n = e.slice(t);
|
|
656
|
-
return Array.prototype.concat.call([], A(r), A(n));
|
|
657
|
-
}
|
|
658
|
-
function we(e) {
|
|
659
|
-
try {
|
|
660
|
-
return decodeURIComponent(e);
|
|
661
|
-
} catch {
|
|
662
|
-
let t = e.match(B) || [];
|
|
663
|
-
for (let r = 1; r < t.length; r++)
|
|
664
|
-
e = A(t, r).join(""), t = e.match(B) || [];
|
|
665
|
-
return e;
|
|
666
|
-
}
|
|
667
|
-
}
|
|
668
|
-
function Fe(e) {
|
|
669
|
-
const t = {
|
|
670
|
-
"%FE%FF": "��",
|
|
671
|
-
"%FF%FE": "��"
|
|
672
|
-
};
|
|
673
|
-
let r = _.exec(e);
|
|
674
|
-
for (; r; ) {
|
|
675
|
-
try {
|
|
676
|
-
t[r[0]] = decodeURIComponent(r[0]);
|
|
677
|
-
} catch {
|
|
678
|
-
const a = we(r[0]);
|
|
679
|
-
a !== r[0] && (t[r[0]] = a);
|
|
680
|
-
}
|
|
681
|
-
r = _.exec(e);
|
|
682
|
-
}
|
|
683
|
-
t["%C2"] = "�";
|
|
684
|
-
const n = Object.keys(t);
|
|
685
|
-
for (const a of n)
|
|
686
|
-
e = e.replace(new RegExp(a, "g"), t[a]);
|
|
687
|
-
return e;
|
|
688
|
-
}
|
|
689
|
-
function je(e) {
|
|
690
|
-
if (typeof e != "string")
|
|
691
|
-
throw new TypeError("Expected `encodedURI` to be of type `string`, got `" + typeof e + "`");
|
|
692
|
-
try {
|
|
693
|
-
return decodeURIComponent(e);
|
|
694
|
-
} catch {
|
|
695
|
-
return Fe(e);
|
|
696
|
-
}
|
|
697
|
-
}
|
|
698
|
-
function ke(e, t) {
|
|
699
|
-
const r = {};
|
|
700
|
-
if (Array.isArray(t))
|
|
701
|
-
for (const n of t) {
|
|
702
|
-
const a = Object.getOwnPropertyDescriptor(e, n);
|
|
703
|
-
a != null && a.enumerable && Object.defineProperty(r, n, a);
|
|
704
|
-
}
|
|
705
|
-
else
|
|
706
|
-
for (const n of Reflect.ownKeys(e)) {
|
|
707
|
-
const a = Object.getOwnPropertyDescriptor(e, n);
|
|
708
|
-
if (a.enumerable) {
|
|
709
|
-
const o = e[n];
|
|
710
|
-
t(n, o, e) && Object.defineProperty(r, n, a);
|
|
711
|
-
}
|
|
712
|
-
}
|
|
713
|
-
return r;
|
|
714
|
-
}
|
|
715
|
-
function Q(e, t) {
|
|
716
|
-
if (!(typeof e == "string" && typeof t == "string"))
|
|
717
|
-
throw new TypeError("Expected the arguments to be of type `string`");
|
|
718
|
-
if (e === "" || t === "")
|
|
719
|
-
return [];
|
|
720
|
-
const r = e.indexOf(t);
|
|
721
|
-
return r === -1 ? [] : [e.slice(0, r), e.slice(r + t.length)];
|
|
722
|
-
}
|
|
723
|
-
const Se = (e) => e == null, Pe = (e) => encodeURIComponent(e).replaceAll(/[!'()*]/g, (t) => `%${t.charCodeAt(0).toString(16).toUpperCase()}`), E = Symbol("encodeFragmentIdentifier");
|
|
724
|
-
function ve(e) {
|
|
725
|
-
switch (e.arrayFormat) {
|
|
726
|
-
case "index":
|
|
727
|
-
return (t) => (r, n) => {
|
|
728
|
-
const a = r.length;
|
|
729
|
-
return n === void 0 || e.skipNull && n === null || e.skipEmptyString && n === "" ? r : n === null ? [...r, [O(t, e), "[", a, "]"].join("")] : [...r, [O(t, e), "[", O(a, e), "]=", O(n, e)].join("")];
|
|
730
|
-
};
|
|
731
|
-
case "bracket":
|
|
732
|
-
return (t) => (r, n) => n === void 0 || e.skipNull && n === null || e.skipEmptyString && n === "" ? r : n === null ? [...r, [O(t, e), "[]"].join("")] : [...r, [O(t, e), "[]=", O(n, e)].join("")];
|
|
733
|
-
case "colon-list-separator":
|
|
734
|
-
return (t) => (r, n) => n === void 0 || e.skipNull && n === null || e.skipEmptyString && n === "" ? r : n === null ? [...r, [O(t, e), ":list="].join("")] : [...r, [O(t, e), ":list=", O(n, e)].join("")];
|
|
735
|
-
case "comma":
|
|
736
|
-
case "separator":
|
|
737
|
-
case "bracket-separator": {
|
|
738
|
-
const t = e.arrayFormat === "bracket-separator" ? "[]=" : "=";
|
|
739
|
-
return (r) => (n, a) => a === void 0 || e.skipNull && a === null || e.skipEmptyString && a === "" ? n : (a = a === null ? "" : a, n.length === 0 ? [[O(r, e), t, O(a, e)].join("")] : [[n, O(a, e)].join(e.arrayFormatSeparator)]);
|
|
740
|
-
}
|
|
741
|
-
default:
|
|
742
|
-
return (t) => (r, n) => n === void 0 || e.skipNull && n === null || e.skipEmptyString && n === "" ? r : n === null ? [...r, O(t, e)] : [...r, [O(t, e), "=", O(n, e)].join("")];
|
|
743
|
-
}
|
|
744
|
-
}
|
|
745
|
-
function xe(e) {
|
|
746
|
-
let t;
|
|
747
|
-
switch (e.arrayFormat) {
|
|
748
|
-
case "index":
|
|
749
|
-
return (r, n, a) => {
|
|
750
|
-
if (t = /\[(\d*)]$/.exec(r), r = r.replace(/\[\d*]$/, ""), !t) {
|
|
751
|
-
a[r] = n;
|
|
752
|
-
return;
|
|
753
|
-
}
|
|
754
|
-
a[r] === void 0 && (a[r] = {}), a[r][t[1]] = n;
|
|
755
|
-
};
|
|
756
|
-
case "bracket":
|
|
757
|
-
return (r, n, a) => {
|
|
758
|
-
if (t = /(\[])$/.exec(r), r = r.replace(/\[]$/, ""), !t) {
|
|
759
|
-
a[r] = n;
|
|
760
|
-
return;
|
|
761
|
-
}
|
|
762
|
-
if (a[r] === void 0) {
|
|
763
|
-
a[r] = [n];
|
|
764
|
-
return;
|
|
765
|
-
}
|
|
766
|
-
a[r] = [...a[r], n];
|
|
767
|
-
};
|
|
768
|
-
case "colon-list-separator":
|
|
769
|
-
return (r, n, a) => {
|
|
770
|
-
if (t = /(:list)$/.exec(r), r = r.replace(/:list$/, ""), !t) {
|
|
771
|
-
a[r] = n;
|
|
772
|
-
return;
|
|
773
|
-
}
|
|
774
|
-
if (a[r] === void 0) {
|
|
775
|
-
a[r] = [n];
|
|
776
|
-
return;
|
|
777
|
-
}
|
|
778
|
-
a[r] = [...a[r], n];
|
|
779
|
-
};
|
|
780
|
-
case "comma":
|
|
781
|
-
case "separator":
|
|
782
|
-
return (r, n, a) => {
|
|
783
|
-
const o = typeof n == "string" && n.includes(e.arrayFormatSeparator), i = typeof n == "string" && !o && F(n, e).includes(e.arrayFormatSeparator);
|
|
784
|
-
n = i ? F(n, e) : n;
|
|
785
|
-
const s = o || i ? n.split(e.arrayFormatSeparator).map((c) => F(c, e)) : n === null ? n : F(n, e);
|
|
786
|
-
a[r] = s;
|
|
787
|
-
};
|
|
788
|
-
case "bracket-separator":
|
|
789
|
-
return (r, n, a) => {
|
|
790
|
-
const o = /(\[])$/.test(r);
|
|
791
|
-
if (r = r.replace(/\[]$/, ""), !o) {
|
|
792
|
-
a[r] = n && F(n, e);
|
|
793
|
-
return;
|
|
794
|
-
}
|
|
795
|
-
const i = n === null ? [] : F(n, e).split(e.arrayFormatSeparator);
|
|
796
|
-
if (a[r] === void 0) {
|
|
797
|
-
a[r] = i;
|
|
798
|
-
return;
|
|
799
|
-
}
|
|
800
|
-
a[r] = [...a[r], ...i];
|
|
801
|
-
};
|
|
802
|
-
default:
|
|
803
|
-
return (r, n, a) => {
|
|
804
|
-
if (a[r] === void 0) {
|
|
805
|
-
a[r] = n;
|
|
806
|
-
return;
|
|
807
|
-
}
|
|
808
|
-
a[r] = [...[a[r]].flat(), n];
|
|
809
|
-
};
|
|
810
|
-
}
|
|
811
|
-
}
|
|
812
|
-
function J(e) {
|
|
813
|
-
if (typeof e != "string" || e.length !== 1)
|
|
814
|
-
throw new TypeError("arrayFormatSeparator must be single character string");
|
|
815
|
-
}
|
|
816
|
-
function O(e, t) {
|
|
817
|
-
return t.encode ? t.strict ? Pe(e) : encodeURIComponent(e) : e;
|
|
818
|
-
}
|
|
819
|
-
function F(e, t) {
|
|
820
|
-
return t.decode ? je(e) : e;
|
|
821
|
-
}
|
|
822
|
-
function G(e) {
|
|
823
|
-
return Array.isArray(e) ? e.sort() : typeof e == "object" ? G(Object.keys(e)).sort((t, r) => Number(t) - Number(r)).map((t) => e[t]) : e;
|
|
824
|
-
}
|
|
825
|
-
function W(e) {
|
|
826
|
-
const t = e.indexOf("#");
|
|
827
|
-
return t !== -1 && (e = e.slice(0, t)), e;
|
|
828
|
-
}
|
|
829
|
-
function $e(e) {
|
|
830
|
-
let t = "";
|
|
831
|
-
const r = e.indexOf("#");
|
|
832
|
-
return r !== -1 && (t = e.slice(r)), t;
|
|
833
|
-
}
|
|
834
|
-
function T(e, t, r) {
|
|
835
|
-
return r === "string" && typeof e == "string" ? e : typeof r == "function" && typeof e == "string" ? r(e) : t.parseBooleans && e !== null && (e.toLowerCase() === "true" || e.toLowerCase() === "false") ? e.toLowerCase() === "true" : r === "number" && !Number.isNaN(Number(e)) && typeof e == "string" && e.trim() !== "" || t.parseNumbers && !Number.isNaN(Number(e)) && typeof e == "string" && e.trim() !== "" ? Number(e) : e;
|
|
836
|
-
}
|
|
837
|
-
function R(e) {
|
|
838
|
-
e = W(e);
|
|
839
|
-
const t = e.indexOf("?");
|
|
840
|
-
return t === -1 ? "" : e.slice(t + 1);
|
|
841
|
-
}
|
|
842
|
-
function I(e, t) {
|
|
843
|
-
t = {
|
|
844
|
-
decode: !0,
|
|
845
|
-
sort: !0,
|
|
846
|
-
arrayFormat: "none",
|
|
847
|
-
arrayFormatSeparator: ",",
|
|
848
|
-
parseNumbers: !1,
|
|
849
|
-
parseBooleans: !1,
|
|
850
|
-
types: /* @__PURE__ */ Object.create(null),
|
|
851
|
-
...t
|
|
852
|
-
}, J(t.arrayFormatSeparator);
|
|
853
|
-
const r = xe(t), n = /* @__PURE__ */ Object.create(null);
|
|
854
|
-
if (typeof e != "string" || (e = e.trim().replace(/^[?#&]/, ""), !e))
|
|
855
|
-
return n;
|
|
856
|
-
for (const a of e.split("&")) {
|
|
857
|
-
if (a === "")
|
|
858
|
-
continue;
|
|
859
|
-
const o = t.decode ? a.replaceAll("+", " ") : a;
|
|
860
|
-
let [i, s] = Q(o, "=");
|
|
861
|
-
i === void 0 && (i = o), s = s === void 0 ? null : ["comma", "separator", "bracket-separator"].includes(t.arrayFormat) ? s : F(s, t), r(F(i, t), s, n);
|
|
862
|
-
}
|
|
863
|
-
for (const [a, o] of Object.entries(n))
|
|
864
|
-
if (typeof o == "object" && o !== null && t.types[a] !== "string")
|
|
865
|
-
for (const [i, s] of Object.entries(o)) {
|
|
866
|
-
const c = t.types[a] ? t.types[a].replace("[]", "") : void 0;
|
|
867
|
-
o[i] = T(s, t, c);
|
|
868
|
-
}
|
|
869
|
-
else typeof o == "object" && o !== null && t.types[a] === "string" ? n[a] = Object.values(o).join(t.arrayFormatSeparator) : n[a] = T(o, t, t.types[a]);
|
|
870
|
-
return t.sort === !1 ? n : (t.sort === !0 ? Object.keys(n).sort() : Object.keys(n).sort(t.sort)).reduce((a, o) => {
|
|
871
|
-
const i = n[o];
|
|
872
|
-
return a[o] = i && typeof i == "object" && !Array.isArray(i) ? G(i) : i, a;
|
|
873
|
-
}, /* @__PURE__ */ Object.create(null));
|
|
874
|
-
}
|
|
875
|
-
function X(e, t) {
|
|
876
|
-
if (!e)
|
|
877
|
-
return "";
|
|
878
|
-
t = {
|
|
879
|
-
encode: !0,
|
|
880
|
-
strict: !0,
|
|
881
|
-
arrayFormat: "none",
|
|
882
|
-
arrayFormatSeparator: ",",
|
|
883
|
-
...t
|
|
884
|
-
}, J(t.arrayFormatSeparator);
|
|
885
|
-
const r = (i) => t.skipNull && Se(e[i]) || t.skipEmptyString && e[i] === "", n = ve(t), a = {};
|
|
886
|
-
for (const [i, s] of Object.entries(e))
|
|
887
|
-
r(i) || (a[i] = s);
|
|
888
|
-
const o = Object.keys(a);
|
|
889
|
-
return t.sort !== !1 && o.sort(t.sort), o.map((i) => {
|
|
890
|
-
const s = e[i];
|
|
891
|
-
return s === void 0 ? "" : s === null ? O(i, t) : Array.isArray(s) ? s.length === 0 && t.arrayFormat === "bracket-separator" ? O(i, t) + "[]" : s.reduce(n(i), []).join("&") : O(i, t) + "=" + O(s, t);
|
|
892
|
-
}).filter((i) => i.length > 0).join("&");
|
|
893
|
-
}
|
|
894
|
-
function Y(e, t) {
|
|
895
|
-
var a;
|
|
896
|
-
t = {
|
|
897
|
-
decode: !0,
|
|
898
|
-
...t
|
|
683
|
+
build: prepareBuilder(tokens)
|
|
899
684
|
};
|
|
900
|
-
let [r, n] = Q(e, "#");
|
|
901
|
-
return r === void 0 && (r = e), {
|
|
902
|
-
url: ((a = r == null ? void 0 : r.split("?")) == null ? void 0 : a[0]) ?? "",
|
|
903
|
-
query: I(R(e), t),
|
|
904
|
-
...t && t.parseFragmentIdentifier && n ? {
|
|
905
|
-
fragmentIdentifier: F(n, t)
|
|
906
|
-
} : {}
|
|
907
|
-
};
|
|
908
|
-
}
|
|
909
|
-
function Z(e, t) {
|
|
910
|
-
t = {
|
|
911
|
-
encode: !0,
|
|
912
|
-
strict: !0,
|
|
913
|
-
[E]: !0,
|
|
914
|
-
...t
|
|
915
|
-
};
|
|
916
|
-
const r = W(e.url).split("?")[0] || "", n = R(e.url), a = {
|
|
917
|
-
...I(n, {
|
|
918
|
-
sort: !1
|
|
919
|
-
}),
|
|
920
|
-
...e.query
|
|
921
|
-
};
|
|
922
|
-
let o = X(a, t);
|
|
923
|
-
o && (o = `?${o}`);
|
|
924
|
-
let i = $e(e.url);
|
|
925
|
-
if (typeof e.fragmentIdentifier == "string") {
|
|
926
|
-
const s = new URL(r);
|
|
927
|
-
s.hash = e.fragmentIdentifier, i = t[E] ? s.hash : `#${e.fragmentIdentifier}`;
|
|
928
|
-
}
|
|
929
|
-
return `${r}${o}${i}`;
|
|
930
|
-
}
|
|
931
|
-
function ee(e, t, r) {
|
|
932
|
-
r = {
|
|
933
|
-
parseFragmentIdentifier: !0,
|
|
934
|
-
[E]: !1,
|
|
935
|
-
...r
|
|
936
|
-
};
|
|
937
|
-
const {
|
|
938
|
-
url: n,
|
|
939
|
-
query: a,
|
|
940
|
-
fragmentIdentifier: o
|
|
941
|
-
} = Y(e, r);
|
|
942
|
-
return Z({
|
|
943
|
-
url: n,
|
|
944
|
-
query: ke(a, t),
|
|
945
|
-
fragmentIdentifier: o
|
|
946
|
-
}, r);
|
|
947
|
-
}
|
|
948
|
-
function Ne(e, t, r) {
|
|
949
|
-
const n = Array.isArray(t) ? (a) => !t.includes(a) : (a, o) => !t(a, o);
|
|
950
|
-
return ee(e, n, r);
|
|
951
|
-
}
|
|
952
|
-
const x = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
|
|
953
|
-
__proto__: null,
|
|
954
|
-
exclude: Ne,
|
|
955
|
-
extract: R,
|
|
956
|
-
parse: I,
|
|
957
|
-
parseUrl: Y,
|
|
958
|
-
pick: ee,
|
|
959
|
-
stringify: X,
|
|
960
|
-
stringifyUrl: Z
|
|
961
|
-
}, Symbol.toStringTag, { value: "Module" }));
|
|
962
|
-
function H(e, t) {
|
|
963
|
-
var r = Object.keys(e);
|
|
964
|
-
if (Object.getOwnPropertySymbols) {
|
|
965
|
-
var n = Object.getOwnPropertySymbols(e);
|
|
966
|
-
t && (n = n.filter(function(a) {
|
|
967
|
-
return Object.getOwnPropertyDescriptor(e, a).enumerable;
|
|
968
|
-
})), r.push.apply(r, n);
|
|
969
|
-
}
|
|
970
|
-
return r;
|
|
971
685
|
}
|
|
972
|
-
function
|
|
973
|
-
|
|
974
|
-
var r = arguments[t] != null ? arguments[t] : {};
|
|
975
|
-
t % 2 ? H(Object(r), !0).forEach(function(n) {
|
|
976
|
-
Ae(e, n, r[n]);
|
|
977
|
-
}) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(r)) : H(Object(r)).forEach(function(n) {
|
|
978
|
-
Object.defineProperty(e, n, Object.getOwnPropertyDescriptor(r, n));
|
|
979
|
-
});
|
|
980
|
-
}
|
|
981
|
-
return e;
|
|
982
|
-
}
|
|
983
|
-
function Ae(e, t, r) {
|
|
984
|
-
return (t = Ee(t)) in e ? Object.defineProperty(e, t, { value: r, enumerable: !0, configurable: !0, writable: !0 }) : e[t] = r, e;
|
|
985
|
-
}
|
|
986
|
-
function Ee(e) {
|
|
987
|
-
var t = Re(e, "string");
|
|
988
|
-
return typeof t == "symbol" ? t : t + "";
|
|
989
|
-
}
|
|
990
|
-
function Re(e, t) {
|
|
991
|
-
if (typeof e != "object" || !e) return e;
|
|
992
|
-
var r = e[Symbol.toPrimitive];
|
|
993
|
-
if (r !== void 0) {
|
|
994
|
-
var n = r.call(e, t);
|
|
995
|
-
if (typeof n != "object") return n;
|
|
996
|
-
throw new TypeError("@@toPrimitive must return a primitive value.");
|
|
997
|
-
}
|
|
998
|
-
return (t === "string" ? String : Number)(e);
|
|
999
|
-
}
|
|
1000
|
-
function Ie() {
|
|
1001
|
-
const e = k(null, {
|
|
686
|
+
function createRouterControls() {
|
|
687
|
+
const $history = createStore(null, {
|
|
1002
688
|
and: {
|
|
1003
689
|
serialize: "ignore"
|
|
1004
690
|
},
|
|
1005
691
|
name: "$history",
|
|
1006
692
|
sid: "-ld7lzl"
|
|
1007
|
-
})
|
|
693
|
+
});
|
|
694
|
+
const $locationState = createStore({
|
|
1008
695
|
query: {},
|
|
1009
696
|
path: null
|
|
1010
697
|
}, {
|
|
1011
698
|
name: "$locationState",
|
|
1012
699
|
sid: "-4u3w85"
|
|
1013
|
-
})
|
|
700
|
+
});
|
|
701
|
+
const $query = $locationState.map((state) => state.query);
|
|
702
|
+
const $path = $locationState.map((state) => state.path);
|
|
703
|
+
const setHistory = createEvent({
|
|
1014
704
|
name: "setHistory",
|
|
1015
705
|
sid: "-ormmkk"
|
|
1016
|
-
})
|
|
706
|
+
});
|
|
707
|
+
const navigate = createEvent({
|
|
1017
708
|
name: "navigate",
|
|
1018
709
|
sid: "tawqep"
|
|
1019
|
-
})
|
|
710
|
+
});
|
|
711
|
+
const back = createEvent({
|
|
1020
712
|
name: "back",
|
|
1021
713
|
sid: "bxy8rt"
|
|
1022
|
-
})
|
|
714
|
+
});
|
|
715
|
+
const forward = createEvent({
|
|
1023
716
|
name: "forward",
|
|
1024
717
|
sid: "-bpmzb1"
|
|
1025
|
-
})
|
|
718
|
+
});
|
|
719
|
+
const locationUpdated = createEvent({
|
|
1026
720
|
name: "locationUpdated",
|
|
1027
721
|
sid: "lkzldx"
|
|
1028
|
-
})
|
|
722
|
+
});
|
|
723
|
+
const navigateFx = attach({
|
|
1029
724
|
and: {
|
|
1030
|
-
source:
|
|
1031
|
-
effect: (
|
|
725
|
+
source: $history,
|
|
726
|
+
effect: (history, _ref) => {
|
|
1032
727
|
let {
|
|
1033
|
-
path
|
|
1034
|
-
query
|
|
1035
|
-
replace
|
|
1036
|
-
} =
|
|
1037
|
-
if (!
|
|
728
|
+
path,
|
|
729
|
+
query,
|
|
730
|
+
replace
|
|
731
|
+
} = _ref;
|
|
732
|
+
if (!history) {
|
|
1038
733
|
throw new Error("history not found");
|
|
1039
|
-
|
|
1040
|
-
|
|
1041
|
-
|
|
734
|
+
}
|
|
735
|
+
const payload = {
|
|
736
|
+
pathname: path,
|
|
737
|
+
search: `?${queryString.stringify(query)}`
|
|
1042
738
|
};
|
|
1043
|
-
|
|
739
|
+
if (replace) {
|
|
740
|
+
history.replace(payload);
|
|
741
|
+
} else {
|
|
742
|
+
history.push(payload);
|
|
743
|
+
}
|
|
1044
744
|
}
|
|
1045
745
|
},
|
|
1046
746
|
or: {
|
|
1047
747
|
name: "navigateFx",
|
|
1048
748
|
sid: "-ov1xn7"
|
|
1049
749
|
}
|
|
1050
|
-
})
|
|
1051
|
-
|
|
1052
|
-
|
|
1053
|
-
|
|
1054
|
-
|
|
1055
|
-
|
|
750
|
+
});
|
|
751
|
+
const subscribeHistoryFx = createEffect((history) => {
|
|
752
|
+
const historyLocationUpdated = scopeBind(locationUpdated);
|
|
753
|
+
historyLocationUpdated({
|
|
754
|
+
pathname: history.location.pathname,
|
|
755
|
+
query: {
|
|
756
|
+
...queryString.parse(history.location.search)
|
|
757
|
+
}
|
|
758
|
+
});
|
|
759
|
+
if (!history) {
|
|
1056
760
|
throw new Error();
|
|
1057
|
-
|
|
761
|
+
}
|
|
762
|
+
history.listen((_ref2) => {
|
|
1058
763
|
let {
|
|
1059
|
-
location
|
|
1060
|
-
} =
|
|
1061
|
-
|
|
1062
|
-
pathname:
|
|
1063
|
-
query:
|
|
764
|
+
location
|
|
765
|
+
} = _ref2;
|
|
766
|
+
historyLocationUpdated({
|
|
767
|
+
pathname: location.pathname,
|
|
768
|
+
query: {
|
|
769
|
+
...queryString.parse(location.search)
|
|
770
|
+
}
|
|
1064
771
|
});
|
|
1065
772
|
});
|
|
1066
773
|
}, {
|
|
1067
774
|
name: "subscribeHistoryFx",
|
|
1068
775
|
sid: "-m60vds"
|
|
1069
776
|
});
|
|
1070
|
-
|
|
777
|
+
sample({
|
|
1071
778
|
and: [{
|
|
1072
|
-
clock:
|
|
1073
|
-
target:
|
|
779
|
+
clock: setHistory,
|
|
780
|
+
target: $history
|
|
1074
781
|
}],
|
|
1075
782
|
or: {
|
|
1076
783
|
sid: "ii4q"
|
|
1077
784
|
}
|
|
1078
|
-
})
|
|
785
|
+
});
|
|
786
|
+
sample({
|
|
1079
787
|
and: [{
|
|
1080
|
-
clock:
|
|
788
|
+
clock: $history,
|
|
1081
789
|
filter: Boolean,
|
|
1082
|
-
target:
|
|
790
|
+
target: subscribeHistoryFx
|
|
1083
791
|
}],
|
|
1084
792
|
or: {
|
|
1085
793
|
sid: "39h3j"
|
|
1086
794
|
}
|
|
1087
|
-
})
|
|
795
|
+
});
|
|
796
|
+
sample({
|
|
1088
797
|
and: [{
|
|
1089
|
-
clock:
|
|
1090
|
-
fn: (
|
|
1091
|
-
path:
|
|
1092
|
-
query:
|
|
798
|
+
clock: locationUpdated,
|
|
799
|
+
fn: (location) => ({
|
|
800
|
+
path: location.pathname,
|
|
801
|
+
query: location.query
|
|
1093
802
|
}),
|
|
1094
|
-
target:
|
|
803
|
+
target: $locationState
|
|
1095
804
|
}],
|
|
1096
805
|
or: {
|
|
1097
806
|
sid: "i3x4a"
|
|
1098
807
|
}
|
|
1099
|
-
})
|
|
808
|
+
});
|
|
809
|
+
sample({
|
|
1100
810
|
and: [{
|
|
1101
|
-
clock:
|
|
1102
|
-
source:
|
|
1103
|
-
fn: (
|
|
1104
|
-
path
|
|
1105
|
-
|
|
1106
|
-
|
|
811
|
+
clock: navigate,
|
|
812
|
+
source: $path,
|
|
813
|
+
fn: (path, payload) => ({
|
|
814
|
+
path,
|
|
815
|
+
...payload
|
|
816
|
+
}),
|
|
817
|
+
target: navigateFx
|
|
1107
818
|
}],
|
|
1108
819
|
or: {
|
|
1109
820
|
sid: "ylqx4"
|
|
1110
821
|
}
|
|
1111
|
-
})
|
|
1112
|
-
|
|
1113
|
-
$
|
|
1114
|
-
$
|
|
1115
|
-
$
|
|
1116
|
-
|
|
1117
|
-
|
|
1118
|
-
|
|
1119
|
-
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
|
|
1123
|
-
|
|
822
|
+
});
|
|
823
|
+
return {
|
|
824
|
+
$history,
|
|
825
|
+
$locationState,
|
|
826
|
+
$query,
|
|
827
|
+
$path,
|
|
828
|
+
setHistory,
|
|
829
|
+
navigate,
|
|
830
|
+
back,
|
|
831
|
+
forward,
|
|
832
|
+
locationUpdated,
|
|
833
|
+
trackQuery: trackQueryControlsFactory({
|
|
834
|
+
$query,
|
|
835
|
+
navigate
|
|
1124
836
|
})
|
|
1125
837
|
};
|
|
1126
838
|
}
|
|
1127
|
-
function
|
|
839
|
+
function createRouter(config) {
|
|
1128
840
|
const {
|
|
1129
|
-
base
|
|
1130
|
-
routes
|
|
1131
|
-
} =
|
|
1132
|
-
|
|
1133
|
-
$
|
|
1134
|
-
|
|
1135
|
-
|
|
1136
|
-
|
|
1137
|
-
|
|
1138
|
-
|
|
1139
|
-
|
|
1140
|
-
|
|
1141
|
-
|
|
1142
|
-
|
|
1143
|
-
|
|
1144
|
-
|
|
1145
|
-
|
|
1146
|
-
|
|
1147
|
-
|
|
841
|
+
base = "/",
|
|
842
|
+
routes
|
|
843
|
+
} = config;
|
|
844
|
+
const {
|
|
845
|
+
$path,
|
|
846
|
+
$query,
|
|
847
|
+
back,
|
|
848
|
+
forward,
|
|
849
|
+
navigate,
|
|
850
|
+
setHistory,
|
|
851
|
+
locationUpdated
|
|
852
|
+
} = createRouterControls();
|
|
853
|
+
const mappedRoutes = routes.map((route) => {
|
|
854
|
+
let internalRoute = route;
|
|
855
|
+
const path = [];
|
|
856
|
+
path.unshift(internalRoute.path);
|
|
857
|
+
while (internalRoute.parent) {
|
|
858
|
+
internalRoute = internalRoute.parent;
|
|
859
|
+
if (internalRoute.path !== "/") {
|
|
860
|
+
path.unshift(internalRoute.path);
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
const joinedPath = base === "/" ? path.join("") : [base, ...path].join("");
|
|
864
|
+
const {
|
|
865
|
+
build,
|
|
866
|
+
parse
|
|
867
|
+
} = compile(joinedPath);
|
|
1148
868
|
return {
|
|
1149
|
-
route
|
|
1150
|
-
path:
|
|
1151
|
-
build
|
|
1152
|
-
parse
|
|
869
|
+
route,
|
|
870
|
+
path: joinedPath,
|
|
871
|
+
build,
|
|
872
|
+
parse
|
|
1153
873
|
};
|
|
1154
|
-
})
|
|
1155
|
-
|
|
1156
|
-
|
|
1157
|
-
|
|
874
|
+
});
|
|
875
|
+
const $activeRoutes = $path.map((path) => {
|
|
876
|
+
const result = [];
|
|
877
|
+
if (!path) {
|
|
878
|
+
return result;
|
|
879
|
+
}
|
|
1158
880
|
for (const {
|
|
1159
|
-
route
|
|
1160
|
-
parse
|
|
1161
|
-
} of
|
|
1162
|
-
|
|
1163
|
-
|
|
1164
|
-
|
|
881
|
+
route,
|
|
882
|
+
parse
|
|
883
|
+
} of mappedRoutes) {
|
|
884
|
+
if (parse(path)) {
|
|
885
|
+
result.push(route);
|
|
886
|
+
}
|
|
887
|
+
}
|
|
888
|
+
return result;
|
|
889
|
+
});
|
|
890
|
+
const openRoutesByPathFx = attach({
|
|
1165
891
|
and: {
|
|
1166
892
|
source: {
|
|
1167
|
-
query:
|
|
1168
|
-
path:
|
|
893
|
+
query: $query,
|
|
894
|
+
path: $path
|
|
1169
895
|
},
|
|
1170
|
-
effect: async (
|
|
896
|
+
effect: async (_ref) => {
|
|
1171
897
|
let {
|
|
1172
|
-
query
|
|
1173
|
-
path
|
|
1174
|
-
} =
|
|
898
|
+
query,
|
|
899
|
+
path
|
|
900
|
+
} = _ref;
|
|
1175
901
|
for (const {
|
|
1176
|
-
route
|
|
1177
|
-
parse
|
|
1178
|
-
} of
|
|
1179
|
-
const
|
|
1180
|
-
|
|
1181
|
-
|
|
1182
|
-
|
|
1183
|
-
}
|
|
902
|
+
route,
|
|
903
|
+
parse
|
|
904
|
+
} of mappedRoutes) {
|
|
905
|
+
const matchResult = parse(path);
|
|
906
|
+
const [routeClosed, routeNavigated] = [scopeBind(route.internal.close), scopeBind(route.internal.navigated)];
|
|
907
|
+
if (!matchResult) {
|
|
908
|
+
routeClosed();
|
|
909
|
+
} else {
|
|
910
|
+
routeNavigated({
|
|
911
|
+
query,
|
|
912
|
+
params: matchResult.params
|
|
913
|
+
});
|
|
914
|
+
}
|
|
1184
915
|
}
|
|
1185
916
|
}
|
|
1186
917
|
},
|
|
@@ -1190,234 +921,257 @@ function qe(e) {
|
|
|
1190
921
|
}
|
|
1191
922
|
});
|
|
1192
923
|
for (const {
|
|
1193
|
-
route
|
|
1194
|
-
build
|
|
1195
|
-
} of
|
|
1196
|
-
|
|
924
|
+
route,
|
|
925
|
+
build
|
|
926
|
+
} of mappedRoutes) {
|
|
927
|
+
sample({
|
|
1197
928
|
and: [{
|
|
1198
|
-
clock:
|
|
1199
|
-
filter: (
|
|
1200
|
-
fn: (
|
|
1201
|
-
var m;
|
|
929
|
+
clock: route.internal.openFx.doneData,
|
|
930
|
+
filter: (payload) => (payload == null ? void 0 : payload.navigate) !== false,
|
|
931
|
+
fn: (payload) => {
|
|
1202
932
|
return {
|
|
1203
|
-
path:
|
|
1204
|
-
query: (
|
|
1205
|
-
replace:
|
|
933
|
+
path: build(payload && "params" in payload ? payload.params : void 0),
|
|
934
|
+
query: (payload == null ? void 0 : payload.query) ?? {},
|
|
935
|
+
replace: payload == null ? void 0 : payload.replace
|
|
1206
936
|
};
|
|
1207
937
|
},
|
|
1208
|
-
target:
|
|
938
|
+
target: navigate
|
|
1209
939
|
}],
|
|
1210
940
|
or: {
|
|
1211
941
|
sid: "exzzqg"
|
|
1212
942
|
}
|
|
1213
943
|
});
|
|
1214
|
-
|
|
944
|
+
}
|
|
945
|
+
sample({
|
|
1215
946
|
and: [{
|
|
1216
|
-
clock:
|
|
1217
|
-
fn: (
|
|
1218
|
-
path:
|
|
1219
|
-
query:
|
|
947
|
+
clock: locationUpdated,
|
|
948
|
+
fn: (location) => ({
|
|
949
|
+
path: location.pathname,
|
|
950
|
+
query: location.query
|
|
1220
951
|
}),
|
|
1221
|
-
target:
|
|
952
|
+
target: openRoutesByPathFx
|
|
1222
953
|
}],
|
|
1223
954
|
or: {
|
|
1224
955
|
sid: "ficdn3"
|
|
1225
956
|
}
|
|
1226
|
-
})
|
|
1227
|
-
|
|
1228
|
-
$
|
|
1229
|
-
$
|
|
1230
|
-
|
|
1231
|
-
|
|
1232
|
-
|
|
1233
|
-
|
|
1234
|
-
|
|
1235
|
-
|
|
1236
|
-
|
|
1237
|
-
|
|
1238
|
-
$
|
|
1239
|
-
|
|
957
|
+
});
|
|
958
|
+
return {
|
|
959
|
+
$query,
|
|
960
|
+
$path,
|
|
961
|
+
$activeRoutes,
|
|
962
|
+
back,
|
|
963
|
+
forward,
|
|
964
|
+
navigate,
|
|
965
|
+
routes,
|
|
966
|
+
setHistory,
|
|
967
|
+
mappedRoutes,
|
|
968
|
+
trackQuery: trackQueryFactory({
|
|
969
|
+
$activeRoutes,
|
|
970
|
+
$query,
|
|
971
|
+
navigate
|
|
1240
972
|
}),
|
|
1241
973
|
"@@unitShape": () => ({
|
|
1242
|
-
query:
|
|
1243
|
-
path:
|
|
1244
|
-
activeRoutes:
|
|
1245
|
-
onBack:
|
|
1246
|
-
onForward:
|
|
1247
|
-
onNavigate:
|
|
974
|
+
query: $query,
|
|
975
|
+
path: $path,
|
|
976
|
+
activeRoutes: $activeRoutes,
|
|
977
|
+
onBack: back,
|
|
978
|
+
onForward: forward,
|
|
979
|
+
onNavigate: navigate
|
|
1248
980
|
})
|
|
1249
981
|
};
|
|
1250
982
|
}
|
|
1251
|
-
function
|
|
1252
|
-
const
|
|
983
|
+
function createVirtualRoute(pending) {
|
|
984
|
+
const $params = createStore(null, {
|
|
1253
985
|
name: "$params",
|
|
1254
986
|
sid: "-grvyb1"
|
|
1255
|
-
})
|
|
987
|
+
});
|
|
988
|
+
const $isOpened = createStore(false, {
|
|
1256
989
|
name: "$isOpened",
|
|
1257
990
|
sid: "-w4cbyq"
|
|
1258
|
-
})
|
|
991
|
+
});
|
|
992
|
+
const $isPending = pending;
|
|
993
|
+
const open = createEvent({
|
|
1259
994
|
name: "open",
|
|
1260
995
|
sid: "8yat5e"
|
|
1261
|
-
})
|
|
996
|
+
});
|
|
997
|
+
const opened = createEvent({
|
|
1262
998
|
name: "opened",
|
|
1263
999
|
sid: "-rsfhnq"
|
|
1264
|
-
})
|
|
1000
|
+
});
|
|
1001
|
+
const openedOnServer = createEvent({
|
|
1265
1002
|
name: "openedOnServer",
|
|
1266
1003
|
sid: "m42ioq"
|
|
1267
|
-
})
|
|
1004
|
+
});
|
|
1005
|
+
const openedOnClient = createEvent({
|
|
1268
1006
|
name: "openedOnClient",
|
|
1269
1007
|
sid: "-bstrdb"
|
|
1270
|
-
})
|
|
1008
|
+
});
|
|
1009
|
+
const close = createEvent({
|
|
1271
1010
|
name: "close",
|
|
1272
1011
|
sid: "41ihvs"
|
|
1273
|
-
})
|
|
1012
|
+
});
|
|
1013
|
+
const closed = createEvent({
|
|
1274
1014
|
name: "closed",
|
|
1275
1015
|
sid: "vdm6z6"
|
|
1276
|
-
})
|
|
1016
|
+
});
|
|
1017
|
+
const cancelled = createEvent({
|
|
1277
1018
|
name: "cancelled",
|
|
1278
1019
|
sid: "-r20ekt"
|
|
1279
1020
|
});
|
|
1280
|
-
|
|
1021
|
+
sample({
|
|
1281
1022
|
and: [{
|
|
1282
|
-
clock:
|
|
1283
|
-
target:
|
|
1023
|
+
clock: open,
|
|
1024
|
+
target: opened
|
|
1284
1025
|
}],
|
|
1285
1026
|
or: {
|
|
1286
1027
|
sid: "-ukycs8"
|
|
1287
1028
|
}
|
|
1288
|
-
})
|
|
1029
|
+
});
|
|
1030
|
+
split({
|
|
1289
1031
|
and: [{
|
|
1290
|
-
source:
|
|
1291
|
-
match: () => typeof window
|
|
1032
|
+
source: opened,
|
|
1033
|
+
match: () => typeof window === "undefined" ? "server" : "client",
|
|
1292
1034
|
cases: {
|
|
1293
|
-
server:
|
|
1294
|
-
client:
|
|
1035
|
+
server: openedOnServer,
|
|
1036
|
+
client: openedOnClient
|
|
1295
1037
|
}
|
|
1296
1038
|
}],
|
|
1297
1039
|
or: {
|
|
1298
1040
|
sid: "-u6npcu"
|
|
1299
1041
|
}
|
|
1300
|
-
})
|
|
1042
|
+
});
|
|
1043
|
+
sample({
|
|
1301
1044
|
and: [{
|
|
1302
|
-
clock:
|
|
1303
|
-
target:
|
|
1045
|
+
clock: close,
|
|
1046
|
+
target: closed
|
|
1304
1047
|
}],
|
|
1305
1048
|
or: {
|
|
1306
1049
|
sid: "-tq5vk0"
|
|
1307
1050
|
}
|
|
1308
|
-
})
|
|
1051
|
+
});
|
|
1052
|
+
sample({
|
|
1309
1053
|
and: [{
|
|
1310
|
-
clock: [
|
|
1311
|
-
target:
|
|
1054
|
+
clock: [opened.map(() => true), closed.map(() => false)],
|
|
1055
|
+
target: $isOpened
|
|
1312
1056
|
}],
|
|
1313
1057
|
or: {
|
|
1314
1058
|
sid: "-tnewl7"
|
|
1315
1059
|
}
|
|
1316
|
-
})
|
|
1317
|
-
|
|
1318
|
-
$
|
|
1319
|
-
$
|
|
1320
|
-
|
|
1321
|
-
|
|
1322
|
-
|
|
1323
|
-
|
|
1324
|
-
|
|
1325
|
-
|
|
1326
|
-
|
|
1060
|
+
});
|
|
1061
|
+
return {
|
|
1062
|
+
$params,
|
|
1063
|
+
$isOpened,
|
|
1064
|
+
$isPending,
|
|
1065
|
+
open,
|
|
1066
|
+
opened,
|
|
1067
|
+
openedOnClient,
|
|
1068
|
+
openedOnServer,
|
|
1069
|
+
close,
|
|
1070
|
+
closed,
|
|
1071
|
+
cancelled,
|
|
1327
1072
|
// @ts-expect-error emulated path for virtual route
|
|
1328
1073
|
path: null,
|
|
1329
1074
|
"@@unitShape": () => ({
|
|
1330
|
-
params:
|
|
1331
|
-
isOpened:
|
|
1332
|
-
isPending:
|
|
1333
|
-
onOpen:
|
|
1075
|
+
params: $params,
|
|
1076
|
+
isOpened: $isOpened,
|
|
1077
|
+
isPending: $isPending,
|
|
1078
|
+
onOpen: open
|
|
1334
1079
|
})
|
|
1335
1080
|
};
|
|
1336
1081
|
}
|
|
1337
|
-
function
|
|
1082
|
+
function chainRoute(props) {
|
|
1338
1083
|
const {
|
|
1339
|
-
route
|
|
1340
|
-
beforeOpen
|
|
1341
|
-
openOn
|
|
1342
|
-
cancelOn
|
|
1343
|
-
} =
|
|
1344
|
-
let
|
|
1345
|
-
const
|
|
1346
|
-
var d;
|
|
1347
|
-
return (d = o) === null || d === void 0 ? void 0 : d();
|
|
1348
|
-
}, {
|
|
1084
|
+
route,
|
|
1085
|
+
beforeOpen,
|
|
1086
|
+
openOn,
|
|
1087
|
+
cancelOn
|
|
1088
|
+
} = props;
|
|
1089
|
+
let asyncImport;
|
|
1090
|
+
const waitForAsyncBundleFx = createEffect(() => asyncImport == null ? void 0 : asyncImport(), {
|
|
1349
1091
|
name: "waitForAsyncBundleFx",
|
|
1350
1092
|
sid: "-utsi21"
|
|
1351
|
-
})
|
|
1352
|
-
|
|
1353
|
-
|
|
1354
|
-
|
|
1093
|
+
});
|
|
1094
|
+
const openFx = createEffect(async (payload) => {
|
|
1095
|
+
await waitForAsyncBundleFx();
|
|
1096
|
+
for (const trigger of [].concat(beforeOpen)) {
|
|
1097
|
+
await trigger(payload);
|
|
1098
|
+
}
|
|
1355
1099
|
}, {
|
|
1356
1100
|
name: "openFx",
|
|
1357
1101
|
sid: "-kgdclv"
|
|
1358
|
-
})
|
|
1359
|
-
|
|
1102
|
+
});
|
|
1103
|
+
const virtualRoute = createVirtualRoute(openFx.pending);
|
|
1104
|
+
sample({
|
|
1360
1105
|
and: [{
|
|
1361
|
-
clock:
|
|
1362
|
-
target:
|
|
1106
|
+
clock: route.opened,
|
|
1107
|
+
target: openFx
|
|
1363
1108
|
}],
|
|
1364
1109
|
or: {
|
|
1365
1110
|
sid: "102heu"
|
|
1366
1111
|
}
|
|
1367
|
-
})
|
|
1112
|
+
});
|
|
1113
|
+
sample({
|
|
1368
1114
|
and: [{
|
|
1369
|
-
clock:
|
|
1370
|
-
fn: (
|
|
1371
|
-
target:
|
|
1115
|
+
clock: route.opened,
|
|
1116
|
+
fn: (payload) => payload && "params" in payload ? payload.params : null,
|
|
1117
|
+
target: virtualRoute.$params
|
|
1372
1118
|
}],
|
|
1373
1119
|
or: {
|
|
1374
1120
|
sid: "12tgdn"
|
|
1375
1121
|
}
|
|
1376
|
-
})
|
|
1377
|
-
|
|
1378
|
-
|
|
1379
|
-
|
|
1380
|
-
|
|
1381
|
-
|
|
1382
|
-
|
|
1383
|
-
|
|
1384
|
-
|
|
1385
|
-
|
|
1386
|
-
|
|
1387
|
-
|
|
1388
|
-
|
|
1389
|
-
|
|
1390
|
-
|
|
1391
|
-
|
|
1392
|
-
|
|
1393
|
-
|
|
1394
|
-
|
|
1395
|
-
|
|
1396
|
-
|
|
1397
|
-
|
|
1398
|
-
|
|
1399
|
-
|
|
1400
|
-
|
|
1401
|
-
|
|
1402
|
-
|
|
1403
|
-
|
|
1404
|
-
|
|
1405
|
-
|
|
1406
|
-
|
|
1407
|
-
|
|
1408
|
-
|
|
1409
|
-
|
|
1410
|
-
|
|
1411
|
-
|
|
1122
|
+
});
|
|
1123
|
+
if (openOn) {
|
|
1124
|
+
sample({
|
|
1125
|
+
and: [{
|
|
1126
|
+
clock: openOn,
|
|
1127
|
+
source: {
|
|
1128
|
+
params: virtualRoute.$params
|
|
1129
|
+
},
|
|
1130
|
+
fn: (_ref) => {
|
|
1131
|
+
let {
|
|
1132
|
+
params
|
|
1133
|
+
} = _ref;
|
|
1134
|
+
return {
|
|
1135
|
+
params
|
|
1136
|
+
};
|
|
1137
|
+
},
|
|
1138
|
+
target: virtualRoute.open
|
|
1139
|
+
}],
|
|
1140
|
+
or: {
|
|
1141
|
+
sid: "1jba87"
|
|
1142
|
+
}
|
|
1143
|
+
});
|
|
1144
|
+
}
|
|
1145
|
+
if (cancelOn) {
|
|
1146
|
+
sample({
|
|
1147
|
+
and: [{
|
|
1148
|
+
clock: [route.closed].concat(cancelOn),
|
|
1149
|
+
target: virtualRoute.close
|
|
1150
|
+
}],
|
|
1151
|
+
or: {
|
|
1152
|
+
sid: "1zt411"
|
|
1153
|
+
}
|
|
1154
|
+
});
|
|
1155
|
+
sample({
|
|
1156
|
+
and: [{
|
|
1157
|
+
clock: [].concat(cancelOn),
|
|
1158
|
+
target: virtualRoute.cancelled
|
|
1159
|
+
}],
|
|
1160
|
+
or: {
|
|
1161
|
+
sid: "22k2zu"
|
|
1162
|
+
}
|
|
1163
|
+
});
|
|
1164
|
+
}
|
|
1165
|
+
return Object.assign(virtualRoute, {
|
|
1412
1166
|
internal: {
|
|
1413
|
-
setAsyncImport: (
|
|
1167
|
+
setAsyncImport: (value) => asyncImport = value
|
|
1414
1168
|
}
|
|
1415
1169
|
});
|
|
1416
1170
|
}
|
|
1417
1171
|
export {
|
|
1418
|
-
|
|
1419
|
-
|
|
1420
|
-
|
|
1421
|
-
|
|
1422
|
-
|
|
1172
|
+
chainRoute,
|
|
1173
|
+
createRoute,
|
|
1174
|
+
createRouter,
|
|
1175
|
+
createRouterControls,
|
|
1176
|
+
parameters
|
|
1423
1177
|
};
|