@wppconnect/server 1.8.4 → 2.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.
- package/CHANGELOG.md +12 -0
- package/dist/config/upload.js +4 -4
- package/dist/config.js +78 -0
- package/dist/controller/catalogController.js +127 -22
- package/dist/controller/deviceController.js +324 -114
- package/dist/controller/encryptController.js +4 -2
- package/dist/controller/groupController.js +157 -44
- package/dist/controller/labelsController.js +46 -8
- package/dist/controller/messageController.js +104 -39
- package/dist/controller/orderController.js +19 -7
- package/dist/controller/sessionController.js +100 -35
- package/dist/controller/statusController.js +18 -10
- package/dist/index.js +47 -25
- package/dist/mapper/index.js +7 -5
- package/dist/mapper/tagone-chat.js +1 -1
- package/dist/mapper/tagone-device.js +1 -1
- package/dist/mapper/tagone-message-document.js +1 -1
- package/dist/mapper/tagone-message-image.js +1 -1
- package/dist/mapper/tagone-message-location.js +1 -1
- package/dist/mapper/tagone-message-video.js +1 -1
- package/dist/mapper/tagone-message.js +1 -1
- package/dist/mapper/tagone-onack.js +1 -1
- package/dist/mapper/tagone-return.js +4 -2
- package/dist/middleware/auth.js +29 -9
- package/dist/middleware/healthCheck.js +1 -1
- package/dist/middleware/statusConnection.js +9 -3
- package/dist/routes/index.js +618 -112
- package/dist/server.js +2 -2
- package/dist/swagger.json +76 -0
- package/dist/types/Request.js +2 -0
- package/dist/types/ServerOptions.js +2 -0
- package/dist/types/WhatsAppServer.js +2 -0
- package/dist/util/chatWootClient.js +55 -22
- package/dist/util/createSessionUtil.js +65 -17
- package/dist/util/db/mongodb/db.js +10 -7
- package/dist/util/db/redis/db.js +7 -5
- package/dist/util/functions.js +81 -37
- package/dist/util/getAllTokens.js +1 -1
- package/dist/util/logger.js +2 -3
- package/dist/util/sessionUtil.js +5 -4
- package/dist/util/tokenStore/FileTokenStore/FileTokenStore.js +178 -0
- package/dist/util/tokenStore/factory.js +8 -11
- package/dist/util/tokenStore/fileTokenStory.js +21 -15
- package/dist/util/tokenStore/firebaseTokenStory.js +1 -1
- package/dist/util/tokenStore/model/token.js +7 -5
- package/dist/util/tokenStore/mongodbTokenStory.js +18 -11
- package/dist/util/tokenStore/redisTokenStory.js +39 -19
- package/dist/util/tokenStore/types.js +2 -0
- package/package.json +50 -28
- package/tsconfig.json +105 -0
- package/types.d.ts +2 -0
- package/dist/config/upload.js.map +0 -1
- package/dist/config.json +0 -77
- package/dist/controller/catalogController.js.map +0 -1
- package/dist/controller/deviceController.js.map +0 -1
- package/dist/controller/encryptController.js.map +0 -1
- package/dist/controller/groupController.js.map +0 -1
- package/dist/controller/labelsController.js.map +0 -1
- package/dist/controller/messageController.js.map +0 -1
- package/dist/controller/orderController.js.map +0 -1
- package/dist/controller/sessionController.js.map +0 -1
- package/dist/controller/statusController.js.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/mapper/index.js.map +0 -1
- package/dist/mapper/tagone-chat.js.map +0 -1
- package/dist/mapper/tagone-device.js.map +0 -1
- package/dist/mapper/tagone-message-document.js.map +0 -1
- package/dist/mapper/tagone-message-image.js.map +0 -1
- package/dist/mapper/tagone-message-location.js.map +0 -1
- package/dist/mapper/tagone-message-video.js.map +0 -1
- package/dist/mapper/tagone-message.js.map +0 -1
- package/dist/mapper/tagone-onack.js.map +0 -1
- package/dist/mapper/tagone-return.js.map +0 -1
- package/dist/middleware/auth.js.map +0 -1
- package/dist/middleware/healthCheck.js.map +0 -1
- package/dist/middleware/statusConnection.js.map +0 -1
- package/dist/routes/index.js.map +0 -1
- package/dist/server.js.map +0 -1
- package/dist/util/chatWootClient.js.map +0 -1
- package/dist/util/createSessionUtil.js.map +0 -1
- package/dist/util/db/mongodb/db.js.map +0 -1
- package/dist/util/db/redis/db.js.map +0 -1
- package/dist/util/functions.js.map +0 -1
- package/dist/util/getAllTokens.js.map +0 -1
- package/dist/util/logger.js.map +0 -1
- package/dist/util/sessionUtil.js.map +0 -1
- package/dist/util/tokenStore/factory.js.map +0 -1
- package/dist/util/tokenStore/fileTokenStory.js.map +0 -1
- package/dist/util/tokenStore/firebaseTokenStory.js.map +0 -1
- package/dist/util/tokenStore/model/token.js.map +0 -1
- package/dist/util/tokenStore/mongodbTokenStory.js.map +0 -1
- package/dist/util/tokenStore/redisTokenStory.js.map +0 -1
package/dist/util/functions.js
CHANGED
|
@@ -14,11 +14,15 @@
|
|
|
14
14
|
|
|
15
15
|
|
|
16
16
|
var _axios = _interopRequireDefault(require("axios"));
|
|
17
|
-
var
|
|
17
|
+
var _crypto = _interopRequireDefault(require("crypto"));
|
|
18
18
|
var _fs = _interopRequireDefault(require("fs"));
|
|
19
|
+
var _mimeTypes = _interopRequireDefault(require("mime-types"));
|
|
20
|
+
var _os = _interopRequireDefault(require("os"));
|
|
21
|
+
var _path = _interopRequireDefault(require("path"));
|
|
19
22
|
var _util = require("util");
|
|
20
|
-
|
|
21
|
-
var _config = _interopRequireDefault(require("../config
|
|
23
|
+
|
|
24
|
+
var _config = _interopRequireDefault(require("../config"));
|
|
25
|
+
var _index = require("../mapper/index");function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function (nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}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;} /*
|
|
22
26
|
* Copyright 2021 WPPConnect Team
|
|
23
27
|
*
|
|
24
28
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
@@ -32,11 +36,19 @@ var _config = _interopRequireDefault(require("../config.json")); /*
|
|
|
32
36
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
33
37
|
* See the License for the specific language governing permissions and
|
|
34
38
|
* limitations under the License.
|
|
35
|
-
*/let mime = _config.default.webhook.uploadS3 ?
|
|
39
|
+
*/let mime, crypto, aws;if (_config.default.webhook.uploadS3) {mime = _config.default.webhook.uploadS3 ? _mimeTypes.default : null;crypto = _config.default.webhook.uploadS3 ? _crypto.default : null;aws = _config.default.webhook.uploadS3 ? Promise.resolve().then(() => _interopRequireWildcard(require('aws-sdk'))) : null;}function contactToArray(number, isGroup) {const localArr = [];if (Array.isArray(number)) {for (let contact of number) {isGroup ?
|
|
40
|
+
contact = contact.split('@')[0] :
|
|
41
|
+
contact = contact.split('@')[0]?.replace(/[^\w ]/g, '');
|
|
42
|
+
if (contact !== '')
|
|
43
|
+
if (isGroup) localArr.push(`${contact}@g.us`);else
|
|
44
|
+
localArr.push(`${contact}@c.us`);
|
|
45
|
+
}
|
|
36
46
|
} else {
|
|
37
|
-
|
|
47
|
+
const arrContacts = number.split(/\s*[,;]\s*/g);
|
|
38
48
|
for (let contact of arrContacts) {
|
|
39
|
-
isGroup ?
|
|
49
|
+
isGroup ?
|
|
50
|
+
contact = contact.split('@')[0] :
|
|
51
|
+
contact = contact.split('@')[0]?.replace(/[^\w ]/g, '');
|
|
40
52
|
if (contact !== '')
|
|
41
53
|
if (isGroup) localArr.push(`${contact}@g.us`);else
|
|
42
54
|
localArr.push(`${contact}@c.us`);
|
|
@@ -47,14 +59,14 @@ var _config = _interopRequireDefault(require("../config.json")); /*
|
|
|
47
59
|
}
|
|
48
60
|
|
|
49
61
|
function groupToArray(group) {
|
|
50
|
-
|
|
62
|
+
const localArr = [];
|
|
51
63
|
if (Array.isArray(group)) {
|
|
52
64
|
for (let contact of group) {
|
|
53
65
|
contact = contact.split('@')[0];
|
|
54
66
|
if (contact !== '') localArr.push(`${contact}@g.us`);
|
|
55
67
|
}
|
|
56
68
|
} else {
|
|
57
|
-
|
|
69
|
+
const arrContacts = group.split(/\s*[,;]\s*/g);
|
|
58
70
|
for (let contact of arrContacts) {
|
|
59
71
|
contact = contact.split('@')[0];
|
|
60
72
|
if (contact !== '') localArr.push(`${contact}@g.us`);
|
|
@@ -65,13 +77,13 @@ function groupToArray(group) {
|
|
|
65
77
|
}
|
|
66
78
|
|
|
67
79
|
function groupNameToArray(group) {
|
|
68
|
-
|
|
80
|
+
const localArr = [];
|
|
69
81
|
if (Array.isArray(group)) {
|
|
70
82
|
for (const contact of group) {
|
|
71
83
|
if (contact !== '') localArr.push(`${contact}`);
|
|
72
84
|
}
|
|
73
85
|
} else {
|
|
74
|
-
|
|
86
|
+
const arrContacts = group.split(/\s*[,;]\s*/g);
|
|
75
87
|
for (const contact of arrContacts) {
|
|
76
88
|
if (contact !== '') localArr.push(`${contact}`);
|
|
77
89
|
}
|
|
@@ -80,20 +92,32 @@ function groupNameToArray(group) {
|
|
|
80
92
|
return localArr;
|
|
81
93
|
}
|
|
82
94
|
|
|
83
|
-
async function callWebHook(
|
|
84
|
-
|
|
95
|
+
async function callWebHook(
|
|
96
|
+
client,
|
|
97
|
+
req,
|
|
98
|
+
event,
|
|
99
|
+
data)
|
|
100
|
+
{
|
|
101
|
+
const webhook =
|
|
102
|
+
client?.config.webhook || req.serverOptions.webhook.url || false;
|
|
85
103
|
if (webhook) {
|
|
86
|
-
if (req.serverOptions.webhook.autoDownload)
|
|
104
|
+
if (req.serverOptions.webhook.autoDownload)
|
|
105
|
+
await autoDownload(client, req, data);
|
|
87
106
|
try {
|
|
88
|
-
const chatId =
|
|
107
|
+
const chatId =
|
|
108
|
+
data.from ||
|
|
109
|
+
data.chatId || (
|
|
110
|
+
data.chatId ? data.chatId._serialized : null);
|
|
89
111
|
data = Object.assign({ event: event, session: client.session }, data);
|
|
90
|
-
if (req.serverOptions.mapper.enable)
|
|
112
|
+
if (req.serverOptions.mapper.enable)
|
|
113
|
+
data = await (0, _index.convert)(req.serverOptions.mapper.prefix, data);
|
|
91
114
|
_axios.default.
|
|
92
115
|
post(webhook, data).
|
|
93
116
|
then(() => {
|
|
94
117
|
try {
|
|
95
118
|
const events = ['unreadmessages', 'onmessage'];
|
|
96
|
-
if (events.includes(event) && req.serverOptions.webhook.readMessage)
|
|
119
|
+
if (events.includes(event) && req.serverOptions.webhook.readMessage)
|
|
120
|
+
client.sendSeen(chatId);
|
|
97
121
|
} catch (e) {}
|
|
98
122
|
}).
|
|
99
123
|
catch((e) => {
|
|
@@ -108,14 +132,14 @@ async function callWebHook(client, req, event, data) {
|
|
|
108
132
|
async function autoDownload(client, req, message) {
|
|
109
133
|
try {
|
|
110
134
|
if (message && (message['mimetype'] || message.isMedia || message.isMMS)) {
|
|
111
|
-
|
|
135
|
+
const buffer = await client.decryptFile(message);
|
|
112
136
|
if (req.serverOptions.webhook.uploadS3) {
|
|
113
|
-
|
|
114
|
-
|
|
137
|
+
const hashName = crypto.randomBytes(24).toString('hex');
|
|
138
|
+
const fileName = `${hashName}.${mime.extension(message.mimetype)}`;
|
|
115
139
|
|
|
116
140
|
const s3 = new aws.S3();
|
|
117
141
|
|
|
118
|
-
|
|
142
|
+
const params = {
|
|
119
143
|
Bucket: client.session,
|
|
120
144
|
Key: fileName,
|
|
121
145
|
Body: buffer,
|
|
@@ -135,7 +159,9 @@ async function autoDownload(client, req, message) {
|
|
|
135
159
|
|
|
136
160
|
async function startAllSessions(config, logger) {
|
|
137
161
|
try {
|
|
138
|
-
await _axios.default.post(
|
|
162
|
+
await _axios.default.post(
|
|
163
|
+
`${config.host}:${config.port}/api/${config.secretKey}/start-all`);
|
|
164
|
+
|
|
139
165
|
} catch (e) {
|
|
140
166
|
logger.error(e);
|
|
141
167
|
}
|
|
@@ -180,11 +206,16 @@ async function archive(client, req) {
|
|
|
180
206
|
}
|
|
181
207
|
if (chats && Array.isArray(chats) && chats.length > 0) {
|
|
182
208
|
for (let i = 0; i < chats.length; i++) {
|
|
183
|
-
|
|
209
|
+
const date = new Date(chats[i].t * 1000);
|
|
184
210
|
|
|
185
211
|
if (DaysBetween(date) > req.serverOptions.archive.daysToArchive) {
|
|
186
|
-
await client.archiveChat(
|
|
187
|
-
|
|
212
|
+
await client.archiveChat(
|
|
213
|
+
chats[i].id.id || chats[i].id._serialized,
|
|
214
|
+
true);
|
|
215
|
+
|
|
216
|
+
await sleep(
|
|
217
|
+
Math.floor(Math.random() * req.serverOptions.archive.waitTime + 1));
|
|
218
|
+
|
|
188
219
|
}
|
|
189
220
|
}
|
|
190
221
|
}
|
|
@@ -195,13 +226,21 @@ async function archive(client, req) {
|
|
|
195
226
|
}
|
|
196
227
|
|
|
197
228
|
function DaysBetween(StartDate) {
|
|
198
|
-
|
|
229
|
+
const endDate = new Date();
|
|
199
230
|
// The number of milliseconds in all UTC days (no DST)
|
|
200
231
|
const oneDay = 1000 * 60 * 60 * 24;
|
|
201
232
|
|
|
202
233
|
// A day in UTC always lasts 24 hours (unlike in other time formats)
|
|
203
|
-
const start = Date.UTC(
|
|
204
|
-
|
|
234
|
+
const start = Date.UTC(
|
|
235
|
+
endDate.getFullYear(),
|
|
236
|
+
endDate.getMonth(),
|
|
237
|
+
endDate.getDate());
|
|
238
|
+
|
|
239
|
+
const end = Date.UTC(
|
|
240
|
+
StartDate.getFullYear(),
|
|
241
|
+
StartDate.getMonth(),
|
|
242
|
+
StartDate.getDate());
|
|
243
|
+
|
|
205
244
|
|
|
206
245
|
// so it's safe to divide by 24 hours
|
|
207
246
|
return (start - end) / oneDay;
|
|
@@ -209,12 +248,12 @@ function DaysBetween(StartDate) {
|
|
|
209
248
|
|
|
210
249
|
function createFolders() {
|
|
211
250
|
const __dirname = _path.default.resolve(_path.default.dirname(''));
|
|
212
|
-
|
|
251
|
+
const dirFiles = _path.default.resolve(__dirname, 'WhatsAppImages');
|
|
213
252
|
if (!_fs.default.existsSync(dirFiles)) {
|
|
214
253
|
_fs.default.mkdirSync(dirFiles);
|
|
215
254
|
}
|
|
216
255
|
|
|
217
|
-
|
|
256
|
+
const dirUpload = _path.default.resolve(__dirname, 'uploads');
|
|
218
257
|
if (!_fs.default.existsSync(dirUpload)) {
|
|
219
258
|
_fs.default.mkdirSync(dirUpload);
|
|
220
259
|
}
|
|
@@ -225,12 +264,17 @@ function strToBool(s) {
|
|
|
225
264
|
}
|
|
226
265
|
|
|
227
266
|
function getIPAddress() {
|
|
228
|
-
|
|
229
|
-
for (
|
|
230
|
-
|
|
231
|
-
for (
|
|
232
|
-
|
|
233
|
-
if (
|
|
267
|
+
const interfaces = _os.default.networkInterfaces();
|
|
268
|
+
for (const devName in interfaces) {
|
|
269
|
+
const iface = interfaces[devName];
|
|
270
|
+
for (let i = 0; i < iface.length; i++) {
|
|
271
|
+
const alias = iface[i];
|
|
272
|
+
if (
|
|
273
|
+
alias.family === 'IPv4' &&
|
|
274
|
+
alias.address !== '127.0.0.1' &&
|
|
275
|
+
!alias.internal)
|
|
276
|
+
|
|
277
|
+
return alias.address;
|
|
234
278
|
}
|
|
235
279
|
}
|
|
236
280
|
return '0.0.0.0';
|
|
@@ -242,10 +286,10 @@ function setMaxListners(serverOptions) {
|
|
|
242
286
|
}
|
|
243
287
|
}
|
|
244
288
|
|
|
245
|
-
|
|
289
|
+
const unlinkAsync = (0, _util.promisify)(_fs.default.unlink);exports.unlinkAsync = unlinkAsync;
|
|
246
290
|
|
|
247
291
|
function createCatalogLink(session) {
|
|
248
292
|
const [wid] = session.split('@');
|
|
249
293
|
return `https://wa.me/c/${wid}`;
|
|
250
294
|
}
|
|
251
|
-
//# sourceMappingURL=functions.js.map
|
|
295
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXhpb3MiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9jcnlwdG8iLCJfZnMiLCJfbWltZVR5cGVzIiwiX29zIiwiX3BhdGgiLCJfdXRpbCIsIl9jb25maWciLCJfaW5kZXgiLCJfZ2V0UmVxdWlyZVdpbGRjYXJkQ2FjaGUiLCJub2RlSW50ZXJvcCIsIldlYWtNYXAiLCJjYWNoZUJhYmVsSW50ZXJvcCIsImNhY2hlTm9kZUludGVyb3AiLCJfaW50ZXJvcFJlcXVpcmVXaWxkY2FyZCIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiY2FjaGUiLCJoYXMiLCJnZXQiLCJuZXdPYmoiLCJoYXNQcm9wZXJ0eURlc2NyaXB0b3IiLCJPYmplY3QiLCJkZWZpbmVQcm9wZXJ0eSIsImdldE93blByb3BlcnR5RGVzY3JpcHRvciIsImtleSIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsImRlc2MiLCJzZXQiLCJtaW1lIiwiY3J5cHRvIiwiYXdzIiwiY29uZmlnIiwid2ViaG9vayIsInVwbG9hZFMzIiwibWltZXR5cGVzIiwiQ3J5cHRvIiwiUHJvbWlzZSIsInJlc29sdmUiLCJ0aGVuIiwiY29udGFjdFRvQXJyYXkiLCJudW1iZXIiLCJpc0dyb3VwIiwibG9jYWxBcnIiLCJBcnJheSIsImlzQXJyYXkiLCJjb250YWN0Iiwic3BsaXQiLCJyZXBsYWNlIiwicHVzaCIsImFyckNvbnRhY3RzIiwiZ3JvdXBUb0FycmF5IiwiZ3JvdXAiLCJncm91cE5hbWVUb0FycmF5IiwiY2FsbFdlYkhvb2siLCJjbGllbnQiLCJyZXEiLCJldmVudCIsImRhdGEiLCJzZXJ2ZXJPcHRpb25zIiwidXJsIiwiYXV0b0Rvd25sb2FkIiwiY2hhdElkIiwiZnJvbSIsIl9zZXJpYWxpemVkIiwiYXNzaWduIiwic2Vzc2lvbiIsIm1hcHBlciIsImVuYWJsZSIsImNvbnZlcnQiLCJwcmVmaXgiLCJhcGkiLCJwb3N0IiwiZXZlbnRzIiwiaW5jbHVkZXMiLCJyZWFkTWVzc2FnZSIsInNlbmRTZWVuIiwiZSIsImNhdGNoIiwibG9nZ2VyIiwid2FybiIsImVycm9yIiwibWVzc2FnZSIsImlzTWVkaWEiLCJpc01NUyIsImJ1ZmZlciIsImRlY3J5cHRGaWxlIiwiaGFzaE5hbWUiLCJyYW5kb21CeXRlcyIsInRvU3RyaW5nIiwiZmlsZU5hbWUiLCJleHRlbnNpb24iLCJtaW1ldHlwZSIsInMzIiwiUzMiLCJwYXJhbXMiLCJCdWNrZXQiLCJLZXkiLCJCb2R5IiwiQUNMIiwiQ29udGVudFR5cGUiLCJ1cGxvYWQiLCJwcm9taXNlIiwiZmlsZVVybCIsIkxvY2F0aW9uIiwiYm9keSIsInN0YXJ0QWxsU2Vzc2lvbnMiLCJob3N0IiwicG9ydCIsInNlY3JldEtleSIsInN0YXJ0SGVscGVyIiwiYWxsVW5yZWFkT25TdGFydCIsInNlbmRVbnJlYWQiLCJhcmNoaXZlIiwiaW5mbyIsImNoYXRzIiwiZ2V0QWxsQ2hhdHNXaXRoTWVzc2FnZXMiLCJsZW5ndGgiLCJpIiwiaiIsIm1zZ3MiLCJleCIsInNsZWVwIiwidGltZSIsInNldFRpbWVvdXQiLCJnZXRBbGxDaGF0cyIsImZpbHRlciIsImMiLCJkYXRlIiwiRGF0ZSIsInQiLCJEYXlzQmV0d2VlbiIsImRheXNUb0FyY2hpdmUiLCJhcmNoaXZlQ2hhdCIsImlkIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwid2FpdFRpbWUiLCJTdGFydERhdGUiLCJlbmREYXRlIiwib25lRGF5Iiwic3RhcnQiLCJVVEMiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImVuZCIsImNyZWF0ZUZvbGRlcnMiLCJfX2Rpcm5hbWUiLCJwYXRoIiwiZGlybmFtZSIsImRpckZpbGVzIiwiZnMiLCJleGlzdHNTeW5jIiwibWtkaXJTeW5jIiwiZGlyVXBsb2FkIiwic3RyVG9Cb29sIiwicyIsInRlc3QiLCJnZXRJUEFkZHJlc3MiLCJpbnRlcmZhY2VzIiwib3MiLCJuZXR3b3JrSW50ZXJmYWNlcyIsImRldk5hbWUiLCJpZmFjZSIsImFsaWFzIiwiZmFtaWx5IiwiYWRkcmVzcyIsImludGVybmFsIiwic2V0TWF4TGlzdG5lcnMiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJtYXhMaXN0ZW5lcnMiLCJwcm9jZXNzIiwic2V0TWF4TGlzdGVuZXJzIiwidW5saW5rQXN5bmMiLCJwcm9taXNpZnkiLCJ1bmxpbmsiLCJleHBvcnRzIiwiY3JlYXRlQ2F0YWxvZ0xpbmsiLCJ3aWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9mdW5jdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIxIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IGFwaSBmcm9tICdheGlvcyc7XG5pbXBvcnQgQ3J5cHRvIGZyb20gJ2NyeXB0byc7XG5pbXBvcnQgZnMgZnJvbSAnZnMnO1xuaW1wb3J0IG1pbWV0eXBlcyBmcm9tICdtaW1lLXR5cGVzJztcbmltcG9ydCBvcyBmcm9tICdvcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnO1xuXG5pbXBvcnQgY29uZmlnIGZyb20gJy4uL2NvbmZpZyc7XG5pbXBvcnQgeyBjb252ZXJ0IH0gZnJvbSAnLi4vbWFwcGVyL2luZGV4JztcbmltcG9ydCB7IFNlcnZlck9wdGlvbnMgfSBmcm9tICcuLi90eXBlcy9TZXJ2ZXJPcHRpb25zJztcblxubGV0IG1pbWU6IGFueSwgY3J5cHRvOiBhbnksIGF3czogYW55O1xuaWYgKGNvbmZpZy53ZWJob29rLnVwbG9hZFMzKSB7XG4gIG1pbWUgPSBjb25maWcud2ViaG9vay51cGxvYWRTMyA/IG1pbWV0eXBlcyA6IG51bGw7XG4gIGNyeXB0byA9IGNvbmZpZy53ZWJob29rLnVwbG9hZFMzID8gQ3J5cHRvIDogbnVsbDtcbiAgYXdzID0gY29uZmlnLndlYmhvb2sudXBsb2FkUzMgPyBpbXBvcnQoJ2F3cy1zZGsnKSA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250YWN0VG9BcnJheShudW1iZXI6IGFueSwgaXNHcm91cD86IGJvb2xlYW4pIHtcbiAgY29uc3QgbG9jYWxBcnI6IGFueSA9IFtdO1xuICBpZiAoQXJyYXkuaXNBcnJheShudW1iZXIpKSB7XG4gICAgZm9yIChsZXQgY29udGFjdCBvZiBudW1iZXIpIHtcbiAgICAgIGlzR3JvdXBcbiAgICAgICAgPyAoY29udGFjdCA9IGNvbnRhY3Quc3BsaXQoJ0AnKVswXSlcbiAgICAgICAgOiAoY29udGFjdCA9IGNvbnRhY3Quc3BsaXQoJ0AnKVswXT8ucmVwbGFjZSgvW15cXHcgXS9nLCAnJykpO1xuICAgICAgaWYgKGNvbnRhY3QgIT09ICcnKVxuICAgICAgICBpZiAoaXNHcm91cCkgKGxvY2FsQXJyIGFzIGFueSkucHVzaChgJHtjb250YWN0fUBnLnVzYCk7XG4gICAgICAgIGVsc2UgKGxvY2FsQXJyIGFzIGFueSkucHVzaChgJHtjb250YWN0fUBjLnVzYCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGFyckNvbnRhY3RzID0gbnVtYmVyLnNwbGl0KC9cXHMqWyw7XVxccyovZyk7XG4gICAgZm9yIChsZXQgY29udGFjdCBvZiBhcnJDb250YWN0cykge1xuICAgICAgaXNHcm91cFxuICAgICAgICA/IChjb250YWN0ID0gY29udGFjdC5zcGxpdCgnQCcpWzBdKVxuICAgICAgICA6IChjb250YWN0ID0gY29udGFjdC5zcGxpdCgnQCcpWzBdPy5yZXBsYWNlKC9bXlxcdyBdL2csICcnKSk7XG4gICAgICBpZiAoY29udGFjdCAhPT0gJycpXG4gICAgICAgIGlmIChpc0dyb3VwKSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9QGcudXNgKTtcbiAgICAgICAgZWxzZSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9QGMudXNgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbG9jYWxBcnI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncm91cFRvQXJyYXkoZ3JvdXA6IGFueSkge1xuICBjb25zdCBsb2NhbEFycjogYW55ID0gW107XG4gIGlmIChBcnJheS5pc0FycmF5KGdyb3VwKSkge1xuICAgIGZvciAobGV0IGNvbnRhY3Qgb2YgZ3JvdXApIHtcbiAgICAgIGNvbnRhY3QgPSBjb250YWN0LnNwbGl0KCdAJylbMF07XG4gICAgICBpZiAoY29udGFjdCAhPT0gJycpIChsb2NhbEFyciBhcyBhbnkpLnB1c2goYCR7Y29udGFjdH1AZy51c2ApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBhcnJDb250YWN0cyA9IGdyb3VwLnNwbGl0KC9cXHMqWyw7XVxccyovZyk7XG4gICAgZm9yIChsZXQgY29udGFjdCBvZiBhcnJDb250YWN0cykge1xuICAgICAgY29udGFjdCA9IGNvbnRhY3Quc3BsaXQoJ0AnKVswXTtcbiAgICAgIGlmIChjb250YWN0ICE9PSAnJykgKGxvY2FsQXJyIGFzIGFueSkucHVzaChgJHtjb250YWN0fUBnLnVzYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxvY2FsQXJyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBOYW1lVG9BcnJheShncm91cDogYW55KSB7XG4gIGNvbnN0IGxvY2FsQXJyOiBhbnkgPSBbXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXApKSB7XG4gICAgZm9yIChjb25zdCBjb250YWN0IG9mIGdyb3VwKSB7XG4gICAgICBpZiAoY29udGFjdCAhPT0gJycpIChsb2NhbEFyciBhcyBhbnkpLnB1c2goYCR7Y29udGFjdH1gKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgYXJyQ29udGFjdHMgPSBncm91cC5zcGxpdCgvXFxzKlssO11cXHMqL2cpO1xuICAgIGZvciAoY29uc3QgY29udGFjdCBvZiBhcnJDb250YWN0cykge1xuICAgICAgaWYgKGNvbnRhY3QgIT09ICcnKSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxvY2FsQXJyO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2FsbFdlYkhvb2soXG4gIGNsaWVudDogYW55LFxuICByZXE6IGFueSxcbiAgZXZlbnQ6IGFueSxcbiAgZGF0YTogYW55XG4pIHtcbiAgY29uc3Qgd2ViaG9vayA9XG4gICAgY2xpZW50Py5jb25maWcud2ViaG9vayB8fCByZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLnVybCB8fCBmYWxzZTtcbiAgaWYgKHdlYmhvb2spIHtcbiAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5hdXRvRG93bmxvYWQpXG4gICAgICBhd2FpdCBhdXRvRG93bmxvYWQoY2xpZW50LCByZXEsIGRhdGEpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCBjaGF0SWQgPVxuICAgICAgICBkYXRhLmZyb20gfHxcbiAgICAgICAgZGF0YS5jaGF0SWQgfHxcbiAgICAgICAgKGRhdGEuY2hhdElkID8gZGF0YS5jaGF0SWQuX3NlcmlhbGl6ZWQgOiBudWxsKTtcbiAgICAgIGRhdGEgPSBPYmplY3QuYXNzaWduKHsgZXZlbnQ6IGV2ZW50LCBzZXNzaW9uOiBjbGllbnQuc2Vzc2lvbiB9LCBkYXRhKTtcbiAgICAgIGlmIChyZXEuc2VydmVyT3B0aW9ucy5tYXBwZXIuZW5hYmxlKVxuICAgICAgICBkYXRhID0gYXdhaXQgY29udmVydChyZXEuc2VydmVyT3B0aW9ucy5tYXBwZXIucHJlZml4LCBkYXRhKTtcbiAgICAgIGFwaVxuICAgICAgICAucG9zdCh3ZWJob29rLCBkYXRhKVxuICAgICAgICAudGhlbigoKSA9PiB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IGV2ZW50cyA9IFsndW5yZWFkbWVzc2FnZXMnLCAnb25tZXNzYWdlJ107XG4gICAgICAgICAgICBpZiAoZXZlbnRzLmluY2x1ZGVzKGV2ZW50KSAmJiByZXEuc2VydmVyT3B0aW9ucy53ZWJob29rLnJlYWRNZXNzYWdlKVxuICAgICAgICAgICAgICBjbGllbnQuc2VuZFNlZW4oY2hhdElkKTtcbiAgICAgICAgICB9IGNhdGNoIChlKSB7fVxuICAgICAgICB9KVxuICAgICAgICAuY2F0Y2goKGUpID0+IHtcbiAgICAgICAgICByZXEubG9nZ2VyLndhcm4oJ0Vycm9yIGNhbGxpbmcgV2ViaG9vay4nLCBlKTtcbiAgICAgICAgfSk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVxLmxvZ2dlci5lcnJvcihlKTtcbiAgICB9XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gYXV0b0Rvd25sb2FkKGNsaWVudDogYW55LCByZXE6IGFueSwgbWVzc2FnZTogYW55KSB7XG4gIHRyeSB7XG4gICAgaWYgKG1lc3NhZ2UgJiYgKG1lc3NhZ2VbJ21pbWV0eXBlJ10gfHwgbWVzc2FnZS5pc01lZGlhIHx8IG1lc3NhZ2UuaXNNTVMpKSB7XG4gICAgICBjb25zdCBidWZmZXIgPSBhd2FpdCBjbGllbnQuZGVjcnlwdEZpbGUobWVzc2FnZSk7XG4gICAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay51cGxvYWRTMykge1xuICAgICAgICBjb25zdCBoYXNoTmFtZSA9IGNyeXB0by5yYW5kb21CeXRlcygyNCkudG9TdHJpbmcoJ2hleCcpO1xuICAgICAgICBjb25zdCBmaWxlTmFtZSA9IGAke2hhc2hOYW1lfS4ke21pbWUuZXh0ZW5zaW9uKG1lc3NhZ2UubWltZXR5cGUpfWA7XG5cbiAgICAgICAgY29uc3QgczMgPSBuZXcgYXdzLlMzKCk7XG5cbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgIEJ1Y2tldDogY2xpZW50LnNlc3Npb24sXG4gICAgICAgICAgS2V5OiBmaWxlTmFtZSxcbiAgICAgICAgICBCb2R5OiBidWZmZXIsXG4gICAgICAgICAgQUNMOiAncHVibGljLXJlYWQnLFxuICAgICAgICAgIENvbnRlbnRUeXBlOiBtZXNzYWdlLm1pbWV0eXBlLFxuICAgICAgICB9O1xuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgczMudXBsb2FkKHBhcmFtcykucHJvbWlzZSgpO1xuICAgICAgICBtZXNzYWdlLmZpbGVVcmwgPSBkYXRhLkxvY2F0aW9uO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgbWVzc2FnZS5ib2R5ID0gYXdhaXQgYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgIH1cbiAgICB9XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGUpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydEFsbFNlc3Npb25zKGNvbmZpZzogYW55LCBsb2dnZXI6IGFueSkge1xuICB0cnkge1xuICAgIGF3YWl0IGFwaS5wb3N0KFxuICAgICAgYCR7Y29uZmlnLmhvc3R9OiR7Y29uZmlnLnBvcnR9L2FwaS8ke2NvbmZpZy5zZWNyZXRLZXl9L3N0YXJ0LWFsbGBcbiAgICApO1xuICB9IGNhdGNoIChlKSB7XG4gICAgbG9nZ2VyLmVycm9yKGUpO1xuICB9XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBzdGFydEhlbHBlcihjbGllbnQ6IGFueSwgcmVxOiBhbnkpIHtcbiAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2suYWxsVW5yZWFkT25TdGFydCkgYXdhaXQgc2VuZFVucmVhZChjbGllbnQsIHJlcSk7XG5cbiAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLmFyY2hpdmUuZW5hYmxlKSBhd2FpdCBhcmNoaXZlKGNsaWVudCwgcmVxKTtcbn1cblxuYXN5bmMgZnVuY3Rpb24gc2VuZFVucmVhZChjbGllbnQ6IGFueSwgcmVxOiBhbnkpIHtcbiAgcmVxLmxvZ2dlci5pbmZvKGAke2NsaWVudC5zZXNzaW9ufSA6IEluaWNpbyBlbnZpYXIgbWVuc2FnZW5zIG7Do28gbGlkYXNgKTtcblxuICB0cnkge1xuICAgIGNvbnN0IGNoYXRzID0gYXdhaXQgY2xpZW50LmdldEFsbENoYXRzV2l0aE1lc3NhZ2VzKHRydWUpO1xuXG4gICAgaWYgKGNoYXRzICYmIGNoYXRzLmxlbmd0aCA+IDApIHtcbiAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgY2hhdHMubGVuZ3RoOyBpKyspXG4gICAgICAgIGZvciAobGV0IGogPSAwOyBqIDwgY2hhdHNbaV0ubXNncy5sZW5ndGg7IGorKykge1xuICAgICAgICAgIGNhbGxXZWJIb29rKGNsaWVudCwgcmVxLCAndW5yZWFkbWVzc2FnZXMnLCBjaGF0c1tpXS5tc2dzW2pdKTtcbiAgICAgICAgfVxuICAgIH1cblxuICAgIHJlcS5sb2dnZXIuaW5mbyhgJHtjbGllbnQuc2Vzc2lvbn0gOiBGaW0gZW52aWFyIG1lbnNhZ2VucyBuw6NvIGxpZGFzYCk7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihleCk7XG4gIH1cbn1cblxuYXN5bmMgZnVuY3Rpb24gYXJjaGl2ZShjbGllbnQ6IGFueSwgcmVxOiBhbnkpIHtcbiAgYXN5bmMgZnVuY3Rpb24gc2xlZXAodGltZTogbnVtYmVyKSB7XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlKSA9PiBzZXRUaW1lb3V0KHJlc29sdmUsIHRpbWUgKiAxMCkpO1xuICB9XG5cbiAgcmVxLmxvZ2dlci5pbmZvKGAke2NsaWVudC5zZXNzaW9ufSA6IEluaWNpbyBhcnF1aXZhbmRvIGNoYXRzYCk7XG5cbiAgdHJ5IHtcbiAgICBsZXQgY2hhdHMgPSBhd2FpdCBjbGllbnQuZ2V0QWxsQ2hhdHMoKTtcbiAgICBpZiAoY2hhdHMgJiYgQXJyYXkuaXNBcnJheShjaGF0cykgJiYgY2hhdHMubGVuZ3RoID4gMCkge1xuICAgICAgY2hhdHMgPSBjaGF0cy5maWx0ZXIoKGMpID0+ICFjLmFyY2hpdmUpO1xuICAgIH1cbiAgICBpZiAoY2hhdHMgJiYgQXJyYXkuaXNBcnJheShjaGF0cykgJiYgY2hhdHMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGF0cy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCBkYXRlID0gbmV3IERhdGUoY2hhdHNbaV0udCAqIDEwMDApO1xuXG4gICAgICAgIGlmIChEYXlzQmV0d2VlbihkYXRlKSA+IHJlcS5zZXJ2ZXJPcHRpb25zLmFyY2hpdmUuZGF5c1RvQXJjaGl2ZSkge1xuICAgICAgICAgIGF3YWl0IGNsaWVudC5hcmNoaXZlQ2hhdChcbiAgICAgICAgICAgIGNoYXRzW2ldLmlkLmlkIHx8IGNoYXRzW2ldLmlkLl9zZXJpYWxpemVkLFxuICAgICAgICAgICAgdHJ1ZVxuICAgICAgICAgICk7XG4gICAgICAgICAgYXdhaXQgc2xlZXAoXG4gICAgICAgICAgICBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiByZXEuc2VydmVyT3B0aW9ucy5hcmNoaXZlLndhaXRUaW1lICsgMSlcbiAgICAgICAgICApO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICAgIHJlcS5sb2dnZXIuaW5mbyhgJHtjbGllbnQuc2Vzc2lvbn0gOiBGaW0gYXJxdWl2YW5kbyBjaGF0c2ApO1xuICB9IGNhdGNoIChleCkge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZXgpO1xuICB9XG59XG5cbmZ1bmN0aW9uIERheXNCZXR3ZWVuKFN0YXJ0RGF0ZTogRGF0ZSkge1xuICBjb25zdCBlbmREYXRlID0gbmV3IERhdGUoKTtcbiAgLy8gVGhlIG51bWJlciBvZiBtaWxsaXNlY29uZHMgaW4gYWxsIFVUQyBkYXlzIChubyBEU1QpXG4gIGNvbnN0IG9uZURheSA9IDEwMDAgKiA2MCAqIDYwICogMjQ7XG5cbiAgLy8gQSBkYXkgaW4gVVRDIGFsd2F5cyBsYXN0cyAyNCBob3VycyAodW5saWtlIGluIG90aGVyIHRpbWUgZm9ybWF0cylcbiAgY29uc3Qgc3RhcnQgPSBEYXRlLlVUQyhcbiAgICBlbmREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgZW5kRGF0ZS5nZXRNb250aCgpLFxuICAgIGVuZERhdGUuZ2V0RGF0ZSgpXG4gICk7XG4gIGNvbnN0IGVuZCA9IERhdGUuVVRDKFxuICAgIFN0YXJ0RGF0ZS5nZXRGdWxsWWVhcigpLFxuICAgIFN0YXJ0RGF0ZS5nZXRNb250aCgpLFxuICAgIFN0YXJ0RGF0ZS5nZXREYXRlKClcbiAgKTtcblxuICAvLyBzbyBpdCdzIHNhZmUgdG8gZGl2aWRlIGJ5IDI0IGhvdXJzXG4gIHJldHVybiAoc3RhcnQgLSBlbmQpIC8gb25lRGF5O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRm9sZGVycygpIHtcbiAgY29uc3QgX19kaXJuYW1lID0gcGF0aC5yZXNvbHZlKHBhdGguZGlybmFtZSgnJykpO1xuICBjb25zdCBkaXJGaWxlcyA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICdXaGF0c0FwcEltYWdlcycpO1xuICBpZiAoIWZzLmV4aXN0c1N5bmMoZGlyRmlsZXMpKSB7XG4gICAgZnMubWtkaXJTeW5jKGRpckZpbGVzKTtcbiAgfVxuXG4gIGNvbnN0IGRpclVwbG9hZCA9IHBhdGgucmVzb2x2ZShfX2Rpcm5hbWUsICd1cGxvYWRzJyk7XG4gIGlmICghZnMuZXhpc3RzU3luYyhkaXJVcGxvYWQpKSB7XG4gICAgZnMubWtkaXJTeW5jKGRpclVwbG9hZCk7XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIHN0clRvQm9vbChzOiBzdHJpbmcpIHtcbiAgcmV0dXJuIC9eKHRydWV8MSkkL2kudGVzdChzKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldElQQWRkcmVzcygpIHtcbiAgY29uc3QgaW50ZXJmYWNlcyA9IG9zLm5ldHdvcmtJbnRlcmZhY2VzKCk7XG4gIGZvciAoY29uc3QgZGV2TmFtZSBpbiBpbnRlcmZhY2VzKSB7XG4gICAgY29uc3QgaWZhY2U6IGFueSA9IGludGVyZmFjZXNbZGV2TmFtZV07XG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCBpZmFjZS5sZW5ndGg7IGkrKykge1xuICAgICAgY29uc3QgYWxpYXMgPSBpZmFjZVtpXTtcbiAgICAgIGlmIChcbiAgICAgICAgYWxpYXMuZmFtaWx5ID09PSAnSVB2NCcgJiZcbiAgICAgICAgYWxpYXMuYWRkcmVzcyAhPT0gJzEyNy4wLjAuMScgJiZcbiAgICAgICAgIWFsaWFzLmludGVybmFsXG4gICAgICApXG4gICAgICAgIHJldHVybiBhbGlhcy5hZGRyZXNzO1xuICAgIH1cbiAgfVxuICByZXR1cm4gJzAuMC4wLjAnO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gc2V0TWF4TGlzdG5lcnMoc2VydmVyT3B0aW9uczogU2VydmVyT3B0aW9ucykge1xuICBpZiAoc2VydmVyT3B0aW9ucyAmJiBOdW1iZXIuaXNJbnRlZ2VyKHNlcnZlck9wdGlvbnMubWF4TGlzdGVuZXJzKSkge1xuICAgIHByb2Nlc3Muc2V0TWF4TGlzdGVuZXJzKHNlcnZlck9wdGlvbnMubWF4TGlzdGVuZXJzKTtcbiAgfVxufVxuXG5leHBvcnQgY29uc3QgdW5saW5rQXN5bmMgPSBwcm9taXNpZnkoZnMudW5saW5rKTtcblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZUNhdGFsb2dMaW5rKHNlc3Npb246IGFueSkge1xuICBjb25zdCBbd2lkXSA9IHNlc3Npb24uc3BsaXQoJ0AnKTtcbiAgcmV0dXJuIGBodHRwczovL3dhLm1lL2MvJHt3aWR9YDtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsT0FBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsR0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsVUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksR0FBQSxHQUFBTCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUssS0FBQSxHQUFBTixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQU0sS0FBQSxHQUFBTixPQUFBOztBQUVBLElBQUFPLE9BQUEsR0FBQVIsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFRLE1BQUEsR0FBQVIsT0FBQSxvQkFBMEMsU0FBQVMseUJBQUFDLFdBQUEsY0FBQUMsT0FBQSxpQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxPQUFBRSxnQkFBQSxPQUFBRixPQUFBLFdBQUFGLHdCQUFBLFlBQUFBLENBQUFDLFdBQUEsVUFBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxJQUFBRixXQUFBLFlBQUFJLHdCQUFBQyxHQUFBLEVBQUFMLFdBQUEsUUFBQUEsV0FBQSxJQUFBSyxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxVQUFBRCxHQUFBLE1BQUFBLEdBQUEsb0JBQUFBLEdBQUEsd0JBQUFBLEdBQUEsMkJBQUFFLE9BQUEsRUFBQUYsR0FBQSxRQUFBRyxLQUFBLEdBQUFULHdCQUFBLENBQUFDLFdBQUEsTUFBQVEsS0FBQSxJQUFBQSxLQUFBLENBQUFDLEdBQUEsQ0FBQUosR0FBQSxXQUFBRyxLQUFBLENBQUFFLEdBQUEsQ0FBQUwsR0FBQSxPQUFBTSxNQUFBLFVBQUFDLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJ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
|
|
@@ -28,4 +28,4 @@ var _factory = _interopRequireDefault(require("./tokenStore/factory")); /*
|
|
|
28
28
|
* See the License for the specific language governing permissions and
|
|
29
29
|
* limitations under the License.
|
|
30
30
|
*/async function getAllTokens(req) {const tokenStore = new _factory.default();const myTokenStore = tokenStore.createTokenStory(null);try {return await myTokenStore.listTokens();} catch (e) {req.logger.error(e);}}
|
|
31
|
-
//# sourceMappingURL=
|
|
31
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZmFjdG9yeSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwiZ2V0QWxsVG9rZW5zIiwicmVxIiwidG9rZW5TdG9yZSIsIkZhY3RvcnkiLCJteVRva2VuU3RvcmUiLCJjcmVhdGVUb2tlblN0b3J5IiwibGlzdFRva2VucyIsImUiLCJsb2dnZXIiLCJlcnJvciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2dldEFsbFRva2Vucy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjEgV1BQQ29ubmVjdCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgRmFjdG9yeSBmcm9tICcuL3Rva2VuU3RvcmUvZmFjdG9yeSc7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGdldEFsbFRva2VucyhyZXE6IGFueSkge1xuICBjb25zdCB0b2tlblN0b3JlID0gbmV3IEZhY3RvcnkoKTtcbiAgY29uc3QgbXlUb2tlblN0b3JlID0gdG9rZW5TdG9yZS5jcmVhdGVUb2tlblN0b3J5KG51bGwpO1xuICB0cnkge1xuICAgIHJldHVybiBhd2FpdCBteVRva2VuU3RvcmUubGlzdFRva2VucygpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihlKTtcbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFlQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUEsMEJBQTJDLENBZjNDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUdlLGVBQWVDLFlBQVlBLENBQUNDLEdBQVEsRUFBRSxDQUNuRCxNQUFNQyxVQUFVLEdBQUcsSUFBSUMsZ0JBQU8sRUFBRSxDQUNoQyxNQUFNQyxZQUFZLEdBQUdGLFVBQVUsQ0FBQ0csZ0JBQWdCLENBQUMsSUFBSSxDQUFDLENBQ3RELElBQUksQ0FDRixPQUFPLE1BQU1ELFlBQVksQ0FBQ0UsVUFBVSxFQUFFLENBQ3hDLENBQUMsQ0FBQyxPQUFPQyxDQUFDLEVBQUUsQ0FDVk4sR0FBRyxDQUFDTyxNQUFNLENBQUNDLEtBQUssQ0FBQ0YsQ0FBQyxDQUFDLENBQ3JCLENBQ0YifQ==
|
package/dist/util/logger.js
CHANGED
|
@@ -31,8 +31,7 @@ var _winston = _interopRequireDefault(require("winston")); /*
|
|
|
31
31
|
// Here winston.format.errors() just seem to work
|
|
32
32
|
// because there is no winston.format.simple()
|
|
33
33
|
const jsonLogFileFormat = _winston.default.format.combine(_winston.default.format.errors({ stack: true }), _winston.default.format.timestamp(), _winston.default.format.prettyPrint());function createLogger(options) {const log_level = options.level; // Create file loggers
|
|
34
|
-
const logger = _winston.default.createLogger({ level: 'debug', format: jsonLogFileFormat
|
|
35
|
-
|
|
34
|
+
const logger = _winston.default.createLogger({ level: 'debug', format: jsonLogFileFormat });
|
|
36
35
|
// When running locally, write everything to the console
|
|
37
36
|
// with proper stacktraces enabled
|
|
38
37
|
if (options.logger.indexOf('console') > -1) {
|
|
@@ -65,4 +64,4 @@ const jsonLogFileFormat = _winston.default.format.combine(_winston.default.forma
|
|
|
65
64
|
|
|
66
65
|
return logger;
|
|
67
66
|
}
|
|
68
|
-
//# sourceMappingURL=
|
|
67
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfd2luc3RvbiIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJyZXF1aXJlIiwianNvbkxvZ0ZpbGVGb3JtYXQiLCJ3aW5zdG9uIiwiZm9ybWF0IiwiY29tYmluZSIsImVycm9ycyIsInN0YWNrIiwidGltZXN0YW1wIiwicHJldHR5UHJpbnQiLCJjcmVhdGVMb2dnZXIiLCJvcHRpb25zIiwibG9nX2xldmVsIiwibGV2ZWwiLCJsb2dnZXIiLCJpbmRleE9mIiwiYWRkIiwidHJhbnNwb3J0cyIsIkNvbnNvbGUiLCJjb2xvcml6ZSIsInByaW50ZiIsIm1lc3NhZ2UiLCJGaWxlIiwiZmlsZW5hbWUiLCJtYXhzaXplIiwibWF4RmlsZXMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9sb2dnZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIxIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHdpbnN0b24gZnJvbSAnd2luc3Rvbic7XG5cbi8vIFVzZSBKU09OIGxvZ2dpbmcgZm9yIGxvZyBmaWxlc1xuLy8gSGVyZSB3aW5zdG9uLmZvcm1hdC5lcnJvcnMoKSBqdXN0IHNlZW0gdG8gd29ya1xuLy8gYmVjYXVzZSB0aGVyZSBpcyBubyB3aW5zdG9uLmZvcm1hdC5zaW1wbGUoKVxuY29uc3QganNvbkxvZ0ZpbGVGb3JtYXQgPSB3aW5zdG9uLmZvcm1hdC5jb21iaW5lKFxuICB3aW5zdG9uLmZvcm1hdC5lcnJvcnMoeyBzdGFjazogdHJ1ZSB9KSxcbiAgd2luc3Rvbi5mb3JtYXQudGltZXN0YW1wKCksXG4gIHdpbnN0b24uZm9ybWF0LnByZXR0eVByaW50KClcbik7XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVMb2dnZXIob3B0aW9uczogYW55KSB7XG4gIGNvbnN0IGxvZ19sZXZlbCA9IG9wdGlvbnMubGV2ZWw7XG4gIC8vIENyZWF0ZSBmaWxlIGxvZ2dlcnNcbiAgY29uc3QgbG9nZ2VyID0gd2luc3Rvbi5jcmVhdGVMb2dnZXIoe1xuICAgIGxldmVsOiAnZGVidWcnLFxuICAgIGZvcm1hdDoganNvbkxvZ0ZpbGVGb3JtYXQsXG4gIH0pO1xuXG4gIC8vIFdoZW4gcnVubmluZyBsb2NhbGx5LCB3cml0ZSBldmVyeXRoaW5nIHRvIHRoZSBjb25zb2xlXG4gIC8vIHdpdGggcHJvcGVyIHN0YWNrdHJhY2VzIGVuYWJsZWRcbiAgaWYgKG9wdGlvbnMubG9nZ2VyLmluZGV4T2YoJ2NvbnNvbGUnKSA+IC0xKSB7XG4gICAgbG9nZ2VyLmFkZChcbiAgICAgIG5ldyB3aW5zdG9uLnRyYW5zcG9ydHMuQ29uc29sZSh7XG4gICAgICAgIGZvcm1hdDogd2luc3Rvbi5mb3JtYXQuY29tYmluZShcbiAgICAgICAgICB3aW5zdG9uLmZvcm1hdC5lcnJvcnMoeyBzdGFjazogdHJ1ZSB9KSxcbiAgICAgICAgICB3aW5zdG9uLmZvcm1hdC5jb2xvcml6ZSgpLFxuICAgICAgICAgIHdpbnN0b24uZm9ybWF0LnByaW50ZigoeyBsZXZlbCwgbWVzc2FnZSwgdGltZXN0YW1wLCBzdGFjayB9KSA9PiB7XG4gICAgICAgICAgICBpZiAoc3RhY2spIHtcbiAgICAgICAgICAgICAgLy8gcHJpbnQgbG9nIHRyYWNlXG4gICAgICAgICAgICAgIHJldHVybiBgJHtsZXZlbH06ICR7dGltZXN0YW1wfSAke21lc3NhZ2V9IC0gJHtzdGFja31gO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmV0dXJuIGAke2xldmVsfTogJHt0aW1lc3RhbXB9ICR7bWVzc2FnZX1gO1xuICAgICAgICAgIH0pXG4gICAgICAgICksXG4gICAgICB9KVxuICAgICk7XG4gIH1cbiAgaWYgKG9wdGlvbnMubG9nZ2VyLmluZGV4T2YoJ2ZpbGUnKSA+IC0xKSB7XG4gICAgbG9nZ2VyLmFkZChcbiAgICAgIG5ldyB3aW5zdG9uLnRyYW5zcG9ydHMuRmlsZSh7XG4gICAgICAgIGZpbGVuYW1lOiAnLi9sb2cvYXBwLmxvZ2cnLFxuICAgICAgICBsZXZlbDogbG9nX2xldmVsLFxuICAgICAgICBtYXhzaXplOiAxMDQ4NTc2MCxcbiAgICAgICAgbWF4RmlsZXM6IDMsXG4gICAgICB9KVxuICAgICk7XG4gIH1cblxuICByZXR1cm4gbG9nZ2VyO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFlQSxJQUFBQSxRQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUEsYUFBOEIsQ0FmOUI7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLEdBZEEsQ0FpQkE7QUFDQTtBQUNBO0FBQ0EsTUFBTUMsaUJBQWlCLEdBQUdDLGdCQUFPLENBQUNDLE1BQU0sQ0FBQ0MsT0FBTyxDQUM5Q0YsZ0JBQU8sQ0FBQ0MsTUFBTSxDQUFDRSxNQUFNLENBQUMsRUFBRUMsS0FBSyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsRUFDdENKLGdCQUFPLENBQUNDLE1BQU0sQ0FBQ0ksU0FBUyxFQUFFLEVBQzFCTCxnQkFBTyxDQUFDQyxNQUFNLENBQUNLLFdBQVcsRUFBRSxDQUM3QixDQUVNLFNBQVNDLFlBQVlBLENBQUNDLE9BQVksRUFBRSxDQUN6QyxNQUFNQyxTQUFTLEdBQUdELE9BQU8sQ0FBQ0UsS0FBSyxDQUFDLENBQ2hDO0VBQ0EsTUFBTUMsTUFBTSxHQUFHWCxnQkFBTyxDQUFDTyxZQUFZLENBQUMsRUFDbENHLEtBQUssRUFBRSxPQUFPLEVBQ2RULE1BQU0sRUFBRUYsaUJBQWlCLENBQzNCLENBQUMsQ0FBQztFQUVGO0VBQ0E7RUFDQSxJQUFJUyxPQUFPLENBQUNHLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDLFNBQVMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQzFDRCxNQUFNLENBQUNFLEdBQUc7SUFDUixJQUFJYixnQkFBTyxDQUFDYyxVQUFVLENBQUNDLE9BQU8sQ0FBQztNQUM3QmQsTUFBTSxFQUFFRCxnQkFBTyxDQUFDQyxNQUFNLENBQUNDLE9BQU87TUFDNUJGLGdCQUFPLENBQUNDLE1BQU0sQ0FBQ0UsTUFBTSxDQUFDLEVBQUVDLEtBQUssRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO01BQ3RDSixnQkFBTyxDQUFDQyxNQUFNLENBQUNlLFFBQVEsRUFBRTtNQUN6QmhCLGdCQUFPLENBQUNDLE1BQU0sQ0FBQ2dCLE1BQU0sQ0FBQyxDQUFDLEVBQUVQLEtBQUssRUFBRVEsT0FBTyxFQUFFYixTQUFTLEVBQUVELEtBQUssQ0FBQyxDQUFDLEtBQUs7UUFDOUQsSUFBSUEsS0FBSyxFQUFFO1VBQ1Q7VUFDQSxPQUFRLEdBQUVNLEtBQU0sS0FBSUwsU0FBVSxJQUFHYSxPQUFRLE1BQUtkLEtBQU0sRUFBQztRQUN2RDtRQUNBLE9BQVEsR0FBRU0sS0FBTSxLQUFJTCxTQUFVLElBQUdhLE9BQVEsRUFBQztNQUM1QyxDQUFDLENBQUM7O0lBRU4sQ0FBQyxDQUFDLENBQ0g7O0VBQ0g7RUFDQSxJQUFJVixPQUFPLENBQUNHLE1BQU0sQ0FBQ0MsT0FBTyxDQUFDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFO0lBQ3ZDRCxNQUFNLENBQUNFLEdBQUc7SUFDUixJQUFJYixnQkFBTyxDQUFDYyxVQUFVLENBQUNLLElBQUksQ0FBQztNQUMxQkMsUUFBUSxFQUFFLGdCQUFnQjtNQUMxQlYsS0FBSyxFQUFFRCxTQUFTO01BQ2hCWSxPQUFPLEVBQUUsUUFBUTtNQUNqQkMsUUFBUSxFQUFFO0lBQ1osQ0FBQyxDQUFDLENBQ0g7O0VBQ0g7O0VBRUEsT0FBT1gsTUFBTTtBQUNmIn0=
|
package/dist/util/sessionUtil.js
CHANGED
|
@@ -27,7 +27,8 @@ var _events = require("events"); /*
|
|
|
27
27
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
28
28
|
* See the License for the specific language governing permissions and
|
|
29
29
|
* limitations under the License.
|
|
30
|
-
*/const chromiumArgs = ['--disable-web-security', '--no-sandbox', '--disable-web-security', '--aggressive-cache-discard', '--disable-cache', '--disable-application-cache', '--disable-offline-load-stale-cache', '--disk-cache-size=0', '--disable-background-networking', '--disable-default-apps', '--disable-extensions', '--disable-sync',
|
|
30
|
+
*/const chromiumArgs = ['--disable-web-security', '--no-sandbox', '--disable-web-security', '--aggressive-cache-discard', '--disable-cache', '--disable-application-cache', '--disable-offline-load-stale-cache', '--disk-cache-size=0', '--disable-background-networking', '--disable-default-apps', '--disable-extensions', '--disable-sync',
|
|
31
|
+
'--disable-translate',
|
|
31
32
|
'--hide-scrollbars',
|
|
32
33
|
'--metrics-recording-only',
|
|
33
34
|
'--mute-audio',
|
|
@@ -37,7 +38,7 @@ var _events = require("events"); /*
|
|
|
37
38
|
'--ignore-ssl-errors',
|
|
38
39
|
'--ignore-certificate-errors-spki-list'];exports.chromiumArgs = chromiumArgs;
|
|
39
40
|
|
|
40
|
-
|
|
41
|
-
|
|
41
|
+
const clientsArray = [];exports.clientsArray = clientsArray;
|
|
42
|
+
const sessions = [];exports.sessions = sessions;
|
|
42
43
|
const eventEmitter = new _events.EventEmitter();exports.eventEmitter = eventEmitter;
|
|
43
|
-
//# sourceMappingURL=
|
|
44
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXZlbnRzIiwicmVxdWlyZSIsImNocm9taXVtQXJncyIsImV4cG9ydHMiLCJjbGllbnRzQXJyYXkiLCJzZXNzaW9ucyIsImV2ZW50RW1pdHRlciIsIkV2ZW50RW1pdHRlciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3Nlc3Npb25VdGlsLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXG4gKiBDb3B5cmlnaHQgMjAyMSBXUFBDb25uZWN0IFRlYW1cbiAqXG4gKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgXCJMaWNlbnNlXCIpO1xuICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLlxuICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0XG4gKlxuICogICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMFxuICpcbiAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmVcbiAqIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuIFwiQVMgSVNcIiBCQVNJUyxcbiAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLlxuICogU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZFxuICogbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuXG4gKi9cbmltcG9ydCB7IEV2ZW50RW1pdHRlciB9IGZyb20gJ2V2ZW50cyc7XG5cbmV4cG9ydCBjb25zdCBjaHJvbWl1bUFyZ3MgPSBbXG4gICctLWRpc2FibGUtd2ViLXNlY3VyaXR5JyxcbiAgJy0tbm8tc2FuZGJveCcsXG4gICctLWRpc2FibGUtd2ViLXNlY3VyaXR5JyxcbiAgJy0tYWdncmVzc2l2ZS1jYWNoZS1kaXNjYXJkJyxcbiAgJy0tZGlzYWJsZS1jYWNoZScsXG4gICctLWRpc2FibGUtYXBwbGljYXRpb24tY2FjaGUnLFxuICAnLS1kaXNhYmxlLW9mZmxpbmUtbG9hZC1zdGFsZS1jYWNoZScsXG4gICctLWRpc2stY2FjaGUtc2l6ZT0wJyxcbiAgJy0tZGlzYWJsZS1iYWNrZ3JvdW5kLW5ldHdvcmtpbmcnLFxuICAnLS1kaXNhYmxlLWRlZmF1bHQtYXBwcycsXG4gICctLWRpc2FibGUtZXh0ZW5zaW9ucycsXG4gICctLWRpc2FibGUtc3luYycsXG4gICctLWRpc2FibGUtdHJhbnNsYXRlJyxcbiAgJy0taGlkZS1zY3JvbGxiYXJzJyxcbiAgJy0tbWV0cmljcy1yZWNvcmRpbmctb25seScsXG4gICctLW11dGUtYXVkaW8nLFxuICAnLS1uby1maXJzdC1ydW4nLFxuICAnLS1zYWZlYnJvd3NpbmctZGlzYWJsZS1hdXRvLXVwZGF0ZScsXG4gICctLWlnbm9yZS1jZXJ0aWZpY2F0ZS1lcnJvcnMnLFxuICAnLS1pZ25vcmUtc3NsLWVycm9ycycsXG4gICctLWlnbm9yZS1jZXJ0aWZpY2F0ZS1lcnJvcnMtc3BraS1saXN0Jyxcbl07XG5leHBvcnQgY29uc3QgY2xpZW50c0FycmF5ID0gW107XG5leHBvcnQgY29uc3Qgc2Vzc2lvbnMgPSBbXTtcbmV4cG9ydCBjb25zdCBldmVudEVtaXR0ZXIgPSBuZXcgRXZlbnRFbWl0dGVyKCk7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7OztBQWVBLElBQUFBLE9BQUEsR0FBQUMsT0FBQSxXQUFzQyxDQWZ0QztBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FHTyxNQUFNQyxZQUFZLEdBQUcsQ0FDMUIsd0JBQXdCLEVBQ3hCLGNBQWMsRUFDZCx3QkFBd0IsRUFDeEIsNEJBQTRCLEVBQzVCLGlCQUFpQixFQUNqQiw2QkFBNkIsRUFDN0Isb0NBQW9DLEVBQ3BDLHFCQUFxQixFQUNyQixpQ0FBaUMsRUFDakMsd0JBQXdCLEVBQ3hCLHNCQUFzQixFQUN0QixnQkFBZ0I7QUFDaEIscUJBQXFCO0FBQ3JCLG1CQUFtQjtBQUNuQiwwQkFBMEI7QUFDMUIsY0FBYztBQUNkLGdCQUFnQjtBQUNoQixvQ0FBb0M7QUFDcEMsNkJBQTZCO0FBQzdCLHFCQUFxQjtBQUNyQix1Q0FBdUMsQ0FDeEMsQ0FBQ0MsT0FBQSxDQUFBRCxZQUFBLEdBQUFBLFlBQUE7O0FBQ0ssTUFBTUUsWUFBWSxHQUFHLEVBQUUsQ0FBQ0QsT0FBQSxDQUFBQyxZQUFBLEdBQUFBLFlBQUE7QUFDeEIsTUFBTUMsUUFBUSxHQUFHLEVBQUUsQ0FBQ0YsT0FBQSxDQUFBRSxRQUFBLEdBQUFBLFFBQUE7QUFDcEIsTUFBTUMsWUFBWSxHQUFHLElBQUlDLG9CQUFZLEVBQUUsQ0FBQ0osT0FBQSxDQUFBRyxZQUFBLEdBQUFBLFlBQUEifQ==
|
|
@@ -0,0 +1,178 @@
|
|
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports, "__esModule", { value: true });exports.defaultFileTokenStoreOptions = exports.FileTokenStore = void 0;
|
|
2
|
+
|
|
3
|
+
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
var fs = _interopRequireWildcard(require("fs"));
|
|
19
|
+
var path = _interopRequireWildcard(require("path"));
|
|
20
|
+
var _sanitizeFilename = _interopRequireDefault(require("sanitize-filename"));
|
|
21
|
+
|
|
22
|
+
var _ = require("../../..");function _getRequireWildcardCache(nodeInterop) {if (typeof WeakMap !== "function") return null;var cacheBabelInterop = new WeakMap();var cacheNodeInterop = new WeakMap();return (_getRequireWildcardCache = function (nodeInterop) {return nodeInterop ? cacheNodeInterop : cacheBabelInterop;})(nodeInterop);}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;} /*
|
|
23
|
+
* This file is part of WPPConnect.
|
|
24
|
+
*
|
|
25
|
+
* WPPConnect is free software: you can redistribute it and/or modify
|
|
26
|
+
* it under the terms of the GNU Lesser General Public License as published by
|
|
27
|
+
* the Free Software Foundation, either version 3 of the License, or
|
|
28
|
+
* (at your option) any later version.
|
|
29
|
+
*
|
|
30
|
+
* WPPConnect is distributed in the hope that it will be useful,
|
|
31
|
+
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
32
|
+
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
33
|
+
* GNU Lesser General Public License for more details.
|
|
34
|
+
*
|
|
35
|
+
* You should have received a copy of the GNU Lesser General Public License
|
|
36
|
+
* along with WPPConnect. If not, see <https://www.gnu.org/licenses/>.
|
|
37
|
+
*/ /// <reference types="node" />
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
|
|
46
|
+
|
|
47
|
+
|
|
48
|
+
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
const defaultFileTokenStoreOptions = {
|
|
57
|
+
decodeFunction: JSON.parse,
|
|
58
|
+
encodeFunction: JSON.stringify,
|
|
59
|
+
encoding: 'utf8',
|
|
60
|
+
fileExtension: '.data.json',
|
|
61
|
+
path: './tokens'
|
|
62
|
+
};exports.defaultFileTokenStoreOptions = defaultFileTokenStoreOptions;
|
|
63
|
+
|
|
64
|
+
class FileTokenStore {
|
|
65
|
+
options;
|
|
66
|
+
|
|
67
|
+
constructor(options = {}) {
|
|
68
|
+
this.options = Object.assign(
|
|
69
|
+
{},
|
|
70
|
+
defaultFileTokenStoreOptions,
|
|
71
|
+
options);
|
|
72
|
+
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
/**
|
|
76
|
+
* Resolve the path of file
|
|
77
|
+
* @param sessionName Name of session
|
|
78
|
+
* @returns Full path of token file
|
|
79
|
+
*/
|
|
80
|
+
resolverPath(sessionName) {
|
|
81
|
+
const filename = (0, _sanitizeFilename.default)(sessionName) + this.options.fileExtension;
|
|
82
|
+
return path.resolve(process.cwd(), path.join(this.options.path, filename));
|
|
83
|
+
}
|
|
84
|
+
|
|
85
|
+
async getToken(
|
|
86
|
+
sessionName)
|
|
87
|
+
{
|
|
88
|
+
const filePath = this.resolverPath(sessionName);
|
|
89
|
+
|
|
90
|
+
if (!fs.existsSync(filePath)) {
|
|
91
|
+
return undefined;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
const text = await fs.promises.
|
|
95
|
+
readFile(filePath, {
|
|
96
|
+
encoding: this.options.encoding
|
|
97
|
+
}).
|
|
98
|
+
catch(() => null);
|
|
99
|
+
|
|
100
|
+
if (!text) {
|
|
101
|
+
return undefined;
|
|
102
|
+
}
|
|
103
|
+
|
|
104
|
+
try {
|
|
105
|
+
return this.options.decodeFunction(text);
|
|
106
|
+
} catch (error) {
|
|
107
|
+
_.logger.debug(error);
|
|
108
|
+
return undefined;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
|
|
112
|
+
async setToken(
|
|
113
|
+
sessionName,
|
|
114
|
+
tokenData)
|
|
115
|
+
{
|
|
116
|
+
if (!tokenData) {
|
|
117
|
+
return false;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
if (!fs.existsSync(this.options.path)) {
|
|
121
|
+
await fs.promises.mkdir(this.options.path, { recursive: true });
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
const filePath = this.resolverPath(sessionName);
|
|
125
|
+
|
|
126
|
+
try {
|
|
127
|
+
const text = this.options.encodeFunction(tokenData);
|
|
128
|
+
|
|
129
|
+
await fs.promises.writeFile(filePath, text, {
|
|
130
|
+
encoding: this.options.encoding
|
|
131
|
+
});
|
|
132
|
+
return true;
|
|
133
|
+
} catch (error) {
|
|
134
|
+
_.logger.debug(error);
|
|
135
|
+
return false;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
|
|
139
|
+
async removeToken(sessionName) {
|
|
140
|
+
const filePath = this.resolverPath(sessionName);
|
|
141
|
+
|
|
142
|
+
if (!fs.existsSync(filePath)) {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
try {
|
|
147
|
+
await fs.promises.unlink(filePath);
|
|
148
|
+
return true;
|
|
149
|
+
} catch (error) {
|
|
150
|
+
_.logger.debug(error);
|
|
151
|
+
return false;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
async listTokens() {
|
|
156
|
+
if (!fs.existsSync(this.options.path)) {
|
|
157
|
+
return [];
|
|
158
|
+
}
|
|
159
|
+
|
|
160
|
+
try {
|
|
161
|
+
let files = await fs.promises.readdir(this.options.path);
|
|
162
|
+
|
|
163
|
+
// Only sessions with same fileExtension
|
|
164
|
+
files = files.filter((file) => file.endsWith(this.options.fileExtension));
|
|
165
|
+
|
|
166
|
+
// Return name only
|
|
167
|
+
files = files.map((file) =>
|
|
168
|
+
path.basename(file, this.options.fileExtension));
|
|
169
|
+
|
|
170
|
+
|
|
171
|
+
return files;
|
|
172
|
+
} catch (error) {
|
|
173
|
+
_.logger.debug(error);
|
|
174
|
+
return [];
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}exports.FileTokenStore = FileTokenStore;
|
|
178
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmcyIsIl9pbnRlcm9wUmVxdWlyZVdpbGRjYXJkIiwicmVxdWlyZSIsInBhdGgiLCJfc2FuaXRpemVGaWxlbmFtZSIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJfIiwiX2dldFJlcXVpcmVXaWxkY2FyZENhY2hlIiwibm9kZUludGVyb3AiLCJXZWFrTWFwIiwiY2FjaGVCYWJlbEludGVyb3AiLCJjYWNoZU5vZGVJbnRlcm9wIiwib2JqIiwiX19lc01vZHVsZSIsImRlZmF1bHQiLCJjYWNoZSIsImhhcyIsImdldCIsIm5ld09iaiIsImhhc1Byb3BlcnR5RGVzY3JpcHRvciIsIk9iamVjdCIsImRlZmluZVByb3BlcnR5IiwiZ2V0T3duUHJvcGVydHlEZXNjcmlwdG9yIiwia2V5IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiZGVzYyIsInNldCIsImRlZmF1bHRGaWxlVG9rZW5TdG9yZU9wdGlvbnMiLCJkZWNvZGVGdW5jdGlvbiIsIkpTT04iLCJwYXJzZSIsImVuY29kZUZ1bmN0aW9uIiwic3RyaW5naWZ5IiwiZW5jb2RpbmciLCJmaWxlRXh0ZW5zaW9uIiwiZXhwb3J0cyIsIkZpbGVUb2tlblN0b3JlIiwib3B0aW9ucyIsImNvbnN0cnVjdG9yIiwiYXNzaWduIiwicmVzb2x2ZXJQYXRoIiwic2Vzc2lvbk5hbWUiLCJmaWxlbmFtZSIsInNhbml0aXplIiwicmVzb2x2ZSIsInByb2Nlc3MiLCJjd2QiLCJqb2luIiwiZ2V0VG9rZW4iLCJmaWxlUGF0aCIsImV4aXN0c1N5bmMiLCJ1bmRlZmluZWQiLCJ0ZXh0IiwicHJvbWlzZXMiLCJyZWFkRmlsZSIsImNhdGNoIiwiZXJyb3IiLCJsb2dnZXIiLCJkZWJ1ZyIsInNldFRva2VuIiwidG9rZW5EYXRhIiwibWtkaXIiLCJyZWN1cnNpdmUiLCJ3cml0ZUZpbGUiLCJyZW1vdmVUb2tlbiIsInVubGluayIsImxpc3RUb2tlbnMiLCJmaWxlcyIsInJlYWRkaXIiLCJmaWx0ZXIiLCJmaWxlIiwiZW5kc1dpdGgiLCJtYXAiLCJiYXNlbmFtZSJdLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy91dGlsL3Rva2VuU3RvcmUvRmlsZVRva2VuU3RvcmUvRmlsZVRva2VuU3RvcmUudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIFdQUENvbm5lY3QuXG4gKlxuICogV1BQQ29ubmVjdCBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxuICpcbiAqIFdQUENvbm5lY3QgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCxcbiAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mXG4gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlXG4gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy5cbiAqXG4gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2VcbiAqIGFsb25nIHdpdGggV1BQQ29ubmVjdC4gIElmIG5vdCwgc2VlIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uXG4gKi9cbi8vLyA8cmVmZXJlbmNlIHR5cGVzPVwibm9kZVwiIC8+XG5pbXBvcnQgKiBhcyBmcyBmcm9tICdmcyc7XG5pbXBvcnQgKiBhcyBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHNhbml0aXplIGZyb20gJ3Nhbml0aXplLWZpbGVuYW1lJztcblxuaW1wb3J0IHsgbG9nZ2VyIH0gZnJvbSAnLi4vLi4vLi4nO1xuaW1wb3J0IHsgU2Vzc2lvblRva2VuLCBUb2tlblN0b3JlIH0gZnJvbSAnLi4vdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIEZpbGVUb2tlblN0b3JlT3B0aW9ucyB7XG4gIC8qKlxuICAgKiBEZWNvZGUgZnVuY3Rpb24gdG8gcGFyc2UgdG9rZW4gZmlsZSAoRGVmYXVsdCBgSlNPTi5wYXJzZWApIHtAbGluayBkZWZhdWx0RmlsZVRva2VuU3RvcmVPcHRpb25zfVxuICAgKiBAZGVmYXVsdCBgSlNPTi5wYXJzZWBcbiAgICovXG4gIGRlY29kZUZ1bmN0aW9uOiAodGV4dDogc3RyaW5nKSA9PiBhbnk7XG5cbiAgLyoqXG4gICAqIEVuY29kZSBmdW5jdGlvbiB0byBzYXZlIHRva2VucyAoRGVmYXVsdCBgSlNPTi5zdHJpbmdpZnlgKVxuICAgKiBAZGVmYXVsdCBgSlNPTi5zdHJpbmdpZnlgXG4gICAqL1xuICBlbmNvZGVGdW5jdGlvbjogKGRhdGE6IGFueSkgPT4gc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBFbmNvZGluZyB1c2VkIHRvIHJlYWQgYW5kIHNhdmUgZmlsZXNcbiAgICogQGRlZmF1bHQgJ3V0ZjgnXG4gICAqL1xuICBlbmNvZGluZzogQnVmZmVyRW5jb2Rpbmc7XG5cbiAgLyoqXG4gICAqIEBkZWZhdWx0ICcuZGF0YS5qc29uJ1xuICAgKi9cbiAgZmlsZUV4dGVuc2lvbjogc3RyaW5nO1xuXG4gIC8qKlxuICAgKiBGb2xkZXIgcGF0aCB0byBzdG9yZSB0b2tlbnNcbiAgICogQGRlZmF1bHQgJy4vdG9rZW5zJ1xuICAgKi9cbiAgcGF0aDogc3RyaW5nO1xufVxuXG5leHBvcnQgY29uc3QgZGVmYXVsdEZpbGVUb2tlblN0b3JlT3B0aW9uczogRmlsZVRva2VuU3RvcmVPcHRpb25zID0ge1xuICBkZWNvZGVGdW5jdGlvbjogSlNPTi5wYXJzZSxcbiAgZW5jb2RlRnVuY3Rpb246IEpTT04uc3RyaW5naWZ5LFxuICBlbmNvZGluZzogJ3V0ZjgnLFxuICBmaWxlRXh0ZW5zaW9uOiAnLmRhdGEuanNvbicsXG4gIHBhdGg6ICcuL3Rva2VucycsXG59O1xuXG5leHBvcnQgY2xhc3MgRmlsZVRva2VuU3RvcmUgaW1wbGVtZW50cyBUb2tlblN0b3JlIHtcbiAgcHJvdGVjdGVkIG9wdGlvbnM6IEZpbGVUb2tlblN0b3JlT3B0aW9ucztcblxuICBjb25zdHJ1Y3RvcihvcHRpb25zOiBQYXJ0aWFsPEZpbGVUb2tlblN0b3JlT3B0aW9ucz4gPSB7fSkge1xuICAgIHRoaXMub3B0aW9ucyA9IE9iamVjdC5hc3NpZ24oXG4gICAgICB7fSxcbiAgICAgIGRlZmF1bHRGaWxlVG9rZW5TdG9yZU9wdGlvbnMsXG4gICAgICBvcHRpb25zXG4gICAgKSBhcyBGaWxlVG9rZW5TdG9yZU9wdGlvbnM7XG4gIH1cblxuICAvKipcbiAgICogUmVzb2x2ZSB0aGUgcGF0aCBvZiBmaWxlXG4gICAqIEBwYXJhbSBzZXNzaW9uTmFtZSBOYW1lIG9mIHNlc3Npb25cbiAgICogQHJldHVybnMgRnVsbCBwYXRoIG9mIHRva2VuIGZpbGVcbiAgICovXG4gIHByb3RlY3RlZCByZXNvbHZlclBhdGgoc2Vzc2lvbk5hbWU6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgZmlsZW5hbWUgPSBzYW5pdGl6ZShzZXNzaW9uTmFtZSkgKyB0aGlzLm9wdGlvbnMuZmlsZUV4dGVuc2lvbjtcbiAgICByZXR1cm4gcGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIHBhdGguam9pbih0aGlzLm9wdGlvbnMucGF0aCwgZmlsZW5hbWUpKTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBnZXRUb2tlbihcbiAgICBzZXNzaW9uTmFtZTogc3RyaW5nXG4gICk6IFByb21pc2U8U2Vzc2lvblRva2VuIHwgdW5kZWZpbmVkPiB7XG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLnJlc29sdmVyUGF0aChzZXNzaW9uTmFtZSk7XG5cbiAgICBpZiAoIWZzLmV4aXN0c1N5bmMoZmlsZVBhdGgpKSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIGNvbnN0IHRleHQgPSBhd2FpdCBmcy5wcm9taXNlc1xuICAgICAgLnJlYWRGaWxlKGZpbGVQYXRoLCB7XG4gICAgICAgIGVuY29kaW5nOiB0aGlzLm9wdGlvbnMuZW5jb2RpbmcsXG4gICAgICB9KVxuICAgICAgLmNhdGNoKCgpID0+IG51bGwpO1xuXG4gICAgaWYgKCF0ZXh0KSB7XG4gICAgICByZXR1cm4gdW5kZWZpbmVkO1xuICAgIH1cblxuICAgIHRyeSB7XG4gICAgICByZXR1cm4gdGhpcy5vcHRpb25zLmRlY29kZUZ1bmN0aW9uKHRleHQpO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIuZGVidWcoZXJyb3IpO1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBwdWJsaWMgYXN5bmMgc2V0VG9rZW4oXG4gICAgc2Vzc2lvbk5hbWU6IHN0cmluZyxcbiAgICB0b2tlbkRhdGE6IFNlc3Npb25Ub2tlbiB8IG51bGxcbiAgKTogUHJvbWlzZTxib29sZWFuPiB7XG4gICAgaWYgKCF0b2tlbkRhdGEpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5vcHRpb25zLnBhdGgpKSB7XG4gICAgICBhd2FpdCBmcy5wcm9taXNlcy5ta2Rpcih0aGlzLm9wdGlvbnMucGF0aCwgeyByZWN1cnNpdmU6IHRydWUgfSk7XG4gICAgfVxuXG4gICAgY29uc3QgZmlsZVBhdGggPSB0aGlzLnJlc29sdmVyUGF0aChzZXNzaW9uTmFtZSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgdGV4dCA9IHRoaXMub3B0aW9ucy5lbmNvZGVGdW5jdGlvbih0b2tlbkRhdGEpO1xuXG4gICAgICBhd2FpdCBmcy5wcm9taXNlcy53cml0ZUZpbGUoZmlsZVBhdGgsIHRleHQsIHtcbiAgICAgICAgZW5jb2Rpbmc6IHRoaXMub3B0aW9ucy5lbmNvZGluZyxcbiAgICAgIH0pO1xuICAgICAgcmV0dXJuIHRydWU7XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIGxvZ2dlci5kZWJ1ZyhlcnJvcik7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcHVibGljIGFzeW5jIHJlbW92ZVRva2VuKHNlc3Npb25OYW1lOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBmaWxlUGF0aCA9IHRoaXMucmVzb2x2ZXJQYXRoKHNlc3Npb25OYW1lKTtcblxuICAgIGlmICghZnMuZXhpc3RzU3luYyhmaWxlUGF0aCkpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG5cbiAgICB0cnkge1xuICAgICAgYXdhaXQgZnMucHJvbWlzZXMudW5saW5rKGZpbGVQYXRoKTtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICBsb2dnZXIuZGVidWcoZXJyb3IpO1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBsaXN0VG9rZW5zKCk6IFByb21pc2U8c3RyaW5nW10+IHtcbiAgICBpZiAoIWZzLmV4aXN0c1N5bmModGhpcy5vcHRpb25zLnBhdGgpKSB7XG4gICAgICByZXR1cm4gW107XG4gICAgfVxuXG4gICAgdHJ5IHtcbiAgICAgIGxldCBmaWxlcyA9IGF3YWl0IGZzLnByb21pc2VzLnJlYWRkaXIodGhpcy5vcHRpb25zLnBhdGgpO1xuXG4gICAgICAvLyBPbmx5IHNlc3Npb25zIHdpdGggc2FtZSBmaWxlRXh0ZW5zaW9uXG4gICAgICBmaWxlcyA9IGZpbGVzLmZpbHRlcigoZmlsZSkgPT4gZmlsZS5lbmRzV2l0aCh0aGlzLm9wdGlvbnMuZmlsZUV4dGVuc2lvbikpO1xuXG4gICAgICAvLyBSZXR1cm4gbmFtZSBvbmx5XG4gICAgICBmaWxlcyA9IGZpbGVzLm1hcCgoZmlsZSkgPT5cbiAgICAgICAgcGF0aC5iYXNlbmFtZShmaWxlLCB0aGlzLm9wdGlvbnMuZmlsZUV4dGVuc2lvbilcbiAgICAgICk7XG5cbiAgICAgIHJldHVybiBmaWxlcztcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgbG9nZ2VyLmRlYnVnKGVycm9yKTtcbiAgICAgIHJldHVybiBbXTtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFpQkEsSUFBQUEsRUFBQSxHQUFBQyx1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsSUFBQSxHQUFBRix1QkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsaUJBQUEsR0FBQUMsc0JBQUEsQ0FBQUgsT0FBQTs7QUFFQSxJQUFBSSxDQUFBLEdBQUFKLE9BQUEsYUFBa0MsU0FBQUsseUJBQUFDLFdBQUEsY0FBQUMsT0FBQSxpQ0FBQUMsaUJBQUEsT0FBQUQsT0FBQSxPQUFBRSxnQkFBQSxPQUFBRixPQUFBLFdBQUFGLHdCQUFBLFlBQUFBLENBQUFDLFdBQUEsVUFBQUEsV0FBQSxHQUFBRyxnQkFBQSxHQUFBRCxpQkFBQSxJQUFBRixXQUFBLFlBQUFQLHdCQUFBVyxHQUFBLEVBQUFKLFdBQUEsUUFBQUEsV0FBQSxJQUFBSSxHQUFBLElBQUFBLEdBQUEsQ0FBQUMsVUFBQSxVQUFBRCxHQUFBLE1BQUFBLEdBQUEsb0JBQUFBLEdBQUEsd0JBQUFBLEdBQUEsMkJBQUFFLE9BQUEsRUFBQUYsR0FBQSxRQUFBRyxLQUFBLEdBQUFSLHdCQUFBLENBQUFDLFdBQUEsTUFBQU8sS0FBQSxJQUFBQSxLQUFBLENBQUFDLEdBQUEsQ0FBQUosR0FBQSxXQUFBRyxLQUFBLENBQUFFLEdBQUEsQ0FBQUwsR0FBQSxPQUFBTSxNQUFBLFVBQUFDLHFCQUFBLEdBQUFDLE1BQUEsQ0FBQUMsY0FBQSxJQUFBRCxNQUFBLENBQUFFLHdCQUFBLFVBQUFDLEdBQUEsSUFBQVgsR0FBQSxP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
|
|
@@ -1,27 +1,24 @@
|
|
|
1
|
-
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");var _config = _interopRequireDefault(require("../../config
|
|
1
|
+
"use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;var _config = _interopRequireDefault(require("../../config"));
|
|
2
2
|
var _fileTokenStory = _interopRequireDefault(require("./fileTokenStory"));
|
|
3
3
|
var _mongodbTokenStory = _interopRequireDefault(require("./mongodbTokenStory"));
|
|
4
4
|
var _redisTokenStory = _interopRequireDefault(require("./redisTokenStory"));
|
|
5
|
-
var _firebaseTokenStory = _interopRequireDefault(require("./firebaseTokenStory"));
|
|
6
5
|
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
6
|
+
class Factory {
|
|
7
|
+
createTokenStory(client) {
|
|
8
|
+
let myTokenStore;
|
|
10
9
|
const type = _config.default.tokenStoreType;
|
|
11
10
|
|
|
12
11
|
if (type === 'mongodb') {
|
|
13
12
|
myTokenStore = new _mongodbTokenStory.default(client);
|
|
14
13
|
} else if (type === 'redis') {
|
|
15
14
|
myTokenStore = new _redisTokenStory.default(client);
|
|
16
|
-
} else if (type === 'firebase') {
|
|
17
|
-
myTokenStore = new _firebaseTokenStory.default();
|
|
18
15
|
} else {
|
|
19
16
|
myTokenStore = new _fileTokenStory.default(client);
|
|
20
17
|
}
|
|
21
18
|
|
|
22
19
|
return myTokenStore.tokenStore;
|
|
23
|
-
}
|
|
24
|
-
}
|
|
20
|
+
}
|
|
21
|
+
}var _default =
|
|
25
22
|
|
|
26
|
-
|
|
27
|
-
//# sourceMappingURL=
|
|
23
|
+
Factory;exports.default = _default;
|
|
24
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY29uZmlnIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfZmlsZVRva2VuU3RvcnkiLCJfbW9uZ29kYlRva2VuU3RvcnkiLCJfcmVkaXNUb2tlblN0b3J5IiwiRmFjdG9yeSIsImNyZWF0ZVRva2VuU3RvcnkiLCJjbGllbnQiLCJteVRva2VuU3RvcmUiLCJ0eXBlIiwiY29uZmlnIiwidG9rZW5TdG9yZVR5cGUiLCJNb25nb2RiVG9rZW5TdG9yZSIsIlJlZGlzVG9rZW5TdG9yZSIsIkZpbGVUb2tlblN0b3JlIiwidG9rZW5TdG9yZSIsIl9kZWZhdWx0IiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdXRpbC90b2tlblN0b3JlL2ZhY3RvcnkudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IGNvbmZpZyBmcm9tICcuLi8uLi9jb25maWcnO1xuaW1wb3J0IEZpbGVUb2tlblN0b3JlIGZyb20gJy4vZmlsZVRva2VuU3RvcnknO1xuaW1wb3J0IE1vbmdvZGJUb2tlblN0b3JlIGZyb20gJy4vbW9uZ29kYlRva2VuU3RvcnknO1xuaW1wb3J0IFJlZGlzVG9rZW5TdG9yZSBmcm9tICcuL3JlZGlzVG9rZW5TdG9yeSc7XG5cbmNsYXNzIEZhY3Rvcnkge1xuICBwdWJsaWMgY3JlYXRlVG9rZW5TdG9yeShjbGllbnQ6IGFueSkge1xuICAgIGxldCBteVRva2VuU3RvcmU7XG4gICAgY29uc3QgdHlwZSA9IGNvbmZpZy50b2tlblN0b3JlVHlwZTtcblxuICAgIGlmICh0eXBlID09PSAnbW9uZ29kYicpIHtcbiAgICAgIG15VG9rZW5TdG9yZSA9IG5ldyBNb25nb2RiVG9rZW5TdG9yZShjbGllbnQpO1xuICAgIH0gZWxzZSBpZiAodHlwZSA9PT0gJ3JlZGlzJykge1xuICAgICAgbXlUb2tlblN0b3JlID0gbmV3IFJlZGlzVG9rZW5TdG9yZShjbGllbnQpO1xuICAgIH0gZWxzZSB7XG4gICAgICBteVRva2VuU3RvcmUgPSBuZXcgRmlsZVRva2VuU3RvcmUoY2xpZW50KTtcbiAgICB9XG5cbiAgICByZXR1cm4gbXlUb2tlblN0b3JlLnRva2VuU3RvcmU7XG4gIH1cbn1cblxuZXhwb3J0IGRlZmF1bHQgRmFjdG9yeTtcbiJdLCJtYXBwaW5ncyI6InlMQUFBLElBQUFBLE9BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGVBQUEsR0FBQUYsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFFLGtCQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRyxnQkFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBOztBQUVBLE1BQU1JLE9BQU8sQ0FBQztFQUNMQyxnQkFBZ0JBLENBQUNDLE1BQVcsRUFBRTtJQUNuQyxJQUFJQyxZQUFZO0lBQ2hCLE1BQU1DLElBQUksR0FBR0MsZUFBTSxDQUFDQyxjQUFjOztJQUVsQyxJQUFJRixJQUFJLEtBQUssU0FBUyxFQUFFO01BQ3RCRCxZQUFZLEdBQUcsSUFBSUksMEJBQWlCLENBQUNMLE1BQU0sQ0FBQztJQUM5QyxDQUFDLE1BQU0sSUFBSUUsSUFBSSxLQUFLLE9BQU8sRUFBRTtNQUMzQkQsWUFBWSxHQUFHLElBQUlLLHdCQUFlLENBQUNOLE1BQU0sQ0FBQztJQUM1QyxDQUFDLE1BQU07TUFDTEMsWUFBWSxHQUFHLElBQUlNLHVCQUFjLENBQUNQLE1BQU0sQ0FBQztJQUMzQzs7SUFFQSxPQUFPQyxZQUFZLENBQUNPLFVBQVU7RUFDaEM7QUFDRixDQUFDLElBQUFDLFFBQUE7O0FBRWNYLE9BQU8sQ0FBQVksT0FBQSxDQUFBQyxPQUFBLEdBQUFGLFFBQUEifQ==
|