@shakerquiz/utilities 0.5.222 → 0.6.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.
Files changed (70) hide show
  1. package/package.json +3 -5
  2. package/source/entities/blend.js +5 -0
  3. package/source/entities/cardinality-routes.js +82 -0
  4. package/source/entities/cardinality.js +8 -0
  5. package/source/entities/category.js +4 -0
  6. package/source/entities/city-affilation.js +16 -0
  7. package/source/entities/city-chatapp-version.js +9 -0
  8. package/source/entities/game-status.js +110 -0
  9. package/source/{enumerations → entities}/gender.js +7 -0
  10. package/source/entities/icon.js +654 -0
  11. package/source/entities/method.js +22 -0
  12. package/source/entities/mode.js +14 -0
  13. package/source/entities/network.js +9 -0
  14. package/source/entities/numerosity.js +5 -0
  15. package/source/entities/phase.js +23 -0
  16. package/source/entities/quantifier.js +41 -0
  17. package/source/entities/registration-attribute.js +68 -0
  18. package/source/entities/registration-channel.js +17 -0
  19. package/source/entities/registration-lineup.js +19 -0
  20. package/source/entities/registration-mailing.js +20 -0
  21. package/source/{enumerations/registration/status.js → entities/registration-status.js} +1 -13
  22. package/source/entities/role.js +25 -0
  23. package/source/entities/route-cardinality-route.js +112 -0
  24. package/source/entities/route-cardinality.js +175 -0
  25. package/source/entities/route-pathname-params.js +12 -0
  26. package/source/entities/route-pathname.js +70 -0
  27. package/source/entities/route-service.js +65 -0
  28. package/source/entities/route.js +70 -0
  29. package/source/entities/service-routes.js +34 -0
  30. package/source/entities/service-runtime.js +22 -0
  31. package/source/entities/service.js +39 -0
  32. package/source/entities/theme-status.js +14 -0
  33. package/source/entities/venue-audience.js +14 -0
  34. package/source/entities/venue-status.js +15 -0
  35. package/source/helpers/hydrate-route-pathname.js +32 -0
  36. package/source/helpers/string-tag.js +7 -0
  37. package/source/helpers/tag.js +37 -0
  38. package/source/index.js +41 -38
  39. package/source/prototypes/reflection.js +53 -0
  40. package/source/enumerations/blend.js +0 -11
  41. package/source/enumerations/cardinality.js +0 -13
  42. package/source/enumerations/category.js +0 -9
  43. package/source/enumerations/entities/affilation.js +0 -29
  44. package/source/enumerations/entities/game-status.js +0 -122
  45. package/source/enumerations/entities/registration-attribute.js +0 -83
  46. package/source/enumerations/entities/registration-channel.js +0 -26
  47. package/source/enumerations/entities/registration-mailing.js +0 -24
  48. package/source/enumerations/entities/role.js +0 -40
  49. package/source/enumerations/entities/version.js +0 -23
  50. package/source/enumerations/icon.js +0 -655
  51. package/source/enumerations/method.js +0 -31
  52. package/source/enumerations/mode.js +0 -48
  53. package/source/enumerations/network.js +0 -9
  54. package/source/enumerations/numerosity.js +0 -5
  55. package/source/enumerations/phase.js +0 -31
  56. package/source/enumerations/quantifier.js +0 -87
  57. package/source/enumerations/registration/lineup.js +0 -33
  58. package/source/enumerations/route.js +0 -515
  59. package/source/enumerations/service.js +0 -62
  60. package/source/enumerations/theme/status.js +0 -27
  61. package/source/enumerations/venue/audience.js +0 -27
  62. package/source/enumerations/venue/status.js +0 -27
  63. package/source/functions/hydrate-route-params.js +0 -18
  64. package/source/functions/hydrate-route-pathname.js +0 -26
  65. package/source/functions/string-tag.js +0 -5
  66. package/source/functions/tag.js +0 -37
  67. /package/source/{enumerations → entities}/constants.js +0 -0
  68. /package/source/{enumerations → entities}/display.js +0 -0
  69. /package/source/{enumerations → entities}/pattern.js +0 -0
  70. /package/source/{enumerations → entities}/runtime.js +0 -0
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Related specifications:
3
+ * - HTTP/1.1 (Core Methods): {@link https://datatracker.ietf.org/doc/html/rfc7231#section-4.3}
4
+ * - PATCH: {@link https://datatracker.ietf.org/doc/html/rfc5789}
5
+ */
6
+ export const Method = Object.freeze({
7
+ 'DELETE': 'DELETE',
8
+ 'GET': 'GET',
9
+ 'OPTIONS': 'OPTIONS',
10
+ 'PATCH': 'PATCH',
11
+ 'POST': 'POST',
12
+ 'PUT': 'PUT',
13
+ })
14
+
15
+ export const Methods = Object.freeze([
16
+ 'DELETE',
17
+ 'GET',
18
+ 'OPTIONS',
19
+ 'PATCH',
20
+ 'POST',
21
+ 'PUT',
22
+ ])
@@ -0,0 +1,14 @@
1
+ export const Mode = Object.freeze({
2
+ 'Known': 'Known',
3
+ 'Unknown': 'Unknown',
4
+ })
5
+
6
+ export const Modes = Object.freeze([
7
+ 'Known',
8
+ 'Unknown',
9
+ ])
10
+
11
+ export const ModeIcon = Object.freeze({
12
+ 'Known': 'hero/outline/check',
13
+ 'Unknown': 'hero/outline/no-symbol',
14
+ })
@@ -0,0 +1,9 @@
1
+ export const Network = Object.freeze({
2
+ 'Docker': 'Docker',
3
+ 'Public': 'Public',
4
+ })
5
+
6
+ export const Networks = Object.freeze([
7
+ 'Docker',
8
+ 'Public',
9
+ ])
@@ -0,0 +1,5 @@
1
+ export const Numerosity = Object.freeze({
2
+ 'Singular': 'Singular',
3
+ 'Dual': 'Dual',
4
+ 'Plural': 'Plural',
5
+ })
@@ -0,0 +1,23 @@
1
+ export const Phase = Object.freeze({
2
+ 'Idle': 'Idle',
3
+ 'Loading': 'Loading',
4
+ 'Loaded': 'Loaded',
5
+ 'Aborted': 'Aborted',
6
+ 'Failed': 'Failed',
7
+ })
8
+
9
+ export const Phases = Object.freeze([
10
+ 'Idle',
11
+ 'Loading',
12
+ 'Loaded',
13
+ 'Aborted',
14
+ 'Failed',
15
+ ])
16
+
17
+ export const PhaseIcon = Object.freeze({
18
+ 'Idle': 'hero/outline/clock',
19
+ 'Loading': 'hero/outline/clock',
20
+ 'Loaded': 'hero/outline/check',
21
+ 'Aborted': 'hero/outline/signal-slash',
22
+ 'Failed': 'hero/outline/x-mark',
23
+ })
@@ -0,0 +1,41 @@
1
+ export const Quantifier = Object.freeze({
2
+ 'Any': 'Any',
3
+ 'None': 'None',
4
+ 'Single': 'Single',
5
+ 'Many': 'Many',
6
+ 'All': 'All',
7
+ })
8
+
9
+ export const Quantifiers = Object.freeze([
10
+ 'Any',
11
+ 'None',
12
+ 'Single',
13
+ 'Many',
14
+ 'All',
15
+ ])
16
+
17
+ export const QuantifierQuantifiers = Object.freeze({
18
+ 'Any': Object.freeze([
19
+ 'Any',
20
+ 'None',
21
+ 'Single',
22
+ 'Many',
23
+ 'All',
24
+ ]),
25
+
26
+ 'None': Object.freeze([
27
+ 'None',
28
+ ]),
29
+
30
+ 'Single': Object.freeze([
31
+ 'Single',
32
+ ]),
33
+
34
+ 'Many': Object.freeze([
35
+ 'Many',
36
+ ]),
37
+
38
+ 'All': Object.freeze([
39
+ 'All',
40
+ ]),
41
+ })
@@ -0,0 +1,68 @@
1
+ // import { toStringTag } from '../helpers/string-tag.js'
2
+
3
+ export const RegistrationAttribute = Object.freeze({
4
+ 'Alone': 'Alone',
5
+ 'Newcomer': 'Newcomer',
6
+ 'Birthday': 'Birthday',
7
+ 'Public': 'Public',
8
+ })
9
+
10
+ export const RegistrationAttributes = Object.freeze(Object.values(RegistrationAttribute))
11
+
12
+ export const RegistrationAttributeIcon = Object.freeze({
13
+ [RegistrationAttribute.Alone]: 'hero/outline/user',
14
+ [RegistrationAttribute.Newcomer]: 'hero/outline/sparkles',
15
+ [RegistrationAttribute.Birthday]: 'hero/outline/cake',
16
+ [RegistrationAttribute.Public]: 'hero/outline/user-plus',
17
+ })
18
+
19
+ export const RegistrationAttributeEmoji = Object.freeze({
20
+ [RegistrationAttribute.Alone]: '👤',
21
+ [RegistrationAttribute.Newcomer]: '✨',
22
+ [RegistrationAttribute.Birthday]: '🎂',
23
+ [RegistrationAttribute.Public]: '🫂',
24
+ })
25
+
26
+ // export var RegistrationAttributeRegistrationProperty = /** @type {const} */ ({
27
+ // [RegistrationAttribute.Alone]: 'is_alone',
28
+ // [RegistrationAttribute.Newcomer]: 'is_first',
29
+ // [RegistrationAttribute.Birthday]: 'is_birthday',
30
+ // [RegistrationAttribute.Public]: 'is_extensible',
31
+ // })
32
+
33
+ // export var RegistrationAttributeRegistrationProperties = Object.values(RegistrationAttributeRegistrationProperty)
34
+
35
+ // export var RegistrationPropertyRegistrationAttribute = {
36
+ // [RegistrationAttributeRegistrationProperty[RegistrationAttribute.Alone]]: RegistrationAttribute.Alone,
37
+ // [RegistrationAttributeRegistrationProperty[RegistrationAttribute.Newcomer]]: RegistrationAttribute.Newcomer,
38
+ // [RegistrationAttributeRegistrationProperty[RegistrationAttribute.Birthday]]: RegistrationAttribute.Birthday,
39
+ // [RegistrationAttributeRegistrationProperty[RegistrationAttribute.Public]]: RegistrationAttribute.Public,
40
+ // }
41
+
42
+ // /**
43
+ // * @param {RegistrationAttribute[] | Partial<Pick<RegistrationTable, 'is_alone' | 'is_birthday' | 'is_extensible' | 'is_first'>>} value
44
+ // */
45
+ // export var getRegistrationAttributes = value => {
46
+ // switch (toStringTag(value)) {
47
+ // case 'Object':
48
+ // return RegistrationAttributeRegistrationProperties
49
+ // .map(property => value[property] ? RegistrationPropertyRegistrationAttribute[property] : '')
50
+ // .filter(Boolean)
51
+
52
+ // case 'Array':
53
+ // if (!value.every(attribute => RegistrationAttributes.includes(attribute)))
54
+ // throw TypeError(
55
+ // `[Function: getRegistrationAttributes] Parameter 'value': '${value}' of type 'Array' must include only members of 'RegistrationAttributes'.`,
56
+ // )
57
+
58
+ // return value.reduce((attributes, attribute) => {
59
+ // attributes[RegistrationAttributeRegistrationProperty[attribute]] = true
60
+ // return attributes
61
+ // }, {})
62
+
63
+ // default:
64
+ // throw TypeError(
65
+ // `[Function: getRegistrationAttributes] Parameter 'value': '${value}' must be of types: 'Object', 'Array'.`,
66
+ // )
67
+ // }
68
+ // }
@@ -0,0 +1,17 @@
1
+ export const RegistrationChannel = Object.freeze({
2
+ 'vkontakte': 'vkontakte',
3
+ 'telegramBot': 'telegramBot',
4
+ 'email': 'email',
5
+ })
6
+
7
+ export const RegistrationChannels = Object.freeze([
8
+ 'vkontakte',
9
+ 'telegramBot',
10
+ 'email',
11
+ ])
12
+
13
+ export const RegistrationChannelIcon = Object.freeze({
14
+ 'vkontakte': 'brand/solid/vk',
15
+ 'telegramBot': 'brand/solid/telegram',
16
+ 'email': 'hero/solid/at-symbol',
17
+ })
@@ -0,0 +1,19 @@
1
+ export const RegistrationLineup = Object.freeze({
2
+ 'Main': 'Main',
3
+ 'Reserve': 'Reserve',
4
+ })
5
+
6
+ export const RegistrationLineups = Object.freeze([
7
+ 'Main',
8
+ 'Reserve',
9
+ ])
10
+
11
+ export const RegistrationLineupIcon = Object.freeze({
12
+ 'Main': 'hero/outline/user-circle',
13
+ 'Reserve': 'hero/outline/pause-circle',
14
+ })
15
+
16
+ export const RegistrationLineupEmoji = Object.freeze({
17
+ 'Main': '🟢',
18
+ 'Reserve': '🟡',
19
+ })
@@ -0,0 +1,20 @@
1
+ export const RegistrationMailing = Object.freeze({
2
+ 'Idle': 'Idle',
3
+ 'Pending': 'Pending',
4
+ 'Delivered': 'Delivered',
5
+ 'Failed': 'Failed',
6
+ })
7
+
8
+ export const RegistrationMailings = Object.freeze([
9
+ 'Idle',
10
+ 'Pending',
11
+ 'Delivered',
12
+ 'Failed',
13
+ ])
14
+
15
+ export const RegistrationMailingColor = Object.freeze({
16
+ 'Idle': 'default',
17
+ 'Pending': 'warning',
18
+ 'Delivered': 'success',
19
+ 'Failed': 'danger',
20
+ })
@@ -1,6 +1,6 @@
1
1
  export const RegistrationStatus = Object.freeze({
2
- 'Confirmed': 'Confirmed',
3
2
  'Created': 'Created',
3
+ 'Confirmed': 'Confirmed',
4
4
  'Cancelled': 'Cancelled',
5
5
  })
6
6
 
@@ -11,13 +11,6 @@ export const RegistrationStatuses = Object.freeze([
11
11
  'Cancelled',
12
12
  ])
13
13
 
14
- /** @satisfies {Record<keyof typeof RegistrationStatus, string>} */
15
- export const RegistrationStatusTitle = Object.freeze({
16
- 'Confirmed': 'Подтверждена',
17
- 'Created': 'Создана',
18
- 'Cancelled': 'Отменена',
19
- })
20
-
21
14
  /** @satisfies {Record<keyof typeof RegistrationStatus, string>} */
22
15
  export const RegistrationStatusIcon = Object.freeze({
23
16
  'Confirmed': 'hero/outline/check-circle',
@@ -31,8 +24,3 @@ export const RegistrationStatusEmoji = Object.freeze({
31
24
  'Created': '📝',
32
25
  'Cancelled': '❌',
33
26
  })
34
-
35
- export const inferRegistrationStatus = Object.freeze(
36
- /** @returns {keyof typeof RegistrationStatus | 'Unknown'} */
37
- x => RegistrationStatus[x?.status ?? x] ?? 'Unknown',
38
- )
@@ -0,0 +1,25 @@
1
+ export const Role = Object.freeze({
2
+ 'admin': 'admin',
3
+ 'organizer': 'organizer',
4
+ 'captain': 'captain',
5
+ 'player': 'player',
6
+ 'user': 'user',
7
+ 'manager': 'manager',
8
+ })
9
+
10
+ export const Roles = Object.freeze([
11
+ 'admin',
12
+ 'captain',
13
+ 'player',
14
+ 'user',
15
+ 'manager',
16
+ ])
17
+
18
+ export const RoleIcon = Object.freeze({
19
+ 'admin': 'hero/outline/user',
20
+ 'organizer': 'hero/outline/user',
21
+ 'captain': 'hero/outline/user',
22
+ 'player': 'hero/outline/user',
23
+ 'user': 'hero/outline/user',
24
+ 'manager': 'hero/outline/user',
25
+ })
@@ -0,0 +1,112 @@
1
+ import { Cardinality } from './cardinality.js'
2
+ import { Route } from './route.js'
3
+
4
+ export const RouteCardinalityRoute = Object.freeze({
5
+ [Route['cities']]: {
6
+ [Cardinality['1']]: Route['city'],
7
+ },
8
+
9
+ [Route['cities/country']]: {
10
+ [Cardinality['1-1']]: Route['city/country'],
11
+ },
12
+
13
+ [Route['cities/currency']]: {
14
+ [Cardinality['1-1']]: Route['city/currency'],
15
+ },
16
+
17
+ [Route['cities/timezone']]: {
18
+ [Cardinality['1-1']]: Route['city/timezone'],
19
+ },
20
+
21
+ [Route['cities/venues']]: {
22
+ [Cardinality['1-N']]: Route['city/venues'],
23
+ },
24
+
25
+ [Route['countries']]: {
26
+ [Cardinality['1']]: Route['country'],
27
+ },
28
+
29
+ [Route['currencies']]: {
30
+ [Cardinality['1']]: Route['currency'],
31
+ },
32
+
33
+ [Route['games']]: {
34
+ [Cardinality['1']]: Route['game'],
35
+ },
36
+
37
+ [Route['games/city']]: {
38
+ [Cardinality['1-1']]: Route['game/city'],
39
+ },
40
+
41
+ [Route['games/registrations']]: {
42
+ [Cardinality['1']]: Route['game/registrations'],
43
+ },
44
+
45
+ [Route['games/summary']]: {
46
+ [Cardinality['1']]: Route['game/summary'],
47
+ },
48
+
49
+ [Route['games/theme']]: {
50
+ [Cardinality['1-1']]: Route['game/theme'],
51
+ },
52
+
53
+ [Route['games/venue']]: {
54
+ [Cardinality['1-1']]: Route['game/venue'],
55
+ },
56
+
57
+ [Route['registrations']]: {
58
+ [Cardinality['1']]: Route['registration'],
59
+ },
60
+
61
+ [Route['registrations/city']]: {
62
+ [Cardinality['1-1']]: Route['registration/city'],
63
+ },
64
+
65
+ [Route['registrations/game']]: {
66
+ [Cardinality['1-1']]: Route['registration/game'],
67
+ },
68
+
69
+ [Route['registrations/game/theme']]: {
70
+ [Cardinality['1-1']]: Route['registration/game/theme'],
71
+ },
72
+
73
+ [Route['roles']]: {
74
+ [Cardinality['1']]: Route['role'],
75
+ },
76
+
77
+ [Route['themes']]: {
78
+ [Cardinality['1']]: Route['theme'],
79
+ },
80
+
81
+ [Route['themes/cover']]: {
82
+ [Cardinality['1']]: Route['theme/cover'],
83
+ },
84
+
85
+ [Route['timezones']]: {
86
+ [Cardinality['1']]: Route['timezone'],
87
+ },
88
+
89
+ [Route['user/cities']]: {
90
+ [Cardinality['1']]: Route['user/cities'],
91
+ },
92
+
93
+ [Route['users']]: {
94
+ [Cardinality['1']]: Route['user'],
95
+ },
96
+
97
+ [Route['users/cities']]: {
98
+ [Cardinality['1']]: Route['user/cities'],
99
+ },
100
+
101
+ [Route['users/role']]: {
102
+ [Cardinality['1']]: Route['user/role'],
103
+ },
104
+
105
+ [Route['venues']]: {
106
+ [Cardinality['1']]: Route['venue'],
107
+ },
108
+
109
+ [Route['venues/city']]: {
110
+ [Cardinality['1']]: Route['venue/city'],
111
+ },
112
+ })
@@ -0,0 +1,175 @@
1
+ import { Cardinality } from './cardinality.js'
2
+ import { Route } from './route.js'
3
+
4
+ export const RouteCardinality = Object.freeze({
5
+ [Route['checkin']]: Cardinality['1'],
6
+ [Route['cities']]: Cardinality['N'],
7
+ [Route['cities/country']]: Cardinality['N-1'],
8
+ [Route['cities/currency']]: Cardinality['N-1'],
9
+ [Route['cities/timezone']]: Cardinality['N-1'],
10
+ [Route['cities/venues']]: Cardinality['N-N'],
11
+ [Route['city']]: Cardinality['1'],
12
+ [Route['city/country']]: Cardinality['1-1'],
13
+ [Route['city/currency']]: Cardinality['1-1'],
14
+ [Route['city/timezone']]: Cardinality['1-1'],
15
+ [Route['city/venue']]: Cardinality['1-1'],
16
+ [Route['city/venues']]: Cardinality['1-N'],
17
+ [Route['countries']]: Cardinality['N'],
18
+ [Route['country']]: Cardinality['1'],
19
+ [Route['currencies']]: Cardinality['N'],
20
+ [Route['currency']]: Cardinality['1'],
21
+ [Route['game']]: Cardinality['1'],
22
+ [Route['game/city']]: Cardinality['1-1'],
23
+ [Route['game/registration']]: Cardinality['1-1'],
24
+ [Route['game/registrations']]: Cardinality['1-N'],
25
+ [Route['game/registrations/export']]: Cardinality['1'],
26
+ [Route['game/summary']]: Cardinality['1-1'],
27
+ [Route['game/theme']]: Cardinality['1-1'],
28
+ [Route['game/venue']]: Cardinality['1-1'],
29
+ [Route['games']]: Cardinality['N'],
30
+ [Route['games/city']]: Cardinality['N-1'],
31
+ [Route['games/registrations']]: Cardinality['N-N'],
32
+ [Route['games/registrations/export']]: Cardinality['1'],
33
+ [Route['games/summary']]: Cardinality['N-1'],
34
+ [Route['games/theme']]: Cardinality['N-1'],
35
+ [Route['games/venue']]: Cardinality['N-1'],
36
+ [Route['registration']]: Cardinality['1'],
37
+ [Route['registration/city']]: Cardinality['1-1'],
38
+ [Route['registration/game/theme']]: Cardinality['1-1'],
39
+ [Route['registration/export']]: Cardinality['1'],
40
+ [Route['registrations']]: Cardinality['N'],
41
+ [Route['registrations/city']]: Cardinality['N-1'],
42
+ [Route['registrations/game']]: Cardinality['N-1'],
43
+ [Route['registrations/game/theme']]: Cardinality['N-1'],
44
+ [Route['registrations/export']]: Cardinality['1'],
45
+ [Route['role']]: Cardinality['1'],
46
+ [Route['roles']]: Cardinality['N'],
47
+ [Route['theme']]: Cardinality['1'],
48
+ [Route['theme/cover']]: Cardinality['1-1'],
49
+ [Route['themes']]: Cardinality['N'],
50
+ [Route['themes/cover']]: Cardinality['N-1'],
51
+ [Route['timezone']]: Cardinality['1'],
52
+ [Route['timezones']]: Cardinality['N'],
53
+ [Route['user']]: Cardinality['1'],
54
+ [Route['user/cities']]: Cardinality['1-N'],
55
+ [Route['user/city']]: Cardinality['1-1'],
56
+ [Route['user/password']]: Cardinality['1-1'],
57
+ [Route['user/role']]: Cardinality['1-1'],
58
+ [Route['users']]: Cardinality['N'],
59
+ [Route['users/cities']]: Cardinality['N-N'],
60
+ [Route['users/role']]: Cardinality['N-1'],
61
+ [Route['venue']]: Cardinality['1'],
62
+ [Route['venue/city']]: Cardinality['1-1'],
63
+ [Route['venues']]: Cardinality['N'],
64
+ [Route['venues/city']]: Cardinality['N-1'],
65
+ })
66
+
67
+ export const RouteCardinalityRoute = Object.freeze({
68
+ [Route['cities']]: {
69
+ [Cardinality['1']]: Route['city'],
70
+ },
71
+
72
+ [Route['cities/country']]: {
73
+ [Cardinality['1-1']]: Route['city/country'],
74
+ },
75
+
76
+ [Route['cities/currency']]: {
77
+ [Cardinality['1-1']]: Route['city/currency'],
78
+ },
79
+
80
+ [Route['cities/timezone']]: {
81
+ [Cardinality['1-1']]: Route['city/timezone'],
82
+ },
83
+
84
+ [Route['cities/venues']]: {
85
+ [Cardinality['1-N']]: Route['city/venues'],
86
+ },
87
+
88
+ [Route['countries']]: {
89
+ [Cardinality['1']]: Route['country'],
90
+ },
91
+
92
+ [Route['currencies']]: {
93
+ [Cardinality['1']]: Route['currency'],
94
+ },
95
+
96
+ [Route['games']]: {
97
+ [Cardinality['1']]: Route['game'],
98
+ },
99
+
100
+ [Route['games/city']]: {
101
+ [Cardinality['1-1']]: Route['game/city'],
102
+ },
103
+
104
+ [Route['games/registrations']]: {
105
+ [Cardinality['1']]: Route['game/registrations'],
106
+ },
107
+
108
+ [Route['games/summary']]: {
109
+ [Cardinality['1']]: Route['game/summary'],
110
+ },
111
+
112
+ [Route['games/theme']]: {
113
+ [Cardinality['1-1']]: Route['game/theme'],
114
+ },
115
+
116
+ [Route['games/venue']]: {
117
+ [Cardinality['1-1']]: Route['game/venue'],
118
+ },
119
+
120
+ [Route['registrations']]: {
121
+ [Cardinality['1']]: Route['registration'],
122
+ },
123
+
124
+ [Route['registrations/city']]: {
125
+ [Cardinality['1-1']]: Route['registration/city'],
126
+ },
127
+
128
+ [Route['registrations/game']]: {
129
+ [Cardinality['1-1']]: Route['registration/game'],
130
+ },
131
+
132
+ [Route['registrations/game/theme']]: {
133
+ [Cardinality['1-1']]: Route['registration/game/theme'],
134
+ },
135
+
136
+ [Route['roles']]: {
137
+ [Cardinality['1']]: Route['role'],
138
+ },
139
+
140
+ [Route['themes']]: {
141
+ [Cardinality['1']]: Route['theme'],
142
+ },
143
+
144
+ [Route['themes/cover']]: {
145
+ [Cardinality['1']]: Route['theme/cover'],
146
+ },
147
+
148
+ [Route['timezones']]: {
149
+ [Cardinality['1']]: Route['timezone'],
150
+ },
151
+
152
+ [Route['user/cities']]: {
153
+ [Cardinality['1']]: Route['user/cities'],
154
+ },
155
+
156
+ [Route['users']]: {
157
+ [Cardinality['1']]: Route['user'],
158
+ },
159
+
160
+ [Route['users/cities']]: {
161
+ [Cardinality['1']]: Route['user/cities'],
162
+ },
163
+
164
+ [Route['users/role']]: {
165
+ [Cardinality['1']]: Route['user/role'],
166
+ },
167
+
168
+ [Route['venues']]: {
169
+ [Cardinality['1']]: Route['venue'],
170
+ },
171
+
172
+ [Route['venues/city']]: {
173
+ [Cardinality['1']]: Route['venue/city'],
174
+ },
175
+ })
@@ -0,0 +1,12 @@
1
+ import { RoutePathname } from './route-pathname.js'
2
+ import { Route } from './route.js'
3
+
4
+ export const RoutePathnameParams = (() => {
5
+ /** @type {Record<keyof typeof Route, string[]>} */
6
+ let object = {}
7
+
8
+ for (const route in RoutePathname)
9
+ object[route] = RoutePathname[route].match(/(:(\w)+)/g)
10
+
11
+ return Object.freeze(object)
12
+ })()
@@ -0,0 +1,70 @@
1
+ import { Route } from './route.js'
2
+
3
+ export const RoutePathname = Object.freeze({
4
+ [Route['checkin']]: 'checkin',
5
+ [Route['cities']]: 'cities',
6
+ [Route['cities/country']]: 'cities/country',
7
+ [Route['cities/currency']]: 'cities/currency',
8
+ [Route['cities/timezone']]: 'cities/timezone',
9
+ [Route['cities/venues']]: 'cities/venues',
10
+ [Route['city']]: 'city/:city',
11
+ [Route['city/country']]: 'city/:city/country',
12
+ [Route['city/currency']]: 'city/:city/currency',
13
+ [Route['city/timezone']]: 'city/:city/timezone',
14
+ [Route['city/venue']]: 'city/:city/venue/:venue',
15
+ [Route['city/venues']]: 'city/:city/venues',
16
+ [Route['countries']]: 'countries',
17
+ [Route['country']]: 'country/:country',
18
+ [Route['currencies']]: 'currencies',
19
+ [Route['currency']]: 'currency/:currency',
20
+ [Route['game']]: 'game/:game',
21
+ [Route['game/city']]: 'game/:game/city',
22
+ [Route['game/registration']]: 'game/:game/registration/:registration',
23
+ [Route['game/registrations']]: 'game/:game/registrations',
24
+ [Route['game/registrations/export']]: 'game/:game/registrations/export',
25
+ [Route['game/summary']]: 'game/:game/summary',
26
+ [Route['game/theme']]: 'game/:game/theme',
27
+ [Route['game/venue']]: 'game/:game/venue',
28
+ [Route['games']]: 'games',
29
+ [Route['games/city']]: 'games/city',
30
+ [Route['games/registrations']]: 'games/registrations',
31
+ [Route['games/registrations/export']]: 'games/registrations/export',
32
+ [Route['games/summary']]: 'games/summary',
33
+ [Route['games/theme']]: 'games/theme',
34
+ [Route['games/venue']]: 'games/venue',
35
+ [Route['registration']]: 'registration/:registration',
36
+ [Route['registration/cancellation']]: 'registration/:registration/cancellation',
37
+ [Route['registration/channel']]: 'registration/:registration/channel',
38
+ [Route['registration/confirmation']]: 'registration/:registration/confirmation',
39
+ [Route['registration/export']]: 'registration/:registration/export',
40
+ [Route['registration/city']]: 'registration/:registration/city',
41
+ [Route['registration/game']]: 'registration/:registration/game',
42
+ [Route['registration/game/theme']]: 'registration/:registration/game/theme',
43
+ [Route['registration/mailing']]: 'registration/:registration/mailing',
44
+ [Route['registrations']]: 'registrations',
45
+ [Route['registrations/city']]: 'registrations/city',
46
+ [Route['registrations/game']]: 'registrations/game',
47
+ [Route['registrations/game/theme']]: 'registrations/game/theme',
48
+ [Route['registrations/export']]: 'registrations/export',
49
+ [Route['role']]: 'role/:role',
50
+ [Route['roles']]: 'roles',
51
+ [Route['theme']]: 'theme/:theme',
52
+ [Route['theme/cover']]: 'theme/:theme/cover',
53
+ [Route['themes']]: 'themes',
54
+ [Route['themes/cover']]: 'themes/cover',
55
+ [Route['timezone']]: 'timezone/:timezone',
56
+ [Route['timezones']]: 'timezones',
57
+ [Route['user']]: 'user/:user',
58
+ [Route['user/cities']]: 'user/:user/cities',
59
+ [Route['user/city']]: 'user/:user/city/:city',
60
+ [Route['user/password']]: 'user/:user/password',
61
+ [Route['user/role']]: 'user/:user/role',
62
+ [Route['users']]: 'users',
63
+ [Route['users/cities']]: 'users/cities',
64
+ [Route['users/password']]: 'users/password',
65
+ [Route['users/role']]: 'users/role',
66
+ [Route['venue']]: 'venue/:venue',
67
+ [Route['venue/city']]: 'venue/:venue/city',
68
+ [Route['venues']]: 'venues',
69
+ [Route['venues/city']]: 'venues/city',
70
+ })