@ringcentral-integration/utils 0.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (59) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +9 -0
  3. package/index.js +17 -0
  4. package/index.js.map +1 -0
  5. package/package.json +26 -0
  6. package/src/decorators/index.js +17 -0
  7. package/src/decorators/index.js.map +1 -0
  8. package/src/decorators/time.js +81 -0
  9. package/src/decorators/time.js.map +1 -0
  10. package/src/index.js +28 -0
  11. package/src/index.js.map +1 -0
  12. package/src/utils/MultiPartUTF8FormData.js +239 -0
  13. package/src/utils/MultiPartUTF8FormData.js.map +1 -0
  14. package/src/utils/base64Handler.js +96 -0
  15. package/src/utils/base64Handler.js.map +1 -0
  16. package/src/utils/blobHandler.js +44 -0
  17. package/src/utils/blobHandler.js.map +1 -0
  18. package/src/utils/downloadFile.js +95 -0
  19. package/src/utils/downloadFile.js.map +1 -0
  20. package/src/utils/empty.js +16 -0
  21. package/src/utils/empty.js.map +1 -0
  22. package/src/utils/fileHandler/constant.js +37 -0
  23. package/src/utils/fileHandler/constant.js.map +1 -0
  24. package/src/utils/fileHandler/fileHandler.js +65 -0
  25. package/src/utils/fileHandler/fileHandler.js.map +1 -0
  26. package/src/utils/fileHandler/index.js +17 -0
  27. package/src/utils/fileHandler/index.js.map +1 -0
  28. package/src/utils/format.js +14 -0
  29. package/src/utils/format.js.map +1 -0
  30. package/src/utils/getTranslateFn.js +98 -0
  31. package/src/utils/getTranslateFn.js.map +1 -0
  32. package/src/utils/index.js +204 -0
  33. package/src/utils/index.js.map +1 -0
  34. package/src/utils/invertObj.js +26 -0
  35. package/src/utils/invertObj.js.map +1 -0
  36. package/src/utils/isElectron.js +13 -0
  37. package/src/utils/isElectron.js.map +1 -0
  38. package/src/utils/isSafari.js +10 -0
  39. package/src/utils/isSafari.js.map +1 -0
  40. package/src/utils/loadImage.js +24 -0
  41. package/src/utils/loadImage.js.map +1 -0
  42. package/src/utils/polling.js +107 -0
  43. package/src/utils/polling.js.map +1 -0
  44. package/src/utils/sleep.js +48 -0
  45. package/src/utils/sleep.js.map +1 -0
  46. package/src/utils/stopEvent.js +20 -0
  47. package/src/utils/stopEvent.js.map +1 -0
  48. package/src/utils/stringHandler/index.js +17 -0
  49. package/src/utils/stringHandler/index.js.map +1 -0
  50. package/src/utils/stringHandler/isASCII.js +12 -0
  51. package/src/utils/stringHandler/isASCII.js.map +1 -0
  52. package/src/utils/waitUntil.js +70 -0
  53. package/src/utils/waitUntil.js.map +1 -0
  54. package/src/utils/waitUntilTo.js +99 -0
  55. package/src/utils/waitUntilTo.js.map +1 -0
  56. package/src/webpackPlugins/NoChunkChecker/NoChunkChecker.js +56 -0
  57. package/src/webpackPlugins/NoChunkChecker/NoChunkChecker.js.map +1 -0
  58. package/src/webpackPlugins/NoChunkChecker/index.js +17 -0
  59. package/src/webpackPlugins/NoChunkChecker/index.js.map +1 -0
