@shakerquiz/utilities 4.0.1 → 4.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/.github/workflows/publish.yml +1 -1
  2. package/dprint.json +0 -3
  3. package/jsconfig.json +5 -8
  4. package/package.json +6 -2
  5. package/scripts/codegen.js +104 -0
  6. package/scripts/template.js +55 -0
  7. package/source/codegen/autogenerated.js +782 -0
  8. package/source/entities/key.js +6 -4
  9. package/source/entities/pattern.js +3 -3
  10. package/source/entities/{route.js → routes.js} +0 -7
  11. package/source/entities/runtimes.js +14 -0
  12. package/source/entities/segment.js +36 -4
  13. package/source/entities/service-runtime.js +2 -2
  14. package/source/entities/services.js +28 -0
  15. package/source/helpers/access.js +11 -13
  16. package/source/helpers/route-pathname.js +26 -0
  17. package/source/helpers/tag.js +32 -29
  18. package/source/index.js +5 -9
  19. package/scripts/route-cardinality.js +0 -23
  20. package/scripts/route-parameter.js +0 -29
  21. package/scripts/route-pathname.js +0 -37
  22. package/scripts/route-relation.js +0 -26
  23. package/scripts/route-service.js +0 -25
  24. package/scripts/templates/route-cardinality.js +0 -5
  25. package/scripts/templates/route-parameter.js +0 -5
  26. package/scripts/templates/route-pathname.js +0 -7
  27. package/scripts/templates/route-relation.js +0 -5
  28. package/scripts/templates/route-service.js +0 -7
  29. package/source/entities/route-cardinality.js +0 -151
  30. package/source/entities/route-parameter.js +0 -151
  31. package/source/entities/route-pathname.js +0 -226
  32. package/source/entities/route-relation.js +0 -151
  33. package/source/entities/route-service.js +0 -181
  34. package/source/entities/runtime.js +0 -6
  35. package/source/entities/service.js +0 -22
  36. package/source/helpers/hydrate-route-pathname.js +0 -29
