clientnode 4.0.1490 → 4.0.1492

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 (113) hide show
  1. package/dist/Lock.js +83 -68
  2. package/dist/Logger.js +163 -693
  3. package/dist/Semaphore.js +46 -55
  4. package/dist/array.js +337 -545
  5. package/dist/cli.js +37 -44
  6. package/dist/constants.js +110 -184
  7. package/dist/context.js +25 -209
  8. package/dist/cookie.js +48 -204
  9. package/dist/data-transfer.js +166 -701
  10. package/dist/datetime.js +245 -1042
  11. package/dist/domNode.js +277 -427
  12. package/dist/expression/evaluators.js +234 -1108
  13. package/dist/expression/helper.js +82 -100
  14. package/dist/expression/index.js +10 -1253
  15. package/dist/expression/indicator-functions.js +21 -208
  16. package/dist/expression/type.js +5 -1
  17. package/dist/filesystem.js +324 -286
  18. package/dist/function.js +51 -90
  19. package/dist/index.js +26 -3059
  20. package/dist/indicators.js +79 -418
  21. package/dist/module.js +109 -154
  22. package/dist/number.js +25 -397
  23. package/dist/object.js +803 -849
  24. package/dist/process.js +38 -200
  25. package/dist/property-types.js +96 -17
  26. package/dist/scope.js +56 -1982
  27. package/dist/string.js +626 -924
  28. package/dist/test-helper.js +289 -514
  29. package/dist/type.js +9 -4
  30. package/dist/utility.js +91 -310
  31. package/package.json +2 -2
  32. package/dist/Lock.d.ts +0 -39
  33. package/dist/Logger.d.ts +0 -102
  34. package/dist/Semaphore.d.ts +0 -29
  35. package/dist/array.d.ts +0 -150
  36. package/dist/bundle/index.js +0 -4507
  37. package/dist/cli.d.ts +0 -31
  38. package/dist/compatible/Lock.js +0 -85
  39. package/dist/compatible/Logger.js +0 -715
  40. package/dist/compatible/Semaphore.js +0 -74
  41. package/dist/compatible/array.js +0 -660
  42. package/dist/compatible/cli.js +0 -58
  43. package/dist/compatible/constants.js +0 -200
  44. package/dist/compatible/context.js +0 -224
  45. package/dist/compatible/cookie.js +0 -240
  46. package/dist/compatible/data-transfer.js +0 -751
  47. package/dist/compatible/datetime.js +0 -1083
  48. package/dist/compatible/domNode.js +0 -481
  49. package/dist/compatible/expression/evaluators.js +0 -1147
  50. package/dist/compatible/expression/helper.js +0 -115
  51. package/dist/compatible/expression/index.js +0 -1269
  52. package/dist/compatible/expression/indicator-functions.js +0 -224
  53. package/dist/compatible/expression/type.js +0 -16
  54. package/dist/compatible/filesystem.js +0 -373
  55. package/dist/compatible/function.js +0 -114
  56. package/dist/compatible/index.js +0 -3076
  57. package/dist/compatible/indicators.js +0 -471
  58. package/dist/compatible/module.js +0 -168
  59. package/dist/compatible/number.js +0 -433
  60. package/dist/compatible/object.js +0 -1037
  61. package/dist/compatible/process.js +0 -230
  62. package/dist/compatible/property-types.js +0 -36
  63. package/dist/compatible/scope.js +0 -2011
  64. package/dist/compatible/string.js +0 -1151
  65. package/dist/compatible/test-helper.js +0 -837
  66. package/dist/compatible/type.js +0 -16
  67. package/dist/compatible/utility.js +0 -358
  68. package/dist/constants.d.ts +0 -99
  69. package/dist/context.d.ts +0 -8
  70. package/dist/cookie.d.ts +0 -31
  71. package/dist/data-transfer.d.ts +0 -45
  72. package/dist/datetime.d.ts +0 -37
  73. package/dist/domNode.d.ts +0 -82
  74. package/dist/expression/evaluators.d.ts +0 -55
  75. package/dist/expression/helper.d.ts +0 -4
  76. package/dist/expression/index.d.ts +0 -7
  77. package/dist/expression/indicator-functions.d.ts +0 -14
  78. package/dist/expression/type.d.ts +0 -70
  79. package/dist/filesystem.d.ts +0 -143
  80. package/dist/function.d.ts +0 -20
  81. package/dist/index.d.ts +0 -23
  82. package/dist/indicators.d.ts +0 -68
  83. package/dist/module.d.ts +0 -10
  84. package/dist/number.d.ts +0 -35
  85. package/dist/object.d.ts +0 -231
  86. package/dist/process.d.ts +0 -22
  87. package/dist/property-types.d.ts +0 -460
  88. package/dist/scope.d.ts +0 -44
  89. package/dist/string.d.ts +0 -319
  90. package/dist/test/Lock.d.ts +0 -1
  91. package/dist/test/Logger.d.ts +0 -1
  92. package/dist/test/Semaphore.d.ts +0 -1
  93. package/dist/test/array.d.ts +0 -1
  94. package/dist/test/cookie.d.ts +0 -1
  95. package/dist/test/data-transfer.d.ts +0 -1
  96. package/dist/test/datetime.d.ts +0 -1
  97. package/dist/test/domNode.d.ts +0 -1
  98. package/dist/test/expression/evaluators.d.ts +0 -1
  99. package/dist/test/expression/helper.d.ts +0 -1
  100. package/dist/test/expression/indicator-functions.d.ts +0 -1
  101. package/dist/test/filesystem.d.ts +0 -1
  102. package/dist/test/function.d.ts +0 -1
  103. package/dist/test/indicators.d.ts +0 -1
  104. package/dist/test/number.d.ts +0 -1
  105. package/dist/test/object.d.ts +0 -1
  106. package/dist/test/process.d.ts +0 -1
  107. package/dist/test/property-types.d.ts +0 -1
  108. package/dist/test/scope.d.ts +0 -1
  109. package/dist/test/string.d.ts +0 -1
  110. package/dist/test/utility.d.ts +0 -1
  111. package/dist/test-helper.d.ts +0 -245
  112. package/dist/type.d.ts +0 -248
  113. package/dist/utility.d.ts +0 -44
@@ -1,97 +1,9 @@
1
- if(typeof window==='undefined'||window===null)var window=(typeof globalThis==='undefined'||globalThis===null)?{}:globalThis;import * as __WEBPACK_EXTERNAL_MODULE_core_js_modules_es_array_includes_js_66c3fd7d__ from "core-js/modules/es.array.includes.js";
2
- /******/ var __webpack_modules__ = ([
3
- /* 0 */
4
- /***/ (function(module, __unused_webpack_exports, __webpack_require__) {
5
-
6
- var x = function(y) {
7
- var x = {}; __webpack_require__.d(x, y); return x
8
- }
9
- var y = function(x) { return function() { return x; }; }
10
- module.exports = x({ });
11
-
12
- /***/ }),
13
- /* 1 */
14
- /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
15
-
16
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
17
- /* harmony export */ uJ: function() { return /* binding */ DEFAULT_ENCODING; }
18
- /* harmony export */ });
19
- /* unused harmony exports CLOSE_EVENT_NAMES, CONSOLE_METHODS, VALUE_COPY_SYMBOL, IGNORE_NULL_AND_UNDEFINED_SYMBOL, ABBREVIATIONS, ANIMATION_END_EVENT_NAMES, CLASS_TO_TYPE_MAPPING, KEY_CODES, KEYBOARD_CODES, LOCALES, PLAIN_OBJECT_PROTOTYPES, SPECIAL_REGEX_SEQUENCES, TRANSITION_END_EVENT_NAMES */
20
- // #!/usr/bin/env babel-node
21
- // -*- coding: utf-8 -*-
22
- /** @module constants *//* !
23
- region header
24
- [Project page](https://torben.website/clientnode)
25
-
26
- Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
27
-
28
- License
29
- -------
30
-
31
- This library written by Torben Sickert stands under a creative commons
32
- naming 3.0 unported license.
33
- See https://creativecommons.org/licenses/by/3.0/deed.de
34
- endregion
35
- */var DEFAULT_ENCODING="utf8";var CLOSE_EVENT_NAMES=(/* unused pure expression or super */ null && (["close","exit","SIGINT","SIGTERM","SIGQUIT","uncaughtException"]));var CONSOLE_METHODS=(/* unused pure expression or super */ null && (["debug","error","info","log","warn"]));var VALUE_COPY_SYMBOL=Symbol.for("clientnodeValue");var IGNORE_NULL_AND_UNDEFINED_SYMBOL=Symbol.for("clientnodeIgnoreNullAndUndefined");// Lists all known abbreviation for proper camel case to delimited and back
36
- // conversion.
37
- var ABBREVIATIONS=(/* unused pure expression or super */ null && (["html","id","url","us","de","api","href"]));// Saves a string with all css3 browser specific animation end event names.
38
- var ANIMATION_END_EVENT_NAMES="animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd";// String representation to object type name mapping.
39
- var CLASS_TO_TYPE_MAPPING=(/* unused pure expression or super */ null && ({"[object Array]":"array","[object Boolean]":"boolean","[object Date]":"date","[object Error]":"error","[object Function]":"function","[object Map]":"map","[object Number]":"number","[object Object]":"object","[object RegExp]":"regexp","[object Set]":"set","[object String]":"string"}));// Saves a mapping from key codes to their corresponding name.
40
- var KEY_CODES=(/* unused pure expression or super */ null && ({BACKSPACE:8,SPACE:32,TAB:9,DELETE:46,ENTER:13,COMMA:188,PERIOD:190,END:35,ESCAPE:27,F1:112,F2:113,F3:114,F4:115,F5:116,F6:117,F7:118,F8:119,F9:120,F10:121,F11:122,F12:123,HOME:36,NUMPAD_ADD:107,NUMPAD_SUBTRACT:109,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,PAGE_UP:33,PAGE_DOWN:34,UP:38,DOWN:40,LEFT:37,RIGHT:39}));var KEYBOARD_CODES=(/* unused pure expression or super */ null && ({BACKSPACE:"Backspace",SPACE:"Space",TAB:"Tab",DELETE:"Delete",ENTER:"Enter",COMMA:"Comma",PERIOD:"Period",END:"End",ESCAPE:"Escape",F1:"F1",F2:"F2",F3:"F3",F4:"F4",F5:"F5",F6:"F6",F7:"F7",F8:"F8",F9:"F9",F10:"F10",F11:"F111",F12:"F12",HOME:"Home",NUMPAD_ADD:"NumpadAdd",NUMPAD_SUBTRACT:"NumpadSubtract",NUMPAD_DECIMAL:"NumpadDecimal",NUMPAD_DIVIDE:"NumpadDivide",NUMPAD_ENTER:"NumpadEnter",NUMPAD_MULTIPLY:"NumpadMultiply",PAGE_UP:"PageUp",PAGE_DOWN:"PageUp",UP:"ArrowUp",DOWN:"ArrowDown",LEFT:"ArrowLeft",RIGHT:"ArrowUp"}));var LOCALES=(/* unused pure expression or super */ null && ([]));var PLAIN_OBJECT_PROTOTYPES=[Object.prototype];// A list of special regular expression symbols.
41
- var SPECIAL_REGEX_SEQUENCES=(/* unused pure expression or super */ null && (["-","[","]","(",")","^","$","*","+",".","{","}"]));// Saves a string with all css3 browser specific transition end event names.
42
- var TRANSITION_END_EVENT_NAMES="transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd";
43
-
44
- /***/ }),
45
- /* 2 */
46
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
47
-
48
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
49
- /* harmony export */ I5: function() { return /* binding */ optionalRequire; },
50
- /* harmony export */ Sw: function() { return /* binding */ optionalImport; },
51
- /* harmony export */ a8: function() { return /* binding */ determineGlobalContext; }
52
- /* harmony export */ });
53
- /* unused harmony exports isImportSyntaxSupported, currentRequire, setOptionalRequire, getCurrentRequire, clearRequireCache, isolatedRequire */
54
- /* module decorator */ module = __webpack_require__.hmd(module);
55
1
  // #!/usr/bin/env babel-node
56
2
  // -*- coding: utf-8 -*-