package/LICENSE ADDED
@@ -0,0 +1,17 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2020 RingCentral, Inc.
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
6
+ documentation files (the "Software"), to deal in the Software without restriction, including without limitation
7
+ the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software,
8
+ and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all copies or substantial portions
11
+ of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED
14
+ TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
15
+ THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
16
+ OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
17
+ DEALINGS IN THE SOFTWARE.
package/README.md ADDED
@@ -0,0 +1,9 @@
1
+ # @ringcentral-integration/core
2
+
3
+ Base utils package for RingCentral integration products.
4
+
5
+ That contains some utils related lib and utils
6
+
7
+ ```sh
8
+ yarn add @ringcentral-integration/utils
9
+ ```
package/index.js ADDED
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _src = require("./src");
7
+ Object.keys(_src).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _src[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _src[key];
14
+ }
15
+ });
16
+ });
17
+ //# sourceMappingURL=index.js.map
package/index.js.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_src","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["index.ts"],"sourcesContent":["export * from './src';\n"],"mappings":";;;;;AAAA,IAAAA,IAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,IAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,IAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAT,IAAA,CAAAK,GAAA;IAAA;EAAA;AAAA"}
package/package.json ADDED
@@ -0,0 +1,26 @@
1
+ {
2
+ "name": "@ringcentral-integration/utils",
3
+ "version": "0.0.1",
4
+ "description": "Base utils package for RingCentral integration products.",
5
+ "homepage": "https://github.com/ringcentral/ringcentral-js-widgets/tree/master/packages/core#readme",
6
+ "bugs": {
7
+ "url": "https://github.com/ringcentral/ringcentral-js-widgets/issues"
8
+ },
9
+ "repository": {
10
+ "type": "git",
11
+ "url": "git+https://github.com/ringcentral/ringcentral-js-widgets.git"
12
+ },
13
+ "license": "MIT",
14
+ "author": "RingCentral Integration Team",
15
+ "main": "index.js",
16
+ "directories": {
17
+ "lib": "lib"
18
+ },
19
+ "dependencies": {
20
+ "string-template": "^1.0.0"
21
+ },
22
+ "common": true,
23
+ "ci": {
24
+ "@ringcentral-integration/utils": "**"
25
+ }
26
+ }
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _time = require("./time");
7
+ Object.keys(_time).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _time[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _time[key];
14
+ }
15
+ });
16
+ });
17
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_time","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get"],"sources":["src/decorators/index.ts"],"sourcesContent":["export * from './time';\n"],"mappings":";;;;;AAAA,IAAAA,KAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,KAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,KAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAT,KAAA,CAAAK,GAAA;IAAA;EAAA;AAAA"}
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.object.to-string");
4
+ require("core-js/modules/es.promise");
5
+ Object.defineProperty(exports, "__esModule", {
6
+ value: true
7
+ });
8
+ exports.time = void 0;
9
+ require("regenerator-runtime/runtime");
10
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
11
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
12
+ /**
13
+ * let you can calculate the time when run that method,
14
+ *
15
+ * ### that time not calculate in `process.env.NODE_ENV !== 'production'`
16
+ * @param title
17
+ */
18
+ var time = function time(title) {
19
+ // eslint-disable-next-line func-names
20
+ return function (target, name, descriptor) {
21
+ if (process.env.NODE_ENV !== 'production') {
22
+ if (typeof descriptor.value !== 'function' && typeof descriptor.initializer !== 'function') {
23
+ throw new Error("@time decorated '".concat(name, "' is not a method"));
24
+ }
25
+ var fn = descriptor.value;
26
+ var initializer = descriptor.initializer;
27
+ // eslint-disable-next-line func-names
28
+ var trackedFn = /*#__PURE__*/function () {
29
+ var _ref = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
30
+ var _len,
31
+ args,
32
+ _key,
33
+ result,
34
+ _args = arguments;
35
+ return regeneratorRuntime.wrap(function _callee$(_context) {
36
+ while (1) {
37
+ switch (_context.prev = _context.next) {
38
+ case 0:
39
+ if (typeof initializer === 'function') {
40
+ fn = initializer.call(this);
41
+ }
42
+ if (!(typeof fn !== 'function')) {
43
+ _context.next = 3;
44
+ break;
45
+ }
46
+ throw new Error("@time decorated '".concat(name, "' is not a function"));
47
+ case 3:
48
+ console.time("[Time Decorator] ".concat(title, ": "));
49
+ for (_len = _args.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
50
+ args[_key] = _args[_key];
51
+ }
52
+ _context.next = 7;
53
+ return fn.apply(this, args);
54
+ case 7:
55
+ result = _context.sent;
56
+ console.timeEnd("[Time Decorator] ".concat(title, ": "));
57
+ return _context.abrupt("return", result);
58
+ case 10:
59
+ case "end":
60
+ return _context.stop();
61
+ }
62
+ }
63
+ }, _callee, this);
64
+ }));
65
+ return function trackedFn() {
66
+ return _ref.apply(this, arguments);
67
+ };
68
+ }();
69
+
70
+ // the any type is just to be compatible with babel and tsc.
71
+ return {
72
+ enumerable: true,
73
+ configurable: true,
74
+ value: trackedFn
75
+ };
76
+ }
77
+ return descriptor;
78
+ };
79
+ };
80
+ exports.time = time;
81
+ //# sourceMappingURL=time.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"time.js","names":["time","title","target","name","descriptor","process","env","NODE_ENV","value","initializer","Error","concat","fn","trackedFn","_ref","_asyncToGenerator","regeneratorRuntime","mark","_callee","_len","args","_key","result","_args","arguments","wrap","_callee$","_context","prev","next","call","console","length","Array","apply","sent","timeEnd","abrupt","stop","enumerable","configurable","exports"],"sources":["src/decorators/time.ts"],"sourcesContent":["/**\n * let you can calculate the time when run that method,\n *\n * ### that time not calculate in `process.env.NODE_ENV !== 'production'`\n * @param title\n */\nexport const time = (title: string) => {\n // eslint-disable-next-line func-names\n return function (target: any, name: string, descriptor?: any) {\n if (process.env.NODE_ENV !== 'production') {\n if (\n typeof descriptor.value !== 'function' &&\n typeof descriptor.initializer !== 'function'\n ) {\n throw new Error(`@time decorated '${name}' is not a method`);\n }\n let fn: (...args: any) => any = descriptor.value;\n const initializer = descriptor.initializer;\n // eslint-disable-next-line func-names\n const trackedFn = async function (this: any, ...args: any) {\n if (typeof initializer === 'function') {\n fn = initializer.call(this);\n }\n if (typeof fn !== 'function') {\n throw new Error(`@time decorated '${name}' is not a function`);\n }\n console.time(`[Time Decorator] ${title}: `);\n const result = await fn.apply(this, args);\n console.timeEnd(`[Time Decorator] ${title}: `);\n return result;\n };\n\n // the any type is just to be compatible with babel and tsc.\n return {\n enumerable: true,\n configurable: true,\n value: trackedFn,\n } as any;\n }\n\n return descriptor;\n };\n};\n"],"mappings":";;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACO,IAAMA,IAAI,GAAG,SAAPA,IAAIA,CAAIC,KAAa,EAAK;EACrC;EACA,OAAO,UAAUC,MAAW,EAAEC,IAAY,EAAEC,UAAgB,EAAE;IAC5D,IAAIC,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;MACzC,IACE,OAAOH,UAAU,CAACI,KAAK,KAAK,UAAU,IACtC,OAAOJ,UAAU,CAACK,WAAW,KAAK,UAAU,EAC5C;QACA,MAAM,IAAIC,KAAK,qBAAAC,MAAA,CAAqBR,IAAI,sBAAmB,CAAC;MAC9D;MACA,IAAIS,EAAyB,GAAGR,UAAU,CAACI,KAAK;MAChD,IAAMC,WAAW,GAAGL,UAAU,CAACK,WAAW;MAC1C;MACA,IAAMI,SAAS;QAAA,IAAAC,IAAA,GAAAC,iBAAA,eAAAC,kBAAA,CAAAC,IAAA,CAAG,SAAAC,QAAA;UAAA,IAAAC,IAAA;YAAAC,IAAA;YAAAC,IAAA;YAAAC,MAAA;YAAAC,KAAA,GAAAC,SAAA;UAAA,OAAAR,kBAAA,CAAAS,IAAA,UAAAC,SAAAC,QAAA;YAAA;cAAA,QAAAA,QAAA,CAAAC,IAAA,GAAAD,QAAA,CAAAE,IAAA;gBAAA;kBAChB,IAAI,OAAOpB,WAAW,KAAK,UAAU,EAAE;oBACrCG,EAAE,GAAGH,WAAW,CAACqB,IAAI,CAAC,IAAI,CAAC;kBAC7B;kBAAC,MACG,OAAOlB,EAAE,KAAK,UAAU;oBAAAe,QAAA,CAAAE,IAAA;oBAAA;kBAAA;kBAAA,MACpB,IAAInB,KAAK,qBAAAC,MAAA,CAAqBR,IAAI,wBAAqB,CAAC;gBAAA;kBAEhE4B,OAAO,CAAC/B,IAAI,qBAAAW,MAAA,CAAqBV,KAAK,OAAI,CAAC;kBAAC,KAAAkB,IAAA,GAAAI,KAAA,CAAAS,MAAA,EAPEZ,IAAI,OAAAa,KAAA,CAAAd,IAAA,GAAAE,IAAA,MAAAA,IAAA,GAAAF,IAAA,EAAAE,IAAA;oBAAJD,IAAI,CAAAC,IAAA,IAAAE,KAAA,CAAAF,IAAA;kBAAA;kBAAAM,QAAA,CAAAE,IAAA;kBAAA,OAQ7BjB,EAAE,CAACsB,KAAK,CAAC,IAAI,EAAEd,IAAI,CAAC;gBAAA;kBAAnCE,MAAM,GAAAK,QAAA,CAAAQ,IAAA;kBACZJ,OAAO,CAACK,OAAO,qBAAAzB,MAAA,CAAqBV,KAAK,OAAI,CAAC;kBAAC,OAAA0B,QAAA,CAAAU,MAAA,WACxCf,MAAM;gBAAA;gBAAA;kBAAA,OAAAK,QAAA,CAAAW,IAAA;cAAA;YAAA;UAAA,GAAApB,OAAA;QAAA,CACd;QAAA,gBAXKL,SAASA,CAAA;UAAA,OAAAC,IAAA,CAAAoB,KAAA,OAAAV,SAAA;QAAA;MAAA,GAWd;;MAED;MACA,OAAO;QACLe,UAAU,EAAE,IAAI;QAChBC,YAAY,EAAE,IAAI;QAClBhC,KAAK,EAAEK;MACT,CAAC;IACH;IAEA,OAAOT,UAAU;EACnB,CAAC;AACH,CAAC;AAACqC,OAAA,CAAAzC,IAAA,GAAAA,IAAA"}
package/src/index.js ADDED
@@ -0,0 +1,28 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ var _decorators = require("./decorators");
7
+ Object.keys(_decorators).forEach(function (key) {
8
+ if (key === "default" || key === "__esModule") return;
9
+ if (key in exports && exports[key] === _decorators[key]) return;
10
+ Object.defineProperty(exports, key, {
11
+ enumerable: true,
12
+ get: function get() {
13
+ return _decorators[key];
14
+ }
15
+ });
16
+ });
17
+ var _utils = require("./utils");
18
+ Object.keys(_utils).forEach(function (key) {
19
+ if (key === "default" || key === "__esModule") return;
20
+ if (key in exports && exports[key] === _utils[key]) return;
21
+ Object.defineProperty(exports, key, {
22
+ enumerable: true,
23
+ get: function get() {
24
+ return _utils[key];
25
+ }
26
+ });
27
+ });
28
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","names":["_decorators","require","Object","keys","forEach","key","exports","defineProperty","enumerable","get","_utils"],"sources":["src/index.ts"],"sourcesContent":["export * from './decorators';\nexport * from './utils';\n"],"mappings":";;;;;AAAA,IAAAA,WAAA,GAAAC,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAH,WAAA,EAAAI,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAL,WAAA,CAAAK,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAT,WAAA,CAAAK,GAAA;IAAA;EAAA;AAAA;AACA,IAAAK,MAAA,GAAAT,OAAA;AAAAC,MAAA,CAAAC,IAAA,CAAAO,MAAA,EAAAN,OAAA,WAAAC,GAAA;EAAA,IAAAA,GAAA,kBAAAA,GAAA;EAAA,IAAAA,GAAA,IAAAC,OAAA,IAAAA,OAAA,CAAAD,GAAA,MAAAK,MAAA,CAAAL,GAAA;EAAAH,MAAA,CAAAK,cAAA,CAAAD,OAAA,EAAAD,GAAA;IAAAG,UAAA;IAAAC,GAAA,WAAAA,IAAA;MAAA,OAAAC,MAAA,CAAAL,GAAA;IAAA;EAAA;AAAA"}
@@ -0,0 +1,239 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.symbol");
4
+ require("core-js/modules/es.symbol.description");
5
+ require("core-js/modules/es.symbol.to-primitive");
6
+ require("core-js/modules/es.array.concat");
7
+ require("core-js/modules/es.array.flat");
8
+ require("core-js/modules/es.array.is-array");
9
+ require("core-js/modules/es.array.iterator");
10
+ require("core-js/modules/es.array.join");
11
+ require("core-js/modules/es.array.map");
12
+ require("core-js/modules/es.array.unscopables.flat");
13
+ require("core-js/modules/es.date.to-primitive");
14
+ require("core-js/modules/es.date.to-string");
15
+ require("core-js/modules/es.function.name");
16
+ require("core-js/modules/es.number.constructor");
17
+ require("core-js/modules/es.object.entries");
18
+ require("core-js/modules/es.object.to-string");
19
+ require("core-js/modules/es.promise");
20
+ require("core-js/modules/es.regexp.exec");
21
+ require("core-js/modules/es.regexp.to-string");
22
+ require("core-js/modules/es.string.iterator");
23
+ require("core-js/modules/es.string.split");
24
+ require("core-js/modules/web.dom-collections.iterator");
25
+ Object.defineProperty(exports, "__esModule", {
26
+ value: true
27
+ });
28
+ exports.MultiPartUTF8FormData = void 0;
29
+ require("regenerator-runtime/runtime");
30
+ var _base64Handler = require("./base64Handler");
31
+ function _typeof(obj) { "@babel/helpers - typeof"; return _typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (obj) { return typeof obj; } : function (obj) { return obj && "function" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }, _typeof(obj); }
32
+ function _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }
33
+ function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
34
+ function _iterableToArrayLimit(arr, i) { var _i = null == arr ? null : "undefined" != typeof Symbol && arr[Symbol.iterator] || arr["@@iterator"]; if (null != _i) { var _s, _e, _x, _r, _arr = [], _n = !0, _d = !1; try { if (_x = (_i = _i.call(arr)).next, 0 === i) { if (Object(_i) !== _i) return; _n = !1; } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0) { ; } } catch (err) { _d = !0, _e = err; } finally { try { if (!_n && null != _i["return"] && (_r = _i["return"](), Object(_r) !== _r)) return; } finally { if (_d) throw _e; } } return _arr; } }
35
+ function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }
36
+ function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }
37
+ function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
38
+ function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
39
+ function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
40
+ function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
41
+ function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }
42
+ function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
43
+ function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
44
+ function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
45
+ function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, _toPropertyKey(descriptor.key), descriptor); } }
46
+ function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); Object.defineProperty(Constructor, "prototype", { writable: false }); return Constructor; }
47
+ function _toPropertyKey(arg) { var key = _toPrimitive(arg, "string"); return _typeof(key) === "symbol" ? key : String(key); }
48
+ function _toPrimitive(input, hint) { if (_typeof(input) !== "object" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || "default"); if (_typeof(res) !== "object") return res; throw new TypeError("@@toPrimitive must return a primitive value."); } return (hint === "string" ? String : Number)(input); }
49
+ /**
50
+ * make you can send custom form data with `filename*=`
51
+ */
52
+ var MultiPartUTF8FormData = /*#__PURE__*/function () {
53
+ function MultiPartUTF8FormData(dataList) {
54
+ _classCallCheck(this, MultiPartUTF8FormData);
55
+ this.dataList = dataList;
56
+ this._boundary = "----Boundary".concat(Math.random().toString(35).substring(2));
57
+ }
58
+ _createClass(MultiPartUTF8FormData, [{
59
+ key: "getData",
60
+ value: function () {
61
+ var _getData = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {
62
+ var contentType,
63
+ formDataStringList,
64
+ wrappedBoundary,
65
+ outputRowData,
66
+ _args = arguments;
67
+ return regeneratorRuntime.wrap(function _callee$(_context) {
68
+ while (1) {
69
+ switch (_context.prev = _context.next) {
70
+ case 0:
71
+ contentType = _args.length > 0 && _args[0] !== undefined ? _args[0] : 'multipart/form-data';
72
+ _context.next = 3;
73
+ return this.getFormStringList();
74
+ case 3:
75
+ formDataStringList = _context.sent;
76
+ wrappedBoundary = "--".concat(this._boundary);
77
+ outputRowData = "".concat(formDataStringList.map(function (body) {
78
+ return "".concat(wrappedBoundary, "\r\n").concat(body);
79
+ }).join('\r\n'));
80
+ return _context.abrupt("return", {
81
+ contentType: "".concat(contentType, "; boundary=").concat(this._boundary),
82
+ formData: "".concat(outputRowData, "\r\n").concat(wrappedBoundary, "--")
83
+ });
84
+ case 7:
85
+ case "end":
86
+ return _context.stop();
87
+ }
88
+ }
89
+ }, _callee, this);
90
+ }));
91
+ function getData() {
92
+ return _getData.apply(this, arguments);
93
+ }
94
+ return getData;
95
+ }()
96
+ }, {
97
+ key: "getFormStringList",
98
+ value: function () {
99
+ var _getFormStringList = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {
100
+ var _this = this;
101
+ var result;
102
+ return regeneratorRuntime.wrap(function _callee4$(_context4) {
103
+ while (1) {
104
+ switch (_context4.prev = _context4.next) {
105
+ case 0:
106
+ _context4.next = 2;
107
+ return Promise.all([].concat(_toConsumableArray(Object.entries(this.dataList.fields || {}).map( /*#__PURE__*/function () {
108
+ var _ref2 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2(_ref) {
109
+ var _ref3, key, value;
110
+ return regeneratorRuntime.wrap(function _callee2$(_context2) {
111
+ while (1) {
112
+ switch (_context2.prev = _context2.next) {
113
+ case 0:
114
+ _ref3 = _slicedToArray(_ref, 2), key = _ref3[0], value = _ref3[1];
115
+ if (!(_typeof(value) === 'object')) {
116
+ _context2.next = 3;
117
+ break;
118
+ }
119
+ return _context2.abrupt("return", _this.getJsonFormString({
120
+ key: key,
121
+ source: JSON.stringify(value)
122
+ }));
123
+ case 3:
124
+ return _context2.abrupt("return", _this.getJsonFormString({
125
+ key: key,
126
+ source: value
127
+ }));
128
+ case 4:
129
+ case "end":
130
+ return _context2.stop();
131
+ }
132
+ }
133
+ }, _callee2);
134
+ }));
135
+ return function (_x) {
136
+ return _ref2.apply(this, arguments);
137
+ };
138
+ }())), _toConsumableArray(Object.entries(this.dataList.files || {}).map( /*#__PURE__*/function () {
139
+ var _ref5 = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3(_ref4) {
140
+ var _ref6, key, value;
141
+ return regeneratorRuntime.wrap(function _callee3$(_context3) {
142
+ while (1) {
143
+ switch (_context3.prev = _context3.next) {
144
+ case 0:
145
+ _ref6 = _slicedToArray(_ref4, 2), key = _ref6[0], value = _ref6[1];
146
+ if (!Array.isArray(value)) {
147
+ _context3.next = 3;
148
+ break;
149
+ }
150
+ return _context3.abrupt("return", Promise.all(value.map(function (file) {
151
+ return _this.processFile(key, file);
152
+ })));
153
+ case 3:
154
+ return _context3.abrupt("return", _this.processFile(key, value));
155
+ case 4:
156
+ case "end":
157
+ return _context3.stop();
158
+ }
159
+ }
160
+ }, _callee3);
161
+ }));
162
+ return function (_x2) {
163
+ return _ref5.apply(this, arguments);
164
+ };
165
+ }()))));
166
+ case 2:
167
+ result = _context4.sent;
168
+ return _context4.abrupt("return", result.flat());
169
+ case 4:
170
+ case "end":
171
+ return _context4.stop();
172
+ }
173
+ }
174
+ }, _callee4, this);
175
+ }));
176
+ function getFormStringList() {
177
+ return _getFormStringList.apply(this, arguments);
178
+ }
179
+ return getFormStringList;
180
+ }()
181
+ }, {
182
+ key: "processFile",
183
+ value: function () {
184
+ var _processFile = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee5(key, file) {
185
+ var base64;
186
+ return regeneratorRuntime.wrap(function _callee5$(_context5) {
187
+ while (1) {
188
+ switch (_context5.prev = _context5.next) {
189
+ case 0:
190
+ _context5.next = 2;
191
+ return (0, _base64Handler.fileToBase64)(file);
192
+ case 2:
193
+ base64 = _context5.sent;
194
+ return _context5.abrupt("return", this.getBase64FormString({
195
+ key: key,
196
+ source: base64,
197
+ filename: file instanceof File ? file.name : 'blob',
198
+ type: file.type
199
+ }));
200
+ case 4:
201
+ case "end":
202
+ return _context5.stop();
203
+ }
204
+ }
205
+ }, _callee5, this);
206
+ }));
207
+ function processFile(_x3, _x4) {
208
+ return _processFile.apply(this, arguments);
209
+ }
210
+ return processFile;
211
+ }()
212
+ }, {
213
+ key: "getJsonFormString",
214
+ value: function getJsonFormString(_ref7) {
215
+ var key = _ref7.key,
216
+ source = _ref7.source,
217
+ _ref7$type = _ref7.type,
218
+ type = _ref7$type === void 0 ? 'application/json' : _ref7$type;
219
+ return ["Content-Disposition: form-data; name=\"".concat(key, "\""), "Content-type: ".concat(type), '', "".concat(source)].join('\r\n');
220
+ }
221
+ }, {
222
+ key: "getBase64FormString",
223
+ value: function getBase64FormString(_ref8) {
224
+ var key = _ref8.key,
225
+ source = _ref8.source,
226
+ _ref8$filename = _ref8.filename,
227
+ filename = _ref8$filename === void 0 ? 'blob' : _ref8$filename,
228
+ _ref8$type = _ref8.type,
229
+ type = _ref8$type === void 0 ? 'application/octet-stream' : _ref8$type;
230
+ var encodedFileName = encodeURI(filename);
231
+ var contentType = type;
232
+ var dataUrl = source.split('base64,')[1];
233
+ return ["Content-Disposition: form-data; name=\"".concat(key, "\"; filename*=\"UTF-8''").concat(encodedFileName, "\"; filename=\"").concat(encodedFileName, "\""), "Content-Type: ".concat(contentType), 'Content-Transfer-Encoding: base64', '', dataUrl].join('\r\n');
234
+ }
235
+ }]);
236
+ return MultiPartUTF8FormData;
237
+ }();
238
+ exports.MultiPartUTF8FormData = MultiPartUTF8FormData;
239
+ //# sourceMappingURL=MultiPartUTF8FormData.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MultiPartUTF8FormData.js","names":["_base64Handler","require","_typeof","obj","Symbol","iterator","constructor","prototype","_slicedToArray","arr","i","_arrayWithHoles","_iterableToArrayLimit","_unsupportedIterableToArray","_nonIterableRest","TypeError","_i","_s","_e","_x","_r","_arr","_n","_d","call","next","Object","done","push","value","length","err","Array","isArray","_toConsumableArray","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","o","minLen","_arrayLikeToArray","n","toString","slice","name","from","test","iter","len","arr2","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","error","Promise","then","_asyncToGenerator","fn","self","args","arguments","apply","undefined","_classCallCheck","instance","Constructor","_defineProperties","target","props","descriptor","enumerable","configurable","writable","defineProperty","_toPropertyKey","_createClass","protoProps","staticProps","_toPrimitive","String","input","hint","prim","toPrimitive","res","Number","MultiPartUTF8FormData","dataList","_boundary","concat","Math","random","substring","_getData","regeneratorRuntime","mark","_callee","contentType","formDataStringList","wrappedBoundary","outputRowData","_args","wrap","_callee$","_context","prev","getFormStringList","sent","map","body","join","abrupt","formData","stop","getData","_getFormStringList","_callee4","_this","result","_callee4$","_context4","all","entries","fields","_ref2","_callee2","_ref","_ref3","_callee2$","_context2","getJsonFormString","source","JSON","stringify","files","_ref5","_callee3","_ref4","_ref6","_callee3$","_context3","file","processFile","_x2","flat","_processFile","_callee5","base64","_callee5$","_context5","fileToBase64","getBase64FormString","filename","File","type","_x3","_x4","_ref7","_ref7$type","_ref8","_ref8$filename","_ref8$type","encodedFileName","encodeURI","dataUrl","split","exports"],"sources":["src/utils/MultiPartUTF8FormData.ts"],"sourcesContent":["import { fileToBase64 } from './base64Handler';\n\ntype MultiPartDataType = {\n key: string;\n source: string;\n filename?: string;\n type?: string;\n};\n\nexport type MultiPartUTF8FormDataOptions = {\n fields?: Record<string, any>;\n files?: Record<string, File | Blob | File[] | Blob[]>;\n};\n\n/**\n * make you can send custom form data with `filename*=`\n */\nexport class MultiPartUTF8FormData {\n private _boundary = `----Boundary${Math.random().toString(35).substring(2)}`;\n\n constructor(private dataList: MultiPartUTF8FormDataOptions) {}\n\n async getData(contentType = 'multipart/form-data') {\n const formDataStringList = await this.getFormStringList();\n const wrappedBoundary = `--${this._boundary}`;\n const outputRowData = `${formDataStringList\n .map((body) => `${wrappedBoundary}\\r\\n${body}`)\n .join('\\r\\n')}`;\n\n return {\n contentType: `${contentType}; boundary=${this._boundary}`,\n formData: `${outputRowData}\\r\\n${wrappedBoundary}--`,\n };\n }\n\n private async getFormStringList() {\n const result = await Promise.all([\n ...Object.entries(this.dataList.fields || {}).map(\n async ([key, value]) => {\n if (typeof value === 'object') {\n return this.getJsonFormString({\n key,\n source: JSON.stringify(value),\n });\n }\n\n return this.getJsonFormString({\n key,\n source: value,\n });\n },\n ),\n ...Object.entries(this.dataList.files || {}).map(async ([key, value]) => {\n if (Array.isArray(value)) {\n return Promise.all(value.map((file) => this.processFile(key, file)));\n }\n\n return this.processFile(key, value);\n }),\n ]);\n\n return result.flat();\n }\n\n private async processFile(key: string, file: File | Blob) {\n const base64 = await fileToBase64(file);\n\n return this.getBase64FormString({\n key,\n source: base64,\n filename: file instanceof File ? file.name : 'blob',\n type: file.type,\n });\n }\n\n private getJsonFormString({\n key,\n source,\n type = 'application/json',\n }: MultiPartDataType) {\n return [\n `Content-Disposition: form-data; name=\"${key}\"`,\n `Content-type: ${type}`,\n '',\n `${source}`,\n ].join('\\r\\n');\n }\n\n private getBase64FormString({\n key,\n source,\n filename = 'blob',\n type = 'application/octet-stream',\n }: MultiPartDataType) {\n const encodedFileName = encodeURI(filename);\n const contentType = type;\n const dataUrl = source.split('base64,')[1];\n\n return [\n `Content-Disposition: form-data; name=\"${key}\"; filename*=\"UTF-8''${encodedFileName}\"; filename=\"${encodedFileName}\"`,\n `Content-Type: ${contentType}`,\n 'Content-Transfer-Encoding: base64',\n '',\n dataUrl,\n ].join('\\r\\n');\n }\n}\n"],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ "use strict";
2
+
3
+ require("core-js/modules/es.array.iterator");
4
+ require("core-js/modules/es.array-buffer.constructor");
5
+ require("core-js/modules/es.array-buffer.slice");
6
+ require("core-js/modules/es.object.to-string");
7
+ require("core-js/modules/es.promise");
8
+ require("core-js/modules/es.regexp.exec");
9
+ require("core-js/modules/es.string.replace");
10
+ require("core-js/modules/es.string.split");
11
+ require("core-js/modules/es.typed-array.uint8-array");
12
+ require("core-js/modules/es.typed-array.copy-within");
13
+ require("core-js/modules/es.typed-array.every");
14
+ require("core-js/modules/es.typed-array.fill");
15
+ require("core-js/modules/es.typed-array.filter");
16
+ require("core-js/modules/es.typed-array.find");
17
+ require("core-js/modules/es.typed-array.find-index");
18
+ require("core-js/modules/es.typed-array.for-each");
19
+ require("core-js/modules/es.typed-array.includes");
20
+ require("core-js/modules/es.typed-array.index-of");
21
+ require("core-js/modules/es.typed-array.iterator");
22
+ require("core-js/modules/es.typed-array.join");
23
+ require("core-js/modules/es.typed-array.last-index-of");
24
+ require("core-js/modules/es.typed-array.map");
25
+ require("core-js/modules/es.typed-array.reduce");
26
+ require("core-js/modules/es.typed-array.reduce-right");
27
+ require("core-js/modules/es.typed-array.reverse");
28
+ require("core-js/modules/es.typed-array.set");
29
+ require("core-js/modules/es.typed-array.slice");
30
+ require("core-js/modules/es.typed-array.some");
31
+ require("core-js/modules/es.typed-array.sort");
32
+ require("core-js/modules/es.typed-array.subarray");
33
+ require("core-js/modules/es.typed-array.to-locale-string");
34
+ require("core-js/modules/es.typed-array.to-string");
35
+ Object.defineProperty(exports, "__esModule", {
36
+ value: true
37
+ });
38
+ exports.base64ToBlob = base64ToBlob;
39
+ exports.base64ToFile = base64ToFile;
40
+ exports.decodeBase64DataUrl = decodeBase64DataUrl;
41
+ exports.fileToBinary = exports.fileToBase64 = void 0;
42
+ exports.isBase64DataUrl = isBase64DataUrl;
43
+ var REGEXP_BASE64_DATA_URL = /^(data:\w+\/[a-zA-Z+\-.]+;base64,)?(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/i;
44
+ function isBase64DataUrl(value) {
45
+ return REGEXP_BASE64_DATA_URL.test(value);
46
+ }
47
+ function decodeBase64DataUrl(dataURL) {
48
+ if (isBase64DataUrl(dataURL)) {
49
+ return atob(dataURL.split('base64,')[1]);
50
+ }
51
+ return '';
52
+ }
53
+ var fileToBase64 = function fileToBase64(file) {
54
+ return new Promise(function (resolve, reject) {
55
+ var reader = new FileReader();
56
+ reader.onload = function (e) {
57
+ resolve(e.target.result);
58
+ };
59
+ reader.onerror = function (err) {
60
+ reject(err);
61
+ };
62
+ reader.readAsDataURL(file);
63
+ });
64
+ };
65
+ exports.fileToBase64 = fileToBase64;
66
+ var fileToBinary = function fileToBinary(file) {
67
+ return new Promise(function (resolve, reject) {
68
+ var reader = new FileReader();
69
+ reader.onload = function (e) {
70
+ resolve(e.target.result);
71
+ };
72
+ reader.onerror = function (err) {
73
+ reject(err);
74
+ };
75
+ reader.readAsBinaryString(file);
76
+ });
77
+ };
78
+ exports.fileToBinary = fileToBinary;
79
+ function base64ToBlob(base64Image) {
80
+ var split = base64Image.split(',');
81
+ var type = split[0].replace('data:', '').replace(';base64', '');
82
+ var byteString = atob(split[1]);
83
+ var ab = new ArrayBuffer(byteString.length);
84
+ var ia = new Uint8Array(ab);
85
+ for (var i = 0; i < byteString.length; i += 1) {
86
+ ia[i] = byteString.charCodeAt(i);
87
+ }
88
+ return new Blob([ab], {
89
+ type: type
90
+ });
91
+ }
92
+ function base64ToFile(base64Image, filename) {
93
+ var blob = base64ToBlob(base64Image);
94
+ return new File([blob], filename);
95
+ }
96
+ //# sourceMappingURL=base64Handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base64Handler.js","names":["REGEXP_BASE64_DATA_URL","isBase64DataUrl","value","test","decodeBase64DataUrl","dataURL","atob","split","fileToBase64","file","Promise","resolve","reject","reader","FileReader","onload","e","target","result","onerror","err","readAsDataURL","exports","fileToBinary","readAsBinaryString","base64ToBlob","base64Image","type","replace","byteString","ab","ArrayBuffer","length","ia","Uint8Array","i","charCodeAt","Blob","base64ToFile","filename","blob","File"],"sources":["src/utils/base64Handler.ts"],"sourcesContent":["const REGEXP_BASE64_DATA_URL =\n /^(data:\\w+\\/[a-zA-Z+\\-.]+;base64,)?(?:[A-Za-z0-9+/]{4})*(?:[A-Za-z0-9+/]{2}==|[A-Za-z0-9+/]{3}=)?$/i;\n\nexport function isBase64DataUrl(value: string) {\n return REGEXP_BASE64_DATA_URL.test(value);\n}\n\nexport function decodeBase64DataUrl(dataURL: string) {\n if (isBase64DataUrl(dataURL)) {\n return atob(dataURL.split('base64,')[1]);\n }\n\n return '';\n}\n\nexport const fileToBase64 = (file: File | Blob) => {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = (e) => {\n resolve(e.target!.result as string);\n };\n\n reader.onerror = (err) => {\n reject(err);\n };\n\n reader.readAsDataURL(file);\n });\n};\n\nexport const fileToBinary = (file: File | Blob) => {\n return new Promise<string>((resolve, reject) => {\n const reader = new FileReader();\n reader.onload = (e) => {\n resolve(e.target!.result as string);\n };\n\n reader.onerror = (err) => {\n reject(err);\n };\n\n reader.readAsBinaryString(file);\n });\n};\n\nexport function base64ToBlob(base64Image: string) {\n const split = base64Image.split(',');\n const type = split[0].replace('data:', '').replace(';base64', '');\n const byteString = atob(split[1]);\n const ab = new ArrayBuffer(byteString.length);\n const ia = new Uint8Array(ab);\n for (let i = 0; i < byteString.length; i += 1) {\n ia[i] = byteString.charCodeAt(i);\n }\n return new Blob([ab], { type });\n}\n\nexport function base64ToFile(base64Image: string, filename: string) {\n const blob = base64ToBlob(base64Image);\n\n return new File([blob], filename);\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,IAAMA,sBAAsB,GAC1B,qGAAqG;AAEhG,SAASC,eAAeA,CAACC,KAAa,EAAE;EAC7C,OAAOF,sBAAsB,CAACG,IAAI,CAACD,KAAK,CAAC;AAC3C;AAEO,SAASE,mBAAmBA,CAACC,OAAe,EAAE;EACnD,IAAIJ,eAAe,CAACI,OAAO,CAAC,EAAE;IAC5B,OAAOC,IAAI,CAACD,OAAO,CAACE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;EAC1C;EAEA,OAAO,EAAE;AACX;AAEO,IAAMC,YAAY,GAAG,SAAfA,YAAYA,CAAIC,IAAiB,EAAK;EACjD,OAAO,IAAIC,OAAO,CAAS,UAACC,OAAO,EAAEC,MAAM,EAAK;IAC9C,IAAMC,MAAM,GAAG,IAAIC,UAAU,CAAC,CAAC;IAC/BD,MAAM,CAACE,MAAM,GAAG,UAACC,CAAC,EAAK;MACrBL,OAAO,CAACK,CAAC,CAACC,MAAM,CAAEC,MAAgB,CAAC;IACrC,CAAC;IAEDL,MAAM,CAACM,OAAO,GAAG,UAACC,GAAG,EAAK;MACxBR,MAAM,CAACQ,GAAG,CAAC;IACb,CAAC;IAEDP,MAAM,CAACQ,aAAa,CAACZ,IAAI,CAAC;EAC5B,CAAC,CAAC;AACJ,CAAC;AAACa,OAAA,CAAAd,YAAA,GAAAA,YAAA;AAEK,IAAMe,YAAY,GAAG,SAAfA,YAAYA,CAAId,IAAiB,EAAK;EACjD,OAAO,IAAIC,OAAO,CAAS,UAACC,OAAO,EAAEC,MAAM,EAAK;IAC9C,IAAMC,MAAM,GAAG,IAAIC,UAAU,CAAC,CAAC;IAC/BD,MAAM,CAACE,MAAM,GAAG,UAACC,CAAC,EAAK;MACrBL,OAAO,CAACK,CAAC,CAACC,MAAM,CAAEC,MAAgB,CAAC;IACrC,CAAC;IAEDL,MAAM,CAACM,OAAO,GAAG,UAACC,GAAG,EAAK;MACxBR,MAAM,CAACQ,GAAG,CAAC;IACb,CAAC;IAEDP,MAAM,CAACW,kBAAkB,CAACf,IAAI,CAAC;EACjC,CAAC,CAAC;AACJ,CAAC;AAACa,OAAA,CAAAC,YAAA,GAAAA,YAAA;AAEK,SAASE,YAAYA,CAACC,WAAmB,EAAE;EAChD,IAAMnB,KAAK,GAAGmB,WAAW,CAACnB,KAAK,CAAC,GAAG,CAAC;EACpC,IAAMoB,IAAI,GAAGpB,KAAK,CAAC,CAAC,CAAC,CAACqB,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAACA,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;EACjE,IAAMC,UAAU,GAAGvB,IAAI,CAACC,KAAK,CAAC,CAAC,CAAC,CAAC;EACjC,IAAMuB,EAAE,GAAG,IAAIC,WAAW,CAACF,UAAU,CAACG,MAAM,CAAC;EAC7C,IAAMC,EAAE,GAAG,IAAIC,UAAU,CAACJ,EAAE,CAAC;EAC7B,KAAK,IAAIK,CAAC,GAAG,CAAC,EAAEA,CAAC,GAAGN,UAAU,CAACG,MAAM,EAAEG,CAAC,IAAI,CAAC,EAAE;IAC7CF,EAAE,CAACE,CAAC,CAAC,GAAGN,UAAU,CAACO,UAAU,CAACD,CAAC,CAAC;EAClC;EACA,OAAO,IAAIE,IAAI,CAAC,CAACP,EAAE,CAAC,EAAE;IAAEH,IAAI,EAAJA;EAAK,CAAC,CAAC;AACjC;AAEO,SAASW,YAAYA,CAACZ,WAAmB,EAAEa,QAAgB,EAAE;EAClE,IAAMC,IAAI,GAAGf,YAAY,CAACC,WAAW,CAAC;EAEtC,OAAO,IAAIe,IAAI,CAAC,CAACD,IAAI,CAAC,EAAED,QAAQ,CAAC;AACnC"}