@wppconnect/server 2.2.4 → 2.3.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +4 -0
  2. package/Dockerfile +3 -3
  3. package/README.md +29 -6
  4. package/dist/config/upload.js +2 -2
  5. package/dist/config.js +28 -6
  6. package/dist/controller/deviceController.js +7 -14
  7. package/dist/controller/groupController.js +37 -6
  8. package/dist/controller/messageController.js +244 -27
  9. package/dist/controller/newsletterController.js +196 -0
  10. package/dist/controller/orderController.js +14 -27
  11. package/dist/controller/sessionController.js +20 -35
  12. package/dist/index.js +9 -3
  13. package/dist/mapper/index.js +2 -2
  14. package/dist/mapper/tagone-chat.js +3 -3
  15. package/dist/mapper/tagone-device.js +3 -3
  16. package/dist/mapper/tagone-message-document.js +3 -3
  17. package/dist/mapper/tagone-message-image.js +3 -3
  18. package/dist/mapper/tagone-message-location.js +3 -3
  19. package/dist/mapper/tagone-message-video.js +3 -3
  20. package/dist/mapper/tagone-message.js +3 -3
  21. package/dist/mapper/tagone-onack.js +3 -3
  22. package/dist/mapper/tagone-return.js +3 -3
  23. package/dist/middleware/auth.js +3 -3
  24. package/dist/middleware/instrumentation.js +39 -0
  25. package/dist/routes/index.js +65 -11
  26. package/dist/swagger.json +655 -107
  27. package/dist/tests/util/bufferUtils.test.js +54 -0
  28. package/dist/types/ServerOptions.js +1 -1
  29. package/dist/util/bucketAlreadyExists.js +26 -0
  30. package/dist/util/bufferutils.js +50 -0
  31. package/dist/util/chatWootClient.js +124 -38
  32. package/dist/util/createSessionUtil.js +25 -8
  33. package/dist/util/db/mongodb/db.js +3 -3
  34. package/dist/util/db/redis/db.js +3 -3
  35. package/dist/util/functions.js +85 -21
  36. package/dist/util/sessionUtil.js +23 -22
  37. package/dist/util/tokenStore/FileTokenStore/FileTokenStore.js +4 -4
  38. package/dist/util/tokenStore/factory.js +3 -3
  39. package/dist/util/tokenStore/fileTokenStory.js +3 -3
  40. package/dist/util/tokenStore/model/token.js +3 -3
  41. package/dist/util/tokenStore/mongodbTokenStory.js +3 -3
  42. package/dist/util/tokenStore/redisTokenStory.js +3 -3
  43. package/jest.config.js +5 -0
  44. package/package.json +59 -60
  45. package/tsconfig.json +6 -4
