@suprsend/node-sdk 0.1.0 → 1.0.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.
@@ -15,24 +15,25 @@ var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/creat
15
15
 
16
16
  var _utils = require("./utils");
17
17
 
18
+ // ---------- Identity keys
19
+ var IDENT_KEY_EMAIL = "$email";
20
+ var IDENT_KEY_SMS = "$sms";
21
+ var IDENT_KEY_ANDROIDPUSH = "$androidpush";
22
+ var IDENT_KEY_IOSPUSH = "$iospush";
23
+ var IDENT_KEY_WHATSAPP = "$whatsapp";
24
+ var IDENT_KEY_WEBPUSH = "$webpush";
25
+ var IDENT_KEY_SLACK = "$slack";
26
+ var IDENT_KEYS_ALL = [IDENT_KEY_EMAIL, IDENT_KEY_SMS, IDENT_KEY_ANDROIDPUSH, IDENT_KEY_IOSPUSH, IDENT_KEY_WHATSAPP, IDENT_KEY_WEBPUSH, IDENT_KEY_SLACK];
27
+ var KEY_PUSHVENDOR = "$pushvendor";
28
+ var OTHER_RESERVED_KEYS = ["$messenger", "$inbox", KEY_PUSHVENDOR, "$device_id", "$insert_id", "$time", "$set", "$set_once", "$add", "$append", "$remove", "$unset", "$identify", "$anon_id", "$identified_id", "$notification_delivered", "$notification_dismiss", "$notification_clicked"];
29
+ var SUPER_PROPERTY_KEYS = ["$app_version_string", "$app_build_number", "$brand", "$carrier", "$manufacturer", "$model", "$os", "$ss_sdk_version", "$insert_id", "$time"];
30
+ var ALL_RESERVED_KEYS = [].concat(SUPER_PROPERTY_KEYS, OTHER_RESERVED_KEYS, IDENT_KEYS_ALL);
18
31
  var EMAIL_REGEX = /\S+@\S+\.\S+/;
19
32
  var MOBILE_REGEX = /^\+[0-9\s]+/;
