@shakerquiz/utilities 0.5.221 → 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/key.js +0 -37
  66. package/source/functions/string-tag.js +0 -5
  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
@@ -1,122 +0,0 @@
1
- import { Category } from '../category.js'
2
- import { Mode } from '../mode.js'
3
- import { Role } from './role.js'
4
-
5
- export const GameStatus = Object.freeze({
6
- 'REJECTED': 'REJECTED',
7
- 'MODERATION': 'MODERATION',
8
- 'APPROVED': 'APPROVED',
9
- 'CLOSED': 'CLOSED',
10
- 'FORINVITES': 'FORINVITES',
11
- 'PUBLISHED': 'PUBLISHED',
12
- 'IS_RESERVE': 'IS_RESERVE',
13
- 'FINISHED': 'FINISHED',
14
- 'ARCHIVE': 'ARCHIVE',
15
- })
16
-
17
- export const GameStatuses = Object.freeze(Object.values(GameStatus))
18
-
19
- export const GameStatusTitle = Object.freeze({
20
- [GameStatus['REJECTED']]: 'Отклонено',
21
- [GameStatus['MODERATION']]: 'На проверке',
22
- [GameStatus['APPROVED']]: 'Одобрено',
23
- [GameStatus['CLOSED']]: 'Закрыта',
24
- [GameStatus['FORINVITES']]: 'По приглашению',
25
- [GameStatus['PUBLISHED']]: 'Опубликовано',
26
- [GameStatus['IS_RESERVE']]: 'В резерве',
27
- [GameStatus['FINISHED']]: 'Завершено',
28
- [GameStatus['ARCHIVE']]: 'В архиве',
29
- })
30
-
31
- export const GameStatusIcon = Object.freeze({
32
- [GameStatus['REJECTED']]: 'hero/outline/x-mark',
33
- [GameStatus['MODERATION']]: 'hero/outline/clock',
34
- [GameStatus['APPROVED']]: 'hero/outline/hand-thumb-up',
35
- [GameStatus['CLOSED']]: 'hero/outline/exclamation-triangle',
36
- [GameStatus['FORINVITES']]: 'hero/outline/lock-closed',
37
- [GameStatus['PUBLISHED']]: 'hero/outline/check-circle',
38
- [GameStatus['IS_RESERVE']]: 'hero/outline/user-plus',
39
- [GameStatus['FINISHED']]: 'hero/outline/check',
40
- [GameStatus['ARCHIVE']]: 'hero/outline/archive-box',
41
- })
42
-
43
- export const RoleGameStatusGameStatuses = Object.freeze({
44
- [Role['admin']]: Object.freeze({}),
45
-
46
- [Role['organizer']]: Object.freeze({
47
- [GameStatus['APPROVED']]: Object.freeze([
48
- GameStatus['APPROVED'],
49
- GameStatus['CLOSED'],
50
- GameStatus['FORINVITES'],
51
- GameStatus['PUBLISHED'],
52
- GameStatus['IS_RESERVE'],
53
- GameStatus['FINISHED'],
54
- GameStatus['ARCHIVE'],
55
- ]),
56
-
57
- [GameStatus['MODERATION']]: Object.freeze([
58
- GameStatus['MODERATION'],
59
- ]),
60
-
61
- [GameStatus['REJECTED']]: Object.freeze([
62
- GameStatus['REJECTED'],
63
- GameStatus['MODERATION'],
64
- ]),
65
- }),
66
-
67
- [Mode['Unknown']]: Object.freeze({}),
68
- })
69
-
70
- export const RoleGameStatuses = Object.freeze({
71
- [Role['admin']]: Object.freeze([
72
- GameStatus['APPROVED'],
73
- GameStatus['ARCHIVE'],
74
- GameStatus['CLOSED'],
75
- GameStatus['FINISHED'],
76
- GameStatus['FORINVITES'],
77
- GameStatus['IS_RESERVE'],
78
- GameStatus['MODERATION'],
79
- GameStatus['PUBLISHED'],
80
- GameStatus['REJECTED'],
81
- ]),
82
-
83
- [Role['organizer']]: Object.freeze([
84
- GameStatus['ARCHIVE'],
85
- GameStatus['CLOSED'],
86
- GameStatus['FINISHED'],
87
- GameStatus['FORINVITES'],
88
- GameStatus['IS_RESERVE'],
89
- GameStatus['PUBLISHED'],
90
- ]),
91
-
92
- [Mode['Unknown']]: Object.freeze([]),
93
- })
94
-
95
- export const CategoryGameStatuses = Object.freeze({
96
- [Category['Active']]: Object.freeze([
97
- GameStatus['CLOSED'],
98
- GameStatus['FORINVITES'],
99
- GameStatus['IS_RESERVE'],
100
- GameStatus['PUBLISHED'],
101
- ]),
102
-
103
- [GameStatus['REJECTED']]: Object.freeze([
104
- GameStatus['REJECTED'],
105
- ]),
106
-
107
- [GameStatus['MODERATION']]: Object.freeze([
108
- GameStatus['MODERATION'],
109
- ]),
110
-
111
- [GameStatus['APPROVED']]: Object.freeze([
112
- GameStatus['APPROVED'],
113
- ]),
114
-
115
- [GameStatus['FINISHED']]: Object.freeze([
116
- GameStatus['FINISHED'],
117
- ]),
118
-
119
- [GameStatus['ARCHIVE']]: Object.freeze([
120
- GameStatus['ARCHIVE'],
121
- ]),
122
- })
@@ -1,83 +0,0 @@
1
- import { toStringTag } from '../../functions/string-tag.js'
2
-
3
- export var RegistrationAttribute = /** @type {const} */ ({
4
- 'Alone': 'Alone',
5
- 'Newcomer': 'Newcomer',
6
- 'Birthday': 'Birthday',
7
- 'Public': 'Public',
8
- })
9
-
10
- export var RegistrationAttributes = Object.values(RegistrationAttribute)
11
-
12
- export var RegistrationAttributeWeight = {
13
- [RegistrationAttribute.Alone]: 0,
14
- [RegistrationAttribute.Newcomer]: 1,
15
- [RegistrationAttribute.Birthday]: 2,
16
- [RegistrationAttribute.Public]: 3,
17
- }
18
-
19
- export var RegistrationAttributeTitle = {
20
- [RegistrationAttribute.Alone]: 'Без команды',
21
- [RegistrationAttribute.Newcomer]: 'Новичок',
22
- [RegistrationAttribute.Birthday]: 'День рождения',
23
- [RegistrationAttribute.Public]: 'Принимаем людей',
24
- }
25
-
26
- /** @type {Record<RegistrationAttribute, Icon>} */
27
- export var RegistrationAttributeIcon = {
28
- [RegistrationAttribute.Alone]: 'hero/outline/user',
29
- [RegistrationAttribute.Newcomer]: 'hero/outline/sparkles',
30
- [RegistrationAttribute.Birthday]: 'hero/outline/cake',
31
- [RegistrationAttribute.Public]: 'hero/outline/user-plus',
32
- }
33
-
34
- export var RegistrationAttributeEmoji = {
35
- [RegistrationAttribute.Alone]: '👤',
36
- [RegistrationAttribute.Newcomer]: '✨',
37
- [RegistrationAttribute.Birthday]: '🎂',
38
- [RegistrationAttribute.Public]: '🫂',
39
- }
40
-
41
- export var RegistrationAttributeRegistrationProperty = /** @type {const} */ ({
42
- [RegistrationAttribute.Alone]: 'is_alone',
43
- [RegistrationAttribute.Newcomer]: 'is_first',
44
- [RegistrationAttribute.Birthday]: 'is_birthday',
45
- [RegistrationAttribute.Public]: 'is_extensible',
46
- })
47
-
48
- export var RegistrationAttributeRegistrationProperties = Object.values(RegistrationAttributeRegistrationProperty)
49
-
50
- export var RegistrationPropertyRegistrationAttribute = {
51
- [RegistrationAttributeRegistrationProperty[RegistrationAttribute.Alone]]: RegistrationAttribute.Alone,
52
- [RegistrationAttributeRegistrationProperty[RegistrationAttribute.Newcomer]]: RegistrationAttribute.Newcomer,
53
- [RegistrationAttributeRegistrationProperty[RegistrationAttribute.Birthday]]: RegistrationAttribute.Birthday,
54
- [RegistrationAttributeRegistrationProperty[RegistrationAttribute.Public]]: RegistrationAttribute.Public,
55
- }
56
-
57
- /**
58
- * @param {RegistrationAttribute[] | Partial<Pick<RegistrationTable, 'is_alone' | 'is_birthday' | 'is_extensible' | 'is_first'>>} value
59
- */
60
- export var getRegistrationAttributes = value => {
61
- switch (toStringTag(value)) {
62
- case 'Object':
63
- return RegistrationAttributeRegistrationProperties
64
- .map(property => value[property] ? RegistrationPropertyRegistrationAttribute[property] : '')
65
- .filter(Boolean)
66
-
67
- case 'Array':
68
- if (!value.every(attribute => RegistrationAttributes.includes(attribute)))
69
- throw TypeError(
70
- `[Function: getRegistrationAttributes] Parameter 'value': '${value}' of type 'Array' must include only members of 'RegistrationAttributes'.`,
71
- )
72
-
73
- return value.reduce((attributes, attribute) => {
74
- attributes[RegistrationAttributeRegistrationProperty[attribute]] = true
75
- return attributes
76
- }, {})
77
-
78
- default:
79
- throw TypeError(
80
- `[Function: getRegistrationAttributes] Parameter 'value': '${value}' must be of types: 'Object', 'Array'.`,
81
- )
82
- }
83
- }
@@ -1,26 +0,0 @@
1
- export const Channel = Object.freeze({
2
- 'vkontakte': 'vkontakte',
3
- 'telegramBot': 'telegramBot',
4
- 'email': 'email',
5
- })
6
-
7
- /** @satisfies {Array<keyof typeof Channel>} */
8
- export const Channels = Object.freeze([
9
- 'vkontakte',
10
- 'telegramBot',
11
- 'email',
12
- ])
13
-
14
- /** @satisfies {Record<keyof typeof Channel, string>} */
15
- export const ChannelTitle = Object.freeze({
16
- 'vkontakte': 'Вконтакте',
17
- 'telegramBot': 'Телеграм',
18
- 'email': 'Электронная почта',
19
- })
20
-
21
- /** @satisfies {Record<keyof typeof Channel, string>} */
22
- export const ChannelIcon = Object.freeze({
23
- 'vkontakte': 'brand/solid/vk',
24
- 'telegramBot': 'brand/solid/telegram',
25
- 'email': 'hero/solid/at-symbol',
26
- })
@@ -1,24 +0,0 @@
1
- export var RegistrationMailing = /** @type {const} */ ({
2
- 'Idle': 'Idle',
3
- 'Pending': 'Pending',
4
- 'Delivered': 'Delivered',
5
- 'Failed': 'Failed',
6
- })
7
-
8
- export var RegistrationMailings = Object.values(RegistrationMailing)
9
-
10
- /** @type {Record<RegistrationMailing, number>} */
11
- export var RegistrationMailingWeight = {
12
- [RegistrationMailing.Idle]: 0,
13
- [RegistrationMailing.Pending]: 1,
14
- [RegistrationMailing.Delivered]: 2,
15
- [RegistrationMailing.Failed]: 3,
16
- }
17
-
18
- /** @type {Record<RegistrationMailing, string>} */
19
- export var RegistrationMailingColor = {
20
- [RegistrationMailing.Idle]: 'default',
21
- [RegistrationMailing.Pending]: 'warning',
22
- [RegistrationMailing.Delivered]: 'success',
23
- [RegistrationMailing.Failed]: 'danger',
24
- }
@@ -1,40 +0,0 @@
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
- Role['admin'],
12
- Role['organizer'],
13
- Role['captain'],
14
- Role['player'],
15
- Role['user'],
16
- Role['manager'],
17
- ])
18
-
19
- export const RoleTitle = Object.freeze({
20
- [Role['admin']]: 'Администратор',
21
- [Role['organizer']]: 'Организатор',
22
- [Role['captain']]: 'Капитан',
23
- [Role['player']]: 'Игрок',
24
- [Role['user']]: 'Пользователь',
25
- [Role['manager']]: 'Менеджер',
26
- })
27
-
28
- export const RoleIcon = Object.freeze({
29
- [Role['admin']]: 'hero/outline/user',
30
- [Role['organizer']]: 'hero/outline/user',
31
- [Role['captain']]: 'hero/outline/user',
32
- [Role['player']]: 'hero/outline/user',
33
- [Role['user']]: 'hero/outline/user',
34
- [Role['manager']]: 'hero/outline/user',
35
- })
36
-
37
- export const inferRole = Object.freeze(
38
- /** @returns {keyof typeof Role | 'Unknown'} */
39
- x => Role[x?.role?.name ?? x] ?? 'Unknown',
40
- )
@@ -1,23 +0,0 @@
1
- export const Version = Object.freeze({
2
- 'Latest': 'Latest',
3
- 'Legacy': 'Legacy',
4
- })
5
-
6
- export const Versions = Object.freeze([
7
- Version['Latest'],
8
- Version['Legacy'],
9
- 'Unknown',
10
- ])
11
-
12
- export const VersionTitle = Object.freeze({
13
- [Version['Latest']]: 'Актуальная',
14
- [Version['Legacy']]: 'Старая',
15
- ['Unknown']: 'Неизвестно',
16
- })
17
-
18
- /** @returns {keyof typeof Version | 'Unknown'} */
19
- export const inferVersion = Object.freeze(value =>
20
- Version[value?.chatapp_version]
21
- ?? Version[value]
22
- ?? 'Unknown'
23
- )