@@ -0,0 +1,54 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");var _stream = require("stream");
2
+
3
+ var _bufferutils = _interopRequireDefault(require("../../util/bufferutils"));
4
+
5
+ function generateRandomData(length) {
6
+ const characters =
7
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
8
+ let randomData = '';
9
+ for (let i = 0; i < length; i++) {
10
+ const randomIndex = Math.floor(Math.random() * characters.length);
11
+ randomData += characters.charAt(randomIndex);
12
+ }
13
+ return randomData;
14
+ }
15
+
16
+ describe('Utils Functions', function () {
17
+ describe('Buffer to Stream', function () {
18
+ const bodyToBuffer = generateRandomData(100);
19
+ const buffer = Buffer.from(bodyToBuffer, 'utf-8');
20
+
21
+ it('Should transform the Buffer in a Readable Stream', function () {
22
+ const bufferStream = _bufferutils.default.bufferToReadableStream(buffer);
23
+
24
+ // Assert that the bufferStream is a Readable stream
25
+ expect(bufferStream).toBeInstanceOf(_stream.Readable);
26
+ });
27
+
28
+ it('Should, on data end, checks if the Stream are correct', function () {
29
+ const bufferStream = _bufferutils.default.bufferToReadableStream(buffer);
30
+
31
+ let data = '';
32
+
33
+ bufferStream.on('data', (chunck) => {
34
+ data += chunck.toString('utf-8');
35
+ });
36
+
37
+ bufferStream.on('end', () => {
38
+ expect(data).toStrictEqual(bodyToBuffer);
39
+ });
40
+ });
41
+ });
42
+
43
+ describe('Async Buffer to Stream', function () {
44
+ const bodyToBuffer = generateRandomData(10000000);
45
+ const buffer = Buffer.from(bodyToBuffer, 'utf-8');
46
+
47
+ it('Should await the Buffer convertion and return a instance of readable', async function () {
48
+ const bufferStream = await _bufferutils.default.AsyncBufferToStream(buffer);
49
+
50
+ expect(bufferStream).toBeInstanceOf(_stream.Readable);
51
+ });
52
+ });
53
+ });
54
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3RyZWFtIiwicmVxdWlyZSIsIl9idWZmZXJ1dGlscyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJnZW5lcmF0ZVJhbmRvbURhdGEiLCJsZW5ndGgiLCJjaGFyYWN0ZXJzIiwicmFuZG9tRGF0YSIsImkiLCJyYW5kb21JbmRleCIsIk1hdGgiLCJmbG9vciIsInJhbmRvbSIsImNoYXJBdCIsImRlc2NyaWJlIiwiYm9keVRvQnVmZmVyIiwiYnVmZmVyIiwiQnVmZmVyIiwiZnJvbSIsIml0IiwiYnVmZmVyU3RyZWFtIiwiYnVmZmVyVXRpbHMiLCJidWZmZXJUb1JlYWRhYmxlU3RyZWFtIiwiZXhwZWN0IiwidG9CZUluc3RhbmNlT2YiLCJSZWFkYWJsZSIsImRhdGEiLCJvbiIsImNodW5jayIsInRvU3RyaW5nIiwidG9TdHJpY3RFcXVhbCIsIkFzeW5jQnVmZmVyVG9TdHJlYW0iXSwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvdGVzdHMvdXRpbC9idWZmZXJVdGlscy50ZXN0LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJlYWRhYmxlIH0gZnJvbSAnc3RyZWFtJztcblxuaW1wb3J0IGJ1ZmZlclV0aWxzIGZyb20gJy4uLy4uL3V0aWwvYnVmZmVydXRpbHMnO1xuXG5mdW5jdGlvbiBnZW5lcmF0ZVJhbmRvbURhdGEobGVuZ3RoOiBudW1iZXIpOiBzdHJpbmcge1xuICBjb25zdCBjaGFyYWN0ZXJzID1cbiAgICAnQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVphYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ejAxMjM0NTY3ODknO1xuICBsZXQgcmFuZG9tRGF0YSA9ICcnO1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGxlbmd0aDsgaSsrKSB7XG4gICAgY29uc3QgcmFuZG9tSW5kZXggPSBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiBjaGFyYWN0ZXJzLmxlbmd0aCk7XG4gICAgcmFuZG9tRGF0YSArPSBjaGFyYWN0ZXJzLmNoYXJBdChyYW5kb21JbmRleCk7XG4gIH1cbiAgcmV0dXJuIHJhbmRvbURhdGE7XG59XG5cbmRlc2NyaWJlKCdVdGlscyBGdW5jdGlvbnMnLCBmdW5jdGlvbiAoKSB7XG4gIGRlc2NyaWJlKCdCdWZmZXIgdG8gU3RyZWFtJywgZnVuY3Rpb24gKCkge1xuICAgIGNvbnN0IGJvZHlUb0J1ZmZlciA9IGdlbmVyYXRlUmFuZG9tRGF0YSgxMDApO1xuICAgIGNvbnN0IGJ1ZmZlciA9IEJ1ZmZlci5mcm9tKGJvZHlUb0J1ZmZlciwgJ3V0Zi04Jyk7XG5cbiAgICBpdCgnU2hvdWxkIHRyYW5zZm9ybSB0aGUgQnVmZmVyIGluIGEgUmVhZGFibGUgU3RyZWFtJywgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVmZmVyU3RyZWFtID0gYnVmZmVyVXRpbHMuYnVmZmVyVG9SZWFkYWJsZVN0cmVhbShidWZmZXIpO1xuXG4gICAgICAvLyBBc3NlcnQgdGhhdCB0aGUgYnVmZmVyU3RyZWFtIGlzIGEgUmVhZGFibGUgc3RyZWFtXG4gICAgICBleHBlY3QoYnVmZmVyU3RyZWFtKS50b0JlSW5zdGFuY2VPZihSZWFkYWJsZSk7XG4gICAgfSk7XG5cbiAgICBpdCgnU2hvdWxkLCBvbiBkYXRhIGVuZCwgY2hlY2tzIGlmIHRoZSBTdHJlYW0gYXJlIGNvcnJlY3QnLCBmdW5jdGlvbiAoKSB7XG4gICAgICBjb25zdCBidWZmZXJTdHJlYW0gPSBidWZmZXJVdGlscy5idWZmZXJUb1JlYWRhYmxlU3RyZWFtKGJ1ZmZlcik7XG5cbiAgICAgIGxldCBkYXRhID0gJyc7XG5cbiAgICAgIGJ1ZmZlclN0cmVhbS5vbignZGF0YScsIChjaHVuY2spID0+IHtcbiAgICAgICAgZGF0YSArPSBjaHVuY2sudG9TdHJpbmcoJ3V0Zi04Jyk7XG4gICAgICB9KTtcblxuICAgICAgYnVmZmVyU3RyZWFtLm9uKCdlbmQnLCAoKSA9PiB7XG4gICAgICAgIGV4cGVjdChkYXRhKS50b1N0cmljdEVxdWFsKGJvZHlUb0J1ZmZlcik7XG4gICAgICB9KTtcbiAgICB9KTtcbiAgfSk7XG5cbiAgZGVzY3JpYmUoJ0FzeW5jIEJ1ZmZlciB0byBTdHJlYW0nLCBmdW5jdGlvbiAoKSB7XG4gICAgY29uc3QgYm9keVRvQnVmZmVyID0gZ2VuZXJhdGVSYW5kb21EYXRhKDEwMDAwMDAwKTtcbiAgICBjb25zdCBidWZmZXIgPSBCdWZmZXIuZnJvbShib2R5VG9CdWZmZXIsICd1dGYtOCcpO1xuXG4gICAgaXQoJ1Nob3VsZCBhd2FpdCB0aGUgQnVmZmVyIGNvbnZlcnRpb24gYW5kIHJldHVybiBhIGluc3RhbmNlIG9mIHJlYWRhYmxlJywgYXN5bmMgZnVuY3Rpb24gKCkge1xuICAgICAgY29uc3QgYnVmZmVyU3RyZWFtID0gYXdhaXQgYnVmZmVyVXRpbHMuQXN5bmNCdWZmZXJUb1N0cmVhbShidWZmZXIpO1xuXG4gICAgICBleHBlY3QoYnVmZmVyU3RyZWFtKS50b0JlSW5zdGFuY2VPZihSZWFkYWJsZSk7XG4gICAgfSk7XG4gIH0pO1xufSk7XG4iXSwibWFwcGluZ3MiOiJrR0FBQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUE7O0FBRUEsSUFBQUMsWUFBQSxHQUFBQyxzQkFBQSxDQUFBRixPQUFBOztBQUVBLFNBQVNHLGtCQUFrQkEsQ0FBQ0MsTUFBYyxFQUFVO0VBQ2xELE1BQU1DLFVBQVU7RUFDZCxnRUFBZ0U7RUFDbEUsSUFBSUMsVUFBVSxHQUFHLEVBQUU7RUFDbkIsS0FBSyxJQUFJQyxDQUFDLEdBQUcsQ0FBQyxFQUFFQSxDQUFDLEdBQUdILE1BQU0sRUFBRUcsQ0FBQyxFQUFFLEVBQUU7SUFDL0IsTUFBTUMsV0FBVyxHQUFHQyxJQUFJLENBQUNDLEtBQUssQ0FBQ0QsSUFBSSxDQUFDRSxNQUFNLENBQUMsQ0FBQyxHQUFHTixVQUFVLENBQUNELE1BQU0sQ0FBQztJQUNqRUUsVUFBVSxJQUFJRCxVQUFVLENBQUNPLE1BQU0sQ0FBQ0osV0FBVyxDQUFDO0VBQzlDO0VBQ0EsT0FBT0YsVUFBVTtBQUNuQjs7QUFFQU8sUUFBUSxDQUFDLGlCQUFpQixFQUFFLFlBQVk7RUFDdENBLFFBQVEsQ0FBQyxrQkFBa0IsRUFBRSxZQUFZO0lBQ3ZDLE1BQU1DLFlBQVksR0FBR1gsa0JBQWtCLENBQUMsR0FBRyxDQUFDO0lBQzVDLE1BQU1ZLE1BQU0sR0FBR0MsTUFBTSxDQUFDQyxJQUFJLENBQUNILFlBQVksRUFBRSxPQUFPLENBQUM7O0lBRWpESSxFQUFFLENBQUMsa0RBQWtELEVBQUUsWUFBWTtNQUNqRSxNQUFNQyxZQUFZLEdBQUdDLG9CQUFXLENBQUNDLHNCQUFzQixDQUFDTixNQUFNLENBQUM7O01BRS9EO01BQ0FPLE1BQU0sQ0FBQ0gsWUFBWSxDQUFDLENBQUNJLGNBQWMsQ0FBQ0MsZ0JBQVEsQ0FBQztJQUMvQyxDQUFDLENBQUM7O0lBRUZOLEVBQUUsQ0FBQyx1REFBdUQsRUFBRSxZQUFZO01BQ3RFLE1BQU1DLFlBQVksR0FBR0Msb0JBQVcsQ0FBQ0Msc0JBQXNCLENBQUNOLE1BQU0sQ0FBQzs7TUFFL0QsSUFBSVUsSUFBSSxHQUFHLEVBQUU7O01BRWJOLFlBQVksQ0FBQ08sRUFBRSxDQUFDLE1BQU0sRUFBRSxDQUFDQyxNQUFNLEtBQUs7UUFDbENGLElBQUksSUFBSUUsTUFBTSxDQUFDQyxRQUFRLENBQUMsT0FBTyxDQUFDO01BQ2xDLENBQUMsQ0FBQzs7TUFFRlQsWUFBWSxDQUFDTyxFQUFFLENBQUMsS0FBSyxFQUFFLE1BQU07UUFDM0JKLE1BQU0sQ0FBQ0csSUFBSSxDQUFDLENBQUNJLGFBQWEsQ0FBQ2YsWUFBWSxDQUFDO01BQzFDLENBQUMsQ0FBQztJQUNKLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQzs7RUFFRkQsUUFBUSxDQUFDLHdCQUF3QixFQUFFLFlBQVk7SUFDN0MsTUFBTUMsWUFBWSxHQUFHWCxrQkFBa0IsQ0FBQyxRQUFRLENBQUM7SUFDakQsTUFBTVksTUFBTSxHQUFHQyxNQUFNLENBQUNDLElBQUksQ0FBQ0gsWUFBWSxFQUFFLE9BQU8sQ0FBQzs7SUFFakRJLEVBQUUsQ0FBQyxzRUFBc0UsRUFBRSxrQkFBa0I7TUFDM0YsTUFBTUMsWUFBWSxHQUFHLE1BQU1DLG9CQUFXLENBQUNVLG1CQUFtQixDQUFDZixNQUFNLENBQUM7O01BRWxFTyxNQUFNLENBQUNILFlBQVksQ0FBQyxDQUFDSSxjQUFjLENBQUNDLGdCQUFRLENBQUM7SUFDL0MsQ0FBQyxDQUFDO0VBQ0osQ0FBQyxDQUFDO0FBQ0osQ0FBQyxDQUFDIn0=
@@ -1,2 +1,2 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", { value: true });
2
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL1NlcnZlck9wdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJPcHRpb25zIHtcbiAgc2VjcmV0S2V5OiBzdHJpbmc7XG4gIGhvc3Q6IHN0cmluZztcbiAgcG9ydDogbnVtYmVyO1xuICBkZXZpY2VOYW1lOiBzdHJpbmc7XG4gIHBvd2VyZWRCeTogc3RyaW5nO1xuICBzdGFydEFsbFNlc3Npb246IGJvb2xlYW47XG4gIHRva2VuU3RvcmVUeXBlOiBzdHJpbmc7XG4gIG1heExpc3RlbmVyczogbnVtYmVyO1xuICBjdXN0b21Vc2VyRGF0YURpcjogc3RyaW5nO1xuICB3ZWJob29rOiB7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgYXV0b0Rvd25sb2FkOiBib29sZWFuO1xuICAgIHVwbG9hZFMzOiBib29sZWFuO1xuICAgIHJlYWRNZXNzYWdlOiBib29sZWFuO1xuICAgIGFsbFVucmVhZE9uU3RhcnQ6IGJvb2xlYW47XG4gICAgbGlzdGVuQWNrczogYm9vbGVhbjtcbiAgICBvblByZXNlbmNlQ2hhbmdlZDogYm9vbGVhbjtcbiAgICBvblBhcnRpY2lwYW50c0NoYW5nZWQ6IGJvb2xlYW47XG4gICAgb25SZWFjdGlvbk1lc3NhZ2U6IGJvb2xlYW47XG4gICAgb25Qb2xsUmVzcG9uc2U6IGJvb2xlYW47XG4gICAgb25SZXZva2VkTWVzc2FnZTogYm9vbGVhbjtcbiAgfTtcbiAgYXJjaGl2ZToge1xuICAgIGVuYWJsZTogYm9vbGVhbjtcbiAgICB3YWl0VGltZTogbnVtYmVyO1xuICAgIGRheXNUb0FyY2hpdmU6IG51bWJlcjtcbiAgfTtcbiAgbG9nOiB7XG4gICAgbGV2ZWw6IHN0cmluZztcbiAgICBsb2dnZXI6IHN0cmluZ1tdO1xuICB9O1xuICBjcmVhdGVPcHRpb25zOiB7XG4gICAgYnJvd3NlckFyZ3M6IHN0cmluZ1tdO1xuICB9O1xuICBtYXBwZXI6IHtcbiAgICBlbmFibGU6IGJvb2xlYW47XG4gICAgcHJlZml4OiBzdHJpbmc7XG4gIH07XG4gIGRiOiB7XG4gICAgbW9uZ29kYkRhdGFiYXNlOiBzdHJpbmc7XG4gICAgbW9uZ29kYkNvbGxlY3Rpb246IHN0cmluZztcbiAgICBtb25nb2RiVXNlcjogc3RyaW5nO1xuICAgIG1vbmdvZGJQYXNzd29yZDogc3RyaW5nO1xuICAgIG1vbmdvZGJIb3N0OiBzdHJpbmc7XG4gICAgbW9uZ29Jc1JlbW90ZTogYm9vbGVhbjtcbiAgICBtb25nb1VSTFJlbW90ZTogc3RyaW5nO1xuICAgIG1vbmdvZGJQb3J0OiBudW1iZXI7XG4gICAgcmVkaXNIb3N0OiBzdHJpbmc7XG4gICAgcmVkaXNQb3J0OiBudW1iZXI7XG4gICAgcmVkaXNQYXNzd29yZDogc3RyaW5nO1xuICAgIHJlZGlzRGI6IHN0cmluZztcbiAgICByZWRpc1ByZWZpeDogc3RyaW5nO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiIn0=
2
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3R5cGVzL1NlcnZlck9wdGlvbnMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQnVja2V0TG9jYXRpb25Db25zdHJhaW50IH0gZnJvbSAnQGF3cy1zZGsvY2xpZW50LXMzJztcblxuZXhwb3J0IGludGVyZmFjZSBTZXJ2ZXJPcHRpb25zIHtcbiAgc2VjcmV0S2V5OiBzdHJpbmc7XG4gIGhvc3Q6IHN0cmluZztcbiAgcG9ydDogbnVtYmVyO1xuICBkZXZpY2VOYW1lOiBzdHJpbmc7XG4gIHBvd2VyZWRCeTogc3RyaW5nO1xuICBzdGFydEFsbFNlc3Npb246IGJvb2xlYW47XG4gIHRva2VuU3RvcmVUeXBlOiBzdHJpbmc7XG4gIG1heExpc3RlbmVyczogbnVtYmVyO1xuICBjdXN0b21Vc2VyRGF0YURpcjogc3RyaW5nO1xuICB3ZWJob29rOiB7XG4gICAgdXJsOiBzdHJpbmc7XG4gICAgYXV0b0Rvd25sb2FkOiBib29sZWFuO1xuICAgIHVwbG9hZFMzOiBib29sZWFuO1xuICAgIHJlYWRNZXNzYWdlOiBib29sZWFuO1xuICAgIGFsbFVucmVhZE9uU3RhcnQ6IGJvb2xlYW47XG4gICAgbGlzdGVuQWNrczogYm9vbGVhbjtcbiAgICBvblByZXNlbmNlQ2hhbmdlZDogYm9vbGVhbjtcbiAgICBvblBhcnRpY2lwYW50c0NoYW5nZWQ6IGJvb2xlYW47XG4gICAgb25SZWFjdGlvbk1lc3NhZ2U6IGJvb2xlYW47XG4gICAgb25Qb2xsUmVzcG9uc2U6IGJvb2xlYW47XG4gICAgb25SZXZva2VkTWVzc2FnZTogYm9vbGVhbjtcbiAgICBvblNlbGZNZXNzYWdlOiBib29sZWFuO1xuICAgIGlnbm9yZTogc3RyaW5nW107XG4gIH07XG4gIHdlYnNvY2tldDoge1xuICAgIGF1dG9Eb3dubG9hZDogYm9vbGVhbjtcbiAgICB1cGxvYWRTMzogYm9vbGVhbjtcbiAgfTtcbiAgYXJjaGl2ZToge1xuICAgIGVuYWJsZTogYm9vbGVhbjtcbiAgICB3YWl0VGltZTogbnVtYmVyO1xuICAgIGRheXNUb0FyY2hpdmU6IG51bWJlcjtcbiAgfTtcbiAgbG9nOiB7XG4gICAgbGV2ZWw6IHN0cmluZztcbiAgICBsb2dnZXI6IHN0cmluZ1tdO1xuICB9O1xuICBjcmVhdGVPcHRpb25zOiB7XG4gICAgYnJvd3NlckFyZ3M6IHN0cmluZ1tdO1xuICB9O1xuICBtYXBwZXI6IHtcbiAgICBlbmFibGU6IGJvb2xlYW47XG4gICAgcHJlZml4OiBzdHJpbmc7XG4gIH07XG4gIGRiOiB7XG4gICAgbW9uZ29kYkRhdGFiYXNlOiBzdHJpbmc7XG4gICAgbW9uZ29kYkNvbGxlY3Rpb246IHN0cmluZztcbiAgICBtb25nb2RiVXNlcjogc3RyaW5nO1xuICAgIG1vbmdvZGJQYXNzd29yZDogc3RyaW5nO1xuICAgIG1vbmdvZGJIb3N0OiBzdHJpbmc7XG4gICAgbW9uZ29Jc1JlbW90ZTogYm9vbGVhbjtcbiAgICBtb25nb1VSTFJlbW90ZTogc3RyaW5nO1xuICAgIG1vbmdvZGJQb3J0OiBudW1iZXI7XG4gICAgcmVkaXNIb3N0OiBzdHJpbmc7XG4gICAgcmVkaXNQb3J0OiBudW1iZXI7XG4gICAgcmVkaXNQYXNzd29yZDogc3RyaW5nO1xuICAgIHJlZGlzRGI6IHN0cmluZztcbiAgICByZWRpc1ByZWZpeDogc3RyaW5nO1xuICB9O1xuICBhd3NfczM6IHtcbiAgICByZWdpb246IEJ1Y2tldExvY2F0aW9uQ29uc3RyYWludCB8IG51bGw7XG4gICAgYWNjZXNzX2tleV9pZDogc3RyaW5nIHwgbnVsbDtcbiAgICBzZWNyZXRfa2V5OiBzdHJpbmcgfCBudWxsO1xuICAgIGRlZmF1bHRCdWNrZXROYW1lOiBzdHJpbmcgfCBudWxsO1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,26 @@
1
+ "use strict";var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");Object.defineProperty(exports, "__esModule", { value: true });exports.bucketAlreadyExists = bucketAlreadyExists;var _clientS = require("@aws-sdk/client-s3");
2
+
3
+ var _ = require("..");
4
+ var _config = _interopRequireDefault(require("../config"));
5
+
6
+ async function bucketAlreadyExists(bucketName) {
7
+ // eslint-disable-next-line no-async-promise-executor
8
+ return new Promise(async (resolve, reject) => {
9
+ const s3Client = new _clientS.S3Client({ region: _config.default.aws_s3.region });
10
+
11
+ const command = new _clientS.HeadBucketCommand({ Bucket: bucketName });
12
+
13
+ try {
14
+ await s3Client.send(command);
15
+ resolve(true);
16
+ } catch (error) {
17
+ if (error.name === 'NoSuchBucket' || error.name === 'NotFound') {
18
+ resolve(false);
19
+ } else {
20
+ _.logger.error(error);
21
+ reject(error);
22
+ }
23
+ }
24
+ });
25
+ }
26
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfY2xpZW50UyIsInJlcXVpcmUiLCJfIiwiX2NvbmZpZyIsIl9pbnRlcm9wUmVxdWlyZURlZmF1bHQiLCJidWNrZXRBbHJlYWR5RXhpc3RzIiwiYnVja2V0TmFtZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiczNDbGllbnQiLCJTM0NsaWVudCIsInJlZ2lvbiIsImNvbmZpZyIsImF3c19zMyIsImNvbW1hbmQiLCJIZWFkQnVja2V0Q29tbWFuZCIsIkJ1Y2tldCIsInNlbmQiLCJlcnJvciIsIm5hbWUiLCJsb2dnZXIiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9idWNrZXRBbHJlYWR5RXhpc3RzLnRzIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEhlYWRCdWNrZXRDb21tYW5kLCBTM0NsaWVudCB9IGZyb20gJ0Bhd3Mtc2RrL2NsaWVudC1zMyc7XG5cbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uJztcbmltcG9ydCBjb25maWcgZnJvbSAnLi4vY29uZmlnJztcblxuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGJ1Y2tldEFscmVhZHlFeGlzdHMoYnVja2V0TmFtZTogc3RyaW5nKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBuby1hc3luYy1wcm9taXNlLWV4ZWN1dG9yXG4gIHJldHVybiBuZXcgUHJvbWlzZShhc3luYyAocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgczNDbGllbnQgPSBuZXcgUzNDbGllbnQoeyByZWdpb246IGNvbmZpZy5hd3NfczMucmVnaW9uIH0pO1xuXG4gICAgY29uc3QgY29tbWFuZCA9IG5ldyBIZWFkQnVja2V0Q29tbWFuZCh7IEJ1Y2tldDogYnVja2V0TmFtZSB9KTtcblxuICAgIHRyeSB7XG4gICAgICBhd2FpdCBzM0NsaWVudC5zZW5kKGNvbW1hbmQpO1xuICAgICAgcmVzb2x2ZSh0cnVlKTtcbiAgICB9IGNhdGNoIChlcnJvcjogYW55KSB7XG4gICAgICBpZiAoZXJyb3IubmFtZSA9PT0gJ05vU3VjaEJ1Y2tldCcgfHwgZXJyb3IubmFtZSA9PT0gJ05vdEZvdW5kJykge1xuICAgICAgICByZXNvbHZlKGZhbHNlKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGxvZ2dlci5lcnJvcihlcnJvcik7XG4gICAgICAgIHJlamVjdChlcnJvcik7XG4gICAgICB9XG4gICAgfVxuICB9KTtcbn1cbiJdLCJtYXBwaW5ncyI6ImtOQUFBLElBQUFBLFFBQUEsR0FBQUMsT0FBQTs7QUFFQSxJQUFBQyxDQUFBLEdBQUFELE9BQUE7QUFDQSxJQUFBRSxPQUFBLEdBQUFDLHNCQUFBLENBQUFILE9BQUE7O0FBRU8sZUFBZUksbUJBQW1CQSxDQUFDQyxVQUFrQixFQUFFO0VBQzVEO0VBQ0EsT0FBTyxJQUFJQyxPQUFPLENBQUMsT0FBT0MsT0FBTyxFQUFFQyxNQUFNLEtBQUs7SUFDNUMsTUFBTUMsUUFBUSxHQUFHLElBQUlDLGlCQUFRLENBQUMsRUFBRUMsTUFBTSxFQUFFQyxlQUFNLENBQUNDLE1BQU0sQ0FBQ0YsTUFBTSxDQUFDLENBQUMsQ0FBQzs7SUFFL0QsTUFBTUcsT0FBTyxHQUFHLElBQUlDLDBCQUFpQixDQUFDLEVBQUVDLE1BQU0sRUFBRVgsVUFBVSxDQUFDLENBQUMsQ0FBQzs7SUFFN0QsSUFBSTtNQUNGLE1BQU1JLFFBQVEsQ0FBQ1EsSUFBSSxDQUFDSCxPQUFPLENBQUM7TUFDNUJQLE9BQU8sQ0FBQyxJQUFJLENBQUM7SUFDZixDQUFDLENBQUMsT0FBT1csS0FBVSxFQUFFO01BQ25CLElBQUlBLEtBQUssQ0FBQ0MsSUFBSSxLQUFLLGNBQWMsSUFBSUQsS0FBSyxDQUFDQyxJQUFJLEtBQUssVUFBVSxFQUFFO1FBQzlEWixPQUFPLENBQUMsS0FBSyxDQUFDO01BQ2hCLENBQUMsTUFBTTtRQUNMYSxRQUFNLENBQUNGLEtBQUssQ0FBQ0EsS0FBSyxDQUFDO1FBQ25CVixNQUFNLENBQUNVLEtBQUssQ0FBQztNQUNmO0lBQ0Y7RUFDRixDQUFDLENBQUM7QUFDSiJ9
@@ -0,0 +1,50 @@
1
+ "use strict";Object.defineProperty(exports, "__esModule", { value: true });exports.default = void 0;
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+
13
+
14
+
15
+
16
+
17
+ var _stream = require("stream"); /*
18
+ * Copyright 2021 WPPConnect Team
19
+ *
20
+ * Licensed under the Apache License, Version 2.0 (the "License");
21
+ * you may not use this file except in compliance with the License.
22
+ * You may obtain a copy of the License at
23
+ *
24
+ * http://www.apache.org/licenses/LICENSE-2.0
25
+ *
26
+ * Unless required by applicable law or agreed to in writing, software
27
+ * distributed under the License is distributed on an "AS IS" BASIS,
28
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
29
+ * See the License for the specific language governing permissions and
30
+ * limitations under the License.
31
+ */ // type AsyncBufferToStream
32
+ function bufferToReadableStream(buffer) {const readableInstanceStream = new _stream.Readable({ read() {this.push(buffer);this.push(null);} });return readableInstanceStream;}async function AsyncBufferToStream(buffer) {
33
+ return new Promise((resolve, reject) => {
34
+ const bufferStream = bufferToReadableStream(buffer);
35
+ bufferStream.on('data', () => {
36
+
37
+ // data = chunck;
38
+ });
39
+ bufferStream.on('end', () => {
40
+ resolve(bufferStream);
41
+ });
42
+
43
+ bufferStream.on('error', (error) => {
44
+ reject(error);
45
+ });
46
+ });
47
+ }var _default = exports.default =
48
+
49
+ { bufferToReadableStream, AsyncBufferToStream };
50
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfc3RyZWFtIiwicmVxdWlyZSIsImJ1ZmZlclRvUmVhZGFibGVTdHJlYW0iLCJidWZmZXIiLCJyZWFkYWJsZUluc3RhbmNlU3RyZWFtIiwiUmVhZGFibGUiLCJyZWFkIiwicHVzaCIsIkFzeW5jQnVmZmVyVG9TdHJlYW0iLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImJ1ZmZlclN0cmVhbSIsIm9uIiwiZXJyb3IiLCJfZGVmYXVsdCIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvYnVmZmVydXRpbHMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIxIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuXG5pbXBvcnQgeyBSZWFkYWJsZSB9IGZyb20gJ3N0cmVhbSc7XG5cbi8vIHR5cGUgQXN5bmNCdWZmZXJUb1N0cmVhbVxuXG5mdW5jdGlvbiBidWZmZXJUb1JlYWRhYmxlU3RyZWFtKGJ1ZmZlcjogQnVmZmVyKTogUmVhZGFibGUge1xuICBjb25zdCByZWFkYWJsZUluc3RhbmNlU3RyZWFtID0gbmV3IFJlYWRhYmxlKHtcbiAgICByZWFkKCkge1xuICAgICAgdGhpcy5wdXNoKGJ1ZmZlcik7XG4gICAgICB0aGlzLnB1c2gobnVsbCk7XG4gICAgfSxcbiAgfSk7XG5cbiAgcmV0dXJuIHJlYWRhYmxlSW5zdGFuY2VTdHJlYW07XG59XG5cbmFzeW5jIGZ1bmN0aW9uIEFzeW5jQnVmZmVyVG9TdHJlYW0oYnVmZmVyOiBCdWZmZXIpOiBQcm9taXNlPFJlYWRhYmxlPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XG4gICAgY29uc3QgYnVmZmVyU3RyZWFtID0gYnVmZmVyVG9SZWFkYWJsZVN0cmVhbShidWZmZXIpO1xuICAgIGJ1ZmZlclN0cmVhbS5vbignZGF0YScsICgpID0+IHtcbiAgICAgIC8vIGRhdGEgPSBjaHVuY2s7XG4gICAgfSk7XG5cbiAgICBidWZmZXJTdHJlYW0ub24oJ2VuZCcsICgpID0+IHtcbiAgICAgIHJlc29sdmUoYnVmZmVyU3RyZWFtKTtcbiAgICB9KTtcblxuICAgIGJ1ZmZlclN0cmVhbS5vbignZXJyb3InLCAoZXJyb3IpID0+IHtcbiAgICAgIHJlamVjdChlcnJvcik7XG4gICAgfSk7XG4gIH0pO1xufVxuXG5leHBvcnQgZGVmYXVsdCB7IGJ1ZmZlclRvUmVhZGFibGVTdHJlYW0sIEFzeW5jQnVmZmVyVG9TdHJlYW0gfTtcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7OztBQWdCQSxJQUFBQSxPQUFBLEdBQUFDLE9BQUEsV0FBa0MsQ0FoQmxDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQWRBLENBa0JBO0FBRUEsU0FBU0Msc0JBQXNCQSxDQUFDQyxNQUFjLEVBQVksQ0FDeEQsTUFBTUMsc0JBQXNCLEdBQUcsSUFBSUMsZ0JBQVEsQ0FBQyxFQUMxQ0MsSUFBSUEsQ0FBQSxFQUFHLENBQ0wsSUFBSSxDQUFDQyxJQUFJLENBQUNKLE1BQU0sQ0FBQyxDQUNqQixJQUFJLENBQUNJLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FDakIsQ0FBQyxDQUNILENBQUMsQ0FBQyxDQUVGLE9BQU9ILHNCQUFzQixDQUMvQixDQUVBLGVBQWVJLG1CQUFtQkEsQ0FBQ0wsTUFBYyxFQUFxQjtFQUNwRSxPQUFPLElBQUlNLE9BQU8sQ0FBQyxDQUFDQyxPQUFPLEVBQUVDLE1BQU0sS0FBSztJQUN0QyxNQUFNQyxZQUFZLEdBQUdWLHNCQUFzQixDQUFDQyxNQUFNLENBQUM7SUFDbkRTLFlBQVksQ0FBQ0MsRUFBRSxDQUFDLE1BQU0sRUFBRSxNQUFNOztNQUM1QjtJQUFBLENBQ0QsQ0FBQztJQUVGRCxZQUFZLENBQUNDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsTUFBTTtNQUMzQkgsT0FBTyxDQUFDRSxZQUFZLENBQUM7SUFDdkIsQ0FBQyxDQUFDOztJQUVGQSxZQUFZLENBQUNDLEVBQUUsQ0FBQyxPQUFPLEVBQUUsQ0FBQ0MsS0FBSyxLQUFLO01BQ2xDSCxNQUFNLENBQUNHLEtBQUssQ0FBQztJQUNmLENBQUMsQ0FBQztFQUNKLENBQUMsQ0FBQztBQUNKLENBQUMsSUFBQUMsUUFBQSxHQUFBQyxPQUFBLENBQUFDLE9BQUE7O0FBRWMsRUFBRWYsc0JBQXNCLEVBQUVNLG1CQUFtQixDQUFDLENBQUMifQ==
@@ -14,10 +14,11 @@
14
14
 
