@smartico/public-api 0.0.4 → 0.0.5

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 (42) hide show
  1. package/README.md +23 -44
  2. package/dist/Core/GetLabelInfoRequest.d.ts +3 -0
  3. package/dist/Core/GetLabelInfoResponse.d.ts +7 -0
  4. package/dist/Core/GetTranslationsRequest.d.ts +7 -0
  5. package/dist/Core/GetTranslationsResponse.d.ts +7 -0
  6. package/dist/Core/PublicLabelSettings.d.ts +28 -0
  7. package/dist/Core/PublicProperties.d.ts +11 -0
  8. package/dist/Core/ResponseIdentify.d.ts +12 -0
  9. package/dist/Core/TranslationArea.d.ts +9 -0
  10. package/dist/Core/index.d.ts +8 -0
  11. package/dist/MiniGames/SAWAskForUsername.d.ts +4 -0
  12. package/dist/MiniGames/SAWDoSpinResponse.d.ts +1 -7
  13. package/dist/MiniGames/SAWSpinErrorCode.d.ts +7 -0
  14. package/dist/MiniGames/SAWTemplateUI.d.ts +2 -5
  15. package/dist/MiniGames/SAWUtils.d.ts +5 -0
  16. package/dist/MiniGames/index.d.ts +5 -2
  17. package/dist/OCache.d.ts +11 -0
  18. package/dist/SmarticoAPI.d.ts +14 -2
  19. package/dist/index.d.ts +1 -0
  20. package/dist/index.js +312 -36
  21. package/dist/index.js.map +1 -1
  22. package/dist/index.modern.mjs +217 -19
  23. package/dist/index.modern.mjs.map +1 -1
  24. package/package.json +9 -3
  25. package/src/Core/GetLabelInfoRequest.ts +5 -0
  26. package/src/Core/GetLabelInfoResponse.ts +6 -0
  27. package/src/Core/GetTranslationsRequest.ts +10 -0
  28. package/src/Core/GetTranslationsResponse.ts +8 -0
  29. package/src/Core/PublicLabelSettings.ts +34 -0
  30. package/src/Core/PublicProperties.ts +11 -0
  31. package/src/Core/ResponseIdentify.ts +14 -0
  32. package/src/Core/TranslationArea.ts +11 -0
  33. package/src/Core/index.ts +18 -0
  34. package/src/MiniGames/SAWAskForUsername.ts +5 -0
  35. package/src/MiniGames/SAWDoSpinResponse.ts +1 -8
  36. package/src/MiniGames/SAWSpinErrorCode.ts +8 -0
  37. package/src/MiniGames/SAWTemplateUI.ts +3 -5
  38. package/src/MiniGames/SAWUtils.ts +31 -0
  39. package/src/MiniGames/index.ts +8 -3
  40. package/src/OCache.ts +54 -0
  41. package/src/SmarticoAPI.ts +128 -9
  42. package/src/index.ts +1 -0
@@ -1,4 +1,5 @@
1
1
  import * as superagent from 'superagent';
2
+ import NodeCache from 'node-cache';
2
3
 
3
4
  var ClassId;
