itube-specs 0.0.195

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 (169) hide show
  1. package/README.md +121 -0
  2. package/components/cards/f-video-mini-card.vue +49 -0
  3. package/components/grids/f-grid-categories.vue +20 -0
  4. package/components/grids/f-grid-channels.vue +23 -0
  5. package/components/grids/f-grid-models.vue +25 -0
  6. package/components/grids/f-grid-playlists.vue +21 -0
  7. package/components/grids/f-grid-videos.vue +33 -0
  8. package/components/page-components/f-breadcrumbs.vue +44 -0
  9. package/components/page-components/f-chips-panel.vue +101 -0
  10. package/components/page-components/f-pagination.vue +206 -0
  11. package/components/page-components/f-report.vue +221 -0
  12. package/components/page-components/f-share.vue +96 -0
  13. package/components/page-components/f-sort.vue +57 -0
  14. package/components/page-components/f-videos-title.vue +20 -0
  15. package/components/ui/f-button.vue +50 -0
  16. package/components/ui/f-checkbox.vue +55 -0
  17. package/components/ui/f-chips.vue +116 -0
  18. package/components/ui/f-count.vue +12 -0
  19. package/components/ui/f-country.vue +26 -0
  20. package/components/ui/f-dropdown.vue +122 -0
  21. package/components/ui/f-icon.vue +19 -0
  22. package/components/ui/f-img.vue +46 -0
  23. package/components/ui/f-input.vue +162 -0
  24. package/components/ui/f-label.vue +20 -0
  25. package/components/ui/f-link.vue +33 -0
  26. package/components/ui/f-model-tag.vue +28 -0
  27. package/components/ui/f-notification.vue +77 -0
  28. package/components/ui/f-popup.vue +136 -0
  29. package/components/ui/f-radio.vue +56 -0
  30. package/components/ui/f-select.vue +88 -0
  31. package/components/ui/f-slider.vue +55 -0
  32. package/components/ui/f-snackbar.vue +47 -0
  33. package/components/ui/f-timestamp.vue +51 -0
  34. package/components/ui/f-toggle.vue +29 -0
  35. package/composables/use-antiadblock-domains.ts +20 -0
  36. package/composables/use-auth-popup.ts +25 -0
  37. package/composables/use-convert-query-categories.ts +7 -0
  38. package/composables/use-generate-link.ts +30 -0
  39. package/composables/use-get-pure-route-name.ts +5 -0
  40. package/composables/use-get-videos-filter-request.ts +30 -0
  41. package/composables/use-meta.ts +42 -0
  42. package/composables/use-playlist-edit.ts +36 -0
  43. package/composables/use-report-popup.ts +21 -0
  44. package/composables/use-seo-links.ts +87 -0
  45. package/composables/use-share-popup.ts +23 -0
  46. package/composables/use-snackbar.ts +52 -0
  47. package/composables/use-test-composable.ts +3 -0
  48. package/lib/alphabet-items.ts +2 -0
  49. package/lib/contact-forms-scheme.ts +98 -0
  50. package/lib/contacts/report-issue-items.ts +5 -0
  51. package/lib/contacts/report-malware-items.ts +6 -0
  52. package/lib/contacts/report-reasons-items.ts +12 -0
  53. package/lib/contacts/report-wrong-items.ts +6 -0
  54. package/lib/index.ts +7 -0
  55. package/lib/report-forms-scheme.ts +205 -0
  56. package/nuxt.config.ts +20 -0
  57. package/package.json +53 -0
  58. package/runtime/enums/async-data.ts +48 -0
  59. package/runtime/enums/auth-step.ts +5 -0
  60. package/runtime/enums/contacts-subjects.ts +7 -0
  61. package/runtime/enums/languages.ts +9 -0
  62. package/runtime/enums/niche.ts +6 -0
  63. package/runtime/enums/playlist-step.ts +5 -0
  64. package/runtime/enums/playlist-type.ts +4 -0
  65. package/runtime/enums/report-forms-subjects.ts +7 -0
  66. package/runtime/index.ts +51 -0
  67. package/runtime/utils/cleaners/clean-category-card.ts +9 -0
  68. package/runtime/utils/cleaners/clean-category-info.ts +9 -0
  69. package/runtime/utils/cleaners/clean-channel-card.ts +12 -0
  70. package/runtime/utils/cleaners/clean-channel-info.ts +13 -0
  71. package/runtime/utils/cleaners/clean-model-card.ts +9 -0
  72. package/runtime/utils/cleaners/clean-model-info.ts +11 -0
  73. package/runtime/utils/cleaners/clean-playlist-card.ts +16 -0
  74. package/runtime/utils/cleaners/clean-playlist-data.ts +15 -0
  75. package/runtime/utils/cleaners/clean-playlist-video.ts +12 -0
  76. package/runtime/utils/cleaners/clean-profile-data.ts +11 -0
  77. package/runtime/utils/cleaners/clean-user-playlists-card.ts +11 -0
  78. package/runtime/utils/cleaners/clean-video-card.ts +19 -0
  79. package/runtime/utils/cleaners/clean-video-data.ts +27 -0
  80. package/runtime/utils/compress-image.ts +27 -0
  81. package/runtime/utils/converters/convert-categories-to-chips.ts +13 -0
  82. package/runtime/utils/converters/convert-categories-to-footer.ts +11 -0
  83. package/runtime/utils/converters/convert-date-to-timestamp.ts +37 -0
  84. package/runtime/utils/converters/convert-model-card-to-chips.ts +13 -0
  85. package/runtime/utils/converters/convert-string.ts +56 -0
  86. package/runtime/utils/converters/group-categories-by-first-letter.ts +24 -0
  87. package/runtime/utils/converters/group-objects-by-first-letter.ts +16 -0
  88. package/runtime/utils/format-date.ts +12 -0
  89. package/runtime/utils/format-number.ts +12 -0
  90. package/runtime/utils/format-time-ago.ts +21 -0
  91. package/runtime/utils/get-duration.ts +17 -0
  92. package/runtime/utils/get-month.ts +22 -0
  93. package/runtime/utils/get-multiple-query.ts +26 -0
  94. package/runtime/utils/get-selected-query.ts +6 -0
  95. package/runtime/utils/is-mobile.ts +15 -0
  96. package/runtime/utils/normalize-url.ts +43 -0
  97. package/runtime/utils/on-backdrop-click.ts +5 -0
  98. package/runtime/utils/scroll-lock.ts +28 -0
  99. package/runtime/utils/server/abort-controller.ts +14 -0
  100. package/runtime/utils/server/api-helper.ts +41 -0
  101. package/runtime/utils/server/get-url-with-proxied-params.ts +6 -0
  102. package/runtime/utils/server/parse-api-error.ts +14 -0
  103. package/runtime/utils/server/server-api-helper.ts +28 -0
  104. package/runtime/utils/validate-email.ts +4 -0
  105. package/runtime/utils/validate-password.ts +3 -0
  106. package/runtime/utils/validate-phone.ts +4 -0
  107. package/runtime/utils/validate-username.ts +4 -0
  108. package/runtime/utils/video-data-add-model-icon.ts +20 -0
  109. package/runtime/utils/vtt-helper.ts +86 -0
  110. package/types/authorization-forms.d.ts +16 -0
  111. package/types/breadcrumb-item.d.ts +4 -0
  112. package/types/button-sizes.d.ts +1 -0
  113. package/types/button-themes.d.ts +1 -0
  114. package/types/card-info.d.ts +22 -0
  115. package/types/category-card.d.ts +8 -0
  116. package/types/change-email-form.d.ts +3 -0
  117. package/types/change-password-form.d.ts +4 -0
  118. package/types/channel-card.d.ts +10 -0
  119. package/types/chips-item.d.ts +8 -0
  120. package/types/contacts-form.d.ts +10 -0
  121. package/types/contacts-scheme.d.ts +14 -0
  122. package/types/country.d.ts +5 -0
  123. package/types/css-breakpoints.d.ts +1 -0
  124. package/types/filter-scheme.d.ts +37 -0
  125. package/types/fluid-player.d.ts +226 -0
  126. package/types/gender.d.ts +5 -0
  127. package/types/group-categories.d.ts +15 -0
  128. package/types/index.d.ts +59 -0
  129. package/types/input-types.d.ts +1 -0
  130. package/types/link-item.d.ts +6 -0
  131. package/types/model-card.d.ts +7 -0
  132. package/types/model-filter-payload.d.ts +4 -0
  133. package/types/model-filter.d.ts +15 -0
  134. package/types/model-group.d.ts +5 -0
  135. package/types/model-tag.d.ts +5 -0
  136. package/types/multi-suggest.d.ts +105 -0
  137. package/types/navigation-items.d.ts +10 -0
  138. package/types/paginated-response.d.ts +8 -0
  139. package/types/parameter-model.d.ts +14 -0
  140. package/types/playlist-card.d.ts +16 -0
  141. package/types/playlist-data.d.ts +15 -0
  142. package/types/playlist-info-type.d.ts +28 -0
  143. package/types/playlist-video-form.d.ts +9 -0
  144. package/types/profile-data.d.ts +9 -0
  145. package/types/raw/raw-category-card.d.ts +23 -0
  146. package/types/raw/raw-category-info.d.ts +23 -0
  147. package/types/raw/raw-channel-card.d.ts +29 -0
  148. package/types/raw/raw-channel-info.d.ts +29 -0
  149. package/types/raw/raw-model-card.d.ts +53 -0
  150. package/types/raw/raw-model-info.d.ts +54 -0
  151. package/types/raw/raw-playlist-card.d.ts +27 -0
  152. package/types/raw/raw-playlist-data.d.ts +29 -0
  153. package/types/raw/raw-playlist-user.d.ts +24 -0
  154. package/types/raw/raw-playlist-video.d.ts +18 -0
  155. package/types/raw/raw-profile-data.d.ts +22 -0
  156. package/types/raw/raw-video-card.d.ts +78 -0
  157. package/types/raw/raw-video-data.d.ts +53 -0
  158. package/types/recovery-password-form.d.ts +4 -0
  159. package/types/related-phrases.d.ts +6 -0
  160. package/types/report-form.d.ts +9 -0
  161. package/types/report-scheme.d.ts +21 -0
  162. package/types/request-filters.d.ts +13 -0
  163. package/types/request-pagination.d.ts +5 -0
  164. package/types/search-top-models.d.ts +6 -0
  165. package/types/select-item.d.ts +10 -0
  166. package/types/tab-item.d.ts +6 -0
  167. package/types/thumbs-urls.d.ts +13 -0
  168. package/types/video-card.d.ts +18 -0
  169. package/types/video-data.d.ts +36 -0
