@suprsend/node-sdk 0.1.1 → 1.1.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/attachment.js +59 -0
- package/dist/bulk_response.js +60 -0
- package/dist/constants.js +46 -0
- package/dist/event.js +159 -84
- package/dist/events_bulk.js +424 -0
- package/dist/index.js +95 -39
- package/dist/request_json/event.json +5 -0
- package/dist/request_json/workflow.json +116 -9
- package/dist/{identity.js → subscriber.js} +193 -48
- package/dist/{identity_helper.js → subscriber_helper.js} +191 -59
- package/dist/subscribers_bulk.js +447 -0
- package/dist/utils.js +210 -1
- package/dist/workflow.js +130 -59
- package/dist/workflows_bulk.js +424 -0
- package/package.json +2 -1
- package/src/attachment.js +44 -0
- package/src/bulk_response.js +35 -0
- package/src/constants.js +32 -0
- package/src/event.js +124 -75
- package/src/events_bulk.js +236 -0
- package/src/index.js +69 -34
- package/src/request_json/event.json +5 -0
- package/src/request_json/workflow.json +116 -9
- package/src/{identity.js → subscriber.js} +118 -34
- package/src/{identity_helper.js → subscriber_helper.js} +196 -53
- package/src/subscribers_bulk.js +237 -0
- package/src/utils.js +136 -0
- package/src/workflow.js +100 -45
- package/src/workflows_bulk.js +236 -0
- package/dist/config.js +0 -13
- package/src/config.js +0 -6
|
@@ -0,0 +1,424 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
|
|
5
|
+
Object.defineProperty(exports, "__esModule", {
|
|
6
|
+
value: true
|
|
7
|
+
});
|
|
8
|
+
exports.BulkEventsFactory = void 0;
|
|
9
|
+
|
|
10
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
11
|
+
|
|
12
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
13
|
+
|
|
14
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
15
|
+
|
|
16
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
17
|
+
|
|
18
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
19
|
+
|
|
20
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
21
|
+
|
|
22
|
+
var _constants = require("./constants");
|
|
23
|
+
|
|
24
|
+
var _signature = _interopRequireDefault(require("./signature"));
|
|
25
|
+
|
|
26
|
+
var _bulk_response = _interopRequireDefault(require("./bulk_response"));
|
|
27
|
+
|
|
28
|
+
var _event = _interopRequireDefault(require("./event"));
|
|
29
|
+
|
|
30
|
+
var _utils = require("./utils");
|
|
31
|
+
|
|
32
|
+
var _lodash = require("lodash");
|
|
33
|
+
|
|
34
|
+
var _axios = _interopRequireDefault(require("axios"));
|
|
35
|
+
|
|
36
|
+
function _createForOfIteratorHelper(o, allowArrayLike) { var it = typeof Symbol !== "undefined" && o[Symbol.iterator] || o["@@iterator"]; if (!it) { if (Array.isArray(o) || (it = _unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === "number") { if (it) o = it; var i = 0; var F = function F() {}; return { s: F, n: function n() { if (i >= o.length) return { done: true }; return { done: false, value: o[i++] }; }, e: function e(_e) { throw _e; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var normalCompletion = true, didErr = false, err; return { s: function s() { it = it.call(o); }, n: function n() { var step = it.next(); normalCompletion = step.done; return step; }, e: function e(_e2) { didErr = true; err = _e2; }, f: function f() { try { if (!normalCompletion && it["return"] != null) it["return"](); } finally { if (didErr) throw err; } } }; }
|
|
37
|
+
|
|
38
|
+
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
39
|
+
|
|
40
|
+
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
|
|
41
|
+
|
|
42
|
+
function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
|
|
43
|
+
|
|
44
|
+
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { (0, _defineProperty2["default"])(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
45
|
+
|
|
46
|
+
var BulkEventsFactory = /*#__PURE__*/function () {
|
|
47
|
+
function BulkEventsFactory(config) {
|
|
48
|
+
(0, _classCallCheck2["default"])(this, BulkEventsFactory);
|
|
49
|
+
this.config = config;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
(0, _createClass2["default"])(BulkEventsFactory, [{
|
|
53
|
+
key: "new_instance",
|
|
54
|
+
value: function new_instance() {
|
|
55
|
+
return new BulkEvents(this.config);
|
|
56
|
+
}
|
|
57
|
+
}]);
|
|
58
|
+
return BulkEventsFactory;
|
|
59
|
+
}();
|
|
60
|
+
|
|
61
|
+
exports.BulkEventsFactory = BulkEventsFactory;
|
|
62
|
+
|
|
63
|
+
var _BulkEventsChunk = /*#__PURE__*/function () {
|
|
64
|
+
function _BulkEventsChunk(config) {
|
|
65
|
+
(0, _classCallCheck2["default"])(this, _BulkEventsChunk);
|
|
66
|
+
this.config = config;
|
|
67
|
+
this.__chunk = [];
|
|
68
|
+
this.__url = this.__get_url();
|
|
69
|
+
this.__headers = this.__common_headers();
|
|
70
|
+
this.__running_size = 0;
|
|
71
|
+
this.__running_length = 0;
|
|
72
|
+
this.response;
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
(0, _createClass2["default"])(_BulkEventsChunk, [{
|
|
76
|
+
key: "__get_url",
|
|
77
|
+
value: function __get_url() {
|
|
78
|
+
var url_template = "event/";
|
|
79
|
+
|
|
80
|
+
if (this.config.include_signature_param) {
|
|
81
|
+
if (this.config.auth_enabled) {
|
|
82
|
+
url_template = url_template + "?verify=true";
|
|
83
|
+
} else {
|
|
84
|
+
url_template = url_template + "?verify=false";
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
|
|
88
|
+
var url_formatted = "".concat(this.config.base_url).concat(url_template);
|
|
89
|
+
return url_formatted;
|
|
90
|
+
}
|
|
91
|
+
}, {
|
|
92
|
+
key: "__common_headers",
|
|
93
|
+
value: function __common_headers() {
|
|
94
|
+
return {
|
|
95
|
+
"Content-Type": "application/json; charset=utf-8",
|
|
96
|
+
"User-Agent": this.config.user_agent
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
}, {
|
|
100
|
+
key: "__dynamic_headers",
|
|
101
|
+
value: function __dynamic_headers() {
|
|
102
|
+
return {
|
|
103
|
+
Date: new Date().toUTCString()
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}, {
|
|
107
|
+
key: "__add_event_to_chunk",
|
|
108
|
+
value: function __add_event_to_chunk(event, event_size) {
|
|
109
|
+
// First add size, then body to reduce effects of race condition
|
|
110
|
+
this.__running_size += event_size;
|
|
111
|
+
|
|
112
|
+
this.__chunk.push(event);
|
|
113
|
+
|
|
114
|
+
this.__running_length += 1;
|
|
115
|
+
}
|
|
116
|
+
}, {
|
|
117
|
+
key: "__check_limit_reached",
|
|
118
|
+
value: function __check_limit_reached() {
|
|
119
|
+
if (this.__running_length >= _constants.MAX_EVENTS_IN_BULK_API || this.__running_size >= _constants.BODY_MAX_APPARENT_SIZE_IN_BYTES) {
|
|
120
|
+
return true;
|
|
121
|
+
} else {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}, {
|
|
126
|
+
key: "try_to_add_into_chunk",
|
|
127
|
+
value: function try_to_add_into_chunk(event, event_size) {
|
|
128
|
+
if (!event) {
|
|
129
|
+
return true;
|
|
130
|
+
}
|
|
131
|
+
|
|
132
|
+
if (this.__check_limit_reached()) {
|
|
133
|
+
return false;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
if (event_size > _constants.SINGLE_EVENT_MAX_APPARENT_SIZE_IN_BYTES) {
|
|
137
|
+
throw new _utils.SuprsendError("Event properties too big - ".concat(event_size, " Bytes, must not cross ").concat(_constants.SINGLE_EVENT_MAX_APPARENT_SIZE_IN_BYTES_READABLE));
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
if (this.__running_size + event_size > _constants.BODY_MAX_APPARENT_SIZE_IN_BYTES) {
|
|
141
|
+
return false;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
if (!_constants.ALLOW_ATTACHMENTS_IN_BULK_API) {
|
|
145
|
+
delete event.properties["$attachments"];
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
this.__add_event_to_chunk(event, event_size);
|
|
149
|
+
|
|
150
|
+
return true;
|
|
151
|
+
}
|
|
152
|
+
}, {
|
|
153
|
+
key: "trigger",
|
|
154
|
+
value: function () {
|
|
155
|
+
var _trigger = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
156
|
+
var headers, content_text, signature, response, ok_response, error_status;
|
|
157
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
158
|
+
while (1) {
|
|
159
|
+
switch (_context.prev = _context.next) {
|
|
160
|
+
case 0:
|
|
161
|
+
headers = _objectSpread(_objectSpread({}, this.__headers), this.__dynamic_headers());
|
|
162
|
+
content_text = JSON.stringify(this.__chunk); // Based on whether signature is required or not, add Authorization header
|
|
163
|
+
|
|
164
|
+
if (this.config.auth_enabled) {
|
|
165
|
+
signature = (0, _signature["default"])(this.__url, "POST", content_text, headers, this.config.workspace_secret);
|
|
166
|
+
headers["Authorization"] = "".concat(this.config.workspace_key, ":").concat(signature);
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
_context.prev = 3;
|
|
170
|
+
_context.next = 6;
|
|
171
|
+
return _axios["default"].post(this.__url, content_text, {
|
|
172
|
+
headers: headers
|
|
173
|
+
});
|
|
174
|
+
|
|
175
|
+
case 6:
|
|
176
|
+
response = _context.sent;
|
|
177
|
+
ok_response = Math.floor(response.status / 100) == 2;
|
|
178
|
+
|
|
179
|
+
if (ok_response) {
|
|
180
|
+
this.response = {
|
|
181
|
+
status: "success",
|
|
182
|
+
status_code: response.status,
|
|
183
|
+
total: this.__chunk.length,
|
|
184
|
+
success: this.__chunk.length,
|
|
185
|
+
failure: 0,
|
|
186
|
+
failed_records: []
|
|
187
|
+
};
|
|
188
|
+
} else {
|
|
189
|
+
this.response = {
|
|
190
|
+
status: "fail",
|
|
191
|
+
status_code: response.status,
|
|
192
|
+
total: this.__chunk.length,
|
|
193
|
+
success: 0,
|
|
194
|
+
failure: this.__chunk.length,
|
|
195
|
+
failed_records: this.__chunk.map(function (item) {
|
|
196
|
+
return {
|
|
197
|
+
record: item,
|
|
198
|
+
error: response.statusText,
|
|
199
|
+
code: response.status
|
|
200
|
+
};
|
|
201
|
+
})
|
|
202
|
+
};
|
|
203
|
+
}
|
|
204
|
+
|
|
205
|
+
_context.next = 15;
|
|
206
|
+
break;
|
|
207
|
+
|
|
208
|
+
case 11:
|
|
209
|
+
_context.prev = 11;
|
|
210
|
+
_context.t0 = _context["catch"](3);
|
|
211
|
+
error_status = _context.t0.status || 500;
|
|
212
|
+
return _context.abrupt("return", {
|
|
213
|
+
status: "fail",
|
|
214
|
+
status_code: error_status,
|
|
215
|
+
message: _context.t0.message,
|
|
216
|
+
total: this.__chunk.length,
|
|
217
|
+
success: 0,
|
|
218
|
+
failure: this.__chunk.length,
|
|
219
|
+
failed_records: this.__chunk.map(function (item) {
|
|
220
|
+
return {
|
|
221
|
+
record: item,
|
|
222
|
+
error: _context.t0.message,
|
|
223
|
+
code: error_status
|
|
224
|
+
};
|
|
225
|
+
})
|
|
226
|
+
});
|
|
227
|
+
|
|
228
|
+
case 15:
|
|
229
|
+
case "end":
|
|
230
|
+
return _context.stop();
|
|
231
|
+
}
|
|
232
|
+
}
|
|
233
|
+
}, _callee, this, [[3, 11]]);
|
|
234
|
+
}));
|
|
235
|
+
|
|
236
|
+
function trigger() {
|
|
237
|
+
return _trigger.apply(this, arguments);
|
|
238
|
+
}
|
|
239
|
+
|
|
240
|
+
return trigger;
|
|
241
|
+
}()
|
|
242
|
+
}]);
|
|
243
|
+
return _BulkEventsChunk;
|
|
244
|
+
}();
|
|
245
|
+
|
|
246
|
+
var BulkEvents = /*#__PURE__*/function () {
|
|
247
|
+
function BulkEvents(config) {
|
|
248
|
+
(0, _classCallCheck2["default"])(this, BulkEvents);
|
|
249
|
+
this.config = config;
|
|
250
|
+
this.__events = [];
|
|
251
|
+
this.__pending_records = [];
|
|
252
|
+
this.chunks = [];
|
|
253
|
+
this.response = new _bulk_response["default"]();
|
|
254
|
+
}
|
|
255
|
+
|
|
256
|
+
(0, _createClass2["default"])(BulkEvents, [{
|
|
257
|
+
key: "__validate_events",
|
|
258
|
+
value: function __validate_events() {
|
|
259
|
+
if (!this.__events) {
|
|
260
|
+
throw new _utils.SuprsendError("events list is empty in bulk request");
|
|
261
|
+
}
|
|
262
|
+
|
|
263
|
+
var _iterator = _createForOfIteratorHelper(this.__events),
|
|
264
|
+
_step;
|
|
265
|
+
|
|
266
|
+
try {
|
|
267
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
268
|
+
var ev = _step.value;
|
|
269
|
+
var is_part_of_bulk = true;
|
|
270
|
+
|
|
271
|
+
var _ev$get_final_json = ev.get_final_json(this.config, is_part_of_bulk),
|
|
272
|
+
_ev$get_final_json2 = (0, _slicedToArray2["default"])(_ev$get_final_json, 2),
|
|
273
|
+
ev_json = _ev$get_final_json2[0],
|
|
274
|
+
body_size = _ev$get_final_json2[1];
|
|
275
|
+
|
|
276
|
+
this.__pending_records.push([ev_json, body_size]);
|
|
277
|
+
}
|
|
278
|
+
} catch (err) {
|
|
279
|
+
_iterator.e(err);
|
|
280
|
+
} finally {
|
|
281
|
+
_iterator.f();
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
}, {
|
|
285
|
+
key: "__chunkify",
|
|
286
|
+
value: function __chunkify() {
|
|
287
|
+
var start_idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
288
|
+
var curr_chunk = new _BulkEventsChunk(this.config);
|
|
289
|
+
this.chunks.push(curr_chunk);
|
|
290
|
+
|
|
291
|
+
var entries = this.__pending_records.slice(start_idx).entries();
|
|
292
|
+
|
|
293
|
+
var _iterator2 = _createForOfIteratorHelper(entries),
|
|
294
|
+
_step2;
|
|
295
|
+
|
|
296
|
+
try {
|
|
297
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
298
|
+
var _step2$value = (0, _slicedToArray2["default"])(_step2.value, 2),
|
|
299
|
+
rel_idx = _step2$value[0],
|
|
300
|
+
rec = _step2$value[1];
|
|
301
|
+
|
|
302
|
+
var is_added = curr_chunk.try_to_add_into_chunk(rec[0], rec[1]);
|
|
303
|
+
|
|
304
|
+
if (!is_added) {
|
|
305
|
+
// create chunks from remaining records
|
|
306
|
+
this.__chunkify(start_idx + rel_idx); // Don't forget to break. As current loop must not continue further
|
|
307
|
+
|
|
308
|
+
|
|
309
|
+
break;
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
} catch (err) {
|
|
313
|
+
_iterator2.e(err);
|
|
314
|
+
} finally {
|
|
315
|
+
_iterator2.f();
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
}, {
|
|
319
|
+
key: "append",
|
|
320
|
+
value: function append() {
|
|
321
|
+
for (var _len = arguments.length, events = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
322
|
+
events[_key] = arguments[_key];
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
if (!events) {
|
|
326
|
+
throw new _utils.SuprsendError("events list empty. must pass one or more events");
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
for (var _i = 0, _events = events; _i < _events.length; _i++) {
|
|
330
|
+
var ev = _events[_i];
|
|
331
|
+
|
|
332
|
+
if (!ev) {
|
|
333
|
+
throw new _utils.SuprsendError("null/empty element found in bulk instance");
|
|
334
|
+
}
|
|
335
|
+
|
|
336
|
+
if (!(ev instanceof _event["default"])) {
|
|
337
|
+
throw new _utils.SuprsendError("element must be an instance of suprsend.Event");
|
|
338
|
+
}
|
|
339
|
+
|
|
340
|
+
var ev_copy = (0, _lodash.cloneDeep)(ev);
|
|
341
|
+
|
|
342
|
+
this.__events.push(ev_copy);
|
|
343
|
+
}
|
|
344
|
+
}
|
|
345
|
+
}, {
|
|
346
|
+
key: "trigger",
|
|
347
|
+
value: function () {
|
|
348
|
+
var _trigger2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
349
|
+
var _iterator3, _step3, _step3$value, c_idx, ch;
|
|
350
|
+
|
|
351
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
352
|
+
while (1) {
|
|
353
|
+
switch (_context2.prev = _context2.next) {
|
|
354
|
+
case 0:
|
|
355
|
+
this.__validate_events();
|
|
356
|
+
|
|
357
|
+
this.__chunkify();
|
|
358
|
+
|
|
359
|
+
_iterator3 = _createForOfIteratorHelper(this.chunks.entries());
|
|
360
|
+
_context2.prev = 3;
|
|
361
|
+
|
|
362
|
+
_iterator3.s();
|
|
363
|
+
|
|
364
|
+
case 5:
|
|
365
|
+
if ((_step3 = _iterator3.n()).done) {
|
|
366
|
+
_context2.next = 13;
|
|
367
|
+
break;
|
|
368
|
+
}
|
|
369
|
+
|
|
370
|
+
_step3$value = (0, _slicedToArray2["default"])(_step3.value, 2), c_idx = _step3$value[0], ch = _step3$value[1];
|
|
371
|
+
|
|
372
|
+
if (this.config.req_log_level > 0) {
|
|
373
|
+
console.log("DEBUG: triggering api call for chunk: ".concat(c_idx));
|
|
374
|
+
} // do api call
|
|
375
|
+
|
|
376
|
+
|
|
377
|
+
_context2.next = 10;
|
|
378
|
+
return ch.trigger();
|
|
379
|
+
|
|
380
|
+
case 10:
|
|
381
|
+
// merge response
|
|
382
|
+
this.response.merge_chunk_response(ch.response);
|
|
383
|
+
|
|
384
|
+
case 11:
|
|
385
|
+
_context2.next = 5;
|
|
386
|
+
break;
|
|
387
|
+
|
|
388
|
+
case 13:
|
|
389
|
+
_context2.next = 18;
|
|
390
|
+
break;
|
|
391
|
+
|
|
392
|
+
case 15:
|
|
393
|
+
_context2.prev = 15;
|
|
394
|
+
_context2.t0 = _context2["catch"](3);
|
|
395
|
+
|
|
396
|
+
_iterator3.e(_context2.t0);
|
|
397
|
+
|
|
398
|
+
case 18:
|
|
399
|
+
_context2.prev = 18;
|
|
400
|
+
|
|
401
|
+
_iterator3.f();
|
|
402
|
+
|
|
403
|
+
return _context2.finish(18);
|
|
404
|
+
|
|
405
|
+
case 21:
|
|
406
|
+
return _context2.abrupt("return", this.response);
|
|
407
|
+
|
|
408
|
+
case 22:
|
|
409
|
+
case "end":
|
|
410
|
+
return _context2.stop();
|
|
411
|
+
}
|
|
412
|
+
}
|
|
413
|
+
}, _callee2, this, [[3, 15, 18, 21]]);
|
|
414
|
+
}));
|
|
415
|
+
|
|
416
|
+
function trigger() {
|
|
417
|
+
return _trigger2.apply(this, arguments);
|
|
418
|
+
}
|
|
419
|
+
|
|
420
|
+
return trigger;
|
|
421
|
+
}()
|
|
422
|
+
}]);
|
|
423
|
+
return BulkEvents;
|
|
424
|
+
}();
|
package/dist/index.js
CHANGED
|
@@ -2,57 +2,103 @@
|
|
|
2
2
|
|
|
3
3
|
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
4
|
|
|
5
|
+
var _typeof = require("@babel/runtime/helpers/typeof");
|
|
6
|
+
|
|
5
7
|
Object.defineProperty(exports, "__esModule", {
|
|
6
8
|
value: true
|
|
7
9
|
});
|
|
8
|
-
exports
|
|
10
|
+
Object.defineProperty(exports, "Event", {
|
|
11
|
+
enumerable: true,
|
|
12
|
+
get: function get() {
|
|
13
|
+
return _event["default"];
|
|
14
|
+
}
|
|
15
|
+
});
|
|
16
|
+
exports.Suprsend = void 0;
|
|
17
|
+
Object.defineProperty(exports, "Workflow", {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function get() {
|
|
20
|
+
return _workflow["default"];
|
|
21
|
+
}
|
|
22
|
+
});
|
|
9
23
|
|
|
10
24
|
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
25
|
|
|
12
26
|
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
27
|
|
|
14
|
-
var
|
|
28
|
+
var _utils = require("./utils");
|
|
29
|
+
|
|
30
|
+
var _attachment = _interopRequireDefault(require("./attachment"));
|
|
15
31
|
|
|
16
|
-
var _workflow =
|
|
32
|
+
var _workflow = _interopRequireWildcard(require("./workflow"));
|
|
17
33
|
|
|
18
|
-
var
|
|
34
|
+
var _workflows_bulk = require("./workflows_bulk");
|
|
19
35
|
|
|
20
|
-
var
|
|
36
|
+
var _event = _interopRequireWildcard(require("./event"));
|
|
21
37
|
|
|
22
|
-
var
|
|
38
|
+
var _events_bulk = require("./events_bulk");
|
|
23
39
|
|
|
24
|
-
var
|
|
40
|
+
var _subscriber = _interopRequireDefault(require("./subscriber"));
|
|
25
41
|
|
|
26
|
-
var
|
|
42
|
+
var _subscribers_bulk = _interopRequireDefault(require("./subscribers_bulk"));
|
|
43
|
+
|
|
44
|
+
var _constants = require("./constants");
|
|
45
|
+
|
|
46
|
+
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
|
|
47
|
+
|
|
48
|
+
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { "default": obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj["default"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
|
|
27
49
|
|
|
28
50
|
var package_json = require("../package.json");
|
|
29
51
|
|
|
30
52
|
var Suprsend = /*#__PURE__*/function () {
|
|
31
|
-
function Suprsend(
|
|
53
|
+
function Suprsend(workspace_key, workspace_secret) {
|
|
32
54
|
var config = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
33
55
|
(0, _classCallCheck2["default"])(this, Suprsend);
|
|
34
|
-
this.
|
|
35
|
-
this.
|
|
56
|
+
this.workspace_key = workspace_key;
|
|
57
|
+
this.workspace_secret = workspace_secret;
|
|
36
58
|
this.config = config;
|
|
37
59
|
this.base_url = this._get_url(config.base_url);
|
|
38
60
|
this.auth_enabled = config.auth_enabled !== false;
|
|
39
61
|
this.include_signature_param = config.include_signature_param !== false;
|
|
40
62
|
this.user_agent = "suprsend/".concat(package_json.version, ";node/").concat(process.version.slice(1));
|
|
41
|
-
this.
|
|
42
|
-
this._eventcollector = new _event
|
|
63
|
+
this._workflow_trigger = new _workflow._WorkflowTrigger(this);
|
|
64
|
+
this._eventcollector = new _event.EventCollector(this);
|
|
65
|
+
this._bulk_workflows = new _workflows_bulk.BulkWorkflowsFactory(this);
|
|
66
|
+
this._bulk_events = new _events_bulk.BulkEventsFactory(this);
|
|
67
|
+
this._bulk_users = new _subscribers_bulk["default"](this);
|
|
68
|
+
this._user = new _subscriber["default"](this);
|
|
43
69
|
|
|
44
70
|
this._validate();
|
|
45
71
|
}
|
|
46
72
|
|
|
47
73
|
(0, _createClass2["default"])(Suprsend, [{
|
|
74
|
+
key: "bulk_workflows",
|
|
75
|
+
get: function get() {
|
|
76
|
+
return this._bulk_workflows;
|
|
77
|
+
}
|
|
78
|
+
}, {
|
|
79
|
+
key: "bulk_events",
|
|
80
|
+
get: function get() {
|
|
81
|
+
return this._bulk_events;
|
|
82
|
+
}
|
|
83
|
+
}, {
|
|
84
|
+
key: "bulk_users",
|
|
85
|
+
get: function get() {
|
|
86
|
+
return this._bulk_users;
|
|
87
|
+
}
|
|
88
|
+
}, {
|
|
89
|
+
key: "user",
|
|
90
|
+
get: function get() {
|
|
91
|
+
return this._user;
|
|
92
|
+
}
|
|
93
|
+
}, {
|
|
48
94
|
key: "_validate",
|
|
49
95
|
value: function _validate() {
|
|
50
|
-
if (!this.
|
|
51
|
-
throw new _utils.
|
|
52
|
-
} else if (!this.
|
|
53
|
-
throw new _utils.
|
|
96
|
+
if (!this.workspace_key) {
|
|
97
|
+
throw new _utils.SuprsendConfigError("Missing workspace_key");
|
|
98
|
+
} else if (!this.workspace_secret) {
|
|
99
|
+
throw new _utils.SuprsendConfigError("Missing workspace_secret");
|
|
54
100
|
} else if (!this.base_url) {
|
|
55
|
-
throw new _utils.
|
|
101
|
+
throw new _utils.SuprsendConfigError("Missing base_url");
|
|
56
102
|
}
|
|
57
103
|
}
|
|
58
104
|
}, {
|
|
@@ -64,9 +110,9 @@ var Suprsend = /*#__PURE__*/function () {
|
|
|
64
110
|
|
|
65
111
|
if (!base_url) {
|
|
66
112
|
if (this.config.is_staging) {
|
|
67
|
-
base_url =
|
|
113
|
+
base_url = _constants.DEFAULT_UAT_URL;
|
|
68
114
|
} else {
|
|
69
|
-
base_url =
|
|
115
|
+
base_url = _constants.DEFAULT_URL;
|
|
70
116
|
}
|
|
71
117
|
}
|
|
72
118
|
|
|
@@ -81,6 +127,12 @@ var Suprsend = /*#__PURE__*/function () {
|
|
|
81
127
|
}, {
|
|
82
128
|
key: "add_attachment",
|
|
83
129
|
value: function add_attachment(body, file_path) {
|
|
130
|
+
var _kwargs$ignore_if_err;
|
|
131
|
+
|
|
132
|
+
var kwargs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
133
|
+
var file_name = kwargs === null || kwargs === void 0 ? void 0 : kwargs.file_name;
|
|
134
|
+
var ignore_if_error = (_kwargs$ignore_if_err = kwargs === null || kwargs === void 0 ? void 0 : kwargs.ignore_if_error) !== null && _kwargs$ignore_if_err !== void 0 ? _kwargs$ignore_if_err : false;
|
|
135
|
+
|
|
84
136
|
if (!body.data) {
|
|
85
137
|
body.data = {};
|
|
86
138
|
}
|
|
@@ -89,7 +141,7 @@ var Suprsend = /*#__PURE__*/function () {
|
|
|
89
141
|
throw new _utils.SuprsendError("data must be an object");
|
|
90
142
|
}
|
|
91
143
|
|
|
92
|
-
var attachment =
|
|
144
|
+
var attachment = (0, _attachment["default"])(file_path, file_name, ignore_if_error);
|
|
93
145
|
|
|
94
146
|
if (!body.data["$attachments"]) {
|
|
95
147
|
body["data"]["$attachments"] = [];
|
|
@@ -98,34 +150,38 @@ var Suprsend = /*#__PURE__*/function () {
|
|
|
98
150
|
body["data"]["$attachments"].push(attachment);
|
|
99
151
|
return body;
|
|
100
152
|
}
|
|
101
|
-
}, {
|
|
102
|
-
key: "_get_attachment_json_for_file",
|
|
103
|
-
value: function _get_attachment_json_for_file(file_path) {
|
|
104
|
-
var abs_path = _path["default"].resolve((0, _utils.resolveTilde)(file_path));
|
|
105
|
-
|
|
106
|
-
return {
|
|
107
|
-
filename: _path["default"].basename(abs_path),
|
|
108
|
-
contentType: _mimeTypes["default"].lookup(abs_path),
|
|
109
|
-
data: (0, _utils.base64Encode)(abs_path)
|
|
110
|
-
};
|
|
111
|
-
}
|
|
112
153
|
}, {
|
|
113
154
|
key: "trigger_workflow",
|
|
114
155
|
value: function trigger_workflow(data) {
|
|
115
|
-
var
|
|
116
|
-
|
|
117
|
-
|
|
156
|
+
var wf_ins;
|
|
157
|
+
|
|
158
|
+
if (data instanceof _workflow["default"]) {
|
|
159
|
+
wf_ins = data;
|
|
160
|
+
} else {
|
|
161
|
+
wf_ins = new _workflow["default"](data);
|
|
162
|
+
}
|
|
163
|
+
|
|
164
|
+
return this._workflow_trigger.trigger(wf_ins);
|
|
118
165
|
}
|
|
119
166
|
}, {
|
|
120
167
|
key: "track",
|
|
121
168
|
value: function track(distinct_id, event_name) {
|
|
122
169
|
var properties = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
123
|
-
|
|
170
|
+
var kwargs = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : {};
|
|
171
|
+
var event = new _event["default"](distinct_id, event_name, properties, kwargs);
|
|
172
|
+
return this._eventcollector.collect(event);
|
|
173
|
+
}
|
|
174
|
+
}, {
|
|
175
|
+
key: "track_event",
|
|
176
|
+
value: function track_event(event) {
|
|
177
|
+
if (!(event instanceof _event["default"])) {
|
|
178
|
+
throw new _utils.SuprsendError("argument must be an instance of suprsend.Event");
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
return this._eventcollector.collect(event);
|
|
124
182
|
}
|
|
125
183
|
}]);
|
|
126
184
|
return Suprsend;
|
|
127
185
|
}();
|
|
128
186
|
|
|
129
|
-
|
|
130
|
-
exports["default"] = _default;
|
|
131
|
-
module.exports = exports.default;
|
|
187
|
+
exports.Suprsend = Suprsend;
|
|
@@ -6,6 +6,11 @@
|
|
|
6
6
|
"$comment": "Json schema for Track event",
|
|
7
7
|
"type": "object",
|
|
8
8
|
"properties": {
|
|
9
|
+
"$idempotency_key": {
|
|
10
|
+
"type": ["string", "null"],
|
|
11
|
+
"maxLength": 64,
|
|
12
|
+
"description": "unique id provided by client for request"
|
|
13
|
+
},
|
|
9
14
|
"$insert_id": {
|
|
10
15
|
"type": "string",
|
|
11
16
|
"minLength": 36,
|