qiscus-sdk-core 2.16.0 → 2.16.1
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/qiscus-sdk-core.js +24475 -34766
- package/dist/qiscus-sdk-core.js.map +1 -1
- package/dist/qiscus-sdk-core.min.js +24 -8
- package/dist/qiscus-sdk-core.min.js.map +1 -1
- package/lib/index.js +1847 -2705
- package/lib/lib/Comment.js +89 -142
- package/lib/lib/Room.js +52 -94
- package/lib/lib/adapters/auth.js +42 -69
- package/lib/lib/adapters/custom-event.js +26 -35
- package/lib/lib/adapters/expired-token.js +86 -113
- package/lib/lib/adapters/hook.js +15 -19
- package/lib/lib/adapters/http.js +129 -253
- package/lib/lib/adapters/mqtt.js +422 -648
- package/lib/lib/adapters/room.js +121 -147
- package/lib/lib/adapters/sync.js +233 -421
- package/lib/lib/adapters/user.js +175 -210
- package/lib/lib/is.js +13 -47
- package/lib/lib/match.js +49 -92
- package/lib/lib/url-builder.js +7 -18
- package/lib/lib/util.js +6 -20
- package/lib/lib/utils.js +52 -97
- package/package.json +21 -55
package/lib/lib/adapters/http.js
CHANGED
|
@@ -1,269 +1,145 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
var
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
2
|
+
var __async = (__this, __arguments, generator) => {
|
|
3
|
+
return new Promise((resolve, reject) => {
|
|
4
|
+
var fulfilled = (value) => {
|
|
5
|
+
try {
|
|
6
|
+
step(generator.next(value));
|
|
7
|
+
} catch (e) {
|
|
8
|
+
reject(e);
|
|
9
|
+
}
|
|
10
|
+
};
|
|
11
|
+
var rejected = (value) => {
|
|
12
|
+
try {
|
|
13
|
+
step(generator.throw(value));
|
|
14
|
+
} catch (e) {
|
|
15
|
+
reject(e);
|
|
16
|
+
}
|
|
17
|
+
};
|
|
18
|
+
var step = (x) => x.done ? resolve(x.value) : Promise.resolve(x.value).then(fulfilled, rejected);
|
|
19
|
+
step((generator = generator.apply(__this, __arguments)).next());
|
|
20
|
+
});
|
|
21
|
+
};
|
|
22
|
+
const request = require("superagent");
|
|
23
|
+
class HttpAdapter {
|
|
24
|
+
constructor({
|
|
25
|
+
baseURL,
|
|
26
|
+
AppId,
|
|
27
|
+
userId,
|
|
28
|
+
version,
|
|
29
|
+
getCustomHeader,
|
|
30
|
+
expiredTokenAdapterGetter
|
|
31
|
+
}) {
|
|
22
32
|
this.baseURL = baseURL;
|
|
23
33
|
this.token = null;
|
|
24
34
|
this.userId = userId;
|
|
25
35
|
this.AppId = AppId;
|
|
26
36
|
this.version = version;
|
|
27
37
|
this.getCustomHeader = getCustomHeader;
|
|
28
|
-
/** @type {() => import('./expired-token.js').ExpiredTokenAdapter} */
|
|
29
38
|
this._expiredTokenAdapterGetter = expiredTokenAdapterGetter;
|
|
30
39
|
}
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
}, {
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
})
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
case 1:
|
|
93
|
-
case "end":
|
|
94
|
-
return _context3.stop();
|
|
95
|
-
}
|
|
96
|
-
}, _callee3);
|
|
97
|
-
})));
|
|
40
|
+
setToken(token) {
|
|
41
|
+
this.token = token;
|
|
42
|
+
}
|
|
43
|
+
get(path, headers = {}, options) {
|
|
44
|
+
return this._retryHelper(() => __async(this, null, function* () {
|
|
45
|
+
var req = request.get(`${this.baseURL}/${path}`);
|
|
46
|
+
if (options && options.baseURL)
|
|
47
|
+
req = request.get(`${options.baseURL}/${path}`);
|
|
48
|
+
req = this.setupHeaders(req, headers);
|
|
49
|
+
return req;
|
|
50
|
+
}));
|
|
51
|
+
}
|
|
52
|
+
// eslint-disable-next-line
|
|
53
|
+
get_request(path) {
|
|
54
|
+
return this._retryHelper(() => __async(this, null, function* () {
|
|
55
|
+
let req = request.get(`${this.baseURL}/${path}`);
|
|
56
|
+
req = this.setupHeaders(req, {});
|
|
57
|
+
return req;
|
|
58
|
+
}));
|
|
59
|
+
}
|
|
60
|
+
post(path, body = {}, headers = {}) {
|
|
61
|
+
return this._retryHelper(() => __async(this, null, function* () {
|
|
62
|
+
let req = request.post(`${this.baseURL}/${path}`);
|
|
63
|
+
req = this.setupHeaders(req, headers);
|
|
64
|
+
return req.send(body).set("Content-Type", "application/x-www-form-urlencoded");
|
|
65
|
+
}));
|
|
66
|
+
}
|
|
67
|
+
// eslint-disable-next-line
|
|
68
|
+
post_json(path, body = {}, headers = {}) {
|
|
69
|
+
return this._retryHelper(() => __async(this, null, function* () {
|
|
70
|
+
let req = request.post(`${this.baseURL}/${path}`);
|
|
71
|
+
req = this.setupHeaders(req, headers);
|
|
72
|
+
req.send(body);
|
|
73
|
+
return req;
|
|
74
|
+
}));
|
|
75
|
+
}
|
|
76
|
+
put(path, body = {}, headers = {}) {
|
|
77
|
+
return this._retryHelper(() => __async(this, null, function* () {
|
|
78
|
+
let req = request.put(`${this.baseURL}/${path}`);
|
|
79
|
+
req = this.setupHeaders(req, headers);
|
|
80
|
+
return req.send(body).set("Content-Type", "application/x-www-form-urlencoded");
|
|
81
|
+
}));
|
|
82
|
+
}
|
|
83
|
+
patch(path, body = {}, headers = {}) {
|
|
84
|
+
return this._retryHelper(() => __async(this, null, function* () {
|
|
85
|
+
let req = request.patch(`${this.baseURL}/${path}`);
|
|
86
|
+
req = this.setupHeaders(req, headers);
|
|
87
|
+
return req.send(body).set("Content-Type", "application/x-www-form-urlencoded");
|
|
88
|
+
}));
|
|
89
|
+
}
|
|
90
|
+
del(path, body = {}, headers = {}) {
|
|
91
|
+
return this._retryHelper(() => __async(this, null, function* () {
|
|
92
|
+
let req = request.del(`${this.baseURL}/${path}`);
|
|
93
|
+
req = this.setupHeaders(req, headers);
|
|
94
|
+
return req.send(body).set("Content-Type", "application/json");
|
|
95
|
+
}));
|
|
96
|
+
}
|
|
97
|
+
setupHeaders(req, headers = {}) {
|
|
98
|
+
req.set("QISCUS-SDK-PLATFORM", "javascript");
|
|
99
|
+
if (this.AppId != null) {
|
|
100
|
+
req.set("QISCUS-SDK-APP-ID", `${this.AppId}`);
|
|
98
101
|
}
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
}, {
|
|
102
|
-
key: "post_json",
|
|
103
|
-
value: function post_json(path) {
|
|
104
|
-
var _this4 = this;
|
|
105
|
-
var body = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
106
|
-
var headers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
107
|
-
return this._retryHelper(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee4() {
|
|
108
|
-
var req;
|
|
109
|
-
return _regenerator["default"].wrap(function (_context4) {
|
|
110
|
-
while (1) switch (_context4.prev = _context4.next) {
|
|
111
|
-
case 0:
|
|
112
|
-
req = _superagent["default"].post("".concat(_this4.baseURL, "/").concat(path));
|
|
113
|
-
req = _this4.setupHeaders(req, headers);
|
|
114
|
-
req.send(body);
|
|
115
|
-
return _context4.abrupt("return", req);
|
|
116
|
-
case 1:
|
|
117
|
-
case "end":
|
|
118
|
-
return _context4.stop();
|
|
119
|
-
}
|
|
120
|
-
}, _callee4);
|
|
121
|
-
})));
|
|
102
|
+
if (this.userId != null) {
|
|
103
|
+
req.set("QISCUS-SDK-USER-ID", `${this.userId}`);
|
|
122
104
|
}
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
value: function put(path) {
|
|
126
|
-
var _this5 = this;
|
|
127
|
-
var body = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
128
|
-
var headers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
129
|
-
return this._retryHelper(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee5() {
|
|
130
|
-
var req;
|
|
131
|
-
return _regenerator["default"].wrap(function (_context5) {
|
|
132
|
-
while (1) switch (_context5.prev = _context5.next) {
|
|
133
|
-
case 0:
|
|
134
|
-
req = _superagent["default"].put("".concat(_this5.baseURL, "/").concat(path));
|
|
135
|
-
req = _this5.setupHeaders(req, headers);
|
|
136
|
-
return _context5.abrupt("return", req.send(body).set('Content-Type', 'application/x-www-form-urlencoded'));
|
|
137
|
-
case 1:
|
|
138
|
-
case "end":
|
|
139
|
-
return _context5.stop();
|
|
140
|
-
}
|
|
141
|
-
}, _callee5);
|
|
142
|
-
})));
|
|
105
|
+
if (this.token != null) {
|
|
106
|
+
req.set("QISCUS-SDK-TOKEN", `${this.token}`);
|
|
143
107
|
}
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
value: function patch(path) {
|
|
147
|
-
var _this6 = this;
|
|
148
|
-
var body = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
149
|
-
var headers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
150
|
-
return this._retryHelper(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee6() {
|
|
151
|
-
var req;
|
|
152
|
-
return _regenerator["default"].wrap(function (_context6) {
|
|
153
|
-
while (1) switch (_context6.prev = _context6.next) {
|
|
154
|
-
case 0:
|
|
155
|
-
req = _superagent["default"].patch("".concat(_this6.baseURL, "/").concat(path));
|
|
156
|
-
req = _this6.setupHeaders(req, headers);
|
|
157
|
-
return _context6.abrupt("return", req.send(body).set('Content-Type', 'application/x-www-form-urlencoded'));
|
|
158
|
-
case 1:
|
|
159
|
-
case "end":
|
|
160
|
-
return _context6.stop();
|
|
161
|
-
}
|
|
162
|
-
}, _callee6);
|
|
163
|
-
})));
|
|
108
|
+
if (this.version != null) {
|
|
109
|
+
req.set("QISCUS-SDK-VERSION", `${this.version}`);
|
|
164
110
|
}
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
var headers = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
|
|
171
|
-
return this._retryHelper(/*#__PURE__*/(0, _asyncToGenerator2["default"])(/*#__PURE__*/_regenerator["default"].mark(function _callee7() {
|
|
172
|
-
var req;
|
|
173
|
-
return _regenerator["default"].wrap(function (_context7) {
|
|
174
|
-
while (1) switch (_context7.prev = _context7.next) {
|
|
175
|
-
case 0:
|
|
176
|
-
req = _superagent["default"].del("".concat(_this7.baseURL, "/").concat(path));
|
|
177
|
-
req = _this7.setupHeaders(req, headers);
|
|
178
|
-
return _context7.abrupt("return", req.send(body).set('Content-Type', 'application/json'));
|
|
179
|
-
case 1:
|
|
180
|
-
case "end":
|
|
181
|
-
return _context7.stop();
|
|
182
|
-
}
|
|
183
|
-
}, _callee7);
|
|
184
|
-
})));
|
|
111
|
+
if (this.getCustomHeader != null) {
|
|
112
|
+
const customHeaders = this.getCustomHeader();
|
|
113
|
+
Object.keys(customHeaders).filter((key) => customHeaders[key] != null).forEach((key) => {
|
|
114
|
+
req.set(key, customHeaders[key]);
|
|
115
|
+
});
|
|
185
116
|
}
|
|
186
|
-
|
|
187
|
-
key
|
|
188
|
-
|
|
189
|
-
var headers = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
|
|
190
|
-
req.set('QISCUS-SDK-PLATFORM', 'javascript');
|
|
191
|
-
// let's give this default Authorization Header
|
|
192
|
-
if (this.AppId != null) {
|
|
193
|
-
req.set('QISCUS-SDK-APP-ID', "".concat(this.AppId));
|
|
194
|
-
}
|
|
195
|
-
if (this.userId != null) {
|
|
196
|
-
req.set('QISCUS-SDK-USER-ID', "".concat(this.userId));
|
|
197
|
-
}
|
|
198
|
-
if (this.token != null) {
|
|
199
|
-
req.set('QISCUS-SDK-TOKEN', "".concat(this.token));
|
|
200
|
-
}
|
|
201
|
-
if (this.version != null) {
|
|
202
|
-
req.set('QISCUS-SDK-VERSION', "".concat(this.version));
|
|
203
|
-
}
|
|
204
|
-
if (this.getCustomHeader != null) {
|
|
205
|
-
var customHeaders = this.getCustomHeader();
|
|
206
|
-
Object.keys(customHeaders).filter(function (key) {
|
|
207
|
-
return customHeaders[key] != null;
|
|
208
|
-
}).forEach(function (key) {
|
|
209
|
-
req.set(key, customHeaders[key]);
|
|
210
|
-
});
|
|
211
|
-
}
|
|
212
|
-
// Return the req if no headers attached
|
|
213
|
-
if (Object.keys(headers).length < 1) return req;
|
|
214
|
-
// now let's process custom header
|
|
215
|
-
for (var key in headers) {
|
|
216
|
-
if (headers.hasOwnProperty(key)) req.set(key, headers[key]);
|
|
217
|
-
}
|
|
218
|
-
return req;
|
|
117
|
+
if (Object.keys(headers).length < 1) return req;
|
|
118
|
+
for (let key in headers) {
|
|
119
|
+
if (headers.hasOwnProperty(key)) req.set(key, headers[key]);
|
|
219
120
|
}
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
var
|
|
229
|
-
|
|
230
|
-
return
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
_t = _context8["catch"](0);
|
|
241
|
-
status = _t === null || _t === void 0 || (_err$response = _t.response) === null || _err$response === void 0 ? void 0 : _err$response.status;
|
|
242
|
-
body = _t === null || _t === void 0 || (_err$response2 = _t.response) === null || _err$response2 === void 0 ? void 0 : _err$response2.body;
|
|
243
|
-
if (!(status === 403 && ((_body$error = body.error) === null || _body$error === void 0 || (_body$error = _body$error.message) === null || _body$error === void 0 ? void 0 : _body$error.toLowerCase()) === 'unauthorized. token is expired')) {
|
|
244
|
-
_context8.next = 5;
|
|
245
|
-
break;
|
|
246
|
-
}
|
|
247
|
-
_context8.next = 3;
|
|
248
|
-
return this._expiredTokenAdapterGetter().refreshAuthToken();
|
|
249
|
-
case 3:
|
|
250
|
-
_context8.next = 4;
|
|
251
|
-
return fn();
|
|
252
|
-
case 4:
|
|
253
|
-
return _context8.abrupt("return", _context8.sent);
|
|
254
|
-
case 5:
|
|
255
|
-
throw _t;
|
|
256
|
-
case 6:
|
|
257
|
-
case "end":
|
|
258
|
-
return _context8.stop();
|
|
259
|
-
}
|
|
260
|
-
}, _callee8, this, [[0, 2]]);
|
|
261
|
-
}));
|
|
262
|
-
function _retryHelper(_x) {
|
|
263
|
-
return _retryHelper2.apply(this, arguments);
|
|
121
|
+
return req;
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
124
|
+
* @param {() => request.Request} fn
|
|
125
|
+
* @returns {Promise<unknown>}
|
|
126
|
+
*/
|
|
127
|
+
_retryHelper(fn) {
|
|
128
|
+
return __async(this, null, function* () {
|
|
129
|
+
var _a, _b, _c, _d;
|
|
130
|
+
try {
|
|
131
|
+
return yield fn();
|
|
132
|
+
} catch (err) {
|
|
133
|
+
const status = (_a = err == null ? void 0 : err.response) == null ? void 0 : _a.status;
|
|
134
|
+
const body = (_b = err == null ? void 0 : err.response) == null ? void 0 : _b.body;
|
|
135
|
+
if (status === 403 && ((_d = (_c = body.error) == null ? void 0 : _c.message) == null ? void 0 : _d.toLowerCase()) === "unauthorized. token is expired") {
|
|
136
|
+
yield this._expiredTokenAdapterGetter().refreshAuthToken();
|
|
137
|
+
return yield fn();
|
|
138
|
+
} else {
|
|
139
|
+
throw err;
|
|
140
|
+
}
|
|
264
141
|
}
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
module.exports = exports.default;
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
module.exports = HttpAdapter;
|