@bprotsyk/aso-core 1.2.220 → 1.2.225

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 (85) hide show
  1. package/docs/assets/search.js +1 -1
  2. package/docs/functions/ColoredText.html +2 -2
  3. package/docs/functions/ShapeDiv.html +2 -2
  4. package/docs/index.html +2 -2
  5. package/docs/interfaces/IUpsertFlashAppRequest.html +48 -48
  6. package/docs/interfaces/IUpsertFlashAppResponse.html +10 -10
  7. package/docs/modules.html +4 -4
  8. package/docs/variables/FlashAppSchema.html +2 -2
  9. package/docs/variables/PanelUserSchema.html +2 -2
  10. package/lib/app/app-integration.d.ts +53 -0
  11. package/lib/app/app-integration.js +63 -0
  12. package/lib/app/app-list-item.d.ts +5 -0
  13. package/lib/app/app-list-item.js +2 -0
  14. package/lib/app/app-type.d.ts +4 -0
  15. package/lib/app/app-type.js +8 -0
  16. package/lib/app/app.d.ts +177 -0
  17. package/lib/app/app.js +216 -0
  18. package/lib/general/cloudflare-domain.d.ts +42 -0
  19. package/lib/general/cloudflare-domain.js +12 -0
  20. package/lib/general/colored-text.d.ts +7 -0
  21. package/lib/general/colored-text.js +28 -0
  22. package/lib/general/domain.d.ts +92 -0
  23. package/lib/general/domain.js +38 -0
  24. package/lib/general/namecheap-domain.d.ts +80 -0
  25. package/lib/general/namecheap-domain.js +14 -0
  26. package/lib/general/push.d.ts +6 -0
  27. package/lib/general/push.js +2 -0
  28. package/lib/general/queue.d.ts +1 -0
  29. package/lib/general/queue.js +2 -0
  30. package/lib/general/shape.d.ts +18 -0
  31. package/lib/general/shape.js +36 -0
  32. package/lib/index.d.ts +14 -33
  33. package/lib/index.js +29 -29
  34. package/lib/network/keitaro/keitaro-service.d.ts +4 -4
  35. package/lib/offers/list.d.ts +37 -0
  36. package/lib/offers/list.js +12 -0
  37. package/lib/offers/offer.d.ts +95 -0
  38. package/lib/offers/offer.js +38 -0
  39. package/lib/offers/section.d.ts +47 -0
  40. package/lib/offers/section.js +20 -0
  41. package/lib/panel/flash/create-flash-app-request.d.ts +3 -3
  42. package/lib/panel/flash/upsert-flash-app-request.d.ts +4 -4
  43. package/lib/utils/keitaro-utils.d.ts +7 -7
  44. package/package.json +1 -1
  45. package/src/{flash/flash-app-integration.ts → app/app-integration.ts} +1 -1
  46. package/src/{flash/flash-app-list-item.ts → app/app-list-item.ts} +1 -1
  47. package/src/{flash/flash-app-type.ts → app/app-type.ts} +1 -1
  48. package/src/{flash/flash-app.ts → app/app.ts} +19 -9
  49. package/src/{models → general}/domain.ts +1 -1
  50. package/src/index.ts +14 -35
  51. package/src/network/keitaro/keitaro-service.ts +4 -4
  52. package/src/offers/list.ts +20 -0
  53. package/src/offers/offer.ts +77 -0
  54. package/src/offers/section.ts +30 -0
  55. package/src/panel/flash/upsert-flash-app-request.ts +4 -4
  56. package/src/utils/keitaro-utils.ts +10 -10
  57. package/src/aso/config/aso-config-v0.ts +0 -441
  58. package/src/aso/config/aso-config-v1.ts +0 -440
  59. package/src/aso/config/aso-config-v2.ts +0 -399
  60. package/src/aso/config/aso-config-v3.ts +0 -396
  61. package/src/aso/config/aso-config-v4.ts +0 -305
  62. package/src/aso/config/aso-config-v5.ts +0 -328
  63. package/src/aso/config/aso-default-config.ts +0 -67
  64. package/src/aso/config/aso-single-response.ts +0 -6
  65. package/src/aso/offer/aso-customized-offer.ts +0 -12
  66. package/src/aso/offer/aso-offer-response.ts +0 -7
  67. package/src/aso/offer/aso-offer-section.ts +0 -7
  68. package/src/aso/offer/aso-single-offer.ts +0 -5
  69. package/src/aso/offerwall/auth/offerwall-auth-config.ts +0 -17
  70. package/src/aso/offerwall/auth/offerwall-auth-localization.ts +0 -9
  71. package/src/aso/offerwall/auth/offerwall-auth-submit-request.ts +0 -3
  72. package/src/aso/offerwall/auth/offerwall-auth-submit-response.ts +0 -3
  73. package/src/aso/offerwall/offerwall-home-dialog-data.ts +0 -6
  74. package/src/aso/offerwall/offerwall-offer.ts +0 -9
  75. package/src/aso/offerwall/offerwall-response.ts +0 -7
  76. package/src/aso/offerwall/offerwall-section.ts +0 -7
  77. package/src/aso/usage-logs/aso-config-fetch-entry.ts +0 -31
  78. package/src/shared/colored-text.tsx +0 -38
  79. package/src/shared/offer.ts +0 -12
  80. package/src/utils/app-gathering-utils.ts +0 -15
  81. /package/src/{models → general}/cloudflare-domain.ts +0 -0
  82. /package/src/{models → general}/namecheap-domain.ts +0 -0
  83. /package/src/{shared → general}/push.ts +0 -0
  84. /package/src/{shared → general}/queue.ts +0 -0
  85. /package/src/{shared → general}/shape.tsx +0 -0
