@suprsend/node-sdk 1.9.1 → 1.10.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/README.md +1 -1
- package/dist/constants.js +2 -4
- package/dist/index.js +12 -5
- package/dist/request_json/workflow.json +4 -0
- package/dist/request_json/workflow_trigger.json +360 -0
- package/dist/subscriber.js +7 -0
- package/dist/subscriber_helper.js +7 -1
- package/dist/utils.js +20 -0
- package/dist/workflow.js +1 -1
- package/dist/workflow_api.js +108 -0
- package/dist/workflow_request.js +93 -0
- package/dist/workflow_trigger_bulk.js +316 -0
- package/package.json +1 -1
- package/src/constants.js +0 -2
- package/src/index.js +16 -7
- package/src/request_json/workflow.json +4 -0
- package/src/request_json/workflow_trigger.json +360 -0
- package/src/subscriber.js +6 -0
- package/src/subscriber_helper.js +6 -0
- package/src/utils.js +20 -0
- package/src/workflow.js +1 -1
- package/src/workflow_api.js +71 -0
- package/src/workflow_request.js +92 -0
- package/src/workflow_trigger_bulk.js +218 -0
- package/types/index.d.ts +33 -1
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports["default"] = void 0;
|
|
8
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
9
|
+
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
|
|
10
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
11
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
12
|
+
var _utils = require("./utils");
|
|
13
|
+
var _attachment = _interopRequireDefault(require("./attachment"));
|
|
14
|
+
var _constants = require("./constants");
|
|
15
|
+
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; }
|
|
16
|
+
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; }
|
|
17
|
+
var WorkflowTriggerRequest = /*#__PURE__*/function () {
|
|
18
|
+
function WorkflowTriggerRequest(body) {
|
|
19
|
+
var kwargs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
20
|
+
(0, _classCallCheck2["default"])(this, WorkflowTriggerRequest);
|
|
21
|
+
if (!((0, _typeof2["default"])(body) === "object" && !Array.isArray(body))) {
|
|
22
|
+
throw new _utils.InputValueError("WorkflowTriggerRequest body must be a JSON object/dictionary");
|
|
23
|
+
}
|
|
24
|
+
this.body = body;
|
|
25
|
+
this.idempotency_key = kwargs === null || kwargs === void 0 ? void 0 : kwargs.idempotency_key;
|
|
26
|
+
this.tenant_id = kwargs === null || kwargs === void 0 ? void 0 : kwargs.tenant_id;
|
|
27
|
+
this.cancellation_key = kwargs === null || kwargs === void 0 ? void 0 : kwargs.cancellation_key;
|
|
28
|
+
}
|
|
29
|
+
(0, _createClass2["default"])(WorkflowTriggerRequest, [{
|
|
30
|
+
key: "add_attachment",
|
|
31
|
+
value: function add_attachment() {
|
|
32
|
+
var _kwargs$ignore_if_err;
|
|
33
|
+
var file_path = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : "";
|
|
34
|
+
var kwargs = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
35
|
+
var file_name = kwargs === null || kwargs === void 0 ? void 0 : kwargs.file_name;
|
|
36
|
+
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;
|
|
37
|
+
if (!this.body.data) {
|
|
38
|
+
this.body.data = {};
|
|
39
|
+
}
|
|
40
|
+
// If body["data"] is not a dictionary, don't raise an error while adding attachment.
|
|
41
|
+
if ((0, _typeof2["default"])(this.body.data) !== "object") {
|
|
42
|
+
console.warn("WARNING: attachment cannot be added. Please make sure body['data'] is a dictionary. WorkflowTriggerRequest ", JSON.stringify(this.as_json()));
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
var attachment = (0, _attachment["default"])(file_path, file_name, ignore_if_error);
|
|
46
|
+
if (!attachment) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
if (!this.body.data.$attachments) {
|
|
50
|
+
this.body.data.$attachments = [];
|
|
51
|
+
}
|
|
52
|
+
this.body.data.$attachments.push(attachment);
|
|
53
|
+
}
|
|
54
|
+
}, {
|
|
55
|
+
key: "get_final_json",
|
|
56
|
+
value: function get_final_json(config) {
|
|
57
|
+
var is_part_of_bulk = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
58
|
+
if (this.idempotency_key) {
|
|
59
|
+
this.body["$idempotency_key"] = this.idempotency_key;
|
|
60
|
+
}
|
|
61
|
+
if (this.tenant_id) {
|
|
62
|
+
this.body["tenant_id"] = this.tenant_id;
|
|
63
|
+
}
|
|
64
|
+
if (this.cancellation_key) {
|
|
65
|
+
this.body.cancellation_key = this.cancellation_key;
|
|
66
|
+
}
|
|
67
|
+
this.body = (0, _utils.validate_workflow_trigger_body_schema)(this.body);
|
|
68
|
+
var apparent_size = (0, _utils.get_apparent_workflow_body_size)(this.body, is_part_of_bulk);
|
|
69
|
+
if (apparent_size > _constants.SINGLE_EVENT_MAX_APPARENT_SIZE_IN_BYTES) {
|
|
70
|
+
throw new _utils.InputValueError("workflow body too big - ".concat(apparent_size, " Bytes, must not exceed ").concat(_constants.SINGLE_EVENT_MAX_APPARENT_SIZE_IN_BYTES_READABLE));
|
|
71
|
+
}
|
|
72
|
+
return [this.body, apparent_size];
|
|
73
|
+
}
|
|
74
|
+
}, {
|
|
75
|
+
key: "as_json",
|
|
76
|
+
value: function as_json() {
|
|
77
|
+
var body_dict = _objectSpread({}, this.body);
|
|
78
|
+
if (this.idempotency_key) {
|
|
79
|
+
body_dict.$idempotency_key = this.idempotency_key;
|
|
80
|
+
}
|
|
81
|
+
if (this.tenant_id) {
|
|
82
|
+
body_dict.tenant_id = this.tenant_id;
|
|
83
|
+
}
|
|
84
|
+
if (this.cancellation_key) {
|
|
85
|
+
body_dict.cancellation_key = this.cancellation_key;
|
|
86
|
+
}
|
|
87
|
+
return body_dict;
|
|
88
|
+
}
|
|
89
|
+
}]);
|
|
90
|
+
return WorkflowTriggerRequest;
|
|
91
|
+
}();
|
|
92
|
+
exports["default"] = WorkflowTriggerRequest;
|
|
93
|
+
module.exports = exports.default;
|
|
@@ -0,0 +1,316 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
|
4
|
+
Object.defineProperty(exports, "__esModule", {
|
|
5
|
+
value: true
|
|
6
|
+
});
|
|
7
|
+
exports._BulkWorkflowTriggerChunk = exports.BulkWorkflowTrigger = void 0;
|
|
8
|
+
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
|
|
9
|
+
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
|
|
10
|
+
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
|
|
11
|
+
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
|
|
12
|
+
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
|
|
13
|
+
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
|
14
|
+
var _axios = _interopRequireDefault(require("axios"));
|
|
15
|
+
var _lodash = require("lodash");
|
|
16
|
+
var _signature = _interopRequireDefault(require("./signature"));
|
|
17
|
+
var _bulk_response = _interopRequireDefault(require("./bulk_response"));
|
|
18
|
+
var _utils = require("./utils");
|
|
19
|
+
var _workflow_request = _interopRequireDefault(require("./workflow_request"));
|
|
20
|
+
var _constants = require("./constants");
|
|
21
|
+
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; } } }; }
|
|
22
|
+
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); }
|
|
23
|
+
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; }
|
|
24
|
+
var _BulkWorkflowTriggerChunk = /*#__PURE__*/function () {
|
|
25
|
+
function _BulkWorkflowTriggerChunk(config) {
|
|
26
|
+
(0, _classCallCheck2["default"])(this, _BulkWorkflowTriggerChunk);
|
|
27
|
+
this.config = config;
|
|
28
|
+
this.url = this.__url = "".concat(this.config.base_url, "trigger/");
|
|
29
|
+
this.__chunk = [];
|
|
30
|
+
this.__running_size = 0;
|
|
31
|
+
this.__running_length = 0;
|
|
32
|
+
this.response = null;
|
|
33
|
+
}
|
|
34
|
+
(0, _createClass2["default"])(_BulkWorkflowTriggerChunk, [{
|
|
35
|
+
key: "_get_headers",
|
|
36
|
+
value: function _get_headers() {
|
|
37
|
+
return {
|
|
38
|
+
"Content-Type": "application/json; charset=utf-8",
|
|
39
|
+
"User-Agent": this.config.user_agent,
|
|
40
|
+
Date: new Date().toUTCString()
|
|
41
|
+
};
|
|
42
|
+
}
|
|
43
|
+
}, {
|
|
44
|
+
key: "__add_body_to_chunk",
|
|
45
|
+
value: function __add_body_to_chunk(body, body_size) {
|
|
46
|
+
this.__running_size += body_size;
|
|
47
|
+
this.__chunk.push(body);
|
|
48
|
+
this.__running_length++;
|
|
49
|
+
}
|
|
50
|
+
}, {
|
|
51
|
+
key: "_check_limit_reached",
|
|
52
|
+
value: function _check_limit_reached() {
|
|
53
|
+
return this.__running_length >= _BulkWorkflowTriggerChunk._max_records_in_chunk || this.__running_size >= _BulkWorkflowTriggerChunk._chunk_apparent_size_in_bytes;
|
|
54
|
+
}
|
|
55
|
+
}, {
|
|
56
|
+
key: "try_to_add_into_chunk",
|
|
57
|
+
value: function try_to_add_into_chunk(body, body_size) {
|
|
58
|
+
if (!body) {
|
|
59
|
+
return true;
|
|
60
|
+
}
|
|
61
|
+
if (this._check_limit_reached()) {
|
|
62
|
+
return false;
|
|
63
|
+
}
|
|
64
|
+
if (body_size > _constants.SINGLE_EVENT_MAX_APPARENT_SIZE_IN_BYTES) {
|
|
65
|
+
throw new _utils.InputValueError("workflow body too big - ".concat(body_size, " Bytes, must not exceed ").concat(_constants.SINGLE_EVENT_MAX_APPARENT_SIZE_IN_BYTES_READABLE));
|
|
66
|
+
}
|
|
67
|
+
if (this.__running_size + body_size > _BulkWorkflowTriggerChunk._chunk_apparent_size_in_bytes) {
|
|
68
|
+
return false;
|
|
69
|
+
}
|
|
70
|
+
if (!_constants.ALLOW_ATTACHMENTS_IN_BULK_API) {
|
|
71
|
+
delete body.data["$attachments"];
|
|
72
|
+
}
|
|
73
|
+
this.__add_body_to_chunk(body, body_size);
|
|
74
|
+
return true;
|
|
75
|
+
}
|
|
76
|
+
}, {
|
|
77
|
+
key: "trigger",
|
|
78
|
+
value: function () {
|
|
79
|
+
var _trigger = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee() {
|
|
80
|
+
var headers, content_text, signature, resp, resp_data;
|
|
81
|
+
return _regenerator["default"].wrap(function _callee$(_context) {
|
|
82
|
+
while (1) {
|
|
83
|
+
switch (_context.prev = _context.next) {
|
|
84
|
+
case 0:
|
|
85
|
+
headers = this._get_headers();
|
|
86
|
+
content_text = JSON.stringify(this.__chunk);
|
|
87
|
+
signature = (0, _signature["default"])(this.__url, "POST", content_text, headers, this.config.workspace_secret);
|
|
88
|
+
headers["Authorization"] = "".concat(this.config.workspace_key, ":").concat(signature);
|
|
89
|
+
_context.prev = 4;
|
|
90
|
+
_context.next = 7;
|
|
91
|
+
return _axios["default"].post(this.__url, content_text, {
|
|
92
|
+
headers: headers,
|
|
93
|
+
transformResponse: [function (data) {
|
|
94
|
+
return data;
|
|
95
|
+
}] // dont assume type of response
|
|
96
|
+
});
|
|
97
|
+
case 7:
|
|
98
|
+
resp = _context.sent;
|
|
99
|
+
this.response = {
|
|
100
|
+
status: "success",
|
|
101
|
+
status_code: resp.status,
|
|
102
|
+
total: this.__chunk.length,
|
|
103
|
+
success: this.__chunk.length,
|
|
104
|
+
failure: 0,
|
|
105
|
+
failed_records: []
|
|
106
|
+
};
|
|
107
|
+
_context.next = 14;
|
|
108
|
+
break;
|
|
109
|
+
case 11:
|
|
110
|
+
_context.prev = 11;
|
|
111
|
+
_context.t0 = _context["catch"](4);
|
|
112
|
+
if (_context.t0 !== null && _context.t0 !== void 0 && _context.t0.response) {
|
|
113
|
+
resp_data = _context.t0.response;
|
|
114
|
+
this.response = {
|
|
115
|
+
status: "fail",
|
|
116
|
+
status_code: resp_data.status,
|
|
117
|
+
total: this.__chunk.length,
|
|
118
|
+
success: 0,
|
|
119
|
+
failure: this.__chunk.length,
|
|
120
|
+
failed_records: this.__chunk.map(function (record) {
|
|
121
|
+
return {
|
|
122
|
+
record: record,
|
|
123
|
+
error: resp_data.data,
|
|
124
|
+
code: resp_data.status
|
|
125
|
+
};
|
|
126
|
+
})
|
|
127
|
+
};
|
|
128
|
+
} else {
|
|
129
|
+
this.response = {
|
|
130
|
+
status: "fail",
|
|
131
|
+
status_code: 500,
|
|
132
|
+
total: this.__chunk.length,
|
|
133
|
+
success: 0,
|
|
134
|
+
failure: this.__chunk.length,
|
|
135
|
+
failed_records: this.__chunk.map(function (record) {
|
|
136
|
+
return {
|
|
137
|
+
record: record,
|
|
138
|
+
error: _context.t0.message,
|
|
139
|
+
code: 500
|
|
140
|
+
};
|
|
141
|
+
})
|
|
142
|
+
};
|
|
143
|
+
}
|
|
144
|
+
case 14:
|
|
145
|
+
case "end":
|
|
146
|
+
return _context.stop();
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}, _callee, this, [[4, 11]]);
|
|
150
|
+
}));
|
|
151
|
+
function trigger() {
|
|
152
|
+
return _trigger.apply(this, arguments);
|
|
153
|
+
}
|
|
154
|
+
return trigger;
|
|
155
|
+
}()
|
|
156
|
+
}]);
|
|
157
|
+
return _BulkWorkflowTriggerChunk;
|
|
158
|
+
}();
|
|
159
|
+
exports._BulkWorkflowTriggerChunk = _BulkWorkflowTriggerChunk;
|
|
160
|
+
(0, _defineProperty2["default"])(_BulkWorkflowTriggerChunk, "_chunk_apparent_size_in_bytes", _constants.BODY_MAX_APPARENT_SIZE_IN_BYTES);
|
|
161
|
+
(0, _defineProperty2["default"])(_BulkWorkflowTriggerChunk, "_chunk_apparent_size_in_bytes_readable", _constants.BODY_MAX_APPARENT_SIZE_IN_BYTES_READABLE);
|
|
162
|
+
(0, _defineProperty2["default"])(_BulkWorkflowTriggerChunk, "_max_records_in_chunk", _constants.MAX_WORKFLOWS_IN_BULK_API);
|
|
163
|
+
var BulkWorkflowTrigger = /*#__PURE__*/function () {
|
|
164
|
+
function BulkWorkflowTrigger(config) {
|
|
165
|
+
(0, _classCallCheck2["default"])(this, BulkWorkflowTrigger);
|
|
166
|
+
this.config = config;
|
|
167
|
+
this.__workflows = [];
|
|
168
|
+
this.__pending_records = [];
|
|
169
|
+
this.chunks = [];
|
|
170
|
+
this.response = new _bulk_response["default"]();
|
|
171
|
+
// invalid_record json: {"record": workflow-json, "error": error_str, "code": 500}
|
|
172
|
+
this.__invalid_records = [];
|
|
173
|
+
}
|
|
174
|
+
(0, _createClass2["default"])(BulkWorkflowTrigger, [{
|
|
175
|
+
key: "__validate_workflows",
|
|
176
|
+
value: function __validate_workflows() {
|
|
177
|
+
var _iterator = _createForOfIteratorHelper(this.__workflows),
|
|
178
|
+
_step;
|
|
179
|
+
try {
|
|
180
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
181
|
+
var wf = _step.value;
|
|
182
|
+
try {
|
|
183
|
+
var is_part_of_bulk = true;
|
|
184
|
+
var _wf$get_final_json = wf.get_final_json(this.config, is_part_of_bulk),
|
|
185
|
+
_wf$get_final_json2 = (0, _slicedToArray2["default"])(_wf$get_final_json, 2),
|
|
186
|
+
wf_body = _wf$get_final_json2[0],
|
|
187
|
+
body_size = _wf$get_final_json2[1];
|
|
188
|
+
this.__pending_records.push([wf_body, body_size]);
|
|
189
|
+
} catch (ex) {
|
|
190
|
+
var inv_rec = (0, _utils.invalid_record_json)(wf.as_json(), ex);
|
|
191
|
+
this.__invalid_records.push(inv_rec);
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
} catch (err) {
|
|
195
|
+
_iterator.e(err);
|
|
196
|
+
} finally {
|
|
197
|
+
_iterator.f();
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
}, {
|
|
201
|
+
key: "__chunkify",
|
|
202
|
+
value: function __chunkify() {
|
|
203
|
+
var start_idx = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : 0;
|
|
204
|
+
var curr_chunk = new _BulkWorkflowTriggerChunk(this.config);
|
|
205
|
+
this.chunks.push(curr_chunk);
|
|
206
|
+
var entries = this.__pending_records.slice(start_idx).entries();
|
|
207
|
+
var _iterator2 = _createForOfIteratorHelper(entries),
|
|
208
|
+
_step2;
|
|
209
|
+
try {
|
|
210
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
211
|
+
var _step2$value = (0, _slicedToArray2["default"])(_step2.value, 2),
|
|
212
|
+
rel_idx = _step2$value[0],
|
|
213
|
+
rec = _step2$value[1];
|
|
214
|
+
var is_added = curr_chunk.try_to_add_into_chunk(rec[0], rec[1]);
|
|
215
|
+
if (!is_added) {
|
|
216
|
+
// create chunks from remaining records
|
|
217
|
+
this.__chunkify(start_idx + rel_idx);
|
|
218
|
+
// Don't forget to break. As current loop must not continue further
|
|
219
|
+
break;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
} catch (err) {
|
|
223
|
+
_iterator2.e(err);
|
|
224
|
+
} finally {
|
|
225
|
+
_iterator2.f();
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}, {
|
|
229
|
+
key: "append",
|
|
230
|
+
value: function append() {
|
|
231
|
+
for (var _len = arguments.length, workflows = new Array(_len), _key = 0; _key < _len; _key++) {
|
|
232
|
+
workflows[_key] = arguments[_key];
|
|
233
|
+
}
|
|
234
|
+
if (!workflows.length) return;
|
|
235
|
+
for (var _i = 0, _workflows = workflows; _i < _workflows.length; _i++) {
|
|
236
|
+
var wf = _workflows[_i];
|
|
237
|
+
if (wf instanceof _workflow_request["default"]) {
|
|
238
|
+
var wf_copy = (0, _lodash.cloneDeep)(wf);
|
|
239
|
+
this.__workflows.push(wf_copy);
|
|
240
|
+
}
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
}, {
|
|
244
|
+
key: "trigger",
|
|
245
|
+
value: function () {
|
|
246
|
+
var _trigger2 = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2() {
|
|
247
|
+
var ch_response, _iterator3, _step3, _step3$value, c_idx, ch;
|
|
248
|
+
return _regenerator["default"].wrap(function _callee2$(_context2) {
|
|
249
|
+
while (1) {
|
|
250
|
+
switch (_context2.prev = _context2.next) {
|
|
251
|
+
case 0:
|
|
252
|
+
this.__validate_workflows();
|
|
253
|
+
if (this.__invalid_records.length > 0) {
|
|
254
|
+
ch_response = _bulk_response["default"].invalid_records_chunk_response(this.__invalid_records);
|
|
255
|
+
this.response.merge_chunk_response(ch_response);
|
|
256
|
+
}
|
|
257
|
+
if (!this.__pending_records.length) {
|
|
258
|
+
_context2.next = 25;
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
this.__chunkify();
|
|
262
|
+
_iterator3 = _createForOfIteratorHelper(this.chunks.entries());
|
|
263
|
+
_context2.prev = 5;
|
|
264
|
+
_iterator3.s();
|
|
265
|
+
case 7:
|
|
266
|
+
if ((_step3 = _iterator3.n()).done) {
|
|
267
|
+
_context2.next = 15;
|
|
268
|
+
break;
|
|
269
|
+
}
|
|
270
|
+
_step3$value = (0, _slicedToArray2["default"])(_step3.value, 2), c_idx = _step3$value[0], ch = _step3$value[1];
|
|
271
|
+
if (this.config.req_log_level > 0) {
|
|
272
|
+
console.log("DEBUG: triggering api call for chunk: ".concat(cIdx));
|
|
273
|
+
}
|
|
274
|
+
// do api call
|
|
275
|
+
_context2.next = 12;
|
|
276
|
+
return ch.trigger();
|
|
277
|
+
case 12:
|
|
278
|
+
// merge response
|
|
279
|
+
this.response.merge_chunk_response(ch.response);
|
|
280
|
+
case 13:
|
|
281
|
+
_context2.next = 7;
|
|
282
|
+
break;
|
|
283
|
+
case 15:
|
|
284
|
+
_context2.next = 20;
|
|
285
|
+
break;
|
|
286
|
+
case 17:
|
|
287
|
+
_context2.prev = 17;
|
|
288
|
+
_context2.t0 = _context2["catch"](5);
|
|
289
|
+
_iterator3.e(_context2.t0);
|
|
290
|
+
case 20:
|
|
291
|
+
_context2.prev = 20;
|
|
292
|
+
_iterator3.f();
|
|
293
|
+
return _context2.finish(20);
|
|
294
|
+
case 23:
|
|
295
|
+
_context2.next = 26;
|
|
296
|
+
break;
|
|
297
|
+
case 25:
|
|
298
|
+
if (this.__invalid_records.length === 0) this.response.merge_chunk_response(_bulk_response["default"].empty_chunk_success_response());
|
|
299
|
+
case 26:
|
|
300
|
+
return _context2.abrupt("return", this.response);
|
|
301
|
+
case 27:
|
|
302
|
+
case "end":
|
|
303
|
+
return _context2.stop();
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
}, _callee2, this, [[5, 17, 20, 23]]);
|
|
307
|
+
}));
|
|
308
|
+
function trigger() {
|
|
309
|
+
return _trigger2.apply(this, arguments);
|
|
310
|
+
}
|
|
311
|
+
return trigger;
|
|
312
|
+
}()
|
|
313
|
+
}]);
|
|
314
|
+
return BulkWorkflowTrigger;
|
|
315
|
+
}();
|
|
316
|
+
exports.BulkWorkflowTrigger = BulkWorkflowTrigger;
|
package/package.json
CHANGED
package/src/constants.js
CHANGED
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
// Default urls
|
|
2
2
|
export const DEFAULT_URL = "https://hub.suprsend.com/";
|
|
3
|
-
export const DEFAULT_UAT_URL =
|
|
4
|
-
"https://collector-staging.suprsend.workers.dev/";
|
|
5
3
|
|
|
6
4
|
// an Event should not have apparent body size of more than 100KB
|
|
7
5
|
export const SINGLE_EVENT_MAX_APPARENT_SIZE_IN_BYTES = 100 * 1024; // 100 * 1024
|
package/src/index.js
CHANGED
|
@@ -2,6 +2,8 @@ import { SuprsendConfigError, InputValueError } from "./utils";
|
|
|
2
2
|
import get_attachment_json from "./attachment";
|
|
3
3
|
import Workflow, { _WorkflowTrigger } from "./workflow";
|
|
4
4
|
import { BulkWorkflowsFactory } from "./workflows_bulk";
|
|
5
|
+
import WorkflowTriggerRequest from "./workflow_request";
|
|
6
|
+
import WorkflowsApi from "./workflow_api";
|
|
5
7
|
import Event, { EventCollector } from "./event";
|
|
6
8
|
import { BulkEventsFactory } from "./events_bulk";
|
|
7
9
|
import SubscriberFactory from "./subscriber";
|
|
@@ -9,7 +11,7 @@ import BulkSubscribersFactory from "./subscribers_bulk";
|
|
|
9
11
|
import { SubscriberListsApi, SubscriberListBroadcast } from "./subscriber_list";
|
|
10
12
|
import BrandsApi from "./brands";
|
|
11
13
|
import TenantsApi from "./tenant";
|
|
12
|
-
import {
|
|
14
|
+
import { DEFAULT_URL } from "./constants";
|
|
13
15
|
|
|
14
16
|
const package_json = require("../package.json");
|
|
15
17
|
|
|
@@ -35,6 +37,7 @@ class Suprsend {
|
|
|
35
37
|
|
|
36
38
|
this.brands = new BrandsApi(this);
|
|
37
39
|
this.tenants = new TenantsApi(this);
|
|
40
|
+
this.workflows = new WorkflowsApi(this);
|
|
38
41
|
|
|
39
42
|
this.subscriber_lists = new SubscriberListsApi(this);
|
|
40
43
|
|
|
@@ -72,11 +75,7 @@ class Suprsend {
|
|
|
72
75
|
base_url = base_url.trim();
|
|
73
76
|
}
|
|
74
77
|
if (!base_url) {
|
|
75
|
-
|
|
76
|
-
base_url = DEFAULT_UAT_URL;
|
|
77
|
-
} else {
|
|
78
|
-
base_url = DEFAULT_URL;
|
|
79
|
-
}
|
|
78
|
+
base_url = DEFAULT_URL;
|
|
80
79
|
}
|
|
81
80
|
base_url = base_url.trim();
|
|
82
81
|
if (!base_url.endsWith("/")) {
|
|
@@ -86,6 +85,9 @@ class Suprsend {
|
|
|
86
85
|
}
|
|
87
86
|
|
|
88
87
|
add_attachment(body, file_path, kwargs = {}) {
|
|
88
|
+
console.warn(
|
|
89
|
+
'This method is deprecated. Use "WorkflowTriggerRequest.add_attachment()" instead'
|
|
90
|
+
);
|
|
89
91
|
const file_name = kwargs?.file_name;
|
|
90
92
|
const ignore_if_error = kwargs?.ignore_if_error ?? false;
|
|
91
93
|
if (!body?.data) {
|
|
@@ -117,6 +119,7 @@ class Suprsend {
|
|
|
117
119
|
}
|
|
118
120
|
|
|
119
121
|
track(distinct_id, event_name, properties = {}, kwargs = {}) {
|
|
122
|
+
console.warn('This method is deprecated. Use "track_event(Event)" instead');
|
|
120
123
|
const event = new Event(distinct_id, event_name, properties, kwargs);
|
|
121
124
|
return this._eventcollector.collect(event);
|
|
122
125
|
}
|
|
@@ -131,4 +134,10 @@ class Suprsend {
|
|
|
131
134
|
}
|
|
132
135
|
}
|
|
133
136
|
|
|
134
|
-
export {
|
|
137
|
+
export {
|
|
138
|
+
Suprsend,
|
|
139
|
+
Event,
|
|
140
|
+
Workflow,
|
|
141
|
+
SubscriberListBroadcast,
|
|
142
|
+
WorkflowTriggerRequest,
|
|
143
|
+
};
|
|
@@ -214,6 +214,10 @@
|
|
|
214
214
|
"type": ["string", "null"],
|
|
215
215
|
"description": "preferred_language: 2-letter language code in ISO 639-1 Alpha-2 code format. e.g en (for English)"
|
|
216
216
|
},
|
|
217
|
+
"$timezone": {
|
|
218
|
+
"type": ["string", "null"],
|
|
219
|
+
"description": "timezone: in IANA timezone format e.g 'America/Los_Angeles'"
|
|
220
|
+
},
|
|
217
221
|
"$channels": {
|
|
218
222
|
"type": "array",
|
|
219
223
|
"items": {
|