@suprsend/node-sdk 1.12.0 → 1.13.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (44) hide show
  1. package/dist/constants.js +2 -8
  2. package/dist/event.js +2 -2
  3. package/dist/events_bulk.js +2 -2
  4. package/dist/index.js +21 -0
  5. package/dist/object_edit.js +6 -12
  6. package/dist/object_edit_internal_helper.js +40 -301
  7. package/dist/objects_api.js +193 -242
  8. package/dist/request_json/workflow.json +7 -29
  9. package/dist/request_json/workflow_trigger.json +7 -29
  10. package/dist/subscriber.js +10 -27
  11. package/dist/subscriber_helper.js +33 -291
  12. package/dist/subscriber_list.js +2 -2
  13. package/dist/user_edit.js +412 -0
  14. package/dist/user_edit_internal_helper.js +363 -0
  15. package/dist/users_api.js +400 -98
  16. package/dist/users_edit_bulk.js +312 -0
  17. package/dist/workflow.js +2 -2
  18. package/dist/workflow_request.js +2 -2
  19. package/dist/workflow_trigger_bulk.js +2 -2
  20. package/dist/workflows_bulk.js +2 -2
  21. package/package.json +1 -1
  22. package/src/constants.js +0 -4
  23. package/src/event.js +4 -5
  24. package/src/events_bulk.js +3 -5
  25. package/src/index.js +6 -0
  26. package/src/object_edit.js +6 -6
  27. package/src/object_edit_internal_helper.js +37 -295
  28. package/src/objects_api.js +97 -93
  29. package/src/request_json/workflow.json +7 -29
  30. package/src/request_json/workflow_trigger.json +7 -29
  31. package/src/subscriber.js +8 -20
  32. package/src/subscriber_helper.js +34 -284
  33. package/src/subscriber_list.js +4 -4
  34. package/src/user_edit.js +360 -0
  35. package/src/user_edit_internal_helper.js +297 -0
  36. package/src/users_api.js +207 -27
  37. package/src/users_edit_bulk.js +211 -0
  38. package/src/workflow.js +4 -5
  39. package/src/workflow_request.js +4 -4
  40. package/src/workflow_trigger_bulk.js +2 -4
  41. package/src/workflows_bulk.js +3 -5
  42. package/types/index.d.ts +113 -8
  43. package/dist/language_codes.js +0 -197
  44. package/src/language_codes.js +0 -188
@@ -1,5 +1,4 @@
1
1
  import { is_object, has_special_char, is_empty, is_string } from "./utils";
2
- import ALL_LANG_CODES from "./language_codes";
3
2
 
4
3
  // ---------- Identity keys
5
4
  const IDENT_KEY_EMAIL = "$email";
@@ -26,48 +25,6 @@ const KEY_ID_PROVIDER = "$id_provider";
26
25
  const KEY_PREFERRED_LANGUAGE = "$preferred_language";
27
26
  const KEY_TIMEZONE = "$timezone";
28
27
 
