@wppconnect/server 2.2.3 → 2.2.5
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 +4 -0
- package/Dockerfile +3 -3
- package/README.md +18 -7
- package/dist/config.js +21 -4
- package/dist/controller/deviceController.js +5 -4
- package/dist/controller/groupController.js +9 -5
- package/dist/controller/messageController.js +16 -4
- package/dist/controller/sessionController.js +20 -35
- package/dist/index.js +8 -2
- package/dist/middleware/instrumentation.js +39 -0
- package/dist/routes/index.js +17 -8
- package/dist/swagger.json +135 -105
- package/dist/tests/util/bufferUtils.test.js +54 -0
- package/dist/types/ServerOptions.js +1 -1
- package/dist/util/bucketAlreadyExists.js +26 -0
- package/dist/util/bufferutils.js +50 -0
- package/dist/util/chatWootClient.js +124 -38
- package/dist/util/createSessionUtil.js +20 -7
- package/dist/util/functions.js +69 -19
- package/dist/util/sessionUtil.js +23 -22
- package/jest.config.js +5 -0
- package/package.json +47 -49
- package/tsconfig.json +6 -4
package/dist/util/functions.js
CHANGED
|
@@ -13,9 +13,15 @@
|
|
|
13
13
|
|
|
14
14
|
|
|
15
15
|
|
|
16
|
-
var
|
|
16
|
+
var _clientS = require("@aws-sdk/client-s3");
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
|
|
21
|
+
|
|
17
22
|
var _axios = _interopRequireDefault(require("axios"));
|
|
18
23
|
var _crypto = _interopRequireDefault(require("crypto"));
|
|
24
|
+
|
|
19
25
|
var _fs = _interopRequireDefault(require("fs"));
|
|
20
26
|
var _mimeTypes = _interopRequireDefault(require("mime-types"));
|
|
21
27
|
var _os = _interopRequireDefault(require("os"));
|
|
@@ -23,8 +29,10 @@ var _path = _interopRequireDefault(require("path"));
|
|
|
23
29
|
var _util = require("util");
|
|
24
30
|
|
|
25
31
|
var _config = _interopRequireDefault(require("../config"));
|
|
26
|
-
var _index = require("../mapper/index");
|
|
27
|
-
|
|
32
|
+
var _index = require("../mapper/index");
|
|
33
|
+
|
|
34
|
+
var _bucketAlreadyExists = require("./bucketAlreadyExists"); /*
|
|
35
|
+
* Copyright 2023 WPPConnect Team
|
|
28
36
|
*
|
|
29
37
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
|
30
38
|
* you may not use this file except in compliance with the License.
|
|
@@ -38,8 +46,7 @@ var _index = require("../mapper/index"); /*
|
|
|
38
46
|
* See the License for the specific language governing permissions and
|
|
39
47
|
* limitations under the License.
|
|
40
48
|
*/let mime, crypto; //, aws: any;
|
|
41
|
-
if (_config.default.webhook.uploadS3) {mime = _config.default.webhook.uploadS3 ? _mimeTypes.default : null;crypto = _config.default.webhook.uploadS3 ? _crypto.default : null;}function contactToArray(number, isGroup) {const localArr = [];if (Array.isArray(number)) {for (let contact of number) {isGroup ? contact = contact.split('@')[0] : contact = contact.split('@')[0]?.replace(/[^\w ]/g, '');
|
|
42
|
-
if (contact !== '')
|
|
49
|
+
if (_config.default.webhook.uploadS3) {mime = _config.default.webhook.uploadS3 ? _mimeTypes.default : null;crypto = _config.default.webhook.uploadS3 ? _crypto.default : null;}function contactToArray(number, isGroup) {const localArr = [];if (Array.isArray(number)) {for (let contact of number) {isGroup ? contact = contact.split('@')[0] : contact = contact.split('@')[0]?.replace(/[^\w ]/g, '');if (contact !== '')
|
|
43
50
|
if (isGroup) localArr.push(`${contact}@g.us`);else
|
|
44
51
|
localArr.push(`${contact}@c.us`);
|
|
45
52
|
}
|
|
@@ -136,23 +143,66 @@ async function autoDownload(client, req, message) {
|
|
|
136
143
|
if (req.serverOptions.webhook.uploadS3) {
|
|
137
144
|
const hashName = crypto.randomBytes(24).toString('hex');
|
|
138
145
|
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
_config.default
|
|
146
|
+
if (
|
|
147
|
+
!_config.default?.aws_s3?.region ||
|
|
148
|
+
!_config.default?.aws_s3?.access_key_id ||
|
|
149
|
+
!_config.default?.aws_s3?.secret_key)
|
|
150
|
+
|
|
151
|
+
throw new Error('Please, configure your aws configs');
|
|
152
|
+
const s3Client = new _clientS.S3Client({
|
|
153
|
+
region: _config.default?.aws_s3?.region,
|
|
154
|
+
endpoint: _config.default?.aws_s3?.endpoint || undefined,
|
|
155
|
+
forcePathStyle: _config.default?.aws_s3?.forcePathStyle || undefined
|
|
156
|
+
});
|
|
157
|
+
let bucketName = _config.default?.aws_s3?.defaultBucketName ?
|
|
158
|
+
_config.default?.aws_s3?.defaultBucketName :
|
|
142
159
|
client.session;
|
|
160
|
+
bucketName = bucketName.
|
|
161
|
+
normalize('NFD').
|
|
162
|
+
replace(/[\u0300-\u036f]|[— _.,?!]/g, '').
|
|
163
|
+
toLowerCase();
|
|
164
|
+
bucketName =
|
|
165
|
+
bucketName.length < 3 ?
|
|
166
|
+
bucketName +
|
|
167
|
+
`${Math.floor(Math.random() * (999 - 100 + 1)) + 100}` :
|
|
168
|
+
bucketName;
|
|
143
169
|
const fileName = `${
|
|
144
|
-
_config.default.
|
|
170
|
+
_config.default.aws_s3.defaultBucketName ? client.session + '/' : ''
|
|
145
171
|
}${hashName}.${mime.extension(message.mimetype)}`;
|
|
146
172
|
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
173
|
+
if (
|
|
174
|
+
!_config.default.aws_s3.defaultBucketName &&
|
|
175
|
+
!(await (0, _bucketAlreadyExists.bucketAlreadyExists)(bucketName)))
|
|
176
|
+
{
|
|
177
|
+
await s3Client.send(
|
|
178
|
+
new _clientS.CreateBucketCommand({
|
|
179
|
+
Bucket: bucketName,
|
|
180
|
+
ObjectOwnership: 'ObjectWriter'
|
|
181
|
+
})
|
|
182
|
+
);
|
|
183
|
+
await s3Client.send(
|
|
184
|
+
new _clientS.PutPublicAccessBlockCommand({
|
|
185
|
+
Bucket: bucketName,
|
|
186
|
+
PublicAccessBlockConfiguration: {
|
|
187
|
+
BlockPublicAcls: false,
|
|
188
|
+
IgnorePublicAcls: false,
|
|
189
|
+
BlockPublicPolicy: false
|
|
190
|
+
}
|
|
191
|
+
})
|
|
192
|
+
);
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
await s3Client.send(
|
|
196
|
+
new _clientS.PutObjectCommand({
|
|
197
|
+
Bucket: bucketName,
|
|
198
|
+
Key: fileName,
|
|
199
|
+
Body: buffer,
|
|
200
|
+
ContentType: message.mimetype,
|
|
201
|
+
ACL: 'public-read'
|
|
202
|
+
})
|
|
203
|
+
);
|
|
204
|
+
|
|
205
|
+
message.fileUrl = `https://${bucketName}.s3.amazonaws.com/${fileName}`;
|
|
156
206
|
} else {
|
|
157
207
|
message.body = await buffer.toString('base64');
|
|
158
208
|
}
|
|
@@ -297,4 +347,4 @@ function createCatalogLink(session) {
|
|
|
297
347
|
const [wid] = session.split('@');
|
|
298
348
|
return `https://wa.me/c/${wid}`;
|
|
299
349
|
}
|
|
300
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXdzU2RrIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfYXhpb3MiLCJfY3J5cHRvIiwiX2ZzIiwiX21pbWVUeXBlcyIsIl9vcyIsIl9wYXRoIiwiX3V0aWwiLCJfY29uZmlnIiwiX2luZGV4IiwibWltZSIsImNyeXB0byIsImNvbmZpZyIsIndlYmhvb2siLCJ1cGxvYWRTMyIsIm1pbWV0eXBlcyIsIkNyeXB0byIsImNvbnRhY3RUb0FycmF5IiwibnVtYmVyIiwiaXNHcm91cCIsImxvY2FsQXJyIiwiQXJyYXkiLCJpc0FycmF5IiwiY29udGFjdCIsInNwbGl0IiwicmVwbGFjZSIsInB1c2giLCJhcnJDb250YWN0cyIsImdyb3VwVG9BcnJheSIsImdyb3VwIiwiZ3JvdXBOYW1lVG9BcnJheSIsImNhbGxXZWJIb29rIiwiY2xpZW50IiwicmVxIiwiZXZlbnQiLCJkYXRhIiwic2VydmVyT3B0aW9ucyIsInVybCIsImF1dG9Eb3dubG9hZCIsImNoYXRJZCIsImZyb20iLCJfc2VyaWFsaXplZCIsIk9iamVjdCIsImFzc2lnbiIsInNlc3Npb24iLCJtYXBwZXIiLCJlbmFibGUiLCJjb252ZXJ0IiwicHJlZml4IiwiYXBpIiwicG9zdCIsInRoZW4iLCJldmVudHMiLCJpbmNsdWRlcyIsInJlYWRNZXNzYWdlIiwic2VuZFNlZW4iLCJlIiwiY2F0Y2giLCJsb2dnZXIiLCJ3YXJuIiwiZXJyb3IiLCJtZXNzYWdlIiwiaXNNZWRpYSIsImlzTU1TIiwiYnVmZmVyIiwiZGVjcnlwdEZpbGUiLCJoYXNoTmFtZSIsInJhbmRvbUJ5dGVzIiwidG9TdHJpbmciLCJzMyIsImF3cyIsIlMzIiwiYnVja2V0TmFtZSIsImF3c0J1Y2tldE5hbWUiLCJmaWxlTmFtZSIsImV4dGVuc2lvbiIsIm1pbWV0eXBlIiwicGFyYW1zIiwiQnVja2V0IiwiS2V5IiwiQm9keSIsIkFDTCIsIkNvbnRlbnRUeXBlIiwidXBsb2FkIiwicHJvbWlzZSIsImZpbGVVcmwiLCJMb2NhdGlvbiIsImJvZHkiLCJzdGFydEFsbFNlc3Npb25zIiwiaG9zdCIsInBvcnQiLCJzZWNyZXRLZXkiLCJzdGFydEhlbHBlciIsImFsbFVucmVhZE9uU3RhcnQiLCJzZW5kVW5yZWFkIiwiYXJjaGl2ZSIsImluZm8iLCJjaGF0cyIsImdldEFsbENoYXRzV2l0aE1lc3NhZ2VzIiwibGVuZ3RoIiwiaSIsImoiLCJtc2dzIiwiZXgiLCJzbGVlcCIsInRpbWUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJnZXRBbGxDaGF0cyIsImZpbHRlciIsImMiLCJkYXRlIiwiRGF0ZSIsInQiLCJEYXlzQmV0d2VlbiIsImRheXNUb0FyY2hpdmUiLCJhcmNoaXZlQ2hhdCIsImlkIiwiTWF0aCIsImZsb29yIiwicmFuZG9tIiwid2FpdFRpbWUiLCJTdGFydERhdGUiLCJlbmREYXRlIiwib25lRGF5Iiwic3RhcnQiLCJVVEMiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImVuZCIsImNyZWF0ZUZvbGRlcnMiLCJfX2Rpcm5hbWUiLCJwYXRoIiwiZGlybmFtZSIsImRpckZpbGVzIiwiZnMiLCJleGlzdHNTeW5jIiwibWtkaXJTeW5jIiwiZGlyVXBsb2FkIiwic3RyVG9Cb29sIiwicyIsInRlc3QiLCJnZXRJUEFkZHJlc3MiLCJpbnRlcmZhY2VzIiwib3MiLCJuZXR3b3JrSW50ZXJmYWNlcyIsImRldk5hbWUiLCJpZmFjZSIsImFsaWFzIiwiZmFtaWx5IiwiYWRkcmVzcyIsImludGVybmFsIiwic2V0TWF4TGlzdG5lcnMiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJtYXhMaXN0ZW5lcnMiLCJwcm9jZXNzIiwic2V0TWF4TGlzdGVuZXJzIiwidW5saW5rQXN5bmMiLCJwcm9taXNpZnkiLCJ1bmxpbmsiLCJleHBvcnRzIiwiY3JlYXRlQ2F0YWxvZ0xpbmsiLCJ3aWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9mdW5jdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIxIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IGF3cyBmcm9tICdhd3Mtc2RrJztcbmltcG9ydCBhcGkgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IENyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBtaW1ldHlwZXMgZnJvbSAnbWltZS10eXBlcyc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcblxuaW1wb3J0IGNvbmZpZyBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgY29udmVydCB9IGZyb20gJy4uL21hcHBlci9pbmRleCc7XG5pbXBvcnQgeyBTZXJ2ZXJPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvU2VydmVyT3B0aW9ucyc7XG5cbmxldCBtaW1lOiBhbnksIGNyeXB0bzogYW55OyAvLywgYXdzOiBhbnk7XG5pZiAoY29uZmlnLndlYmhvb2sudXBsb2FkUzMpIHtcbiAgbWltZSA9IGNvbmZpZy53ZWJob29rLnVwbG9hZFMzID8gbWltZXR5cGVzIDogbnVsbDtcbiAgY3J5cHRvID0gY29uZmlnLndlYmhvb2sudXBsb2FkUzMgPyBDcnlwdG8gOiBudWxsO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY29udGFjdFRvQXJyYXkobnVtYmVyOiBhbnksIGlzR3JvdXA/OiBib29sZWFuKSB7XG4gIGNvbnN0IGxvY2FsQXJyOiBhbnkgPSBbXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkobnVtYmVyKSkge1xuICAgIGZvciAobGV0IGNvbnRhY3Qgb2YgbnVtYmVyKSB7XG4gICAgICBpc0dyb3VwXG4gICAgICAgID8gKGNvbnRhY3QgPSBjb250YWN0LnNwbGl0KCdAJylbMF0pXG4gICAgICAgIDogKGNvbnRhY3QgPSBjb250YWN0LnNwbGl0KCdAJylbMF0/LnJlcGxhY2UoL1teXFx3IF0vZywgJycpKTtcbiAgICAgIGlmIChjb250YWN0ICE9PSAnJylcbiAgICAgICAgaWYgKGlzR3JvdXApIChsb2NhbEFyciBhcyBhbnkpLnB1c2goYCR7Y29udGFjdH1AZy51c2ApO1xuICAgICAgICBlbHNlIChsb2NhbEFyciBhcyBhbnkpLnB1c2goYCR7Y29udGFjdH1AYy51c2ApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBhcnJDb250YWN0cyA9IG51bWJlci5zcGxpdCgvXFxzKlssO11cXHMqL2cpO1xuICAgIGZvciAobGV0IGNvbnRhY3Qgb2YgYXJyQ29udGFjdHMpIHtcbiAgICAgIGlzR3JvdXBcbiAgICAgICAgPyAoY29udGFjdCA9IGNvbnRhY3Quc3BsaXQoJ0AnKVswXSlcbiAgICAgICAgOiAoY29udGFjdCA9IGNvbnRhY3Quc3BsaXQoJ0AnKVswXT8ucmVwbGFjZSgvW15cXHcgXS9nLCAnJykpO1xuICAgICAgaWYgKGNvbnRhY3QgIT09ICcnKVxuICAgICAgICBpZiAoaXNHcm91cCkgKGxvY2FsQXJyIGFzIGFueSkucHVzaChgJHtjb250YWN0fUBnLnVzYCk7XG4gICAgICAgIGVsc2UgKGxvY2FsQXJyIGFzIGFueSkucHVzaChgJHtjb250YWN0fUBjLnVzYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxvY2FsQXJyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBUb0FycmF5KGdyb3VwOiBhbnkpIHtcbiAgY29uc3QgbG9jYWxBcnI6IGFueSA9IFtdO1xuICBpZiAoQXJyYXkuaXNBcnJheShncm91cCkpIHtcbiAgICBmb3IgKGxldCBjb250YWN0IG9mIGdyb3VwKSB7XG4gICAgICBjb250YWN0ID0gY29udGFjdC5zcGxpdCgnQCcpWzBdO1xuICAgICAgaWYgKGNvbnRhY3QgIT09ICcnKSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9QGcudXNgKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgYXJyQ29udGFjdHMgPSBncm91cC5zcGxpdCgvXFxzKlssO11cXHMqL2cpO1xuICAgIGZvciAobGV0IGNvbnRhY3Qgb2YgYXJyQ29udGFjdHMpIHtcbiAgICAgIGNvbnRhY3QgPSBjb250YWN0LnNwbGl0KCdAJylbMF07XG4gICAgICBpZiAoY29udGFjdCAhPT0gJycpIChsb2NhbEFyciBhcyBhbnkpLnB1c2goYCR7Y29udGFjdH1AZy51c2ApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsb2NhbEFycjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdyb3VwTmFtZVRvQXJyYXkoZ3JvdXA6IGFueSkge1xuICBjb25zdCBsb2NhbEFycjogYW55ID0gW107XG4gIGlmIChBcnJheS5pc0FycmF5KGdyb3VwKSkge1xuICAgIGZvciAoY29uc3QgY29udGFjdCBvZiBncm91cCkge1xuICAgICAgaWYgKGNvbnRhY3QgIT09ICcnKSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9YCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGFyckNvbnRhY3RzID0gZ3JvdXAuc3BsaXQoL1xccypbLDtdXFxzKi9nKTtcbiAgICBmb3IgKGNvbnN0IGNvbnRhY3Qgb2YgYXJyQ29udGFjdHMpIHtcbiAgICAgIGlmIChjb250YWN0ICE9PSAnJykgKGxvY2FsQXJyIGFzIGFueSkucHVzaChgJHtjb250YWN0fWApO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBsb2NhbEFycjtcbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGNhbGxXZWJIb29rKFxuICBjbGllbnQ6IGFueSxcbiAgcmVxOiBhbnksXG4gIGV2ZW50OiBhbnksXG4gIGRhdGE6IGFueVxuKSB7XG4gIGNvbnN0IHdlYmhvb2sgPVxuICAgIGNsaWVudD8uY29uZmlnLndlYmhvb2sgfHwgcmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay51cmwgfHwgZmFsc2U7XG4gIGlmICh3ZWJob29rKSB7XG4gICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2suYXV0b0Rvd25sb2FkKVxuICAgICAgYXdhaXQgYXV0b0Rvd25sb2FkKGNsaWVudCwgcmVxLCBkYXRhKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2hhdElkID1cbiAgICAgICAgZGF0YS5mcm9tIHx8XG4gICAgICAgIGRhdGEuY2hhdElkIHx8XG4gICAgICAgIChkYXRhLmNoYXRJZCA/IGRhdGEuY2hhdElkLl9zZXJpYWxpemVkIDogbnVsbCk7XG4gICAgICBkYXRhID0gT2JqZWN0LmFzc2lnbih7IGV2ZW50OiBldmVudCwgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24gfSwgZGF0YSk7XG4gICAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMubWFwcGVyLmVuYWJsZSlcbiAgICAgICAgZGF0YSA9IGF3YWl0IGNvbnZlcnQocmVxLnNlcnZlck9wdGlvbnMubWFwcGVyLnByZWZpeCwgZGF0YSk7XG4gICAgICBhcGlcbiAgICAgICAgLnBvc3Qod2ViaG9vaywgZGF0YSlcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBldmVudHMgPSBbJ3VucmVhZG1lc3NhZ2VzJywgJ29ubWVzc2FnZSddO1xuICAgICAgICAgICAgaWYgKGV2ZW50cy5pbmNsdWRlcyhldmVudCkgJiYgcmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5yZWFkTWVzc2FnZSlcbiAgICAgICAgICAgICAgY2xpZW50LnNlbmRTZWVuKGNoYXRJZCk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgcmVxLmxvZ2dlci53YXJuKCdFcnJvciBjYWxsaW5nIFdlYmhvb2suJywgZSk7XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlcS5sb2dnZXIuZXJyb3IoZSk7XG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGF1dG9Eb3dubG9hZChjbGllbnQ6IGFueSwgcmVxOiBhbnksIG1lc3NhZ2U6IGFueSkge1xuICB0cnkge1xuICAgIGlmIChtZXNzYWdlICYmIChtZXNzYWdlWydtaW1ldHlwZSddIHx8IG1lc3NhZ2UuaXNNZWRpYSB8fCBtZXNzYWdlLmlzTU1TKSkge1xuICAgICAgY29uc3QgYnVmZmVyID0gYXdhaXQgY2xpZW50LmRlY3J5cHRGaWxlKG1lc3NhZ2UpO1xuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sudXBsb2FkUzMpIHtcbiAgICAgICAgY29uc3QgaGFzaE5hbWUgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoMjQpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgICAgICBjb25zdCBzMyA9IG5ldyBhd3MuUzMoKTtcbiAgICAgICAgY29uc3QgYnVja2V0TmFtZSA9IGNvbmZpZy53ZWJob29rPy5hd3NCdWNrZXROYW1lXG4gICAgICAgICAgPyBjb25maWcud2ViaG9vaz8uYXdzQnVja2V0TmFtZVxuICAgICAgICAgIDogY2xpZW50LnNlc3Npb247XG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gYCR7XG4gICAgICAgICAgY29uZmlnLndlYmhvb2s/LmF3c0J1Y2tldE5hbWUgPyBjbGllbnQuc2Vzc2lvbiArICcvJyA6ICcnXG4gICAgICAgIH0ke2hhc2hOYW1lfS4ke21pbWUuZXh0ZW5zaW9uKG1lc3NhZ2UubWltZXR5cGUpfWA7XG5cbiAgICAgICAgY29uc3QgcGFyYW1zID0ge1xuICAgICAgICAgIEJ1Y2tldDogYnVja2V0TmFtZSxcbiAgICAgICAgICBLZXk6IGZpbGVOYW1lLFxuICAgICAgICAgIEJvZHk6IGJ1ZmZlcixcbiAgICAgICAgICBBQ0w6ICdwdWJsaWMtcmVhZCcsXG4gICAgICAgICAgQ29udGVudFR5cGU6IG1lc3NhZ2UubWltZXR5cGUsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCBzMy51cGxvYWQocGFyYW1zKS5wcm9taXNlKCk7XG4gICAgICAgIG1lc3NhZ2UuZmlsZVVybCA9IGRhdGEuTG9jYXRpb247XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlLmJvZHkgPSBhd2FpdCBidWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0QWxsU2Vzc2lvbnMoY29uZmlnOiBhbnksIGxvZ2dlcjogYW55KSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgYXBpLnBvc3QoXG4gICAgICBgJHtjb25maWcuaG9zdH06JHtjb25maWcucG9ydH0vYXBpLyR7Y29uZmlnLnNlY3JldEtleX0vc3RhcnQtYWxsYFxuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuZXJyb3IoZSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0SGVscGVyKGNsaWVudDogYW55LCByZXE6IGFueSkge1xuICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5hbGxVbnJlYWRPblN0YXJ0KSBhd2FpdCBzZW5kVW5yZWFkKGNsaWVudCwgcmVxKTtcblxuICBpZiAocmVxLnNlcnZlck9wdGlvbnMuYXJjaGl2ZS5lbmFibGUpIGF3YWl0IGFyY2hpdmUoY2xpZW50LCByZXEpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kVW5yZWFkKGNsaWVudDogYW55LCByZXE6IGFueSkge1xuICByZXEubG9nZ2VyLmluZm8oYCR7Y2xpZW50LnNlc3Npb259IDogSW5pY2lvIGVudmlhciBtZW5zYWdlbnMgbsOjbyBsaWRhc2ApO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgY2hhdHMgPSBhd2FpdCBjbGllbnQuZ2V0QWxsQ2hhdHNXaXRoTWVzc2FnZXModHJ1ZSk7XG5cbiAgICBpZiAoY2hhdHMgJiYgY2hhdHMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGF0cy5sZW5ndGg7IGkrKylcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjaGF0c1tpXS5tc2dzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICd1bnJlYWRtZXNzYWdlcycsIGNoYXRzW2ldLm1zZ3Nbal0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVxLmxvZ2dlci5pbmZvKGAke2NsaWVudC5zZXNzaW9ufSA6IEZpbSBlbnZpYXIgbWVuc2FnZW5zIG7Do28gbGlkYXNgKTtcbiAgfSBjYXRjaCAoZXgpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGV4KTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBhcmNoaXZlKGNsaWVudDogYW55LCByZXE6IGFueSkge1xuICBhc3luYyBmdW5jdGlvbiBzbGVlcCh0aW1lOiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgdGltZSAqIDEwKSk7XG4gIH1cblxuICByZXEubG9nZ2VyLmluZm8oYCR7Y2xpZW50LnNlc3Npb259IDogSW5pY2lvIGFycXVpdmFuZG8gY2hhdHNgKTtcblxuICB0cnkge1xuICAgIGxldCBjaGF0cyA9IGF3YWl0IGNsaWVudC5nZXRBbGxDaGF0cygpO1xuICAgIGlmIChjaGF0cyAmJiBBcnJheS5pc0FycmF5KGNoYXRzKSAmJiBjaGF0cy5sZW5ndGggPiAwKSB7XG4gICAgICBjaGF0cyA9IGNoYXRzLmZpbHRlcigoYykgPT4gIWMuYXJjaGl2ZSk7XG4gICAgfVxuICAgIGlmIChjaGF0cyAmJiBBcnJheS5pc0FycmF5KGNoYXRzKSAmJiBjaGF0cy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShjaGF0c1tpXS50ICogMTAwMCk7XG5cbiAgICAgICAgaWYgKERheXNCZXR3ZWVuKGRhdGUpID4gcmVxLnNlcnZlck9wdGlvbnMuYXJjaGl2ZS5kYXlzVG9BcmNoaXZlKSB7XG4gICAgICAgICAgYXdhaXQgY2xpZW50LmFyY2hpdmVDaGF0KFxuICAgICAgICAgICAgY2hhdHNbaV0uaWQuaWQgfHwgY2hhdHNbaV0uaWQuX3NlcmlhbGl6ZWQsXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgKTtcbiAgICAgICAgICBhd2FpdCBzbGVlcChcbiAgICAgICAgICAgIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHJlcS5zZXJ2ZXJPcHRpb25zLmFyY2hpdmUud2FpdFRpbWUgKyAxKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmVxLmxvZ2dlci5pbmZvKGAke2NsaWVudC5zZXNzaW9ufSA6IEZpbSBhcnF1aXZhbmRvIGNoYXRzYCk7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihleCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gRGF5c0JldHdlZW4oU3RhcnREYXRlOiBEYXRlKSB7XG4gIGNvbnN0IGVuZERhdGUgPSBuZXcgRGF0ZSgpO1xuICAvLyBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBhbGwgVVRDIGRheXMgKG5vIERTVClcbiAgY29uc3Qgb25lRGF5ID0gMTAwMCAqIDYwICogNjAgKiAyNDtcblxuICAvLyBBIGRheSBpbiBVVEMgYWx3YXlzIGxhc3RzIDI0IGhvdXJzICh1bmxpa2UgaW4gb3RoZXIgdGltZSBmb3JtYXRzKVxuICBjb25zdCBzdGFydCA9IERhdGUuVVRDKFxuICAgIGVuZERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICBlbmREYXRlLmdldE1vbnRoKCksXG4gICAgZW5kRGF0ZS5nZXREYXRlKClcbiAgKTtcbiAgY29uc3QgZW5kID0gRGF0ZS5VVEMoXG4gICAgU3RhcnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgU3RhcnREYXRlLmdldE1vbnRoKCksXG4gICAgU3RhcnREYXRlLmdldERhdGUoKVxuICApO1xuXG4gIC8vIHNvIGl0J3Mgc2FmZSB0byBkaXZpZGUgYnkgMjQgaG91cnNcbiAgcmV0dXJuIChzdGFydCAtIGVuZCkgLyBvbmVEYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb2xkZXJzKCkge1xuICBjb25zdCBfX2Rpcm5hbWUgPSBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKCcnKSk7XG4gIGNvbnN0IGRpckZpbGVzID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ1doYXRzQXBwSW1hZ2VzJyk7XG4gIGlmICghZnMuZXhpc3RzU3luYyhkaXJGaWxlcykpIHtcbiAgICBmcy5ta2RpclN5bmMoZGlyRmlsZXMpO1xuICB9XG5cbiAgY29uc3QgZGlyVXBsb2FkID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ3VwbG9hZHMnKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGRpclVwbG9hZCkpIHtcbiAgICBmcy5ta2RpclN5bmMoZGlyVXBsb2FkKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyVG9Cb29sKHM6IHN0cmluZykge1xuICByZXR1cm4gL14odHJ1ZXwxKSQvaS50ZXN0KHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SVBBZGRyZXNzKCkge1xuICBjb25zdCBpbnRlcmZhY2VzID0gb3MubmV0d29ya0ludGVyZmFjZXMoKTtcbiAgZm9yIChjb25zdCBkZXZOYW1lIGluIGludGVyZmFjZXMpIHtcbiAgICBjb25zdCBpZmFjZTogYW55ID0gaW50ZXJmYWNlc1tkZXZOYW1lXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlmYWNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBhbGlhcyA9IGlmYWNlW2ldO1xuICAgICAgaWYgKFxuICAgICAgICBhbGlhcy5mYW1pbHkgPT09ICdJUHY0JyAmJlxuICAgICAgICBhbGlhcy5hZGRyZXNzICE9PSAnMTI3LjAuMC4xJyAmJlxuICAgICAgICAhYWxpYXMuaW50ZXJuYWxcbiAgICAgIClcbiAgICAgICAgcmV0dXJuIGFsaWFzLmFkZHJlc3M7XG4gICAgfVxuICB9XG4gIHJldHVybiAnMC4wLjAuMCc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRNYXhMaXN0bmVycyhzZXJ2ZXJPcHRpb25zOiBTZXJ2ZXJPcHRpb25zKSB7XG4gIGlmIChzZXJ2ZXJPcHRpb25zICYmIE51bWJlci5pc0ludGVnZXIoc2VydmVyT3B0aW9ucy5tYXhMaXN0ZW5lcnMpKSB7XG4gICAgcHJvY2Vzcy5zZXRNYXhMaXN0ZW5lcnMoc2VydmVyT3B0aW9ucy5tYXhMaXN0ZW5lcnMpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCB1bmxpbmtBc3luYyA9IHByb21pc2lmeShmcy51bmxpbmspO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2F0YWxvZ0xpbmsoc2Vzc2lvbjogYW55KSB7XG4gIGNvbnN0IFt3aWRdID0gc2Vzc2lvbi5zcGxpdCgnQCcpO1xuICByZXR1cm4gYGh0dHBzOi8vd2EubWUvYy8ke3dpZH1g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
|
|
350
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xpZW50UyIsInJlcXVpcmUiLCJfYXhpb3MiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwiX2NyeXB0byIsIl9mcyIsIl9taW1lVHlwZXMiLCJfb3MiLCJfcGF0aCIsIl91dGlsIiwiX2NvbmZpZyIsIl9pbmRleCIsIl9idWNrZXRBbHJlYWR5RXhpc3RzIiwibWltZSIsImNyeXB0byIsImNvbmZpZyIsIndlYmhvb2siLCJ1cGxvYWRTMyIsIm1pbWV0eXBlcyIsIkNyeXB0byIsImNvbnRhY3RUb0FycmF5IiwibnVtYmVyIiwiaXNHcm91cCIsImxvY2FsQXJyIiwiQXJyYXkiLCJpc0FycmF5IiwiY29udGFjdCIsInNwbGl0IiwicmVwbGFjZSIsInB1c2giLCJhcnJDb250YWN0cyIsImdyb3VwVG9BcnJheSIsImdyb3VwIiwiZ3JvdXBOYW1lVG9BcnJheSIsImNhbGxXZWJIb29rIiwiY2xpZW50IiwicmVxIiwiZXZlbnQiLCJkYXRhIiwic2VydmVyT3B0aW9ucyIsInVybCIsImF1dG9Eb3dubG9hZCIsImNoYXRJZCIsImZyb20iLCJfc2VyaWFsaXplZCIsIk9iamVjdCIsImFzc2lnbiIsInNlc3Npb24iLCJtYXBwZXIiLCJlbmFibGUiLCJjb252ZXJ0IiwicHJlZml4IiwiYXBpIiwicG9zdCIsInRoZW4iLCJldmVudHMiLCJpbmNsdWRlcyIsInJlYWRNZXNzYWdlIiwic2VuZFNlZW4iLCJlIiwiY2F0Y2giLCJsb2dnZXIiLCJ3YXJuIiwiZXJyb3IiLCJtZXNzYWdlIiwiaXNNZWRpYSIsImlzTU1TIiwiYnVmZmVyIiwiZGVjcnlwdEZpbGUiLCJoYXNoTmFtZSIsInJhbmRvbUJ5dGVzIiwidG9TdHJpbmciLCJhd3NfczMiLCJyZWdpb24iLCJhY2Nlc3Nfa2V5X2lkIiwic2VjcmV0X2tleSIsIkVycm9yIiwiczNDbGllbnQiLCJTM0NsaWVudCIsImVuZHBvaW50IiwidW5kZWZpbmVkIiwiZm9yY2VQYXRoU3R5bGUiLCJidWNrZXROYW1lIiwiZGVmYXVsdEJ1Y2tldE5hbWUiLCJub3JtYWxpemUiLCJ0b0xvd2VyQ2FzZSIsImxlbmd0aCIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImZpbGVOYW1lIiwiZXh0ZW5zaW9uIiwibWltZXR5cGUiLCJidWNrZXRBbHJlYWR5RXhpc3RzIiwic2VuZCIsIkNyZWF0ZUJ1Y2tldENvbW1hbmQiLCJCdWNrZXQiLCJPYmplY3RPd25lcnNoaXAiLCJQdXRQdWJsaWNBY2Nlc3NCbG9ja0NvbW1hbmQiLCJQdWJsaWNBY2Nlc3NCbG9ja0NvbmZpZ3VyYXRpb24iLCJCbG9ja1B1YmxpY0FjbHMiLCJJZ25vcmVQdWJsaWNBY2xzIiwiQmxvY2tQdWJsaWNQb2xpY3kiLCJQdXRPYmplY3RDb21tYW5kIiwiS2V5IiwiQm9keSIsIkNvbnRlbnRUeXBlIiwiQUNMIiwiZmlsZVVybCIsImJvZHkiLCJzdGFydEFsbFNlc3Npb25zIiwiaG9zdCIsInBvcnQiLCJzZWNyZXRLZXkiLCJzdGFydEhlbHBlciIsImFsbFVucmVhZE9uU3RhcnQiLCJzZW5kVW5yZWFkIiwiYXJjaGl2ZSIsImluZm8iLCJjaGF0cyIsImdldEFsbENoYXRzV2l0aE1lc3NhZ2VzIiwiaSIsImoiLCJtc2dzIiwiZXgiLCJzbGVlcCIsInRpbWUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInNldFRpbWVvdXQiLCJnZXRBbGxDaGF0cyIsImZpbHRlciIsImMiLCJkYXRlIiwiRGF0ZSIsInQiLCJEYXlzQmV0d2VlbiIsImRheXNUb0FyY2hpdmUiLCJhcmNoaXZlQ2hhdCIsImlkIiwid2FpdFRpbWUiLCJTdGFydERhdGUiLCJlbmREYXRlIiwib25lRGF5Iiwic3RhcnQiLCJVVEMiLCJnZXRGdWxsWWVhciIsImdldE1vbnRoIiwiZ2V0RGF0ZSIsImVuZCIsImNyZWF0ZUZvbGRlcnMiLCJfX2Rpcm5hbWUiLCJwYXRoIiwiZGlybmFtZSIsImRpckZpbGVzIiwiZnMiLCJleGlzdHNTeW5jIiwibWtkaXJTeW5jIiwiZGlyVXBsb2FkIiwic3RyVG9Cb29sIiwicyIsInRlc3QiLCJnZXRJUEFkZHJlc3MiLCJpbnRlcmZhY2VzIiwib3MiLCJuZXR3b3JrSW50ZXJmYWNlcyIsImRldk5hbWUiLCJpZmFjZSIsImFsaWFzIiwiZmFtaWx5IiwiYWRkcmVzcyIsImludGVybmFsIiwic2V0TWF4TGlzdG5lcnMiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJtYXhMaXN0ZW5lcnMiLCJwcm9jZXNzIiwic2V0TWF4TGlzdGVuZXJzIiwidW5saW5rQXN5bmMiLCJwcm9taXNpZnkiLCJ1bmxpbmsiLCJleHBvcnRzIiwiY3JlYXRlQ2F0YWxvZ0xpbmsiLCJ3aWQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9mdW5jdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIzIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHtcbiAgQ3JlYXRlQnVja2V0Q29tbWFuZCxcbiAgUHV0T2JqZWN0Q29tbWFuZCxcbiAgUHV0UHVibGljQWNjZXNzQmxvY2tDb21tYW5kLFxuICBTM0NsaWVudCxcbn0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcbmltcG9ydCBhcGkgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IENyeXB0byBmcm9tICdjcnlwdG8nO1xuaW1wb3J0IHsgUmVxdWVzdCB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IGZzIGZyb20gJ2ZzJztcbmltcG9ydCBtaW1ldHlwZXMgZnJvbSAnbWltZS10eXBlcyc7XG5pbXBvcnQgb3MgZnJvbSAnb3MnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcblxuaW1wb3J0IGNvbmZpZyBmcm9tICcuLi9jb25maWcnO1xuaW1wb3J0IHsgY29udmVydCB9IGZyb20gJy4uL21hcHBlci9pbmRleCc7XG5pbXBvcnQgeyBTZXJ2ZXJPcHRpb25zIH0gZnJvbSAnLi4vdHlwZXMvU2VydmVyT3B0aW9ucyc7XG5pbXBvcnQgeyBidWNrZXRBbHJlYWR5RXhpc3RzIH0gZnJvbSAnLi9idWNrZXRBbHJlYWR5RXhpc3RzJztcblxubGV0IG1pbWU6IGFueSwgY3J5cHRvOiBhbnk7IC8vLCBhd3M6IGFueTtcbmlmIChjb25maWcud2ViaG9vay51cGxvYWRTMykge1xuICBtaW1lID0gY29uZmlnLndlYmhvb2sudXBsb2FkUzMgPyBtaW1ldHlwZXMgOiBudWxsO1xuICBjcnlwdG8gPSBjb25maWcud2ViaG9vay51cGxvYWRTMyA/IENyeXB0byA6IG51bGw7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjb250YWN0VG9BcnJheShudW1iZXI6IGFueSwgaXNHcm91cD86IGJvb2xlYW4pIHtcbiAgY29uc3QgbG9jYWxBcnI6IGFueSA9IFtdO1xuICBpZiAoQXJyYXkuaXNBcnJheShudW1iZXIpKSB7XG4gICAgZm9yIChsZXQgY29udGFjdCBvZiBudW1iZXIpIHtcbiAgICAgIGlzR3JvdXBcbiAgICAgICAgPyAoY29udGFjdCA9IGNvbnRhY3Quc3BsaXQoJ0AnKVswXSlcbiAgICAgICAgOiAoY29udGFjdCA9IGNvbnRhY3Quc3BsaXQoJ0AnKVswXT8ucmVwbGFjZSgvW15cXHcgXS9nLCAnJykpO1xuICAgICAgaWYgKGNvbnRhY3QgIT09ICcnKVxuICAgICAgICBpZiAoaXNHcm91cCkgKGxvY2FsQXJyIGFzIGFueSkucHVzaChgJHtjb250YWN0fUBnLnVzYCk7XG4gICAgICAgIGVsc2UgKGxvY2FsQXJyIGFzIGFueSkucHVzaChgJHtjb250YWN0fUBjLnVzYCk7XG4gICAgfVxuICB9IGVsc2Uge1xuICAgIGNvbnN0IGFyckNvbnRhY3RzID0gbnVtYmVyLnNwbGl0KC9cXHMqWyw7XVxccyovZyk7XG4gICAgZm9yIChsZXQgY29udGFjdCBvZiBhcnJDb250YWN0cykge1xuICAgICAgaXNHcm91cFxuICAgICAgICA/IChjb250YWN0ID0gY29udGFjdC5zcGxpdCgnQCcpWzBdKVxuICAgICAgICA6IChjb250YWN0ID0gY29udGFjdC5zcGxpdCgnQCcpWzBdPy5yZXBsYWNlKC9bXlxcdyBdL2csICcnKSk7XG4gICAgICBpZiAoY29udGFjdCAhPT0gJycpXG4gICAgICAgIGlmIChpc0dyb3VwKSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9QGcudXNgKTtcbiAgICAgICAgZWxzZSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9QGMudXNgKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gbG9jYWxBcnI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBncm91cFRvQXJyYXkoZ3JvdXA6IGFueSkge1xuICBjb25zdCBsb2NhbEFycjogYW55ID0gW107XG4gIGlmIChBcnJheS5pc0FycmF5KGdyb3VwKSkge1xuICAgIGZvciAobGV0IGNvbnRhY3Qgb2YgZ3JvdXApIHtcbiAgICAgIGNvbnRhY3QgPSBjb250YWN0LnNwbGl0KCdAJylbMF07XG4gICAgICBpZiAoY29udGFjdCAhPT0gJycpIChsb2NhbEFyciBhcyBhbnkpLnB1c2goYCR7Y29udGFjdH1AZy51c2ApO1xuICAgIH1cbiAgfSBlbHNlIHtcbiAgICBjb25zdCBhcnJDb250YWN0cyA9IGdyb3VwLnNwbGl0KC9cXHMqWyw7XVxccyovZyk7XG4gICAgZm9yIChsZXQgY29udGFjdCBvZiBhcnJDb250YWN0cykge1xuICAgICAgY29udGFjdCA9IGNvbnRhY3Quc3BsaXQoJ0AnKVswXTtcbiAgICAgIGlmIChjb250YWN0ICE9PSAnJykgKGxvY2FsQXJyIGFzIGFueSkucHVzaChgJHtjb250YWN0fUBnLnVzYCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxvY2FsQXJyO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ3JvdXBOYW1lVG9BcnJheShncm91cDogYW55KSB7XG4gIGNvbnN0IGxvY2FsQXJyOiBhbnkgPSBbXTtcbiAgaWYgKEFycmF5LmlzQXJyYXkoZ3JvdXApKSB7XG4gICAgZm9yIChjb25zdCBjb250YWN0IG9mIGdyb3VwKSB7XG4gICAgICBpZiAoY29udGFjdCAhPT0gJycpIChsb2NhbEFyciBhcyBhbnkpLnB1c2goYCR7Y29udGFjdH1gKTtcbiAgICB9XG4gIH0gZWxzZSB7XG4gICAgY29uc3QgYXJyQ29udGFjdHMgPSBncm91cC5zcGxpdCgvXFxzKlssO11cXHMqL2cpO1xuICAgIGZvciAoY29uc3QgY29udGFjdCBvZiBhcnJDb250YWN0cykge1xuICAgICAgaWYgKGNvbnRhY3QgIT09ICcnKSAobG9jYWxBcnIgYXMgYW55KS5wdXNoKGAke2NvbnRhY3R9YCk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIGxvY2FsQXJyO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY2FsbFdlYkhvb2soXG4gIGNsaWVudDogYW55LFxuICByZXE6IFJlcXVlc3QsXG4gIGV2ZW50OiBhbnksXG4gIGRhdGE6IGFueVxuKSB7XG4gIGNvbnN0IHdlYmhvb2sgPVxuICAgIGNsaWVudD8uY29uZmlnLndlYmhvb2sgfHwgcmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay51cmwgfHwgZmFsc2U7XG4gIGlmICh3ZWJob29rKSB7XG4gICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2suYXV0b0Rvd25sb2FkKVxuICAgICAgYXdhaXQgYXV0b0Rvd25sb2FkKGNsaWVudCwgcmVxLCBkYXRhKTtcbiAgICB0cnkge1xuICAgICAgY29uc3QgY2hhdElkID1cbiAgICAgICAgZGF0YS5mcm9tIHx8XG4gICAgICAgIGRhdGEuY2hhdElkIHx8XG4gICAgICAgIChkYXRhLmNoYXRJZCA/IGRhdGEuY2hhdElkLl9zZXJpYWxpemVkIDogbnVsbCk7XG4gICAgICBkYXRhID0gT2JqZWN0LmFzc2lnbih7IGV2ZW50OiBldmVudCwgc2Vzc2lvbjogY2xpZW50LnNlc3Npb24gfSwgZGF0YSk7XG4gICAgICBpZiAocmVxLnNlcnZlck9wdGlvbnMubWFwcGVyLmVuYWJsZSlcbiAgICAgICAgZGF0YSA9IGF3YWl0IGNvbnZlcnQocmVxLnNlcnZlck9wdGlvbnMubWFwcGVyLnByZWZpeCwgZGF0YSk7XG4gICAgICBhcGlcbiAgICAgICAgLnBvc3Qod2ViaG9vaywgZGF0YSlcbiAgICAgICAgLnRoZW4oKCkgPT4ge1xuICAgICAgICAgIHRyeSB7XG4gICAgICAgICAgICBjb25zdCBldmVudHMgPSBbJ3VucmVhZG1lc3NhZ2VzJywgJ29ubWVzc2FnZSddO1xuICAgICAgICAgICAgaWYgKGV2ZW50cy5pbmNsdWRlcyhldmVudCkgJiYgcmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5yZWFkTWVzc2FnZSlcbiAgICAgICAgICAgICAgY2xpZW50LnNlbmRTZWVuKGNoYXRJZCk7XG4gICAgICAgICAgfSBjYXRjaCAoZSkge31cbiAgICAgICAgfSlcbiAgICAgICAgLmNhdGNoKChlKSA9PiB7XG4gICAgICAgICAgcmVxLmxvZ2dlci53YXJuKCdFcnJvciBjYWxsaW5nIFdlYmhvb2suJywgZSk7XG4gICAgICAgIH0pO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlcS5sb2dnZXIuZXJyb3IoZSk7XG4gICAgfVxuICB9XG59XG5cbmFzeW5jIGZ1bmN0aW9uIGF1dG9Eb3dubG9hZChjbGllbnQ6IGFueSwgcmVxOiBhbnksIG1lc3NhZ2U6IGFueSkge1xuICB0cnkge1xuICAgIGlmIChtZXNzYWdlICYmIChtZXNzYWdlWydtaW1ldHlwZSddIHx8IG1lc3NhZ2UuaXNNZWRpYSB8fCBtZXNzYWdlLmlzTU1TKSkge1xuICAgICAgY29uc3QgYnVmZmVyID0gYXdhaXQgY2xpZW50LmRlY3J5cHRGaWxlKG1lc3NhZ2UpO1xuICAgICAgaWYgKHJlcS5zZXJ2ZXJPcHRpb25zLndlYmhvb2sudXBsb2FkUzMpIHtcbiAgICAgICAgY29uc3QgaGFzaE5hbWUgPSBjcnlwdG8ucmFuZG9tQnl0ZXMoMjQpLnRvU3RyaW5nKCdoZXgnKTtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgIWNvbmZpZz8uYXdzX3MzPy5yZWdpb24gfHxcbiAgICAgICAgICAhY29uZmlnPy5hd3NfczM/LmFjY2Vzc19rZXlfaWQgfHxcbiAgICAgICAgICAhY29uZmlnPy5hd3NfczM/LnNlY3JldF9rZXlcbiAgICAgICAgKVxuICAgICAgICAgIHRocm93IG5ldyBFcnJvcignUGxlYXNlLCBjb25maWd1cmUgeW91ciBhd3MgY29uZmlncycpO1xuICAgICAgICBjb25zdCBzM0NsaWVudCA9IG5ldyBTM0NsaWVudCh7XG4gICAgICAgICAgcmVnaW9uOiBjb25maWc/LmF3c19zMz8ucmVnaW9uLFxuICAgICAgICAgIGVuZHBvaW50OiBjb25maWc/LmF3c19zMz8uZW5kcG9pbnQgfHwgdW5kZWZpbmVkLFxuICAgICAgICAgIGZvcmNlUGF0aFN0eWxlOiBjb25maWc/LmF3c19zMz8uZm9yY2VQYXRoU3R5bGUgfHwgdW5kZWZpbmVkLFxuICAgICAgICB9KTtcbiAgICAgICAgbGV0IGJ1Y2tldE5hbWUgPSBjb25maWc/LmF3c19zMz8uZGVmYXVsdEJ1Y2tldE5hbWVcbiAgICAgICAgICA/IGNvbmZpZz8uYXdzX3MzPy5kZWZhdWx0QnVja2V0TmFtZVxuICAgICAgICAgIDogY2xpZW50LnNlc3Npb247XG4gICAgICAgIGJ1Y2tldE5hbWUgPSBidWNrZXROYW1lXG4gICAgICAgICAgLm5vcm1hbGl6ZSgnTkZEJylcbiAgICAgICAgICAucmVwbGFjZSgvW1xcdTAzMDAtXFx1MDM2Zl18W+KAlCBfLiw/IV0vZywgJycpXG4gICAgICAgICAgLnRvTG93ZXJDYXNlKCk7XG4gICAgICAgIGJ1Y2tldE5hbWUgPVxuICAgICAgICAgIGJ1Y2tldE5hbWUubGVuZ3RoIDwgM1xuICAgICAgICAgICAgPyBidWNrZXROYW1lICtcbiAgICAgICAgICAgICAgYCR7TWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKDk5OSAtIDEwMCArIDEpKSArIDEwMH1gXG4gICAgICAgICAgICA6IGJ1Y2tldE5hbWU7XG4gICAgICAgIGNvbnN0IGZpbGVOYW1lID0gYCR7XG4gICAgICAgICAgY29uZmlnLmF3c19zMy5kZWZhdWx0QnVja2V0TmFtZSA/IGNsaWVudC5zZXNzaW9uICsgJy8nIDogJydcbiAgICAgICAgfSR7aGFzaE5hbWV9LiR7bWltZS5leHRlbnNpb24obWVzc2FnZS5taW1ldHlwZSl9YDtcblxuICAgICAgICBpZiAoXG4gICAgICAgICAgIWNvbmZpZy5hd3NfczMuZGVmYXVsdEJ1Y2tldE5hbWUgJiZcbiAgICAgICAgICAhKGF3YWl0IGJ1Y2tldEFscmVhZHlFeGlzdHMoYnVja2V0TmFtZSkpXG4gICAgICAgICkge1xuICAgICAgICAgIGF3YWl0IHMzQ2xpZW50LnNlbmQoXG4gICAgICAgICAgICBuZXcgQ3JlYXRlQnVja2V0Q29tbWFuZCh7XG4gICAgICAgICAgICAgIEJ1Y2tldDogYnVja2V0TmFtZSxcbiAgICAgICAgICAgICAgT2JqZWN0T3duZXJzaGlwOiAnT2JqZWN0V3JpdGVyJyxcbiAgICAgICAgICAgIH0pXG4gICAgICAgICAgKTtcbiAgICAgICAgICBhd2FpdCBzM0NsaWVudC5zZW5kKFxuICAgICAgICAgICAgbmV3IFB1dFB1YmxpY0FjY2Vzc0Jsb2NrQ29tbWFuZCh7XG4gICAgICAgICAgICAgIEJ1Y2tldDogYnVja2V0TmFtZSxcbiAgICAgICAgICAgICAgUHVibGljQWNjZXNzQmxvY2tDb25maWd1cmF0aW9uOiB7XG4gICAgICAgICAgICAgICAgQmxvY2tQdWJsaWNBY2xzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBJZ25vcmVQdWJsaWNBY2xzOiBmYWxzZSxcbiAgICAgICAgICAgICAgICBCbG9ja1B1YmxpY1BvbGljeTogZmFsc2UsXG4gICAgICAgICAgICAgIH0sXG4gICAgICAgICAgICB9KVxuICAgICAgICAgICk7XG4gICAgICAgIH1cblxuICAgICAgICBhd2FpdCBzM0NsaWVudC5zZW5kKFxuICAgICAgICAgIG5ldyBQdXRPYmplY3RDb21tYW5kKHtcbiAgICAgICAgICAgIEJ1Y2tldDogYnVja2V0TmFtZSxcbiAgICAgICAgICAgIEtleTogZmlsZU5hbWUsXG4gICAgICAgICAgICBCb2R5OiBidWZmZXIsXG4gICAgICAgICAgICBDb250ZW50VHlwZTogbWVzc2FnZS5taW1ldHlwZSxcbiAgICAgICAgICAgIEFDTDogJ3B1YmxpYy1yZWFkJyxcbiAgICAgICAgICB9KVxuICAgICAgICApO1xuXG4gICAgICAgIG1lc3NhZ2UuZmlsZVVybCA9IGBodHRwczovLyR7YnVja2V0TmFtZX0uczMuYW1hem9uYXdzLmNvbS8ke2ZpbGVOYW1lfWA7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBtZXNzYWdlLmJvZHkgPSBhd2FpdCBidWZmZXIudG9TdHJpbmcoJ2Jhc2U2NCcpO1xuICAgICAgfVxuICAgIH1cbiAgfSBjYXRjaCAoZSkge1xuICAgIHJlcS5sb2dnZXIuZXJyb3IoZSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0QWxsU2Vzc2lvbnMoY29uZmlnOiBhbnksIGxvZ2dlcjogYW55KSB7XG4gIHRyeSB7XG4gICAgYXdhaXQgYXBpLnBvc3QoXG4gICAgICBgJHtjb25maWcuaG9zdH06JHtjb25maWcucG9ydH0vYXBpLyR7Y29uZmlnLnNlY3JldEtleX0vc3RhcnQtYWxsYFxuICAgICk7XG4gIH0gY2F0Y2ggKGUpIHtcbiAgICBsb2dnZXIuZXJyb3IoZSk7XG4gIH1cbn1cblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIHN0YXJ0SGVscGVyKGNsaWVudDogYW55LCByZXE6IGFueSkge1xuICBpZiAocmVxLnNlcnZlck9wdGlvbnMud2ViaG9vay5hbGxVbnJlYWRPblN0YXJ0KSBhd2FpdCBzZW5kVW5yZWFkKGNsaWVudCwgcmVxKTtcblxuICBpZiAocmVxLnNlcnZlck9wdGlvbnMuYXJjaGl2ZS5lbmFibGUpIGF3YWl0IGFyY2hpdmUoY2xpZW50LCByZXEpO1xufVxuXG5hc3luYyBmdW5jdGlvbiBzZW5kVW5yZWFkKGNsaWVudDogYW55LCByZXE6IGFueSkge1xuICByZXEubG9nZ2VyLmluZm8oYCR7Y2xpZW50LnNlc3Npb259IDogSW5pY2lvIGVudmlhciBtZW5zYWdlbnMgbsOjbyBsaWRhc2ApO1xuXG4gIHRyeSB7XG4gICAgY29uc3QgY2hhdHMgPSBhd2FpdCBjbGllbnQuZ2V0QWxsQ2hhdHNXaXRoTWVzc2FnZXModHJ1ZSk7XG5cbiAgICBpZiAoY2hhdHMgJiYgY2hhdHMubGVuZ3RoID4gMCkge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBjaGF0cy5sZW5ndGg7IGkrKylcbiAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCBjaGF0c1tpXS5tc2dzLmxlbmd0aDsgaisrKSB7XG4gICAgICAgICAgY2FsbFdlYkhvb2soY2xpZW50LCByZXEsICd1bnJlYWRtZXNzYWdlcycsIGNoYXRzW2ldLm1zZ3Nbal0pO1xuICAgICAgICB9XG4gICAgfVxuXG4gICAgcmVxLmxvZ2dlci5pbmZvKGAke2NsaWVudC5zZXNzaW9ufSA6IEZpbSBlbnZpYXIgbWVuc2FnZW5zIG7Do28gbGlkYXNgKTtcbiAgfSBjYXRjaCAoZXgpIHtcbiAgICByZXEubG9nZ2VyLmVycm9yKGV4KTtcbiAgfVxufVxuXG5hc3luYyBmdW5jdGlvbiBhcmNoaXZlKGNsaWVudDogYW55LCByZXE6IGFueSkge1xuICBhc3luYyBmdW5jdGlvbiBzbGVlcCh0aW1lOiBudW1iZXIpIHtcbiAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgdGltZSAqIDEwKSk7XG4gIH1cblxuICByZXEubG9nZ2VyLmluZm8oYCR7Y2xpZW50LnNlc3Npb259IDogSW5pY2lvIGFycXVpdmFuZG8gY2hhdHNgKTtcblxuICB0cnkge1xuICAgIGxldCBjaGF0cyA9IGF3YWl0IGNsaWVudC5nZXRBbGxDaGF0cygpO1xuICAgIGlmIChjaGF0cyAmJiBBcnJheS5pc0FycmF5KGNoYXRzKSAmJiBjaGF0cy5sZW5ndGggPiAwKSB7XG4gICAgICBjaGF0cyA9IGNoYXRzLmZpbHRlcigoYykgPT4gIWMuYXJjaGl2ZSk7XG4gICAgfVxuICAgIGlmIChjaGF0cyAmJiBBcnJheS5pc0FycmF5KGNoYXRzKSAmJiBjaGF0cy5sZW5ndGggPiAwKSB7XG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IGNoYXRzLmxlbmd0aDsgaSsrKSB7XG4gICAgICAgIGNvbnN0IGRhdGUgPSBuZXcgRGF0ZShjaGF0c1tpXS50ICogMTAwMCk7XG5cbiAgICAgICAgaWYgKERheXNCZXR3ZWVuKGRhdGUpID4gcmVxLnNlcnZlck9wdGlvbnMuYXJjaGl2ZS5kYXlzVG9BcmNoaXZlKSB7XG4gICAgICAgICAgYXdhaXQgY2xpZW50LmFyY2hpdmVDaGF0KFxuICAgICAgICAgICAgY2hhdHNbaV0uaWQuaWQgfHwgY2hhdHNbaV0uaWQuX3NlcmlhbGl6ZWQsXG4gICAgICAgICAgICB0cnVlXG4gICAgICAgICAgKTtcbiAgICAgICAgICBhd2FpdCBzbGVlcChcbiAgICAgICAgICAgIE1hdGguZmxvb3IoTWF0aC5yYW5kb20oKSAqIHJlcS5zZXJ2ZXJPcHRpb25zLmFyY2hpdmUud2FpdFRpbWUgKyAxKVxuICAgICAgICAgICk7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gICAgcmVxLmxvZ2dlci5pbmZvKGAke2NsaWVudC5zZXNzaW9ufSA6IEZpbSBhcnF1aXZhbmRvIGNoYXRzYCk7XG4gIH0gY2F0Y2ggKGV4KSB7XG4gICAgcmVxLmxvZ2dlci5lcnJvcihleCk7XG4gIH1cbn1cblxuZnVuY3Rpb24gRGF5c0JldHdlZW4oU3RhcnREYXRlOiBEYXRlKSB7XG4gIGNvbnN0IGVuZERhdGUgPSBuZXcgRGF0ZSgpO1xuICAvLyBUaGUgbnVtYmVyIG9mIG1pbGxpc2Vjb25kcyBpbiBhbGwgVVRDIGRheXMgKG5vIERTVClcbiAgY29uc3Qgb25lRGF5ID0gMTAwMCAqIDYwICogNjAgKiAyNDtcblxuICAvLyBBIGRheSBpbiBVVEMgYWx3YXlzIGxhc3RzIDI0IGhvdXJzICh1bmxpa2UgaW4gb3RoZXIgdGltZSBmb3JtYXRzKVxuICBjb25zdCBzdGFydCA9IERhdGUuVVRDKFxuICAgIGVuZERhdGUuZ2V0RnVsbFllYXIoKSxcbiAgICBlbmREYXRlLmdldE1vbnRoKCksXG4gICAgZW5kRGF0ZS5nZXREYXRlKClcbiAgKTtcbiAgY29uc3QgZW5kID0gRGF0ZS5VVEMoXG4gICAgU3RhcnREYXRlLmdldEZ1bGxZZWFyKCksXG4gICAgU3RhcnREYXRlLmdldE1vbnRoKCksXG4gICAgU3RhcnREYXRlLmdldERhdGUoKVxuICApO1xuXG4gIC8vIHNvIGl0J3Mgc2FmZSB0byBkaXZpZGUgYnkgMjQgaG91cnNcbiAgcmV0dXJuIChzdGFydCAtIGVuZCkgLyBvbmVEYXk7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBjcmVhdGVGb2xkZXJzKCkge1xuICBjb25zdCBfX2Rpcm5hbWUgPSBwYXRoLnJlc29sdmUocGF0aC5kaXJuYW1lKCcnKSk7XG4gIGNvbnN0IGRpckZpbGVzID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ1doYXRzQXBwSW1hZ2VzJyk7XG4gIGlmICghZnMuZXhpc3RzU3luYyhkaXJGaWxlcykpIHtcbiAgICBmcy5ta2RpclN5bmMoZGlyRmlsZXMpO1xuICB9XG5cbiAgY29uc3QgZGlyVXBsb2FkID0gcGF0aC5yZXNvbHZlKF9fZGlybmFtZSwgJ3VwbG9hZHMnKTtcbiAgaWYgKCFmcy5leGlzdHNTeW5jKGRpclVwbG9hZCkpIHtcbiAgICBmcy5ta2RpclN5bmMoZGlyVXBsb2FkKTtcbiAgfVxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3RyVG9Cb29sKHM6IHN0cmluZykge1xuICByZXR1cm4gL14odHJ1ZXwxKSQvaS50ZXN0KHMpO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0SVBBZGRyZXNzKCkge1xuICBjb25zdCBpbnRlcmZhY2VzID0gb3MubmV0d29ya0ludGVyZmFjZXMoKTtcbiAgZm9yIChjb25zdCBkZXZOYW1lIGluIGludGVyZmFjZXMpIHtcbiAgICBjb25zdCBpZmFjZTogYW55ID0gaW50ZXJmYWNlc1tkZXZOYW1lXTtcbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IGlmYWNlLmxlbmd0aDsgaSsrKSB7XG4gICAgICBjb25zdCBhbGlhcyA9IGlmYWNlW2ldO1xuICAgICAgaWYgKFxuICAgICAgICBhbGlhcy5mYW1pbHkgPT09ICdJUHY0JyAmJlxuICAgICAgICBhbGlhcy5hZGRyZXNzICE9PSAnMTI3LjAuMC4xJyAmJlxuICAgICAgICAhYWxpYXMuaW50ZXJuYWxcbiAgICAgIClcbiAgICAgICAgcmV0dXJuIGFsaWFzLmFkZHJlc3M7XG4gICAgfVxuICB9XG4gIHJldHVybiAnMC4wLjAuMCc7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBzZXRNYXhMaXN0bmVycyhzZXJ2ZXJPcHRpb25zOiBTZXJ2ZXJPcHRpb25zKSB7XG4gIGlmIChzZXJ2ZXJPcHRpb25zICYmIE51bWJlci5pc0ludGVnZXIoc2VydmVyT3B0aW9ucy5tYXhMaXN0ZW5lcnMpKSB7XG4gICAgcHJvY2Vzcy5zZXRNYXhMaXN0ZW5lcnMoc2VydmVyT3B0aW9ucy5tYXhMaXN0ZW5lcnMpO1xuICB9XG59XG5cbmV4cG9ydCBjb25zdCB1bmxpbmtBc3luYyA9IHByb21pc2lmeShmcy51bmxpbmspO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlQ2F0YWxvZ0xpbmsoc2Vzc2lvbjogYW55KSB7XG4gIGNvbnN0IFt3aWRdID0gc2Vzc2lvbi5zcGxpdCgnQCcpO1xuICByZXR1cm4gYGh0dHBzOi8vd2EubWUvYy8ke3dpZH1gO1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFlQSxJQUFBQSxRQUFBLEdBQUFDLE9BQUE7Ozs7OztBQU1BLElBQUFDLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUYsT0FBQTtBQUNBLElBQUFHLE9BQUEsR0FBQUQsc0JBQUEsQ0FBQUYsT0FBQTs7QUFFQSxJQUFBSSxHQUFBLEdBQUFGLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBSyxVQUFBLEdBQUFILHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTSxHQUFBLEdBQUFKLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBTyxLQUFBLEdBQUFMLHNCQUFBLENBQUFGLE9BQUE7QUFDQSxJQUFBUSxLQUFBLEdBQUFSLE9BQUE7O0FBRUEsSUFBQVMsT0FBQSxHQUFBUCxzQkFBQSxDQUFBRixPQUFBO0FBQ0EsSUFBQVUsTUFBQSxHQUFBVixPQUFBOztBQUVBLElBQUFXLG9CQUFBLEdBQUFYLE9BQUEsMEJBQTRELENBakM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0EsR0FxQkEsSUFBSVksSUFBUyxFQUFFQyxNQUFXLENBQUMsQ0FBQztBQUM1QixJQUFJQyxlQUFNLENBQUNDLE9BQU8sQ0FBQ0MsUUFBUSxFQUFFLENBQzNCSixJQUFJLEdBQUdFLGVBQU0sQ0FBQ0MsT0FBTyxDQUFDQyxRQUFRLEdBQUdDLGtCQUFTLEdBQUcsSUFBSSxDQUNqREosTUFBTSxHQUFHQyxlQUFNLENBQUNDLE9BQU8sQ0FBQ0MsUUFBUSxHQUFHRSxlQUFNLEdBQUcsSUFB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
|
package/dist/util/sessionUtil.js
CHANGED
|
@@ -28,25 +28,26 @@ var _events = require("events"); /*
|
|
|
28
28
|
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
29
29
|
* See the License for the specific language governing permissions and
|
|
30
30
|
* limitations under the License.
|
|
31
|
-
*/const chromiumArgs = ['--disable-web-security',
|
|
32
|
-
'--
|
|
33
|
-
'--
|
|
34
|
-
'--
|
|
35
|
-
'--
|
|
36
|
-
'--
|
|
37
|
-
'--
|
|
38
|
-
'--
|
|
39
|
-
'--
|
|
40
|
-
'--
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
31
|
+
*/const chromiumArgs = ['--disable-web-security', // Disables web security
|
|
32
|
+
'--no-sandbox', // Disables sandbox
|
|
33
|
+
'--aggressive-cache-discard', // Aggressively discards cache
|
|
34
|
+
'--disable-cache', // Disables cache
|
|
35
|
+
'--disable-application-cache', // Disables application cache
|
|
36
|
+
'--disable-offline-load-stale-cache', // Disables loading stale offline cache
|
|
37
|
+
'--disk-cache-size=0', // Sets disk cache size to 0
|
|
38
|
+
'--disable-background-networking', // Disables background networking activities
|
|
39
|
+
'--disable-default-apps', // Disables default apps
|
|
40
|
+
'--disable-extensions', // Disables extensions
|
|
41
|
+
'--disable-sync', // Disables synchronization
|
|
42
|
+
'--disable-translate', // Disables translation
|
|
43
|
+
'--hide-scrollbars', // Hides scrollbars
|
|
44
|
+
'--metrics-recording-only', // Records metrics only
|
|
45
|
+
'--mute-audio', // Mutes audio
|
|
46
|
+
'--no-first-run', // Skips first run
|
|
47
|
+
'--safebrowsing-disable-auto-update', // Disables Safe Browsing auto-update
|
|
48
|
+
'--ignore-certificate-errors', // Ignores certificate errors
|
|
49
|
+
'--ignore-ssl-errors', // Ignores SSL errors
|
|
50
|
+
'--ignore-certificate-errors-spki-list' // Ignores certificate errors in SPKI list
|
|
51
|
+
]; // eslint-disable-next-line prefer-const
|
|
52
|
+
exports.chromiumArgs = chromiumArgs;let clientsArray = [];exports.clientsArray = clientsArray;const sessions = [];exports.sessions = sessions;const eventEmitter = new _events.EventEmitter();exports.eventEmitter = eventEmitter;function deleteSessionOnArray(session) {const newArray = clientsArray;delete clientsArray[session];exports.clientsArray = clientsArray = newArray;}
|
|
53
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfZXZlbnRzIiwicmVxdWlyZSIsImNocm9taXVtQXJncyIsImV4cG9ydHMiLCJjbGllbnRzQXJyYXkiLCJzZXNzaW9ucyIsImV2ZW50RW1pdHRlciIsIkV2ZW50RW1pdHRlciIsImRlbGV0ZVNlc3Npb25PbkFycmF5Iiwic2Vzc2lvbiIsIm5ld0FycmF5Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvc2Vzc2lvblV0aWwudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIxIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IHsgV2hhdHNhcHAgfSBmcm9tICdAd3BwY29ubmVjdC10ZWFtL3dwcGNvbm5lY3QnO1xuaW1wb3J0IHsgRXZlbnRFbWl0dGVyIH0gZnJvbSAnZXZlbnRzJztcblxuZXhwb3J0IGNvbnN0IGNocm9taXVtQXJncyA9IFtcbiAgJy0tZGlzYWJsZS13ZWItc2VjdXJpdHknLCAvLyBEaXNhYmxlcyB3ZWIgc2VjdXJpdHlcbiAgJy0tbm8tc2FuZGJveCcsIC8vIERpc2FibGVzIHNhbmRib3hcbiAgJy0tYWdncmVzc2l2ZS1jYWNoZS1kaXNjYXJkJywgLy8gQWdncmVzc2l2ZWx5IGRpc2NhcmRzIGNhY2hlXG4gICctLWRpc2FibGUtY2FjaGUnLCAvLyBEaXNhYmxlcyBjYWNoZVxuICAnLS1kaXNhYmxlLWFwcGxpY2F0aW9uLWNhY2hlJywgLy8gRGlzYWJsZXMgYXBwbGljYXRpb24gY2FjaGVcbiAgJy0tZGlzYWJsZS1vZmZsaW5lLWxvYWQtc3RhbGUtY2FjaGUnLCAvLyBEaXNhYmxlcyBsb2FkaW5nIHN0YWxlIG9mZmxpbmUgY2FjaGVcbiAgJy0tZGlzay1jYWNoZS1zaXplPTAnLCAvLyBTZXRzIGRpc2sgY2FjaGUgc2l6ZSB0byAwXG4gICctLWRpc2FibGUtYmFja2dyb3VuZC1uZXR3b3JraW5nJywgLy8gRGlzYWJsZXMgYmFja2dyb3VuZCBuZXR3b3JraW5nIGFjdGl2aXRpZXNcbiAgJy0tZGlzYWJsZS1kZWZhdWx0LWFwcHMnLCAvLyBEaXNhYmxlcyBkZWZhdWx0IGFwcHNcbiAgJy0tZGlzYWJsZS1leHRlbnNpb25zJywgLy8gRGlzYWJsZXMgZXh0ZW5zaW9uc1xuICAnLS1kaXNhYmxlLXN5bmMnLCAvLyBEaXNhYmxlcyBzeW5jaHJvbml6YXRpb25cbiAgJy0tZGlzYWJsZS10cmFuc2xhdGUnLCAvLyBEaXNhYmxlcyB0cmFuc2xhdGlvblxuICAnLS1oaWRlLXNjcm9sbGJhcnMnLCAvLyBIaWRlcyBzY3JvbGxiYXJzXG4gICctLW1ldHJpY3MtcmVjb3JkaW5nLW9ubHknLCAvLyBSZWNvcmRzIG1ldHJpY3Mgb25seVxuICAnLS1tdXRlLWF1ZGlvJywgLy8gTXV0ZXMgYXVkaW9cbiAgJy0tbm8tZmlyc3QtcnVuJywgLy8gU2tpcHMgZmlyc3QgcnVuXG4gICctLXNhZmVicm93c2luZy1kaXNhYmxlLWF1dG8tdXBkYXRlJywgLy8gRGlzYWJsZXMgU2FmZSBCcm93c2luZyBhdXRvLXVwZGF0ZVxuICAnLS1pZ25vcmUtY2VydGlmaWNhdGUtZXJyb3JzJywgLy8gSWdub3JlcyBjZXJ0aWZpY2F0ZSBlcnJvcnNcbiAgJy0taWdub3JlLXNzbC1lcnJvcnMnLCAvLyBJZ25vcmVzIFNTTCBlcnJvcnNcbiAgJy0taWdub3JlLWNlcnRpZmljYXRlLWVycm9ycy1zcGtpLWxpc3QnLCAvLyBJZ25vcmVzIGNlcnRpZmljYXRlIGVycm9ycyBpbiBTUEtJIGxpc3Rcbl07XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgcHJlZmVyLWNvbnN0XG5leHBvcnQgbGV0IGNsaWVudHNBcnJheTogV2hhdHNhcHBbXSA9IFtdO1xuZXhwb3J0IGNvbnN0IHNlc3Npb25zID0gW107XG5leHBvcnQgY29uc3QgZXZlbnRFbWl0dGVyID0gbmV3IEV2ZW50RW1pdHRlcigpO1xuXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlU2Vzc2lvbk9uQXJyYXkoc2Vzc2lvbjogc3RyaW5nKTogdm9pZCB7XG4gIGNvbnN0IG5ld0FycmF5ID0gY2xpZW50c0FycmF5O1xuICBkZWxldGUgY2xpZW50c0FycmF5W3Nlc3Npb25dO1xuICBjbGllbnRzQXJyYXkgPSBuZXdBcnJheTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUEsV0FBc0MsQ0FoQnRDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQUlPLE1BQU1DLFlBQVksR0FBRyxDQUMxQix3QkFBd0IsRUFBRTtBQUMxQixjQUFjLEVBQUU7QUFDaEIsNEJBQTRCLEVBQUU7QUFDOUIsaUJBQWlCLEVBQUU7QUFDbkIsNkJBQTZCLEVBQUU7QUFDL0Isb0NBQW9DLEVBQUU7QUFDdEMscUJBQXFCLEVBQUU7QUFDdkIsaUNBQWlDLEVBQUU7QUFDbkMsd0JBQXdCLEVBQUU7QUFDMUIsc0JBQXNCLEVBQUU7QUFDeEIsZ0JBQWdCLEVBQUU7QUFDbEIscUJBQXFCLEVBQUU7QUFDdkIsbUJBQW1CLEVBQUU7QUFDckIsMEJBQTBCLEVBQUU7QUFDNUIsY0FBYyxFQUFFO0FBQ2hCLGdCQUFnQixFQUFFO0FBQ2xCLG9DQUFvQyxFQUFFO0FBQ3RDLDZCQUE2QixFQUFFO0FBQy9CLHFCQUFxQixFQUFFO0FBQ3ZCLHVDQUF1QyxDQUFFO0FBQUEsQ0FDMUMsQ0FBQyxDQUNGO0FBQUFDLE9BQUEsQ0FBQUQsWUFBQSxHQUFBQSxZQUFBLENBQ08sSUFBSUUsWUFBd0IsR0FBRyxFQUFFLENBQUNELE9BQUEsQ0FBQUMsWUFBQSxHQUFBQSxZQUFBLENBQ2xDLE1BQU1DLFFBQVEsR0FBRyxFQUFFLENBQUNGLE9BQUEsQ0FBQUUsUUFBQSxHQUFBQSxRQUFBLENBQ3BCLE1BQU1DLFlBQVksR0FBRyxJQUFJQyxvQkFBWSxDQUFDLENBQUMsQ0FBQ0osT0FBQSxDQUFBRyxZQUFBLEdBQUFBLFlBQUEsQ0FFeEMsU0FBU0Usb0JBQW9CQSxDQUFDQyxPQUFlLEVBQVEsQ0FDMUQsTUFBTUMsUUFBUSxHQUFHTixZQUFZLENBQzdCLE9BQU9BLFlBQVksQ0FBQ0ssT0FBTyxDQUFDLENBQzVCTixPQUFBLENBQUFDLFlBQUEsR0FBQUEsWUFBWSxHQUFHTSxRQUFRLENBQ3pCIn0=
|
package/jest.config.js
ADDED
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@wppconnect/server",
|
|
3
|
-
"version": "2.2.
|
|
3
|
+
"version": "2.2.5",
|
|
4
4
|
"description": "Projeto feito para autenticar a automomacao do WhatsappWeb com multi-clientes de forma dinamica. Backend feito em Nodejs(express, socketio), FrontEnd (ReactJS)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"author": "kingaspx",
|
|
@@ -24,93 +24,91 @@
|
|
|
24
24
|
"swagger:copy-assets": "shx cp -R ./node_modules/swagger-ui-dist ./swagger-docs",
|
|
25
25
|
"swagger:copy-json": "shx cp ./src/swagger.json ./swagger-docs",
|
|
26
26
|
"swagger:fix-url": "sed -i \"s|https://petstore.swagger.io/v2/swagger.json|./swagger.json|g\" ./swagger-docs/index.html",
|
|
27
|
-
"swagger:generate": "yarn swagger:copy-assets && yarn swagger:copy-json && yarn swagger:fix-url"
|
|
28
|
-
|
|
29
|
-
"config": {
|
|
30
|
-
"commitizen": {
|
|
31
|
-
"path": "@commitlint/cz-commitlint"
|
|
32
|
-
}
|
|
27
|
+
"swagger:generate": "yarn swagger:copy-assets && yarn swagger:copy-json && yarn swagger:fix-url",
|
|
28
|
+
"test": "jest"
|
|
33
29
|
},
|
|
34
30
|
"dependencies": {
|
|
35
|
-
"@wppconnect-team/wppconnect": "^1.
|
|
36
|
-
"archiver": "^
|
|
31
|
+
"@wppconnect-team/wppconnect": "^1.28.0",
|
|
32
|
+
"archiver": "^6.0.0",
|
|
33
|
+
"@aws-sdk/client-s3": "^3.395.0",
|
|
37
34
|
"axios": "^1.4.0",
|
|
38
|
-
"bcrypt": "^5.1.
|
|
35
|
+
"bcrypt": "^5.1.1",
|
|
39
36
|
"buffer-to-stream": "1.0.0",
|
|
40
37
|
"cors": "^2.8.5",
|
|
41
38
|
"cross-env": "^7.0.3",
|
|
42
|
-
"dotenv": "^16.1
|
|
39
|
+
"dotenv": "^16.3.1",
|
|
43
40
|
"express": "^4.18.2",
|
|
44
41
|
"express-query-boolean": "^2.0.0",
|
|
45
42
|
"form-data": "^4.0.0",
|
|
46
43
|
"json-mapper-json": "^1.3.3",
|
|
47
44
|
"merge-deep": "^3.0.3",
|
|
48
45
|
"moment": "^2.29.4",
|
|
49
|
-
"multer": "^1.4.
|
|
46
|
+
"multer": "^1.4.5-lts.1",
|
|
50
47
|
"qrcode": "^1.5.3",
|
|
51
|
-
"socket.io": "^4.
|
|
52
|
-
"swagger-
|
|
48
|
+
"socket.io": "^4.7.2",
|
|
49
|
+
"swagger-autogen": "^2.23.5",
|
|
50
|
+
"swagger-ui-express": "^5.0.0",
|
|
53
51
|
"unzipper": "^0.10.14",
|
|
54
|
-
"winston": "^3.
|
|
52
|
+
"winston": "^3.10.0"
|
|
55
53
|
},
|
|
56
54
|
"devDependencies": {
|
|
57
|
-
"@babel/cli": "^7.
|
|
58
|
-
"@babel/core": "^7.22.
|
|
59
|
-
"@babel/eslint-parser": "^7.
|
|
60
|
-
"@babel/eslint-plugin": "^7.
|
|
61
|
-
"@babel/node": "^7.22.
|
|
62
|
-
"@babel/plugin-transform-runtime": "^7.22.
|
|
63
|
-
"@babel/preset-env": "^7.22.
|
|
64
|
-
"@babel/preset-typescript": "^7.
|
|
65
|
-
"@commitlint/cli": "^17.
|
|
66
|
-
"@commitlint/config-conventional": "^17.
|
|
67
|
-
"@commitlint/cz-commitlint": "^17.
|
|
55
|
+
"@babel/cli": "^7.22.10",
|
|
56
|
+
"@babel/core": "^7.22.11",
|
|
57
|
+
"@babel/eslint-parser": "^7.22.11",
|
|
58
|
+
"@babel/eslint-plugin": "^7.22.10",
|
|
59
|
+
"@babel/node": "^7.22.10",
|
|
60
|
+
"@babel/plugin-transform-runtime": "^7.22.10",
|
|
61
|
+
"@babel/preset-env": "^7.22.10",
|
|
62
|
+
"@babel/preset-typescript": "^7.22.11",
|
|
63
|
+
"@commitlint/cli": "^17.7.1",
|
|
64
|
+
"@commitlint/config-conventional": "^17.7.0",
|
|
65
|
+
"@commitlint/cz-commitlint": "^17.7.1",
|
|
68
66
|
"@types/archiver": "^5.3.2",
|
|
69
67
|
"@types/bcrypt": "^5.0.0",
|
|
70
|
-
"@types/buffer-to-stream": "^1.0.0",
|
|
71
68
|
"@types/cors": "^2.8.13",
|
|
72
69
|
"@types/express": "^4.17.17",
|
|
70
|
+
"@types/jest": "^29.5.4",
|
|
73
71
|
"@types/merge-deep": "^3.0.0",
|
|
74
72
|
"@types/mime-types": "^2.1.1",
|
|
75
73
|
"@types/multer": "^1.4.7",
|
|
76
|
-
"@types/node": "^18.
|
|
77
|
-
"@types/qrcode": "^1.5.
|
|
74
|
+
"@types/node": "^18.17.11",
|
|
75
|
+
"@types/qrcode": "^1.5.1",
|
|
78
76
|
"@types/swagger-ui-express": "^4.1.3",
|
|
79
77
|
"@types/unzipper": "^0.10.6",
|
|
80
|
-
"@typescript-eslint/eslint-plugin": "^
|
|
81
|
-
"aws-sdk": "^2.1390.0",
|
|
78
|
+
"@typescript-eslint/eslint-plugin": "^6.4.1",
|
|
82
79
|
"commitizen": "^4.3.0",
|
|
83
|
-
"conventional-changelog-cli": "^
|
|
80
|
+
"conventional-changelog-cli": "^3.0.0",
|
|
84
81
|
"crypto-js": "^4.1.1",
|
|
85
|
-
"eslint": "^8.
|
|
86
|
-
"eslint-config-prettier": "^
|
|
87
|
-
"eslint-config-standard-with-typescript": "^
|
|
88
|
-
"eslint-plugin-import": "^2.
|
|
89
|
-
"eslint-plugin-n": "^16.0.
|
|
82
|
+
"eslint": "^8.47.0",
|
|
83
|
+
"eslint-config-prettier": "^9.0.0",
|
|
84
|
+
"eslint-config-standard-with-typescript": "^37.0.0",
|
|
85
|
+
"eslint-plugin-import": "^2.28.1",
|
|
86
|
+
"eslint-plugin-n": "^16.0.1",
|
|
90
87
|
"eslint-plugin-prettier": "^4.2.1",
|
|
91
88
|
"eslint-plugin-promise": "^6.1.1",
|
|
92
89
|
"eslint-plugin-simple-import-sort": "^10.0.0",
|
|
93
90
|
"husky": "^8.0.3",
|
|
91
|
+
"jest": "^29.6.2",
|
|
94
92
|
"license-check-and-add": "^4.0.5",
|
|
95
|
-
"mongoose": "^7.
|
|
96
|
-
"nodemon": "^
|
|
93
|
+
"mongoose": "^7.4.5",
|
|
94
|
+
"nodemon": "^3.0.1",
|
|
97
95
|
"prettier": "^2.8.8",
|
|
98
96
|
"pretty-quick": "^3.1.3",
|
|
99
|
-
"
|
|
100
|
-
"
|
|
97
|
+
"prom-client": "^14.2.0",
|
|
98
|
+
"redis": "^4.6.8",
|
|
99
|
+
"release-it": "^16.1.5",
|
|
101
100
|
"rimraf": "^5.0.1",
|
|
102
101
|
"shx": "^0.3.4",
|
|
103
|
-
"
|
|
104
|
-
"swagger-ui-dist": "^4.
|
|
105
|
-
"ts-loader": "^9.4.
|
|
102
|
+
"ts-jest": "^29.1.1",
|
|
103
|
+
"swagger-ui-dist": "^5.4.2",
|
|
104
|
+
"ts-loader": "^9.4.4",
|
|
106
105
|
"ts-node": "^10.9.1",
|
|
107
|
-
"typescript": "^5.1.
|
|
108
|
-
"webpack-cli": "^5.1.
|
|
106
|
+
"typescript": "^5.1.6",
|
|
107
|
+
"webpack-cli": "^5.1.4"
|
|
109
108
|
},
|
|
110
109
|
"peerDependencies": {
|
|
111
|
-
"aws-sdk": "^2.1390.0",
|
|
112
110
|
"crypto-js": "^4.1.1",
|
|
113
|
-
"mongoose": "^7.
|
|
114
|
-
"redis": "^4.6.
|
|
111
|
+
"mongoose": "^7.4.5",
|
|
112
|
+
"redis": "^4.6.8"
|
|
115
113
|
}
|
|
116
114
|
}
|
package/tsconfig.json
CHANGED
|
@@ -31,8 +31,10 @@
|
|
|
31
31
|
// "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */
|
|
32
32
|
// "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */
|
|
33
33
|
// "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */
|
|
34
|
-
"typeRoots": [] /* Specify multiple folders that act like './node_modules/@types'. */,
|
|
35
|
-
|
|
34
|
+
//"typeRoots": [] /* Specify multiple folders that act like './node_modules/@types'. */,
|
|
35
|
+
"types": [
|
|
36
|
+
"jest"
|
|
37
|
+
] /* Specify type package names to be included without being referenced in a source file. */,
|
|
36
38
|
// "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */
|
|
37
39
|
// "moduleSuffixes": [], /* List of file name suffixes to search when resolving a module. */
|
|
38
40
|
"resolveJsonModule": true /* Enable importing .json files. */,
|
|
@@ -69,7 +71,7 @@
|
|
|
69
71
|
// "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */
|
|
70
72
|
|
|
71
73
|
/* Interop Constraints */
|
|
72
|
-
// "isolatedModules": true
|
|
74
|
+
// "isolatedModules": true /* Ensure that each file can be safely transpiled without relying on other imports. */,
|
|
73
75
|
// "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */
|
|
74
76
|
"esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables 'allowSyntheticDefaultImports' for type compatibility. */,
|
|
75
77
|
// "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */
|
|
@@ -101,5 +103,5 @@
|
|
|
101
103
|
"skipLibCheck": true /* Skip type checking all .d.ts files. */
|
|
102
104
|
},
|
|
103
105
|
"include": ["src/**/*"],
|
|
104
|
-
"exclude": ["node_modules"]
|
|
106
|
+
"exclude": ["src/tests/**/*", "node_modules"]
|
|
105
107
|
}
|