@@ -1,328 +0,0 @@
1
- import { IAsoDefaultConfig } from "./aso-default-config";
2
-
3
- export interface IConfig {
4
- name: string,
5
- email: string,
6
- id: number,
7
- bundle: string,
8
- host: string,
9
- ip: string,
10
- sshPassword: string,
11
- sshPort?: string
12
-
13
- trackingLink: string,
14
- newTrackingLink?: string,
15
- fullAccess: boolean,
16
- appsflyerKey: string,
17
- onesignalKey: string,
18
- onesignalRestApiKey?: string,
19
- allowedCountries: string,
20
- excludedCountries: string,
21
- supportUrl?: string,
22
- support?: {[key: string]: string},
23
- privacyPolicyUrl: string,
24
- callCoolDown: number,
25
- smsCoolDown: number,
26
- maxSmsTries: number,
27
- maxCallTries: number,
28
- smscLogin: string,
29
- smscPassword: string,
30
-
31
- localization?: ILocalizationMap | ILocalization,
32
- localizationMapping: ILocalizationMapping,
33
- authorizationActionMapping: IAuthorizationActionMapping,
34
- offerSectionMapping: IOfferSectionMapping,
35
- offerResultMapping: IOfferResultMapping,
36
- configMapping: IConfigMapping,
37
- coloredStringMapping: IColoredStringMapping,
38
- coloredSpanMapping: IColoredSpanMapping,
39
-
40
- configEndpoint: string,
41
- offersEndpoint: string,
42
- nextActionEndpoint: string,
43
- currentActionEndpoint: string,
44
- validationEndpoint: string,
45
- imageEndpoint: string,
46
-
47
- sectionsParameter: string,
48
- phoneParameter: string,
49
- codeParameter: string
50
- validityParameter: string,
51
- appsflyerIdParameter: string,
52
- advertisingIdParameter: string,
53
- onesignalIdParameter: string,
54
- offerIdParameter: string,
55
- countryCodeParameter: string,
56
-
57
- redirectFolderName?: string,
58
- redirectHtmlName: string,
59
- redirectJsName: string,
60
- redirectJsCustomNumberParameter?: string,
61
-
62
- networkErrorDialogTitle: LocalizedString,
63
- networkErrorDialogMessage: LocalizedString,
64
- networkErrorDialogButton: LocalizedString,
65
-
66
- skipCode?: boolean,
67
- externalIpGeo?: boolean,
68
- pinImitationCountries?: string,
69
-
70
- exportedTranslations?: boolean,
71
- readyForPanel?: boolean,
72
-
73
- oldHosts?: string[]
74
-
75
- betting?: boolean,
76
-
77
- backPressBounceTimeSeconds: number,
78
- backPressesToShowHome: number,
79
- homeOnBackPressEnabled: boolean,
80
- homeButtonEnabled: boolean,
81
-
82
- version: number
83
- }
84
-
85
- export interface IAuthorizationActionMapping {
86
- hasNextAction: string,
87
- nextActionIn: string,
88
- changeNumberCaption: string,
89
- nextActionCaption: string,
90
- nextActionPatternCaption: string,
91
- actualTitlePattern: string,
92
- expiredTitlePattern: string,
93
- subtitle: string,
94
- when: string,
95
- authorized: string
96
- }
97
-
98
- export interface ILocalizationMap {
99
- [key: string]: ILocalization
100
- }
101
-
102
- export interface IOfferSectionMapping {
103
- offers: string
104
- title: string
105
- internal: [string, any][]
106
- }
107
-
108
- export interface IOfferResultMapping {
109
- id: string,
110
- backgroundImage: string,
111
- foregroundImage: string,
112
- emoji: string,
113
- emojiCaption: string,
114
- buttonText: string,
115
- mappingName: string
116
- }
117
-
118
- export interface LocalizedString {
119
- en: string,
120
- ru: string
121
- }
122
-
123
- export interface ILocalization {
124
- numberWillReceiveACallPattern: string,
125
- numberReceivedACallPattern: string,
126
- numberReceivedASmsPattern: string,
127
- numberWillReceiveASmsPattern: string,
128
- enterLastFourDigits: string,
129
- enterCodeFromSms: string,
130
- callAgainSPattern: string,
131
- callAgain: string,
132
- smsAgain: string,
133
- smsAgainSPattern: string,
134
- changeNumber: string,
135
- sendSms: string,
136
- sendSmsSPattern: string,
137
- unfortunatelyYourTriesLeft: string,
138
-
139
- error_phone: string,
140
- error_serverTitle: string,
141
- error_serverMessage: string,
142
- error_serverOkButton: string,
143
- error_serverAgainButton: string,
144
- error_serverExitButton: string,
145
- error_invalidCode: string
146
-
147
- changeNumber_title: string,
148
- changeNumber_message: string,
149
- changeNumber_no: string,
150
- changeNumber_yes: string,
151
-
152
- next_title: string,
153
- next_message: string,
154
- next_yes: string,
155
- next_no: string,
156
-
157
- supportCaption: string,
158
- appIsNotInstalledCaption: string,
159
-
160
- game_spin: string,
161
- game_balance: string,
162
- game_balance_pattern: string,
163
- game_win: string,
164
- game_win_pattern: string,
165
- game_authorize: string,
166
- game_demo_welcome: string,
167
- game_demo_available_after_auth: string,
168
- game_min_rate_error_pattern: string,
169
- game_yourLevel: string,
170
-
171
- auth_title: IColoredString,
172
- auth_subtitle: IColoredString
173
- auth_changeNumber: string,
174
- auth_getAccess: string,
175
- auth_enterAsGuest: string,
176
- auth_privacyPolicyAcceptance: string,
177
- auth_privacyPolicy: IColoredString,
178
-
179
- homeHint: string
180
- }
181
-
182
- export interface IColoredString {
183
- text: string,
184
- colors: IColoredSpan[]
185
- mappingName: string
186
- }
187
-
188
- export interface IColoredSpan {
189
- from: number,
190
- to: number,
191
- color: string
192
- }
193
-
194
- export interface IColoredStringMapping {
195
- text: string,
196
- colors: string,
197
- internal: [string, IColoredSpanMapping][]
198
- }
199
-
200
- export interface IColoredSpanMapping {
201
- from: string,
202
- to: string,
203
- color: string
204
- }
205
- export interface IConfigMapping {
206
- fullAccess: string,
207
- appsflyerKey: string,
208
- onesignalKey: string,
209
- allowedCountries: string,
210
- excludedCountries: string,
211
- supportUrl: string,
212
- privacyPolicyUrl: string,
213
- localization: string,
214
-
215
- backPressBounceTimeSeconds: string,
216
- backPressesToShowHome: string,
217
- homeOnBackPressEnabled: string,
218
- homeButtonEnabled: string,
219
-
220
- internal: [string, ILocalizationMapping][],
221
- }
222
-
223
- export interface ILocalizationMapping {
224
- game_spin: string,
225
- game_balance_pattern: string,
226
- game_win_pattern: string
227
- game_authorize: string,
228
- game_demo_welcome: string,
229
- game_demo_available_after_auth: string,
230
- game_min_rate_error_pattern: string,
231
- game_yourLevel: string,
232
-
233
- error_phone: string,
234
- error_serverTitle: string,
235
- error_serverMessage: string,
236
- error_serverOkButton: string,
237
- error_serverAgainButton: string,
238
- error_serverExitButton: string,
239
- error_invalidCode: string
240
-
241
- changeNumber_title: string,
242
- changeNumber_message: string,
243
- changeNumber_no: string,
244
- changeNumber_yes: string,
245
-
246
- next_title: string,
247
- next_message: string,
248
- next_yes: string,
249
- next_no: string,
250
-
251
- supportCaption: string,
252
- appIsNotInstalledCaption: string,
253
-
254
- auth_title: string,
255
- auth_subtitle: string
256
- auth_getAccess: string,
257
- auth_enterAsGuest: string,
258
- auth_privacyPolicyAcceptance: string,
259
- auth_privacyPolicy: string,
260
-
261
- homeHint: string,
262
-
263
- internal: [string, IColoredStringMapping][]
264
- }
265
-
266
- export let toDefault = (config: IConfig): IAsoDefaultConfig => {
267
- return {
268
- id: config.id,
269
- bundle: config.bundle,
270
- name: config.name,
271
- email: config.email,
272
- host: config.host,
273
- ip: config.ip,
274
- sshPassword: config.sshPassword,
275
- sshPort: config.sshPort,
276
- trackingLink: config.trackingLink,
277
- newTrackingLink: config.newTrackingLink,
278
-
279
- fullAccess: config.fullAccess,
280
- appsflyerKey: config.appsflyerKey,
281
- onesignalKey: config.onesignalKey,
282
- onesignalRestApiKey: config.onesignalRestApiKey,
283
- allowedCountries: config.allowedCountries,
284
- excludedCountries: config.excludedCountries,
285
-
286
- callCoolDown: config.callCoolDown,
287
- smsCoolDown: config.smsCoolDown,
288
- maxSmsTries: config.maxSmsTries,
289
- maxCallTries: config.maxCallTries,
290
- smscLogin: config.smscLogin,
291
- smscPassword: config.sshPassword,
292
-
293
- support: config.support,
294
-
295
- configMapping: config.configMapping,
296
- offerSectionMapping: config.offerSectionMapping,
297
- authorizationActionMapping: config.authorizationActionMapping,
298
-
299
- configEndpoint: config.configEndpoint,
300
- offersEndpoint: config.offersEndpoint,
301
- nextActionEndpoint: config.nextActionEndpoint,
302
- currentActionEndpoint: config.currentActionEndpoint,
303
- validationEndpoint: config.validationEndpoint,
304
- imageEndpoint: config.imageEndpoint,
305
-
306
- sectionsParameter: config.sectionsParameter,
307
- phoneParameter: config.phoneParameter,
308
- codeParameter: config.codeParameter,
309
- validityParameter: config.validityParameter,
310
- appsflyerIdParameter: config.appsflyerIdParameter,
311
- advertisingIdParameter: config.advertisingIdParameter,
312
- onesignalIdParameter: config.onesignalIdParameter,
313
- offerIdParameter: config.offerIdParameter,
314
- countryCodeParameter: config.countryCodeParameter,
315
-
316
- redirectFolderName: config.redirectFolderName,
317
- redirectHtmlName: config.redirectHtmlName,
318
- redirectJsName: config.redirectJsName,
319
- redirectJsCustomNumberParameter: config.redirectJsCustomNumberParameter,
320
-
321
- skipCode: config.skipCode,
322
- externalIpGeo: config.externalIpGeo,
323
- exportedTranslations: config.exportedTranslations,
324
- readyForPanel: config.readyForPanel,
325
-
326
- version: 5
327
- }
328
- }
@@ -1,67 +0,0 @@
1
- export interface IAsoDefaultConfig {
2
- id: number,
3
- bundle: string,
4
- name: string,
5
- email: string,
6
- host: string,
7
- ip: string,
8
- sshPassword: string,
9
- sshPort?: string,
10
- trackingLink: string,
11
-
12
- fullAccess: boolean,
13
- appsflyerKey: string,
14
- onesignalKey: string,
15
- onesignalRestApiKey?: string,
16
- allowedCountries: string,
17
- excludedCountries: string,
18
-
19
- support?: {[key: string]: string},
20
-
21
- callCoolDown: number,
22
- smsCoolDown: number,
23
- maxSmsTries: number,
24
- maxCallTries: number,
25
- smscLogin: string,
26
- smscPassword: string,
27
-
28
- configMapping: object,
29
- offerSectionMapping: object,
30
- authorizationActionMapping: object,
31
-
32
- configEndpoint: string,
33
- offersEndpoint: string,
34
- nextActionEndpoint: string,
35
- currentActionEndpoint: string,
36
- validationEndpoint: string,
37
- imageEndpoint: string,
38
-
39
- sectionsParameter: string,
40
- phoneParameter: string,
41
- codeParameter: string
42
- validityParameter: string,
43
- appsflyerIdParameter: string,
44
- advertisingIdParameter: string,
45
- onesignalIdParameter: string,
46
- offerIdParameter: string,
47
- countryCodeParameter?: string,
48
-
49
- redirectHtmlName: string,
50
- redirectJsName: string,
51
- redirectFolderName?: string,
52
- redirectJsCustomNumberParameter?: string,
53
-
54
- apiPrefix?: string,
55
-
56
- skipCode?: boolean,
57
- externalIpGeo?: boolean,
58
- pinImitationCountries?: string,
59
- newTrackingLink?: string,
60
-
61
- exportedTranslations?: boolean,
62
- readyForPanel?: boolean,
63
-
64
- betting?: boolean,
65
-
66
- version: number
67
- }
@@ -1,6 +0,0 @@
1
- import { IAsoDefaultConfig } from "./aso-default-config";
2
-
3
- export interface IAsoConfigResponse {
4
- default: IAsoDefaultConfig,
5
- plain: any
6
- }
@@ -1,12 +0,0 @@
1
- import { IOffer } from "../../shared/offer"
2
-
3
- export interface IAsoCustomizedOffer {
4
- offer: IOffer,
5
- buttonText?: Object
6
- emojiIcon?: string,
7
- emojiCaption?: string,
8
- customUrl?: string,
9
- hidden?: boolean,
10
- geo?: string
11
- graphicFolder?: string
12
- }
@@ -1,7 +0,0 @@
1
- import { IAsoCustomizedOffer } from "./aso-customized-offer";
2
- import { IAsoSection } from "./aso-offer-section";
3
-
4
- export interface IAsoOfferResponse {
5
- sections: IAsoSection[],
6
- customizedOffers: IAsoCustomizedOffer[],
7
- }
@@ -1,7 +0,0 @@
1
- import { IOffer } from "../../shared/offer"
2
-
3
- export interface IAsoSection {
4
- offers: IOffer[],
5
- title: Object
6
- buttonText: Object
7
- }
@@ -1,5 +0,0 @@
1
- export interface IAsoSingleOffer {
2
- name: string
3
- newTracker?: boolean,
4
- customUrl?: string
5
- }
@@ -1,17 +0,0 @@
1
- import { IOfferWallAuthLocalization } from "aso/offerwall/auth/offerwall-auth-localization";
2
- import { IGradient, IShape } from "../../../shared/shape";
3
-
4
- export interface IOfferWallAuthConfig {
5
- includedCountries: string,
6
- excludedCountries: string,
7
- registerButtonShape: IShape,
8
- phoneInputShape: IShape,
9
- offerwallItemShape: IShape,
10
- background: IGradient | string,
11
- logoUrl: string,
12
-
13
- owBackground?: IGradient | string,
14
- fontUrl?: string,
15
-
16
- authLocalization: IOfferWallAuthLocalization
17
- }
@@ -1,9 +0,0 @@
1
- import { IColoredString } from "aso/config/aso-config-v0";
2
-
3
- export interface IOfferWallAuthLocalization {
4
- title: IColoredString,
5
- subtitle: IColoredString,
6
- privacyPolicyTopText: string,
7
- privacyPolicyBottomText: IColoredString,
8
- registerButtonText: string,
9
- }
@@ -1,3 +0,0 @@
1
- export interface IOfferWallAuthSubmitRequest {
2
- phone: string
3
- }
@@ -1,3 +0,0 @@
1
- export interface IOfferWallAuthSubmitResponse {
2
- ok: boolean
3
- }
@@ -1,6 +0,0 @@
1
- export interface IOfferWallHomeDialogData {
2
- title: string,
3
- message: string,
4
- yes: string,
5
- no: string
6
- }
@@ -1,9 +0,0 @@
1
- export interface IOfferWallOffer {
2
- url: string;
3
- foregroundUrl: string;
4
- backgroundUrl: string;
5
- emojiIcon?: string;
6
- emojiCaption?: string;
7
- caption: string;
8
- }
9
-
@@ -1,7 +0,0 @@
1
- import { IOfferWallHomeDialogData } from "aso/offerwall/offerwall-home-dialog-data";
2
- import { IOfferWallSection } from "aso/offerwall/offerwall-section";
3
-
4
- export interface IOfferWallResponse {
5
- sections: IOfferWallSection[],
6
- homeDialog: IOfferWallHomeDialogData
7
- }
@@ -1,7 +0,0 @@
1
- import { IOfferWallOffer } from "aso/offerwall/offerwall-offer"
2
-
3
- export interface IOfferWallSection {
4
- offers: IOfferWallOffer[],
5
- title: string
6
- buttonText: string
7
- }
@@ -1,31 +0,0 @@
1
- import { Document } from "mongoose"
2
-
3
- export interface IUsageLogEntry extends Document {
4
- countryCode: string,
5
- ip: string,
6
- timestamp: number,
7
- phone: string
8
- }
9
-
10
- export interface IUsageLogRequest {
11
- from: number,
12
- to: number,
13
- first: number,
14
- last: number,
15
- count: number
16
- }
17
-
18
- interface ICountryInfo {
19
- all: number,
20
- authorized: number
21
- }
22
-
23
- export interface IUsageLogResponse {
24
- countriesInfo: {
25
- [key: string]: ICountryInfo
26
- },
27
- first: number,
28
- last: number,
29
- entries: IUsageLogEntry[],
30
- newEntries: IUsageLogEntry[]
31
- }
@@ -1,38 +0,0 @@
1
- import { IColoredString } from 'aso/config/aso-config-v0';
2
- import React from 'react';
3
- import styled from 'styled-components';
4
-
5
- export interface IColoredTextProps {
6
- coloredText: IColoredString;
7
- className: string
8
- }
9
-
10
- const StyledColoredSpan = styled.span<{ color: string }>`
11
- color: ${(props) => props.color};
12
- display: inline;
13
- `;
14
-
15
- export function ColoredText({ coloredText, className }: IColoredTextProps) {
16
- const { text, colors } = coloredText;
17
-
18
- let startIndex = 0;
19
- const spans = [];
20
-
21
- for (const { from, to, color } of colors) {
22
- spans.push(<span key={`text_${startIndex}`}>{text.slice(startIndex, from)}</span>);
23
- spans.push(
24
- <StyledColoredSpan key={`text_${from}`} color={color}>
25
- {text.slice(from, to)}
26
- </StyledColoredSpan>
27
- );
28
- startIndex = to;
29
- }
30
-
31
- if (startIndex < text.length) {
32
- spans.push(<span key={`text_${startIndex}`}>{text.slice(startIndex)}</span>);
33
- }
34
-
35
- return <div className={className}>{spans}</div>;
36
- }
37
-
38
- export default ColoredText;
@@ -1,12 +0,0 @@
1
- export interface IOffer {
2
- id: string
3
- name: string
4
- graphicFolder: string,
5
- geo: string,
6
- emojiIcon?: string,
7
- emojiCaption?: string,
8
- hidden?: boolean,
9
- caption: string,
10
- partner: string,
11
- customUrl?: string
12
- }
@@ -1,15 +0,0 @@
1
- import { IFlashApp } from "index";
2
-
3
- export type TrackingMap = { [key: string]: TrackingMapValue | undefined };
4
-
5
- type TrackingMapValue = {
6
- trackingUrl: string | undefined;
7
- };
8
-
9
- export type PasteMap = { [key: string]: PasteMapValue };
10
-
11
- type PasteMapValue = {
12
- content: string,
13
- paste_id: string,
14
- ccountId: string,
15
- };
File without changes
File without changes
File without changes
File without changes
File without changes