@suprsend/node-sdk 1.8.2 → 1.9.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.
- package/dist/event.js +7 -0
- package/dist/index.js +2 -0
- package/dist/request_json/event.json +5 -0
- package/dist/request_json/list_broadcast.json +7 -1
- package/dist/request_json/workflow.json +55 -2
- package/dist/subscriber.js +83 -0
- package/dist/subscriber_helper.js +116 -10
- package/dist/subscriber_list.js +359 -21
- package/dist/tenant.js +214 -0
- package/dist/workflow.js +7 -0
- package/package.json +2 -2
- package/src/event.js +7 -0
- package/src/index.js +3 -0
- package/src/request_json/event.json +5 -0
- package/src/request_json/list_broadcast.json +7 -1
- package/src/request_json/workflow.json +55 -2
- package/src/subscriber.js +84 -0
- package/src/subscriber_helper.js +88 -0
- package/src/subscriber_list.js +228 -2
- package/src/tenant.js +120 -0
- package/src/workflow.js +7 -0
- package/types/index.d.ts +59 -4
package/dist/workflow.js
CHANGED
|
@@ -27,6 +27,7 @@ var Workflow = /*#__PURE__*/function () {
|
|
|
27
27
|
}
|
|
28
28
|
this.body = body;
|
|
29
29
|
this.idempotency_key = kwargs === null || kwargs === void 0 ? void 0 : kwargs.idempotency_key;
|
|
30
|
+
this.tenant_id = kwargs === null || kwargs === void 0 ? void 0 : kwargs.tenant_id;
|
|
30
31
|
this.brand_id = kwargs === null || kwargs === void 0 ? void 0 : kwargs.brand_id;
|
|
31
32
|
}
|
|
32
33
|
(0, _createClass2["default"])(Workflow, [{
|
|
@@ -62,6 +63,9 @@ var Workflow = /*#__PURE__*/function () {
|
|
|
62
63
|
if (this.idempotency_key) {
|
|
63
64
|
this.body["$idempotency_key"] = this.idempotency_key;
|
|
64
65
|
}
|
|
66
|
+
if (this.tenant_id) {
|
|
67
|
+
this.body["tenant_id"] = this.tenant_id;
|
|
68
|
+
}
|
|
65
69
|
if (this.brand_id) {
|
|
66
70
|
this.body["brand_id"] = this.brand_id;
|
|
67
71
|
}
|
|
@@ -79,6 +83,9 @@ var Workflow = /*#__PURE__*/function () {
|
|
|
79
83
|
if (this.idempotency_key) {
|
|
80
84
|
body_dict["$idempotency_key"] = this.idempotency_key;
|
|
81
85
|
}
|
|
86
|
+
if (this.tenant_id) {
|
|
87
|
+
body_dict["tenant_id"] = this.tenant_id;
|
|
88
|
+
}
|
|
82
89
|
if (this.brand_id) {
|
|
83
90
|
body_dict["brand_id"] = this.brand_id;
|
|
84
91
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@suprsend/node-sdk",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.9.0",
|
|
4
4
|
"description": "Suprsend Node SDK to trigger workflow from backend",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"scripts": {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"types": "types/index.d.ts",
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@babel/runtime": "^7.16.3",
|
|
28
|
-
"axios": "^
|
|
28
|
+
"axios": "^1.6.0",
|
|
29
29
|
"jsonschema": "^1.4.0",
|
|
30
30
|
"lodash": "^4.17.21",
|
|
31
31
|
"mime-types": "^2.1.34",
|
package/src/event.js
CHANGED
|
@@ -32,6 +32,7 @@ export default class Event {
|
|
|
32
32
|
this.event_name = event_name;
|
|
33
33
|
this.properties = properties;
|
|
34
34
|
this.idempotency_key = kwargs?.idempotency_key;
|
|
35
|
+
this.tenant_id = kwargs?.tenant_id;
|
|
35
36
|
this.brand_id = kwargs?.brand_id;
|
|
36
37
|
|
|
37
38
|
// default values
|
|
@@ -128,6 +129,9 @@ export default class Event {
|
|
|
128
129
|
if (this.idempotency_key) {
|
|
129
130
|
event_dict["$idempotency_key"] = this.idempotency_key;
|
|
130
131
|
}
|
|
132
|
+
if (this.tenant_id) {
|
|
133
|
+
event_dict["tenant_id"] = this.tenant_id;
|
|
134
|
+
}
|
|
131
135
|
if (this.brand_id) {
|
|
132
136
|
event_dict["brand_id"] = this.brand_id;
|
|
133
137
|
}
|
|
@@ -150,6 +154,9 @@ export default class Event {
|
|
|
150
154
|
if (this.idempotency_key) {
|
|
151
155
|
event_dict["$idempotency_key"] = this.idempotency_key;
|
|
152
156
|
}
|
|
157
|
+
if (this.tenant_id) {
|
|
158
|
+
event_dict["tenant_id"] = this.tenant_id;
|
|
159
|
+
}
|
|
153
160
|
if (this.brand_id) {
|
|
154
161
|
event_dict["brand_id"] = this.brand_id;
|
|
155
162
|
}
|
package/src/index.js
CHANGED
|
@@ -8,6 +8,7 @@ import SubscriberFactory from "./subscriber";
|
|
|
8
8
|
import BulkSubscribersFactory from "./subscribers_bulk";
|
|
9
9
|
import { SubscriberListsApi, SubscriberListBroadcast } from "./subscriber_list";
|
|
10
10
|
import BrandsApi from "./brands";
|
|
11
|
+
import TenantsApi from "./tenant";
|
|
11
12
|
import { DEFAULT_UAT_URL, DEFAULT_URL } from "./constants";
|
|
12
13
|
|
|
13
14
|
const package_json = require("../package.json");
|
|
@@ -33,6 +34,8 @@ class Suprsend {
|
|
|
33
34
|
this._user = new SubscriberFactory(this);
|
|
34
35
|
|
|
35
36
|
this.brands = new BrandsApi(this);
|
|
37
|
+
this.tenants = new TenantsApi(this);
|
|
38
|
+
|
|
36
39
|
this.subscriber_lists = new SubscriberListsApi(this);
|
|
37
40
|
|
|
38
41
|
this._validate();
|
|
@@ -11,6 +11,11 @@
|
|
|
11
11
|
"maxLength": 255,
|
|
12
12
|
"description": "unique id provided by client for request"
|
|
13
13
|
},
|
|
14
|
+
"tenant_id": {
|
|
15
|
+
"type": ["string", "null"],
|
|
16
|
+
"maxLength": 64,
|
|
17
|
+
"description": "tenant id for workflow to be run in context of a tenant"
|
|
18
|
+
},
|
|
14
19
|
"brand_id": {
|
|
15
20
|
"type": ["string", "null"],
|
|
16
21
|
"maxLength": 64,
|
|
@@ -11,6 +11,11 @@
|
|
|
11
11
|
"maxLength": 255,
|
|
12
12
|
"description": "unique id provided by client for request"
|
|
13
13
|
},
|
|
14
|
+
"tenant_id": {
|
|
15
|
+
"type": ["string", "null"],
|
|
16
|
+
"maxLength": 64,
|
|
17
|
+
"description": "tenant id for workflow to be run in context of a tenant"
|
|
18
|
+
},
|
|
14
19
|
"brand_id": {
|
|
15
20
|
"type": ["string", "null"],
|
|
16
21
|
"maxLength": 64,
|
|
@@ -44,7 +49,8 @@
|
|
|
44
49
|
"whatsapp",
|
|
45
50
|
"slack",
|
|
46
51
|
"inbox",
|
|
47
|
-
"messenger"
|
|
52
|
+
"messenger",
|
|
53
|
+
"ms_teams"
|
|
48
54
|
]
|
|
49
55
|
},
|
|
50
56
|
"minItems": 0,
|
|
@@ -11,6 +11,11 @@
|
|
|
11
11
|
"maxLength": 255,
|
|
12
12
|
"description": "unique id provided by client for request"
|
|
13
13
|
},
|
|
14
|
+
"tenant_id": {
|
|
15
|
+
"type": ["string", "null"],
|
|
16
|
+
"maxLength": 64,
|
|
17
|
+
"description": "tenant id for workflow to be run in context of a tenant"
|
|
18
|
+
},
|
|
14
19
|
"brand_id": {
|
|
15
20
|
"type": ["string", "null"],
|
|
16
21
|
"maxLength": 64,
|
|
@@ -124,6 +129,40 @@
|
|
|
124
129
|
},
|
|
125
130
|
"additionalProperties": false
|
|
126
131
|
},
|
|
132
|
+
"ms_teams_setting": {
|
|
133
|
+
"type": "object",
|
|
134
|
+
"properties": {
|
|
135
|
+
"tenant_id": {
|
|
136
|
+
"type": "string",
|
|
137
|
+
"description": "ms teams tenant id"
|
|
138
|
+
},
|
|
139
|
+
"service_url": {
|
|
140
|
+
"type": "string",
|
|
141
|
+
"format": "uri",
|
|
142
|
+
"pattern": "^https://smba.trafficmanager.net/",
|
|
143
|
+
"description": "service webhook url. e.g https://smba.trafficmanager.net/XXXXXXXXXX"
|
|
144
|
+
},
|
|
145
|
+
"conversation_id": {
|
|
146
|
+
"type": "string",
|
|
147
|
+
"description": "ms team conversation id"
|
|
148
|
+
},
|
|
149
|
+
"user_id": {
|
|
150
|
+
"type": "string",
|
|
151
|
+
"description": "ms team user id"
|
|
152
|
+
},
|
|
153
|
+
"incoming_webhook": {
|
|
154
|
+
"type": "object",
|
|
155
|
+
"properties": {
|
|
156
|
+
"url": {
|
|
157
|
+
"type": "string",
|
|
158
|
+
"format": "uri",
|
|
159
|
+
"description": "incoming webhook url. e.g https://XXXXX.webhook.office.com/webhookb2/XXXXXXXXXX@XXXXXXXXXX/IncomingWebhook/XXXXXXXXXX/XXXXXXXXXX"
|
|
160
|
+
}
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
},
|
|
164
|
+
"additionalProperties": false
|
|
165
|
+
},
|
|
127
166
|
"androidpush_settings": {
|
|
128
167
|
"type": "object",
|
|
129
168
|
"properties": {
|
|
@@ -184,7 +223,8 @@
|
|
|
184
223
|
"whatsapp",
|
|
185
224
|
"slack",
|
|
186
225
|
"inbox",
|
|
187
|
-
"messenger"
|
|
226
|
+
"messenger",
|
|
227
|
+
"ms_teams"
|
|
188
228
|
]
|
|
189
229
|
},
|
|
190
230
|
"minItems": 0,
|
|
@@ -290,6 +330,18 @@
|
|
|
290
330
|
}
|
|
291
331
|
]
|
|
292
332
|
},
|
|
333
|
+
"$ms_teams": {
|
|
334
|
+
"oneOf": [
|
|
335
|
+
{ "$ref": "#/definitions/ms_teams_setting" },
|
|
336
|
+
{
|
|
337
|
+
"type": "array",
|
|
338
|
+
"uniqueItems": false,
|
|
339
|
+
"maxItems": 10,
|
|
340
|
+
"minItems": 1,
|
|
341
|
+
"items": { "$ref": "#/definitions/ms_teams_setting" }
|
|
342
|
+
}
|
|
343
|
+
]
|
|
344
|
+
},
|
|
293
345
|
"$inbox": {
|
|
294
346
|
"oneOf": [
|
|
295
347
|
{ "$ref": "#/definitions/non_empty_string" },
|
|
@@ -349,7 +401,8 @@
|
|
|
349
401
|
"whatsapp",
|
|
350
402
|
"slack",
|
|
351
403
|
"inbox",
|
|
352
|
-
"messenger"
|
|
404
|
+
"messenger",
|
|
405
|
+
"ms_teams"
|
|
353
406
|
]
|
|
354
407
|
},
|
|
355
408
|
"minItems": 0,
|
package/src/subscriber.js
CHANGED
|
@@ -208,6 +208,78 @@ export class Subscriber {
|
|
|
208
208
|
}
|
|
209
209
|
}
|
|
210
210
|
|
|
211
|
+
set(key, value) {
|
|
212
|
+
const caller = "set";
|
|
213
|
+
if (!is_string(key) && !is_object(key)) {
|
|
214
|
+
this.__errors.push(`[${caller}] arg1 must be either string or a dict`);
|
|
215
|
+
return;
|
|
216
|
+
}
|
|
217
|
+
if (is_string(key)) {
|
|
218
|
+
if (value === null || value === undefined) {
|
|
219
|
+
this.__errors.push(
|
|
220
|
+
`[${caller}] if arg1 is a string, then arg2 must be passed`
|
|
221
|
+
);
|
|
222
|
+
return;
|
|
223
|
+
} else {
|
|
224
|
+
this._helper._set_kv(key, value, {}, caller);
|
|
225
|
+
this._collect_event();
|
|
226
|
+
}
|
|
227
|
+
} else {
|
|
228
|
+
for (let item in key) {
|
|
229
|
+
this._helper._set_kv(item, key[item], key, caller);
|
|
230
|
+
}
|
|
231
|
+
this._collect_event();
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
|
|
235
|
+
set_once(key, value) {
|
|
236
|
+
const caller = "set_once";
|
|
237
|
+
if (!is_string(key) && !is_object(key)) {
|
|
238
|
+
this.__errors.push(`[${caller}] arg1 must be either string or a dict`);
|
|
239
|
+
return;
|
|
240
|
+
}
|
|
241
|
+
if (is_string(key)) {
|
|
242
|
+
if (value === null || value === undefined) {
|
|
243
|
+
this.__errors.push(
|
|
244
|
+
`[${caller}] if arg1 is a string, then arg2 must be passed`
|
|
245
|
+
);
|
|
246
|
+
return;
|
|
247
|
+
} else {
|
|
248
|
+
this._helper._set_once_kv(key, value, {}, caller);
|
|
249
|
+
this._collect_event();
|
|
250
|
+
}
|
|
251
|
+
} else {
|
|
252
|
+
for (let item in key) {
|
|
253
|
+
this._helper._set_once_kv(item, key[item], key, caller);
|
|
254
|
+
}
|
|
255
|
+
this._collect_event();
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
increment(key, value) {
|
|
260
|
+
const caller = "increment";
|
|
261
|
+
if (!is_string(key) && !is_object(key)) {
|
|
262
|
+
this.__errors.push(`[${caller}] arg1 must be either string or a dict`);
|
|
263
|
+
return;
|
|
264
|
+
}
|
|
265
|
+
if (is_string(key)) {
|
|
266
|
+
if (value === null || value === undefined) {
|
|
267
|
+
this.__errors.push(
|
|
268
|
+
`[${caller}] if arg1 is a string, then arg2 must be passed`
|
|
269
|
+
);
|
|
270
|
+
return;
|
|
271
|
+
} else {
|
|
272
|
+
this._helper._increment_kv(key, value, {}, caller);
|
|
273
|
+
this._collect_event();
|
|
274
|
+
}
|
|
275
|
+
} else {
|
|
276
|
+
for (let item in key) {
|
|
277
|
+
this._helper._increment_kv(item, key[item], key, caller);
|
|
278
|
+
}
|
|
279
|
+
this._collect_event();
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
|
|
211
283
|
remove(key, value) {
|
|
212
284
|
const caller = "remove";
|
|
213
285
|
if (!is_string(key) && !is_object(key)) {
|
|
@@ -339,6 +411,18 @@ export class Subscriber {
|
|
|
339
411
|
this._collect_event();
|
|
340
412
|
}
|
|
341
413
|
|
|
414
|
+
add_ms_teams(value) {
|
|
415
|
+
const caller = "add_ms_teams";
|
|
416
|
+
this._helper._add_ms_teams(value, caller);
|
|
417
|
+
this._collect_event();
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
remove_ms_teams(value) {
|
|
421
|
+
const caller = "remove_ms_teams";
|
|
422
|
+
this._helper._remove_ms_teams(value, caller);
|
|
423
|
+
this._collect_event();
|
|
424
|
+
}
|
|
425
|
+
|
|
342
426
|
add_slack_email(value) {
|
|
343
427
|
console.warn(
|
|
344
428
|
"add_slack_email() method has been deprecated. use add_slack() instead"
|
package/src/subscriber_helper.js
CHANGED
|
@@ -16,6 +16,7 @@ const IDENT_KEY_IOSPUSH = "$iospush";
|
|
|
16
16
|
const IDENT_KEY_WHATSAPP = "$whatsapp";
|
|
17
17
|
const IDENT_KEY_WEBPUSH = "$webpush";
|
|
18
18
|
const IDENT_KEY_SLACK = "$slack";
|
|
19
|
+
const IDENT_KEY_MS_TEAMS = "$ms_teams";
|
|
19
20
|
|
|
20
21
|
const IDENT_KEYS_ALL = [
|
|
21
22
|
IDENT_KEY_EMAIL,
|
|
@@ -25,6 +26,7 @@ const IDENT_KEYS_ALL = [
|
|
|
25
26
|
IDENT_KEY_WHATSAPP,
|
|
26
27
|
IDENT_KEY_WEBPUSH,
|
|
27
28
|
IDENT_KEY_SLACK,
|
|
29
|
+
IDENT_KEY_MS_TEAMS,
|
|
28
30
|
];
|
|
29
31
|
|
|
30
32
|
const KEY_PUSHVENDOR = "$pushvendor";
|
|
@@ -81,6 +83,10 @@ export default class _SubscriberInternalHelper {
|
|
|
81
83
|
|
|
82
84
|
this.__dict_set = {};
|
|
83
85
|
|
|
86
|
+
this.__dict_set_once = {};
|
|
87
|
+
|
|
88
|
+
this.__dict_increment = {};
|
|
89
|
+
|
|
84
90
|
this.__dict_append = {};
|
|
85
91
|
|
|
86
92
|
this.__dict_remove = {};
|
|
@@ -93,6 +99,8 @@ export default class _SubscriberInternalHelper {
|
|
|
93
99
|
|
|
94
100
|
reset() {
|
|
95
101
|
this.__dict_set = {};
|
|
102
|
+
this.__dict_set_once = {};
|
|
103
|
+
this.__dict_increment = {};
|
|
96
104
|
this.__dict_append = {};
|
|
97
105
|
this.__dict_remove = {};
|
|
98
106
|
this.__list_unset = [];
|
|
@@ -116,6 +124,12 @@ export default class _SubscriberInternalHelper {
|
|
|
116
124
|
if (!is_empty(this.__dict_set)) {
|
|
117
125
|
event["$set"] = this.__dict_set;
|
|
118
126
|
}
|
|
127
|
+
if (!is_empty(this.__dict_set_once)) {
|
|
128
|
+
event["$set_once"] = this.__dict_set_once;
|
|
129
|
+
}
|
|
130
|
+
if (!is_empty(this.__dict_increment)) {
|
|
131
|
+
event["$add"] = this.__dict_increment;
|
|
132
|
+
}
|
|
119
133
|
if (!is_empty(this.__dict_append)) {
|
|
120
134
|
event["$append"] = this.__dict_append;
|
|
121
135
|
}
|
|
@@ -174,6 +188,42 @@ export default class _SubscriberInternalHelper {
|
|
|
174
188
|
}
|
|
175
189
|
}
|
|
176
190
|
|
|
191
|
+
_set_kv(key, value, args = {}, caller = "set") {
|
|
192
|
+
const [validated_key, is_k_valid] = this.__validate_key_basic(key, caller);
|
|
193
|
+
if (!is_k_valid) {
|
|
194
|
+
return;
|
|
195
|
+
} else {
|
|
196
|
+
const is_k_valid = this.__validate_key_prefix(validated_key, caller);
|
|
197
|
+
if (is_k_valid) {
|
|
198
|
+
this.__dict_set[validated_key] = value;
|
|
199
|
+
}
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
_set_once_kv(key, value, args = {}, caller = "set_once") {
|
|
204
|
+
const [validated_key, is_k_valid] = this.__validate_key_basic(key, caller);
|
|
205
|
+
if (!is_k_valid) {
|
|
206
|
+
return;
|
|
207
|
+
} else {
|
|
208
|
+
const is_k_valid = this.__validate_key_prefix(validated_key, caller);
|
|
209
|
+
if (is_k_valid) {
|
|
210
|
+
this.__dict_set_once[validated_key] = value;
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
|
|
215
|
+
_increment_kv(key, value, args = {}, caller = "increment") {
|
|
216
|
+
const [validated_key, is_k_valid] = this.__validate_key_basic(key, caller);
|
|
217
|
+
if (!is_k_valid) {
|
|
218
|
+
return;
|
|
219
|
+
} else {
|
|
220
|
+
const is_k_valid = this.__validate_key_prefix(validated_key, caller);
|
|
221
|
+
if (is_k_valid) {
|
|
222
|
+
this.__dict_increment[validated_key] = value;
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
|
|
177
227
|
_remove_kv(key, value, args = {}, caller = "remove") {
|
|
178
228
|
const [validated_key, is_k_valid] = this.__validate_key_basic(key, caller);
|
|
179
229
|
if (!is_k_valid) {
|
|
@@ -229,6 +279,9 @@ export default class _SubscriberInternalHelper {
|
|
|
229
279
|
case IDENT_KEY_SLACK:
|
|
230
280
|
this._add_slack(value, caller);
|
|
231
281
|
break;
|
|
282
|
+
case IDENT_KEY_MS_TEAMS:
|
|
283
|
+
this._add_ms_teams(value, caller);
|
|
284
|
+
break;
|
|
232
285
|
default:
|
|
233
286
|
break;
|
|
234
287
|
}
|
|
@@ -258,6 +311,9 @@ export default class _SubscriberInternalHelper {
|
|
|
258
311
|
case IDENT_KEY_SLACK:
|
|
259
312
|
this._remove_slack(val, caller);
|
|
260
313
|
break;
|
|
314
|
+
case IDENT_KEY_MS_TEAMS:
|
|
315
|
+
this._remove_ms_teams(val, caller);
|
|
316
|
+
break;
|
|
261
317
|
default:
|
|
262
318
|
break;
|
|
263
319
|
}
|
|
@@ -540,4 +596,36 @@ export default class _SubscriberInternalHelper {
|
|
|
540
596
|
}
|
|
541
597
|
this.__dict_remove[IDENT_KEY_SLACK] = validated_value;
|
|
542
598
|
}
|
|
599
|
+
|
|
600
|
+
__check_ms_teams_dict(value, caller) {
|
|
601
|
+
const msg = "value must be a valid dict/json with proper keys";
|
|
602
|
+
if (!(value && value instanceof Object)) {
|
|
603
|
+
this.__errors.push(`[${caller}] ${msg}`);
|
|
604
|
+
return [value, false];
|
|
605
|
+
} else {
|
|
606
|
+
return [value, true];
|
|
607
|
+
}
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
_add_ms_teams(value, caller) {
|
|
611
|
+
const [validated_value, is_valid] = this.__check_ms_teams_dict(
|
|
612
|
+
value,
|
|
613
|
+
caller
|
|
614
|
+
);
|
|
615
|
+
if (!is_valid) {
|
|
616
|
+
return;
|
|
617
|
+
}
|
|
618
|
+
this.__dict_append[IDENT_KEY_MS_TEAMS] = validated_value;
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
_remove_ms_teams(value, caller) {
|
|
622
|
+
const [validated_value, is_valid] = this.__check_ms_teams_dict(
|
|
623
|
+
value,
|
|
624
|
+
caller
|
|
625
|
+
);
|
|
626
|
+
if (!is_valid) {
|
|
627
|
+
return;
|
|
628
|
+
}
|
|
629
|
+
this.__dict_remove[IDENT_KEY_MS_TEAMS] = validated_value;
|
|
630
|
+
}
|
|
543
631
|
}
|