57
- /** @module module *//* !
58
- region header
59
- [Project page](https://torben.website/clientnode)
60
-
61
- Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
62
-
63
- License
64
- -------
65
-
66
- This library written by Torben Sickert stands under a creative commons
67
- naming 3.0 unported license.
68
- See https://creativecommons.org/licenses/by/3.0/deed.de
69
- endregion
70
- */function _slicedToArray(r,e){return _arrayWithHoles(r)||_iterableToArrayLimit(r,e)||_unsupportedIterableToArray(r,e)||_nonIterableRest()}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.")}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function _iterableToArrayLimit(r,l){var t=null==r?null:"undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(null!=t){var e,n,i,u,a=[],f=!0,o=!1;try{if(i=(t=t.call(r)).next,0===l){if(Object(t)!==t)return;f=!1}else for(;!(f=(e=i.call(t)).done)&&(a.push(e.value),a.length!==l);f=!0);}catch(r){o=!0,n=r}finally{try{if(!f&&null!=t.return&&(u=t.return(),Object(u)!==u))return}finally{if(o)throw n}}return a}}function _arrayWithHoles(r){if(Array.isArray(r))return r}function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var c=n&&n.prototype instanceof Generator?n:Generator,u=Object.create(c.prototype);return _regeneratorDefine2(u,"_invoke",function(r,n,o){var i,c,u,f=0,p=o||[],y=!1,G={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function d(t,r){return i=t,c=0,u=e,G.n=r,a}};function d(r,n){for(c=r,u=n,t=0;!y&&f&&!o&&t<p.length;t++){var o,i=p[t],d=G.p,l=i[2];r>3?(o=l===n)&&(u=i[(c=i[4])?5:(c=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&d<i[1])?(c=0,G.v=n,G.n=i[1]):d<l&&(o=r<3||i[0]>n||n>l)&&(i[4]=r,i[5]=n,G.n=l,c=0))}if(o||r>1)return a;throw y=!0,n}return function(o,p,l){if(f>1)throw TypeError("Generator is already running");for(y&&1===p&&d(p,l),c=p,u=l;(t=c<2?e:u)||!y;){i||(c?c<3?(c>1&&(G.n=-1),d(c,u)):G.n=u:G.v=u);try{if(f=2,i){if(c||(o="next"),t=i[o]){if(!(t=t.call(i,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,c<2&&(c=0)}else 1===c&&(t=i.return)&&t.call(i),c<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),c=1);i=e}else if((t=(y=G.n<0)?u:r.call(n,G))!==a)break}catch(t){i=e,c=1,u=t}finally{f=1}}return{value:t,done:y}}}(r,o,i),!0),u}var a={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}t=Object.getPrototypeOf;var c=[][n]?t(t([][n]())):(_regeneratorDefine2(t={},n,function(){return this}),t),u=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(c);function f(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,GeneratorFunctionPrototype):(e.__proto__=GeneratorFunctionPrototype,_regeneratorDefine2(e,o,"GeneratorFunction")),e.prototype=Object.create(u),e}return GeneratorFunction.prototype=GeneratorFunctionPrototype,_regeneratorDefine2(u,"constructor",GeneratorFunctionPrototype),_regeneratorDefine2(GeneratorFunctionPrototype,"constructor",GeneratorFunction),GeneratorFunction.displayName="GeneratorFunction",_regeneratorDefine2(GeneratorFunctionPrototype,o,"GeneratorFunction"),_regeneratorDefine2(u),_regeneratorDefine2(u,o,"Generator"),_regeneratorDefine2(u,n,function(){return this}),_regeneratorDefine2(u,"toString",function(){return"[object Generator]"}),(_regenerator=function _regenerator(){return{w:i,m:f}})()}function _regeneratorDefine2(e,r,n,t){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}_regeneratorDefine2=function _regeneratorDefine(e,r,n,t){function o(r,n){_regeneratorDefine2(e,r,function(e){return this._invoke(r,n,e)})}r?i?i(e,r,{value:n,enumerable:!t,configurable:!t,writable:!t}):e[r]=n:(o("next",0),o("throw",1),o("return",2))},_regeneratorDefine2(e,r,n,t)}function asyncGeneratorStep(n,t,e,r,o,a,c){try{var i=n[a](c),u=i.value}catch(n){return void e(n)}i.done?t(u):Promise.resolve(u).then(r,o)}function _asyncToGenerator(n){return function(){var t=this,e=arguments;return new Promise(function(r,o){var a=n.apply(t,e);function _next(n){asyncGeneratorStep(a,r,o,_next,_throw,"next",n)}function _throw(n){asyncGeneratorStep(a,r,o,_next,_throw,"throw",n)}_next(void 0)})}}var determineGlobalContext=function determineGlobalContext(){if(typeof globalThis==="undefined"){if(typeof window==="undefined"){if(typeof __webpack_require__.g==="undefined")return false?0:module;if(Object.prototype.hasOwnProperty.call(__webpack_require__.g,"window"))return __webpack_require__.g.window;return __webpack_require__.g}return window}return globalThis};var globalContext=determineGlobalContext();var isImportSyntaxSupported=function isImportSyntaxSupported(){try{// eslint-disable-next-line @typescript-eslint/no-implied-eval
71
- new Function("import(\"data:text/javascript,\")");return true}catch(_unused){return false}};var currentRequire=typeof globalContext.require==="undefined"?null:globalContext.require;var optionalRequire;var setOptionalRequire=function setOptionalRequire(localCurrentRequire){optionalRequire=function optionalRequire(id){try{return localCurrentRequire?localCurrentRequire(id):null}catch(_unused2){return null}}};setOptionalRequire(currentRequire);// Make preprocessed require function available at runtime.
72
- var getCurrentRequire=/*#__PURE__*/(/* unused pure expression or super */ null && (function(){var _getCurrentRequire=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(){var _yield$Function,createRequire,_t;return _regenerator().w(function(_context){while(1)switch(_context.p=_context.n){case 0:if(!currentRequire){_context.n=1;break}return _context.a(2,currentRequire);case 1:_context.p=1;_context.n=2;return new Function("return import(\"node:module\")")();case 2:_yield$Function=_context.v;createRequire=_yield$Function.createRequire;/*
73
- eslint-enable
74
- @typescript-eslint/no-implied-eval,
75
- @typescript-eslint/no-unsafe-call
76
- */// eslint-disable-next-line @typescript-eslint/no-unsafe-call
77
- currentRequire=createRequire("file:///__w/clientnode/clientnode/src/module.ts");setOptionalRequire(currentRequire);return _context.a(2,currentRequire);case 3:_context.p=3;_t=_context.v;console.error(_t);return _context.a(2,null)}},_callee,null,[[1,3]])}));function getCurrentRequire(){return _getCurrentRequire.apply(this,arguments)}return getCurrentRequire}()));var clearRequireCache=function clearRequireCache(cache){if(cache===void 0){var _currentRequire;cache=((_currentRequire=currentRequire)===null||_currentRequire===void 0?void 0:_currentRequire.cache)||__webpack_require__.c}var backup={};for(var _i=0,_Object$entries=Object.entries(cache);_i<_Object$entries.length;_i++){var _Object$entries$_i=_slicedToArray(_Object$entries[_i],2),key=_Object$entries$_i[0],_module=_Object$entries$_i[1];backup[key]=_module;delete cache[key]}return backup};var restoreRequireCache=function restoreRequireCache(cache,backup){if(cache===void 0){var _currentRequire2;cache=((_currentRequire2=currentRequire)===null||_currentRequire2===void 0?void 0:_currentRequire2.cache)||__webpack_require__.c}clearRequireCache();for(var _i2=0,_Object$entries2=Object.entries(backup);_i2<_Object$entries2.length;_i2++){var _Object$entries2$_i=_slicedToArray(_Object$entries2[_i2],2),key=_Object$entries2$_i[0],_module2=_Object$entries2$_i[1];cache[key]=_module2}};var isolatedRequire=function isolatedRequire(path,requireFunction){if(requireFunction===void 0){requireFunction=currentRequire||__webpack_require__(6)}var backup=clearRequireCache(requireFunction.cache);try{return requireFunction(path);// eslint-disable-next-line no-useless-catch
78
- }catch(error){throw error}finally{restoreRequireCache(requireFunction.cache,backup)}};var optionalImport=/*#__PURE__*/function(){var _optionalImport=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(id,options){var _t2,_t3;return _regenerator().w(function(_context2){while(1)switch(_context2.p=_context2.n){case 0:if(options===void 0){options={}}_context2.p=1;if(!isImportSyntaxSupported()){_context2.n=3;break}_context2.n=2;return new Function("options","return import('".concat(id,"', options)"))(options);case 2:_t2=_context2.v;_context2.n=5;break;case 3:_context2.n=4;return Promise.resolve(null);case 4:_t2=_context2.v;case 5:return _context2.a(2,_t2);case 6:_context2.p=6;_t3=_context2.v;_context2.n=7;return Promise.resolve(null);case 7:return _context2.a(2,_context2.v)}},_callee2,null,[[1,6]])}));function optionalImport(_x,_x2){return _optionalImport.apply(this,arguments)}return optionalImport}();
79
-
80
- /***/ }),
81
- /* 3 */,
82
- /* 4 */,
83
- /* 5 */
84
- /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3
+ /** @module filesystem */
4
+ 'use strict';
85
5
 
86
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
87
- /* harmony export */ tE: function() { return /* binding */ NOOP; }
88
- /* harmony export */ });
89
- /* unused harmony exports globalContext, setGlobalContext, MAXIMAL_NUMBER_OF_ITERATIONS, mockConsole */
90
- /* unused harmony import specifier */ var CONSOLE_METHODS;
91
- /* harmony import */ var _module_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
92
- // #!/usr/bin/env babel-node
93
- // -*- coding: utf-8 -*-
94
- /** @module context *//* !
6
+ /* !
95
7
  region header
96
8
  [Project page](https://torben.website/clientnode)
97
9
 
@@ -104,68 +16,81 @@ currentRequire=createRequire("file:///__w/clientnode/clientnode/src/module.ts");
104
16
  naming 3.0 unported license.
105
17
  See https://creativecommons.org/licenses/by/3.0/deed.de
106
18
  endregion
107
- */var _optionalRequire$defa,_optionalRequire;function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t.return||t.return()}finally{if(u)throw o}}}}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n};var globalContext=(0,_module_js__WEBPACK_IMPORTED_MODULE_0__/* .determineGlobalContext */ .a8)();var setGlobalContext=function setGlobalContext(context){globalContext=context};globalContext.fetch=globalContext.fetch?globalContext.fetch.bind(globalContext):(_optionalRequire$defa=(_optionalRequire=(0,_module_js__WEBPACK_IMPORTED_MODULE_0__/* .optionalRequire */ .I5)("node-fetch"))===null||_optionalRequire===void 0?void 0:_optionalRequire.default)!==null&&_optionalRequire$defa!==void 0?_optionalRequire$defa:function(){for(var _len=arguments.length,parameters=new Array(_len),_key=0;_key<_len;_key++){parameters[_key]=arguments[_key]}return (0,_module_js__WEBPACK_IMPORTED_MODULE_0__/* .optionalImport */ .Sw)(/* webpackIgnore: true */"node-fetch").then(function(module){var _ref;return(_ref=module).default.apply(_ref,parameters)})};var MAXIMAL_NUMBER_OF_ITERATIONS=(/* unused pure expression or super */ null && ({value:100}));// A no-op dummy function.
108
- var NOOP=function NOOP(){// Do nothing.
109
- };var mockConsole=function mockConsole(){// Avoid errors in browsers that lack a console.
110
- if(!Object.prototype.hasOwnProperty.call(globalContext,"console"))globalContext.console={};if(!globalContext.console)globalContext.console={};var _iterator=_createForOfIteratorHelper(CONSOLE_METHODS),_step;try{for(_iterator.s();!(_step=_iterator.n()).done;){var methodName=_step.value;if(!(methodName in globalContext.console))globalContext.console[methodName]=NOOP}}catch(err){_iterator.e(err)}finally{_iterator.f()}};
111
-
112
- /***/ }),
113
- /* 6 */
114
- /***/ (function(module) {
115
-
116
- function webpackEmptyContext(req) {
117
- var e = new Error("Cannot find module '" + req + "'");
118
- e.code = 'MODULE_NOT_FOUND';
119
- throw e;
120
- }
121
- webpackEmptyContext.keys = function() { return []; };
122
- webpackEmptyContext.resolve = webpackEmptyContext;
123
- webpackEmptyContext.id = 6;
124
- module.exports = webpackEmptyContext;
125
-
126
- /***/ }),
127
- /* 7 */,
128
- /* 8 */,
129
- /* 9 */,
130
- /* 10 */,
131
- /* 11 */,
132
- /* 12 */
133
- /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
134
-
135
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
136
- /* harmony export */ L5: function() { return /* binding */ importFilesystemAPI; },
137
- /* harmony export */ VW: function() { return /* binding */ imports; },
138
- /* harmony export */ WY: function() { return /* binding */ isFileSync; },
139
- /* harmony export */ Xp: function() { return /* binding */ copyFileSync; },
140
- /* harmony export */ ZP: function() { return /* binding */ isDirectorySync; },
141
- /* harmony export */ fo: function() { return /* binding */ isFile; },
142
- /* harmony export */ hu: function() { return /* binding */ _walkDirectoryRecursivelySync; },
143
- /* harmony export */ m3: function() { return /* binding */ copyFile; },
144
- /* harmony export */ uD: function() { return /* binding */ copyDirectoryRecursiveSync; },
145
- /* harmony export */ vX: function() { return /* binding */ copyDirectoryRecursive; },
146
- /* harmony export */ wd: function() { return /* binding */ isDirectory; },
147
- /* harmony export */ y3: function() { return /* binding */ _walkDirectoryRecursively; }
148
- /* harmony export */ });
149
- /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
150
- /* harmony import */ var _constants_js__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
151
- /* harmony import */ var _context_js__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
152
- /* harmony import */ var _module_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2);
153
- // #!/usr/bin/env babel-node
154
- // -*- coding: utf-8 -*-
155
- /** @module filesystem *//* !
156
- region header
157
- [Project page](https://torben.website/clientnode)
19
+ */
20
+ import "core-js/modules/es.array.includes.js";
21
+ import "core-js/modules/es.array.push.js";
22
+ import { DEFAULT_ENCODING } from "./constants.js";
23
+ import { NOOP } from "./context.js";
24
+ import { optionalImport } from "./module.js";
25
+ export const imports = {};
26
+ let mkdirSync;
27
+ let readdirSync;
28
+ let readFileSync;
29
+ let statSync;
30
+ let writeFileSync;
31
+ let mkdir;
32
+ let readdir;
33
+ let readFile;
34
+ let stat;
35
+ let writeFile;
36
+ let basename;
37
+ let join;
38
+ let resolve;
39
+ const importPromises = [];
40
+ export const importFilesystemAPI = () => {
41
+ if (importPromises.length > 0) return Promise.all(importPromises);
42
+ const fsImportPromise = optionalImport('fs');
43
+ void fsImportPromise.then(module => {
44
+ imports.fs = module;
45
+ if (module) {
46
+ mkdirSync = module.mkdirSync;
47
+ readdirSync = module.readdirSync;
48
+ readFileSync = module.readFileSync;
49
+ statSync = module.statSync;
50
+ writeFileSync = module.writeFileSync;
51
+ } else {
52
+ mkdirSync = null;
53
+ readdirSync = null;
54
+ readFileSync = null;
55
+ statSync = null;
56
+ writeFileSync = null;
57
+ }
58
+ });
59
+ const fsPromisesImportPromise = optionalImport('fs/promises');
60
+ void fsPromisesImportPromise.then(module => {
61
+ imports.fsPromises = module;
62
+ if (module) {
63
+ mkdir = module.mkdir;
64
+ readdir = module.readdir;
65
+ readFile = module.readFile;
66
+ stat = module.stat;
67
+ writeFile = module.writeFile;
68
+ } else {
69
+ mkdir = null;
70
+ readdir = null;
71
+ readFile = null;
72
+ stat = null;
73
+ writeFile = null;
74
+ }
75
+ });
76
+ const pathImportPromise = optionalImport('path');
77
+ void pathImportPromise.then(module => {
78
+ imports.path = module;
79
+ if (module) {
80
+ basename = module.basename;
81
+ join = module.join;
82
+ resolve = module.resolve;
83
+ } else {
84
+ basename = null;
85
+ join = null;
86
+ resolve = null;
87
+ }
88
+ });
89
+ importPromises.push(fsImportPromise, fsPromisesImportPromise, pathImportPromise);
90
+ return Promise.all(importPromises);
91
+ };
158
92
 