29
- const OTHER_RESERVED_KEYS = [
30
- "$messenger",
31
- "$inbox",
32
- KEY_ID_PROVIDER,
33
- "$device_id",
34
- "$insert_id",
35
- "$time",
36
- "$set",
37
- "$set_once",
38
- "$add",
39
- "$append",
40
- "$remove",
41
- "$unset",
42
- "$identify",
43
- "$anon_id",
44
- "$identified_id",
45
- KEY_PREFERRED_LANGUAGE,
46
- KEY_TIMEZONE,
47
- "$notification_delivered",
48
- "$notification_dismiss",
49
- "$notification_clicked",
50
- ];
51
-
52
- const SUPER_PROPERTY_KEYS = [
53
- "$app_version_string",
54
- "$app_build_number",
55
- "$brand",
56
- "$carrier",
57
- "$manufacturer",
58
- "$model",
59
- "$os",
60
- "$ss_sdk_version",
61
- "$insert_id",
62
- "$time",
63
- ];
64
-
65
- const ALL_RESERVED_KEYS = [
66
- ...SUPER_PROPERTY_KEYS,
67
- ...OTHER_RESERVED_KEYS,
68
- ...IDENT_KEYS_ALL,
69
- ];
70
-
71
28
  export default class _ObjectEditInternalHelper {
72
29
  constructor() {
73
30
  this.__dict_set = {};
@@ -146,18 +103,6 @@ export default class _ObjectEditInternalHelper {
146
103
  return [key, true];
147
104
  }
148
105
 
149
- __validate_key_prefix(key, caller) {
150
- if (!ALL_RESERVED_KEYS.includes(key)) {
151
- if (has_special_char(key)) {
152
- this.__info.push(
153
- `[${caller}] skipping key: ${key}. key starting with [$,ss_] are reserved`
154
- );
155
- return false;
156
- }
157
- }
158
- return true;
159
- }
160
-
161
106
  __is_identity_key(key) {
162
107
  return IDENT_KEYS_ALL.includes(key);
163
108
  }
@@ -170,10 +115,7 @@ export default class _ObjectEditInternalHelper {
170
115
  if (this.__is_identity_key(validated_key)) {
171
116
  this.__add_identity(validated_key, value, args, caller);
172
117
  } else {
173
- const is_k_valid = this.__validate_key_prefix(validated_key, caller);
174
- if (is_k_valid) {
175
- this.__dict_append[validated_key] = value;
176
- }
118
+ this.__dict_append[validated_key] = value;
177
119
  }
178
120
  }
179
121
 
@@ -182,10 +124,7 @@ export default class _ObjectEditInternalHelper {
182
124
  if (!is_k_valid) {
183
125
  return;
184
126
  } else {
185
- const is_k_valid = this.__validate_key_prefix(validated_key, caller);
186
- if (is_k_valid) {
187
- this.__dict_set[validated_key] = value;
188
- }
127
+ this.__dict_set[validated_key] = value;
189
128
  }
190
129
  }
191
130
 
@@ -194,10 +133,7 @@ export default class _ObjectEditInternalHelper {
194
133
  if (!is_k_valid) {
195
134
  return;
196
135
  } else {
197
- const is_k_valid = this.__validate_key_prefix(validated_key, caller);
198
- if (is_k_valid) {
199
- this.__dict_set_once[validated_key] = value;
200
- }
136
+ this.__dict_set_once[validated_key] = value;
201
137
  }
202
138
  }
203
139
 
@@ -206,10 +142,7 @@ export default class _ObjectEditInternalHelper {
206
142
  if (!is_k_valid) {
207
143
  return;
208
144
  } else {
209
- const is_k_valid = this.__validate_key_prefix(validated_key, caller);
210
- if (is_k_valid) {
211
- this.__dict_increment[validated_key] = value;
212
- }
145
+ this.__dict_increment[validated_key] = value;
213
146
  }
214
147
  }
215
148
 
@@ -221,10 +154,7 @@ export default class _ObjectEditInternalHelper {
221
154
  if (this.__is_identity_key(validated_key)) {
222
155
  this.__remove_identity(validated_key, value, args, caller);
223
156
  } else {
224
- const is_k_valid = this.__validate_key_prefix(validated_key, caller);
225
- if (is_k_valid) {
226
- this.__dict_remove[validated_key] = value;
227
- }
157
+ this.__dict_remove[validated_key] = value;
228
158
  }
229
159
  }
230
160
 
@@ -237,10 +167,6 @@ export default class _ObjectEditInternalHelper {
237
167
  }
238
168
 
239
169
  _set_preferred_language(lang_code, caller) {
240
- if (!ALL_LANG_CODES.includes(lang_code)) {
241
- this.__info.push(`[${caller}] invalid value ${lang_code}`);
242
- return;
243
- }
244
170
  this.__dict_set[KEY_PREFERRED_LANGUAGE] = lang_code;
245
171
  }
246
172
 
@@ -327,264 +253,80 @@ export default class _ObjectEditInternalHelper {
327
253
  }
328
254
 
329
255
  // email methods
330
- __validate_email(value, caller) {
331
- const [email, is_valid] = this.__check_ident_val_string(value, caller);
332
- if (!is_valid) {
333
- return [email, false];
334
- }
335
- return [email, true];
336
- }
337
-
338
256
  _add_email(email, caller) {
339
- const [value, is_valid] = this.__validate_email(email, caller);
340
- if (!is_valid) {
341
- return;
342
- }
343
- this.__dict_append[IDENT_KEY_EMAIL] = value;
257
+ this.__dict_append[IDENT_KEY_EMAIL] = email;
344
258
  }
345
259
 
346
260
  _remove_email(email, caller) {
347
- const [value, is_valid] = this.__validate_email(email, caller);
348
- if (!is_valid) {
349
- return;
350
- }
351
- this.__dict_remove[IDENT_KEY_EMAIL] = value;
352
- }
353
-
354
- // mobile methods
355
- __validate_mobile_no(value, caller) {
356
- const [mobile, is_valid] = this.__check_ident_val_string(value, caller);
357
- if (!is_valid) {
358
- return [mobile, false];
359
- }
360
- return [mobile, true];
261
+ this.__dict_remove[IDENT_KEY_EMAIL] = email;
361
262
  }
362
263
 
264
+ // sms methods
363
265
  _add_sms(mobile_no, caller) {
364
- const [value, is_valid] = this.__validate_mobile_no(mobile_no, caller);
365
- if (!is_valid) {
366
- return;
367
- }
368
- this.__dict_append[IDENT_KEY_SMS] = value;
266
+ this.__dict_append[IDENT_KEY_SMS] = mobile_no;
369
267
  }
370
268
 
371
269
  _remove_sms(mobile_no, caller) {
372
- const [value, is_valid] = this.__validate_mobile_no(mobile_no, caller);
373
- if (!is_valid) {
374
- return;
375
- }
376
- this.__dict_remove[IDENT_KEY_SMS] = value;
270
+ this.__dict_remove[IDENT_KEY_SMS] = mobile_no;
377
271
  }
378
272
 
273
+ // whatsapp methods
379
274
  _add_whatsapp(mobile_no, caller) {
380
- const [value, is_valid] = this.__validate_mobile_no(mobile_no, caller);
381
- if (!is_valid) {
382
- return;
383
- }
384
- this.__dict_append[IDENT_KEY_WHATSAPP] = value;
275
+ this.__dict_append[IDENT_KEY_WHATSAPP] = mobile_no;
385
276
  }
386
277
 
387
278
  _remove_whatsapp(mobile_no, caller) {
388
- const [value, is_valid] = this.__validate_mobile_no(mobile_no, caller);
389
- if (!is_valid) {
390
- return;
391
- }
392
- this.__dict_remove[IDENT_KEY_WHATSAPP] = value;
279
+ this.__dict_remove[IDENT_KEY_WHATSAPP] = mobile_no;
393
280
  }
394
281
 
395
282
  // android push methods
396
- __check_androidpush_value(value, provider, caller) {
397
- let [push_token, is_valid] = this.__check_ident_val_string(value, caller);
398
- if (!is_valid) {
399
- return [push_token, provider, false];
400
- }
401
-
402
- let [validated_provider, is_provider_valid] = this.__check_ident_val_string(
403
- value,
404
- caller
405
- );
406
- if (!is_provider_valid) {
407
- return [push_token, provider, false];
408
- }
409
- provider = validated_provider.toLocaleLowerCase();
410
-
411
- return [push_token, provider, true];
283
+ _add_androidpush(push_token, provider, caller) {
284
+ this.__dict_append[IDENT_KEY_ANDROIDPUSH] = push_token;
285
+ this.__dict_append[KEY_ID_PROVIDER] = provider;
412
286
  }
413
287
 
414
- _add_androidpush(push_token, provider = "fcm", caller) {
415
- const [value, vendor, is_valid] = this.__check_androidpush_value(
416
- push_token,
417
- provider,
418
- caller
419
- );
420
- if (!is_valid) {
421
- return;
422
- }
423
- this.__dict_append[IDENT_KEY_ANDROIDPUSH] = value;
424
- this.__dict_append[KEY_ID_PROVIDER] = vendor;
425
- }
426
-
427
- _remove_androidpush(push_token, provider = "fcm") {
428
- const caller = "remove_androidpush";
429
- const [value, vendor, is_valid] = this.__check_androidpush_value(
430
- push_token,
431
- provider,
432
- caller
433
- );
434
- if (!is_valid) {
435
- return;
436
- }
437
- this.__dict_remove[IDENT_KEY_ANDROIDPUSH] = value;
438
- this.__dict_remove[KEY_ID_PROVIDER] = vendor;
288
+ _remove_androidpush(push_token, provider) {
289
+ this.__dict_remove[IDENT_KEY_ANDROIDPUSH] = push_token;
290
+ this.__dict_remove[KEY_ID_PROVIDER] = provider;
439
291
  }
440
292
 
441
293
  // ios push methods
442
- __check_iospush_value(value, provider, caller) {
443
- let [push_token, is_valid] = this.__check_ident_val_string(value, caller);
444
- if (!is_valid) {
445
- return [push_token, provider, false];
446
- }
447
-
448
- let [validated_provider, is_provider_valid] = this.__check_ident_val_string(
449
- value,
450
- caller
451
- );
452
- if (!is_provider_valid) {
453
- return [push_token, provider, false];
454
- }
455
- provider = validated_provider.toLocaleLowerCase();
456
-
457
- return [push_token, provider, true];
458
- }
459
-
460
- _add_iospush(push_token, provider = "apns", caller) {
461
- const [value, vendor, is_valid] = this.__check_iospush_value(
462
- push_token,
463
- provider,
464
- caller
465
- );
466
- if (!is_valid) {
467
- return;
468
- }
469
- this.__dict_append[IDENT_KEY_IOSPUSH] = value;
470
- this.__dict_append[KEY_ID_PROVIDER] = vendor;
294
+ _add_iospush(push_token, provider, caller) {
295
+ this.__dict_append[IDENT_KEY_IOSPUSH] = push_token;
296
+ this.__dict_append[KEY_ID_PROVIDER] = provider;
471
297
  }
472
298
 
473
- _remove_iospush(push_token, provider = "apns", caller) {
474
- const [value, vendor, is_valid] = this.__check_iospush_value(
475
- push_token,
476
- provider,
477
- caller
478
- );
479
- if (!is_valid) {
480
- return;
481
- }
482
- this.__dict_remove[IDENT_KEY_IOSPUSH] = value;
483
- this.__dict_remove[KEY_ID_PROVIDER] = vendor;
299
+ _remove_iospush(push_token, provider, caller) {
300
+ this.__dict_remove[IDENT_KEY_IOSPUSH] = push_token;
301
+ this.__dict_remove[KEY_ID_PROVIDER] = provider;
484
302
  }
485
303
 
486
304
  // web push methods
487
- __check_webpush_dict(value, provider, caller) {
488
- if (!is_object(value)) {
489
- this.__errors.push(
490
- `[${caller}] value must be a valid dict representing webpush-token`
491
- );
492
- return [value, provider, false];
493
- }
494
-
495
- let [validated_provider, is_provider_valid] = this.__check_ident_val_string(
496
- value,
497
- caller
498
- );
499
- if (!is_provider_valid) {
500
- return [value, provider, false];
501
- }
502
- provider = validated_provider.toLocaleLowerCase();
503
-
504
- return [value, provider, true];
505
- }
506
-
507
- _add_webpush(push_token, provider = "vapid", caller) {
508
- const [value, vendor, is_valid] = this.__check_webpush_dict(
509
- push_token,
510
- provider,
511
- caller
512
- );
513
- if (!is_valid) {
514
- return;
515
- }
516
- this.__dict_append[IDENT_KEY_WEBPUSH] = value;
517
- this.__dict_append[KEY_ID_PROVIDER] = vendor;
518
- }
519
-
520
- _remove_webpush(push_token, provider = "vapid", caller) {
521
- const [value, vendor, is_valid] = this.__check_webpush_dict(
522
- push_token,
523
- provider,
524
- caller
525
- );
526
- if (!is_valid) {
527
- return;
528
- }
529
- this.__dict_remove[IDENT_KEY_WEBPUSH] = value;
530
- this.__dict_remove[KEY_ID_PROVIDER] = vendor;
305
+ _add_webpush(push_token, provider, caller) {
306
+ this.__dict_append[IDENT_KEY_WEBPUSH] = push_token;
307
+ this.__dict_append[KEY_ID_PROVIDER] = provider;
531
308
  }
532
309
 
533
- __check_slack_dict(value, caller) {
534
- const msg = "value must be a valid dict/json with proper keys";
535
- if (!(value && value instanceof Object)) {
536
- this.__errors.push(`[${caller}] ${msg}`);
537
- return [value, false];
538
- } else {
539
- return [value, true];
540
- }
310
+ _remove_webpush(push_token, provider, caller) {
311
+ this.__dict_remove[IDENT_KEY_WEBPUSH] = push_token;
312
+ this.__dict_remove[KEY_ID_PROVIDER] = provider;
541
313
  }
542
314
 
315
+ // slack methods
543
316
  _add_slack(value, caller) {
544
- const [validated_value, is_valid] = this.__check_slack_dict(value, caller);
545
- if (!is_valid) {
546
- return;
547
- }
548
- this.__dict_append[IDENT_KEY_SLACK] = validated_value;
317
+ this.__dict_append[IDENT_KEY_SLACK] = value;
549
318
  }
550
319
 
551
320
  _remove_slack(value, caller) {
552
- const [validated_value, is_valid] = this.__check_slack_dict(value, caller);
553
- if (!is_valid) {
554
- return;
555
- }
556
- this.__dict_remove[IDENT_KEY_SLACK] = validated_value;
557
- }
558
-
559
- __check_ms_teams_dict(value, caller) {
560
- const msg = "value must be a valid dict/json with proper keys";
561
- if (!(value && value instanceof Object)) {
562
- this.__errors.push(`[${caller}] ${msg}`);
563
- return [value, false];
564
- } else {
565
- return [value, true];
566
- }
321
+ this.__dict_remove[IDENT_KEY_SLACK] = value;
567
322
  }
568
323
 
324
+ // ms teams methods
569
325
  _add_ms_teams(value, caller) {
570
- const [validated_value, is_valid] = this.__check_ms_teams_dict(
571
- value,
572
- caller
573
- );
574
- if (!is_valid) {
575
- return;
576
- }
577
- this.__dict_append[IDENT_KEY_MS_TEAMS] = validated_value;
326
+ this.__dict_append[IDENT_KEY_MS_TEAMS] = value;
578
327
  }
579
328
 
580
329
  _remove_ms_teams(value, caller) {
581
- const [validated_value, is_valid] = this.__check_ms_teams_dict(
582
- value,
583
- caller
584
- );
585
- if (!is_valid) {
586
- return;
587
- }
588
- this.__dict_remove[IDENT_KEY_MS_TEAMS] = validated_value;
330
+ this.__dict_remove[IDENT_KEY_MS_TEAMS] = value;
589
331
  }
590
332
  }