15
15
 
16
16
  var _axios = _interopRequireDefault(require("axios"));
17
- var _bufferToStream = _interopRequireDefault(require("buffer-to-stream"));
18
17
  var _formData = _interopRequireDefault(require("form-data"));
19
18
  var _mimeTypes = _interopRequireDefault(require("mime-types"));
20
19
 
20
+ var _bufferutils = _interopRequireDefault(require("./bufferutils"));
21
+
21
22
  var _sessionUtil = require("./sessionUtil"); /*
22
23
  * Copyright 2021 WPPConnect Team
23
24
  *
@@ -32,8 +33,8 @@ var _sessionUtil = require("./sessionUtil"); /*
32
33
  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
33
34
  * See the License for the specific language governing permissions and
34
35
  * limitations under the License.
35
- */class chatWootClient {constructor(config, session) {this.config = config;this.mobile_name = this.config.mobile_name ?
36
- this.config.mobile_name :
36
+ */ // import bufferUtils from './bufferutils';
37
+ class chatWootClient {constructor(config, session) {this.config = config;this.mobile_name = this.config.mobile_name ? this.config.mobile_name :
37
38
  `WPPConnect`;
38
39
  this.mobile_number = this.config.mobile_number ?
39
40
  this.config.mobile_number :
@@ -86,8 +87,94 @@ var _sessionUtil = require("./sessionUtil"); /*
86
87
  });
87
88
  }
88
89
 
90
+ // async sendMessage(client: any, message: any) {
91
+ // if (message.isGroupMsg || message.chatId.indexOf('@broadcast') > 0) return;
92
+ // const contact = await this.createContact(message);
93
+ // const conversation = await this.createConversation(
94
+ // contact,
95
+ // message.chatId.split('@')[0]
96
+ // );
97
+
98
+ // try {
99
+ // if (
100
+ // message.type == 'image' ||
101
+ // message.type == 'video' ||
102
+ // message.type == 'in' ||
103
+ // message.type == 'document' ||
104
+ // message.type == 'ptt' ||
105
+ // message.type == 'audio' ||
106
+ // message.type == 'sticker'
107
+ // ) {
108
+ // if (message.mimetype == 'image/webp') message.mimetype = 'image/jpeg';
109
+ // const extension = mime.extension(message.mimetype);
110
+ // const filename = `${message.timestamp}.${extension}`;
111
+ // let b64;
112
+
113
+ // if (message.qrCode) b64 = message.qrCode;
114
+ // else {
115
+ // const buffer = await client.decryptFile(message);
116
+ // b64 = await buffer.toString('base64');
117
+ // }
118
+
119
+ // const mediaData = Buffer.from(b64, 'base64');
120
+
121
+ // // Create a readable stream from the Buffer
122
+ // const stream = new Readable();
123
+ // stream.push(mediaData);
124
+ // stream.push(null); // Signaling the end of the stream
125
+
126
+ // const data = new FormData();
127
+ // if (message.caption) {
128
+ // data.append('content', message.caption);
129
+ // }
130
+
131
+ // data.append('attachments[]', stream, {
132
+ // filename: filename,
133
+ // contentType: message.mimetype,
134
+ // });
135
+
136
+ // data.append('message_type', 'incoming');
137
+ // data.append('private', 'false');
138
+
139
+ // const configPost = Object.assign(
140
+ // {},
141
+ // {
142
+ // baseURL: this.config.baseURL,
143
+ // headers: {
144
+ // 'Content-Type': 'application/json;charset=utf-8',
145
+ // api_access_token: this.config.token,
146
+ // },
147
+ // }
148
+ // );
149
+
150
+ // configPost.headers = { ...configPost.headers, ...data.getHeaders() };
151
+ // console.log('PRÉ-REQUEST');
152
+ // const result = await axios.post(
153
+ // `api/v1/accounts/${this.account_id}/conversations/${conversation.id}/messages`,
154
+ // data,
155
+ // configPost
156
+ // );
157
+ // console.log('POS-REQUEST');
158
+ // return result;
159
+ // } else {
160
+ // const body = {
161
+ // content: message.body,
162
+ // message_type: 'incoming',
163
+ // };
164
+ // const { data } = await this.api.post(
165
+ // `api/v1/accounts/${this.account_id}/conversations/${conversation.id}/messages`,
166
+ // body
167
+ // );
168
+ // return data;
169
+ // }
170
+ // } catch (e) {
171
+ // return null;
172
+ // }
173
+ // }
174
+
89
175
  async sendMessage(client, message) {
90
176
  if (message.isGroupMsg || message.chatId.indexOf('@broadcast') > 0) return;
177
+
91
178
  const contact = await this.createContact(message);
92
179
  const conversation = await this.createConversation(
93
180
  contact,
@@ -96,55 +183,54 @@ var _sessionUtil = require("./sessionUtil"); /*
96
183
 
97
184
  try {
98
185
  if (
99
- message.type == 'image' ||
100
- message.type == 'video' ||
101
- message.type == 'in' ||
102
- message.type == 'document' ||
103
- message.type == 'ptt' ||
104
- message.type == 'audio' ||
105
- message.type == 'sticker')
186
+ [
187
+ 'image',
188
+ 'video',
189
+ 'in',
190
+ 'document',
191
+ 'ptt',
192
+ 'audio',
193
+ 'sticker'].
194
+ includes(message.type))
106
195
  {
107
- if (message.mimetype == 'image/webp') message.mimetype = 'image/jpeg';
196
+ if (message.mimetype === 'image/webp') message.mimetype = 'image/jpeg';
108
197
  const extension = _mimeTypes.default.extension(message.mimetype);
109
198
  const filename = `${message.timestamp}.${extension}`;
110
199
  let b64;
111
200
 
112
- if (message.qrCode) b64 = message.qrCode;else
113
- {
201
+ if (message.qrCode) {
202
+ b64 = message.qrCode;
203
+ } else {
114
204
  const buffer = await client.decryptFile(message);
115
- b64 = await buffer.toString('base64');
205
+ b64 = buffer.toString('base64');
116
206
  }
117
207
 
118
208
  const mediaData = Buffer.from(b64, 'base64');
209
+ const stream = _bufferutils.default.bufferToReadableStream(mediaData);
119
210
 
120
211
  const data = new _formData.default();
121
212
  if (message.caption) {
122
213
  data.append('content', message.caption);
123
214
  }
124
- data.append('attachments[]', (0, _bufferToStream.default)(mediaData), {
215
+
216
+ data.append('attachments[]', stream, {
125
217
  filename: filename,
126
218
  contentType: message.mimetype
127
219
  });
220
+
128
221
  data.append('message_type', 'incoming');
129
222
  data.append('private', 'false');
130
223
 
131
- const configPost = Object.assign(
132
- {},
133
- {
134
- baseURL: this.config.baseURL,
135
- headers: {
136
- 'Content-Type': 'application/json;charset=utf-8',
137
- api_access_token: this.config.token
138
- }
224
+ const configPost = {
225
+ baseURL: this.config.baseURL,
226
+ headers: {
227
+ api_access_token: this.config.token,
228
+ ...data.getHeaders()
139
229
  }
140
- );
141
- configPost.headers = { ...configPost.headers, ...data.getHeaders() };
230
+ };
231
+ const endpoint = `api/v1/accounts/${this.account_id}/conversations/${conversation.id}/messages`;
142
232
 
143
- const result = await _axios.default.post(
144
- `api/v1/accounts/${this.account_id}/conversations/${conversation.id}/messages`,
145
- data,
146
- configPost
147
- );
233
+ const result = await _axios.default.post(endpoint, data, configPost);
148
234
 
149
235
  return result;
150
236
  } else {
@@ -152,13 +238,13 @@ var _sessionUtil = require("./sessionUtil"); /*
152
238
  content: message.body,
153
239
  message_type: 'incoming'
154
240
  };
155
- const { data } = await this.api.post(
156
- `api/v1/accounts/${this.account_id}/conversations/${conversation.id}/messages`,
157
- body
158
- );
241
+ const endpoint = `api/v1/accounts/${this.account_id}/conversations/${conversation.id}/messages`;
242
+
243
+ const { data } = await this.api.post(endpoint, body);
159
244
  return data;
160
245
  }
161
246
  } catch (e) {
247
+ console.error('Error sending message:', e);
162
248
  return null;
163
249
  }
164
250
  }
@@ -205,10 +291,10 @@ var _sessionUtil = require("./sessionUtil"); /*
205
291
  async findConversation(contact) {
206
292
  try {
207
293
  const { data } = await this.api.get(
208
- `api/v1/accounts/${this.account_id}/conversations?inbox_id=${this.inbox_id}&status=all`
294
+ `api/v1/accounts/${this.account_id}/contacts/${contact.id}/conversations`
209
295
  );
210
- return data.data.payload.find(
211
- (e) => e.meta.sender.id == contact.id && e.status != 'resolved'
296
+ return data.payload.find(
297
+ (e) => e.inbox_id == this.inbox_id && e.status != 'resolved'
212
298
  );
213
299
  } catch (e) {
214
300
  console.log(e);
@@ -239,4 +325,4 @@ var _sessionUtil = require("./sessionUtil"); /*
239
325
  }
240
326
  }
241
327
  }exports.default = chatWootClient;
242
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXhpb3MiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9idWZmZXJUb1N0cmVhbSIsIl9mb3JtRGF0YSIsIl9taW1lVHlwZXMiLCJfc2Vzc2lvblV0aWwiLCJjaGF0V29vdENsaWVudCIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwic2Vzc2lvbiIsIm1vYmlsZV9uYW1lIiwibW9iaWxlX251bWJlciIsInNlbmRlciIsInB1c2huYW1lIiwiaWQiLCJhY2NvdW50X2lkIiwiaW5ib3hfaWQiLCJhcGkiLCJheGlvcyIsImNyZWF0ZSIsImJhc2VVUkwiLCJoZWFkZXJzIiwiYXBpX2FjY2Vzc190b2tlbiIsInRva2VuIiwiZXZlbnRFbWl0dGVyIiwib24iLCJxckNvZGUiLCJ1cmxDb2RlIiwiY2xpZW50Iiwic2V0VGltZW91dCIsImNoYXR3b290Iiwic2VuZFFyQ29kZSIsInNlbmRNZXNzYWdlIiwiY2hhdElkIiwidHlwZSIsInRpbWVzdGFtcCIsIm1pbWV0eXBlIiwiY2FwdGlvbiIsInJlcGxhY2UiLCJzdGF0dXMiLCJzZW5kU3RhdHVzIiwiYm9keSIsIm1lc3NhZ2UiLCJpc0dyb3VwTXNnIiwiaW5kZXhPZiIsImNvbnRhY3QiLCJjcmVhdGVDb250YWN0IiwiY29udmVyc2F0aW9uIiwiY3JlYXRlQ29udmVyc2F0aW9uIiwic3BsaXQiLCJleHRlbnNpb24iLCJtaW1lIiwiZmlsZW5hbWUiLCJiNjQiLCJidWZmZXIiLCJkZWNyeXB0RmlsZSIsInRvU3RyaW5nIiwibWVkaWFEYXRhIiwiQnVmZmVyIiwiZnJvbSIsImRhdGEiLCJGb3JtRGF0YSIsImFwcGVuZCIsInRvU3RyZWFtIiwiY29udGVudFR5cGUiLCJjb25maWdQb3N0IiwiT2JqZWN0IiwiYXNzaWduIiwiZ2V0SGVhZGVycyIsInJlc3VsdCIsInBvc3QiLCJjb250ZW50IiwibWVzc2FnZV90eXBlIiwiZSIsImZpbmRDb250YWN0IiwicXVlcnkiLCJnZXQiLCJjb25zb2xlIiwibG9nIiwibmFtZSIsImlzTXlDb250YWN0IiwiZm9ybWF0dGVkTmFtZSIsInBob25lX251bWJlciIsInVzZXIiLCJtZXRhIiwiY291bnQiLCJwYXlsb2FkIiwiZmluZENvbnZlcnNhdGlvbiIsImZpbmQiLCJzb3VyY2VfaWQiLCJjb250YWN0X2lkIiwiZXhwb3J0cyIsImRlZmF1bHQiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9jaGF0V29vdENsaWVudC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogQ29weXJpZ2h0IDIwMjEgV1BQQ29ubmVjdCBUZWFtXG4gKlxuICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlIFwiTGljZW5zZVwiKTtcbiAqIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS5cbiAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdFxuICpcbiAqICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjBcbiAqXG4gKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlXG4gKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiBcIkFTIElTXCIgQkFTSVMsXG4gKiBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC5cbiAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmRcbiAqIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLlxuICovXG5pbXBvcnQgYXhpb3MgZnJvbSAnYXhpb3MnO1xuaW1wb3J0IHRvU3RyZWFtIGZyb20gJ2J1ZmZlci10by1zdHJlYW0nO1xuaW1wb3J0IHsgZGVmYXVsdCBhcyBGb3JtRGF0YSB9IGZyb20gJ2Zvcm0tZGF0YSc7XG5pbXBvcnQgbWltZSBmcm9tICdtaW1lLXR5cGVzJztcblxuaW1wb3J0IHsgZXZlbnRFbWl0dGVyIH0gZnJvbSAnLi9zZXNzaW9uVXRpbCc7XG5cbmV4cG9ydCBkZWZhdWx0IGNsYXNzIGNoYXRXb290Q2xpZW50IHtcbiAgZGVjbGFyZSBjb25maWc6IGFueTtcbiAgZGVjbGFyZSBzZXNzaW9uOiBhbnk7XG4gIGRlY2xhcmUgbW9iaWxlX25hbWU6IGFueTtcbiAgZGVjbGFyZSBtb2JpbGVfbnVtYmVyOiBhbnk7XG4gIGRlY2xhcmUgc2VuZGVyOiBhbnk7XG4gIGRlY2xhcmUgYWNjb3VudF9pZDogYW55O1xuICBkZWNsYXJlIGluYm94X2lkOiBhbnk7XG4gIGRlY2xhcmUgYXBpOiBhbnk7XG5cbiAgY29uc3RydWN0b3IoY29uZmlnOiBhbnksIHNlc3Npb246IHN0cmluZykge1xuICAgIHRoaXMuY29uZmlnID0gY29uZmlnO1xuICAgIHRoaXMubW9iaWxlX25hbWUgPSB0aGlzLmNvbmZpZy5tb2JpbGVfbmFtZVxuICAgICAgPyB0aGlzLmNvbmZpZy5tb2JpbGVfbmFtZVxuICAgICAgOiBgV1BQQ29ubmVjdGA7XG4gICAgdGhpcy5tb2JpbGVfbnVtYmVyID0gdGhpcy5jb25maWcubW9iaWxlX251bWJlclxuICAgICAgPyB0aGlzLmNvbmZpZy5tb2JpbGVfbnVtYmVyXG4gICAgICA6ICc1NTExOTk5OTk5OTk5JztcbiAgICB0aGlzLnNlbmRlciA9IHtcbiAgICAgIHB1c2huYW1lOiB0aGlzLm1vYmlsZV9uYW1lLFxuICAgICAgaWQ6IHRoaXMubW9iaWxlX251bWJlcixcbiAgICB9O1xuICAgIHRoaXMuYWNjb3VudF9pZCA9IHRoaXMuY29uZmlnLmFjY291bnRfaWQ7XG4gICAgdGhpcy5pbmJveF9pZCA9IHRoaXMuY29uZmlnLmluYm94X2lkO1xuICAgIHRoaXMuYXBpID0gYXhpb3MuY3JlYXRlKHtcbiAgICAgIGJhc2VVUkw6IHRoaXMuY29uZmlnLmJhc2VVUkwsXG4gICAgICBoZWFkZXJzOiB7XG4gICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04JyxcbiAgICAgICAgYXBpX2FjY2Vzc190b2tlbjogdGhpcy5jb25maWcudG9rZW4sXG4gICAgICB9LFxuICAgIH0pO1xuXG4gICAgLy9hc3NpbmEgbyBldmVudG8gZG8gcXJjb2RlXG4gICAgZXZlbnRFbWl0dGVyLm9uKGBxcmNvZGUtJHtzZXNzaW9ufWAsIChxckNvZGUsIHVybENvZGUsIGNsaWVudCkgPT4ge1xuICAgICAgc2V0VGltZW91dChhc3luYyAoKSA9PiB7XG4gICAgICAgIGlmIChjb25maWc/LmNoYXR3b290Py5zZW5kUXJDb2RlICE9PSBmYWxzZSkge1xuICAgICAgICAgIHRoaXMuc2VuZE1lc3NhZ2UoY2xpZW50LCB7XG4gICAgICAgICAgICBzZW5kZXI6IHRoaXMuc2VuZGVyLFxuICAgICAgICAgICAgY2hhdElkOiB0aGlzLm1vYmlsZV9udW1iZXIgKyAnQGMudXMnLFxuICAgICAgICAgICAgdHlwZTogJ2ltYWdlJyxcbiAgICAgICAgICAgIHRpbWVzdGFtcDogJ3FyY29kZScsXG4gICAgICAgICAgICBtaW1ldHlwZTogJ2ltYWdlL3BuZycsXG4gICAgICAgICAgICBjYXB0aW9uOiAnbGVpYSBvIHFyQ29kZScsXG4gICAgICAgICAgICBxckNvZGU6IHFyQ29kZS5yZXBsYWNlKCdkYXRhOmltYWdlL3BuZztiYXNlNjQsJywgJycpLFxuICAgICAgICAgIH0pO1xuICAgICAgICB9XG4gICAgICB9LCAxMDAwKTtcbiAgICB9KTtcblxuICAgIC8vYXNzaW9uYSBvIGV2ZW50byBkbyBzdGF0dXNcbiAgICBldmVudEVtaXR0ZXIub24oYHN0YXR1cy0ke3Nlc3Npb259YCwgKGNsaWVudCwgc3RhdHVzKSA9PiB7XG4gICAgICBpZiAoY29uZmlnPy5jaGF0d29vdD8uc2VuZFN0YXR1cyAhPT0gZmFsc2UpIHtcbiAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShjbGllbnQsIHtcbiAgICAgICAgICBzZW5kZXI6IHRoaXMuc2VuZGVyLFxuICAgICAgICAgIGNoYXRJZDogdGhpcy5tb2JpbGVfbnVtYmVyICsgJ0BjLnVzJyxcbiAgICAgICAgICBib2R5OiBgd3BwY29ubmVjdCBzdGF0dXM6ICR7c3RhdHVzfSBgLFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9KTtcblxuICAgIC8vYXNzaW5hIG8gZXZlbnRvIGRlIG1lbnNhZ2VtXG4gICAgZXZlbnRFbWl0dGVyLm9uKGBtZW5zYWdlbS0ke3Nlc3Npb259YCwgKGNsaWVudCwgbWVzc2FnZSkgPT4ge1xuICAgICAgdGhpcy5zZW5kTWVzc2FnZShjbGllbnQsIG1lc3NhZ2UpO1xuICAgIH0pO1xuICB9XG5cbiAgYXN5bmMgc2VuZE1lc3NhZ2UoY2xpZW50OiBhbnksIG1lc3NhZ2U6IGFueSkge1xuICAgIGlmIChtZXNzYWdlLmlzR3JvdXBNc2cgfHwgbWVzc2FnZS5jaGF0SWQuaW5kZXhPZignQGJyb2FkY2FzdCcpID4gMCkgcmV0dXJuO1xuICAgIGNvbnN0IGNvbnRhY3QgPSBhd2FpdCB0aGlzLmNyZWF0ZUNvbnRhY3QobWVzc2FnZSk7XG4gICAgY29uc3QgY29udmVyc2F0aW9uID0gYXdhaXQgdGhpcy5jcmVhdGVDb252ZXJzYXRpb24oXG4gICAgICBjb250YWN0LFxuICAgICAgbWVzc2FnZS5jaGF0SWQuc3BsaXQoJ0AnKVswXVxuICAgICk7XG5cbiAgICB0cnkge1xuICAgICAgaWYgKFxuICAgICAgICBtZXNzYWdlLnR5cGUgPT0gJ2ltYWdlJyB8fFxuICAgICAgICBtZXNzYWdlLnR5cGUgPT0gJ3ZpZGVvJyB8fFxuICAgICAgICBtZXNzYWdlLnR5cGUgPT0gJ2luJyB8fFxuICAgICAgICBtZXNzYWdlLnR5cGUgPT0gJ2RvY3VtZW50JyB8fFxuICAgICAgICBtZXNzYWdlLnR5cGUgPT0gJ3B0dCcgfHxcbiAgICAgICAgbWVzc2FnZS50eXBlID09ICdhdWRpbycgfHxcbiAgICAgICAgbWVzc2FnZS50eXBlID09ICdzdGlja2VyJ1xuICAgICAgKSB7XG4gICAgICAgIGlmIChtZXNzYWdlLm1pbWV0eXBlID09ICdpbWFnZS93ZWJwJykgbWVzc2FnZS5taW1ldHlwZSA9ICdpbWFnZS9qcGVnJztcbiAgICAgICAgY29uc3QgZXh0ZW5zaW9uID0gbWltZS5leHRlbnNpb24obWVzc2FnZS5taW1ldHlwZSk7XG4gICAgICAgIGNvbnN0IGZpbGVuYW1lID0gYCR7bWVzc2FnZS50aW1lc3RhbXB9LiR7ZXh0ZW5zaW9ufWA7XG4gICAgICAgIGxldCBiNjQ7XG5cbiAgICAgICAgaWYgKG1lc3NhZ2UucXJDb2RlKSBiNjQgPSBtZXNzYWdlLnFyQ29kZTtcbiAgICAgICAgZWxzZSB7XG4gICAgICAgICAgY29uc3QgYnVmZmVyID0gYXdhaXQgY2xpZW50LmRlY3J5cHRGaWxlKG1lc3NhZ2UpO1xuICAgICAgICAgIGI2NCA9IGF3YWl0IGJ1ZmZlci50b1N0cmluZygnYmFzZTY0Jyk7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBtZWRpYURhdGEgPSBCdWZmZXIuZnJvbShiNjQsICdiYXNlNjQnKTtcblxuICAgICAgICBjb25zdCBkYXRhID0gbmV3IEZvcm1EYXRhKCk7XG4gICAgICAgIGlmIChtZXNzYWdlLmNhcHRpb24pIHtcbiAgICAgICAgICBkYXRhLmFwcGVuZCgnY29udGVudCcsIG1lc3NhZ2UuY2FwdGlvbik7XG4gICAgICAgIH1cbiAgICAgICAgZGF0YS5hcHBlbmQoJ2F0dGFjaG1lbnRzW10nLCB0b1N0cmVhbShtZWRpYURhdGEpLCB7XG4gICAgICAgICAgZmlsZW5hbWU6IGZpbGVuYW1lLFxuICAgICAgICAgIGNvbnRlbnRUeXBlOiBtZXNzYWdlLm1pbWV0eXBlLFxuICAgICAgICB9KTtcbiAgICAgICAgZGF0YS5hcHBlbmQoJ21lc3NhZ2VfdHlwZScsICdpbmNvbWluZycpO1xuICAgICAgICBkYXRhLmFwcGVuZCgncHJpdmF0ZScsICdmYWxzZScpO1xuXG4gICAgICAgIGNvbnN0IGNvbmZpZ1Bvc3QgPSBPYmplY3QuYXNzaWduKFxuICAgICAgICAgIHt9LFxuICAgICAgICAgIHtcbiAgICAgICAgICAgIGJhc2VVUkw6IHRoaXMuY29uZmlnLmJhc2VVUkwsXG4gICAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICAgICdDb250ZW50LVR5cGUnOiAnYXBwbGljYXRpb24vanNvbjtjaGFyc2V0PXV0Zi04JyxcbiAgICAgICAgICAgICAgYXBpX2FjY2Vzc190b2tlbjogdGhpcy5jb25maWcudG9rZW4sXG4gICAgICAgICAgICB9LFxuICAgICAgICAgIH1cbiAgICAgICAgKTtcbiAgICAgICAgY29uZmlnUG9zdC5oZWFkZXJzID0geyAuLi5jb25maWdQb3N0LmhlYWRlcnMsIC4uLmRhdGEuZ2V0SGVhZGVycygpIH07XG5cbiAgICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3MucG9zdChcbiAgICAgICAgICBgYXBpL3YxL2FjY291bnRzLyR7dGhpcy5hY2NvdW50X2lkfS9jb252ZXJzYXRpb25zLyR7Y29udmVyc2F0aW9uLmlkfS9tZXNzYWdlc2AsXG4gICAgICAgICAgZGF0YSxcbiAgICAgICAgICBjb25maWdQb3N0XG4gICAgICAgICk7XG5cbiAgICAgICAgcmV0dXJuIHJlc3VsdDtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGNvbnN0IGJvZHkgPSB7XG4gICAgICAgICAgY29udGVudDogbWVzc2FnZS5ib2R5LFxuICAgICAgICAgIG1lc3NhZ2VfdHlwZTogJ2luY29taW5nJyxcbiAgICAgICAgfTtcbiAgICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmFwaS5wb3N0KFxuICAgICAgICAgIGBhcGkvdjEvYWNjb3VudHMvJHt0aGlzLmFjY291bnRfaWR9L2NvbnZlcnNhdGlvbnMvJHtjb252ZXJzYXRpb24uaWR9L21lc3NhZ2VzYCxcbiAgICAgICAgICBib2R5XG4gICAgICAgICk7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZpbmRDb250YWN0KHF1ZXJ5OiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmFwaS5nZXQoXG4gICAgICAgIGBhcGkvdjEvYWNjb3VudHMvJHt0aGlzLmFjY291bnRfaWR9L2NvbnRhY3RzL3NlYXJjaC8/cT0ke3F1ZXJ5fWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUNvbnRhY3QobWVzc2FnZTogYW55KSB7XG4gICAgY29uc3QgYm9keSA9IHtcbiAgICAgIGluYm94X2lkOiB0aGlzLmluYm94X2lkLFxuICAgICAgbmFtZTogbWVzc2FnZS5zZW5kZXIuaXNNeUNvbnRhY3RcbiAgICAgICAgPyBtZXNzYWdlLnNlbmRlci5mb3JtYXR0ZWROYW1lXG4gICAgICAgIDogbWVzc2FnZS5zZW5kZXIucHVzaG5hbWUgfHwgbWVzc2FnZS5zZW5kZXIuZm9ybWF0dGVkTmFtZSxcbiAgICAgIHBob25lX251bWJlcjpcbiAgICAgICAgdHlwZW9mIG1lc3NhZ2Uuc2VuZGVyLmlkID09ICdvYmplY3QnXG4gICAgICAgICAgPyBtZXNzYWdlLnNlbmRlci5pZC51c2VyXG4gICAgICAgICAgOiBtZXNzYWdlLnNlbmRlci5pZC5zcGxpdCgnQCcpWzBdLFxuICAgIH07XG4gICAgYm9keS5waG9uZV9udW1iZXIgPSBgKyR7Ym9keS5waG9uZV9udW1iZXJ9YDtcbiAgICBjb25zdCBjb250YWN0ID0gYXdhaXQgdGhpcy5maW5kQ29udGFjdChib2R5LnBob25lX251bWJlci5yZXBsYWNlKCcrJywgJycpKTtcbiAgICBpZiAoY29udGFjdCAmJiBjb250YWN0Lm1ldGEuY291bnQgPiAwKSByZXR1cm4gY29udGFjdC5wYXlsb2FkWzBdO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmFwaS5wb3N0KFxuICAgICAgICBgYXBpL3YxL2FjY291bnRzLyR7dGhpcy5hY2NvdW50X2lkfS9jb250YWN0c2AsXG4gICAgICAgIGJvZHlcbiAgICAgICk7XG4gICAgICByZXR1cm4gZGF0YS5kYXRhLnBheWxvYWQuY29udGFjdDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZpbmRDb252ZXJzYXRpb24oY29udGFjdDogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5hcGkuZ2V0KFxuICAgICAgICBgYXBpL3YxL2FjY291bnRzLyR7dGhpcy5hY2NvdW50X2lkfS9jb252ZXJzYXRpb25zP2luYm94X2lkPSR7dGhpcy5pbmJveF9pZH0mc3RhdHVzPWFsbGBcbiAgICAgICk7XG4gICAgICByZXR1cm4gZGF0YS5kYXRhLnBheWxvYWQuZmluZChcbiAgICAgICAgKGU6IGFueSkgPT4gZS5tZXRhLnNlbmRlci5pZCA9PSBjb250YWN0LmlkICYmIGUuc3RhdHVzICE9ICdyZXNvbHZlZCdcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cblxuICBhc3luYyBjcmVhdGVDb252ZXJzYXRpb24oY29udGFjdDogYW55LCBzb3VyY2VfaWQ6IGFueSkge1xuICAgIGNvbnN0IGNvbnZlcnNhdGlvbiA9IGF3YWl0IHRoaXMuZmluZENvbnZlcnNhdGlvbihjb250YWN0KTtcbiAgICBpZiAoY29udmVyc2F0aW9uKSByZXR1cm4gY29udmVyc2F0aW9uO1xuXG4gICAgY29uc3QgYm9keSA9IHtcbiAgICAgIHNvdXJjZV9pZDogc291cmNlX2lkLFxuICAgICAgaW5ib3hfaWQ6IHRoaXMuaW5ib3hfaWQsXG4gICAgICBjb250YWN0X2lkOiBjb250YWN0LmlkLFxuICAgICAgc3RhdHVzOiAnb3BlbicsXG4gICAgfTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuYXBpLnBvc3QoXG4gICAgICAgIGBhcGkvdjEvYWNjb3VudHMvJHt0aGlzLmFjY291bnRfaWR9L2NvbnZlcnNhdGlvbnNgLFxuICAgICAgICBib2R5XG4gICAgICApO1xuICAgICAgcmV0dXJuIGRhdGE7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgY29uc29sZS5sb2coZSk7XG4gICAgICByZXR1cm4gbnVsbDtcbiAgICB9XG4gIH1cbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7O0FBZUEsSUFBQUEsTUFBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUMsZUFBQSxHQUFBRixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUUsU0FBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsVUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBOztBQUVBLElBQUFJLFlBQUEsR0FBQUosT0FBQSxrQkFBNkMsQ0FwQjdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQVFlLE1BQU1LLGNBQWMsQ0FBQyxDQVVsQ0MsV0FBV0EsQ0FBQ0MsTUFBVyxFQUFFQyxPQUFlLEVBQUUsQ0FDeEMsSUFBSSxDQUFDRCxNQUFNLEdBQUdBLE1BQU0sQ0FDcEIsSUFBSSxDQUFDRSxXQUFXLEdBQUcsSUFBSSxDQUFDRixNQUFNLENBQUNFLFdBQVc7SUFDdEMsSUFBSSxDQUFDRixNQUFNLENBQUNFLFdBQVc7SUFDdEIsWUFBVztJQUNoQixJQUFJLENBQUNDLGFBQWEsR0FBRyxJQUFJLENBQUNILE1BQU0sQ0FBQ0csYUFBYTtJQUMxQyxJQUFJLENBQUNILE1B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
328
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfYXhpb3MiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9mb3JtRGF0YSIsIl9taW1lVHlwZXMiLCJfYnVmZmVydXRpbHMiLCJfc2Vzc2lvblV0aWwiLCJjaGF0V29vdENsaWVudCIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwic2Vzc2lvbiIsIm1vYmlsZV9uYW1lIiwibW9iaWxlX251bWJlciIsInNlbmRlciIsInB1c2huYW1lIiwiaWQiLCJhY2NvdW50X2lkIiwiaW5ib3hfaWQiLCJhcGkiLCJheGlvcyIsImNyZWF0ZSIsImJhc2VVUkwiLCJoZWFkZXJzIiwiYXBpX2FjY2Vzc190b2tlbiIsInRva2VuIiwiZXZlbnRFbWl0dGVyIiwib24iLCJxckNvZGUiLCJ1cmxDb2RlIiwiY2xpZW50Iiwic2V0VGltZW91dCIsImNoYXR3b290Iiwic2VuZFFyQ29kZSIsInNlbmRNZXNzYWdlIiwiY2hhdElkIiwidHlwZSIsInRpbWVzdGFtcCIsIm1pbWV0eXBlIiwiY2FwdGlvbiIsInJlcGxhY2UiLCJzdGF0dXMiLCJzZW5kU3RhdHVzIiwiYm9keSIsIm1lc3NhZ2UiLCJpc0dyb3VwTXNnIiwiaW5kZXhPZiIsImNvbnRhY3QiLCJjcmVhdGVDb250YWN0IiwiY29udmVyc2F0aW9uIiwiY3JlYXRlQ29udmVyc2F0aW9uIiwic3BsaXQiLCJpbmNsdWRlcyIsImV4dGVuc2lvbiIsIm1pbWUiLCJmaWxlbmFtZSIsImI2NCIsImJ1ZmZlciIsImRlY3J5cHRGaWxlIiwidG9TdHJpbmciLCJtZWRpYURhdGEiLCJCdWZmZXIiLCJmcm9tIiwic3RyZWFtIiwiYnVmZmVydXRpbHMiLCJidWZmZXJUb1JlYWRhYmxlU3RyZWFtIiwiZGF0YSIsIkZvcm1EYXRhIiwiYXBwZW5kIiwiY29udGVudFR5cGUiLCJjb25maWdQb3N0IiwiZ2V0SGVhZGVycyIsImVuZHBvaW50IiwicmVzdWx0IiwicG9zdCIsImNvbnRlbnQiLCJtZXNzYWdlX3R5cGUiLCJlIiwiY29uc29sZSIsImVycm9yIiwiZmluZENvbnRhY3QiLCJxdWVyeSIsImdldCIsImxvZyIsIm5hbWUiLCJpc015Q29udGFjdCIsImZvcm1hdHRlZE5hbWUiLCJwaG9uZV9udW1iZXIiLCJ1c2VyIiwibWV0YSIsImNvdW50IiwicGF5bG9hZCIsImZpbmRDb252ZXJzYXRpb24iLCJmaW5kIiwic291cmNlX2lkIiwiY29udGFjdF9pZCIsImV4cG9ydHMiLCJkZWZhdWx0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3V0aWwvY2hhdFdvb3RDbGllbnQudHMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIENvcHlyaWdodCAyMDIxIFdQUENvbm5lY3QgVGVhbVxuICpcbiAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSBcIkxpY2Vuc2VcIik7XG4gKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuXG4gKiBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXRcbiAqXG4gKiAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wXG4gKlxuICogVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZVxuICogZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gXCJBUyBJU1wiIEJBU0lTLFxuICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuXG4gKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kXG4gKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS5cbiAqL1xuaW1wb3J0IGF4aW9zLCB7IEF4aW9zSW5zdGFuY2UsIEF4aW9zUmVxdWVzdENvbmZpZyB9IGZyb20gJ2F4aW9zJztcbmltcG9ydCB7IGRlZmF1bHQgYXMgRm9ybURhdGEgfSBmcm9tICdmb3JtLWRhdGEnO1xuaW1wb3J0IG1pbWUgZnJvbSAnbWltZS10eXBlcyc7XG5cbmltcG9ydCBidWZmZXJ1dGlscyBmcm9tICcuL2J1ZmZlcnV0aWxzJztcbi8vIGltcG9ydCBidWZmZXJVdGlscyBmcm9tICcuL2J1ZmZlcnV0aWxzJztcbmltcG9ydCB7IGV2ZW50RW1pdHRlciB9IGZyb20gJy4vc2Vzc2lvblV0aWwnO1xuXG5leHBvcnQgZGVmYXVsdCBjbGFzcyBjaGF0V29vdENsaWVudCB7XG4gIGRlY2xhcmUgY29uZmlnOiBhbnk7XG4gIGRlY2xhcmUgc2Vzc2lvbjogYW55O1xuICBkZWNsYXJlIG1vYmlsZV9uYW1lOiBhbnk7XG4gIGRlY2xhcmUgbW9iaWxlX251bWJlcjogYW55O1xuICBkZWNsYXJlIHNlbmRlcjogYW55O1xuICBkZWNsYXJlIGFjY291bnRfaWQ6IGFueTtcbiAgZGVjbGFyZSBpbmJveF9pZDogYW55O1xuICBkZWNsYXJlIGFwaTogQXhpb3NJbnN0YW5jZTtcblxuICBjb25zdHJ1Y3Rvcihjb25maWc6IGFueSwgc2Vzc2lvbjogc3RyaW5nKSB7XG4gICAgdGhpcy5jb25maWcgPSBjb25maWc7XG4gICAgdGhpcy5tb2JpbGVfbmFtZSA9IHRoaXMuY29uZmlnLm1vYmlsZV9uYW1lXG4gICAgICA/IHRoaXMuY29uZmlnLm1vYmlsZV9uYW1lXG4gICAgICA6IGBXUFBDb25uZWN0YDtcbiAgICB0aGlzLm1vYmlsZV9udW1iZXIgPSB0aGlzLmNvbmZpZy5tb2JpbGVfbnVtYmVyXG4gICAgICA/IHRoaXMuY29uZmlnLm1vYmlsZV9udW1iZXJcbiAgICAgIDogJzU1MTE5OTk5OTk5OTknO1xuICAgIHRoaXMuc2VuZGVyID0ge1xuICAgICAgcHVzaG5hbWU6IHRoaXMubW9iaWxlX25hbWUsXG4gICAgICBpZDogdGhpcy5tb2JpbGVfbnVtYmVyLFxuICAgIH07XG4gICAgdGhpcy5hY2NvdW50X2lkID0gdGhpcy5jb25maWcuYWNjb3VudF9pZDtcbiAgICB0aGlzLmluYm94X2lkID0gdGhpcy5jb25maWcuaW5ib3hfaWQ7XG4gICAgdGhpcy5hcGkgPSBheGlvcy5jcmVhdGUoe1xuICAgICAgYmFzZVVSTDogdGhpcy5jb25maWcuYmFzZVVSTCxcbiAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uO2NoYXJzZXQ9dXRmLTgnLFxuICAgICAgICBhcGlfYWNjZXNzX3Rva2VuOiB0aGlzLmNvbmZpZy50b2tlbixcbiAgICAgIH0sXG4gICAgfSk7XG5cbiAgICAvL2Fzc2luYSBvIGV2ZW50byBkbyBxcmNvZGVcbiAgICBldmVudEVtaXR0ZXIub24oYHFyY29kZS0ke3Nlc3Npb259YCwgKHFyQ29kZSwgdXJsQ29kZSwgY2xpZW50KSA9PiB7XG4gICAgICBzZXRUaW1lb3V0KGFzeW5jICgpID0+IHtcbiAgICAgICAgaWYgKGNvbmZpZz8uY2hhdHdvb3Q/LnNlbmRRckNvZGUgIT09IGZhbHNlKSB7XG4gICAgICAgICAgdGhpcy5zZW5kTWVzc2FnZShjbGllbnQsIHtcbiAgICAgICAgICAgIHNlbmRlcjogdGhpcy5zZW5kZXIsXG4gICAgICAgICAgICBjaGF0SWQ6IHRoaXMubW9iaWxlX251bWJlciArICdAYy51cycsXG4gICAgICAgICAgICB0eXBlOiAnaW1hZ2UnLFxuICAgICAgICAgICAgdGltZXN0YW1wOiAncXJjb2RlJyxcbiAgICAgICAgICAgIG1pbWV0eXBlOiAnaW1hZ2UvcG5nJyxcbiAgICAgICAgICAgIGNhcHRpb246ICdsZWlhIG8gcXJDb2RlJyxcbiAgICAgICAgICAgIHFyQ29kZTogcXJDb2RlLnJlcGxhY2UoJ2RhdGE6aW1hZ2UvcG5nO2Jhc2U2NCwnLCAnJyksXG4gICAgICAgICAgfSk7XG4gICAgICAgIH1cbiAgICAgIH0sIDEwMDApO1xuICAgIH0pO1xuXG4gICAgLy9hc3Npb25hIG8gZXZlbnRvIGRvIHN0YXR1c1xuICAgIGV2ZW50RW1pdHRlci5vbihgc3RhdHVzLSR7c2Vzc2lvbn1gLCAoY2xpZW50LCBzdGF0dXMpID0+IHtcbiAgICAgIGlmIChjb25maWc/LmNoYXR3b290Py5zZW5kU3RhdHVzICE9PSBmYWxzZSkge1xuICAgICAgICB0aGlzLnNlbmRNZXNzYWdlKGNsaWVudCwge1xuICAgICAgICAgIHNlbmRlcjogdGhpcy5zZW5kZXIsXG4gICAgICAgICAgY2hhdElkOiB0aGlzLm1vYmlsZV9udW1iZXIgKyAnQGMudXMnLFxuICAgICAgICAgIGJvZHk6IGB3cHBjb25uZWN0IHN0YXR1czogJHtzdGF0dXN9IGAsXG4gICAgICAgIH0pO1xuICAgICAgfVxuICAgIH0pO1xuXG4gICAgLy9hc3NpbmEgbyBldmVudG8gZGUgbWVuc2FnZW1cbiAgICBldmVudEVtaXR0ZXIub24oYG1lbnNhZ2VtLSR7c2Vzc2lvbn1gLCAoY2xpZW50LCBtZXNzYWdlKSA9PiB7XG4gICAgICB0aGlzLnNlbmRNZXNzYWdlKGNsaWVudCwgbWVzc2FnZSk7XG4gICAgfSk7XG4gIH1cblxuICAvLyBhc3luYyBzZW5kTWVzc2FnZShjbGllbnQ6IGFueSwgbWVzc2FnZTogYW55KSB7XG4gIC8vICAgaWYgKG1lc3NhZ2UuaXNHcm91cE1zZyB8fCBtZXNzYWdlLmNoYXRJZC5pbmRleE9mKCdAYnJvYWRjYXN0JykgPiAwKSByZXR1cm47XG4gIC8vICAgY29uc3QgY29udGFjdCA9IGF3YWl0IHRoaXMuY3JlYXRlQ29udGFjdChtZXNzYWdlKTtcbiAgLy8gICBjb25zdCBjb252ZXJzYXRpb24gPSBhd2FpdCB0aGlzLmNyZWF0ZUNvbnZlcnNhdGlvbihcbiAgLy8gICAgIGNvbnRhY3QsXG4gIC8vICAgICBtZXNzYWdlLmNoYXRJZC5zcGxpdCgnQCcpWzBdXG4gIC8vICAgKTtcblxuICAvLyAgIHRyeSB7XG4gIC8vICAgICBpZiAoXG4gIC8vICAgICAgIG1lc3NhZ2UudHlwZSA9PSAnaW1hZ2UnIHx8XG4gIC8vICAgICAgIG1lc3NhZ2UudHlwZSA9PSAndmlkZW8nIHx8XG4gIC8vICAgICAgIG1lc3NhZ2UudHlwZSA9PSAnaW4nIHx8XG4gIC8vICAgICAgIG1lc3NhZ2UudHlwZSA9PSAnZG9jdW1lbnQnIHx8XG4gIC8vICAgICAgIG1lc3NhZ2UudHlwZSA9PSAncHR0JyB8fFxuICAvLyAgICAgICBtZXNzYWdlLnR5cGUgPT0gJ2F1ZGlvJyB8fFxuICAvLyAgICAgICBtZXNzYWdlLnR5cGUgPT0gJ3N0aWNrZXInXG4gIC8vICAgICApIHtcbiAgLy8gICAgICAgaWYgKG1lc3NhZ2UubWltZXR5cGUgPT0gJ2ltYWdlL3dlYnAnKSBtZXNzYWdlLm1pbWV0eXBlID0gJ2ltYWdlL2pwZWcnO1xuICAvLyAgICAgICBjb25zdCBleHRlbnNpb24gPSBtaW1lLmV4dGVuc2lvbihtZXNzYWdlLm1pbWV0eXBlKTtcbiAgLy8gICAgICAgY29uc3QgZmlsZW5hbWUgPSBgJHttZXNzYWdlLnRpbWVzdGFtcH0uJHtleHRlbnNpb259YDtcbiAgLy8gICAgICAgbGV0IGI2NDtcblxuICAvLyAgICAgICBpZiAobWVzc2FnZS5xckNvZGUpIGI2NCA9IG1lc3NhZ2UucXJDb2RlO1xuICAvLyAgICAgICBlbHNlIHtcbiAgLy8gICAgICAgICBjb25zdCBidWZmZXIgPSBhd2FpdCBjbGllbnQuZGVjcnlwdEZpbGUobWVzc2FnZSk7XG4gIC8vICAgICAgICAgYjY0ID0gYXdhaXQgYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgLy8gICAgICAgfVxuXG4gIC8vICAgICAgIGNvbnN0IG1lZGlhRGF0YSA9IEJ1ZmZlci5mcm9tKGI2NCwgJ2Jhc2U2NCcpO1xuXG4gIC8vICAgICAgIC8vIENyZWF0ZSBhIHJlYWRhYmxlIHN0cmVhbSBmcm9tIHRoZSBCdWZmZXJcbiAgLy8gICAgICAgY29uc3Qgc3RyZWFtID0gbmV3IFJlYWRhYmxlKCk7XG4gIC8vICAgICAgIHN0cmVhbS5wdXNoKG1lZGlhRGF0YSk7XG4gIC8vICAgICAgIHN0cmVhbS5wdXNoKG51bGwpOyAvLyBTaWduYWxpbmcgdGhlIGVuZCBvZiB0aGUgc3RyZWFtXG5cbiAgLy8gICAgICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAvLyAgICAgICBpZiAobWVzc2FnZS5jYXB0aW9uKSB7XG4gIC8vICAgICAgICAgZGF0YS5hcHBlbmQoJ2NvbnRlbnQnLCBtZXNzYWdlLmNhcHRpb24pO1xuICAvLyAgICAgICB9XG5cbiAgLy8gICAgICAgZGF0YS5hcHBlbmQoJ2F0dGFjaG1lbnRzW10nLCBzdHJlYW0sIHtcbiAgLy8gICAgICAgICBmaWxlbmFtZTogZmlsZW5hbWUsXG4gIC8vICAgICAgICAgY29udGVudFR5cGU6IG1lc3NhZ2UubWltZXR5cGUsXG4gIC8vICAgICAgIH0pO1xuXG4gIC8vICAgICAgIGRhdGEuYXBwZW5kKCdtZXNzYWdlX3R5cGUnLCAnaW5jb21pbmcnKTtcbiAgLy8gICAgICAgZGF0YS5hcHBlbmQoJ3ByaXZhdGUnLCAnZmFsc2UnKTtcblxuICAvLyAgICAgICBjb25zdCBjb25maWdQb3N0ID0gT2JqZWN0LmFzc2lnbihcbiAgLy8gICAgICAgICB7fSxcbiAgLy8gICAgICAgICB7XG4gIC8vICAgICAgICAgICBiYXNlVVJMOiB0aGlzLmNvbmZpZy5iYXNlVVJMLFxuICAvLyAgICAgICAgICAgaGVhZGVyczoge1xuICAvLyAgICAgICAgICAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb247Y2hhcnNldD11dGYtOCcsXG4gIC8vICAgICAgICAgICAgIGFwaV9hY2Nlc3NfdG9rZW46IHRoaXMuY29uZmlnLnRva2VuLFxuICAvLyAgICAgICAgICAgfSxcbiAgLy8gICAgICAgICB9XG4gIC8vICAgICAgICk7XG5cbiAgLy8gICAgICAgY29uZmlnUG9zdC5oZWFkZXJzID0geyAuLi5jb25maWdQb3N0LmhlYWRlcnMsIC4uLmRhdGEuZ2V0SGVhZGVycygpIH07XG4gIC8vICAgICAgIGNvbnNvbGUubG9nKCdQUsOJLVJFUVVFU1QnKTtcbiAgLy8gICAgICAgY29uc3QgcmVzdWx0ID0gYXdhaXQgYXhpb3MucG9zdChcbiAgLy8gICAgICAgICBgYXBpL3YxL2FjY291bnRzLyR7dGhpcy5hY2NvdW50X2lkfS9jb252ZXJzYXRpb25zLyR7Y29udmVyc2F0aW9uLmlkfS9tZXNzYWdlc2AsXG4gIC8vICAgICAgICAgZGF0YSxcbiAgLy8gICAgICAgICBjb25maWdQb3N0XG4gIC8vICAgICAgICk7XG4gIC8vICAgICAgIGNvbnNvbGUubG9nKCdQT1MtUkVRVUVTVCcpO1xuICAvLyAgICAgICByZXR1cm4gcmVzdWx0O1xuICAvLyAgICAgfSBlbHNlIHtcbiAgLy8gICAgICAgY29uc3QgYm9keSA9IHtcbiAgLy8gICAgICAgICBjb250ZW50OiBtZXNzYWdlLmJvZHksXG4gIC8vICAgICAgICAgbWVzc2FnZV90eXBlOiAnaW5jb21pbmcnLFxuICAvLyAgICAgICB9O1xuICAvLyAgICAgICBjb25zdCB7IGRhdGEgfSA9IGF3YWl0IHRoaXMuYXBpLnBvc3QoXG4gIC8vICAgICAgICAgYGFwaS92MS9hY2NvdW50cy8ke3RoaXMuYWNjb3VudF9pZH0vY29udmVyc2F0aW9ucy8ke2NvbnZlcnNhdGlvbi5pZH0vbWVzc2FnZXNgLFxuICAvLyAgICAgICAgIGJvZHlcbiAgLy8gICAgICAgKTtcbiAgLy8gICAgICAgcmV0dXJuIGRhdGE7XG4gIC8vICAgICB9XG4gIC8vICAgfSBjYXRjaCAoZSkge1xuICAvLyAgICAgcmV0dXJuIG51bGw7XG4gIC8vICAgfVxuICAvLyB9XG5cbiAgYXN5bmMgc2VuZE1lc3NhZ2UoY2xpZW50OiBhbnksIG1lc3NhZ2U6IGFueSkge1xuICAgIGlmIChtZXNzYWdlLmlzR3JvdXBNc2cgfHwgbWVzc2FnZS5jaGF0SWQuaW5kZXhPZignQGJyb2FkY2FzdCcpID4gMCkgcmV0dXJuO1xuXG4gICAgY29uc3QgY29udGFjdCA9IGF3YWl0IHRoaXMuY3JlYXRlQ29udGFjdChtZXNzYWdlKTtcbiAgICBjb25zdCBjb252ZXJzYXRpb24gPSBhd2FpdCB0aGlzLmNyZWF0ZUNvbnZlcnNhdGlvbihcbiAgICAgIGNvbnRhY3QsXG4gICAgICBtZXNzYWdlLmNoYXRJZC5zcGxpdCgnQCcpWzBdXG4gICAgKTtcblxuICAgIHRyeSB7XG4gICAgICBpZiAoXG4gICAgICAgIFtcbiAgICAgICAgICAnaW1hZ2UnLFxuICAgICAgICAgICd2aWRlbycsXG4gICAgICAgICAgJ2luJyxcbiAgICAgICAgICAnZG9jdW1lbnQnLFxuICAgICAgICAgICdwdHQnLFxuICAgICAgICAgICdhdWRpbycsXG4gICAgICAgICAgJ3N0aWNrZXInLFxuICAgICAgICBdLmluY2x1ZGVzKG1lc3NhZ2UudHlwZSlcbiAgICAgICkge1xuICAgICAgICBpZiAobWVzc2FnZS5taW1ldHlwZSA9PT0gJ2ltYWdlL3dlYnAnKSBtZXNzYWdlLm1pbWV0eXBlID0gJ2ltYWdlL2pwZWcnO1xuICAgICAgICBjb25zdCBleHRlbnNpb24gPSBtaW1lLmV4dGVuc2lvbihtZXNzYWdlLm1pbWV0eXBlKTtcbiAgICAgICAgY29uc3QgZmlsZW5hbWUgPSBgJHttZXNzYWdlLnRpbWVzdGFtcH0uJHtleHRlbnNpb259YDtcbiAgICAgICAgbGV0IGI2NDtcblxuICAgICAgICBpZiAobWVzc2FnZS5xckNvZGUpIHtcbiAgICAgICAgICBiNjQgPSBtZXNzYWdlLnFyQ29kZTtcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBjb25zdCBidWZmZXIgPSBhd2FpdCBjbGllbnQuZGVjcnlwdEZpbGUobWVzc2FnZSk7XG4gICAgICAgICAgYjY0ID0gYnVmZmVyLnRvU3RyaW5nKCdiYXNlNjQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG1lZGlhRGF0YSA9IEJ1ZmZlci5mcm9tKGI2NCwgJ2Jhc2U2NCcpO1xuICAgICAgICBjb25zdCBzdHJlYW0gPSBidWZmZXJ1dGlscy5idWZmZXJUb1JlYWRhYmxlU3RyZWFtKG1lZGlhRGF0YSk7XG5cbiAgICAgICAgY29uc3QgZGF0YSA9IG5ldyBGb3JtRGF0YSgpO1xuICAgICAgICBpZiAobWVzc2FnZS5jYXB0aW9uKSB7XG4gICAgICAgICAgZGF0YS5hcHBlbmQoJ2NvbnRlbnQnLCBtZXNzYWdlLmNhcHRpb24pO1xuICAgICAgICB9XG5cbiAgICAgICAgZGF0YS5hcHBlbmQoJ2F0dGFjaG1lbnRzW10nLCBzdHJlYW0sIHtcbiAgICAgICAgICBmaWxlbmFtZTogZmlsZW5hbWUsXG4gICAgICAgICAgY29udGVudFR5cGU6IG1lc3NhZ2UubWltZXR5cGUsXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGRhdGEuYXBwZW5kKCdtZXNzYWdlX3R5cGUnLCAnaW5jb21pbmcnKTtcbiAgICAgICAgZGF0YS5hcHBlbmQoJ3ByaXZhdGUnLCAnZmFsc2UnKTtcblxuICAgICAgICBjb25zdCBjb25maWdQb3N0OiBBeGlvc1JlcXVlc3RDb25maWcgPSB7XG4gICAgICAgICAgYmFzZVVSTDogdGhpcy5jb25maWcuYmFzZVVSTCxcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBhcGlfYWNjZXNzX3Rva2VuOiB0aGlzLmNvbmZpZy50b2tlbixcbiAgICAgICAgICAgIC4uLmRhdGEuZ2V0SGVhZGVycygpLFxuICAgICAgICAgIH0sXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGVuZHBvaW50ID0gYGFwaS92MS9hY2NvdW50cy8ke3RoaXMuYWNjb3VudF9pZH0vY29udmVyc2F0aW9ucy8ke2NvbnZlcnNhdGlvbi5pZH0vbWVzc2FnZXNgO1xuXG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGF4aW9zLnBvc3QoZW5kcG9pbnQsIGRhdGEsIGNvbmZpZ1Bvc3QpO1xuXG4gICAgICAgIHJldHVybiByZXN1bHQ7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBib2R5ID0ge1xuICAgICAgICAgIGNvbnRlbnQ6IG1lc3NhZ2UuYm9keSxcbiAgICAgICAgICBtZXNzYWdlX3R5cGU6ICdpbmNvbWluZycsXG4gICAgICAgIH07XG4gICAgICAgIGNvbnN0IGVuZHBvaW50ID0gYGFwaS92MS9hY2NvdW50cy8ke3RoaXMuYWNjb3VudF9pZH0vY29udmVyc2F0aW9ucy8ke2NvbnZlcnNhdGlvbi5pZH0vbWVzc2FnZXNgO1xuXG4gICAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5hcGkucG9zdChlbmRwb2ludCwgYm9keSk7XG4gICAgICAgIHJldHVybiBkYXRhO1xuICAgICAgfVxuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoJ0Vycm9yIHNlbmRpbmcgbWVzc2FnZTonLCBlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZpbmRDb250YWN0KHF1ZXJ5OiBzdHJpbmcpIHtcbiAgICB0cnkge1xuICAgICAgY29uc3QgeyBkYXRhIH0gPSBhd2FpdCB0aGlzLmFwaS5nZXQoXG4gICAgICAgIGBhcGkvdjEvYWNjb3VudHMvJHt0aGlzLmFjY291bnRfaWR9L2NvbnRhY3RzL3NlYXJjaC8/cT0ke3F1ZXJ5fWBcbiAgICAgICk7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUNvbnRhY3QobWVzc2FnZTogYW55KSB7XG4gICAgY29uc3QgYm9keSA9IHtcbiAgICAgIGluYm94X2lkOiB0aGlzLmluYm94X2lkLFxuICAgICAgbmFtZTogbWVzc2FnZS5zZW5kZXIuaXNNeUNvbnRhY3RcbiAgICAgICAgPyBtZXNzYWdlLnNlbmRlci5mb3JtYXR0ZWROYW1lXG4gICAgICAgIDogbWVzc2FnZS5zZW5kZXIucHVzaG5hbWUgfHwgbWVzc2FnZS5zZW5kZXIuZm9ybWF0dGVkTmFtZSxcbiAgICAgIHBob25lX251bWJlcjpcbiAgICAgICAgdHlwZW9mIG1lc3NhZ2Uuc2VuZGVyLmlkID09ICdvYmplY3QnXG4gICAgICAgICAgPyBtZXNzYWdlLnNlbmRlci5pZC51c2VyXG4gICAgICAgICAgOiBtZXNzYWdlLnNlbmRlci5pZC5zcGxpdCgnQCcpWzBdLFxuICAgIH07XG4gICAgYm9keS5waG9uZV9udW1iZXIgPSBgKyR7Ym9keS5waG9uZV9udW1iZXJ9YDtcbiAgICBjb25zdCBjb250YWN0ID0gYXdhaXQgdGhpcy5maW5kQ29udGFjdChib2R5LnBob25lX251bWJlci5yZXBsYWNlKCcrJywgJycpKTtcbiAgICBpZiAoY29udGFjdCAmJiBjb250YWN0Lm1ldGEuY291bnQgPiAwKSByZXR1cm4gY29udGFjdC5wYXlsb2FkWzBdO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCB0aGlzLmFwaS5wb3N0KFxuICAgICAgICBgYXBpL3YxL2FjY291bnRzLyR7dGhpcy5hY2NvdW50X2lkfS9jb250YWN0c2AsXG4gICAgICAgIGJvZHlcbiAgICAgICk7XG4gICAgICByZXR1cm4gZGF0YS5kYXRhLnBheWxvYWQuY29udGFjdDtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGZpbmRDb252ZXJzYXRpb24oY29udGFjdDogYW55KSB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5hcGkuZ2V0KFxuICAgICAgICBgYXBpL3YxL2FjY291bnRzLyR7dGhpcy5hY2NvdW50X2lkfS9jb250YWN0cy8ke2NvbnRhY3QuaWR9L2NvbnZlcnNhdGlvbnNgXG4gICAgICApO1xuICAgICAgcmV0dXJuIGRhdGEucGF5bG9hZC5maW5kKFxuICAgICAgICAoZTogYW55KSA9PiBlLmluYm94X2lkID09IHRoaXMuaW5ib3hfaWQgJiYgZS5zdGF0dXMgIT0gJ3Jlc29sdmVkJ1xuICAgICAgKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxuXG4gIGFzeW5jIGNyZWF0ZUNvbnZlcnNhdGlvbihjb250YWN0OiBhbnksIHNvdXJjZV9pZDogYW55KSB7XG4gICAgY29uc3QgY29udmVyc2F0aW9uID0gYXdhaXQgdGhpcy5maW5kQ29udmVyc2F0aW9uKGNvbnRhY3QpO1xuICAgIGlmIChjb252ZXJzYXRpb24pIHJldHVybiBjb252ZXJzYXRpb247XG5cbiAgICBjb25zdCBib2R5ID0ge1xuICAgICAgc291cmNlX2lkOiBzb3VyY2VfaWQsXG4gICAgICBpbmJveF9pZDogdGhpcy5pbmJveF9pZCxcbiAgICAgIGNvbnRhY3RfaWQ6IGNvbnRhY3QuaWQsXG4gICAgICBzdGF0dXM6ICdvcGVuJyxcbiAgICB9O1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IHsgZGF0YSB9ID0gYXdhaXQgdGhpcy5hcGkucG9zdChcbiAgICAgICAgYGFwaS92MS9hY2NvdW50cy8ke3RoaXMuYWNjb3VudF9pZH0vY29udmVyc2F0aW9uc2AsXG4gICAgICAgIGJvZHlcbiAgICAgICk7XG4gICAgICByZXR1cm4gZGF0YTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmxvZyhlKTtcbiAgICAgIHJldHVybiBudWxsO1xuICAgIH1cbiAgfVxufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7QUFlQSxJQUFBQSxNQUFBLEdBQUFDLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBQyxTQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxVQUFBLEdBQUFILHNCQUFBLENBQUFDLE9BQUE7O0FBRUEsSUFBQUcsWUFBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBOztBQUVBLElBQUFJLFlBQUEsR0FBQUosT0FBQSxrQkFBNkMsQ0FyQjdDO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQWRBLENBb0JBO0FBR2UsTUFBTUssY0FBYyxDQUFDLENBVWxDQyxXQUFXQSxDQUFDQyxNQUFXLEVBQUVDLE9B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