@@ -0,0 +1,98 @@
1
+ import { EContactsSubjects } from '../runtime';
2
+ import type { IContactScheme } from '../types';
3
+ import { reportReasonsItems } from '../lib';
4
+
5
+ export const contactFormsScheme: Array<IContactScheme> = [
6
+ {
7
+ subject: EContactsSubjects.Feedback,
8
+ },
9
+ {
10
+ subject: EContactsSubjects.Bugs,
11
+ items: [
12
+ {
13
+ type: 'text',
14
+ value: 'bugUrl',
15
+ label: 'bug_url',
16
+ wide: true,
17
+ required: true,
18
+ },
19
+ ]
20
+ },
21
+ {
22
+ subject: EContactsSubjects.DMCA,
23
+ items: [
24
+ {
25
+ type: 'text',
26
+ value: 'firstName',
27
+ label: 'first_name',
28
+ required: true,
29
+ },
30
+ {
31
+ type: 'text',
32
+ value: 'lastName',
33
+ label: 'last_name',
34
+ required: true,
35
+ },
36
+ {
37
+ type: 'text',
38
+ value: 'company',
39
+ label: 'your_company',
40
+ wide: true,
41
+ },
42
+ {
43
+ type: 'text',
44
+ value: 'address',
45
+ label: 'address',
46
+ required: true,
47
+ },
48
+ {
49
+ type: 'tel',
50
+ value: 'phone',
51
+ label: 'phone',
52
+ required: true,
53
+ },
54
+ {
55
+ type: 'textarea',
56
+ value: 'reportLinks',
57
+ label: 'report_links',
58
+ required: true,
59
+ wide: true,
60
+ },
61
+ {
62
+ type: 'checkbox',
63
+ value: 'confirmTrue',
64
+ required: true,
65
+ wide: true,
66
+ text: 'confirm_text',
67
+ },
68
+ {
69
+ type: 'checkbox',
70
+ value: 'confirmOwner',
71
+ required: true,
72
+ wide: true,
73
+ text: 'confirmowner_text',
74
+ },
75
+ ]
76
+ },
77
+ {
78
+ subject: EContactsSubjects.Report,
79
+ items: [
80
+ ...(reportReasonsItems).map((value, index) => ({
81
+ type: 'radio',
82
+ value,
83
+ text: `reason_${index + 1}`,
84
+ wide: true,
85
+ })),
86
+ {
87
+ type: 'textarea',
88
+ value: 'reportLinks',
89
+ label: 'report_links',
90
+ required: true,
91
+ wide: true,
92
+ },
93
+ ],
94
+ },
95
+ {
96
+ subject: EContactsSubjects.Advertising,
97
+ },
98
+ ]
@@ -0,0 +1,5 @@
1
+ export const reportIssueItems = [
2
+ 'The video keeps buffering and does not play',
3
+ 'The video cannot be skipped forward',
4
+ 'The video suddenly stops playing and shows only black screen',
5
+ ]
@@ -0,0 +1,6 @@
1
+ export const reportMalwareItems = [
2
+ 'I am not sure',
3
+ 'Immediately upon landing on the video page, before making the first click',
4
+ 'On the video page when a pop-up window appeared',
5
+ 'When I clicked an advertisement on the video page',
6
+ ]
@@ -0,0 +1,12 @@
1
+ export const reportReasonsItems = [
2
+ 'The person creates the impression of being of a minor',
3
+ 'Non-consensual (physical abuse, rape, blackmail)',
4
+ 'Non-consensual (substance abuse (drugs or alcohol))',
5
+ 'Extreme violence',
6
+ 'Unauthorized recording / private content',
7
+ 'Unauthorized recording / not for public use',
8
+ 'The video contains incest scenes',
9
+ 'Animals are (sexually) involved',
10
+ 'The video has blood in it',
11
+ 'Feces (excrement, defecation, scat)',
12
+ ]
@@ -0,0 +1,6 @@
1
+ export const reportWrongItems = [
2
+ 'The video is not adult in nature',
3
+ 'The video is not "straight" as is stated',
4
+ 'The tags / categories for the video are not correct',
5
+ 'The information about the actors in the video is not correct'
6
+ ]
package/lib/index.ts ADDED
@@ -0,0 +1,7 @@
1
+ export * from './contacts/report-issue-items';
2
+ export * from './contacts/report-malware-items';
3
+ export * from './contacts/report-reasons-items';
4
+ export * from './contacts/report-wrong-items';
5
+ export * from './report-forms-scheme';
6
+ export * from './contact-forms-scheme';
7
+ export * from './alphabet-items';
@@ -0,0 +1,205 @@
1
+ import { EReportFormsSubjects } from '../runtime';
2
+ import type { IReportScheme } from '../types';
3
+ import { reportReasonsItems } from './contacts/report-reasons-items';
4
+ import { reportIssueItems } from './contacts/report-issue-items';
5
+ import { reportWrongItems } from './contacts/report-wrong-items';
6
+ import { reportMalwareItems } from './contacts/report-malware-items';
7
+
8
+ export const reportFormsScheme: Array<IReportScheme> = [
9
+ {
10
+ subject: EReportFormsSubjects.DMCA,
11
+ title: 'dmca_title',
12
+ items: [
13
+ {
14
+ type: 'text',
15
+ value: 'firstName',
16
+ label: 'first_name',
17
+ required: true,
18
+ },
19
+ {
20
+ type: 'text',
21
+ value: 'lastName',
22
+ label: 'last_name',
23
+ required: true,
24
+ },
25
+ {
26
+ type: 'text',
27
+ value: 'company',
28
+ label: 'your_company',
29
+ wide: true,
30
+ },
31
+ {
32
+ type: 'text',
33
+ value: 'address',
34
+ label: 'address',
35
+ required: true,
36
+ },
37
+ {
38
+ type: 'tel',
39
+ value: 'phone',
40
+ label: 'phone',
41
+ required: true,
42
+ },
43
+ {
44
+ type: 'textarea',
45
+ value: 'message',
46
+ label: 'message',
47
+ required: true,
48
+ wide: true,
49
+ },
50
+ {
51
+ type: 'text',
52
+ value: 'from',
53
+ label: 'email',
54
+ required: true,
55
+ },
56
+ {
57
+ type: 'checkbox',
58
+ value: 'confirmTrue',
59
+ required: true,
60
+ wide: true,
61
+ text: 'confirm_text',
62
+ },
63
+ {
64
+ type: 'checkbox',
65
+ value: 'confirmOwner',
66
+ required: true,
67
+ wide: true,
68
+ text: 'confirmowner_text',
69
+ },
70
+ ]
71
+ },
72
+ {
73
+ subject: EReportFormsSubjects.Inappropriate,
74
+ title: 'inappropriate_title',
75
+ hasReason: true,
76
+ items: [
77
+ ...(reportReasonsItems).map((value, index) => ({
78
+ type: 'radio',
79
+ value,
80
+ text: `reason_inappropriate_${index + 1}`,
81
+ wide: true,
82
+ })),
83
+ {
84
+ type: 'textarea',
85
+ value: 'message',
86
+ label: 'message',
87
+ required: true,
88
+ wide: true,
89
+ },
90
+ {
91
+ type: 'text',
92
+ value: 'from',
93
+ label: 'email',
94
+ required: true,
95
+ },
96
+ {
97
+ type: 'text',
98
+ value: 'name',
99
+ label: 'name',
100
+ },
101
+ ]
102
+ },
103
+ {
104
+ subject: EReportFormsSubjects.Issue,
105
+ title: 'issue_title',
106
+ text: 'issue_text',
107
+ hasReason: true,
108
+ items: [
109
+ ...(reportIssueItems).map((value, index) => ({
110
+ type: 'radio',
111
+ value,
112
+ text: `reason_issue_${index + 1}`,
113
+ wide: true,
114
+ })),
115
+ {
116
+ type: 'textarea',
117
+ value: 'message',
118
+ label: 'message',
119
+ required: true,
120
+ wide: true,
121
+ },
122
+ {
123
+ type: 'text',
124
+ value: 'from',
125
+ label: 'email',
126
+ required: true,
127
+ },
128
+ {
129
+ type: 'text',
130
+ value: 'name',
131
+ label: 'name',
132
+ },
133
+ ],
134
+ },
135
+ {
136
+ subject: EReportFormsSubjects.Wrong,
137
+ title: 'wrong_title',
138
+ text: 'wrong_text',
139
+ hasReason: true,
140
+ items: [
141
+ ...(reportWrongItems).map((value, index) => ({
142
+ type: 'radio',
143
+ value,
144
+ text: `reason_wrong_${index + 1}`,
145
+ wide: true,
146
+ })),
147
+ {
148
+ type: 'text',
149
+ value: 'from',
150
+ label: 'email',
151
+ required: true,
152
+ },
153
+ {
154
+ type: 'text',
155
+ value: 'name',
156
+ label: 'name',
157
+ },
158
+ ],
159
+ },
160
+ {
161
+ subject: EReportFormsSubjects.Malware,
162
+ title: 'malware_title',
163
+ text: 'malware_text',
164
+ hasReason: true,
165
+ list: [
166
+ ...Array.from({ length: 4 }, (_, i) => ({
167
+ text: `malware_list${i + 1}`,
168
+ })),
169
+ ],
170
+ subtext: 'malware_subtext',
171
+ items: [
172
+ {
173
+ type: 'textarea',
174
+ value: 'message',
175
+ label: 'message',
176
+ required: true,
177
+ wide: true,
178
+ },
179
+ ...(reportMalwareItems).map((value, index)=> ({
180
+ type: 'radio',
181
+ value,
182
+ text: `reason_malware_${index + 1}`,
183
+ wide: true,
184
+ })),
185
+ {
186
+ type: 'text',
187
+ value: 'antivirus',
188
+ label: 'antivirus',
189
+ required: true,
190
+ wide: true,
191
+ },
192
+ {
193
+ type: 'text',
194
+ value: 'from',
195
+ label: 'email',
196
+ required: true,
197
+ },
198
+ {
199
+ type: 'text',
200
+ value: 'name',
201
+ label: 'name',
202
+ },
203
+ ],
204
+ },
205
+ ]
package/nuxt.config.ts ADDED
@@ -0,0 +1,20 @@
1
+ import { fileURLToPath } from 'node:url'
2
+ import { defineNuxtConfig } from 'nuxt/config'
3
+
4
+ export default defineNuxtConfig({
5
+ modules: ['@nuxt/eslint', '@nuxt/image', '@nuxt/icon', '@nuxtjs/i18n'],
6
+ eslint: {
7
+ config: {
8
+ // Use the generated ESLint config for lint root project as well
9
+ rootDir: fileURLToPath(new URL('..', import.meta.url))
10
+ }
11
+ },
12
+ components: {
13
+ dirs: [
14
+ {
15
+ path: './components',
16
+ pathPrefix: false
17
+ }
18
+ ]
19
+ },
20
+ })
package/package.json ADDED
@@ -0,0 +1,53 @@
1
+ {
2
+ "name": "itube-specs",
3
+ "type": "module",
4
+ "version": "0.0.195",
5
+ "main": "./nuxt.config.ts",
6
+ "types": "./types/index.d.ts",
7
+ "scripts": {
8
+ "public": "npm version patch && npm publish --access public"
9
+ },
10
+ "exports": {
11
+ ".": {
12
+ "types": "./types/index.d.ts",
13
+ "import": "./nuxt.config.ts",
14
+ "default": "./nuxt.config.ts"
15
+ },
16
+ "./types": {
17
+ "types": "./types/index.d.ts",
18
+ "default": "./types/index.d.ts"
19
+ },
20
+ "./runtime": {
21
+ "import": "./runtime/index.ts",
22
+ "default": "./runtime/index.ts"
23
+ },
24
+ "./lib": {
25
+ "import": "./lib/index.ts",
26
+ "default": "./lib/index.ts"
27
+ },
28
+ "./*": "./*"
29
+ },
30
+ "files": [
31
+ "runtime/",
32
+ "components/",
33
+ "composables/",
34
+ "types/",
35
+ "lib/",
36
+ "nuxt.config.ts"
37
+ ],
38
+ "devDependencies": {
39
+ "@nuxt/eslint": "latest",
40
+ "@nuxt/icon": "1.15.0",
41
+ "@nuxt/image": "^2.0.0",
42
+ "@nuxtjs/i18n": "9.5.6",
43
+ "@types/node": "^20.19.19",
44
+ "eslint": "^9.37.0",
45
+ "nuxt": "3.17.6",
46
+ "typescript": "^5.9.3",
47
+ "vue": "3.5.17"
48
+ },
49
+ "dependencies": {
50
+ "@vueform/slider": "2.1.10",
51
+ "@vueuse/core": "12.8.2"
52
+ }
53
+ }
@@ -0,0 +1,48 @@
1
+ export enum EAsyncData {
2
+ Videos = 'videos',
3
+ Video = 'video',
4
+ VideosByTag = 'videos-by-tag',
5
+ VideosByChannel = 'videos-by-channel',
6
+ VideosByCategory = 'videos-by-category',
7
+ VideosByModel = 'videos-by-model',
8
+ VideosBySearch = 'videos-by-search',
9
+ ModelsVideos = 'models-videos',
10
+ ModelsByPhrases = 'models-phrases',
11
+ Models = 'models',
12
+ ModelsByFirstLetter = 'models-by-first-letter',
13
+ ModelsByFirstLetterChips = 'models-by-first-letter-chips',
14
+ RelatedVideos = 'related-videos',
15
+ RefererPhrases = 'referer-phrases-video',
16
+ AsideVideos = 'aside-videos',
17
+ TopModels = 'top-models',
18
+ TopModelsMore = 'top-models-more',
19
+ TopChipsModels = 'top-chips-models',
20
+ Model = 'model',
21
+ ModelSTop = 'models-top',
22
+ ModelsByName = 'models-by-name',
23
+ Channels = 'channels',
24
+ Channel = 'channel',
25
+ ChannelByName = 'channel-by-name',
26
+ ChannelsByNetworkName = 'channel-by-network-name',
27
+ Categories = 'categories',
28
+ CategoriesByPhrase = 'categories-by-phrase',
29
+ CategoriesByName = 'categories-by-name',
30
+ GroupsCategoriesFilter = 'groups-categories-filter',
31
+ RelatedSearch = 'related-search',
32
+ MultiSuggestSearch = 'multi-suggest-search',
33
+ MultiSuggestRouteSearch = 'multi-suggest-route-search',
34
+ CategoriesByLetter = 'categories-by-letter',
35
+ CategoriesTopRandom = 'categories-top-random',
36
+ CategoriesRelated = 'categories-related',
37
+ CategoriesTopRandomFull = 'categories-top-random-full',
38
+ CategoriesTopRandomFooter = 'categories-top-random-footer',
39
+ Countries = 'countries',
40
+ GetPlaylists = 'get-playlists',
41
+ GetPlaylistsVideo = 'get-playlists-video',
42
+ GetPlaylistsByNiche = 'get-playlists-by-niche',
43
+ GetPlaylistsLikeNiche = 'get-playlists-like-niche',
44
+ PostPlaylists = 'post-playlists',
45
+ Profile = 'profile',
46
+ PlaylistById = 'playlist-by-id',
47
+ SetPlaylistView = 'set-playlist-view',
48
+ }
@@ -0,0 +1,5 @@
1
+ export enum EAuthSteps {
2
+ Registration = 1,
3
+ Login = 2,
4
+ Recovery = 3,
5
+ }
@@ -0,0 +1,7 @@
1
+ export enum EContactsSubjects {
2
+ Feedback = 'feedback',
3
+ Bugs = 'bugs',
4
+ DMCA = 'dmca',
5
+ Report = 'report',
6
+ Advertising = 'advertising',
7
+ }
@@ -0,0 +1,9 @@
1
+ export enum ELanguage {
2
+ English = 'en',
3
+ German = 'de',
4
+ Spanish = 'es',
5
+ Korean = 'ko',
6
+ Japanese = 'jp',
7
+ Italian = 'it',
8
+ French = 'fr',
9
+ }
@@ -0,0 +1,6 @@
1
+ /** Тип ниши */
2
+ export enum ENiche {
3
+ Straight = 'straight',
4
+ Gay = 'gay',
5
+ Shemale = 'shemale',
6
+ }
@@ -0,0 +1,5 @@
1
+ export enum EPlaylistStep {
2
+ Edit = 1,
3
+ Delete = 2,
4
+ DeleteVideo = 3,
5
+ }
@@ -0,0 +1,4 @@
1
+ export enum EPlaylistType {
2
+ Public = 'public',
3
+ Private = 'private',
4
+ }
@@ -0,0 +1,7 @@
1
+ export enum EReportFormsSubjects {
2
+ DMCA = 'dmca',
3
+ Inappropriate = 'inappropriate',
4
+ Issue = 'issue',
5
+ Wrong = 'wrong',
6
+ Malware = 'malware',
7
+ }
@@ -0,0 +1,51 @@
1
+ export * from './enums/playlist-type';
2
+ export * from './enums/contacts-subjects';
3
+ export * from './enums/async-data';
4
+ export * from './enums/auth-step';
5
+ export * from './enums/languages';
6
+ export * from './enums/niche';
7
+ export * from './enums/report-forms-subjects';
8
+ export * from './enums/playlist-step';
9
+ export * from './utils/format-date';
10
+ export * from './utils/format-number';
11
+ export * from './utils/get-multiple-query';
12
+ export * from './utils/get-duration';
13
+ export * from './utils/get-selected-query';
14
+ export * from './utils/on-backdrop-click';
15
+ export * from './utils/validate-email';
16
+ export * from './utils/validate-password';
17
+ export * from './utils/validate-phone';
18
+ export * from './utils/validate-username';
19
+ export * from './utils/scroll-lock';
20
+ export * from './utils/compress-image';
21
+ export * from './utils/cleaners/clean-category-info';
22
+ export * from './utils/cleaners/clean-category-card';
23
+ export * from './utils/cleaners/clean-channel-card';
24
+ export * from './utils/cleaners/clean-channel-info';
25
+ export * from './utils/cleaners/clean-playlist-card';
26
+ export * from './utils/cleaners/clean-playlist-data';
27
+ export * from './utils/cleaners/clean-playlist-video';
28
+ export * from './utils/cleaners/clean-model-card';
29
+ export * from './utils/cleaners/clean-user-playlists-card';
30
+ export * from './utils/cleaners/clean-profile-data';
31
+ export * from './utils/cleaners/clean-video-data';
32
+ export * from './utils/cleaners/clean-video-card';
33
+ export * from './utils/cleaners/clean-model-info';
34
+ export * from './utils/video-data-add-model-icon';
35
+ export * from './utils/format-time-ago';
36
+ export * from './utils/converters/convert-categories-to-footer';
37
+ export * from './utils/converters/convert-categories-to-chips';
38
+ export * from './utils/converters/convert-model-card-to-chips';
39
+ export * from './utils/converters/group-categories-by-first-letter';
40
+ export * from './utils/converters/group-objects-by-first-letter';
41
+ export * from './utils/server/abort-controller';
42
+ export * from './utils/server/api-helper';
43
+ export * from './utils/server/parse-api-error';
44
+ export * from './utils/server/get-url-with-proxied-params';
45
+ export * from './utils/server/server-api-helper';
46
+ export * from './utils/converters/convert-date-to-timestamp';
47
+ export * from './utils/get-month';
48
+ export * from './utils/converters/convert-string';
49
+ export * from './utils/normalize-url';
50
+ export * from './utils/is-mobile';
51
+ export * from './utils/vtt-helper';
@@ -0,0 +1,9 @@
1
+ import type { IRawCategoryCard, ICategoryCard } from '../../../types';
2
+
3
+ export const cleanCategoryCard = (card: IRawCategoryCard): ICategoryCard => ({
4
+ name: card.name,
5
+ title: card.title,
6
+ videosCount: card.videosCount,
7
+ thumbUrl: card.video_thumb_urls.webp['480x270'],
8
+ guid: card.guid,
9
+ })
@@ -0,0 +1,9 @@
1
+ import type { IRawCategoryInfo, ICardInfo } from '../../../types';
2
+
3
+ export const cleanCategoryInfo = (card: IRawCategoryInfo): ICardInfo => ({
4
+ guid: card.guid,
5
+ title: card.title,
6
+ videosCount: card.videosCount,
7
+ description: card.description,
8
+ thumbUrl: card.video_thumb_urls.webp['480x270'],
9
+ })
@@ -0,0 +1,12 @@
1
+ import type { IChannelCard, IRawChannelCard } from '../../../types';
2
+
3
+ export const cleanChannelCard = (card: IRawChannelCard): IChannelCard => ({
4
+ guid: card.guid,
5
+ name: card.name,
6
+ url: card.url,
7
+ videosCount: card.videos_count,
8
+ isNetwork: card.is_network,
9
+ updated: card.updated,
10
+ avatarUrl: card.avatar_url,
11
+ thumbUrl: card.video_thumb_urls.webp['480x270'],
12
+ })
@@ -0,0 +1,13 @@
1
+ import type { IRawChannelInfo, ICardInfo } from '../../../types';
2
+
3
+ export const cleanChannelInfo = (card: IRawChannelInfo): ICardInfo => ({
4
+ guid: card.guid,
5
+ title: card.name,
6
+ url: card.url,
7
+ description: card.description,
8
+ videosCount: card.videos_count,
9
+ isNetwork: card.is_network,
10
+ updated: card.updated,
11
+ avatarUrl: card.avatar_url,
12
+ thumbUrl: card.video_thumb_urls.webp['480x270'],
13
+ })
@@ -0,0 +1,9 @@
1
+ import type { IRawModelCard, IModelCard } from '../../../types';
2
+
3
+ export const cleanModelCard = (card: IRawModelCard): IModelCard => ({
4
+ title: card.title || '',
5
+ videosCount: card.videos_count || 0,
6
+ thumbUrl: card.video_thumb_urls.webp[ '480x270' ] || '',
7
+ primaryImageUrl: card.primary_image_url || '',
8
+ guid: card.guid || '',
9
+ })
@@ -0,0 +1,11 @@
1
+ import type { IRawModelInfo, ICardInfo } from '../../../types';
2
+
3
+ export const cleanModelInfo = (card: IRawModelInfo): ICardInfo => ({
4
+ title: card.title,
5
+ description: card.description,
6
+ social: card.social,
7
+ orientation: card.orientation,
8
+ videosCount: card.videos_count,
9
+ thumbUrl: card.video_thumb_urls?.webp['480x270'],
10
+ parameters: card.parameters,
11
+ })
@@ -0,0 +1,16 @@
1
+ import type { IRawPlaylistCard, IPlaylistCard } from '../../../types';
2
+
3
+ export const cleanPlaylistCard = (card: IRawPlaylistCard): IPlaylistCard => ({
4
+ created: card.created,
5
+ id: card.id,
6
+ name: card.name,
7
+ username: card.username,
8
+ playlistType: card.playlist_type,
9
+ thumbUrls: card.thumbs?.map(item => item.urls.webp['480x270']),
10
+ videosCount: card.videos_count,
11
+ firstVideoId: card.first_video_id,
12
+ searchTags: card.search_tags,
13
+ views: card.views,
14
+ likes: card.likes,
15
+ dislikes: card.dislikes,
16
+ })