@shakerquiz/utilities 0.5.66 → 0.5.68
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/package.json +1 -1
- package/source/enumerations/misc/routes.js +201 -56
package/package.json
CHANGED
|
@@ -15,82 +15,139 @@ export var Service = /** @type {const} */ ({
|
|
|
15
15
|
|
|
16
16
|
export var Services = Object.values(Service)
|
|
17
17
|
|
|
18
|
-
export var
|
|
18
|
+
export var SingularRoute = /** @type {const} */ ({
|
|
19
|
+
'role': 'role',
|
|
19
20
|
'user': 'user',
|
|
20
21
|
'user/password': 'user/password',
|
|
21
22
|
'user/role': 'user/role',
|
|
22
23
|
'user/cities': 'user/cities',
|
|
23
|
-
|
|
24
|
-
'users': 'users',
|
|
25
|
-
'users/role': 'users/role',
|
|
26
|
-
'users/cities': 'users/cities',
|
|
27
|
-
|
|
28
|
-
'role': 'role',
|
|
29
|
-
|
|
30
|
-
'roles': 'roles',
|
|
31
|
-
|
|
32
24
|
'checkin': 'checkin',
|
|
33
|
-
|
|
34
25
|
'country': 'country',
|
|
35
|
-
|
|
36
|
-
'countries': 'countries',
|
|
37
|
-
|
|
38
26
|
'currency': 'currency',
|
|
39
|
-
|
|
40
|
-
'currencies': 'currencies',
|
|
41
|
-
|
|
42
27
|
'timezone': 'timezone',
|
|
43
|
-
|
|
44
|
-
'timezones': 'timezones',
|
|
45
|
-
|
|
46
28
|
'city': 'city',
|
|
47
29
|
'city/country': 'city/country',
|
|
48
30
|
'city/currency': 'city/currency',
|
|
49
31
|
'city/timezone': 'city/timezone',
|
|
50
32
|
'city/venues': 'city/venues',
|
|
51
|
-
|
|
52
|
-
'cities': 'cities',
|
|
53
|
-
'cities/country': 'cities/country',
|
|
54
|
-
'cities/currency': 'cities/currency',
|
|
55
|
-
'cities/timezone': 'cities/timezone',
|
|
56
|
-
|
|
57
33
|
'venue': 'venue',
|
|
58
34
|
'venue/city': 'venue/city',
|
|
59
|
-
|
|
60
|
-
'venues': 'venues',
|
|
61
|
-
'venues/city': 'venues/city',
|
|
62
|
-
|
|
63
35
|
'theme': 'theme',
|
|
64
36
|
'theme/cover': 'theme/cover',
|
|
65
|
-
|
|
66
|
-
'themes': 'themes',
|
|
67
|
-
'themes/cover': 'themes/cover',
|
|
68
|
-
|
|
69
37
|
'game': 'game',
|
|
70
38
|
'game/city': 'game/city',
|
|
71
39
|
'game/venue': 'game/venue',
|
|
72
40
|
'game/theme': 'game/theme',
|
|
73
41
|
'game/registrations': 'game/registrations',
|
|
74
|
-
'game/registrations/
|
|
42
|
+
'game/registrations/export': 'game/registrations/export',
|
|
75
43
|
'game/summary': 'game/summary',
|
|
76
|
-
|
|
77
|
-
'games': 'games',
|
|
78
|
-
'games/city': 'games/city',
|
|
79
|
-
'games/venue': 'games/venue',
|
|
80
|
-
'games/theme': 'games/theme',
|
|
81
|
-
'games/summary': 'games/summary',
|
|
82
|
-
|
|
83
44
|
'registration': 'registration',
|
|
84
45
|
'registration/game': 'registration/game',
|
|
85
46
|
'registration/mailing': 'registration/mailing',
|
|
86
47
|
'registration/channel': 'registration/channel',
|
|
87
48
|
'registration/confirmation': 'registration/confirmation',
|
|
88
49
|
'registration/cancellation': 'registration/cancellation',
|
|
50
|
+
'registration/export': 'registration/export',
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
export var SingularRoutes = Object.values(SingularRoute)
|
|
89
54
|
|
|
55
|
+
export var PluralRoute = /** @type {const} */ ({
|
|
56
|
+
'roles': 'roles',
|
|
57
|
+
'users': 'users',
|
|
58
|
+
'users/password': 'users/password',
|
|
59
|
+
'users/role': 'users/role',
|
|
60
|
+
'users/cities': 'users/cities',
|
|
61
|
+
'checkins': 'checkins',
|
|
62
|
+
'countries': 'countries',
|
|
63
|
+
'currencies': 'currencies',
|
|
64
|
+
'timezones': 'timezones',
|
|
65
|
+
'cities': 'cities',
|
|
66
|
+
'cities/country': 'cities/country',
|
|
67
|
+
'cities/currency': 'cities/currency',
|
|
68
|
+
'cities/timezone': 'cities/timezone',
|
|
69
|
+
'cities/venues': 'cities/venues',
|
|
70
|
+
'venues': 'venues',
|
|
71
|
+
'venues/city': 'venues/city',
|
|
72
|
+
'themes': 'themes',
|
|
73
|
+
'themes/cover': 'themes/cover',
|
|
74
|
+
'games': 'games',
|
|
75
|
+
'games/city': 'games/city',
|
|
76
|
+
'games/venue': 'games/venue',
|
|
77
|
+
'games/theme': 'games/theme',
|
|
78
|
+
'games/registrations': 'games/registrations',
|
|
79
|
+
'games/registrations/export': 'games/registrations/export',
|
|
80
|
+
'games/summary': 'games/summary',
|
|
90
81
|
'registrations': 'registrations',
|
|
91
82
|
'registrations/export': 'registrations/export',
|
|
92
83
|
})
|
|
93
84
|
|
|
85
|
+
export var PluralRoutes = Object.values(PluralRoute)
|
|
86
|
+
|
|
87
|
+
export var Route = {
|
|
88
|
+
...SingularRoute,
|
|
89
|
+
...PluralRoute,
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
export var SingularPluralRouteRelation = {
|
|
93
|
+
[Route['role']]: Route['roles'],
|
|
94
|
+
[Route['user']]: Route['users'],
|
|
95
|
+
[Route['user/password']]: Route['users/password'],
|
|
96
|
+
[Route['user/role']]: Route['users/role'],
|
|
97
|
+
[Route['user/cities']]: Route['users/cities'],
|
|
98
|
+
[Route['checkin']]: Route['checkins'],
|
|
99
|
+
[Route['country']]: Route['countries'],
|
|
100
|
+
[Route['currency']]: Route['currencies'],
|
|
101
|
+
[Route['timezone']]: Route['timezones'],
|
|
102
|
+
[Route['city']]: Route['cities'],
|
|
103
|
+
[Route['city/country']]: Route['cities/country'],
|
|
104
|
+
[Route['city/currency']]: Route['cities/currency'],
|
|
105
|
+
[Route['city/timezone']]: Route['cities/timezone'],
|
|
106
|
+
[Route['city/venues']]: Route['cities/venues'],
|
|
107
|
+
[Route['venue']]: Route['venues'],
|
|
108
|
+
[Route['venue/city']]: Route['venues/city'],
|
|
109
|
+
[Route['theme']]: Route['themes'],
|
|
110
|
+
[Route['theme/cover']]: Route['themes/cover'],
|
|
111
|
+
[Route['game']]: Route['games'],
|
|
112
|
+
[Route['game/city']]: Route['games/city'],
|
|
113
|
+
[Route['game/venue']]: Route['games/venue'],
|
|
114
|
+
[Route['game/theme']]: Route['games/theme'],
|
|
115
|
+
[Route['game/registrations']]: Route['games/registrations'],
|
|
116
|
+
[Route['game/registrations/export']]: Route['games/registrations/export'],
|
|
117
|
+
[Route['game/summary']]: Route['games/summary'],
|
|
118
|
+
[Route['registration']]: Route['registrations'],
|
|
119
|
+
[Route['registration/export']]: Route['registrations/export'],
|
|
120
|
+
}
|
|
121
|
+
|
|
122
|
+
export var PluralSingularRouteRelation = {
|
|
123
|
+
[Route['roles']]: Route['role'],
|
|
124
|
+
[Route['users']]: Route['user'],
|
|
125
|
+
[Route['users/role']]: Route['user/role'],
|
|
126
|
+
[Route['users/cities']]: Route['user/cities'],
|
|
127
|
+
[Route['checkins']]: Route['checkin'],
|
|
128
|
+
[Route['countries']]: Route['country'],
|
|
129
|
+
[Route['currencies']]: Route['currency'],
|
|
130
|
+
[Route['timezones']]: Route['timezone'],
|
|
131
|
+
[Route['cities']]: Route['city'],
|
|
132
|
+
[Route['cities/country']]: Route['city/country'],
|
|
133
|
+
[Route['cities/currency']]: Route['city/currency'],
|
|
134
|
+
[Route['cities/timezone']]: Route['city/timezone'],
|
|
135
|
+
[Route['cities/venues']]: Route['city/venues'],
|
|
136
|
+
[Route['venues']]: Route['venue'],
|
|
137
|
+
[Route['venues/city']]: Route['venue/city'],
|
|
138
|
+
[Route['themes']]: Route['theme'],
|
|
139
|
+
[Route['themes/cover']]: Route['theme/cover'],
|
|
140
|
+
[Route['games']]: Route['game'],
|
|
141
|
+
[Route['games/city']]: Route['game/city'],
|
|
142
|
+
[Route['games/venue']]: Route['game/venue'],
|
|
143
|
+
[Route['games/theme']]: Route['game/theme'],
|
|
144
|
+
[Route['games/registrations']]: Route['game/registrations'],
|
|
145
|
+
[Route['games/registrations/export']]: Route['game/registrations/export'],
|
|
146
|
+
[Route['games/summary']]: Route['game/summary'],
|
|
147
|
+
[Route['registrations']]: Route['registration'],
|
|
148
|
+
[Route['registrations/export']]: Route['registration/export'],
|
|
149
|
+
}
|
|
150
|
+
|
|
94
151
|
export var Routes = Object.values(Route)
|
|
95
152
|
|
|
96
153
|
export var RoutePathname = /** @type {const} */ ({
|
|
@@ -109,6 +166,8 @@ export var RoutePathname = /** @type {const} */ ({
|
|
|
109
166
|
|
|
110
167
|
[Route['checkin']]: 'checkin',
|
|
111
168
|
|
|
169
|
+
[Route['checkins']]: 'checkins',
|
|
170
|
+
|
|
112
171
|
[Route['country']]: 'country/:country',
|
|
113
172
|
|
|
114
173
|
[Route['countries']]: 'countries',
|
|
@@ -131,9 +190,10 @@ export var RoutePathname = /** @type {const} */ ({
|
|
|
131
190
|
[Route['cities/country']]: 'cities/country',
|
|
132
191
|
[Route['cities/currency']]: 'cities/currency',
|
|
133
192
|
[Route['cities/timezone']]: 'cities/timezone',
|
|
193
|
+
[Route['cities/venues']]: 'cities/venues',
|
|
134
194
|
|
|
135
195
|
[Route['venue']]: 'venue/:venue',
|
|
136
|
-
[Route['
|
|
196
|
+
[Route['venue/city']]: 'venues/city',
|
|
137
197
|
|
|
138
198
|
[Route['venues']]: 'venues',
|
|
139
199
|
[Route['venues/city']]: 'venues/city',
|
|
@@ -149,13 +209,15 @@ export var RoutePathname = /** @type {const} */ ({
|
|
|
149
209
|
[Route['game/venue']]: 'game/:game/venue',
|
|
150
210
|
[Route['game/theme']]: 'game/:game/theme',
|
|
151
211
|
[Route['game/registrations']]: 'game/:game/registrations',
|
|
152
|
-
[Route['game/registrations/
|
|
212
|
+
[Route['game/registrations/export']]: 'game/:game/registrations/export',
|
|
153
213
|
[Route['game/summary']]: 'game/:game/summary',
|
|
154
214
|
|
|
155
215
|
[Route['games']]: 'games',
|
|
156
216
|
[Route['games/city']]: 'games/city',
|
|
157
217
|
[Route['games/venue']]: 'games/venue',
|
|
158
218
|
[Route['games/theme']]: 'games/theme',
|
|
219
|
+
[Route['games/registrations']]: 'games/registrations',
|
|
220
|
+
[Route['games/registrations/export']]: 'games/registrations/export',
|
|
159
221
|
[Route['games/summary']]: 'games/summary',
|
|
160
222
|
|
|
161
223
|
[Route['registration']]: 'registration/:registration',
|
|
@@ -164,6 +226,7 @@ export var RoutePathname = /** @type {const} */ ({
|
|
|
164
226
|
[Route['registration/channel']]: 'registration/:registration/channel',
|
|
165
227
|
[Route['registration/confirmation']]: 'registration/:registration/confirmation',
|
|
166
228
|
[Route['registration/cancellation']]: 'registration/:registration/cancellation',
|
|
229
|
+
[Route['registration/export']]: 'registration/:registration/export',
|
|
167
230
|
|
|
168
231
|
[Route['registrations']]: 'registrations',
|
|
169
232
|
[Route['registrations/export']]: 'registrations/export',
|
|
@@ -187,6 +250,8 @@ export var RouteParams = /** @type {const} */ ({
|
|
|
187
250
|
|
|
188
251
|
[Route['checkin']]: [],
|
|
189
252
|
|
|
253
|
+
[Route['checkins']]: [],
|
|
254
|
+
|
|
190
255
|
[Route['country']]: [':country'],
|
|
191
256
|
|
|
192
257
|
[Route['countries']]: [],
|
|
@@ -209,6 +274,7 @@ export var RouteParams = /** @type {const} */ ({
|
|
|
209
274
|
[Route['cities/country']]: [],
|
|
210
275
|
[Route['cities/currency']]: [],
|
|
211
276
|
[Route['cities/timezone']]: [],
|
|
277
|
+
[Route['cities/venues']]: [],
|
|
212
278
|
|
|
213
279
|
[Route['venue']]: [':venue'],
|
|
214
280
|
[Route['venue/city']]: [':venue'],
|
|
@@ -227,13 +293,15 @@ export var RouteParams = /** @type {const} */ ({
|
|
|
227
293
|
[Route['game/venue']]: [':game'],
|
|
228
294
|
[Route['game/theme']]: [':game'],
|
|
229
295
|
[Route['game/registrations']]: [':game'],
|
|
230
|
-
[Route['game/registrations/
|
|
296
|
+
[Route['game/registrations/export']]: [':game'],
|
|
231
297
|
[Route['game/summary']]: [':game'],
|
|
232
298
|
|
|
233
299
|
[Route['games']]: [],
|
|
234
300
|
[Route['games/city']]: [],
|
|
235
301
|
[Route['games/venue']]: [],
|
|
236
302
|
[Route['games/theme']]: [],
|
|
303
|
+
[Route['games/registrations']]: [],
|
|
304
|
+
[Route['games/registrations/export']]: [],
|
|
237
305
|
[Route['games/summary']]: [],
|
|
238
306
|
|
|
239
307
|
[Route['registration']]: [':registration'],
|
|
@@ -242,6 +310,7 @@ export var RouteParams = /** @type {const} */ ({
|
|
|
242
310
|
[Route['registration/channel']]: [':registration'],
|
|
243
311
|
[Route['registration/confirmation']]: [':registration'],
|
|
244
312
|
[Route['registration/cancellation']]: [':registration'],
|
|
313
|
+
[Route['registration/export']]: [':registration'],
|
|
245
314
|
|
|
246
315
|
[Route['registrations']]: [],
|
|
247
316
|
[Route['registrations/export']]: [],
|
|
@@ -303,13 +372,15 @@ export var RouteService = {
|
|
|
303
372
|
[Route['game/venue']]: Service.Games,
|
|
304
373
|
[Route['game/theme']]: Service.Games,
|
|
305
374
|
[Route['game/registrations']]: Service.Games,
|
|
306
|
-
[Route['game/registrations/
|
|
375
|
+
[Route['game/registrations/export']]: Service.Games,
|
|
307
376
|
[Route['game/summary']]: Service.Games,
|
|
308
377
|
|
|
309
378
|
[Route['games']]: Service.Games,
|
|
310
379
|
[Route['games/city']]: Service.Games,
|
|
311
380
|
[Route['games/venue']]: Service.Games,
|
|
312
381
|
[Route['games/theme']]: Service.Games,
|
|
382
|
+
[Route['games/registrations']]: Service.Games,
|
|
383
|
+
[Route['games/registrations/export']]: Service.Games,
|
|
313
384
|
[Route['games/summary']]: Service.Games,
|
|
314
385
|
|
|
315
386
|
[Route['registration']]: Service.Registrations,
|
|
@@ -384,12 +455,14 @@ export var ServiceRoutes = {
|
|
|
384
455
|
Route['game/venue'],
|
|
385
456
|
Route['game/theme'],
|
|
386
457
|
Route['game/registrations'],
|
|
387
|
-
Route['game/registrations/
|
|
458
|
+
Route['game/registrations/export'],
|
|
388
459
|
Route['game/summary'],
|
|
389
460
|
Route['games'],
|
|
390
461
|
Route['games/city'],
|
|
391
462
|
Route['games/venue'],
|
|
392
463
|
Route['games/theme'],
|
|
464
|
+
Route['games/registrations'],
|
|
465
|
+
Route['games/registrations/export'],
|
|
393
466
|
Route['games/summary'],
|
|
394
467
|
],
|
|
395
468
|
|
|
@@ -412,14 +485,86 @@ export var ServiceRoutes = {
|
|
|
412
485
|
}
|
|
413
486
|
|
|
414
487
|
/**
|
|
415
|
-
* @
|
|
416
|
-
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
488
|
+
* @param {keyof Route} value
|
|
489
|
+
*/
|
|
490
|
+
export var getRoute = value => {
|
|
491
|
+
if (!(value in Route))
|
|
492
|
+
throw TypeError(`[getRoute] Route '${value}' must be a member of Route.`)
|
|
493
|
+
|
|
494
|
+
return Route[value]
|
|
495
|
+
}
|
|
496
|
+
|
|
497
|
+
/**
|
|
498
|
+
* @param {keyof Route} value
|
|
420
499
|
*/
|
|
421
|
-
export var
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
500
|
+
export var getRouteKind = value => {
|
|
501
|
+
var route = getRoute(value)
|
|
502
|
+
|
|
503
|
+
if (SingularRoutes.includes(route))
|
|
504
|
+
return 'Singular'
|
|
505
|
+
else if (PluralRoutes.includes(route))
|
|
506
|
+
return 'Plural'
|
|
507
|
+
else
|
|
508
|
+
return 'Unknown'
|
|
509
|
+
}
|
|
510
|
+
|
|
511
|
+
/**
|
|
512
|
+
* @param {keyof Route} value
|
|
513
|
+
*/
|
|
514
|
+
export var getSingularPluralRouteRelation = value => {
|
|
515
|
+
var route = getRoute(value)
|
|
516
|
+
|
|
517
|
+
if (!(route in SingularPluralRouteRelation))
|
|
518
|
+
throw TypeError(
|
|
519
|
+
`[getSingularPluralRouteRelation] Route '${route}' must be a member of SingularPluralRouteRelation.`,
|
|
520
|
+
)
|
|
521
|
+
|
|
522
|
+
return SingularPluralRouteRelation[route]
|
|
523
|
+
}
|
|
524
|
+
|
|
525
|
+
export var getPluralSingularRouteRelation = value => {
|
|
526
|
+
var route = getRoute(value)
|
|
527
|
+
|
|
528
|
+
if (!(route in PluralSingularRouteRelation))
|
|
529
|
+
throw TypeError(
|
|
530
|
+
`[getPluralSingularRouteRelation] Route '${route}' must be a member of PluralSingularRouteRelation.`,
|
|
531
|
+
)
|
|
532
|
+
|
|
533
|
+
return PluralSingularRouteRelation[route]
|
|
534
|
+
}
|
|
535
|
+
|
|
536
|
+
/**
|
|
537
|
+
* @param {keyof Route} value
|
|
538
|
+
*/
|
|
539
|
+
export var getRoutePathname = value => {
|
|
540
|
+
var route = getRoute(value)
|
|
541
|
+
|
|
542
|
+
if (!(route in RoutePathname))
|
|
543
|
+
throw TypeError(`[getRoutePathname] Route '${route}' must be a member of RoutePathname.`)
|
|
544
|
+
|
|
545
|
+
return RoutePathname[route]
|
|
546
|
+
}
|
|
547
|
+
|
|
548
|
+
export var hydrateRoutePathname = (value, parameters) => {
|
|
549
|
+
var route = getRoute(value)
|
|
550
|
+
var pathname = getRoutePathname(route)
|
|
551
|
+
var params = getRouteParams(route)
|
|
552
|
+
|
|
553
|
+
return params.reduce(
|
|
554
|
+
(pathname, param, index) => pathname.replace(param, parameters[index]),
|
|
555
|
+
pathname,
|
|
425
556
|
)
|
|
557
|
+
}
|
|
558
|
+
|
|
559
|
+
/**
|
|
560
|
+
* @param {keyof Route} value
|
|
561
|
+
* @returns
|
|
562
|
+
*/
|
|
563
|
+
export var getRouteParams = value => {
|
|
564
|
+
var route = getRoute(value)
|
|
565
|
+
|
|
566
|
+
if (!(route in RouteParams))
|
|
567
|
+
throw TypeError(`[getRouteParams] Route '${route}' must be a member of RouteParams.`)
|
|
568
|
+
|
|
569
|
+
return RouteParams[route]
|
|
570
|
+
}
|