4
5
  (function (ClassId) {
@@ -65,13 +66,6 @@ class IntUtils {
65
66
  }
66
67
  }
67
68
 
68
- var SAWAcknowledgeType;
69
- (function (SAWAcknowledgeType) {
70
- SAWAcknowledgeType[SAWAcknowledgeType["Silent"] = 1] = "Silent";
71
- SAWAcknowledgeType[SAWAcknowledgeType["QuickMessage"] = 2] = "QuickMessage";
72
- SAWAcknowledgeType[SAWAcknowledgeType["FullMessage"] = 3] = "FullMessage";
73
- })(SAWAcknowledgeType || (SAWAcknowledgeType = {}));
74
-
75
69
  var SAWBuyInType;
76
70
  (function (SAWBuyInType) {
77
71
  SAWBuyInType[SAWBuyInType["Free"] = 1] = "Free";
@@ -84,14 +78,44 @@ const SAWBuyInTypeName = {
84
78
  [SAWBuyInType.Spins]: "spins"
85
79
  };
86
80
 
87
- var SAWSpinErrorCode;
88
- (function (SAWSpinErrorCode) {
89
- SAWSpinErrorCode[SAWSpinErrorCode["SAW_OK"] = 0] = "SAW_OK";
90
- SAWSpinErrorCode[SAWSpinErrorCode["SAW_NO_SPINS"] = 40001] = "SAW_NO_SPINS";
91
- SAWSpinErrorCode[SAWSpinErrorCode["SAW_PRIZE_POOL_EMPTY"] = 40002] = "SAW_PRIZE_POOL_EMPTY";
92
- SAWSpinErrorCode[SAWSpinErrorCode["SAW_NOT_ENOUGH_POINTS"] = 40003] = "SAW_NOT_ENOUGH_POINTS";
93
- SAWSpinErrorCode[SAWSpinErrorCode["SAW_FAILED_MAX_SPINS_REACHED"] = 40004] = "SAW_FAILED_MAX_SPINS_REACHED";
94
- })(SAWSpinErrorCode || (SAWSpinErrorCode = {}));
81
+ class SAWUtils {}
82
+ SAWUtils.canPlay = (t, pointsBalance) => {
83
+ if (t === null || t === undefined) {
84
+ return false;
85
+ }
86
+ switch (t.saw_buyin_type_id) {
87
+ case SAWBuyInType.Free:
88
+ {
89
+ return true;
90
+ }
91
+ case SAWBuyInType.Spins:
92
+ {
93
+ return t.spin_count !== null && t.spin_count > 0;
94
+ }
95
+ case SAWBuyInType.Points:
96
+ {
97
+ return t.buyin_cost_points <= pointsBalance;
98
+ }
99
+ default:
100
+ {
101
+ console.error("MiniGamesUtils.canPlay: Unknwon SAW buyin type " + t.saw_buyin_type_id);
102
+ return false;
103
+ }
104
+ }
105
+ };
106
+
107
+ var SAWAcknowledgeType;
108
+ (function (SAWAcknowledgeType) {
109
+ SAWAcknowledgeType[SAWAcknowledgeType["Silent"] = 1] = "Silent";
110
+ SAWAcknowledgeType[SAWAcknowledgeType["QuickMessage"] = 2] = "QuickMessage";
111
+ SAWAcknowledgeType[SAWAcknowledgeType["FullMessage"] = 3] = "FullMessage";
112
+ })(SAWAcknowledgeType || (SAWAcknowledgeType = {}));
113
+
114
+ var SAWAskForUsername;
115
+ (function (SAWAskForUsername) {
116
+ SAWAskForUsername["NOASK"] = "no-ask";
117
+ SAWAskForUsername["ONSUMBIT"] = "on-submit";
118
+ })(SAWAskForUsername || (SAWAskForUsername = {}));
95
119
 
96
120
  var SAWGameType;
97
121
  (function (SAWGameType) {
@@ -115,6 +139,15 @@ var SAWPrizeType;
115
139
  SAWPrizeType[SAWPrizeType["JACKPOT"] = 6] = "JACKPOT";
116
140
  })(SAWPrizeType || (SAWPrizeType = {}));
117
141
 
142
+ var SAWSpinErrorCode;
143
+ (function (SAWSpinErrorCode) {
144
+ SAWSpinErrorCode[SAWSpinErrorCode["SAW_OK"] = 0] = "SAW_OK";
145
+ SAWSpinErrorCode[SAWSpinErrorCode["SAW_NO_SPINS"] = 40001] = "SAW_NO_SPINS";
146
+ SAWSpinErrorCode[SAWSpinErrorCode["SAW_PRIZE_POOL_EMPTY"] = 40002] = "SAW_PRIZE_POOL_EMPTY";
147
+ SAWSpinErrorCode[SAWSpinErrorCode["SAW_NOT_ENOUGH_POINTS"] = 40003] = "SAW_NOT_ENOUGH_POINTS";
148
+ SAWSpinErrorCode[SAWSpinErrorCode["SAW_FAILED_MAX_SPINS_REACHED"] = 40004] = "SAW_FAILED_MAX_SPINS_REACHED";
149
+ })(SAWSpinErrorCode || (SAWSpinErrorCode = {}));
150
+
118
151
  var SAWWinSoundType;
119
152
  (function (SAWWinSoundType) {
120
153
  SAWWinSoundType[SAWWinSoundType["Disappointing"] = 1] = "Disappointing";
@@ -129,12 +162,54 @@ const SAWWinSoundFiles = {
129
162
  [SAWWinSoundType.HighlyPositive]: "saw-highly-positive.m4a"
130
163
  };
131
164
 
165
+ var ECacheContext;
166
+ (function (ECacheContext) {
167
+ ECacheContext[ECacheContext["Translations"] = 0] = "Translations";
168
+ ECacheContext[ECacheContext["LabelInfo"] = 1] = "LabelInfo";
169
+ })(ECacheContext || (ECacheContext = {}));
170
+ const WITH_REF_CACHE = [ECacheContext.Translations];
171
+ class OCache {
172
+ static get(oKey, cacheContext) {
173
+ const key = cacheContext.toString() + '_' + JSON.stringify(oKey);
174
+ if (this.cache[cacheContext] === undefined) {
175
+ this.cache[cacheContext] = new NodeCache({
176
+ useClones: !WITH_REF_CACHE.includes(cacheContext)
177
+ });
178
+ }
179
+ return this.cache[cacheContext].get(key);
180
+ }
181
+ static set(oKey, o, cacheContext, ttlSeconds = 60) {
182
+ const key = cacheContext.toString() + '_' + JSON.stringify(oKey);
183
+ this.cache[cacheContext].set(key, o, ttlSeconds);
184
+ }
185
+ static async use(oKey, cacheContext, f, ttlSeconds = 60) {
186
+ if (ttlSeconds <= 0) {
187
+ return await f();
188
+ } else {
189
+ let o = OCache.get(oKey, cacheContext);
190
+ if (o === undefined) {
191
+ o = await f();
192
+ OCache.set(oKey, o, cacheContext, ttlSeconds);
193
+ }
194
+ return o;
195
+ }
196
+ }
197
+ static async clear(cacheContext) {
198
+ if (this.cache[cacheContext]) {
199
+ this.cache[cacheContext].flushAll();
200
+ }
201
+ }
202
+ }
203
+ OCache.cache = {};
204
+
132
205
  const PUBLIC_API_URL = 'https://papi{ENV_ID}.smartico.ai/services/public';
206
+ const AVATAR_DOMAIN = 'https://img{ENV_ID}.smr.vc';
133
207
  class SmarticoAPI {
134
208
  constructor(label_api_key, brand_api_key, options = {}) {
135
209
  this.label_api_key = void 0;
136
210
  this.brand_api_key = void 0;
137
211
  this.publicUrl = void 0;
212
+ this.avatarDomain = void 0;
138
213
  this.logger = void 0;
139
214
  this.logCIDs = void 0;
140
215
  this.logHTTPTiming = void 0;
@@ -152,6 +227,7 @@ class SmarticoAPI {
152
227
  }
153
228
  label_api_key = label_api_key.substring(0, 36);
154
229
  this.publicUrl = PUBLIC_API_URL.replace('{ENV_ID}', ENV_ID);
230
+ this.avatarDomain = AVATAR_DOMAIN.replace('{ENV_ID}', ENV_ID);
155
231
  }
156
232
  async send(message, expectCID) {
157
233
  if (this.logCIDs.includes(message.cid)) {
@@ -161,6 +237,7 @@ class SmarticoAPI {
161
237
  try {
162
238
  const timeStart = new Date().getTime();
163
239
  const res = await superagent.post(this.publicUrl).send(message);
240
+ // const res = await superagent.post('http://channel01.int.smartico.ai:81/services/public').send(message);
164
241
  const timeEnd = new Date().getTime();
165
242
  if (this.logHTTPTiming) {
166
243
  this.logger.always('HTTP time, ms:' + (timeEnd - timeStart));
@@ -222,9 +299,68 @@ class SmarticoAPI {
222
299
  uuid: IntUtils.uuid(),
223
300
  ts: new Date().getTime()
224
301
  }, payload);
302
+ if (message.ext_user_id === undefined || message.ext_user_id === null) {
303
+ delete message.ext_user_id;
304
+ }
225
305
  return message;
226
306
  }
227
- async miniGamesGetTemplates(user_ext_id) {
307
+ async coreReportCustomEvent(user_ext_id, eventType, payload = {}) {
308
+ const eventMessage = this.buildMessage(user_ext_id, ClassId.EVENT, {
309
+ eventType,
310
+ payload
311
+ });
312
+ const eventResponse = await this.send(eventMessage, ClassId.EVENT_RESPONSE);
313
+ return eventResponse;
314
+ }
315
+ async coreGetTranslations(user_ext_id, lang_code, areas, cacheSec = 60) {
316
+ var _this = this;
317
+ const response = await OCache.use(`${lang_code}-${this.label_api_key}-${this.brand_api_key}`, ECacheContext.Translations, async function () {
318
+ const tsBaseRQ = _this.buildMessage(user_ext_id, ClassId.GET_TRANSLATIONS_REQUEST, {
319
+ lang_code: "EN",
320
+ hash_code: 0,
321
+ areas
322
+ });
323
+ const trBase = await _this.send(tsBaseRQ);
324
+ if (lang_code !== "EN") {
325
+ const trUserRQ = _this.buildMessage(user_ext_id, ClassId.GET_TRANSLATIONS_REQUEST, {
326
+ lang_code,
327
+ hash_code: 0,
328
+ areas
329
+ });
330
+ const trUser = await _this.send(trUserRQ);
331
+ Object.keys(trUser.translations).forEach(k => {
332
+ trBase.translations[k] = trUser.translations[k];
333
+ });
334
+ }
335
+ return trBase;
336
+ }, cacheSec);
337
+ return response;
338
+ }
339
+ async coreIdentifyLabel(user_ext_id, cacheSec = 60) {
340
+ var _this2 = this;
341
+ return OCache.use(`${this.label_api_key} - ${this.brand_api_key}`, ECacheContext.LabelInfo, async function () {
342
+ const message = _this2.buildMessage(user_ext_id, ClassId.GET_LABEL_INFO);
343
+ return _this2.send(message, ClassId.GET_LABEL_INFO_RESPONSE);
344
+ }, cacheSec);
345
+ }
346
+ async coreIdentifyUser(user_ext_id) {
347
+ const message = this.buildMessage(user_ext_id, ClassId.IDENTIFY, {
348
+ request_id: IntUtils.uuid() // AA: do we need request_id?
349
+ });
350
+
351
+ const r = await this.send(message, ClassId.IDENTIFY_RESPONSE);
352
+ if (!(r.avatar_id && r.avatar_id.startsWith('http'))) {
353
+ r.avatar_id = AVATAR_DOMAIN + '/avatar/' + r.avatar_id;
354
+ }
355
+ return r;
356
+ }
357
+ async coreChangeUsername(user_ext_id, public_username_custom) {
358
+ const message = this.buildMessage(user_ext_id, ClassId.CHANGE_USERNAME, {
359
+ public_username_custom
360
+ });
361
+ return this.send(message, ClassId.CHANGE_USERNAME_RESPONSE);
362
+ }
363
+ async sawGetTemplates(user_ext_id) {
228
364
  const message = this.buildMessage(user_ext_id, ClassId.SAW_GET_SPINS_REQUEST);
229
365
  const response = await this.send(message);
230
366
  if (response && response.templates) {
@@ -242,7 +378,7 @@ class SmarticoAPI {
242
378
  }
243
379
  return response;
244
380
  }
245
- miniGamesFormatTemplatesForWidget(templates, pointsBalance) {
381
+ async sawFormatTemplatesForWidget(templates, pointsBalance) {
246
382
  return templates.filter(r => r.saw_template_id >= 1).map(r => {
247
383
  var _r$saw_skin_ui_defini, _r$saw_skin_ui_defini2;
248
384
  return {
@@ -254,12 +390,74 @@ class SmarticoAPI {
254
390
  jackpot: r.jackpot_current,
255
391
  spin_count: r.spin_count,
256
392
  buyin_cost_points: r.buyin_cost_points,
257
- can_play: r.saw_buyin_type_id === SAWBuyInType.Free || r.saw_buyin_type_id === SAWBuyInType.Points && r.buyin_cost_points <= pointsBalance || r.saw_buyin_type_id === SAWBuyInType.Spins && r.spin_count > 0,
393
+ can_play: SAWUtils.canPlay(r, pointsBalance),
258
394
  icon: (_r$saw_skin_ui_defini = r.saw_skin_ui_definition) != null && _r$saw_skin_ui_defini.skin_folder ? ((_r$saw_skin_ui_defini2 = r.saw_skin_ui_definition) == null ? void 0 : _r$saw_skin_ui_defini2.skin_folder) + '/ico.png' : `https://libs.smartico.ai/gf/images/saw/${r.saw_skin_key}/ico.png`
259
395
  };
260
396
  });
261
397
  }
398
+ async sawSpinRequest(user_ext_id, saw_template_id, round_id) {
399
+ const message = this.buildMessage(user_ext_id, ClassId.SAW_DO_SPIN_REQUEST, {
400
+ saw_template_id,
401
+ request_id: IntUtils.uuid()
402
+ });
403
+ const spinAttemptResponse = await this.send(message, ClassId.SAW_DO_SPIN_RESPONSE);
404
+ // to simulate fail
405
+ // response.errCode = SAWSpinErrorCode.SAW_NO_SPINS;
406
+ const status = {
407
+ [SAWSpinErrorCode.SAW_OK]: 'OK',
408
+ [SAWSpinErrorCode.SAW_NO_SPINS]: 'NO SPINS AVAILABLE',
409
+ [SAWSpinErrorCode.SAW_PRIZE_POOL_EMPTY]: 'PRIZE POOL IS EMPTY',
410
+ [SAWSpinErrorCode.SAW_NOT_ENOUGH_POINTS]: 'NOT ENOUGH POINTS',
411
+ [SAWSpinErrorCode.SAW_FAILED_MAX_SPINS_REACHED]: 'MAX SPIN ATTEMPTS REACHED'
412
+ }[spinAttemptResponse.errCode] || 'OTHER';
413
+ await this.coreReportCustomEvent(user_ext_id, 'minigame_attempt', {
414
+ saw_template_id,
415
+ status,
416
+ round_id
417
+ });
418
+ return spinAttemptResponse;
419
+ }
262
420
  }
263
421
 
264
- export { ClassId, SAWAcknowledgeType, SAWBuyInType, SAWBuyInTypeName, SAWGameType, SAWGameTypeName, SAWPrizeType, SAWSpinErrorCode, SAWWinSoundFiles, SAWWinSoundType, SmarticoAPI };
422
+ var PublicLabelSettings;
423
+ (function (PublicLabelSettings) {
424
+ PublicLabelSettings["FCM_SENDER_ID"] = "FCM_SENDER_ID";
425
+ PublicLabelSettings["PUBLIC_API_URL"] = "PUBLIC_API_URL";
426
+ PublicLabelSettings["FCM_SW_URL"] = "FCM_SW_URL";
427
+ PublicLabelSettings["RECORDING_ENABLED_FOR_ALL_USERS"] = "RECORDING_ENABLED_FOR_ALL_USERS";
428
+ PublicLabelSettings["JS_INJECTION"] = "JS_INJECTION";
429
+ PublicLabelSettings["GAMIFICATION_UI_MAIN"] = "GAMIFICATION_UI_MAIN";
430
+ PublicLabelSettings["GAMIFICATION_UI_WIDGET"] = "GAMIFICATION_UI_WIDGET";
431
+ PublicLabelSettings["GAMIFICATION_UI_MINI_GAME"] = "GAMIFICATION_UI_MINI_GAME";
432
+ PublicLabelSettings["GAMIFICATION_UI_SETTINGS"] = "GAMIFICATION_UI_SETTINGS";
433
+ PublicLabelSettings["GAMIFICATION_UI_MAIN_TEST"] = "GAMIFICATION_UI_MAIN_TEST";
434
+ PublicLabelSettings["GAMIFICATION_UI_WIDGET_TEST"] = "GAMIFICATION_UI_WIDGET_TEST";
435
+ PublicLabelSettings["GAMIFICATION_UI_SETTINGS_TEST"] = "GAMIFICATION_UI_SETTINGS_TEST";
436
+ PublicLabelSettings["FRONT_END_ALLOWED_LANGUAGES"] = "FRONT_END_ALLOWED_LANGUAGES";
437
+ PublicLabelSettings["FRONT_END_ALLOW_DOMAINS"] = "FRONT_END_ALLOW_DOMAINS";
438
+ PublicLabelSettings["DELAY_ENGAGEMENT_EXECUTION_ON_LOGIN_MS"] = "DELAY_ENGAGEMENT_EXECUTION_ON_LOGIN_MS";
439
+ PublicLabelSettings["SHADOW_LABEL_PUBLIC_KEY"] = "SHADOW_LABEL_PUBLIC_KEY";
440
+ PublicLabelSettings["DYNAMIC_IMAGE_DOMAIN"] = "DYNAMIC_IMAGE_DOMAIN";
441
+ PublicLabelSettings["GAMIFICATION_UI_LEVEL_ENABLED"] = "GAMIFICATION_UI_LEVEL_ENABLED";
442
+ PublicLabelSettings["GAMIFICATION_UI_LEVEL_IMAGE_MOB"] = "GAMIFICATION_UI_LEVEL_IMAGE_MOB";
443
+ PublicLabelSettings["GAMIFICATION_UI_LEVEL_IMAGE_DESK"] = "GAMIFICATION_UI_LEVEL_IMAGE_DESK";
444
+ PublicLabelSettings["GAMIFICATION_LEVELS_LOGIC2"] = "GAMIFICATION_LEVELS_LOGIC2";
445
+ PublicLabelSettings["AVATAR_CUSTOM_IMAGE_MAX_ID"] = "AVATAR_CUSTOM_IMAGE_MAX_ID";
446
+ PublicLabelSettings["AVATAR_CUSTOM_IMAGE_FOLDER"] = "AVATAR_CUSTOM_IMAGE_FOLDER";
447
+ PublicLabelSettings["RETENTION_GAMES_CUSTOMER_ID"] = "RETENTION_GAMES_CUSTOMER_ID";
448
+ PublicLabelSettings["GAMIFICATION_SHOW_POWERED_BY"] = "GAMIFICATION_SHOW_POWERED_BY";
449
+ PublicLabelSettings["_system_leader_board_mask_username"] = "_system_leader_board_mask_username";
450
+ })(PublicLabelSettings || (PublicLabelSettings = {}));
451
+
452
+ var TranslationArea;
453
+ (function (TranslationArea) {
454
+ TranslationArea[TranslationArea["Casino"] = 1] = "Casino";
455
+ TranslationArea[TranslationArea["Gamification"] = 2] = "Gamification";
456
+ TranslationArea[TranslationArea["Trading"] = 3] = "Trading";
457
+ TranslationArea[TranslationArea["Archived"] = 4] = "Archived";
458
+ TranslationArea[TranslationArea["Affiliation"] = 5] = "Affiliation";
459
+ TranslationArea[TranslationArea["RetentionGames"] = 6] = "RetentionGames";
460
+ })(TranslationArea || (TranslationArea = {}));
461
+
462
+ export { ClassId, PublicLabelSettings, SAWAcknowledgeType, SAWAskForUsername, SAWBuyInType, SAWBuyInTypeName, SAWGameType, SAWGameTypeName, SAWPrizeType, SAWSpinErrorCode, SAWUtils, SAWWinSoundFiles, SAWWinSoundType, SmarticoAPI, TranslationArea };
265
463
  //# sourceMappingURL=index.modern.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.modern.mjs","sources":["../src/Base/ClassId.ts","../src/IntUtils.ts","../src/MiniGames/SAWAcknowledgeType.ts","../src/MiniGames/SAWBuyInType.ts","../src/MiniGames/SAWDoSpinResponse.ts","../src/MiniGames/SAWGameType.ts","../src/MiniGames/SAWPrizeType.ts","../src/MiniGames/SAWWinSoundType.ts","../src/SmarticoAPI.ts"],"sourcesContent":["export enum ClassId {\n GET_LABEL_INFO = 3,\n GET_LABEL_INFO_RESPONSE = 4, \n IDENTIFY = 5,\n IDENTIFY_RESPONSE = 6,\n EVENT = 9,\n EVENT_RESPONSE = 10, \n\n GET_TRANSLATIONS_REQUEST = 13,\n GET_TRANSLATIONS_RESPONSE = 14,\n\n CHANGE_USERNAME = 159,\n CHANGE_USERNAME_RESPONSE = 160,\n\n SAW_GET_SPINS_REQUEST = 700,\n SAW_GET_SPINS_RESPONSE = 701,\n SAW_DO_SPIN_REQUEST = 702,\n SAW_DO_SPIN_RESPONSE = 703,\n SAW_AKNOWLEDGE_REQUEST = 704,\n SAW_AKNOWLEDGE_RESPONSE = 705,\n\n SAW_SPINS_COUNT_PUSH = 706,\n SAW_SHOW_SPIN_PUSH = 707,\n\n UNSUPPORTED_COMMAND = 99999.\n}","\n\n\nclass IntUtils {\n\n public static uuid(): string {\n let a: any;\n let b: any;\n for (b = a = \"\"; a++ < 36; b += a * 51 & 52 ? (a ^ 15 ? 8 ^ Math.random() * (a ^ 20 ? 16 : 4) : 4).toString(16) : \"-\") {}\n return b;\n } \n\n public static isNotNull(val: any): boolean {\n return typeof val !== \"undefined\" && val !== null;\n } \n\n public static isNotEmpty(val: string): boolean {\n return typeof val !== \"undefined\" && val !== null && val.length > 0;\n } \n\n public static replaceAll(value: string, regex: string, replacement: string | number): string {\n if (IntUtils.isNotNull(value)) {\n return value.replace(new RegExp(IntUtils.escapeRegExp(regex), \"g\"), replacement?.toString());\n }\n return value;\n } \n\n public static escapeRegExp(v: string): string {\n if (IntUtils.isNotEmpty(v)) {\n return v.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n }\n return v;\n }\n\n}\n\n\n\nexport { IntUtils }","export enum SAWAcknowledgeType {\n\n Silent = 1,\n QuickMessage = 2,\n FullMessage = 3\n}\n","export enum SAWBuyInType {\n Free = 1,\n Points = 2,\n Spins = 3\n}\n\nexport const SAWBuyInTypeName = {\n [SAWBuyInType.Free]: \"free\",\n [SAWBuyInType.Points]: \"points\",\n [SAWBuyInType.Spins]: \"spins\",\n}","import { ProtocolResponse } from \"./../Base/ProtocolResponse\";\n\n\nexport enum SAWSpinErrorCode {\n SAW_OK = 0,\n SAW_NO_SPINS = 40001,\n SAW_PRIZE_POOL_EMPTY = 40002,\n SAW_NOT_ENOUGH_POINTS = 40003,\n SAW_FAILED_MAX_SPINS_REACHED = 40004,\n}\n\nexport interface SAWDoSpinResponse extends ProtocolResponse {\n errCode: SAWSpinErrorCode;\n errMsg?: string;\n request_id: string; // guid\n saw_prize_id: number;\n first_spin_in_period: number;\n};\n","export enum SAWGameType {\n SpinAWheel = 1,\n ScratchCard = 2,\n MatchX = 3\n}\n\nexport const SAWGameTypeName = {\n [SAWGameType.SpinAWheel]: \"wheel\",\n [SAWGameType.ScratchCard]: \"scratch\",\n [SAWGameType.MatchX]: \"matchx\",\n}\n","export enum SAWPrizeType {\n\n NO_PRIZE = 1,\n POINTS = 2,\n BONUS = 3,\n MANUAL = 4,\n SPIN = 5,\n JACKPOT = 6\n}\n","export enum SAWWinSoundType {\n\n Disappointing = 1,\n Positive = 2,\n HighlyPositive = 3,\n NoSound = 4\n}\n\nexport const SAWWinSoundFiles = {\n [SAWWinSoundType.NoSound]: null,\n [SAWWinSoundType.Disappointing]: \"saw-disappointed.m4a\",\n [SAWWinSoundType.Positive]: \"saw-positive.m4a\",\n [SAWWinSoundType.HighlyPositive]: \"saw-highly-positive.m4a\",\n}","import * as superagent from 'superagent';\nimport { ClassId } from \"./Base/ClassId\";\nimport { ProtocolRequest } from './Base/ProtocolRequest';\nimport { ProtocolResponse } from './Base/ProtocolResponse';\nimport { SAWGetTemplatesResponse } from './MiniGames/SAWGetTemplatesResponse';\nimport { SAWGetTemplatesRequest } from './MiniGames/SAWGetTemplatesRequest';\nimport { SAWTemplate } from './MiniGames/SAWTemplate';\nimport { IntUtils } from './IntUtils';\nimport { ILogger } from './ILogger';\nimport { SAWBuyInType, SAWBuyInTypeName, SAWGameType, SAWGameTypeName } from './MiniGames';\n\nconst PUBLIC_API_URL = 'https://papi{ENV_ID}.smartico.ai/services/public';\n\ninterface IOptions {\n logger?: ILogger;\n logCIDs?: ClassId[];\n logHTTPTiming?: boolean;\n}\n\n\nclass SmarticoAPI {\n\n private publicUrl: string;\n private logger: ILogger;\n private logCIDs: ClassId[];\n private logHTTPTiming: boolean;\n\n public constructor(private label_api_key: string, private brand_api_key: string, options: IOptions = {}) {\n\n this.logger = options.logger || (console as any);\n\n if (this.logger.always === undefined) {\n this.logger.always = this.logger.info;\n }\n\n this.logCIDs = options.logCIDs || [];\n this.logHTTPTiming = options.logHTTPTiming || false;\n\n let ENV_ID = this.label_api_key.length === 38 ? label_api_key.substring(37, 38) : '';\n \n if (ENV_ID === '1' || ENV_ID === '2') {\n ENV_ID = ''\n }\n label_api_key = label_api_key.substring(0, 36);\n\n this.publicUrl = PUBLIC_API_URL.replace('{ENV_ID}', ENV_ID); \n } \n\n private async send<T>(message: any, expectCID?: ClassId): Promise<T> {\n\n\n if (this.logCIDs.includes(message.cid)) {\n this.logger.info('REQ', message)\n }\n\n\n let result: any;\n \n try {\n const timeStart = new Date().getTime();\n const res = await superagent.post(this.publicUrl).send(message);\n const timeEnd = new Date().getTime();\n\n if (this.logHTTPTiming) {\n this.logger.always('HTTP time, ms:' + (timeEnd - timeStart))\n }\n \n result = JSON.parse(res.text);\n } catch (e) {\n this.logger.error(`Failed to make request to smartico channel. ${e.message}`, { url: this.publicUrl, request: message, error: e.message });\n throw(new Error(`Failed to make request to smartico channel. ${e.message}`));\n }\n\n if (this.logCIDs.includes(message.cid)) {\n this.logger.info('RES', result)\n }\n\n if (expectCID) {\n if (Array.isArray(result)) { \n for (const str of result as string[]) {\n const obj: ProtocolResponse = JSON.parse(str);\n if (this.logCIDs.includes(obj.cid)) {\n this.logger.info('RES', result)\n }\n if (obj.cid === expectCID) {\n return obj as any;\n }\n }\n this.logger.error(`Cant find proper response in array, expected CID ${expectCID}`, { request: message, response: result });\n } else {\n return result;\n } \n } else {\n if (Array.isArray(result)) { \n if (result.length === 1) {\n const obj = JSON.parse(result[0]);\n if (this.logCIDs.includes(obj.cid)) {\n this.logger.info('RES', result)\n } \n return obj;\n } else {\n this.logger.error('Expected one response, but got array', { request: message, response: result });\n }\n }\n return result;\n }\n }\n\n private buildMessage<TRequest,TResponse>(user_ext_id: string, cid: ClassId, payload: Partial<TRequest> = {}): TResponse {\n\n const message: ProtocolRequest = {\n api_key: this.label_api_key,\n brand_key: this.brand_api_key,\n ext_user_id: user_ext_id,\n cid,\n uuid: IntUtils.uuid(),\n ts: new Date().getTime(),\n ...payload\n };\n\n return message as any\n }\n\n public async miniGamesGetTemplates(user_ext_id: string): Promise<SAWGetTemplatesResponse> {\n\n const message = this.buildMessage<SAWGetTemplatesResponse, SAWGetTemplatesRequest>(user_ext_id, ClassId.SAW_GET_SPINS_REQUEST);\n\n const response = await this.send<SAWGetTemplatesResponse>(message);\n\n if (response && response.templates) {\n response.templates.forEach(t => {\n \n if (t.jackpot_current) {\n t.saw_template_ui_definition.name = IntUtils.replaceAll(t.saw_template_ui_definition.name, '{{jackpot}}', t.jackpot_current);\n t.saw_template_ui_definition.description = IntUtils.replaceAll(t.saw_template_ui_definition.description, '{{jackpot}}', t.jackpot_current);\n t.saw_template_ui_definition.promo_text = IntUtils.replaceAll(t.saw_template_ui_definition.promo_text, '{{jackpot}}', t.jackpot_current);\n t.prizes.forEach(p => {\n p.saw_prize_ui_definition.name = IntUtils.replaceAll(p.saw_prize_ui_definition.name, '{{jackpot}}', t.jackpot_current);\n p.saw_prize_ui_definition.aknowledge_message = IntUtils.replaceAll(p.saw_prize_ui_definition.aknowledge_message, '{{jackpot}}', t.jackpot_current);\n })\n }\n }); \n }\n\n return response;\n\n }\n\n public miniGamesFormatTemplatesForWidget(templates: SAWTemplate[], pointsBalance: number): any[] {\n\n return templates.filter( r => r.saw_template_id >= 1).map( r => (\n {\n id: r.saw_template_id,\n name: r.saw_template_ui_definition.name,\n // description: r.saw_template_ui_definition.description,\n game_type: SAWGameTypeName[r.saw_game_type_id] || 'unknown',\n buyin_type: SAWBuyInTypeName[r.saw_buyin_type_id] || 'unknown',\n jackpot: r.jackpot_current,\n spin_count: r.spin_count,\n buyin_cost_points: r.buyin_cost_points,\n can_play: (\n r.saw_buyin_type_id === SAWBuyInType.Free\n || (r.saw_buyin_type_id === SAWBuyInType.Points && r.buyin_cost_points <= pointsBalance)\n || (r.saw_buyin_type_id === SAWBuyInType.Spins && r.spin_count > 0)\n ), \n icon: \n r.saw_skin_ui_definition?.skin_folder\n ? r.saw_skin_ui_definition?.skin_folder + '/ico.png'\n : `https://libs.smartico.ai/gf/images/saw/${r.saw_skin_key}/ico.png`\n }\n ));\n\n }\n\n}\n\nexport { SmarticoAPI }"],"names":["ClassId","IntUtils","uuid","a","b","Math","random","toString","isNotNull","val","isNotEmpty","length","replaceAll","value","regex","replacement","replace","RegExp","escapeRegExp","v","SAWAcknowledgeType","SAWBuyInType","SAWBuyInTypeName","Free","Points","Spins","SAWSpinErrorCode","SAWGameType","SAWGameTypeName","SpinAWheel","ScratchCard","MatchX","SAWPrizeType","SAWWinSoundType","SAWWinSoundFiles","NoSound","Disappointing","Positive","HighlyPositive","PUBLIC_API_URL","SmarticoAPI","constructor","label_api_key","brand_api_key","options","publicUrl","logger","logCIDs","logHTTPTiming","console","always","undefined","info","ENV_ID","substring","send","message","expectCID","includes","cid","result","timeStart","Date","getTime","res","superagent","post","timeEnd","JSON","parse","text","e","error","url","request","Error","Array","isArray","str","obj","response","buildMessage","user_ext_id","payload","api_key","brand_key","ext_user_id","ts","miniGamesGetTemplates","SAW_GET_SPINS_REQUEST","templates","forEach","t","jackpot_current","saw_template_ui_definition","name","description","promo_text","prizes","p","saw_prize_ui_definition","aknowledge_message","miniGamesFormatTemplatesForWidget","pointsBalance","filter","r","saw_template_id","map","id","game_type","saw_game_type_id","buyin_type","saw_buyin_type_id","jackpot","spin_count","buyin_cost_points","can_play","icon","saw_skin_ui_definition","skin_folder","saw_skin_key"],"mappings":"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"}
1
+ {"version":3,"file":"index.modern.mjs","sources":["../src/Base/ClassId.ts","../src/IntUtils.ts","../src/MiniGames/SAWBuyInType.ts","../src/MiniGames/SAWUtils.ts","../src/MiniGames/SAWAcknowledgeType.ts","../src/MiniGames/SAWAskForUsername.ts","../src/MiniGames/SAWGameType.ts","../src/MiniGames/SAWPrizeType.ts","../src/MiniGames/SAWSpinErrorCode.ts","../src/MiniGames/SAWWinSoundType.ts","../src/OCache.ts","../src/SmarticoAPI.ts","../src/Core/PublicLabelSettings.ts","../src/Core/TranslationArea.ts"],"sourcesContent":["export enum ClassId {\n GET_LABEL_INFO = 3,\n GET_LABEL_INFO_RESPONSE = 4, \n IDENTIFY = 5,\n IDENTIFY_RESPONSE = 6,\n EVENT = 9,\n EVENT_RESPONSE = 10, \n\n GET_TRANSLATIONS_REQUEST = 13,\n GET_TRANSLATIONS_RESPONSE = 14,\n\n CHANGE_USERNAME = 159,\n CHANGE_USERNAME_RESPONSE = 160,\n\n SAW_GET_SPINS_REQUEST = 700,\n SAW_GET_SPINS_RESPONSE = 701,\n SAW_DO_SPIN_REQUEST = 702,\n SAW_DO_SPIN_RESPONSE = 703,\n SAW_AKNOWLEDGE_REQUEST = 704,\n SAW_AKNOWLEDGE_RESPONSE = 705,\n\n SAW_SPINS_COUNT_PUSH = 706,\n SAW_SHOW_SPIN_PUSH = 707,\n\n UNSUPPORTED_COMMAND = 99999.\n}","\n\n\nclass IntUtils {\n\n public static uuid(): string {\n let a: any;\n let b: any;\n for (b = a = \"\"; a++ < 36; b += a * 51 & 52 ? (a ^ 15 ? 8 ^ Math.random() * (a ^ 20 ? 16 : 4) : 4).toString(16) : \"-\") {}\n return b;\n } \n\n public static isNotNull(val: any): boolean {\n return typeof val !== \"undefined\" && val !== null;\n } \n\n public static isNotEmpty(val: string): boolean {\n return typeof val !== \"undefined\" && val !== null && val.length > 0;\n } \n\n public static replaceAll(value: string, regex: string, replacement: string | number): string {\n if (IntUtils.isNotNull(value)) {\n return value.replace(new RegExp(IntUtils.escapeRegExp(regex), \"g\"), replacement?.toString());\n }\n return value;\n } \n\n public static escapeRegExp(v: string): string {\n if (IntUtils.isNotEmpty(v)) {\n return v.replace(/[.*+?^${}()|[\\]\\\\]/g, \"\\\\$&\");\n }\n return v;\n }\n\n}\n\n\n\nexport { IntUtils }","export enum SAWBuyInType {\n Free = 1,\n Points = 2,\n Spins = 3\n}\n\nexport const SAWBuyInTypeName = {\n [SAWBuyInType.Free]: \"free\",\n [SAWBuyInType.Points]: \"points\",\n [SAWBuyInType.Spins]: \"spins\",\n}","import { SAWBuyInType } from \"./SAWBuyInType\";\nimport { SAWTemplate } from \"./SAWTemplate\";\n\n\nclass SAWUtils {\n\n public static canPlay = (t: SAWTemplate, pointsBalance: number): boolean => {\n if (t === null || t === undefined) {\n return false;\n }\n \n switch (t.saw_buyin_type_id) {\n case SAWBuyInType.Free: {\n return true;\n }\n case SAWBuyInType.Spins: {\n return t.spin_count !== null && t.spin_count > 0\n }\n case SAWBuyInType.Points: {\n return t.buyin_cost_points <= pointsBalance;\n }\n default: {\n console.error(\"MiniGamesUtils.canPlay: Unknwon SAW buyin type \" + t.saw_buyin_type_id);\n return false;\n }\n }\n }\n \n}\n\nexport { SAWUtils }","export enum SAWAcknowledgeType {\n\n Silent = 1,\n QuickMessage = 2,\n FullMessage = 3\n}\n","\nexport enum SAWAskForUsername {\n NOASK = \"no-ask\",\n ONSUMBIT = \"on-submit\"\n}","export enum SAWGameType {\n SpinAWheel = 1,\n ScratchCard = 2,\n MatchX = 3\n}\n\nexport const SAWGameTypeName = {\n [SAWGameType.SpinAWheel]: \"wheel\",\n [SAWGameType.ScratchCard]: \"scratch\",\n [SAWGameType.MatchX]: \"matchx\",\n}\n","export enum SAWPrizeType {\n\n NO_PRIZE = 1,\n POINTS = 2,\n BONUS = 3,\n MANUAL = 4,\n SPIN = 5,\n JACKPOT = 6\n}\n","\nexport enum SAWSpinErrorCode {\n SAW_OK = 0,\n SAW_NO_SPINS = 40001,\n SAW_PRIZE_POOL_EMPTY = 40002,\n SAW_NOT_ENOUGH_POINTS = 40003,\n SAW_FAILED_MAX_SPINS_REACHED = 40004,\n}","export enum SAWWinSoundType {\n\n Disappointing = 1,\n Positive = 2,\n HighlyPositive = 3,\n NoSound = 4\n}\n\nexport const SAWWinSoundFiles = {\n [SAWWinSoundType.NoSound]: null,\n [SAWWinSoundType.Disappointing]: \"saw-disappointed.m4a\",\n [SAWWinSoundType.Positive]: \"saw-positive.m4a\",\n [SAWWinSoundType.HighlyPositive]: \"saw-highly-positive.m4a\",\n}","import NodeCache from 'node-cache';\n\nexport enum ECacheContext {\n Translations,\n LabelInfo\n}\n\nconst WITH_REF_CACHE = [\n ECacheContext.Translations\n];\n\nexport class OCache {\n\n private static cache: { [key: string] : NodeCache } = {}\n\n public static get<T>(oKey: any, cacheContext: ECacheContext): T | undefined {\n\n const key = cacheContext.toString() + '_' + JSON.stringify(oKey);\n\n if (this.cache[cacheContext] === undefined) {\n this.cache[cacheContext] = new NodeCache( { useClones: !WITH_REF_CACHE.includes(cacheContext) } );\n }\n\n return this.cache[cacheContext].get(key);\n }\n\n public static set(oKey: any, o: any, cacheContext: ECacheContext, ttlSeconds: number = 60) {\n\n const key = cacheContext.toString() + '_' + JSON.stringify(oKey);\n\n this.cache[cacheContext].set(key, o, ttlSeconds);\n }\n\n public static async use<T>(oKey: any, cacheContext: ECacheContext, f: () => Promise<T>, ttlSeconds: number = 60) {\n if (ttlSeconds <= 0) {\n return await f();\n } else {\n let o: T = OCache.get(oKey, cacheContext);\n\n if (o === undefined) {\n o = await f();\n OCache.set(oKey, o, cacheContext, ttlSeconds);\n }\n \n return o;\n }\n }\n\n public static async clear(cacheContext: ECacheContext) {\n if (this.cache[cacheContext]) {\n this.cache[cacheContext].flushAll();\n }\n }\n}\n","import * as superagent from 'superagent';\nimport { ClassId } from \"./Base/ClassId\";\nimport { ProtocolRequest } from './Base/ProtocolRequest';\nimport { ProtocolResponse } from './Base/ProtocolResponse';\nimport { SAWGetTemplatesResponse } from './MiniGames/SAWGetTemplatesResponse';\nimport { SAWGetTemplatesRequest } from './MiniGames/SAWGetTemplatesRequest';\nimport { SAWTemplate } from './MiniGames/SAWTemplate';\nimport { IntUtils } from './IntUtils';\nimport { ILogger } from './ILogger';\nimport { SAWBuyInType, SAWBuyInTypeName, SAWDoSpinRequest, SAWDoSpinResponse, SAWGameType, SAWGameTypeName, SAWSpinErrorCode, SAWUtils } from './MiniGames';\nimport { ECacheContext, OCache } from './OCache';\nimport { GetTranslationsRequest, GetTranslationsResponse, ResponseIdentify, TranslationArea } from './Core';\nimport { GetLabelInfoResponse } from './Core/GetLabelInfoResponse';\nimport { GetLabelInfoRequest } from './Core/GetLabelInfoRequest';\n\nconst PUBLIC_API_URL = 'https://papi{ENV_ID}.smartico.ai/services/public';\nconst AVATAR_DOMAIN = 'https://img{ENV_ID}.smr.vc';\n\ninterface IOptions {\n logger?: ILogger;\n logCIDs?: ClassId[];\n logHTTPTiming?: boolean;\n}\n\n\nclass SmarticoAPI {\n\n private publicUrl: string;\n private avatarDomain: string;\n\n\n private logger: ILogger;\n private logCIDs: ClassId[];\n private logHTTPTiming: boolean;\n\n public constructor(private label_api_key: string, private brand_api_key: string, options: IOptions = {}) {\n\n this.logger = options.logger || (console as any);\n\n if (this.logger.always === undefined) {\n this.logger.always = this.logger.info;\n }\n\n this.logCIDs = options.logCIDs || [];\n this.logHTTPTiming = options.logHTTPTiming || false;\n\n let ENV_ID = this.label_api_key.length === 38 ? label_api_key.substring(37, 38) : '';\n \n if (ENV_ID === '1' || ENV_ID === '2') {\n ENV_ID = ''\n }\n label_api_key = label_api_key.substring(0, 36);\n\n this.publicUrl = PUBLIC_API_URL.replace('{ENV_ID}', ENV_ID); \n this.avatarDomain = AVATAR_DOMAIN.replace('{ENV_ID}', ENV_ID); \n } \n\n private async send<T>(message: any, expectCID?: ClassId): Promise<T> {\n\n\n if (this.logCIDs.includes(message.cid)) {\n this.logger.info('REQ', message)\n }\n\n\n let result: any;\n \n try {\n const timeStart = new Date().getTime();\n const res = await superagent.post(this.publicUrl).send(message);\n // const res = await superagent.post('http://channel01.int.smartico.ai:81/services/public').send(message);\n const timeEnd = new Date().getTime();\n\n if (this.logHTTPTiming) {\n this.logger.always('HTTP time, ms:' + (timeEnd - timeStart))\n }\n \n result = JSON.parse(res.text);\n } catch (e) {\n this.logger.error(`Failed to make request to smartico channel. ${e.message}`, { url: this.publicUrl, request: message, error: e.message });\n throw(new Error(`Failed to make request to smartico channel. ${e.message}`));\n }\n\n if (this.logCIDs.includes(message.cid)) {\n this.logger.info('RES', result)\n }\n\n if (expectCID) {\n if (Array.isArray(result)) { \n for (const str of result as string[]) {\n const obj: ProtocolResponse = JSON.parse(str);\n if (this.logCIDs.includes(obj.cid)) {\n this.logger.info('RES', result)\n }\n if (obj.cid === expectCID) {\n return obj as any;\n }\n }\n this.logger.error(`Cant find proper response in array, expected CID ${expectCID}`, { request: message, response: result });\n } else {\n return result;\n } \n } else {\n if (Array.isArray(result)) { \n if (result.length === 1) {\n const obj = JSON.parse(result[0]);\n if (this.logCIDs.includes(obj.cid)) {\n this.logger.info('RES', result)\n } \n return obj;\n } else {\n this.logger.error('Expected one response, but got array', { request: message, response: result });\n }\n }\n return result;\n }\n }\n\n private buildMessage<TRequest,TResponse>(user_ext_id: string, cid: ClassId, payload: Partial<TRequest> = {}): TResponse {\n\n const message: ProtocolRequest = {\n api_key: this.label_api_key,\n brand_key: this.brand_api_key,\n ext_user_id: user_ext_id,\n cid,\n uuid: IntUtils.uuid(),\n ts: new Date().getTime(),\n ...payload\n };\n\n if (message.ext_user_id === undefined || message.ext_user_id === null) {\n delete message.ext_user_id;\n }\n\n return message as any\n }\n\n public async coreReportCustomEvent(user_ext_id: string, eventType: string, payload: any = {}): Promise<any> {\n const eventMessage = this.buildMessage<any, any>(user_ext_id, ClassId.EVENT, {\n eventType,\n payload\n });\n\n const eventResponse = await this.send<any>(eventMessage, ClassId.EVENT_RESPONSE);\n return eventResponse;\n }\n\n public async coreGetTranslations(user_ext_id: string, lang_code: string, areas: TranslationArea[], cacheSec: number = 60): Promise<GetTranslationsResponse> {\n\n const response = await OCache.use<GetTranslationsResponse>(`${lang_code}-${this.label_api_key}-${this.brand_api_key}`, ECacheContext.Translations, async () => {\n\n const tsBaseRQ = this.buildMessage<GetTranslationsRequest, GetTranslationsResponse>(user_ext_id, ClassId.GET_TRANSLATIONS_REQUEST, {\n lang_code: \"EN\",\n hash_code: 0,\n areas\n });\n\n const trBase = await this.send<GetTranslationsResponse>(tsBaseRQ);\n\n if (lang_code !== \"EN\") {\n const trUserRQ = this.buildMessage<GetTranslationsRequest, GetTranslationsResponse>(user_ext_id, ClassId.GET_TRANSLATIONS_REQUEST, {\n lang_code,\n hash_code: 0,\n areas\n }); \n\n const trUser = await this.send<GetTranslationsResponse>(trUserRQ);\n \n Object.keys(trUser.translations).forEach( k => {\n trBase.translations[k] = trUser.translations[k];\n })\n }\n\n return trBase;\n\n }, cacheSec );\n\n return response;\n } \n\n public async coreIdentifyLabel(user_ext_id: string, cacheSec: number = 60): Promise<GetLabelInfoResponse> {\n \n return OCache.use<GetLabelInfoResponse>(`${this.label_api_key} - ${this.brand_api_key}`, ECacheContext.LabelInfo, async () => {\n\n const message = this.buildMessage<GetLabelInfoResponse, GetLabelInfoRequest>(user_ext_id, ClassId.GET_LABEL_INFO);\n\n return this.send<GetLabelInfoResponse>(message, ClassId.GET_LABEL_INFO_RESPONSE)\n \n }, cacheSec);\n \n } \n\n public async coreIdentifyUser(user_ext_id: string): Promise<ResponseIdentify> {\n\n const message = this.buildMessage<any, ResponseIdentify>(user_ext_id, ClassId.IDENTIFY, {\n request_id: IntUtils.uuid() // AA: do we need request_id?\n });\n\n const r = await this.send<ResponseIdentify>(message, ClassId.IDENTIFY_RESPONSE);\n\n if (!(r.avatar_id && r.avatar_id.startsWith('http'))) {\n r.avatar_id = AVATAR_DOMAIN + '/avatar/' + r.avatar_id\n }\n\n return r;\n } \n\n public async coreChangeUsername(user_ext_id: string, public_username_custom: string): Promise<{ public_username_custom: string }> {\n \n const message = this.buildMessage<any, any>(user_ext_id, ClassId.CHANGE_USERNAME, {\n public_username_custom\n });\n \n return this.send(message, ClassId.CHANGE_USERNAME_RESPONSE);\n }\n\n\n public async sawGetTemplates(user_ext_id: string): Promise<SAWGetTemplatesResponse> {\n\n const message = this.buildMessage<SAWGetTemplatesResponse, SAWGetTemplatesRequest>(user_ext_id, ClassId.SAW_GET_SPINS_REQUEST);\n\n const response = await this.send<SAWGetTemplatesResponse>(message);\n\n if (response && response.templates) {\n response.templates.forEach(t => {\n \n if (t.jackpot_current) {\n t.saw_template_ui_definition.name = IntUtils.replaceAll(t.saw_template_ui_definition.name, '{{jackpot}}', t.jackpot_current);\n t.saw_template_ui_definition.description = IntUtils.replaceAll(t.saw_template_ui_definition.description, '{{jackpot}}', t.jackpot_current);\n t.saw_template_ui_definition.promo_text = IntUtils.replaceAll(t.saw_template_ui_definition.promo_text, '{{jackpot}}', t.jackpot_current);\n t.prizes.forEach(p => {\n p.saw_prize_ui_definition.name = IntUtils.replaceAll(p.saw_prize_ui_definition.name, '{{jackpot}}', t.jackpot_current);\n p.saw_prize_ui_definition.aknowledge_message = IntUtils.replaceAll(p.saw_prize_ui_definition.aknowledge_message, '{{jackpot}}', t.jackpot_current);\n })\n }\n }); \n }\n\n return response;\n\n }\n\n public async sawFormatTemplatesForWidget(templates: SAWTemplate[], pointsBalance: number): Promise<any[]> {\n\n return templates.filter( r => r.saw_template_id >= 1).map( r => (\n {\n id: r.saw_template_id,\n name: r.saw_template_ui_definition.name,\n // description: r.saw_template_ui_definition.description,\n game_type: SAWGameTypeName[r.saw_game_type_id] || 'unknown',\n buyin_type: SAWBuyInTypeName[r.saw_buyin_type_id] || 'unknown',\n jackpot: r.jackpot_current,\n spin_count: r.spin_count,\n buyin_cost_points: r.buyin_cost_points,\n can_play: SAWUtils.canPlay(r, pointsBalance), \n icon: \n r.saw_skin_ui_definition?.skin_folder\n ? r.saw_skin_ui_definition?.skin_folder + '/ico.png'\n : `https://libs.smartico.ai/gf/images/saw/${r.saw_skin_key}/ico.png`\n }\n ));\n\n }\n\n public async sawSpinRequest(user_ext_id: string, saw_template_id: number, round_id: number): Promise<SAWDoSpinResponse> {\n\n const message = this.buildMessage<SAWDoSpinRequest, SAWDoSpinResponse>(user_ext_id, ClassId.SAW_DO_SPIN_REQUEST, {\n saw_template_id,\n request_id: IntUtils.uuid()\n });\n\n const spinAttemptResponse = await this.send<SAWDoSpinResponse>(message, ClassId.SAW_DO_SPIN_RESPONSE);\n\n // to simulate fail\n // response.errCode = SAWSpinErrorCode.SAW_NO_SPINS;\n\n const status: string = {\n [SAWSpinErrorCode.SAW_OK]: 'OK',\n [SAWSpinErrorCode.SAW_NO_SPINS]: 'NO SPINS AVAILABLE',\n [SAWSpinErrorCode.SAW_PRIZE_POOL_EMPTY]: 'PRIZE POOL IS EMPTY',\n [SAWSpinErrorCode.SAW_NOT_ENOUGH_POINTS]: 'NOT ENOUGH POINTS',\n [SAWSpinErrorCode.SAW_FAILED_MAX_SPINS_REACHED]: 'MAX SPIN ATTEMPTS REACHED',\n }[spinAttemptResponse.errCode] || 'OTHER';\n\n await this.coreReportCustomEvent(user_ext_id, 'minigame_attempt', {\n saw_template_id,\n status,\n round_id,\n });\n\n return spinAttemptResponse;\n } \n\n}\n\nexport { SmarticoAPI }","\nexport enum PublicLabelSettings {\n FCM_SENDER_ID = \"FCM_SENDER_ID\",\n PUBLIC_API_URL = \"PUBLIC_API_URL\",\n FCM_SW_URL = \"FCM_SW_URL\",\n RECORDING_ENABLED_FOR_ALL_USERS = \"RECORDING_ENABLED_FOR_ALL_USERS\",\n JS_INJECTION = \"JS_INJECTION\",\n GAMIFICATION_UI_MAIN = \"GAMIFICATION_UI_MAIN\",\n GAMIFICATION_UI_WIDGET = \"GAMIFICATION_UI_WIDGET\",\n GAMIFICATION_UI_MINI_GAME = \"GAMIFICATION_UI_MINI_GAME\",\n GAMIFICATION_UI_SETTINGS = \"GAMIFICATION_UI_SETTINGS\",\n GAMIFICATION_UI_MAIN_TEST = \"GAMIFICATION_UI_MAIN_TEST\",\n GAMIFICATION_UI_WIDGET_TEST = \"GAMIFICATION_UI_WIDGET_TEST\",\n GAMIFICATION_UI_SETTINGS_TEST = \"GAMIFICATION_UI_SETTINGS_TEST\",\n FRONT_END_ALLOWED_LANGUAGES = \"FRONT_END_ALLOWED_LANGUAGES\",\n FRONT_END_ALLOW_DOMAINS = \"FRONT_END_ALLOW_DOMAINS\",\n DELAY_ENGAGEMENT_EXECUTION_ON_LOGIN_MS = \"DELAY_ENGAGEMENT_EXECUTION_ON_LOGIN_MS\",\n SHADOW_LABEL_PUBLIC_KEY = \"SHADOW_LABEL_PUBLIC_KEY\",\n DYNAMIC_IMAGE_DOMAIN = \"DYNAMIC_IMAGE_DOMAIN\",\n \n GAMIFICATION_UI_LEVEL_ENABLED = \"GAMIFICATION_UI_LEVEL_ENABLED\",\n GAMIFICATION_UI_LEVEL_IMAGE_MOB = \"GAMIFICATION_UI_LEVEL_IMAGE_MOB\",\n GAMIFICATION_UI_LEVEL_IMAGE_DESK = \"GAMIFICATION_UI_LEVEL_IMAGE_DESK\",\n \n GAMIFICATION_LEVELS_LOGIC2 = \"GAMIFICATION_LEVELS_LOGIC2\",\n \n AVATAR_CUSTOM_IMAGE_MAX_ID = \"AVATAR_CUSTOM_IMAGE_MAX_ID\",\n AVATAR_CUSTOM_IMAGE_FOLDER = \"AVATAR_CUSTOM_IMAGE_FOLDER\",\n \n RETENTION_GAMES_CUSTOMER_ID = \"RETENTION_GAMES_CUSTOMER_ID\",\n \n GAMIFICATION_SHOW_POWERED_BY = \"GAMIFICATION_SHOW_POWERED_BY\",\n _system_leader_board_mask_username = \"_system_leader_board_mask_username\",\n}\n","enum TranslationArea {\n\n Casino = 1,\n Gamification = 2,\n Trading = 3,\n Archived = 4,\n Affiliation = 5,\n RetentionGames = 6\n}\n\nexport { TranslationArea };\n"],"names":["ClassId","IntUtils","uuid","a","b","Math","random","toString","isNotNull","val","isNotEmpty","length","replaceAll","value","regex","replacement","replace","RegExp","escapeRegExp","v","SAWBuyInType","SAWBuyInTypeName","Free","Points","Spins","SAWUtils","canPlay","t","pointsBalance","undefined","saw_buyin_type_id","spin_count","buyin_cost_points","console","error","SAWAcknowledgeType","SAWAskForUsername","SAWGameType","SAWGameTypeName","SpinAWheel","ScratchCard","MatchX","SAWPrizeType","SAWSpinErrorCode","SAWWinSoundType","SAWWinSoundFiles","NoSound","Disappointing","Positive","HighlyPositive","ECacheContext","WITH_REF_CACHE","Translations","OCache","get","oKey","cacheContext","key","JSON","stringify","cache","NodeCache","useClones","includes","set","o","ttlSeconds","use","f","clear","flushAll","PUBLIC_API_URL","AVATAR_DOMAIN","SmarticoAPI","constructor","label_api_key","brand_api_key","options","publicUrl","avatarDomain","logger","logCIDs","logHTTPTiming","always","info","ENV_ID","substring","send","message","expectCID","cid","result","timeStart","Date","getTime","res","superagent","post","timeEnd","parse","text","e","url","request","Error","Array","isArray","str","obj","response","buildMessage","user_ext_id","payload","api_key","brand_key","ext_user_id","ts","coreReportCustomEvent","eventType","eventMessage","EVENT","eventResponse","EVENT_RESPONSE","coreGetTranslations","lang_code","areas","cacheSec","tsBaseRQ","GET_TRANSLATIONS_REQUEST","hash_code","trBase","trUserRQ","trUser","Object","keys","translations","forEach","k","coreIdentifyLabel","LabelInfo","GET_LABEL_INFO","GET_LABEL_INFO_RESPONSE","coreIdentifyUser","IDENTIFY","request_id","r","IDENTIFY_RESPONSE","avatar_id","startsWith","coreChangeUsername","public_username_custom","CHANGE_USERNAME","CHANGE_USERNAME_RESPONSE","sawGetTemplates","SAW_GET_SPINS_REQUEST","templates","jackpot_current","saw_template_ui_definition","name","description","promo_text","prizes","p","saw_prize_ui_definition","aknowledge_message","sawFormatTemplatesForWidget","filter","saw_template_id","map","id","game_type","saw_game_type_id","buyin_type","jackpot","can_play","icon","saw_skin_ui_definition","skin_folder","saw_skin_key","sawSpinRequest","round_id","SAW_DO_SPIN_REQUEST","spinAttemptResponse","SAW_DO_SPIN_RESPONSE","status","SAW_OK","SAW_NO_SPINS","SAW_PRIZE_POOL_EMPTY","SAW_NOT_ENOUGH_POINTS","SAW_FAILED_MAX_SPINS_REACHED","errCode","PublicLabelSettings","TranslationArea"],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@smartico/public-api",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "Smartico public API",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -9,16 +9,22 @@
9
9
  "scripts": {
10
10
  "build": "microbundle --no-compress --format modern,cjs",
11
11
  "start": "microbundle watch --no-compress --format modern,cjs",
12
- "pub": "npm run build && npm publish"
12
+ "git-commit": "git add -A && git commit -m 'Pre-publish commit'",
13
+ "git-push": "git push --follow-tags",
14
+ "pub": "npm publish",
15
+ "patch": "npm version patch",
16
+ ".sm-deploy": "npm-run-all git-commit git-push build patch pub git-push"
13
17
  },
14
18
  "author": "",
15
19
  "license": "ISC",
16
20
  "dependencies": {
17
21
  "md5-typescript": "^1.0.5",
22
+ "node-cache": "^5.1.2",
18
23
  "superagent": "^8.0.6",
19
24
  "typescript-map": "^0.1.0"
20
25
  },
21
26
  "devDependencies": {
22
- "microbundle": "0.15.0"
27
+ "microbundle": "0.15.0",
28
+ "npm-run-all": "4.1.5"
23
29
  }
24
30
  }
@@ -0,0 +1,5 @@
1
+
2
+ import { ProtocolRequest } from "../Base/ProtocolRequest";
3
+
4
+ export interface GetLabelInfoRequest extends ProtocolRequest {
5
+ }
@@ -0,0 +1,6 @@
1
+ import { ProtocolResponse } from "../Base/ProtocolResponse";
2
+
3
+ export interface GetLabelInfoResponse extends ProtocolResponse {
4
+ settings: { [key: string]: string },
5
+ label_id: string,
6
+ }
@@ -0,0 +1,10 @@
1
+
2
+ import { ProtocolRequest } from "../Base/ProtocolRequest";
3
+ import { TranslationArea } from "./TranslationArea";
4
+
5
+ export interface GetTranslationsRequest extends ProtocolRequest {
6
+
7
+ hash_code: number;
8
+ areas: TranslationArea[];
9
+ lang_code: string;
10
+ }
@@ -0,0 +1,8 @@
1
+ import { ProtocolResponse } from "../Base/ProtocolResponse";
2
+
3
+ export interface GetTranslationsResponse extends ProtocolResponse {
4
+
5
+ hash_code: number;
6
+ translations: {[key: string]: string};
7
+ }
8
+
@@ -0,0 +1,34 @@
1
+
2
+ export enum PublicLabelSettings {
3
+ FCM_SENDER_ID = "FCM_SENDER_ID",
4
+ PUBLIC_API_URL = "PUBLIC_API_URL",
5
+ FCM_SW_URL = "FCM_SW_URL",
6
+ RECORDING_ENABLED_FOR_ALL_USERS = "RECORDING_ENABLED_FOR_ALL_USERS",
7
+ JS_INJECTION = "JS_INJECTION",
8
+ GAMIFICATION_UI_MAIN = "GAMIFICATION_UI_MAIN",
9
+ GAMIFICATION_UI_WIDGET = "GAMIFICATION_UI_WIDGET",
10
+ GAMIFICATION_UI_MINI_GAME = "GAMIFICATION_UI_MINI_GAME",
11
+ GAMIFICATION_UI_SETTINGS = "GAMIFICATION_UI_SETTINGS",
12
+ GAMIFICATION_UI_MAIN_TEST = "GAMIFICATION_UI_MAIN_TEST",
13
+ GAMIFICATION_UI_WIDGET_TEST = "GAMIFICATION_UI_WIDGET_TEST",
14
+ GAMIFICATION_UI_SETTINGS_TEST = "GAMIFICATION_UI_SETTINGS_TEST",
15
+ FRONT_END_ALLOWED_LANGUAGES = "FRONT_END_ALLOWED_LANGUAGES",
16
+ FRONT_END_ALLOW_DOMAINS = "FRONT_END_ALLOW_DOMAINS",
17
+ DELAY_ENGAGEMENT_EXECUTION_ON_LOGIN_MS = "DELAY_ENGAGEMENT_EXECUTION_ON_LOGIN_MS",
18
+ SHADOW_LABEL_PUBLIC_KEY = "SHADOW_LABEL_PUBLIC_KEY",
19
+ DYNAMIC_IMAGE_DOMAIN = "DYNAMIC_IMAGE_DOMAIN",
20
+
21
+ GAMIFICATION_UI_LEVEL_ENABLED = "GAMIFICATION_UI_LEVEL_ENABLED",
22
+ GAMIFICATION_UI_LEVEL_IMAGE_MOB = "GAMIFICATION_UI_LEVEL_IMAGE_MOB",
23
+ GAMIFICATION_UI_LEVEL_IMAGE_DESK = "GAMIFICATION_UI_LEVEL_IMAGE_DESK",
24
+
25
+ GAMIFICATION_LEVELS_LOGIC2 = "GAMIFICATION_LEVELS_LOGIC2",
26
+
27
+ AVATAR_CUSTOM_IMAGE_MAX_ID = "AVATAR_CUSTOM_IMAGE_MAX_ID",
28
+ AVATAR_CUSTOM_IMAGE_FOLDER = "AVATAR_CUSTOM_IMAGE_FOLDER",
29
+
30
+ RETENTION_GAMES_CUSTOMER_ID = "RETENTION_GAMES_CUSTOMER_ID",
31
+
32
+ GAMIFICATION_SHOW_POWERED_BY = "GAMIFICATION_SHOW_POWERED_BY",
33
+ _system_leader_board_mask_username = "_system_leader_board_mask_username",
34
+ }
@@ -0,0 +1,11 @@
1
+ export interface PublicProperties {
2
+ core_user_language?: string;
3
+ ach_points_balance?: number;
4
+ ach_points_ever?: number;
5
+ ach_points_board_period_type_1?: number;
6
+ ach_points_board_period_type_2?: number;
7
+ ach_level_current_id?: number;
8
+ ach_level_current?: string;
9
+ core_is_test_account?: boolean;
10
+ ach_gamification_in_control_group?: boolean;
11
+ }
@@ -0,0 +1,14 @@
1
+ import { ProtocolResponse } from "../Base/ProtocolResponse";
2
+ import { PublicProperties } from "./PublicProperties";
3
+
4
+ interface ResponseIdentify extends ProtocolResponse {
5
+ user_id: number;
6
+ ext_user_id: string;
7
+ public_username: string;
8
+ avatar_id: string;
9
+ job: boolean;
10
+ props?: PublicProperties;
11
+ pubic_username_set: boolean;
12
+ }
13
+
14
+ export { ResponseIdentify }
@@ -0,0 +1,11 @@
1
+ enum TranslationArea {
2
+
3
+ Casino = 1,
4
+ Gamification = 2,
5
+ Trading = 3,
6
+ Archived = 4,
7
+ Affiliation = 5,
8
+ RetentionGames = 6
9
+ }
10
+
11
+ export { TranslationArea };
@@ -0,0 +1,18 @@
1
+ import { GetLabelInfoRequest } from './GetLabelInfoRequest'
2
+ import { GetLabelInfoResponse } from './GetLabelInfoResponse'
3
+ import { GetTranslationsRequest } from './GetTranslationsRequest'
4
+ import { GetTranslationsResponse } from './GetTranslationsResponse'
5
+ import { PublicLabelSettings } from './PublicLabelSettings'
6
+ import { ResponseIdentify } from './ResponseIdentify'
7
+ import { TranslationArea } from './TranslationArea'
8
+
9
+
10
+ export {
11
+ GetTranslationsRequest,
12
+ GetTranslationsResponse,
13
+ GetLabelInfoRequest,
14
+ GetLabelInfoResponse,
15
+ TranslationArea,
16
+ PublicLabelSettings,
17
+ ResponseIdentify
18
+ }