159
- Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
160
-
161
- License
162
- -------
163
-
164
- This library written by Torben Sickert stands under a creative commons
165
- naming 3.0 unported license.
166
- See https://creativecommons.org/licenses/by/3.0/deed.de
167
- endregion
168
- */function ownKeys(e,r){var t=Object.keys(e);if(Object.getOwnPropertySymbols){var o=Object.getOwnPropertySymbols(e);r&&(o=o.filter(function(r){return Object.getOwnPropertyDescriptor(e,r).enumerable})),t.push.apply(t,o)}return t}function _objectSpread(e){for(var r=1;r<arguments.length;r++){var t=null!=arguments[r]?arguments[r]:{};r%2?ownKeys(Object(t),!0).forEach(function(r){_defineProperty(e,r,t[r])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(t)):ownKeys(Object(t)).forEach(function(r){Object.defineProperty(e,r,Object.getOwnPropertyDescriptor(t,r))})}return e}function _defineProperty(e,r,t){return(r=_toPropertyKey(r))in e?Object.defineProperty(e,r,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[r]=t,e}function _toPropertyKey(t){var i=_toPrimitive(t,"string");return"symbol"==_typeof(i)?i:i+""}function _toPrimitive(t,r){if("object"!=_typeof(t)||!t)return t;var e=t[Symbol.toPrimitive];if(void 0!==e){var i=e.call(t,r||"default");if("object"!=_typeof(i))return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return("string"===r?String:Number)(t)}function _typeof(o){"@babel/helpers - typeof";return _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},_typeof(o)};function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */var e,t,r="function"==typeof Symbol?Symbol:{},n=r.iterator||"@@iterator",o=r.toStringTag||"@@toStringTag";function i(r,n,o,i){var c=n&&n.prototype instanceof Generator?n:Generator,u=Object.create(c.prototype);return _regeneratorDefine2(u,"_invoke",function(r,n,o){var i,c,u,f=0,p=o||[],y=!1,G={p:0,n:0,v:e,a:d,f:d.bind(e,4),d:function d(t,r){return i=t,c=0,u=e,G.n=r,a}};function d(r,n){for(c=r,u=n,t=0;!y&&f&&!o&&t<p.length;t++){var o,i=p[t],d=G.p,l=i[2];r>3?(o=l===n)&&(u=i[(c=i[4])?5:(c=3,3)],i[4]=i[5]=e):i[0]<=d&&((o=r<2&&d<i[1])?(c=0,G.v=n,G.n=i[1]):d<l&&(o=r<3||i[0]>n||n>l)&&(i[4]=r,i[5]=n,G.n=l,c=0))}if(o||r>1)return a;throw y=!0,n}return function(o,p,l){if(f>1)throw TypeError("Generator is already running");for(y&&1===p&&d(p,l),c=p,u=l;(t=c<2?e:u)||!y;){i||(c?c<3?(c>1&&(G.n=-1),d(c,u)):G.n=u:G.v=u);try{if(f=2,i){if(c||(o="next"),t=i[o]){if(!(t=t.call(i,u)))throw TypeError("iterator result is not an object");if(!t.done)return t;u=t.value,c<2&&(c=0)}else 1===c&&(t=i.return)&&t.call(i),c<2&&(u=TypeError("The iterator does not provide a '"+o+"' method"),c=1);i=e}else if((t=(y=G.n<0)?u:r.call(n,G))!==a)break}catch(t){i=e,c=1,u=t}finally{f=1}}return{value:t,done:y}}}(r,o,i),!0),u}var a={};function Generator(){}function GeneratorFunction(){}function GeneratorFunctionPrototype(){}t=Object.getPrototypeOf;var c=[][n]?t(t([][n]())):(_regeneratorDefine2(t={},n,function(){return this}),t),u=GeneratorFunctionPrototype.prototype=Generator.prototype=Object.create(c);function f(e){return Object.setPrototypeOf?Object.setPrototypeOf(e,GeneratorFunctionPrototype):(e.__proto__=GeneratorFunctionPrototype,_regeneratorDefine2(e,o,"GeneratorFunction")),e.prototype=Object.create(u),e}return GeneratorFunction.prototype=GeneratorFunctionPrototype,_regeneratorDefine2(u,"constructor",GeneratorFunctionPrototype),_regeneratorDefine2(GeneratorFunctionPrototype,"constructor",GeneratorFunction),GeneratorFunction.displayName="GeneratorFunction",_regeneratorDefine2(GeneratorFunctionPrototype,o,"GeneratorFunction"),_regeneratorDefine2(u),_regeneratorDefine2(u,o,"Generator"),_regeneratorDefine2(u,n,function(){return this}),_regeneratorDefine2(u,"toString",function(){return"[object Generator]"}),(_regenerator=function _regenerator(){return{w:i,m:f}})()}function _regeneratorDefine2(e,r,n,t){var i=Object.defineProperty;try{i({},"",{})}catch(e){i=0}_regeneratorDefine2=function _regeneratorDefine(e,r,n,t){function o(r,n){_regeneratorDefine2(e,r,function(e){return this._invoke(r,n,e)})}r?i?i(e,r,{value:n,enumerable:!t,configurable:!t,writable:!t}):e[r]=n:(o("next",0),o("throw",1),o("return",2))},_regeneratorDefine2(e,r,n,t)}function _createForOfIteratorHelper(r,e){var t="undefined"!=typeof Symbol&&r[Symbol.iterator]||r["@@iterator"];if(!t){if(Array.isArray(r)||(t=_unsupportedIterableToArray(r))||e&&r&&"number"==typeof r.length){t&&(r=t);var _n=0,F=function F(){};return{s:F,n:function n(){return _n>=r.length?{done:!0}:{done:!1,value:r[_n++]}},e:function e(r){throw r},f:F}}throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}var o,a=!0,u=!1;return{s:function s(){t=t.call(r)},n:function n(){var r=t.next();return a=r.done,r},e:function e(r){u=!0,o=r},f:function f(){try{a||null==t.return||t.return()}finally{if(u)throw o}}}}function _unsupportedIterableToArray(r,a){if(r){if("string"==typeof r)return _arrayLikeToArray(r,a);var t={}.toString.call(r).slice(8,-1);return"Object"===t&&r.constructor&&(t=r.constructor.name),"Map"===t||"Set"===t?Array.from(r):"Arguments"===t||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t)?_arrayLikeToArray(r,a):void 0}}function _arrayLikeToArray(r,a){(null==a||a>r.length)&&(a=r.length);for(var e=0,n=Array(a);e<a;e++)n[e]=r[e];return n}function asyncGeneratorStep(n,t,e,r,o,a,c){try{var i=n[a](c),u=i.value}catch(n){return void e(n)}i.done?t(u):Promise.resolve(u).then(r,o)}function _asyncToGenerator(n){return function(){var t=this,e=arguments;return new Promise(function(r,o){var a=n.apply(t,e);function _next(n){asyncGeneratorStep(a,r,o,_next,_throw,"next",n)}function _throw(n){asyncGeneratorStep(a,r,o,_next,_throw,"throw",n)}_next(void 0)})}};var imports={};var mkdirSync;var readdirSync;var readFileSync;var statSync;var writeFileSync;var mkdir;var readdir;var readFile;var stat;var writeFile;var basename;var join;var resolve;var importPromises=[];var importFilesystemAPI=function importFilesystemAPI(){if(importPromises.length>0)return Promise.all(importPromises);var fsImportPromise=(0,_module_js__WEBPACK_IMPORTED_MODULE_3__/* .optionalImport */ .Sw)("fs");void fsImportPromise.then(function(module){imports.fs=module;if(module){mkdirSync=module.mkdirSync;readdirSync=module.readdirSync;readFileSync=module.readFileSync;statSync=module.statSync;writeFileSync=module.writeFileSync}else{mkdirSync=null;readdirSync=null;readFileSync=null;statSync=null;writeFileSync=null}});var fsPromisesImportPromise=(0,_module_js__WEBPACK_IMPORTED_MODULE_3__/* .optionalImport */ .Sw)("fs/promises");void fsPromisesImportPromise.then(function(module){imports.fsPromises=module;if(module){mkdir=module.mkdir;readdir=module.readdir;readFile=module.readFile;stat=module.stat;writeFile=module.writeFile}else{mkdir=null;readdir=null;readFile=null;stat=null;writeFile=null}});var pathImportPromise=(0,_module_js__WEBPACK_IMPORTED_MODULE_3__/* .optionalImport */ .Sw)("path");void pathImportPromise.then(function(module){imports.path=module;if(module){basename=module.basename;join=module.join;resolve=module.resolve}else{basename=null;join=null;resolve=null}});importPromises.push(fsImportPromise,fsPromisesImportPromise,pathImportPromise);return Promise.all(importPromises)};/**
93
+ /**
169
94
  * Copies given source directory via path to given target directory location
170
95
  * with same target name as source file has or copy to given complete target
171
96
  * directory path.
@@ -178,7 +103,36 @@ module.exports = webpackEmptyContext;
178
103
  * @param readOptions - Options to use for reading source file.
179
104
  * @param writeOptions - Options to use for writing to target file.
180
105
  * @returns Promise holding the determined target directory path.
181
- */var copyDirectoryRecursive=/*#__PURE__*/function(){var _copyDirectoryRecursive=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(sourcePath,targetPath,contents,callback,readOptions,writeOptions){var _iterator,_step,_currentSourceFile$st,currentSourceFile,currentTargetPath,_t,_t2,_t3,_t4,_t5;return _regenerator().w(function(_context){while(1)switch(_context.p=_context.n){case 0:if(contents===void 0){contents=false}if(callback===void 0){callback=_context_js__WEBPACK_IMPORTED_MODULE_2__/* .NOOP */ .tE}if(readOptions===void 0){readOptions={encoding:null,flag:"r"}}if(writeOptions===void 0){writeOptions={encoding:_constants_js__WEBPACK_IMPORTED_MODULE_1__/* .DEFAULT_ENCODING */ .uJ,flag:"w",mode:438}}if(basename&&join&&mkdir&&resolve){_context.n=1;break}throw new Error("Could not load filesystem functions.");case 1:sourcePath=resolve(sourcePath);_t=!contents;if(!_t){_context.n=3;break}_context.n=2;return isDirectory(targetPath);case 2:_t=_context.v;case 3:if(!_t){_context.n=4;break}targetPath=resolve(targetPath,basename(sourcePath));case 4:_context.p=4;_context.n=5;return mkdir(targetPath);case 5:_context.n=7;break;case 6:_context.p=6;_t2=_context.v;if(!(_t2.code!=="EEXIST")){_context.n=7;break}throw _t2;case 7:_t3=_createForOfIteratorHelper;_context.n=8;return _walkDirectoryRecursively(sourcePath,callback);case 8:_iterator=_t3(_context.v);_context.p=9;_iterator.s();case 10:if((_step=_iterator.n()).done){_context.n=17;break}currentSourceFile=_step.value;currentTargetPath=join(targetPath,currentSourceFile.path.substring(sourcePath.length));if(!((_currentSourceFile$st=currentSourceFile.stats)!==null&&_currentSourceFile$st!==void 0&&_currentSourceFile$st.isDirectory())){_context.n=15;break}_context.p=11;_context.n=12;return mkdir(currentTargetPath);case 12:_context.n=14;break;case 13:_context.p=13;_t4=_context.v;if(!(_t4.code!=="EEXIST")){_context.n=14;break}throw _t4;case 14:_context.n=16;break;case 15:_context.n=16;return copyFile(currentSourceFile.path,currentTargetPath,readOptions,writeOptions);case 16:_context.n=10;break;case 17:_context.n=19;break;case 18:_context.p=18;_t5=_context.v;_iterator.e(_t5);case 19:_context.p=19;_iterator.f();return _context.f(19);case 20:return _context.a(2,targetPath)}},_callee,null,[[11,13],[9,18,19,20],[4,6]])}));function copyDirectoryRecursive(_x,_x2,_x3,_x4,_x5,_x6){return _copyDirectoryRecursive.apply(this,arguments)}return copyDirectoryRecursive}();/**
106
+ */
107
+ export const copyDirectoryRecursive = async (sourcePath, targetPath, contents = false, callback = NOOP, readOptions = {
108
+ encoding: null,
109
+ flag: 'r'
110
+ }, writeOptions = {
111
+ encoding: DEFAULT_ENCODING,
112
+ flag: 'w',
113
+ mode: 0o666
114
+ }) => {
115
+ if (!(basename && join && mkdir && resolve)) throw new Error('Could not load filesystem functions.');
116
+ sourcePath = resolve(sourcePath);
117
+ if (!contents && (await isDirectory(targetPath))) targetPath = resolve(targetPath, basename(sourcePath));
118
+
119
+ // NOTE: Check if folder needs to be created or integrated.
120
+ try {
121
+ await mkdir(targetPath);
122
+ } catch (error) {
123
+ if (error.code !== 'EEXIST') throw error;
124
+ }
125
+ for (const currentSourceFile of await walkDirectoryRecursively(sourcePath, callback)) {
126
+ const currentTargetPath = join(targetPath, currentSourceFile.path.substring(sourcePath.length));
127
+ if (currentSourceFile.stats?.isDirectory()) try {
128
+ await mkdir(currentTargetPath);
129
+ } catch (error) {
130
+ if (error.code !== 'EEXIST') throw error;
131
+ } else await copyFile(currentSourceFile.path, currentTargetPath, readOptions, writeOptions);
132
+ }
133
+ return targetPath;
134
+ };
135
+ /**
182
136
  * Copies given source directory via path to given target directory location
183
137
  * with same target name as source file has or copy to given complete target
184
138
  * directory path.
@@ -191,8 +145,36 @@ module.exports = webpackEmptyContext;
191
145
  * @param readOptions - Options to use for reading source file.
192
146
  * @param writeOptions - Options to use for writing to target file.
193
147
  * @returns Determined target directory path.
194
- */var copyDirectoryRecursiveSync=function copyDirectoryRecursiveSync(sourcePath,targetPath,contents,callback,readOptions,writeOptions){if(contents===void 0){contents=false}if(callback===void 0){callback=_context_js__WEBPACK_IMPORTED_MODULE_2__/* .NOOP */ .tE}if(readOptions===void 0){readOptions={encoding:null,flag:"r"}}if(writeOptions===void 0){writeOptions={encoding:_constants_js__WEBPACK_IMPORTED_MODULE_1__/* .DEFAULT_ENCODING */ .uJ,flag:"w",mode:438}}if(!(basename&&join&&mkdirSync&&resolve))throw new Error("Could not load filesystem functions.");sourcePath=resolve(sourcePath);if(!contents&&isDirectorySync(targetPath))targetPath=resolve(targetPath,basename(sourcePath));// NOTE: Try/Check if target folder needs to be created.
195
- try{mkdirSync(targetPath)}catch(error){if(error.code!=="EEXIST")throw error}for(var _i=0,_walkDirectoryRecursi=_walkDirectoryRecursivelySync(sourcePath,callback);_i<_walkDirectoryRecursi.length;_i++){var _currentSourceFile$st2;var currentSourceFile=_walkDirectoryRecursi[_i];var currentTargetPath=join(targetPath,currentSourceFile.path.substring(sourcePath.length));if((_currentSourceFile$st2=currentSourceFile.stats)!==null&&_currentSourceFile$st2!==void 0&&_currentSourceFile$st2.isDirectory())try{mkdirSync(currentTargetPath)}catch(error){if(error.code!=="EEXIST")throw error}else copyFileSync(currentSourceFile.path,currentTargetPath,readOptions,writeOptions)}return targetPath};/**
148
+ */
149
+ export const copyDirectoryRecursiveSync = (sourcePath, targetPath, contents = false, callback = NOOP, readOptions = {
150
+ encoding: null,
151
+ flag: 'r'
152
+ }, writeOptions = {
153
+ encoding: DEFAULT_ENCODING,
154
+ flag: 'w',
155
+ mode: 0o666
156
+ }) => {
157
+ if (!(basename && join && mkdirSync && resolve)) throw new Error('Could not load filesystem functions.');
158
+ sourcePath = resolve(sourcePath);
159
+ if (!contents && isDirectorySync(targetPath)) targetPath = resolve(targetPath, basename(sourcePath));
160
+
161
+ // NOTE: Try/Check if target folder needs to be created.
162
+ try {
163
+ mkdirSync(targetPath);
164
+ } catch (error) {
165
+ if (error.code !== 'EEXIST') throw error;
166
+ }
167
+ for (const currentSourceFile of walkDirectoryRecursivelySync(sourcePath, callback)) {
168
+ const currentTargetPath = join(targetPath, currentSourceFile.path.substring(sourcePath.length));
169
+ if (currentSourceFile.stats?.isDirectory()) try {
170
+ mkdirSync(currentTargetPath);
171
+ } catch (error) {
172
+ if (error.code !== 'EEXIST') throw error;
173
+ } else copyFileSync(currentSourceFile.path, currentTargetPath, readOptions, writeOptions);
174
+ }
175
+ return targetPath;
176
+ };
177
+ /**
196
178
  * Copies given source file via path to given target directory location with
197
179
  * same target name as source file has or copy to given complete target file
198
180
  * path.
@@ -201,7 +183,26 @@ try{mkdirSync(targetPath)}catch(error){if(error.code!=="EEXIST")throw error}for(
201
183
  * @param readOptions - Options to use for reading source file.
202
184
  * @param writeOptions - Options to use for writing to target file.
203
185
  * @returns Determined target file path.
204
- */var copyFile=/*#__PURE__*/function(){var _copyFile=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee2(sourcePath,targetPath,readOptions,writeOptions){var _t6,_t7;return _regenerator().w(function(_context2){while(1)switch(_context2.n){case 0:if(readOptions===void 0){readOptions={encoding:null,flag:"r"}}if(writeOptions===void 0){writeOptions={encoding:_constants_js__WEBPACK_IMPORTED_MODULE_1__/* .DEFAULT_ENCODING */ .uJ,flag:"w",mode:438}}if(basename&&readFile&&resolve&&writeFile){_context2.n=1;break}throw new Error("Could not load filesystem functions.");case 1:_context2.n=2;return isDirectory(targetPath);case 2:if(!_context2.v){_context2.n=3;break}targetPath=resolve(targetPath,basename(sourcePath));case 3:_t6=writeFile;_t7=targetPath;_context2.n=4;return readFile(sourcePath,readOptions);case 4:_context2.n=5;return _t6(_t7,_context2.v,writeOptions);case 5:return _context2.a(2,targetPath)}},_callee2)}));function copyFile(_x7,_x8,_x9,_x0){return _copyFile.apply(this,arguments)}return copyFile}();/**
186
+ */
187
+ export const copyFile = async (sourcePath, targetPath, readOptions = {
188
+ encoding: null,
189
+ flag: 'r'
190
+ }, writeOptions = {
191
+ encoding: DEFAULT_ENCODING,
192
+ flag: 'w',
193
+ mode: 0o666
194
+ }) => {
195
+ if (!(basename && readFile && resolve && writeFile)) throw new Error('Could not load filesystem functions.');
196
+
197
+ /*
198
+ NOTE: If target path references a directory a new file with the same
199
+ name will be created.
200
+ */
201
+ if (await isDirectory(targetPath)) targetPath = resolve(targetPath, basename(sourcePath));
202
+ await writeFile(targetPath, await readFile(sourcePath, readOptions), writeOptions);
203
+ return targetPath;
204
+ };
205
+ /**
205
206
  * Copies given source file via path to given target directory location with
206
207
  * same target name as source file has or copy to given complete target file
207
208
  * path.
@@ -210,26 +211,82 @@ try{mkdirSync(targetPath)}catch(error){if(error.code!=="EEXIST")throw error}for(
210
211
  * @param readOptions - Options to use for reading source file.
211
212
  * @param writeOptions - Options to use for writing to target file.
212
213
  * @returns Determined target file path.
213
- */var copyFileSync=function copyFileSync(sourcePath,targetPath,readOptions,writeOptions){if(readOptions===void 0){readOptions={encoding:null,flag:"r"}}if(writeOptions===void 0){writeOptions={encoding:_constants_js__WEBPACK_IMPORTED_MODULE_1__/* .DEFAULT_ENCODING */ .uJ,flag:"w",mode:438}}if(!(basename&&readFileSync&&resolve&&writeFileSync))throw new Error("Could not load filesystem functions.");/*
214
- NOTE: If target path references a directory a new file with the same
215
- name will be created.
216
- */if(isDirectorySync(targetPath))targetPath=resolve(targetPath,basename(sourcePath));writeFileSync(targetPath,readFileSync(sourcePath,readOptions),writeOptions);return targetPath};/**
214
+ */
215
+ export const copyFileSync = (sourcePath, targetPath, readOptions = {
216
+ encoding: null,
217
+ flag: 'r'
218
+ }, writeOptions = {
219
+ encoding: DEFAULT_ENCODING,
220
+ flag: 'w',
221
+ mode: 0o666
222
+ }) => {
223
+ if (!(basename && readFileSync && resolve && writeFileSync)) throw new Error('Could not load filesystem functions.');
224
+
225
+ /*
226
+ NOTE: If target path references a directory a new file with the same
227
+ name will be created.
228
+ */
229
+ if (isDirectorySync(targetPath)) targetPath = resolve(targetPath, basename(sourcePath));
230
+ writeFileSync(targetPath, readFileSync(sourcePath, readOptions), writeOptions);
231
+ return targetPath;
232
+ };
233
+ /**
217
234
  * Checks if given path points to a valid directory.
218
235
  * @param filePath - Path to directory.
219
236
  * @returns A promise holding a boolean which indicates directory existence.
220
- */var isDirectory=/*#__PURE__*/function(){var _isDirectory=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee3(filePath){var _t8;return _regenerator().w(function(_context3){while(1)switch(_context3.p=_context3.n){case 0:if(stat){_context3.n=1;break}throw new Error("Could not load filesystem functions.");case 1:_context3.p=1;_context3.n=2;return stat(filePath);case 2:return _context3.a(2,_context3.v.isDirectory());case 3:_context3.p=3;_t8=_context3.v;if(!(Object.prototype.hasOwnProperty.call(_t8,"code")&&["ENOENT","ENOTDIR"].includes(_t8.code))){_context3.n=4;break}return _context3.a(2,false);case 4:throw _t8;case 5:return _context3.a(2)}},_callee3,null,[[1,3]])}));function isDirectory(_x1){return _isDirectory.apply(this,arguments)}return isDirectory}();/**
237
+ */
238
+ export const isDirectory = async filePath => {
239
+ if (!stat) throw new Error('Could not load filesystem functions.');
240
+ try {
241
+ return (await stat(filePath)).isDirectory();
242
+ } catch (error) {
243
+ if (Object.prototype.hasOwnProperty.call(error, 'code') && ['ENOENT', 'ENOTDIR'].includes(error.code)) return false;
244
+ throw error;
245
+ }
246
+ };
247
+ /**
221
248
  * Checks if given path points to a valid directory.
222
249
  * @param filePath - Path to directory.
223
250
  * @returns A boolean which indicates directory existence.
224
- */var isDirectorySync=function isDirectorySync(filePath){if(!statSync)throw new Error("Could not load filesystem functions.");try{return statSync(filePath).isDirectory()}catch(error){if(Object.prototype.hasOwnProperty.call(error,"code")&&["ENOENT","ENOTDIR"].includes(error.code))return false;throw error}};/**
251
+ */
252
+ export const isDirectorySync = filePath => {
253
+ if (!statSync) throw new Error('Could not load filesystem functions.');
254
+ try {
255
+ return statSync(filePath).isDirectory();
256
+ } catch (error) {
257
+ if (Object.prototype.hasOwnProperty.call(error, 'code') && ['ENOENT', 'ENOTDIR'].includes(error.code)) return false;
258
+ throw error;
259
+ }
260
+ };
261
+ /**
225
262
  * Checks if given path points to a valid file.
226
263
  * @param filePath - Path to directory.
227
264
  * @returns A promise holding a boolean which indicates directory existence.
228
- */var isFile=/*#__PURE__*/function(){var _isFile=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee4(filePath){var _t9;return _regenerator().w(function(_context4){while(1)switch(_context4.p=_context4.n){case 0:if(stat){_context4.n=1;break}throw new Error("Could not load filesystem functions.");case 1:_context4.p=1;_context4.n=2;return stat(filePath);case 2:return _context4.a(2,_context4.v.isFile());case 3:_context4.p=3;_t9=_context4.v;if(!(Object.prototype.hasOwnProperty.call(_t9,"code")&&["ENOENT","ENOTDIR"].includes(_t9.code))){_context4.n=4;break}return _context4.a(2,false);case 4:throw _t9;case 5:return _context4.a(2)}},_callee4,null,[[1,3]])}));function isFile(_x10){return _isFile.apply(this,arguments)}return isFile}();/**
265
+ */
266
+ export const isFile = async filePath => {
267
+ if (!stat) throw new Error('Could not load filesystem functions.');
268
+ try {
269
+ return (await stat(filePath)).isFile();
270
+ } catch (error) {
271
+ if (Object.prototype.hasOwnProperty.call(error, 'code') && ['ENOENT', 'ENOTDIR'].includes(error.code)) return false;
272
+ throw error;
273
+ }
274
+ };
275
+ /**
229
276
  * Checks if given path points to a valid file.
230
277
  * @param filePath - Path to file.
231
278
  * @returns A boolean which indicates file existence.
232
- */var isFileSync=function isFileSync(filePath){if(!statSync)throw new Error("Could not load filesystem functions.");try{return statSync(filePath).isFile()}catch(error){if(Object.prototype.hasOwnProperty.call(error,"code")&&["ENOENT","ENOTDIR"].includes(error.code))return false;throw error}};/**
279
+ */
280
+ export const isFileSync = filePath => {
281
+ if (!statSync) throw new Error('Could not load filesystem functions.');
282
+ try {
283
+ return statSync(filePath).isFile();
284
+ } catch (error) {
285
+ if (Object.prototype.hasOwnProperty.call(error, 'code') && ['ENOENT', 'ENOTDIR'].includes(error.code)) return false;
286
+ throw error;
287
+ }
288
+ };
289
+ /**
233
290
  * Iterates through given directory structure recursively and calls given
234
291
  * callback for each found file. Callback gets file path and corresponding stat
235
292
  * object as argument.
@@ -242,10 +299,58 @@ try{mkdirSync(targetPath)}catch(error){if(error.code!=="EEXIST")throw error}for(
242
299
  * "false" no traversing into that directory will occur.
243
300
  * @param options - Options to use for nested "readdir" calls.
244
301
  * @returns A promise holding the determined files.
245
- */var _walkDirectoryRecursively=/*#__PURE__*/function(){var _walkDirectoryRecursively2=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee5(directoryPath,callback,options){var files,_iterator2,_step2,directoryEntry,filePath,_file,finalFiles,_i2,_files,_file$stats,file,result,_t0,_t1,_t10,_t11;return _regenerator().w(function(_context5){while(1)switch(_context5.p=_context5.n){case 0:if(callback===void 0){callback=null}if(options===void 0){options=_constants_js__WEBPACK_IMPORTED_MODULE_1__/* .DEFAULT_ENCODING */ .uJ}if(readdir&&resolve&&stat){_context5.n=1;break}throw new Error("Could not load filesystem functions.");case 1:files=[];_t0=_createForOfIteratorHelper;_context5.n=2;return readdir(directoryPath,typeof options==="string"?{encoding:options,withFileTypes:true}:_objectSpread(_objectSpread({},options),{},{withFileTypes:true}));case 2:_iterator2=_t0(_context5.v);_context5.p=3;_iterator2.s();case 4:if((_step2=_iterator2.n()).done){_context5.n=10;break}directoryEntry=_step2.value;filePath=resolve(directoryPath,directoryEntry.name);_file={directoryPath:directoryPath,directoryEntry:directoryEntry,error:null,name:directoryEntry.name,path:filePath,stats:null};_context5.p=5;_context5.n=6;return stat(filePath);case 6:_file.stats=_context5.v;_context5.n=8;break;case 7:_context5.p=7;_t1=_context5.v;_file.error=_t1;case 8:files.push(_file);case 9:_context5.n=4;break;case 10:_context5.n=12;break;case 11:_context5.p=11;_t10=_context5.v;_iterator2.e(_t10);case 12:_context5.p=12;_iterator2.f();return _context5.f(12);case 13:if(callback)/*
246
- NOTE: Directories and have to be iterated first to be able to
247
- avoid deeper unwanted traversing.
248
- */files.sort(function(firstFile,secondFile){var _firstFile$stats,_secondFile$stats2;if((_firstFile$stats=firstFile.stats)!==null&&_firstFile$stats!==void 0&&_firstFile$stats.isDirectory()){var _secondFile$stats;if((_secondFile$stats=secondFile.stats)!==null&&_secondFile$stats!==void 0&&_secondFile$stats.isDirectory())return 0;return-1}if((_secondFile$stats2=secondFile.stats)!==null&&_secondFile$stats2!==void 0&&_secondFile$stats2.isDirectory())return 1;return 0});finalFiles=[];_i2=0,_files=files;case 14:if(!(_i2<_files.length)){_context5.n=21;break}file=_files[_i2];finalFiles.push(file);result=callback?callback(file):undefined;if(!(result===null)){_context5.n=15;break}return _context5.a(3,21);case 15:if(!(_typeof(result)==="object"&&"then"in result)){_context5.n=17;break}_context5.n=16;return result;case 16:result=_context5.v;case 17:if(!(result===null)){_context5.n=18;break}return _context5.a(3,21);case 18:if(!(result!==false&&(_file$stats=file.stats)!==null&&_file$stats!==void 0&&_file$stats.isDirectory())){_context5.n=20;break}_t11=finalFiles;_context5.n=19;return _walkDirectoryRecursively(file.path,callback,options);case 19:finalFiles=_t11.concat.call(_t11,_context5.v);case 20:_i2++;_context5.n=14;break;case 21:return _context5.a(2,finalFiles)}},_callee5,null,[[5,7],[3,11,12,13]])}));function walkDirectoryRecursively(_x11,_x12,_x13){return _walkDirectoryRecursively2.apply(this,arguments)}return walkDirectoryRecursively}();/**
302
+ */
303
+ export const walkDirectoryRecursively = async (directoryPath, callback = null, options = DEFAULT_ENCODING) => {
304
+ if (!(readdir && resolve && stat)) throw new Error('Could not load filesystem functions.');
305
+ const files = [];
306
+ for (const directoryEntry of await readdir(directoryPath, typeof options === 'string' ? {
307
+ encoding: options,
308
+ withFileTypes: true
309
+ } : {
310
+ ...options,
311
+ withFileTypes: true
312
+ })) {
313
+ const filePath = resolve(directoryPath, directoryEntry.name);
314
+ const file = {
315
+ directoryPath,
316
+ directoryEntry,
317
+ error: null,
318
+ name: directoryEntry.name,
319
+ path: filePath,
320
+ stats: null
321
+ };
322
+ try {
323
+ file.stats = await stat(filePath);
324
+ } catch (error) {
325
+ file.error = error;
326
+ }
327
+ files.push(file);
328
+ }
329
+ if (callback)
330
+ /*
331
+ NOTE: Directories and have to be iterated first to be able to
332
+ avoid deeper unwanted traversing.
333
+ */
334
+ files.sort((firstFile, secondFile) => {
335
+ if (firstFile.stats?.isDirectory()) {
336
+ if (secondFile.stats?.isDirectory()) return 0;
337
+ return -1;
338
+ }
339
+ if (secondFile.stats?.isDirectory()) return 1;
340
+ return 0;
341
+ });
342
+ let finalFiles = [];
343
+ for (const file of files) {
344
+ finalFiles.push(file);
345
+ let result = callback ? callback(file) : undefined;
346
+ if (result === null) break;
347
+ if (typeof result === 'object' && 'then' in result) result = await result;
348
+ if (result === null) break;
349
+ if (result !== false && file.stats?.isDirectory()) finalFiles = finalFiles.concat(await walkDirectoryRecursively(file.path, callback, options));
350
+ }
351
+ return finalFiles;
352
+ };
353
+ /**
249
354
  * Iterates through given directory structure recursively and calls given
250
355
  * callback for each found file. Callback gets file path and corresponding
251
356
  * stats object as argument.
@@ -253,121 +358,54 @@ try{mkdirSync(targetPath)}catch(error){if(error.code!=="EEXIST")throw error}for(
253
358
  * @param callback - Function to invoke for each traversed file.
254
359
  * @param options - Options to use for nested "readdir" calls.
255
360
  * @returns Determined list if all files.
256
- */var _walkDirectoryRecursivelySync=function walkDirectoryRecursivelySync(directoryPath,callback,options){if(callback===void 0){callback=_context_js__WEBPACK_IMPORTED_MODULE_2__/* .NOOP */ .tE}if(options===void 0){options=_constants_js__WEBPACK_IMPORTED_MODULE_1__/* .DEFAULT_ENCODING */ .uJ}if(!(readdirSync&&resolve&&statSync))throw new Error("Could not load filesystem functions.");var files=[];var _iterator3=_createForOfIteratorHelper(readdirSync(directoryPath,typeof options==="string"?{encoding:options,withFileTypes:true}:_objectSpread(_objectSpread({},options),{},{withFileTypes:true}))),_step3;try{for(_iterator3.s();!(_step3=_iterator3.n()).done;){var directoryEntry=_step3.value;var filePath=resolve(directoryPath,directoryEntry.name);var _file2={directoryPath:directoryPath,directoryEntry:directoryEntry,error:null,name:directoryEntry.name,path:filePath,stats:null};try{_file2.stats=statSync(filePath)}catch(error){_file2.error=error}files.push(_file2)}}catch(err){_iterator3.e(err)}finally{_iterator3.f()}var finalFiles=[];if(callback){/*
257
- NOTE: Directories have to be iterated first to potentially
258
- avoid deeper iterations.
259
- */files.sort(function(firstFile,secondFile){var _firstFile$stats2,_secondFile$stats4;if((_firstFile$stats2=firstFile.stats)!==null&&_firstFile$stats2!==void 0&&_firstFile$stats2.isDirectory()){var _secondFile$stats3;if((_secondFile$stats3=secondFile.stats)!==null&&_secondFile$stats3!==void 0&&_secondFile$stats3.isDirectory())return 0;return-1}if((_secondFile$stats4=secondFile.stats)!==null&&_secondFile$stats4!==void 0&&_secondFile$stats4.isDirectory())return 1;return 0});var _iterator4=_createForOfIteratorHelper(files),_step4;try{for(_iterator4.s();!(_step4=_iterator4.n()).done;){var _file$stats2;var file=_step4.value;finalFiles.push(file);var result=callback(file);if(result===null)break;if(result!==false&&(_file$stats2=file.stats)!==null&&_file$stats2!==void 0&&_file$stats2.isDirectory())finalFiles=finalFiles.concat(_walkDirectoryRecursivelySync(file.path,callback,options))}}catch(err){_iterator4.e(err)}finally{_iterator4.f()}}return finalFiles};
260
-
261
- /***/ })
262
- /******/ ]);
263
- /************************************************************************/
264
- /******/ // The module cache
265
- /******/ var __webpack_module_cache__ = {};
266
- /******/
267
- /******/ // The require function
268
- /******/ function __webpack_require__(moduleId) {
269
- /******/ // Check if module is in cache
270
- /******/ var cachedModule = __webpack_module_cache__[moduleId];
271
- /******/ if (cachedModule !== undefined) {
272
- /******/ return cachedModule.exports;
273
- /******/ }
274
- /******/ // Create a new module (and put it into the cache)
275
- /******/ var module = __webpack_module_cache__[moduleId] = {
276
- /******/ id: moduleId,
277
- /******/ loaded: false,
278
- /******/ exports: {}
279
- /******/ };
280
- /******/
281
- /******/ // Execute the module function
282
- /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
283
- /******/
284
- /******/ // Flag the module as loaded
285
- /******/ module.loaded = true;
286
- /******/
287
- /******/ // Return the exports of the module
288
- /******/ return module.exports;
289
- /******/ }
290
- /******/
291
- /******/ // expose the module cache
292
- /******/ __webpack_require__.c = __webpack_module_cache__;
293
- /******/
294
- /************************************************************************/
295
- /******/ /* webpack/runtime/define property getters */
296
- /******/ !function() {
297
- /******/ // define getter/value functions for harmony exports
298
- /******/ __webpack_require__.d = function(exports, definition) {
299
- /******/ if(Array.isArray(definition)) {
300
- /******/ var i = 0;
301
- /******/ while(i < definition.length) {
302
- /******/ var key = definition[i++];
303
- /******/ var binding = definition[i++];
304
- /******/ if(!__webpack_require__.o(exports, key)) {
305
- /******/ if(binding === 0) {
306
- /******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
307
- /******/ } else {
308
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
309
- /******/ }
310
- /******/ } else if(binding === 0) { i++; }
311
- /******/ }
312
- /******/ } else {
313
- /******/ for(var key in definition) {
314
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
315
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
316
- /******/ }
317
- /******/ }
318
- /******/ }
319
- /******/ };
320
- /******/ }();
321
- /******/
322
- /******/ /* webpack/runtime/global */
323
- /******/ !function() {
324
- /******/ __webpack_require__.g = (function() {
325
- /******/ if (typeof globalThis === 'object') return globalThis;
326
- /******/ try {
327
- /******/ return this || new Function('return this')();
328
- /******/ } catch (e) {
329
- /******/ if (typeof window === 'object') return window;
330
- /******/ }
331
- /******/ })();
332
- /******/ }();
333
- /******/
334
- /******/ /* webpack/runtime/harmony module decorator */
335
- /******/ !function() {
336
- /******/ __webpack_require__.hmd = function(module) {
337
- /******/ module = Object.create(module);
338
- /******/ if (!module.children) module.children = [];
339
- /******/ Object.defineProperty(module, 'exports', {
340
- /******/ enumerable: true,
341
- /******/ set: function() {
342
- /******/ throw new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);
343
- /******/ }
344
- /******/ });
345
- /******/ return module;
346
- /******/ };
347
- /******/ }();
348
- /******/
349
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
350
- /******/ !function() {
351
- /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
352
- /******/ }();
353
- /******/
354
- /************************************************************************/
355
- /******/
356
- /******/ // module cache are used so entry inlining is disabled
357
- /******/ // startup
358
- /******/ // Load entry module and return exports
359
- /******/ var __webpack_exports__ = __webpack_require__(12);
360
- /******/ var __webpack_exports__copyDirectoryRecursive = __webpack_exports__.vX;
361
- /******/ var __webpack_exports__copyDirectoryRecursiveSync = __webpack_exports__.uD;
362
- /******/ var __webpack_exports__copyFile = __webpack_exports__.m3;
363
- /******/ var __webpack_exports__copyFileSync = __webpack_exports__.Xp;
364
- /******/ var __webpack_exports__importFilesystemAPI = __webpack_exports__.L5;
365
- /******/ var __webpack_exports__imports = __webpack_exports__.VW;
366
- /******/ var __webpack_exports__isDirectory = __webpack_exports__.wd;
367
- /******/ var __webpack_exports__isDirectorySync = __webpack_exports__.ZP;
368
- /******/ var __webpack_exports__isFile = __webpack_exports__.fo;
369
- /******/ var __webpack_exports__isFileSync = __webpack_exports__.WY;
370
- /******/ var __webpack_exports__walkDirectoryRecursively = __webpack_exports__.y3;
371
- /******/ var __webpack_exports__walkDirectoryRecursivelySync = __webpack_exports__.hu;
372
- /******/ export { __webpack_exports__copyDirectoryRecursive as copyDirectoryRecursive, __webpack_exports__copyDirectoryRecursiveSync as copyDirectoryRecursiveSync, __webpack_exports__copyFile as copyFile, __webpack_exports__copyFileSync as copyFileSync, __webpack_exports__importFilesystemAPI as importFilesystemAPI, __webpack_exports__imports as imports, __webpack_exports__isDirectory as isDirectory, __webpack_exports__isDirectorySync as isDirectorySync, __webpack_exports__isFile as isFile, __webpack_exports__isFileSync as isFileSync, __webpack_exports__walkDirectoryRecursively as walkDirectoryRecursively, __webpack_exports__walkDirectoryRecursivelySync as walkDirectoryRecursivelySync };
373
- /******/
361
+ */
362
+ export const walkDirectoryRecursivelySync = (directoryPath, callback = NOOP, options = DEFAULT_ENCODING) => {
363
+ if (!(readdirSync && resolve && statSync)) throw new Error('Could not load filesystem functions.');
364
+ const files = [];
365
+ for (const directoryEntry of readdirSync(directoryPath, typeof options === 'string' ? {
366
+ encoding: options,
367
+ withFileTypes: true
368
+ } : {
369
+ ...options,
370
+ withFileTypes: true
371
+ })) {
372
+ const filePath = resolve(directoryPath, directoryEntry.name);
373
+ const file = {
374
+ directoryPath,
375
+ directoryEntry,
376
+ error: null,
377
+ name: directoryEntry.name,
378
+ path: filePath,
379
+ stats: null
380
+ };
381
+ try {
382
+ file.stats = statSync(filePath);
383
+ } catch (error) {
384
+ file.error = error;
385
+ }
386
+ files.push(file);
387
+ }
388
+ let finalFiles = [];
389
+ if (callback) {
390
+ /*
391
+ NOTE: Directories have to be iterated first to potentially
392
+ avoid deeper iterations.
393
+ */
394
+ files.sort((firstFile, secondFile) => {
395
+ if (firstFile.stats?.isDirectory()) {
396
+ if (secondFile.stats?.isDirectory()) return 0;
397
+ return -1;
398
+ }
399
+ if (secondFile.stats?.isDirectory()) return 1;
400
+ return 0;
401
+ });
402
+ for (const file of files) {
403
+ finalFiles.push(file);
404
+ const result = callback(file);
405
+ if (result === null) break;
406
+ if (result !== false && file.stats?.isDirectory()) finalFiles = finalFiles.concat(walkDirectoryRecursivelySync(file.path, callback, options));
407
+ }
408
+ }
409
+ return finalFiles;
410
+ };
411
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2ZpbGVzeXN0ZW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gIyEvdXNyL2Jpbi9lbnYgYmFiZWwtbm9kZVxuLy8gLSotIGNvZGluZzogdXRmLTggLSotXG4vKiogQG1vZHVsZSBmaWxlc3lzdGVtICovXG4ndXNlIHN0cmljdCdcbi8qICFcbiAgICByZWdpb24gaGVhZGVyXG4gICAgW1Byb2plY3QgcGFnZV0oaHR0cHM6Ly90b3JiZW4ud2Vic2l0ZS9jbGllbnRub2RlKVxuXG4gICAgQ29weXJpZ2h0IFRvcmJlbiBTaWNrZXJ0IChpbmZvW1wifmF0flwiXXRvcmJlbi53ZWJzaXRlKSAxNi4xMi4yMDEyXG5cbiAgICBMaWNlbnNlXG4gICAgLS0tLS0tLVxuXG4gICAgVGhpcyBsaWJyYXJ5IHdyaXR0ZW4gYnkgVG9yYmVuIFNpY2tlcnQgc3RhbmRzIHVuZGVyIGEgY3JlYXRpdmUgY29tbW9uc1xuICAgIG5hbWluZyAzLjAgdW5wb3J0ZWQgbGljZW5zZS5cbiAgICBTZWUgaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzMuMC9kZWVkLmRlXG4gICAgZW5kcmVnaW9uXG4qL1xuaW1wb3J0IHR5cGUge1xuICAgIE9iamVjdEVuY29kaW5nT3B0aW9ucyxcbiAgICBta2RpclN5bmMgYXMgbWtkaXJTeW5jVHlwZSxcbiAgICByZWFkZGlyU3luYyBhcyByZWFkZGlyU3luY1R5cGUsXG4gICAgcmVhZEZpbGVTeW5jIGFzIHJlYWRGaWxlU3luY1R5cGUsXG4gICAgc3RhdFN5bmMgYXMgc3RhdFN5bmNUeXBlLFxuICAgIHdyaXRlRmlsZVN5bmMgYXMgd3JpdGVGaWxlU3luY1R5cGVcbn0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB0eXBlIHtcbiAgICBta2RpciBhcyBta2RpclR5cGUsXG4gICAgcmVhZGRpciBhcyByZWFkZGlyVHlwZSxcbiAgICByZWFkRmlsZSBhcyByZWFkRmlsZVR5cGUsXG4gICAgc3RhdCBhcyBzdGF0VHlwZSxcbiAgICB3cml0ZUZpbGUgYXMgd3JpdGVGaWxlVHlwZVxufSBmcm9tICdmcy9wcm9taXNlcydcbmltcG9ydCB0eXBlIHtcbiAgICBiYXNlbmFtZSBhcyBiYXNlbmFtZVR5cGUsXG4gICAgam9pbiBhcyBqb2luVHlwZSxcbiAgICByZXNvbHZlIGFzIHJlc29sdmVUeXBlXG59IGZyb20gJ3BhdGgnXG5cbmltcG9ydCB0eXBlIHtBbnlGdW5jdGlvbiwgRW5jb2RpbmcsIEZpbGUsIEZpbGVUcmF2ZXJzZVJlc3VsdH0gZnJvbSAnLi90eXBlJ1xuXG5pbXBvcnQge0RFRkFVTFRfRU5DT0RJTkd9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHtOT09QfSBmcm9tICcuL2NvbnRleHQnXG5pbXBvcnQge29wdGlvbmFsSW1wb3J0fSBmcm9tICcuL21vZHVsZSdcblxuZXhwb3J0IGNvbnN0IGltcG9ydHM6IHtcbiAgICBmcz86IG51bGwgfCB0eXBlb2YgaW1wb3J0KCdmcycpXG4gICAgZnNQcm9taXNlcz86IG51bGwgfCB0eXBlb2YgaW1wb3J0KCdmcy9wcm9taXNlcycpXG4gICAgcGF0aD86IG51bGwgfCB0eXBlb2YgaW1wb3J0KCdwYXRoJylcbn0gPSB7fVxuXG5sZXQgbWtkaXJTeW5jOiBudWxsIHwgdHlwZW9mIG1rZGlyU3luY1R5cGVcbmxldCByZWFkZGlyU3luYzogbnVsbCB8IHR5cGVvZiByZWFkZGlyU3luY1R5cGVcbmxldCByZWFkRmlsZVN5bmM6IG51bGwgfCB0eXBlb2YgcmVhZEZpbGVTeW5jVHlwZVxubGV0IHN0YXRTeW5jOiBudWxsIHwgdHlwZW9mIHN0YXRTeW5jVHlwZVxubGV0IHdyaXRlRmlsZVN5bmM6IG51bGwgfCB0eXBlb2Ygd3JpdGVGaWxlU3luY1R5cGVcblxubGV0IG1rZGlyOiBudWxsIHwgdHlwZW9mIG1rZGlyVHlwZVxubGV0IHJlYWRkaXI6IG51bGwgfCB0eXBlb2YgcmVhZGRpclR5cGVcbmxldCByZWFkRmlsZTogbnVsbCB8IHR5cGVvZiByZWFkRmlsZVR5cGVcbmxldCBzdGF0OiBudWxsIHwgdHlwZW9mIHN0YXRUeXBlXG5sZXQgd3JpdGVGaWxlOiBudWxsIHwgdHlwZW9mIHdyaXRlRmlsZVR5cGVcblxubGV0IGJhc2VuYW1lOiBudWxsIHwgdHlwZW9mIGJhc2VuYW1lVHlwZVxubGV0IGpvaW46IG51bGwgfCB0eXBlb2Ygam9pblR5cGVcbmxldCByZXNvbHZlOiBudWxsIHwgdHlwZW9mIHJlc29sdmVUeXBlXG5cbmNvbnN0IGltcG9ydFByb21pc2VzOiBBcnJheTxQcm9taXNlPHVua25vd24+PiA9IFtdXG5leHBvcnQgY29uc3QgaW1wb3J0RmlsZXN5c3RlbUFQSSA9ICgpID0+IHtcbiAgICBpZiAoaW1wb3J0UHJvbWlzZXMubGVuZ3RoID4gMClcbiAgICAgICAgcmV0dXJuIFByb21pc2UuYWxsKGltcG9ydFByb21pc2VzKVxuXG4gICAgY29uc3QgZnNJbXBvcnRQcm9taXNlID1cbiAgICAgICAgb3B0aW9uYWxJbXBvcnQ8dHlwZW9mIGltcG9ydCgnZnMnKT4oJ2ZzJylcbiAgICB2b2lkIGZzSW1wb3J0UHJvbWlzZS50aGVuKChtb2R1bGUpID0+IHtcbiAgICAgICAgaW1wb3J0cy5mcyA9IG1vZHVsZVxuXG4gICAgICAgIGlmIChtb2R1bGUpIHtcbiAgICAgICAgICAgIG1rZGlyU3luYyA9IG1vZHVsZS5ta2RpclN5bmNcbiAgICAgICAgICAgIHJlYWRkaXJTeW5jID0gbW9kdWxlLnJlYWRkaXJTeW5jXG4gICAgICAgICAgICByZWFkRmlsZVN5bmMgPSBtb2R1bGUucmVhZEZpbGVTeW5jXG4gICAgICAgICAgICBzdGF0U3luYyA9IG1vZHVsZS5zdGF0U3luY1xuICAgICAgICAgICAgd3JpdGVGaWxlU3luYyA9IG1vZHVsZS53cml0ZUZpbGVTeW5jXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBta2RpclN5bmMgPSBudWxsXG4gICAgICAgICAgICByZWFkZGlyU3luYyA9IG51bGxcbiAgICAgICAgICAgIHJlYWRGaWxlU3luYyA9IG51bGxcbiAgICAgICAgICAgIHN0YXRTeW5jID0gbnVsbFxuICAgICAgICAgICAgd3JpdGVGaWxlU3luYyA9IG51bGxcbiAgICAgICAgfVxuICAgIH0pXG5cbiAgICBjb25zdCBmc1Byb21pc2VzSW1wb3J0UHJvbWlzZSA9XG4gICAgICAgIG9wdGlvbmFsSW1wb3J0PHR5cGVvZiBpbXBvcnQoJ2ZzL3Byb21pc2VzJyk+KCdmcy9wcm9taXNlcycpXG4gICAgdm9pZCBmc1Byb21pc2VzSW1wb3J0UHJvbWlzZS50aGVuKChtb2R1bGUpID0+IHtcbiAgICAgICAgaW1wb3J0cy5mc1Byb21pc2VzID0gbW9kdWxlXG5cbiAgICAgICAgaWYgKG1vZHVsZSkge1xuICAgICAgICAgICAgbWtkaXIgPSBtb2R1bGUubWtkaXJcbiAgICAgICAgICAgIHJlYWRkaXIgPSBtb2R1bGUucmVhZGRpclxuICAgICAgICAgICAgcmVhZEZpbGUgPSBtb2R1bGUucmVhZEZpbGVcbiAgICAgICAgICAgIHN0YXQgPSBtb2R1bGUuc3RhdFxuICAgICAgICAgICAgd3JpdGVGaWxlID0gbW9kdWxlLndyaXRlRmlsZVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgbWtkaXIgPSBudWxsXG4gICAgICAgICAgICByZWFkZGlyID0gbnVsbFxuICAgICAgICAgICAgcmVhZEZpbGUgPSBudWxsXG4gICAgICAgICAgICBzdGF0ID0gbnVsbFxuICAgICAgICAgICAgd3JpdGVGaWxlID0gbnVsbFxuICAgICAgICB9XG4gICAgfSlcblxuICAgIGNvbnN0IHBhdGhJbXBvcnRQcm9taXNlID0gb3B0aW9uYWxJbXBvcnQ8dHlwZW9mIGltcG9ydCgncGF0aCcpPigncGF0aCcpXG4gICAgdm9pZCBwYXRoSW1wb3J0UHJvbWlzZS50aGVuKChtb2R1bGUpID0+IHtcbiAgICAgICAgaW1wb3J0cy5wYXRoID0gbW9kdWxlXG5cbiAgICAgICAgaWYgKG1vZHVsZSkge1xuICAgICAgICAgICAgYmFzZW5hbWUgPSBtb2R1bGUuYmFzZW5hbWVcbiAgICAgICAgICAgIGpvaW4gPSBtb2R1bGUuam9pblxuICAgICAgICAgICAgcmVzb2x2ZSA9IG1vZHVsZS5yZXNvbHZlXG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgICBiYXNlbmFtZSA9IG51bGxcbiAgICAgICAgICAgIGpvaW4gPSBudWxsXG4gICAgICAgICAgICByZXNvbHZlID0gbnVsbFxuICAgICAgICB9XG4gICAgfSlcblxuICAgIGltcG9ydFByb21pc2VzLnB1c2goXG4gICAgICAgIGZzSW1wb3J0UHJvbWlzZSwgZnNQcm9taXNlc0ltcG9ydFByb21pc2UsIHBhdGhJbXBvcnRQcm9taXNlXG4gICAgKVxuICAgIHJldHVybiBQcm9taXNlLmFsbChpbXBvcnRQcm9taXNlcylcbn1cblxuLyoqXG4gKiBDb3BpZXMgZ2l2ZW4gc291cmNlIGRpcmVjdG9yeSB2aWEgcGF0aCB0byBnaXZlbiB0YXJnZXQgZGlyZWN0b3J5IGxvY2F0aW9uXG4gKiB3aXRoIHNhbWUgdGFyZ2V0IG5hbWUgYXMgc291cmNlIGZpbGUgaGFzIG9yIGNvcHkgdG8gZ2l2ZW4gY29tcGxldGUgdGFyZ2V0XG4gKiBkaXJlY3RvcnkgcGF0aC5cbiAqIEBwYXJhbSBzb3VyY2VQYXRoIC0gUGF0aCB0byBkaXJlY3RvcnkgdG8gY29weS5cbiAqIEBwYXJhbSB0YXJnZXRQYXRoIC0gVGFyZ2V0IGRpcmVjdG9yeSBvciBjb21wbGV0ZSBkaXJlY3RvcnkgbG9jYXRpb24gdG8gY29weVxuICogaW4uXG4gKiBAcGFyYW0gY29udGVudHMgLSBJbmRpY2F0ZXMgd2hldGhlciB3ZSBvbmx5IHdhbnQgdG8gY29weSBjb250ZW50IG9mIHNvdXJjZVxuICogcGF0aCB3aXRob3V0IHJlY3JlYXRpbmcgdGhlIHNvdXJjZWZpbGUgaXRzZWxmIG9uIHRhcmdldCBsb2NhdGlvbi5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGludm9rZSBmb3IgZWFjaCB0cmF2ZXJzZWQgZmlsZS5cbiAqIEBwYXJhbSByZWFkT3B0aW9ucyAtIE9wdGlvbnMgdG8gdXNlIGZvciByZWFkaW5nIHNvdXJjZSBmaWxlLlxuICogQHBhcmFtIHdyaXRlT3B0aW9ucyAtIE9wdGlvbnMgdG8gdXNlIGZvciB3cml0aW5nIHRvIHRhcmdldCBmaWxlLlxuICogQHJldHVybnMgUHJvbWlzZSBob2xkaW5nIHRoZSBkZXRlcm1pbmVkIHRhcmdldCBkaXJlY3RvcnkgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvcHlEaXJlY3RvcnlSZWN1cnNpdmUgPSBhc3luYyAoXG4gICAgc291cmNlUGF0aDogc3RyaW5nLFxuICAgIHRhcmdldFBhdGg6IHN0cmluZyxcbiAgICBjb250ZW50cyA9IGZhbHNlLFxuICAgIGNhbGxiYWNrOiBBbnlGdW5jdGlvbiA9IE5PT1AsXG4gICAgcmVhZE9wdGlvbnMgPSB7ZW5jb2Rpbmc6IG51bGwsIGZsYWc6ICdyJ30sXG4gICAgd3JpdGVPcHRpb25zID0ge2VuY29kaW5nOiBERUZBVUxUX0VOQ09ESU5HLCBmbGFnOiAndycsIG1vZGU6IDBvNjY2fVxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgICBpZiAoIShiYXNlbmFtZSAmJiBqb2luICYmIG1rZGlyICYmIHJlc29sdmUpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBsb2FkIGZpbGVzeXN0ZW0gZnVuY3Rpb25zLicpXG5cbiAgICBzb3VyY2VQYXRoID0gcmVzb2x2ZShzb3VyY2VQYXRoKVxuICAgIGlmICghY29udGVudHMgJiYgYXdhaXQgaXNEaXJlY3RvcnkodGFyZ2V0UGF0aCkpXG4gICAgICAgIHRhcmdldFBhdGggPSByZXNvbHZlKHRhcmdldFBhdGgsIGJhc2VuYW1lKHNvdXJjZVBhdGgpKVxuXG4gICAgLy8gTk9URTogQ2hlY2sgaWYgZm9sZGVyIG5lZWRzIHRvIGJlIGNyZWF0ZWQgb3IgaW50ZWdyYXRlZC5cbiAgICB0cnkge1xuICAgICAgICBhd2FpdCBta2Rpcih0YXJnZXRQYXRoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmICgoZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uKS5jb2RlICE9PSAnRUVYSVNUJylcbiAgICAgICAgICAgIHRocm93IGVycm9yXG4gICAgfVxuXG4gICAgZm9yIChcbiAgICAgICAgY29uc3QgY3VycmVudFNvdXJjZUZpbGUgb2ZcbiAgICAgICAgYXdhaXQgd2Fsa0RpcmVjdG9yeVJlY3Vyc2l2ZWx5KHNvdXJjZVBhdGgsIGNhbGxiYWNrKVxuICAgICkge1xuICAgICAgICBjb25zdCBjdXJyZW50VGFyZ2V0UGF0aDogc3RyaW5nID0gam9pbihcbiAgICAgICAgICAgIHRhcmdldFBhdGgsIGN1cnJlbnRTb3VyY2VGaWxlLnBhdGguc3Vic3RyaW5nKHNvdXJjZVBhdGgubGVuZ3RoKVxuICAgICAgICApXG5cbiAgICAgICAgaWYgKGN1cnJlbnRTb3VyY2VGaWxlLnN0YXRzPy5pc0RpcmVjdG9yeSgpKVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBta2RpcihjdXJyZW50VGFyZ2V0UGF0aClcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaWYgKChlcnJvciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb24pLmNvZGUgIT09ICdFRVhJU1QnKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBhd2FpdCBjb3B5RmlsZShcbiAgICAgICAgICAgICAgICBjdXJyZW50U291cmNlRmlsZS5wYXRoLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRUYXJnZXRQYXRoLFxuICAgICAgICAgICAgICAgIHJlYWRPcHRpb25zLFxuICAgICAgICAgICAgICAgIHdyaXRlT3B0aW9uc1xuICAgICAgICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXRQYXRoXG59XG4vKipcbiAqIENvcGllcyBnaXZlbiBzb3VyY2UgZGlyZWN0b3J5IHZpYSBwYXRoIHRvIGdpdmVuIHRhcmdldCBkaXJlY3RvcnkgbG9jYXRpb25cbiAqIHdpdGggc2FtZSB0YXJnZXQgbmFtZSBhcyBzb3VyY2UgZmlsZSBoYXMgb3IgY29weSB0byBnaXZlbiBjb21wbGV0ZSB0YXJnZXRcbiAqIGRpcmVjdG9yeSBwYXRoLlxuICogQHBhcmFtIHNvdXJjZVBhdGggLSBQYXRoIHRvIGRpcmVjdG9yeSB0byBjb3B5LlxuICogQHBhcmFtIHRhcmdldFBhdGggLSBUYXJnZXQgZGlyZWN0b3J5IG9yIGNvbXBsZXRlIGRpcmVjdG9yeSBsb2NhdGlvbiB0byBjb3B5XG4gKiBpbi5cbiAqIEBwYXJhbSBjb250ZW50cyAtIEluZGljYXRlcyB3aGV0aGVyIHdlIG9ubHkgd2FudCB0byBjb3B5IGNvbnRlbnQgb2Ygc291cmNlXG4gKiBwYXRoIHdpdGhvdXQgcmVjcmVhdGluZyB0aGUgc291cmNlZmlsZSBpdHNlbGYgb24gdGFyZ2V0IGxvY2F0aW9uLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gRnVuY3Rpb24gdG8gaW52b2tlIGZvciBlYWNoIHRyYXZlcnNlZCBmaWxlLlxuICogQHBhcmFtIHJlYWRPcHRpb25zIC0gT3B0aW9ucyB0byB1c2UgZm9yIHJlYWRpbmcgc291cmNlIGZpbGUuXG4gKiBAcGFyYW0gd3JpdGVPcHRpb25zIC0gT3B0aW9ucyB0byB1c2UgZm9yIHdyaXRpbmcgdG8gdGFyZ2V0IGZpbGUuXG4gKiBAcmV0dXJucyBEZXRlcm1pbmVkIHRhcmdldCBkaXJlY3RvcnkgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvcHlEaXJlY3RvcnlSZWN1cnNpdmVTeW5jID0gKFxuICAgIHNvdXJjZVBhdGg6IHN0cmluZyxcbiAgICB0YXJnZXRQYXRoOiBzdHJpbmcsXG4gICAgY29udGVudHMgPSBmYWxzZSxcbiAgICBjYWxsYmFjazogQW55RnVuY3Rpb24gPSBOT09QLFxuICAgIHJlYWRPcHRpb25zID0ge2VuY29kaW5nOiBudWxsLCBmbGFnOiAncid9LFxuICAgIHdyaXRlT3B0aW9ucyA9IHtlbmNvZGluZzogREVGQVVMVF9FTkNPRElORywgZmxhZzogJ3cnLCBtb2RlOiAwbzY2Nn1cbik6IHN0cmluZyA9PiB7XG4gICAgaWYgKCEoYmFzZW5hbWUgJiYgam9pbiAmJiBta2RpclN5bmMgJiYgcmVzb2x2ZSkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGxvYWQgZmlsZXN5c3RlbSBmdW5jdGlvbnMuJylcblxuICAgIHNvdXJjZVBhdGggPSByZXNvbHZlKHNvdXJjZVBhdGgpXG4gICAgaWYgKCFjb250ZW50cyAmJiBpc0RpcmVjdG9yeVN5bmModGFyZ2V0UGF0aCkpXG4gICAgICAgIHRhcmdldFBhdGggPSByZXNvbHZlKHRhcmdldFBhdGgsIGJhc2VuYW1lKHNvdXJjZVBhdGgpKVxuXG4gICAgLy8gTk9URTogVHJ5L0NoZWNrIGlmIHRhcmdldCBmb2xkZXIgbmVlZHMgdG8gYmUgY3JlYXRlZC5cbiAgICB0cnkge1xuICAgICAgICBta2RpclN5bmModGFyZ2V0UGF0aClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoKGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbikuY29kZSAhPT0gJ0VFWElTVCcpXG4gICAgICAgICAgICB0aHJvdyBlcnJvclxuICAgIH1cblxuICAgIGZvciAoXG4gICAgICAgIGNvbnN0IGN1cnJlbnRTb3VyY2VGaWxlIG9mXG4gICAgICAgIHdhbGtEaXJlY3RvcnlSZWN1cnNpdmVseVN5bmMoc291cmNlUGF0aCwgY2FsbGJhY2spXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUYXJnZXRQYXRoOiBzdHJpbmcgPSBqb2luKFxuICAgICAgICAgICAgdGFyZ2V0UGF0aCwgY3VycmVudFNvdXJjZUZpbGUucGF0aC5zdWJzdHJpbmcoc291cmNlUGF0aC5sZW5ndGgpXG4gICAgICAgIClcbiAgICAgICAgaWYgKGN1cnJlbnRTb3VyY2VGaWxlLnN0YXRzPy5pc0RpcmVjdG9yeSgpKVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBta2RpclN5bmMoY3VycmVudFRhcmdldFBhdGgpXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGlmICgoZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uKS5jb2RlICE9PSAnRUVYSVNUJylcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgY29weUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGN1cnJlbnRTb3VyY2VGaWxlLnBhdGgsXG4gICAgICAgICAgICAgICAgY3VycmVudFRhcmdldFBhdGgsXG4gICAgICAgICAgICAgICAgcmVhZE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgd3JpdGVPcHRpb25zXG4gICAgICAgICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldFBhdGhcbn1cbi8qKlxuICogQ29waWVzIGdpdmVuIHNvdXJjZSBmaWxlIHZpYSBwYXRoIHRvIGdpdmVuIHRhcmdldCBkaXJlY3RvcnkgbG9jYXRpb24gd2l0aFxuICogc2FtZSB0YXJnZXQgbmFtZSBhcyBzb3VyY2UgZmlsZSBoYXMgb3IgY29weSB0byBnaXZlbiBjb21wbGV0ZSB0YXJnZXQgZmlsZVxuICogcGF0aC5cbiAqIEBwYXJhbSBzb3VyY2VQYXRoIC0gUGF0aCB0byBmaWxlIHRvIGNvcHkuXG4gKiBAcGFyYW0gdGFyZ2V0UGF0aCAtIFRhcmdldCBkaXJlY3Rvcnkgb3IgY29tcGxldGUgZmlsZSBsb2NhdGlvbiB0byBjb3B5IHRvLlxuICogQHBhcmFtIHJlYWRPcHRpb25zIC0gT3B0aW9ucyB0byB1c2UgZm9yIHJlYWRpbmcgc291cmNlIGZpbGUuXG4gKiBAcGFyYW0gd3JpdGVPcHRpb25zIC0gT3B0aW9ucyB0byB1c2UgZm9yIHdyaXRpbmcgdG8gdGFyZ2V0IGZpbGUuXG4gKiBAcmV0dXJucyBEZXRlcm1pbmVkIHRhcmdldCBmaWxlIHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBjb3B5RmlsZSA9IGFzeW5jIChcbiAgICBzb3VyY2VQYXRoOiBzdHJpbmcsXG4gICAgdGFyZ2V0UGF0aDogc3RyaW5nLFxuICAgIHJlYWRPcHRpb25zID0ge2VuY29kaW5nOiBudWxsLCBmbGFnOiAncid9LFxuICAgIHdyaXRlT3B0aW9ucyA9IHtlbmNvZGluZzogREVGQVVMVF9FTkNPRElORywgZmxhZzogJ3cnLCBtb2RlOiAwbzY2Nn1cbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gICAgaWYgKCEoYmFzZW5hbWUgJiYgcmVhZEZpbGUgJiYgcmVzb2x2ZSAmJiB3cml0ZUZpbGUpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBsb2FkIGZpbGVzeXN0ZW0gZnVuY3Rpb25zLicpXG5cbiAgICAvKlxuICAgICAgICBOT1RFOiBJZiB0YXJnZXQgcGF0aCByZWZlcmVuY2VzIGEgZGlyZWN0b3J5IGEgbmV3IGZpbGUgd2l0aCB0aGUgc2FtZVxuICAgICAgICBuYW1lIHdpbGwgYmUgY3JlYXRlZC5cbiAgICAqL1xuICAgIGlmIChhd2FpdCBpc0RpcmVjdG9yeSh0YXJnZXRQYXRoKSlcbiAgICAgICAgdGFyZ2V0UGF0aCA9IHJlc29sdmUodGFyZ2V0UGF0aCwgYmFzZW5hbWUoc291cmNlUGF0aCkpXG5cbiAgICBhd2FpdCB3cml0ZUZpbGUoXG4gICAgICAgIHRhcmdldFBhdGgsIGF3YWl0IHJlYWRGaWxlKHNvdXJjZVBhdGgsIHJlYWRPcHRpb25zKSwgd3JpdGVPcHRpb25zXG4gICAgKVxuXG4gICAgcmV0dXJuIHRhcmdldFBhdGhcbn1cbi8qKlxuICogQ29waWVzIGdpdmVuIHNvdXJjZSBmaWxlIHZpYSBwYXRoIHRvIGdpdmVuIHRhcmdldCBkaXJlY3RvcnkgbG9jYXRpb24gd2l0aFxuICogc2FtZSB0YXJnZXQgbmFtZSBhcyBzb3VyY2UgZmlsZSBoYXMgb3IgY29weSB0byBnaXZlbiBjb21wbGV0ZSB0YXJnZXQgZmlsZVxuICogcGF0aC5cbiAqIEBwYXJhbSBzb3VyY2VQYXRoIC0gUGF0aCB0byBmaWxlIHRvIGNvcHkuXG4gKiBAcGFyYW0gdGFyZ2V0UGF0aCAtIFRhcmdldCBkaXJlY3Rvcnkgb3IgY29tcGxldGUgZmlsZSBsb2NhdGlvbiB0byBjb3B5IHRvLlxuICogQHBhcmFtIHJlYWRPcHRpb25zIC0gT3B0aW9ucyB0byB1c2UgZm9yIHJlYWRpbmcgc291cmNlIGZpbGUuXG4gKiBAcGFyYW0gd3JpdGVPcHRpb25zIC0gT3B0aW9ucyB0byB1c2UgZm9yIHdyaXRpbmcgdG8gdGFyZ2V0IGZpbGUuXG4gKiBAcmV0dXJucyBEZXRlcm1pbmVkIHRhcmdldCBmaWxlIHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBjb3B5RmlsZVN5bmMgPSAoXG4gICAgc291cmNlUGF0aDogc3RyaW5nLFxuICAgIHRhcmdldFBhdGg6IHN0cmluZyxcbiAgICByZWFkT3B0aW9ucyA9IHtlbmNvZGluZzogbnVsbCwgZmxhZzogJ3InfSxcbiAgICB3cml0ZU9wdGlvbnMgPSB7ZW5jb2Rpbmc6IERFRkFVTFRfRU5DT0RJTkcsIGZsYWc6ICd3JywgbW9kZTogMG82NjZ9XG4pOiBzdHJpbmcgPT4ge1xuICAgIGlmICghKGJhc2VuYW1lICYmIHJlYWRGaWxlU3luYyAmJiByZXNvbHZlICYmIHdyaXRlRmlsZVN5bmMpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBsb2FkIGZpbGVzeXN0ZW0gZnVuY3Rpb25zLicpXG5cbiAgICAvKlxuICAgICAgICBOT1RFOiBJZiB0YXJnZXQgcGF0aCByZWZlcmVuY2VzIGEgZGlyZWN0b3J5IGEgbmV3IGZpbGUgd2l0aCB0aGUgc2FtZVxuICAgICAgICBuYW1lIHdpbGwgYmUgY3JlYXRlZC5cbiAgICAqL1xuICAgIGlmIChpc0RpcmVjdG9yeVN5bmModGFyZ2V0UGF0aCkpXG4gICAgICAgIHRhcmdldFBhdGggPSByZXNvbHZlKHRhcmdldFBhdGgsIGJhc2VuYW1lKHNvdXJjZVBhdGgpKVxuXG4gICAgd3JpdGVGaWxlU3luYyhcbiAgICAgICAgdGFyZ2V0UGF0aCwgcmVhZEZpbGVTeW5jKHNvdXJjZVBhdGgsIHJlYWRPcHRpb25zKSwgd3JpdGVPcHRpb25zXG4gICAgKVxuXG4gICAgcmV0dXJuIHRhcmdldFBhdGhcbn1cbi8qKlxuICogQ2hlY2tzIGlmIGdpdmVuIHBhdGggcG9pbnRzIHRvIGEgdmFsaWQgZGlyZWN0b3J5LlxuICogQHBhcmFtIGZpbGVQYXRoIC0gUGF0aCB0byBkaXJlY3RvcnkuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgaG9sZGluZyBhIGJvb2xlYW4gd2hpY2ggaW5kaWNhdGVzIGRpcmVjdG9yeSBleGlzdGVuY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RpcmVjdG9yeSA9IGFzeW5jIChmaWxlUGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgaWYgKCFzdGF0KVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBsb2FkIGZpbGVzeXN0ZW0gZnVuY3Rpb25zLicpXG5cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHN0YXQoZmlsZVBhdGgpKS5pc0RpcmVjdG9yeSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVycm9yLCAnY29kZScpICYmXG4gICAgICAgICAgICBbJ0VOT0VOVCcsICdFTk9URElSJ10uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgKGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbikuY29kZSBhcyBzdHJpbmdcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG5cbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG59XG4vKipcbiAqIENoZWNrcyBpZiBnaXZlbiBwYXRoIHBvaW50cyB0byBhIHZhbGlkIGRpcmVjdG9yeS5cbiAqIEBwYXJhbSBmaWxlUGF0aCAtIFBhdGggdG8gZGlyZWN0b3J5LlxuICogQHJldHVybnMgQSBib29sZWFuIHdoaWNoIGluZGljYXRlcyBkaXJlY3RvcnkgZXhpc3RlbmNlLlxuICovXG5leHBvcnQgY29uc3QgaXNEaXJlY3RvcnlTeW5jID0gKGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBpZiAoIXN0YXRTeW5jKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBsb2FkIGZpbGVzeXN0ZW0gZnVuY3Rpb25zLicpXG5cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gc3RhdFN5bmMoZmlsZVBhdGgpLmlzRGlyZWN0b3J5KClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXJyb3IsICdjb2RlJykgJiZcbiAgICAgICAgICAgIFsnRU5PRU5UJywgJ0VOT1RESVInXS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAoZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uKS5jb2RlIGFzIHN0cmluZ1xuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcblxuICAgICAgICB0aHJvdyBlcnJvclxuICAgIH1cbn1cbi8qKlxuICogQ2hlY2tzIGlmIGdpdmVuIHBhdGggcG9pbnRzIHRvIGEgdmFsaWQgZmlsZS5cbiAqIEBwYXJhbSBmaWxlUGF0aCAtIFBhdGggdG8gZGlyZWN0b3J5LlxuICogQHJldHVybnMgQSBwcm9taXNlIGhvbGRpbmcgYSBib29sZWFuIHdoaWNoIGluZGljYXRlcyBkaXJlY3RvcnkgZXhpc3RlbmNlLlxuICovXG5leHBvcnQgY29uc3QgaXNGaWxlID0gYXN5bmMgKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBpZiAoIXN0YXQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGxvYWQgZmlsZXN5c3RlbSBmdW5jdGlvbnMuJylcblxuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgc3RhdChmaWxlUGF0aCkpLmlzRmlsZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVycm9yLCAnY29kZScpICYmXG4gICAgICAgICAgICBbJ0VOT0VOVCcsICdFTk9URElSJ10uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgKGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbikuY29kZSBhcyBzdHJpbmdcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG5cbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG59XG4vKipcbiAqIENoZWNrcyBpZiBnaXZlbiBwYXRoIHBvaW50cyB0byBhIHZhbGlkIGZpbGUuXG4gKiBAcGFyYW0gZmlsZVBhdGggLSBQYXRoIHRvIGZpbGUuXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gd2hpY2ggaW5kaWNhdGVzIGZpbGUgZXhpc3RlbmNlLlxuICovXG5leHBvcnQgY29uc3QgaXNGaWxlU3luYyA9IChmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKCFzdGF0U3luYylcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgbG9hZCBmaWxlc3lzdGVtIGZ1bmN0aW9ucy4nKVxuXG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHN0YXRTeW5jKGZpbGVQYXRoKS5pc0ZpbGUoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlcnJvciwgJ2NvZGUnKSAmJlxuICAgICAgICAgICAgWydFTk9FTlQnLCAnRU5PVERJUiddLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgIChlcnJvciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb24pLmNvZGUgYXMgc3RyaW5nXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuXG4gICAgICAgIHRocm93IGVycm9yXG4gICAgfVxufVxuLyoqXG4gKiBJdGVyYXRlcyB0aHJvdWdoIGdpdmVuIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgcmVjdXJzaXZlbHkgYW5kIGNhbGxzIGdpdmVuXG4gKiBjYWxsYmFjayBmb3IgZWFjaCBmb3VuZCBmaWxlLiBDYWxsYmFjayBnZXRzIGZpbGUgcGF0aCBhbmQgY29ycmVzcG9uZGluZyBzdGF0XG4gKiBvYmplY3QgYXMgYXJndW1lbnQuXG4gKiBAcGFyYW0gZGlyZWN0b3J5UGF0aCAtIFBhdGggdG8gZGlyZWN0b3J5IHN0cnVjdHVyZSB0byB0cmF2ZXJzZS5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGludm9rZSBmb3IgZWFjaCB0cmF2ZXJzZWQgZmlsZSBhbmQgcG90ZW50aWFsbHlcbiAqIG1hbmlwdWxhdGUgZnVydGhlciB0cmF2ZXJzaW5nIGluIGFscGhhYmV0aWNhbCBzb3J0ZWQgb3JkZXIuXG4gKiBJZiBpdCByZXR1cm5zIFwibnVsbFwiIG9yIGEgcHJvbWlzZSByZXNvbHZpbmcgdG8gXCJudWxsXCIsIG5vIGZ1cnRoZXIgZmlsZXNcbiAqIHdpbGwgYmUgdHJhdmVyc2VkIGFmdGVyd2FyZC5cbiAqIElmIGl0IGhhbmRsZXMgYSBkaXJlY3RvcnkgYW5kIHJldHVybnMgXCJmYWxzZVwiIG9yIGEgcHJvbWlzZSByZXNvbHZpbmcgdG9cbiAqIFwiZmFsc2VcIiBubyB0cmF2ZXJzaW5nIGludG8gdGhhdCBkaXJlY3Rvcnkgd2lsbCBvY2N1ci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyB0byB1c2UgZm9yIG5lc3RlZCBcInJlYWRkaXJcIiBjYWxscy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSBob2xkaW5nIHRoZSBkZXRlcm1pbmVkIGZpbGVzLlxuICovXG5leHBvcnQgY29uc3Qgd2Fsa0RpcmVjdG9yeVJlY3Vyc2l2ZWx5ID0gYXN5bmMgKFxuICAgIGRpcmVjdG9yeVBhdGg6IHN0cmluZyxcbiAgICBjYWxsYmFjazogbnVsbCB8ICgoZmlsZTogRmlsZSkgPT4gRmlsZVRyYXZlcnNlUmVzdWx0KSA9IG51bGwsXG4gICAgb3B0aW9uczogKFxuICAgICAgICBFbmNvZGluZyB8XG4gICAgICAgIChPYmplY3RFbmNvZGluZ09wdGlvbnMgJiB7d2l0aEZpbGVUeXBlcz86IGZhbHNlOyByZWN1cnNpdmU/OiBib29sZWFufSlcbiAgICApID0gREVGQVVMVF9FTkNPRElOR1xuKTogUHJvbWlzZTxBcnJheTxGaWxlPj4gPT4ge1xuICAgIGlmICghKHJlYWRkaXIgJiYgcmVzb2x2ZSAmJiBzdGF0KSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgbG9hZCBmaWxlc3lzdGVtIGZ1bmN0aW9ucy4nKVxuXG4gICAgY29uc3QgZmlsZXM6IEFycmF5PEZpbGU+ID0gW11cbiAgICBmb3IgKGNvbnN0IGRpcmVjdG9yeUVudHJ5IG9mIGF3YWl0IHJlYWRkaXIoXG4gICAgICAgIGRpcmVjdG9yeVBhdGgsXG4gICAgICAgICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycgP1xuICAgICAgICAgICAge2VuY29kaW5nOiBvcHRpb25zLCB3aXRoRmlsZVR5cGVzOiB0cnVlfSA6XG4gICAgICAgICAgICB7Li4ub3B0aW9ucywgd2l0aEZpbGVUeXBlczogdHJ1ZX1cbiAgICAgICAgKVxuICAgICkpIHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGg6IHN0cmluZyA9IHJlc29sdmUoXG4gICAgICAgICAgICBkaXJlY3RvcnlQYXRoLCBkaXJlY3RvcnlFbnRyeS5uYW1lXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgZmlsZTogRmlsZSA9IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICBkaXJlY3RvcnlFbnRyeSxcbiAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgICAgbmFtZTogZGlyZWN0b3J5RW50cnkubmFtZSxcbiAgICAgICAgICAgIHBhdGg6IGZpbGVQYXRoLFxuICAgICAgICAgICAgc3RhdHM6IG51bGxcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmaWxlLnN0YXRzID0gYXdhaXQgc3RhdChmaWxlUGF0aClcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGZpbGUuZXJyb3IgPSBlcnJvciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb25cbiAgICAgICAgfVxuXG4gICAgICAgIGZpbGVzLnB1c2goZmlsZSlcbiAgICB9XG5cbiAgICBpZiAoY2FsbGJhY2spXG4gICAgICAgIC8qXG4gICAgICAgICAgICBOT1RFOiBEaXJlY3RvcmllcyBhbmQgaGF2ZSB0byBiZSBpdGVyYXRlZCBmaXJzdCB0byBiZSBhYmxlIHRvXG4gICAgICAgICAgICBhdm9pZCBkZWVwZXIgdW53YW50ZWQgdHJhdmVyc2luZy5cbiAgICAgICAgKi9cbiAgICAgICAgZmlsZXMuc29ydCgoZmlyc3RGaWxlOiBGaWxlLCBzZWNvbmRGaWxlOiBGaWxlKTogLTEgfCAwfDEgPT4ge1xuICAgICAgICAgICAgaWYgKGZpcnN0RmlsZS5zdGF0cz8uaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgICAgIGlmIChzZWNvbmRGaWxlLnN0YXRzPy5pc0RpcmVjdG9yeSgpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMFxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZWNvbmRGaWxlLnN0YXRzPy5pc0RpcmVjdG9yeSgpKVxuICAgICAgICAgICAgICAgIHJldHVybiAxXG5cbiAgICAgICAgICAgIHJldHVybiAwXG4gICAgICAgIH0pXG5cbiAgICBsZXQgZmluYWxGaWxlczogQXJyYXk8RmlsZT4gPSBbXVxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBmaW5hbEZpbGVzLnB1c2goZmlsZSlcblxuICAgICAgICBsZXQgcmVzdWx0OiBGaWxlVHJhdmVyc2VSZXN1bHQgPVxuICAgICAgICAgICAgY2FsbGJhY2sgPyBjYWxsYmFjayhmaWxlKSA6IHVuZGVmaW5lZFxuXG4gICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpXG4gICAgICAgICAgICBicmVha1xuXG4gICAgICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0JyAmJiAndGhlbicgaW4gcmVzdWx0KVxuICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgcmVzdWx0XG5cbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbClcbiAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gZmFsc2UgJiYgZmlsZS5zdGF0cz8uaXNEaXJlY3RvcnkoKSlcbiAgICAgICAgICAgIGZpbmFsRmlsZXMgPSBmaW5hbEZpbGVzLmNvbmNhdChcbiAgICAgICAgICAgICAgICBhd2FpdCB3YWxrRGlyZWN0b3J5UmVjdXJzaXZlbHkoZmlsZS5wYXRoLCBjYWxsYmFjaywgb3B0aW9ucylcbiAgICAgICAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gZmluYWxGaWxlc1xufVxuLyoqXG4gKiBJdGVyYXRlcyB0aHJvdWdoIGdpdmVuIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgcmVjdXJzaXZlbHkgYW5kIGNhbGxzIGdpdmVuXG4gKiBjYWxsYmFjayBmb3IgZWFjaCBmb3VuZCBmaWxlLiBDYWxsYmFjayBnZXRzIGZpbGUgcGF0aCBhbmQgY29ycmVzcG9uZGluZ1xuICogc3RhdHMgb2JqZWN0IGFzIGFyZ3VtZW50LlxuICogQHBhcmFtIGRpcmVjdG9yeVBhdGggLSBQYXRoIHRvIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgdG8gdHJhdmVyc2UuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBGdW5jdGlvbiB0byBpbnZva2UgZm9yIGVhY2ggdHJhdmVyc2VkIGZpbGUuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgdG8gdXNlIGZvciBuZXN0ZWQgXCJyZWFkZGlyXCIgY2FsbHMuXG4gKiBAcmV0dXJucyBEZXRlcm1pbmVkIGxpc3QgaWYgYWxsIGZpbGVzLlxuICovXG5leHBvcnQgY29uc3Qgd2Fsa0RpcmVjdG9yeVJlY3Vyc2l2ZWx5U3luYyA9IChcbiAgICBkaXJlY3RvcnlQYXRoOiBzdHJpbmcsXG4gICAgY2FsbGJhY2s6IEFueUZ1bmN0aW9uIHwgbnVsbCA9IE5PT1AsXG4gICAgb3B0aW9uczogKFxuICAgICAgICBFbmNvZGluZyB8XG4gICAgICAgIChPYmplY3RFbmNvZGluZ09wdGlvbnMgJiB7d2l0aEZpbGVUeXBlcz86IGZhbHNlOyByZWN1cnNpdmU/OiBib29sZWFufSlcbiAgICApID0gREVGQVVMVF9FTkNPRElOR1xuKTogQXJyYXk8RmlsZT4gPT4ge1xuICAgIGlmICghKHJlYWRkaXJTeW5jICYmIHJlc29sdmUgJiYgc3RhdFN5bmMpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBsb2FkIGZpbGVzeXN0ZW0gZnVuY3Rpb25zLicpXG5cbiAgICBjb25zdCBmaWxlczogQXJyYXk8RmlsZT4gPSBbXVxuXG4gICAgZm9yIChjb25zdCBkaXJlY3RvcnlFbnRyeSBvZiByZWFkZGlyU3luYyhcbiAgICAgICAgZGlyZWN0b3J5UGF0aCxcbiAgICAgICAgdHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnID9cbiAgICAgICAgICAgIHtlbmNvZGluZzogb3B0aW9ucywgd2l0aEZpbGVUeXBlczogdHJ1ZX0gOlxuICAgICAgICAgICAgey4uLm9wdGlvbnMsIHdpdGhGaWxlVHlwZXM6IHRydWV9XG4gICAgKSkge1xuICAgICAgICBjb25zdCBmaWxlUGF0aDogc3RyaW5nID1cbiAgICAgICAgICAgIHJlc29sdmUoZGlyZWN0b3J5UGF0aCwgZGlyZWN0b3J5RW50cnkubmFtZSlcbiAgICAgICAgY29uc3QgZmlsZTogRmlsZSA9IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICBkaXJlY3RvcnlFbnRyeSxcbiAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgICAgbmFtZTogZGlyZWN0b3J5RW50cnkubmFtZSxcbiAgICAgICAgICAgIHBhdGg6IGZpbGVQYXRoLFxuICAgICAgICAgICAgc3RhdHM6IG51bGxcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZmlsZS5zdGF0cyA9IHN0YXRTeW5jKGZpbGVQYXRoKVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgZmlsZS5lcnJvciA9IGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvblxuICAgICAgICB9XG4gICAgICAgIGZpbGVzLnB1c2goZmlsZSlcbiAgICB9XG5cbiAgICBsZXQgZmluYWxGaWxlczogQXJyYXk8RmlsZT4gPSBbXVxuXG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIC8qXG4gICAgICAgICAgICBOT1RFOiBEaXJlY3RvcmllcyBoYXZlIHRvIGJlIGl0ZXJhdGVkIGZpcnN0IHRvIHBvdGVudGlhbGx5XG4gICAgICAgICAgICBhdm9pZCBkZWVwZXIgaXRlcmF0aW9ucy5cbiAgICAgICAgKi9cbiAgICAgICAgZmlsZXMuc29ydCgoZmlyc3RGaWxlOiBGaWxlLCBzZWNvbmRGaWxlOiBGaWxlKTogbnVtYmVyID0+IHtcbiAgICAgICAgICAgIGlmIChmaXJzdEZpbGUuc3RhdHM/LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2Vjb25kRmlsZS5zdGF0cz8uaXNEaXJlY3RvcnkoKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDBcblxuICAgICAgICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2Vjb25kRmlsZS5zdGF0cz8uaXNEaXJlY3RvcnkoKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gMVxuXG4gICAgICAgICAgICByZXR1cm4gMFxuICAgICAgICB9KVxuXG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICAgICAgZmluYWxGaWxlcy5wdXNoKGZpbGUpXG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogdW5rbm93biA9IGNhbGxiYWNrKGZpbGUpXG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gZmFsc2UgJiYgZmlsZS5zdGF0cz8uaXNEaXJlY3RvcnkoKSlcbiAgICAgICAgICAgICAgICBmaW5hbEZpbGVzID0gZmluYWxGaWxlcy5jb25jYXQoXG4gICAgICAgICAgICAgICAgICAgIHdhbGtEaXJlY3RvcnlSZWN1cnNpdmVseVN5bmMoZmlsZS5wYXRoLCBjYWxsYmFjaywgb3B0aW9ucylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmluYWxGaWxlc1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxZQUFZOztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFiQTtBQUFBO0FBcUNBLFNBQVEsZ0JBQWdCO0FBQ3hCLFNBQVEsSUFBSTtBQUNaLFNBQVEsY0FBYztBQUV0QixPQUFPLE1BQU0sT0FJWixHQUFHLENBQUMsQ0FBQztBQUVOLElBQUksU0FBc0M7QUFDMUMsSUFBSSxXQUEwQztBQUM5QyxJQUFJLFlBQTRDO0FBQ2hELElBQUksUUFBb0M7QUFDeEMsSUFBSSxhQUE4QztBQUVsRCxJQUFJLEtBQThCO0FBQ2xDLElBQUksT0FBa0M7QUFDdEMsSUFBSSxRQUFvQztBQUN4QyxJQUFJLElBQTRCO0FBQ2hDLElBQUksU0FBc0M7QUFFMUMsSUFBSSxRQUFvQztBQUN4QyxJQUFJLElBQTRCO0FBQ2hDLElBQUksT0FBa0M7QUFFdEMsTUFBTSxjQUF1QyxHQUFHLEVBQUU7QUFDbEQsT0FB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