@@ -0,0 +1,782 @@
1
+ /* --- Autogenerated --- */
2
+
3
+ export const Route = Object.freeze(
4
+ /** @type {const} */ ({
5
+ 'role': 'role',
6
+ 'roles': 'roles',
7
+ 'user': 'user',
8
+ 'user/password': 'user/password',
9
+ 'user/role': 'user/role',
10
+ 'user/city': 'user/city',
11
+ 'user/cities': 'user/cities',
12
+ 'users': 'users',
13
+ 'users/password': 'users/password',
14
+ 'users/role': 'users/role',
15
+ 'users/cities': 'users/cities',
16
+ 'checkin': 'checkin',
17
+ 'cities': 'cities',
18
+ 'cities/country': 'cities/country',
19
+ 'cities/currency': 'cities/currency',
20
+ 'cities/timezone': 'cities/timezone',
21
+ 'cities/venues': 'cities/venues',
22
+ 'city': 'city',
23
+ 'city/vk_group_token': 'city/vk_group_token',
24
+ 'city/country': 'city/country',
25
+ 'city/currency': 'city/currency',
26
+ 'city/timezone': 'city/timezone',
27
+ 'city/venue': 'city/venue',
28
+ 'city/venues': 'city/venues',
29
+ 'country': 'country',
30
+ 'countries': 'countries',
31
+ 'currency': 'currency',
32
+ 'currencies': 'currencies',
33
+ 'timezone': 'timezone',
34
+ 'timezones': 'timezones',
35
+ 'venue': 'venue',
36
+ 'venue/city': 'venue/city',
37
+ 'venues': 'venues',
38
+ 'venues/city': 'venues/city',
39
+ 'theme': 'theme',
40
+ 'theme/cover': 'theme/cover',
41
+ 'themes': 'themes',
42
+ 'themes/cover': 'themes/cover',
43
+ 'themes/games': 'themes/games',
44
+ 'game': 'game',
45
+ 'game/city': 'game/city',
46
+ 'game/registration': 'game/registration',
47
+ 'game/registrations': 'game/registrations',
48
+ 'game/registrations/export': 'game/registrations/export',
49
+ 'game/summary': 'game/summary',
50
+ 'game/theme': 'game/theme',
51
+ 'game/theme/cover': 'game/theme/cover',
52
+ 'game/venue': 'game/venue',
53
+ 'games': 'games',
54
+ 'games/city': 'games/city',
55
+ 'games/registrations': 'games/registrations',
56
+ 'games/registrations/export': 'games/registrations/export',
57
+ 'games/summary': 'games/summary',
58
+ 'games/theme': 'games/theme',
59
+ 'games/theme/cover': 'games/theme/cover',
60
+ 'games/venue': 'games/venue',
61
+ 'registration': 'registration',
62
+ 'registration/cancellation': 'registration/cancellation',
63
+ 'registration/channel': 'registration/channel',
64
+ 'registration/confirmation': 'registration/confirmation',
65
+ 'registration/export': 'registration/export',
66
+ 'registration/city': 'registration/city',
67
+ 'registration/game': 'registration/game',
68
+ 'registration/game/theme': 'registration/game/theme',
69
+ 'registration/game/theme/cover': 'registration/game/theme/cover',
70
+ 'registration/game/venue': 'registration/game/venue',
71
+ 'registration/mailing': 'registration/mailing',
72
+ 'registrations': 'registrations',
73
+ 'registrations/city': 'registrations/city',
74
+ 'registrations/game': 'registrations/game',
75
+ 'registrations/game/theme': 'registrations/game/theme',
76
+ 'registrations/export': 'registrations/export',
77
+ }),
78
+ )
79
+
80
+ export const RouteCardinality = Object.freeze(
81
+ /** @type {const} */ ({
82
+ 'role': '1',
83
+ 'roles': 'n',
84
+ 'user': '1',
85
+ 'user/password': '1/1',
86
+ 'user/role': '1/1',
87
+ 'user/city': '1/1',
88
+ 'user/cities': '1/n',
89
+ 'users': 'n',
90
+ 'users/password': 'n/1',
91
+ 'users/role': 'n/1',
92
+ 'users/cities': 'n/n',
93
+ 'checkin': '1',
94
+ 'cities': 'n',
95
+ 'cities/country': 'n/1',
96
+ 'cities/currency': 'n/1',
97
+ 'cities/timezone': 'n/1',
98
+ 'cities/venues': 'n/n',
99
+ 'city': '1',
100
+ 'city/vk_group_token': '1/1',
101
+ 'city/country': '1/1',
102
+ 'city/currency': '1/1',
103
+ 'city/timezone': '1/1',
104
+ 'city/venue': '1/1',
105
+ 'city/venues': '1/n',
106
+ 'country': '1',
107
+ 'countries': 'n',
108
+ 'currency': '1',
109
+ 'currencies': 'n',
110
+ 'timezone': '1',
111
+ 'timezones': 'n',
112
+ 'venue': '1',
113
+ 'venue/city': '1/1',
114
+ 'venues': 'n',
115
+ 'venues/city': 'n/1',
116
+ 'theme': '1',
117
+ 'theme/cover': '1/1',
118
+ 'themes': 'n',
119
+ 'themes/cover': 'n/1',
120
+ 'themes/games': 'n/n',
121
+ 'game': '1',
122
+ 'game/city': '1/1',
123
+ 'game/registration': '1/1',
124
+ 'game/registrations': '1/n',
125
+ 'game/registrations/export': '1/1',
126
+ 'game/summary': '1/1',
127
+ 'game/theme': '1/1',
128
+ 'game/theme/cover': '1/1',
129
+ 'game/venue': '1/1',
130
+ 'games': 'n',
131
+ 'games/city': 'n/1',
132
+ 'games/registrations': 'n/n',
133
+ 'games/registrations/export': 'n/1',
134
+ 'games/summary': 'n/1',
135
+ 'games/theme': 'n/1',
136
+ 'games/theme/cover': 'n/1',
137
+ 'games/venue': 'n/1',
138
+ 'registration': '1',
139
+ 'registration/cancellation': '1/1',
140
+ 'registration/channel': '1/1',
141
+ 'registration/confirmation': '1/1',
142
+ 'registration/export': '1/1',
143
+ 'registration/city': '1/1',
144
+ 'registration/game': '1/1',
145
+ 'registration/game/theme': '1/1',
146
+ 'registration/game/theme/cover': '1/1',
147
+ 'registration/game/venue': '1/1',
148
+ 'registration/mailing': '1/1',
149
+ 'registrations': 'n',
150
+ 'registrations/city': 'n/1',
151
+ 'registrations/game': 'n/1',
152
+ 'registrations/game/theme': 'n/1',
153
+ 'registrations/export': 'n/1',
154
+ }),
155
+ )
156
+
157
+ export const RoutePathname = Object.freeze(
158
+ /** @type {const} */ ({
159
+ 'role': 'role/:role',
160
+ 'roles': 'roles',
161
+ 'user': 'user/:user',
162
+ 'user/password': 'user/:user/password',
163
+ 'user/role': 'user/:user/role/:role',
164
+ 'user/city': 'user/:user/city/:city',
165
+ 'user/cities': 'user/:user/cities',
166
+ 'users': 'users',
167
+ 'users/password': 'users/password',
168
+ 'users/role': 'users/role/:role',
169
+ 'users/cities': 'users/cities',
170
+ 'checkin': 'checkin',
171
+ 'cities': 'cities',
172
+ 'cities/country': 'cities/country/:country',
173
+ 'cities/currency': 'cities/currency/:currency',
174
+ 'cities/timezone': 'cities/timezone/:timezone',
175
+ 'cities/venues': 'cities/venues',
176
+ 'city': 'city/:city',
177
+ 'city/vk_group_token': 'city/:city/vk_group_token',
178
+ 'city/country': 'city/:city/country/:country',
179
+ 'city/currency': 'city/:city/currency/:currency',
180
+ 'city/timezone': 'city/:city/timezone/:timezone',
181
+ 'city/venue': 'city/:city/venue/:venue',
182
+ 'city/venues': 'city/:city/venues',
183
+ 'country': 'country/:country',
184
+ 'countries': 'countries',
185
+ 'currency': 'currency/:currency',
186
+ 'currencies': 'currencies',
187
+ 'timezone': 'timezone/:timezone',
188
+ 'timezones': 'timezones',
189
+ 'venue': 'venue/:venue',
190
+ 'venue/city': 'venue/:venue/city/:city',
191
+ 'venues': 'venues',
192
+ 'venues/city': 'venues/city/:city',
193
+ 'theme': 'theme/:theme',
194
+ 'theme/cover': 'theme/:theme/cover/:cover',
195
+ 'themes': 'themes',
196
+ 'themes/cover': 'themes/cover/:cover',
197
+ 'themes/games': 'themes/games',
198
+ 'game': 'game/:game',
199
+ 'game/city': 'game/:game/city/:city',
200
+ 'game/registration': 'game/:game/registration/:registration',
201
+ 'game/registrations': 'game/:game/registrations',
202
+ 'game/registrations/export': 'game/:game/registrations/export',
203
+ 'game/summary': 'game/:game/summary',
204
+ 'game/theme': 'game/:game/theme/:theme',
205
+ 'game/theme/cover': 'game/:game/theme/:theme/cover/:cover',
206
+ 'game/venue': 'game/:game/venue/:venue',
207
+ 'games': 'games',
208
+ 'games/city': 'games/city/:city',
209
+ 'games/registrations': 'games/registrations',
210
+ 'games/registrations/export': 'games/registrations/export',
211
+ 'games/summary': 'games/summary',
212
+ 'games/theme': 'games/theme/:theme',
213
+ 'games/theme/cover': 'games/theme/:theme/cover/:cover',
214
+ 'games/venue': 'games/venue/:venue',
215
+ 'registration': 'registration/:registration',
216
+ 'registration/cancellation': 'registration/:registration/cancellation',
217
+ 'registration/channel': 'registration/:registration/channel',
218
+ 'registration/confirmation': 'registration/:registration/confirmation',
219
+ 'registration/export': 'registration/:registration/export',
220
+ 'registration/city': 'registration/:registration/city/:city',
221
+ 'registration/game': 'registration/:registration/game/:game',
222
+ 'registration/game/theme': 'registration/:registration/game/:game/theme/:theme',
223
+ 'registration/game/theme/cover': 'registration/:registration/game/:game/theme/:theme/cover/:cover',
224
+ 'registration/game/venue': 'registration/:registration/game/:game/venue/:venue',
225
+ 'registration/mailing': 'registration/:registration/mailing',
226
+ 'registrations': 'registrations',
227
+ 'registrations/city': 'registrations/city/:city',
228
+ 'registrations/game': 'registrations/game/:game',
229
+ 'registrations/game/theme': 'registrations/game/:game/theme/:theme',
230
+ 'registrations/export': 'registrations/export',
231
+ }),
232
+ )
233
+
234
+ export const PathnameRoute = Object.freeze(
235
+ /** @type {const} */ ({
236
+ 'role/:role': 'role',
237
+ 'roles': 'roles',
238
+ 'user/:user': 'user',
239
+ 'user/:user/password': 'user/password',
240
+ 'user/:user/role/:role': 'user/role',
241
+ 'user/:user/city/:city': 'user/city',
242
+ 'user/:user/cities': 'user/cities',
243
+ 'users': 'users',
244
+ 'users/password': 'users/password',
245
+ 'users/role/:role': 'users/role',
246
+ 'users/cities': 'users/cities',
247
+ 'checkin': 'checkin',
248
+ 'cities': 'cities',
249
+ 'cities/country/:country': 'cities/country',
250
+ 'cities/currency/:currency': 'cities/currency',
251
+ 'cities/timezone/:timezone': 'cities/timezone',
252
+ 'cities/venues': 'cities/venues',
253
+ 'city/:city': 'city',
254
+ 'city/:city/vk_group_token': 'city/vk_group_token',
255
+ 'city/:city/country/:country': 'city/country',
256
+ 'city/:city/currency/:currency': 'city/currency',
257
+ 'city/:city/timezone/:timezone': 'city/timezone',
258
+ 'city/:city/venue/:venue': 'city/venue',
259
+ 'city/:city/venues': 'city/venues',
260
+ 'country/:country': 'country',
261
+ 'countries': 'countries',
262
+ 'currency/:currency': 'currency',
263
+ 'currencies': 'currencies',
264
+ 'timezone/:timezone': 'timezone',
265
+ 'timezones': 'timezones',
266
+ 'venue/:venue': 'venue',
267
+ 'venue/:venue/city/:city': 'venue/city',
268
+ 'venues': 'venues',
269
+ 'venues/city/:city': 'venues/city',
270
+ 'theme/:theme': 'theme',
271
+ 'theme/:theme/cover/:cover': 'theme/cover',
272
+ 'themes': 'themes',
273
+ 'themes/cover/:cover': 'themes/cover',
274
+ 'themes/games': 'themes/games',
275
+ 'game/:game': 'game',
276
+ 'game/:game/city/:city': 'game/city',
277
+ 'game/:game/registration/:registration': 'game/registration',
278
+ 'game/:game/registrations': 'game/registrations',
279
+ 'game/:game/registrations/export': 'game/registrations/export',
280
+ 'game/:game/summary': 'game/summary',
281
+ 'game/:game/theme/:theme': 'game/theme',
282
+ 'game/:game/theme/:theme/cover/:cover': 'game/theme/cover',
283
+ 'game/:game/venue/:venue': 'game/venue',
284
+ 'games': 'games',
285
+ 'games/city/:city': 'games/city',
286
+ 'games/registrations': 'games/registrations',
287
+ 'games/registrations/export': 'games/registrations/export',
288
+ 'games/summary': 'games/summary',
289
+ 'games/theme/:theme': 'games/theme',
290
+ 'games/theme/:theme/cover/:cover': 'games/theme/cover',
291
+ 'games/venue/:venue': 'games/venue',
292
+ 'registration/:registration': 'registration',
293
+ 'registration/:registration/cancellation': 'registration/cancellation',
294
+ 'registration/:registration/channel': 'registration/channel',
295
+ 'registration/:registration/confirmation': 'registration/confirmation',
296
+ 'registration/:registration/export': 'registration/export',
297
+ 'registration/:registration/city/:city': 'registration/city',
298
+ 'registration/:registration/game/:game': 'registration/game',
299
+ 'registration/:registration/game/:game/theme/:theme': 'registration/game/theme',
300
+ 'registration/:registration/game/:game/theme/:theme/cover/:cover': 'registration/game/theme/cover',
301
+ 'registration/:registration/game/:game/venue/:venue': 'registration/game/venue',
302
+ 'registration/:registration/mailing': 'registration/mailing',
303
+ 'registrations': 'registrations',
304
+ 'registrations/city/:city': 'registrations/city',
305
+ 'registrations/game/:game': 'registrations/game',
306
+ 'registrations/game/:game/theme/:theme': 'registrations/game/theme',
307
+ 'registrations/export': 'registrations/export',
308
+ }),
309
+ )
310
+
311
+ export const PathnameParameters = Object.freeze(
312
+ /** @type {const} */ ({
313
+ 'role/:role': [
314
+ ':role',
315
+ ],
316
+ 'roles': [],
317
+ 'user/:user': [
318
+ ':user',
319
+ ],
320
+ 'user/:user/password': [
321
+ ':user',
322
+ ],
323
+ 'user/:user/role/:role': [
324
+ ':user',
325
+ ':role',
326
+ ],
327
+ 'user/:user/city/:city': [
328
+ ':user',
329
+ ':city',
330
+ ],
331
+ 'user/:user/cities': [
332
+ ':user',
333
+ ],
334
+ 'users': [],
335
+ 'users/password': [],
336
+ 'users/role/:role': [
337
+ ':role',
338
+ ],
339
+ 'users/cities': [],
340
+ 'checkin': [],
341
+ 'cities': [],
342
+ 'cities/country/:country': [
343
+ ':country',
344
+ ],
345
+ 'cities/currency/:currency': [
346
+ ':currency',
347
+ ],
348
+ 'cities/timezone/:timezone': [
349
+ ':timezone',
350
+ ],
351
+ 'cities/venues': [],
352
+ 'city/:city': [
353
+ ':city',
354
+ ],
355
+ 'city/:city/vk_group_token': [
356
+ ':city',
357
+ ],
358
+ 'city/:city/country/:country': [
359
+ ':city',
360
+ ':country',
361
+ ],
362
+ 'city/:city/currency/:currency': [
363
+ ':city',
364
+ ':currency',
365
+ ],
366
+ 'city/:city/timezone/:timezone': [
367
+ ':city',
368
+ ':timezone',
369
+ ],
370
+ 'city/:city/venue/:venue': [
371
+ ':city',
372
+ ':venue',
373
+ ],
374
+ 'city/:city/venues': [
375
+ ':city',
376
+ ],
377
+ 'country/:country': [
378
+ ':country',
379
+ ],
380
+ 'countries': [],
381
+ 'currency/:currency': [
382
+ ':currency',
383
+ ],
384
+ 'currencies': [],
385
+ 'timezone/:timezone': [
386
+ ':timezone',
387
+ ],
388
+ 'timezones': [],
389
+ 'venue/:venue': [
390
+ ':venue',
391
+ ],
392
+ 'venue/:venue/city/:city': [
393
+ ':venue',
394
+ ':city',
395
+ ],
396
+ 'venues': [],
397
+ 'venues/city/:city': [
398
+ ':city',
399
+ ],
400
+ 'theme/:theme': [
401
+ ':theme',
402
+ ],
403
+ 'theme/:theme/cover/:cover': [
404
+ ':theme',
405
+ ':cover',
406
+ ],
407
+ 'themes': [],
408
+ 'themes/cover/:cover': [
409
+ ':cover',
410
+ ],
411
+ 'themes/games': [],
412
+ 'game/:game': [
413
+ ':game',
414
+ ],
415
+ 'game/:game/city/:city': [
416
+ ':game',
417
+ ':city',
418
+ ],
419
+ 'game/:game/registration/:registration': [
420
+ ':game',
421
+ ':registration',
422
+ ],
423
+ 'game/:game/registrations': [
424
+ ':game',
425
+ ],
426
+ 'game/:game/registrations/export': [
427
+ ':game',
428
+ ],
429
+ 'game/:game/summary': [
430
+ ':game',
431
+ ],
432
+ 'game/:game/theme/:theme': [
433
+ ':game',
434
+ ':theme',
435
+ ],
436
+ 'game/:game/theme/:theme/cover/:cover': [
437
+ ':game',
438
+ ':theme',
439
+ ':cover',
440
+ ],
441
+ 'game/:game/venue/:venue': [
442
+ ':game',
443
+ ':venue',
444
+ ],
445
+ 'games': [],
446
+ 'games/city/:city': [
447
+ ':city',
448
+ ],
449
+ 'games/registrations': [],
450
+ 'games/registrations/export': [],
451
+ 'games/summary': [],
452
+ 'games/theme/:theme': [
453
+ ':theme',
454
+ ],
455
+ 'games/theme/:theme/cover/:cover': [
456
+ ':theme',
457
+ ':cover',
458
+ ],
459
+ 'games/venue/:venue': [
460
+ ':venue',
461
+ ],
462
+ 'registration/:registration': [
463
+ ':registration',
464
+ ],
465
+ 'registration/:registration/cancellation': [
466
+ ':registration',
467
+ ],
468
+ 'registration/:registration/channel': [
469
+ ':registration',
470
+ ],
471
+ 'registration/:registration/confirmation': [
472
+ ':registration',
473
+ ],
474
+ 'registration/:registration/export': [
475
+ ':registration',
476
+ ],
477
+ 'registration/:registration/city/:city': [
478
+ ':registration',
479
+ ':city',
480
+ ],
481
+ 'registration/:registration/game/:game': [
482
+ ':registration',
483
+ ':game',
484
+ ],
485
+ 'registration/:registration/game/:game/theme/:theme': [
486
+ ':registration',
487
+ ':game',
488
+ ':theme',
489
+ ],
490
+ 'registration/:registration/game/:game/theme/:theme/cover/:cover': [
491
+ ':registration',
492
+ ':game',
493
+ ':theme',
494
+ ':cover',
495
+ ],
496
+ 'registration/:registration/game/:game/venue/:venue': [
497
+ ':registration',
498
+ ':game',
499
+ ':venue',
500
+ ],
501
+ 'registration/:registration/mailing': [
502
+ ':registration',
503
+ ],
504
+ 'registrations': [],
505
+ 'registrations/city/:city': [
506
+ ':city',
507
+ ],
508
+ 'registrations/game/:game': [
509
+ ':game',
510
+ ],
511
+ 'registrations/game/:game/theme/:theme': [
512
+ ':game',
513
+ ':theme',
514
+ ],
515
+ 'registrations/export': [],
516
+ }),
517
+ )
518
+
519
+ export const ParameterPattern = Object.freeze(
520
+ /** @type {const} */ ({
521
+ ':user': '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}',
522
+ ':role': '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}',
523
+ ':country': '[A-Z]{2}',
524
+ ':currency': '[A-Z]{3}',
525
+ ':timezone': '[A-Za-z]+\/(?:[A-Za-z]+(?:_[A-Za-z]+)?)+',
526
+ ':city': '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}',
527
+ ':venue': '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}',
528
+ ':theme': '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}',
529
+ ':cover': '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}',
530
+ ':game': '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}',
531
+ ':registration': '[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}',
532
+ }),
533
+ )
534
+
535
+ export const RouteBreakdown = Object.freeze(
536
+ /** @type {const} */ ({
537
+ 'role': 'role',
538
+ 'roles': 'role',
539
+ 'user': 'user',
540
+ 'user/password': 'user/password',
541
+ 'user/role': 'user/role',
542
+ 'user/city': 'user/city',
543
+ 'user/cities': 'user/cities',
544
+ 'users': 'user',
545
+ 'users/password': 'user/password',
546
+ 'users/role': 'user/role',
547
+ 'users/cities': 'user/cities',
548
+ 'checkin': 'checkin',
549
+ 'cities': 'city',
550
+ 'cities/country': 'city/country',
551
+ 'cities/currency': 'city/currency',
552
+ 'cities/timezone': 'city/timezone',
553
+ 'cities/venues': 'city/venues',
554
+ 'city': 'city',
555
+ 'city/vk_group_token': 'city/vk_group_token',
556
+ 'city/country': 'city/country',
557
+ 'city/currency': 'city/currency',
558
+ 'city/timezone': 'city/timezone',
559
+ 'city/venue': 'city/venue',
560
+ 'city/venues': 'city/venues',
561
+ 'country': 'country',
562
+ 'countries': 'country',
563
+ 'currency': 'currency',
564
+ 'currencies': 'currency',
565
+ 'timezone': 'timezone',
566
+ 'timezones': 'timezone',
567
+ 'venue': 'venue',
568
+ 'venue/city': 'venue/city',
569
+ 'venues': 'venue',
570
+ 'venues/city': 'venue/city',
571
+ 'theme': 'theme',
572
+ 'theme/cover': 'theme/cover',
573
+ 'themes': 'theme',
574
+ 'themes/cover': 'theme/cover',
575
+ 'themes/games': 'theme/games',
576
+ 'game': 'game',
577
+ 'game/city': 'game/city',
578
+ 'game/registration': 'game/registration',
579
+ 'game/registrations': 'game/registrations',
580
+ 'game/registrations/export': 'game/registrations/export',
581
+ 'game/summary': 'game/summary',
582
+ 'game/theme': 'game/theme',
583
+ 'game/theme/cover': 'game/theme/cover',
584
+ 'game/venue': 'game/venue',
585
+ 'games': 'game',
586
+ 'games/city': 'game/city',
587
+ 'games/registrations': 'game/registrations',
588
+ 'games/registrations/export': 'game/registrations/export',
589
+ 'games/summary': 'game/summary',
590
+ 'games/theme': 'game/theme',
591
+ 'games/theme/cover': 'game/theme/cover',
592
+ 'games/venue': 'game/venue',
593
+ 'registration': 'registration',
594
+ 'registration/cancellation': 'registration/cancellation',
595
+ 'registration/channel': 'registration/channel',
596
+ 'registration/confirmation': 'registration/confirmation',
597
+ 'registration/export': 'registration/export',
598
+ 'registration/city': 'registration/city',
599
+ 'registration/game': 'registration/game',
600
+ 'registration/game/theme': 'registration/game/theme',
601
+ 'registration/game/theme/cover': 'registration/game/theme/cover',
602
+ 'registration/game/venue': 'registration/game/venue',
603
+ 'registration/mailing': 'registration/mailing',
604
+ 'registrations': 'registration',
605
+ 'registrations/city': 'registration/city',
606
+ 'registrations/game': 'registration/game',
607
+ 'registrations/game/theme': 'registration/game/theme',
608
+ 'registrations/export': 'registration/export',
609
+ }),
610
+ )
611
+
612
+ export const RouteService = Object.freeze(
613
+ /** @type {const} */ ({
614
+ 'role': 'Roles',
615
+ 'roles': 'Roles',
616
+ 'user': 'Users',
617
+ 'user/password': 'Users',
618
+ 'user/role': 'Users',
619
+ 'user/city': 'Users',
620
+ 'user/cities': 'Users',
621
+ 'users': 'Users',
622
+ 'users/password': 'Users',
623
+ 'users/role': 'Users',
624
+ 'users/cities': 'Users',
625
+ 'checkin': 'Checkin',
626
+ 'cities': 'Cities',
627
+ 'cities/country': 'Cities',
628
+ 'cities/currency': 'Cities',
629
+ 'cities/timezone': 'Cities',
630
+ 'cities/venues': 'Cities',
631
+ 'city': 'Cities',
632
+ 'city/vk_group_token': 'Cities',
633
+ 'city/country': 'Cities',
634
+ 'city/currency': 'Cities',
635
+ 'city/timezone': 'Cities',
636
+ 'city/venue': 'Cities',
637
+ 'city/venues': 'Cities',
638
+ 'country': 'Locations',
639
+ 'countries': 'Locations',
640
+ 'currency': 'Locations',
641
+ 'currencies': 'Locations',
642
+ 'timezone': 'Locations',
643
+ 'timezones': 'Locations',
644
+ 'venue': 'Venues',
645
+ 'venue/city': 'Venues',
646
+ 'venues': 'Venues',
647
+ 'venues/city': 'Venues',
648
+ 'theme': 'Themes',
649
+ 'theme/cover': 'Themes',
650
+ 'themes': 'Themes',
651
+ 'themes/cover': 'Themes',
652
+ 'themes/games': 'Themes',
653
+ 'game': 'Games',
654
+ 'game/city': 'Games',
655
+ 'game/registration': 'Games',
656
+ 'game/registrations': 'Games',
657
+ 'game/registrations/export': 'Games',
658
+ 'game/summary': 'Games',
659
+ 'game/theme': 'Games',
660
+ 'game/theme/cover': 'Games',
661
+ 'game/venue': 'Games',
662
+ 'games': 'Games',
663
+ 'games/city': 'Games',
664
+ 'games/registrations': 'Games',
665
+ 'games/registrations/export': 'Games',
666
+ 'games/summary': 'Games',
667
+ 'games/theme': 'Games',
668
+ 'games/theme/cover': 'Games',
669
+ 'games/venue': 'Games',
670
+ 'registration': 'Registrations',
671
+ 'registration/cancellation': 'Registrations',
672
+ 'registration/channel': 'Registrations',
673
+ 'registration/confirmation': 'Registrations',
674
+ 'registration/export': 'Registrations',
675
+ 'registration/city': 'Registrations',
676
+ 'registration/game': 'Registrations',
677
+ 'registration/game/theme': 'Registrations',
678
+ 'registration/game/theme/cover': 'Registrations',
679
+ 'registration/game/venue': 'Registrations',
680
+ 'registration/mailing': 'Registrations',
681
+ 'registrations': 'Registrations',
682
+ 'registrations/city': 'Registrations',
683
+ 'registrations/game': 'Registrations',
684
+ 'registrations/game/theme': 'Registrations',
685
+ 'registrations/export': 'Registrations',
686
+ }),
687
+ )
688
+
689
+ export const ServiceRoutes = Object.freeze(
690
+ /** @type {const} */ ({
691
+ 'Roles': [
692
+ 'role',
693
+ 'roles',
694
+ ],
695
+ 'Users': [
696
+ 'user',
697
+ 'user/password',
698
+ 'user/role',
699
+ 'user/city',
700
+ 'user/cities',
701
+ 'users',
702
+ 'users/password',
703
+ 'users/role',
704
+ 'users/cities',
705
+ ],
706
+ 'Checkin': [
707
+ 'checkin',
708
+ ],
709
+ 'Cities': [
710
+ 'cities',
711
+ 'cities/country',
712
+ 'cities/currency',
713
+ 'cities/timezone',
714
+ 'cities/venues',
715
+ 'city',
716
+ 'city/vk_group_token',
717
+ 'city/country',
718
+ 'city/currency',
719
+ 'city/timezone',
720
+ 'city/venue',
721
+ 'city/venues',
722
+ ],
723
+ 'Locations': [
724
+ 'country',
725
+ 'countries',
726
+ 'currency',
727
+ 'currencies',
728
+ 'timezone',
729
+ 'timezones',
730
+ ],
731
+ 'Venues': [
732
+ 'venue',
733
+ 'venue/city',
734
+ 'venues',
735
+ 'venues/city',
736
+ ],
737
+ 'Themes': [
738
+ 'theme',
739
+ 'theme/cover',
740
+ 'themes',
741
+ 'themes/cover',
742
+ 'themes/games',
743
+ ],
744
+ 'Games': [
745
+ 'game',
746
+ 'game/city',
747
+ 'game/registration',
748
+ 'game/registrations',
749
+ 'game/registrations/export',
750
+ 'game/summary',
751
+ 'game/theme',
752
+ 'game/theme/cover',
753
+ 'game/venue',
754
+ 'games',
755
+ 'games/city',
756
+ 'games/registrations',
757
+ 'games/registrations/export',
758
+ 'games/summary',
759
+ 'games/theme',
760
+ 'games/theme/cover',
761
+ 'games/venue',
762
+ ],
763
+ 'Registrations': [
764
+ 'registration',
765
+ 'registration/cancellation',
766
+ 'registration/channel',
767
+ 'registration/confirmation',
768
+ 'registration/export',
769
+ 'registration/city',
770
+ 'registration/game',
771
+ 'registration/game/theme',
772
+ 'registration/game/theme/cover',
773
+ 'registration/game/venue',
774
+ 'registration/mailing',
775
+ 'registrations',
776
+ 'registrations/city',
777
+ 'registrations/game',
778
+ 'registrations/game/theme',
779
+ 'registrations/export',
780
+ ],
781
+ }),
782
+ )