20
- var KEY_PUSHVENDOR = "$pushvendor";
21
- var CHANNEL_MAP = {
22
- EMAIL: "$email",
23
- SMS: "$sms",
24
- WHATSAPP: "$whatsapp",
25
- ANDROID_PUSH: "$androidpush",
26
- IOS_PUSH: "$iospush",
27
- WEB_PUSH: "$webpush"
28
- };
29
- var ANDROID_PUSH_VENDORS = ["fcm", "xiaomi", "oppo"];
30
- var IOS_PUSH_VENDORS = ["apns"];
31
- var WEB_PUSH_VENDORS = ["vapid"];
32
-
33
- var _IdentityEventInternalHelper = /*#__PURE__*/function () {
34
- function _IdentityEventInternalHelper(distinct_id, workspace_key) {
35
- (0, _classCallCheck2["default"])(this, _IdentityEventInternalHelper);
33
+
34
+ var _SubscriberInternalHelper = /*#__PURE__*/function () {
35
+ function _SubscriberInternalHelper(distinct_id, workspace_key) {
36
+ (0, _classCallCheck2["default"])(this, _SubscriberInternalHelper);
36
37
  this.distinct_id = distinct_id;
37
38
  this.workspace_key = workspace_key;
38
39
  this.__dict_append = {};
@@ -45,7 +46,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
45
46
  this.__info = [];
46
47
  }
47
48
 
48
- (0, _createClass2["default"])(_IdentityEventInternalHelper, [{
49
+ (0, _createClass2["default"])(_SubscriberInternalHelper, [{
49
50
  key: "reset",
50
51
  value: function reset() {
51
52
  this.__dict_append = {};
@@ -76,7 +77,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
76
77
  }, {
77
78
  key: "__form_event",
78
79
  value: function __form_event() {
79
- if (!(0, _utils.is_empty)(this.__dict_append) || !(0, _utils.is_empty)(this.__dict_remove)) {
80
+ if (!(0, _utils.is_empty)(this.__dict_append) || !(0, _utils.is_empty)(this.__dict_remove) || !(0, _utils.is_empty)(this.__list_unset)) {
80
81
  var event = {
81
82
  $insert_id: (0, _utils.uuid)(),
82
83
  $time: (0, _utils.epoch_milliseconds)(),
@@ -94,10 +95,15 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
94
95
  this.__remove_count += 1;
95
96
  }
96
97
 
98
+ if (!(0, _utils.is_empty)(this.__list_unset)) {
99
+ event["$unset"] = this.__list_unset;
100
+ this.__unset_count += 1;
101
+ }
102
+
97
103
  return event;
104
+ } else {
105
+ return;
98
106
  }
99
-
100
- return;
101
107
  }
102
108
  }, {
103
109
  key: "__validate_key_basic",
@@ -121,7 +127,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
121
127
  }, {
122
128
  key: "__validate_key_prefix",
123
129
  value: function __validate_key_prefix(key, caller) {
124
- if (!this.__is_identity_key(key)) {
130
+ if (!ALL_RESERVED_KEYS.includes(key)) {
125
131
  if ((0, _utils.has_special_char)(key)) {
126
132
  this.__info.push("[".concat(caller, "] skipping key: ").concat(key, ". key starting with [$,ss_] are reserved"));
127
133
 
@@ -134,7 +140,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
134
140
  }, {
135
141
  key: "__is_identity_key",
136
142
  value: function __is_identity_key(key) {
137
- return Object.values(CHANNEL_MAP).includes(key);
143
+ return IDENT_KEYS_ALL.includes(key);
138
144
  }
139
145
  }, {
140
146
  key: "_append_kv",
@@ -145,18 +151,18 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
145
151
  var _this$__validate_key_ = this.__validate_key_basic(key, caller),
146
152
  _this$__validate_key_2 = (0, _slicedToArray2["default"])(_this$__validate_key_, 2),
147
153
  validated_key = _this$__validate_key_2[0],
148
- is_valid = _this$__validate_key_2[1];
154
+ is_k_valid = _this$__validate_key_2[1];
149
155
 
150
- if (!is_valid) {
156
+ if (!is_k_valid) {
151
157
  return;
152
158
  }
153
159
 
154
160
  if (this.__is_identity_key(validated_key)) {
155
161
  this.__add_identity(validated_key, value, args, caller);
156
162
  } else {
157
- var _is_valid = this.__validate_key_prefix(validated_key, caller);
163
+ var _is_k_valid = this.__validate_key_prefix(validated_key, caller);
158
164
 
159
- if (_is_valid) {
165
+ if (_is_k_valid) {
160
166
  this.__dict_append[validated_key] = value;
161
167
  }
162
168
  }
@@ -170,42 +176,58 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
170
176
  var _this$__validate_key_3 = this.__validate_key_basic(key, caller),
171
177
  _this$__validate_key_4 = (0, _slicedToArray2["default"])(_this$__validate_key_3, 2),
172
178
  validated_key = _this$__validate_key_4[0],
173
- is_valid = _this$__validate_key_4[1];
179
+ is_k_valid = _this$__validate_key_4[1];
174
180
 
175
- if (!is_valid) {
181
+ if (!is_k_valid) {
176
182
  return;
177
183
  }
178
184
 
179
185
  if (this.__is_identity_key(validated_key)) {
180
186
  this.__remove_identity(validated_key, value, args, caller);
181
187
  } else {
182
- var _is_valid2 = this.__validate_key_prefix(validated_key, caller);
188
+ var _is_k_valid2 = this.__validate_key_prefix(validated_key, caller);
183
189
 
184
- if (_is_valid2) {
190
+ if (_is_k_valid2) {
185
191
  this.__dict_remove[validated_key] = value;
186
192
  }
187
193
  }
188
194
  }
195
+ }, {
196
+ key: "_unset_k",
197
+ value: function _unset_k(key) {
198
+ var caller = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : "unset";
199
+
200
+ var _this$__validate_key_5 = this.__validate_key_basic(key, caller),
201
+ _this$__validate_key_6 = (0, _slicedToArray2["default"])(_this$__validate_key_5, 2),
202
+ validated_key = _this$__validate_key_6[0],
203
+ is_k_valid = _this$__validate_key_6[1];
204
+
205
+ if (!is_k_valid) {
206
+ return;
207
+ }
208
+
209
+ this.__list_unset.push(validated_key);
210
+ }
189
211
  }, {
190
212
  key: "__add_identity",
191
213
  value: function __add_identity(key, value, args, caller) {
192
214
  switch (key) {
193
- case CHANNEL_MAP.EMAIL:
215
+ case IDENT_KEY_EMAIL:
194
216
  this._add_email(value, caller);
195
217
 
196
218
  break;
197
219
 
198
- case CHANNEL_MAP.SMS:
220
+ case IDENT_KEY_SMS:
199
221
  this._add_sms(value, caller);
200
222
 
201
223
  break;
202
224
 
203
- case CHANNEL_MAP.WHATSAPP:
225
+ case IDENT_KEY_WHATSAPP:
204
226
  this._add_whatsapp(value, caller);
205
227
 
206
228
  break;
207
229
 
208
- case CHANNEL_MAP.ANDROID_PUSH:
230
+ case IDENT_KEY_ANDROIDPUSH:
209
231
  this._add_androidpush(value, args[KEY_PUSHVENDOR], caller);
210
232
 
211
233
  if (this.__dict_append[KEY_PUSHVENDOR]) {
@@ -214,7 +236,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
214
236
 
215
237
  break;
216
238
 
217
- case CHANNEL_MAP.IOS_PUSH:
239
+ case IDENT_KEY_IOSPUSH:
218
240
  this._add_iospush(value, args[KEY_PUSHVENDOR], caller);
219
241
 
220
242
  if (this.__dict_append[KEY_PUSHVENDOR]) {
@@ -223,7 +245,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
223
245
 
224
246
  break;
225
247
 
226
- case CHANNEL_MAP.WEB_PUSH:
248
+ case IDENT_KEY_WEBPUSH:
227
249
  this._add_webpush(value, args[KEY_PUSHVENDOR], caller);
228
250
 
229
251
  if (this.__dict_append[KEY_PUSHVENDOR]) {
@@ -232,6 +254,11 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
232
254
 
233
255
  break;
234
256
 
257
+ case IDENT_KEY_SLACK:
258
+ this._add_slack(value, caller);
259
+
260
+ break;
261
+
235
262
  default:
236
263
  break;
237
264
  }
@@ -240,22 +267,22 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
240
267
  key: "__remove_identity",
241
268
  value: function __remove_identity(key, value, args, caller) {
242
269
  switch (key) {
243
- case CHANNEL_MAP.EMAIL:
270
+ case IDENT_KEY_EMAIL:
244
271
  this._remove_email(value, caller);
245
272
 
246
273
  break;
247
274
 
248
- case CHANNEL_MAP.SMS:
275
+ case IDENT_KEY_SMS:
249
276
  this._remove_sms(value, caller);
250
277
 
251
278
  break;
252
279
 
253
- case CHANNEL_MAP.WHATSAPP:
280
+ case IDENT_KEY_WHATSAPP:
254
281
  this._remove_whatsapp(value, caller);
255
282
 
256
283
  break;
257
284
 
258
- case CHANNEL_MAP.ANDROID_PUSH:
285
+ case IDENT_KEY_ANDROIDPUSH:
259
286
  this._remove_androidpush(value, args[KEY_PUSHVENDOR], caller);
260
287
 
261
288
  if (this.__dict_remove[KEY_PUSHVENDOR]) {
@@ -264,7 +291,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
264
291
 
265
292
  break;
266
293
 
267
- case CHANNEL_MAP.IOS_PUSH:
294
+ case IDENT_KEY_IOSPUSH:
268
295
  this._remove_iospush(value, args[KEY_PUSHVENDOR], caller);
269
296
 
270
297
  if (this.__dict_remove[KEY_PUSHVENDOR]) {
@@ -273,7 +300,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
273
300
 
274
301
  break;
275
302
 
276
- case CHANNEL_MAP.WEB_PUSH:
303
+ case IDENT_KEY_WEBPUSH:
277
304
  this._remove_webpush(value, args[KEY_PUSHVENDOR], caller);
278
305
 
279
306
  if (this.__dict_remove[KEY_PUSHVENDOR]) {
@@ -282,6 +309,11 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
282
309
 
283
310
  break;
284
311
 
312
+ case IDENT_KEY_SLACK:
313
+ this._remove_slack(val, caller);
314
+
315
+ break;
316
+
285
317
  default:
286
318
  break;
287
319
  }
@@ -351,7 +383,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
351
383
  return;
352
384
  }
353
385
 
354
- this.__dict_append[CHANNEL_MAP.EMAIL] = value;
386
+ this.__dict_append[IDENT_KEY_EMAIL] = value;
355
387
  }
356
388
  }, {
357
389
  key: "_remove_email",
@@ -365,7 +397,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
365
397
  return;
366
398
  }
367
399
 
368
- this.__dict_remove[CHANNEL_MAP.EMAIL] = value;
400
+ this.__dict_remove[IDENT_KEY_EMAIL] = value;
369
401
  } // mobile methods
370
402
 
371
403
  }, {
@@ -410,7 +442,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
410
442
  return;
411
443
  }
412
444
 
413
- this.__dict_append[CHANNEL_MAP.SMS] = value;
445
+ this.__dict_append[IDENT_KEY_SMS] = value;
414
446
  }
415
447
  }, {
416
448
  key: "_remove_sms",
@@ -424,7 +456,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
424
456
  return;
425
457
  }
426
458
 
427
- this.__dict_remove[CHANNEL_MAP.SMS] = value;
459
+ this.__dict_remove[IDENT_KEY_SMS] = value;
428
460
  }
429
461
  }, {
430
462
  key: "_add_whatsapp",
@@ -438,7 +470,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
438
470
  return;
439
471
  }
440
472
 
441
- this.__dict_append[CHANNEL_MAP.WHATSAPP] = value;
473
+ this.__dict_append[IDENT_KEY_WHATSAPP] = value;
442
474
  }
443
475
  }, {
444
476
  key: "_remove_whatsapp",
@@ -452,7 +484,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
452
484
  return;
453
485
  }
454
486
 
455
- this.__dict_remove[CHANNEL_MAP.WHATSAPP] = value;
487
+ this.__dict_remove[IDENT_KEY_WHATSAPP] = value;
456
488
  } // android push methods
457
489
 
458
490
  }, {
@@ -471,7 +503,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
471
503
  provider = "fcm";
472
504
  }
473
505
 
474
- if (!ANDROID_PUSH_VENDORS.includes(provider)) {
506
+ if (!["fcm", "xiaomi", "oppo"].includes(provider)) {
475
507
  this.__errors.push("[".concat(caller, "] unsupported androidpush provider ").concat(provider));
476
508
 
477
509
  return [push_token, provider, false];
@@ -495,7 +527,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
495
527
  return;
496
528
  }
497
529
 
498
- this.__dict_append[CHANNEL_MAP.ANDROID_PUSH] = value;
530
+ this.__dict_append[IDENT_KEY_ANDROIDPUSH] = value;
499
531
  this.__dict_append[KEY_PUSHVENDOR] = vendor;
500
532
  }
501
533
  }, {
@@ -514,7 +546,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
514
546
  return;
515
547
  }
516
548
 
517
- this.__dict_remove[CHANNEL_MAP.ANDROID_PUSH] = value;
549
+ this.__dict_remove[IDENT_KEY_ANDROIDPUSH] = value;
518
550
  this.__dict_remove[KEY_PUSHVENDOR] = vendor;
519
551
  } // ios push methods
520
552
 
@@ -534,7 +566,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
534
566
  provider = "apns";
535
567
  }
536
568
 
537
- if (!IOS_PUSH_VENDORS.includes(provider)) {
569
+ if (!["apns"].includes(provider)) {
538
570
  this.__errors.push("[".concat(caller, "] unsupported iospush provider ").concat(provider));
539
571
 
540
572
  return [push_token, provider, false];
@@ -558,7 +590,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
558
590
  return;
559
591
  }
560
592
 
561
- this.__dict_append[CHANNEL_MAP.IOS_PUSH] = value;
593
+ this.__dict_append[IDENT_KEY_IOSPUSH] = value;
562
594
  this.__dict_append[KEY_PUSHVENDOR] = vendor;
563
595
  }
564
596
  }, {
@@ -577,7 +609,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
577
609
  return;
578
610
  }
579
611
 
580
- this.__dict_remove[CHANNEL_MAP.IOS_PUSH] = value;
612
+ this.__dict_remove[IDENT_KEY_IOSPUSH] = value;
581
613
  this.__dict_remove[KEY_PUSHVENDOR] = vendor;
582
614
  } // web push methods
583
615
 
@@ -594,7 +626,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
594
626
  provider = "vapid";
595
627
  }
596
628
 
597
- if (!WEB_PUSH_VENDORS.includes(provider)) {
629
+ if (!["vapid"].includes(provider)) {
598
630
  this.__errors.push("[".concat(caller, "] unsupported webpush provider ").concat(provider));
599
631
 
600
632
  return [value, provider, false];
@@ -618,7 +650,7 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
618
650
  return;
619
651
  }
620
652
 
621
- this.__dict_append[CHANNEL_MAP.WEB_PUSH] = value;
653
+ this.__dict_append[IDENT_KEY_WEBPUSH] = value;
622
654
  this.__dict_append[KEY_PUSHVENDOR] = vendor;
623
655
  }
624
656
  }, {
@@ -637,12 +669,112 @@ var _IdentityEventInternalHelper = /*#__PURE__*/function () {
637
669
  return;
638
670
  }
639
671
 
640
- this.__dict_remove[CHANNEL_MAP.WEB_PUSH] = value;
672
+ this.__dict_remove[IDENT_KEY_WEBPUSH] = value;
641
673
  this.__dict_remove[KEY_PUSHVENDOR] = vendor;
642
674
  }
675
+ }, {
676
+ key: "__validate_slack_userid",
677
+ value: function __validate_slack_userid(userid, caller) {
678
+ var _this$__check_ident_v9 = this.__check_ident_val_string(userid, caller),
679
+ _this$__check_ident_v10 = (0, _slicedToArray2["default"])(_this$__check_ident_v9, 2),
680
+ validated_userid = _this$__check_ident_v10[0],
681
+ is_valid = _this$__check_ident_v10[1];
682
+
683
+ if (!is_valid) {
684
+ return [validated_userid, false];
685
+ }
686
+
687
+ validated_userid = validated_userid.toUpperCase();
688
+
689
+ if (!validated_userid.startsWith("U") && !validated_userid.startsWith("W")) {
690
+ this.__errors.push("[".concat(caller, "] invalid value ").concat(validated_userid, ". Slack user/member_id starts with a U or W"));
691
+
692
+ return [validated_userid, false];
693
+ }
694
+
695
+ return [validated_userid, true];
696
+ }
697
+ }, {
698
+ key: "__check_slack_dict",
699
+ value: function __check_slack_dict(value, caller) {
700
+ var msg = "value must be a valid dict/json with one of these keys: [email, user_id]";
701
+
702
+ if (!(value && value instanceof Object)) {
703
+ this.__errors.push("[".concat(caller, "] ").concat(msg));
704
+
705
+ return [value, false];
706
+ }
707
+
708
+ var user_id = value.user_id;
709
+ var email = value.email;
710
+
711
+ if (user_id && user_id.trim()) {
712
+ user_id = user_id.trim();
713
+
714
+ var _this$__validate_slac = this.__validate_slack_userid(user_id, caller),
715
+ _this$__validate_slac2 = (0, _slicedToArray2["default"])(_this$__validate_slac, 2),
716
+ validated_user_id = _this$__validate_slac2[0],
717
+ is_valid = _this$__validate_slac2[1];
718
+
719
+ if (!is_valid) {
720
+ return [value, false];
721
+ } else {
722
+ return [{
723
+ user_id: validated_user_id
724
+ }, true];
725
+ }
726
+ } else if (email && email.trim()) {
727
+ email = email.trim();
728
+
729
+ var _this$__validate_emai5 = this.__validate_email(email, caller),
730
+ _this$__validate_emai6 = (0, _slicedToArray2["default"])(_this$__validate_emai5, 2),
731
+ validated_email = _this$__validate_emai6[0],
732
+ _is_valid = _this$__validate_emai6[1];
733
+
734
+ if (!_is_valid) {
735
+ return [value, false];
736
+ } else {
737
+ return [{
738
+ email: validated_email
739
+ }, true];
740
+ }
741
+ } else {
742
+ this.__errors.push("[".concat(caller, "] ").concat(msg));
743
+
744
+ return [value, false];
745
+ }
746
+ }
747
+ }, {
748
+ key: "_add_slack",
749
+ value: function _add_slack(value, caller) {
750
+ var _this$__check_slack_d = this.__check_slack_dict(value, caller),
751
+ _this$__check_slack_d2 = (0, _slicedToArray2["default"])(_this$__check_slack_d, 2),
752
+ validated_value = _this$__check_slack_d2[0],
753
+ is_valid = _this$__check_slack_d2[1];
754
+
755
+ if (!is_valid) {
756
+ return;
757
+ }
758
+
759
+ this.__dict_append[IDENT_KEY_SLACK] = validated_value;
760
+ }
761
+ }, {
762
+ key: "_remove_slack",
763
+ value: function _remove_slack(value, caller) {
764
+ var _this$__check_slack_d3 = this.__check_slack_dict(value, caller),
765
+ _this$__check_slack_d4 = (0, _slicedToArray2["default"])(_this$__check_slack_d3, 2),
766
+ validated_value = _this$__check_slack_d4[0],
767
+ is_valid = _this$__check_slack_d4[1];
768
+
769
+ if (!is_valid) {
770
+ return;
771
+ }
772
+
773
+ this.__dict_remove[IDENT_KEY_SLACK] = validated_value;
774
+ }
643
775
  }]);
644
- return _IdentityEventInternalHelper;
776
+ return _SubscriberInternalHelper;
645
777
  }();
646
778
 
647
- exports["default"] = _IdentityEventInternalHelper;
779
+ exports["default"] = _SubscriberInternalHelper;
648
780
  module.exports = exports.default;