clientnode 4.0.1436 → 4.0.1438

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 (142) hide show
  1. package/dist/Lock.js +83 -94
  2. package/dist/Logger.js +163 -715
  3. package/dist/Semaphore.js +46 -81
  4. package/dist/array.js +337 -568
  5. package/dist/cli.js +37 -71
  6. package/dist/constants.js +110 -209
  7. package/dist/context.js +25 -229
  8. package/dist/cookie.js +48 -226
  9. package/dist/data-transfer.js +166 -725
  10. package/dist/datetime.js +241 -1059
  11. package/dist/domNode.js +277 -441
  12. package/dist/expression/evaluators.js +234 -1112
  13. package/dist/expression/helper.js +82 -135
  14. package/dist/expression/index.js +10 -1245
  15. package/dist/expression/indicator-functions.js +21 -239
  16. package/dist/expression/type.js +4 -34
  17. package/dist/filesystem.js +323 -309
  18. package/dist/function.js +51 -125
  19. package/dist/index.js +26 -2709
  20. package/dist/indicators.js +68 -440
  21. package/dist/module.js +98 -163
  22. package/dist/number.js +25 -423
  23. package/dist/object.js +774 -852
  24. package/dist/process.js +38 -245
  25. package/dist/property-types.js +96 -157
  26. package/dist/scope.js +56 -1825
  27. package/dist/string.js +603 -909
  28. package/dist/test-helper.js +171 -541
  29. package/dist/type.js +8 -37
  30. package/dist/utility.js +91 -336
  31. package/package.json +9 -10
  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/Lock.js +0 -111
  37. package/dist/bundle/Logger.js +0 -705
  38. package/dist/bundle/Semaphore.js +0 -100
  39. package/dist/bundle/array.js +0 -648
  40. package/dist/bundle/cli.js +0 -85
  41. package/dist/bundle/constants.js +0 -225
  42. package/dist/bundle/context.js +0 -243
  43. package/dist/bundle/cookie.js +0 -262
  44. package/dist/bundle/data-transfer.js +0 -741
  45. package/dist/bundle/datetime.js +0 -1064
  46. package/dist/bundle/domNode.js +0 -471
  47. package/dist/bundle/expression/evaluators.js +0 -1115
  48. package/dist/bundle/expression/helper.js +0 -106
  49. package/dist/bundle/expression/index.js +0 -1223
  50. package/dist/bundle/expression/indicator-functions.js +0 -235
  51. package/dist/bundle/expression/type.js +0 -50
  52. package/dist/bundle/filesystem.js +0 -374
  53. package/dist/bundle/function.js +0 -105
  54. package/dist/bundle/index.js +0 -2686
  55. package/dist/bundle/indicators.js +0 -459
  56. package/dist/bundle/module.js +0 -180
  57. package/dist/bundle/number.js +0 -425
  58. package/dist/bundle/object.js +0 -1004
  59. package/dist/bundle/process.js +0 -275
  60. package/dist/bundle/property-types.js +0 -167
  61. package/dist/bundle/scope.js +0 -1808
  62. package/dist/bundle/string.js +0 -1095
  63. package/dist/bundle/test-helper.js +0 -690
  64. package/dist/bundle/type.js +0 -50
  65. package/dist/bundle/utility.js +0 -362
  66. package/dist/cli.d.ts +0 -31
  67. package/dist/compatible/Lock.js +0 -111
  68. package/dist/compatible/Logger.js +0 -705
  69. package/dist/compatible/Semaphore.js +0 -100
  70. package/dist/compatible/array.js +0 -648
  71. package/dist/compatible/cli.js +0 -85
  72. package/dist/compatible/constants.js +0 -225
  73. package/dist/compatible/context.js +0 -243
  74. package/dist/compatible/cookie.js +0 -262
  75. package/dist/compatible/data-transfer.js +0 -741
  76. package/dist/compatible/datetime.js +0 -1064
  77. package/dist/compatible/domNode.js +0 -471
  78. package/dist/compatible/expression/evaluators.js +0 -1115
  79. package/dist/compatible/expression/helper.js +0 -106
  80. package/dist/compatible/expression/index.js +0 -1223
  81. package/dist/compatible/expression/indicator-functions.js +0 -235
  82. package/dist/compatible/expression/type.js +0 -50
  83. package/dist/compatible/filesystem.js +0 -374
  84. package/dist/compatible/function.js +0 -105
  85. package/dist/compatible/index.js +0 -2686
  86. package/dist/compatible/indicators.js +0 -459
  87. package/dist/compatible/module.js +0 -180
  88. package/dist/compatible/number.js +0 -425
  89. package/dist/compatible/object.js +0 -1004
  90. package/dist/compatible/process.js +0 -275
  91. package/dist/compatible/property-types.js +0 -167
  92. package/dist/compatible/scope.js +0 -1808
  93. package/dist/compatible/string.js +0 -1095
  94. package/dist/compatible/test-helper.js +0 -690
  95. package/dist/compatible/type.js +0 -50
  96. package/dist/compatible/utility.js +0 -362
  97. package/dist/constants.d.ts +0 -99
  98. package/dist/context.d.ts +0 -8
  99. package/dist/cookie.d.ts +0 -31
  100. package/dist/data-transfer.d.ts +0 -45
  101. package/dist/datetime.d.ts +0 -37
  102. package/dist/domNode.d.ts +0 -82
  103. package/dist/expression/evaluators.d.ts +0 -55
  104. package/dist/expression/helper.d.ts +0 -4
  105. package/dist/expression/index.d.ts +0 -7
  106. package/dist/expression/indicator-functions.d.ts +0 -14
  107. package/dist/expression/type.d.ts +0 -70
  108. package/dist/filesystem.d.ts +0 -143
  109. package/dist/function.d.ts +0 -20
  110. package/dist/index.d.ts +0 -23
  111. package/dist/indicators.d.ts +0 -68
  112. package/dist/module.d.ts +0 -8
  113. package/dist/number.d.ts +0 -35
  114. package/dist/object.d.ts +0 -231
  115. package/dist/process.d.ts +0 -22
  116. package/dist/property-types.d.ts +0 -460
  117. package/dist/scope.d.ts +0 -44
  118. package/dist/string.d.ts +0 -312
  119. package/dist/test/Lock.d.ts +0 -1
  120. package/dist/test/Logger.d.ts +0 -1
  121. package/dist/test/Semaphore.d.ts +0 -1
  122. package/dist/test/array.d.ts +0 -1
  123. package/dist/test/cookie.d.ts +0 -1
  124. package/dist/test/data-transfer.d.ts +0 -1
  125. package/dist/test/datetime.d.ts +0 -1
  126. package/dist/test/domNode.d.ts +0 -1
  127. package/dist/test/expression/evaluators.d.ts +0 -1
  128. package/dist/test/expression/helper.d.ts +0 -1
  129. package/dist/test/expression/indicator-functions.d.ts +0 -1
  130. package/dist/test/filesystem.d.ts +0 -1
  131. package/dist/test/function.d.ts +0 -1
  132. package/dist/test/indicators.d.ts +0 -1
  133. package/dist/test/number.d.ts +0 -1
  134. package/dist/test/object.d.ts +0 -1
  135. package/dist/test/process.d.ts +0 -1
  136. package/dist/test/property-types.d.ts +0 -1
  137. package/dist/test/scope.d.ts +0 -1
  138. package/dist/test/string.d.ts +0 -1
  139. package/dist/test/utility.d.ts +0 -1
  140. package/dist/test-helper.d.ts +0 -143
  141. package/dist/type.d.ts +0 -230
  142. package/dist/utility.d.ts +0 -44
@@ -1,103 +1,9 @@
1
- 'use strict';if(typeof module!=='undefined'&&module!==null&&eval('typeof require')!=='undefined'&&eval('require')!==null&&'main'in eval('require')&&eval('typeof require.main')!=='undefined'&&eval('require.main')!==null){var ORIGINAL_MAIN_MODULE=module;if(module!==eval('require.main')&&'paths'in module&&'paths'in eval('require.main')&&typeof __dirname!=='undefined'&&__dirname!==null)module.paths=eval('require.main.paths').concat(module.paths.filter(function(path){return eval('require.main.paths').includes(path)}))};if(typeof window==='undefined'||window===null)var window=(typeof global==='undefined'||global===null)?{}:global;(function webpackUniversalModuleDefinition(root, factory) {
2
- if(typeof exports === 'object' && typeof module === 'object')
3
- module.exports = factory(require("core-js/modules/es.array.includes.js"));
4
- else if(typeof define === 'function' && define.amd)
5
- define(["core-js/modules/es.array.includes.js"], factory);
6
- else {
7
- var a = typeof exports === 'object' ? factory(require("core-js/modules/es.array.includes.js")) : factory(root["core-js/modules/es.array.includes.js"]);
8
- for(var i in a) (typeof exports === 'object' ? exports : root)[i] = a[i];
9
- }
10
- })(this, function(__WEBPACK_EXTERNAL_MODULE__0__) {
11
- return /******/ (function() { // webpackBootstrap
12
- /******/ var __webpack_modules__ = ([
13
- /* 0 */
14
- /***/ (function(module) {
15
-
16
- "use strict";
17
- module.exports = __WEBPACK_EXTERNAL_MODULE__0__;
18
-
19
- /***/ }),
20
- /* 1 */
21
- /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
22
-
23
- "use strict";
24
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
25
- /* harmony export */ DEFAULT_ENCODING: function() { return /* binding */ DEFAULT_ENCODING; }
26
- /* harmony export */ });
27
- /* 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 */
28
- // #!/usr/bin/env babel-node
29
- // -*- coding: utf-8 -*-
30
- /** @module constants *//* !
31
- region header
32
- [Project page](https://torben.website/clientnode)
33
-
34
- Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
35
-
36
- License
37
- -------
38
-
39
- This library written by Torben Sickert stands under a creative commons
40
- naming 3.0 unported license.
41
- See https://creativecommons.org/licenses/by/3.0/deed.de
42
- endregion
43
- */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
44
- // conversion.
45
- 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.
46
- var ANIMATION_END_EVENT_NAMES="animationend webkitAnimationEnd oAnimationEnd MSAnimationEnd";// String representation to object type name mapping.
47
- 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.
48
- 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.
49
- var SPECIAL_REGEX_SEQUENCES=(/* unused pure expression or super */ null && (["-","[","]","(",")","^","$","*","+",".","{","}"]));// Saves a string with all css3 browser specific transition end event names.
50
- var TRANSITION_END_EVENT_NAMES="transitionend webkitTransitionEnd oTransitionEnd MSTransitionEnd";
51
-
52
- /***/ }),
53
- /* 2 */
54
- /***/ (function(module, __webpack_exports__, __webpack_require__) {
55
-
56
- "use strict";
57
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
58
- /* harmony export */ determineGlobalContext: function() { return /* binding */ determineGlobalContext; },
59
- /* harmony export */ optionalImport: function() { return /* binding */ optionalImport; },
60
- /* harmony export */ optionalRequire: function() { return /* binding */ optionalRequire; }
61
- /* harmony export */ });
62
- /* unused harmony exports currentRequire, clearRequireCache, isolatedRequire, isImportSyntaxSupported */
63
- /* module decorator */ module = __webpack_require__.hmd(module);
64
1
  // #!/usr/bin/env babel-node
65
2
  // -*- coding: utf-8 -*-
66
- /** @module module *//* !
67
- region header
68
- [Project page](https://torben.website/clientnode)
69
-
70
- Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
71
-
72
- License
73
- -------
74
-
75
- This library written by Torben Sickert stands under a creative commons
76
- naming 3.0 unported license.
77
- See https://creativecommons.org/licenses/by/3.0/deed.de
78
- endregion
79
- */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)})}}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}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();// Make preprocessed require function available at runtime.
80
- var currentRequire=typeof globalContext.require==="undefined"?null:globalContext.require;var optionalRequire=function optionalRequire(id){try{return currentRequire?currentRequire(id):null}catch(_unused){return null}};var clearRequireCache=function clearRequireCache(cache){if(cache===void 0){cache=(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){cache=(currentRequire===null||currentRequire===void 0?void 0:currentRequire.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
81
- }catch(error){throw error}finally{restoreRequireCache(requireFunction.cache,backup)}};// Make preprocessed import function available at runtime.
82
- var isImportSyntaxSupported=function isImportSyntaxSupported(){try{// eslint-disable-next-line @typescript-eslint/no-implied-eval
83
- new Function("import(\"data:text/javascript,\")");return true}catch(_unused2){return false}};var optionalImport=/*#__PURE__*/function(){var _optionalImport=_asyncToGenerator(/*#__PURE__*/_regenerator().m(function _callee(id,options){var _t,_t2;return _regenerator().w(function(_context){while(1)switch(_context.p=_context.n){case 0:if(options===void 0){options={}}_context.p=1;if(!isImportSyntaxSupported()){_context.n=3;break}_context.n=2;return new Function("options","return import('".concat(id,"', options)"))(options);case 2:_t=_context.v;_context.n=5;break;case 3:_context.n=4;return Promise.resolve(null);case 4:_t=_context.v;case 5:return _context.a(2,_t);case 6:_context.p=6;_t2=_context.v;_context.n=7;return Promise.resolve(null);case 7:return _context.a(2,_context.v)}},_callee,null,[[1,6]])}));function optionalImport(_x,_x2){return _optionalImport.apply(this,arguments)}return optionalImport}();
84
-
85
- /***/ }),
86
- /* 3 */,
87
- /* 4 */,
88
- /* 5 */
89
- /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
3
+ /** @module filesystem */
4
+ 'use strict';
90
5
 
91
- "use strict";
92
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
93
- /* harmony export */ NOOP: function() { return /* binding */ NOOP; }
94
- /* harmony export */ });
95
- /* unused harmony exports globalContext, setGlobalContext, MAXIMAL_NUMBER_OF_ITERATIONS, mockConsole */
96
- /* unused harmony import specifier */ var CONSOLE_METHODS;
97
- /* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(2);
98
- // #!/usr/bin/env babel-node
99
- // -*- coding: utf-8 -*-
100
- /** @module context *//* !
6
+ /* !
101
7
  region header
102
8
  [Project page](https://torben.website/clientnode)
103
9
 
@@ -110,71 +16,80 @@ new Function("import(\"data:text/javascript,\")");return true}catch(_unused2){re
110
16
  naming 3.0 unported license.
111
17
  See https://creativecommons.org/licenses/by/3.0/deed.de
112
18
  endregion
113
- */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__WEBPACK_IMPORTED_MODULE_0__.determineGlobalContext)();var setGlobalContext=function setGlobalContext(context){globalContext=context};globalContext.fetch=globalContext.fetch?globalContext.fetch.bind(globalContext):(_optionalRequire$defa=(_optionalRequire=(0,_module__WEBPACK_IMPORTED_MODULE_0__.optionalRequire)("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__WEBPACK_IMPORTED_MODULE_0__.optionalImport)(/* 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.
114
- var NOOP=function NOOP(){// Do nothing.
115
- };var mockConsole=function mockConsole(){// Avoid errors in browsers that lack a console.
116
- 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()}};
117
-
118
- /***/ }),
119
- /* 6 */
120
- /***/ (function(module) {
121
-
122
- function webpackEmptyContext(req) {
123
- var e = new Error("Cannot find module '" + req + "'");
124
- e.code = 'MODULE_NOT_FOUND';
125
- throw e;
126
- }
127
- webpackEmptyContext.keys = function() { return []; };
128
- webpackEmptyContext.resolve = webpackEmptyContext;
129
- webpackEmptyContext.id = 6;
130
- module.exports = webpackEmptyContext;
131
-
132
- /***/ }),
133
- /* 7 */,
134
- /* 8 */,
135
- /* 9 */,
136
- /* 10 */,
137
- /* 11 */,
138
- /* 12 */
139
- /***/ (function(__unused_webpack_module, __webpack_exports__, __webpack_require__) {
140
-
141
- "use strict";
142
- __webpack_require__.r(__webpack_exports__);
143
- /* harmony export */ __webpack_require__.d(__webpack_exports__, {
144
- /* harmony export */ copyDirectoryRecursive: function() { return /* binding */ copyDirectoryRecursive; },
145
- /* harmony export */ copyDirectoryRecursiveSync: function() { return /* binding */ copyDirectoryRecursiveSync; },
146
- /* harmony export */ copyFile: function() { return /* binding */ copyFile; },
147
- /* harmony export */ copyFileSync: function() { return /* binding */ copyFileSync; },
148
- /* harmony export */ imports: function() { return /* binding */ imports; },
149
- /* harmony export */ importsPromise: function() { return /* binding */ importsPromise; },
150
- /* harmony export */ isDirectory: function() { return /* binding */ isDirectory; },
151
- /* harmony export */ isDirectorySync: function() { return /* binding */ isDirectorySync; },
152
- /* harmony export */ isFile: function() { return /* binding */ isFile; },
153
- /* harmony export */ isFileSync: function() { return /* binding */ isFileSync; },
154
- /* harmony export */ walkDirectoryRecursively: function() { return /* binding */ _walkDirectoryRecursively; },
155
- /* harmony export */ walkDirectoryRecursivelySync: function() { return /* binding */ _walkDirectoryRecursivelySync; }
156
- /* harmony export */ });
157
- /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(0);
158
- /* harmony import */ var core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(core_js_modules_es_array_includes_js__WEBPACK_IMPORTED_MODULE_0__);
159
- /* harmony import */ var _constants__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(1);
160
- /* harmony import */ var _context__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(5);
161
- /* harmony import */ var _module__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(2);
162
- // #!/usr/bin/env babel-node
163
- // -*- coding: utf-8 -*-
164
- /** @module filesystem *//* !
165
- region header
166
- [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
+ fs: null,
27
+ fsPromises: null,
28
+ path: null
29
+ };
30
+ let mkdirSync;
31
+ let readdirSync;
32
+ let readFileSync;
33
+ let statSync;
34
+ let writeFileSync;
35
+ const fsImportPromise = optionalImport('fs');
36
+ void fsImportPromise.then(module => {
37
+ imports.fs = module;
38
+ if (module) {
39
+ mkdirSync = module.mkdirSync;
40
+ readdirSync = module.readdirSync;
41
+ readFileSync = module.readFileSync;
42
+ statSync = module.statSync;
43
+ writeFileSync = module.writeFileSync;
44
+ } else {
45
+ mkdirSync = null;
46
+ readdirSync = null;
47
+ readFileSync = null;
48
+ statSync = null;
49
+ writeFileSync = null;
50
+ }
51
+ });
52
+ let mkdir;
53
+ let readdir;
54
+ let readFile;
55
+ let stat;
56
+ let writeFile;
57
+ const fsPromisesImportPromise = optionalImport('fs/promises');
58
+ void fsPromisesImportPromise.then(module => {
59
+ imports.fsPromises = module;
60
+ if (module) {
61
+ mkdir = module.mkdir;
62
+ readdir = module.readdir;
63
+ readFile = module.readFile;
64
+ stat = module.stat;
65
+ writeFile = module.writeFile;
66
+ } else {
67
+ mkdir = null;
68
+ readdir = null;
69
+ readFile = null;
70
+ stat = null;
71
+ writeFile = null;
72
+ }
73
+ });
74
+ let basename;
75
+ let join;
76
+ let resolve;
77
+ const pathImportPromise = optionalImport('path');
78
+ void pathImportPromise.then(module => {
79
+ imports.path = module;
80
+ if (module) {
81
+ basename = module.basename;
82
+ join = module.join;
83
+ resolve = module.resolve;
84
+ } else {
85
+ basename = null;
86
+ join = null;
87
+ resolve = null;
88
+ }
89
+ });
90
+ export const importsPromise = Promise.all([fsImportPromise, fsPromisesImportPromise, pathImportPromise]);
167
91
 
168
- Copyright Torben Sickert (info["~at~"]torben.website) 16.12.2012
169
-
170
- License
171
- -------
172
-
173
- This library written by Torben Sickert stands under a creative commons
174
- naming 3.0 unported license.
175
- See https://creativecommons.org/licenses/by/3.0/deed.de
176
- endregion
177
- */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={fs:null,fsPromises:null,path:null};var mkdirSync;var readdirSync;var readFileSync;var statSync;var writeFileSync;var fsImportPromise=(0,_module__WEBPACK_IMPORTED_MODULE_3__.optionalImport)("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 mkdir;var readdir;var readFile;var stat;var writeFile;var fsPromisesImportPromise=(0,_module__WEBPACK_IMPORTED_MODULE_3__.optionalImport)("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 basename;var join;var resolve;var pathImportPromise=(0,_module__WEBPACK_IMPORTED_MODULE_3__.optionalImport)("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}});var importsPromise=Promise.all([fsImportPromise,fsPromisesImportPromise,pathImportPromise]);/**
92
+ /**
178
93
  * Copies given source directory via path to given target directory location
179
94
  * with same target name as source file has or copy to given complete target
180
95
  * directory path.
@@ -187,7 +102,36 @@ __webpack_require__.r(__webpack_exports__);
187
102
  * @param readOptions - Options to use for reading source file.
188
103
  * @param writeOptions - Options to use for writing to target file.
189
104
  * @returns Promise holding the determined target directory path.
190
- */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__WEBPACK_IMPORTED_MODULE_2__.NOOP}if(readOptions===void 0){readOptions={encoding:null,flag:"r"}}if(writeOptions===void 0){writeOptions={encoding:_constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ENCODING,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}();/**
105
+ */
106
+ export const copyDirectoryRecursive = async (sourcePath, targetPath, contents = false, callback = NOOP, readOptions = {
107
+ encoding: null,
108
+ flag: 'r'
109
+ }, writeOptions = {
110
+ encoding: DEFAULT_ENCODING,
111
+ flag: 'w',
112
+ mode: 0o666
113
+ }) => {
114
+ if (!(basename && join && mkdir && resolve)) throw new Error('Could not load filesystem functions.');
115
+ sourcePath = resolve(sourcePath);
116
+ if (!contents && (await isDirectory(targetPath))) targetPath = resolve(targetPath, basename(sourcePath));
117
+
118
+ // NOTE: Check if folder needs to be created or integrated.
119
+ try {
120
+ await mkdir(targetPath);
121
+ } catch (error) {
122
+ if (error.code !== 'EEXIST') throw error;
123
+ }
124
+ for (const currentSourceFile of await walkDirectoryRecursively(sourcePath, callback)) {
125
+ const currentTargetPath = join(targetPath, currentSourceFile.path.substring(sourcePath.length));
126
+ if (currentSourceFile.stats?.isDirectory()) try {
127
+ await mkdir(currentTargetPath);
128
+ } catch (error) {
129
+ if (error.code !== 'EEXIST') throw error;
130
+ } else await copyFile(currentSourceFile.path, currentTargetPath, readOptions, writeOptions);
131
+ }
132
+ return targetPath;
133
+ };
134
+ /**
191
135
  * Copies given source directory via path to given target directory location
192
136
  * with same target name as source file has or copy to given complete target
193
137
  * directory path.
@@ -200,8 +144,36 @@ __webpack_require__.r(__webpack_exports__);
200
144
  * @param readOptions - Options to use for reading source file.
201
145
  * @param writeOptions - Options to use for writing to target file.
202
146
  * @returns Determined target directory path.
203
- */var copyDirectoryRecursiveSync=function copyDirectoryRecursiveSync(sourcePath,targetPath,contents,callback,readOptions,writeOptions){if(contents===void 0){contents=false}if(callback===void 0){callback=_context__WEBPACK_IMPORTED_MODULE_2__.NOOP}if(readOptions===void 0){readOptions={encoding:null,flag:"r"}}if(writeOptions===void 0){writeOptions={encoding:_constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ENCODING,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.
204
- 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};/**
147
+ */
148
+ export const copyDirectoryRecursiveSync = (sourcePath, targetPath, contents = false, callback = NOOP, readOptions = {
149
+ encoding: null,
150
+ flag: 'r'
151
+ }, writeOptions = {
152
+ encoding: DEFAULT_ENCODING,
153
+ flag: 'w',
154
+ mode: 0o666
155
+ }) => {
156
+ if (!(basename && join && mkdirSync && resolve)) throw new Error('Could not load filesystem functions.');
157
+ sourcePath = resolve(sourcePath);
158
+ if (!contents && isDirectorySync(targetPath)) targetPath = resolve(targetPath, basename(sourcePath));
159
+
160
+ // NOTE: Try/Check if target folder needs to be created.
161
+ try {
162
+ mkdirSync(targetPath);
163
+ } catch (error) {
164
+ if (error.code !== 'EEXIST') throw error;
165
+ }
166
+ for (const currentSourceFile of walkDirectoryRecursivelySync(sourcePath, callback)) {
167
+ const currentTargetPath = join(targetPath, currentSourceFile.path.substring(sourcePath.length));
168
+ if (currentSourceFile.stats?.isDirectory()) try {
169
+ mkdirSync(currentTargetPath);
170
+ } catch (error) {
171
+ if (error.code !== 'EEXIST') throw error;
172
+ } else copyFileSync(currentSourceFile.path, currentTargetPath, readOptions, writeOptions);
173
+ }
174
+ return targetPath;
175
+ };
176
+ /**
205
177
  * Copies given source file via path to given target directory location with
206
178
  * same target name as source file has or copy to given complete target file
207
179
  * path.
@@ -210,7 +182,26 @@ try{mkdirSync(targetPath)}catch(error){if(error.code!=="EEXIST")throw error}for(
210
182
  * @param readOptions - Options to use for reading source file.
211
183
  * @param writeOptions - Options to use for writing to target file.
212
184
  * @returns Determined target file path.
213
- */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__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ENCODING,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}();/**
185
+ */
186
+ export const copyFile = async (sourcePath, targetPath, readOptions = {
187
+ encoding: null,
188
+ flag: 'r'
189
+ }, writeOptions = {
190
+ encoding: DEFAULT_ENCODING,
191
+ flag: 'w',
192
+ mode: 0o666
193
+ }) => {
194
+ if (!(basename && readFile && resolve && writeFile)) throw new Error('Could not load filesystem functions.');
195
+
196
+ /*
197
+ NOTE: If target path references a directory a new file with the same
198
+ name will be created.
199
+ */
200
+ if (await isDirectory(targetPath)) targetPath = resolve(targetPath, basename(sourcePath));
201
+ await writeFile(targetPath, await readFile(sourcePath, readOptions), writeOptions);
202
+ return targetPath;
203
+ };
204
+ /**
214
205
  * Copies given source file via path to given target directory location with
215
206
  * same target name as source file has or copy to given complete target file
216
207
  * path.
@@ -219,26 +210,82 @@ try{mkdirSync(targetPath)}catch(error){if(error.code!=="EEXIST")throw error}for(
219
210
  * @param readOptions - Options to use for reading source file.
220
211
  * @param writeOptions - Options to use for writing to target file.
221
212
  * @returns Determined target file path.
222
- */var copyFileSync=function copyFileSync(sourcePath,targetPath,readOptions,writeOptions){if(readOptions===void 0){readOptions={encoding:null,flag:"r"}}if(writeOptions===void 0){writeOptions={encoding:_constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ENCODING,flag:"w",mode:438}}if(!(basename&&readFileSync&&resolve&&writeFileSync))throw new Error("Could not load filesystem functions.");/*
223
- NOTE: If target path references a directory a new file with the same
224
- name will be created.
225
- */if(isDirectorySync(targetPath))targetPath=resolve(targetPath,basename(sourcePath));writeFileSync(targetPath,readFileSync(sourcePath,readOptions),writeOptions);return targetPath};/**
213
+ */
214
+ export const copyFileSync = (sourcePath, targetPath, readOptions = {
215
+ encoding: null,
216
+ flag: 'r'
217
+ }, writeOptions = {
218
+ encoding: DEFAULT_ENCODING,
219
+ flag: 'w',
220
+ mode: 0o666
221
+ }) => {
222
+ if (!(basename && readFileSync && resolve && writeFileSync)) throw new Error('Could not load filesystem functions.');
223
+
224
+ /*
225
+ NOTE: If target path references a directory a new file with the same
226
+ name will be created.
227
+ */
228
+ if (isDirectorySync(targetPath)) targetPath = resolve(targetPath, basename(sourcePath));
229
+ writeFileSync(targetPath, readFileSync(sourcePath, readOptions), writeOptions);
230
+ return targetPath;
231
+ };
232
+ /**
226
233
  * Checks if given path points to a valid directory.
227
234
  * @param filePath - Path to directory.
228
235
  * @returns A promise holding a boolean which indicates directory existence.
229
- */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}();/**
236
+ */
237
+ export const isDirectory = async filePath => {
238
+ if (!stat) throw new Error('Could not load filesystem functions.');
239
+ try {
240
+ return (await stat(filePath)).isDirectory();
241
+ } catch (error) {
242
+ if (Object.prototype.hasOwnProperty.call(error, 'code') && ['ENOENT', 'ENOTDIR'].includes(error.code)) return false;
243
+ throw error;
244
+ }
245
+ };
246
+ /**
230
247
  * Checks if given path points to a valid directory.
231
248
  * @param filePath - Path to directory.
232
249
  * @returns A boolean which indicates directory existence.
233
- */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}};/**
250
+ */
251
+ export const isDirectorySync = filePath => {
252
+ if (!statSync) throw new Error('Could not load filesystem functions.');
253
+ try {
254
+ return statSync(filePath).isDirectory();
255
+ } catch (error) {
256
+ if (Object.prototype.hasOwnProperty.call(error, 'code') && ['ENOENT', 'ENOTDIR'].includes(error.code)) return false;
257
+ throw error;
258
+ }
259
+ };
260
+ /**
234
261
  * Checks if given path points to a valid file.
235
262
  * @param filePath - Path to directory.
236
263
  * @returns A promise holding a boolean which indicates directory existence.
237
- */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}();/**
264
+ */
265
+ export const isFile = async filePath => {
266
+ if (!stat) throw new Error('Could not load filesystem functions.');
267
+ try {
268
+ return (await stat(filePath)).isFile();
269
+ } catch (error) {
270
+ if (Object.prototype.hasOwnProperty.call(error, 'code') && ['ENOENT', 'ENOTDIR'].includes(error.code)) return false;
271
+ throw error;
272
+ }
273
+ };
274
+ /**
238
275
  * Checks if given path points to a valid file.
239
276
  * @param filePath - Path to file.
240
277
  * @returns A boolean which indicates file existence.
241
- */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}};/**
278
+ */
279
+ export const isFileSync = filePath => {
280
+ if (!statSync) throw new Error('Could not load filesystem functions.');
281
+ try {
282
+ return statSync(filePath).isFile();
283
+ } catch (error) {
284
+ if (Object.prototype.hasOwnProperty.call(error, 'code') && ['ENOENT', 'ENOTDIR'].includes(error.code)) return false;
285
+ throw error;
286
+ }
287
+ };
288
+ /**
242
289
  * Iterates through given directory structure recursively and calls given
243
290
  * callback for each found file. Callback gets file path and corresponding stat
244
291
  * object as argument.
@@ -251,10 +298,58 @@ try{mkdirSync(targetPath)}catch(error){if(error.code!=="EEXIST")throw error}for(
251
298
  * "false" no traversing into that directory will occur.
252
299
  * @param options - Options to use for nested "readdir" calls.
253
300
  * @returns A promise holding the determined files.
254
- */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__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ENCODING}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)/*
255
- NOTE: Directories and have to be iterated first to be able to
256
- avoid deeper unwanted traversing.
257
- */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}();/**
301
+ */
302
+ export const walkDirectoryRecursively = async (directoryPath, callback = null, options = DEFAULT_ENCODING) => {
303
+ if (!(readdir && resolve && stat)) throw new Error('Could not load filesystem functions.');
304
+ const files = [];
305
+ for (const directoryEntry of await readdir(directoryPath, typeof options === 'string' ? {
306
+ encoding: options,
307
+ withFileTypes: true
308
+ } : {
309
+ ...options,
310
+ withFileTypes: true
311
+ })) {
312
+ const filePath = resolve(directoryPath, directoryEntry.name);
313
+ const file = {
314
+ directoryPath,
315
+ directoryEntry,
316
+ error: null,
317
+ name: directoryEntry.name,
318
+ path: filePath,
319
+ stats: null
320
+ };
321
+ try {
322
+ file.stats = await stat(filePath);
323
+ } catch (error) {
324
+ file.error = error;
325
+ }
326
+ files.push(file);
327
+ }
328
+ if (callback)
329
+ /*
330
+ NOTE: Directories and have to be iterated first to be able to
331
+ avoid deeper unwanted traversing.
332
+ */
333
+ files.sort((firstFile, secondFile) => {
334
+ if (firstFile.stats?.isDirectory()) {
335
+ if (secondFile.stats?.isDirectory()) return 0;
336
+ return -1;
337
+ }
338
+ if (secondFile.stats?.isDirectory()) return 1;
339
+ return 0;
340
+ });
341
+ let finalFiles = [];
342
+ for (const file of files) {
343
+ finalFiles.push(file);
344
+ let result = callback ? callback(file) : undefined;
345
+ if (result === null) break;
346
+ if (typeof result === 'object' && 'then' in result) result = await result;
347
+ if (result === null) break;
348
+ if (result !== false && file.stats?.isDirectory()) finalFiles = finalFiles.concat(await walkDirectoryRecursively(file.path, callback, options));
349
+ }
350
+ return finalFiles;
351
+ };
352
+ /**
258
353
  * Iterates through given directory structure recursively and calls given
259
354
  * callback for each found file. Callback gets file path and corresponding
260
355
  * stats object as argument.
@@ -262,135 +357,54 @@ try{mkdirSync(targetPath)}catch(error){if(error.code!=="EEXIST")throw error}for(
262
357
  * @param callback - Function to invoke for each traversed file.
263
358
  * @param options - Options to use for nested "readdir" calls.
264
359
  * @returns Determined list if all files.
265
- */var _walkDirectoryRecursivelySync=function walkDirectoryRecursivelySync(directoryPath,callback,options){if(callback===void 0){callback=_context__WEBPACK_IMPORTED_MODULE_2__.NOOP}if(options===void 0){options=_constants__WEBPACK_IMPORTED_MODULE_1__.DEFAULT_ENCODING}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){/*
266
- NOTE: Directories have to be iterated first to potentially
267
- avoid deeper iterations.
268
- */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};
269
-
270
- /***/ })
271
- /******/ ]);
272
- /************************************************************************/
273
- /******/ // The module cache
274
- /******/ var __webpack_module_cache__ = {};
275
- /******/
276
- /******/ // The require function
277
- /******/ function __webpack_require__(moduleId) {
278
- /******/ // Check if module is in cache
279
- /******/ var cachedModule = __webpack_module_cache__[moduleId];
280
- /******/ if (cachedModule !== undefined) {
281
- /******/ return cachedModule.exports;
282
- /******/ }
283
- /******/ // Create a new module (and put it into the cache)
284
- /******/ var module = __webpack_module_cache__[moduleId] = {
285
- /******/ id: moduleId,
286
- /******/ loaded: false,
287
- /******/ exports: {}
288
- /******/ };
289
- /******/
290
- /******/ // Execute the module function
291
- /******/ __webpack_modules__[moduleId](module, module.exports, __webpack_require__);
292
- /******/
293
- /******/ // Flag the module as loaded
294
- /******/ module.loaded = true;
295
- /******/
296
- /******/ // Return the exports of the module
297
- /******/ return module.exports;
298
- /******/ }
299
- /******/
300
- /******/ // expose the module cache
301
- /******/ __webpack_require__.c = __webpack_module_cache__;
302
- /******/
303
- /************************************************************************/
304
- /******/ /* webpack/runtime/compat get default export */
305
- /******/ !function() {
306
- /******/ // getDefaultExport function for compatibility with non-harmony modules
307
- /******/ __webpack_require__.n = function(module) {
308
- /******/ var getter = module && module.__esModule ?
309
- /******/ function() { return module['default']; } :
310
- /******/ function() { return module; };
311
- /******/ __webpack_require__.d(getter, { a: getter });
312
- /******/ return getter;
313
- /******/ };
314
- /******/ }();
315
- /******/
316
- /******/ /* webpack/runtime/define property getters */
317
- /******/ !function() {
318
- /******/ // define getter/value functions for harmony exports
319
- /******/ __webpack_require__.d = function(exports, definition) {
320
- /******/ if(Array.isArray(definition)) {
321
- /******/ var i = 0;
322
- /******/ while(i < definition.length) {
323
- /******/ var key = definition[i++];
324
- /******/ var binding = definition[i++];
325
- /******/ if(!__webpack_require__.o(exports, key)) {
326
- /******/ if(binding === 0) {
327
- /******/ Object.defineProperty(exports, key, { enumerable: true, value: definition[i++] });
328
- /******/ } else {
329
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: binding });
330
- /******/ }
331
- /******/ } else if(binding === 0) { i++; }
332
- /******/ }
333
- /******/ } else {
334
- /******/ for(var key in definition) {
335
- /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
336
- /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
337
- /******/ }
338
- /******/ }
339
- /******/ }
340
- /******/ };
341
- /******/ }();
342
- /******/
343
- /******/ /* webpack/runtime/global */
344
- /******/ !function() {
345
- /******/ __webpack_require__.g = (function() {
346
- /******/ if (typeof globalThis === 'object') return globalThis;
347
- /******/ try {
348
- /******/ return this || new Function('return this')();
349
- /******/ } catch (e) {
350
- /******/ if (typeof window === 'object') return window;
351
- /******/ }
352
- /******/ })();
353
- /******/ }();
354
- /******/
355
- /******/ /* webpack/runtime/harmony module decorator */
356
- /******/ !function() {
357
- /******/ __webpack_require__.hmd = function(module) {
358
- /******/ module = Object.create(module);
359
- /******/ if (!module.children) module.children = [];
360
- /******/ Object.defineProperty(module, 'exports', {
361
- /******/ enumerable: true,
362
- /******/ set: function() {
363
- /******/ throw new Error('ES Modules may not assign module.exports or exports.*, Use ESM export syntax, instead: ' + module.id);
364
- /******/ }
365
- /******/ });
366
- /******/ return module;
367
- /******/ };
368
- /******/ }();
369
- /******/
370
- /******/ /* webpack/runtime/hasOwnProperty shorthand */
371
- /******/ !function() {
372
- /******/ __webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }
373
- /******/ }();
374
- /******/
375
- /******/ /* webpack/runtime/make namespace object */
376
- /******/ !function() {
377
- /******/ // define __esModule on exports
378
- /******/ __webpack_require__.r = function(exports) {
379
- /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
380
- /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
381
- /******/ }
382
- /******/ Object.defineProperty(exports, '__esModule', { value: true });
383
- /******/ };
384
- /******/ }();
385
- /******/
386
- /************************************************************************/
387
- /******/
388
- /******/ // module cache are used so entry inlining is disabled
389
- /******/ // startup
390
- /******/ // Load entry module and return exports
391
- /******/ var __webpack_exports__ = __webpack_require__(12);
392
- /******/
393
- /******/ return __webpack_exports__;
394
- /******/ })()
395
- ;
396
- });
360
+ */
361
+ export const walkDirectoryRecursivelySync = (directoryPath, callback = NOOP, options = DEFAULT_ENCODING) => {
362
+ if (!(readdirSync && resolve && statSync)) throw new Error('Could not load filesystem functions.');
363
+ const files = [];
364
+ for (const directoryEntry of readdirSync(directoryPath, typeof options === 'string' ? {
365
+ encoding: options,
366
+ withFileTypes: true
367
+ } : {
368
+ ...options,
369
+ withFileTypes: true
370
+ })) {
371
+ const filePath = resolve(directoryPath, directoryEntry.name);
372
+ const file = {
373
+ directoryPath,
374
+ directoryEntry,
375
+ error: null,
376
+ name: directoryEntry.name,
377
+ path: filePath,
378
+ stats: null
379
+ };
380
+ try {
381
+ file.stats = statSync(filePath);
382
+ } catch (error) {
383
+ file.error = error;
384
+ }
385
+ files.push(file);
386
+ }
387
+ let finalFiles = [];
388
+ if (callback) {
389
+ /*
390
+ NOTE: Directories have to be iterated first to potentially
391
+ avoid deeper iterations.
392
+ */
393
+ files.sort((firstFile, secondFile) => {
394
+ if (firstFile.stats?.isDirectory()) {
395
+ if (secondFile.stats?.isDirectory()) return 0;
396
+ return -1;
397
+ }
398
+ if (secondFile.stats?.isDirectory()) return 1;
399
+ return 0;
400
+ });
401
+ for (const file of files) {
402
+ finalFiles.push(file);
403
+ const result = callback(file);
404
+ if (result === null) break;
405
+ if (result !== false && file.stats?.isDirectory()) finalFiles = finalFiles.concat(walkDirectoryRecursivelySync(file.path, callback, options));
406
+ }
407
+ }
408
+ return finalFiles;
409
+ };
410
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2ZpbGVzeXN0ZW0udHMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gIyEvdXNyL2Jpbi9lbnYgYmFiZWwtbm9kZVxuLy8gLSotIGNvZGluZzogdXRmLTggLSotXG4vKiogQG1vZHVsZSBmaWxlc3lzdGVtICovXG4ndXNlIHN0cmljdCdcbi8qICFcbiAgICByZWdpb24gaGVhZGVyXG4gICAgW1Byb2plY3QgcGFnZV0oaHR0cHM6Ly90b3JiZW4ud2Vic2l0ZS9jbGllbnRub2RlKVxuXG4gICAgQ29weXJpZ2h0IFRvcmJlbiBTaWNrZXJ0IChpbmZvW1wifmF0flwiXXRvcmJlbi53ZWJzaXRlKSAxNi4xMi4yMDEyXG5cbiAgICBMaWNlbnNlXG4gICAgLS0tLS0tLVxuXG4gICAgVGhpcyBsaWJyYXJ5IHdyaXR0ZW4gYnkgVG9yYmVuIFNpY2tlcnQgc3RhbmRzIHVuZGVyIGEgY3JlYXRpdmUgY29tbW9uc1xuICAgIG5hbWluZyAzLjAgdW5wb3J0ZWQgbGljZW5zZS5cbiAgICBTZWUgaHR0cHM6Ly9jcmVhdGl2ZWNvbW1vbnMub3JnL2xpY2Vuc2VzL2J5LzMuMC9kZWVkLmRlXG4gICAgZW5kcmVnaW9uXG4qL1xuaW1wb3J0IHR5cGUge1xuICAgIE9iamVjdEVuY29kaW5nT3B0aW9ucyxcbiAgICBta2RpclN5bmMgYXMgbWtkaXJTeW5jVHlwZSxcbiAgICByZWFkZGlyU3luYyBhcyByZWFkZGlyU3luY1R5cGUsXG4gICAgcmVhZEZpbGVTeW5jIGFzIHJlYWRGaWxlU3luY1R5cGUsXG4gICAgc3RhdFN5bmMgYXMgc3RhdFN5bmNUeXBlLFxuICAgIHdyaXRlRmlsZVN5bmMgYXMgd3JpdGVGaWxlU3luY1R5cGVcbn0gZnJvbSAnbm9kZTpmcydcbmltcG9ydCB0eXBlIHtcbiAgICBta2RpciBhcyBta2RpclR5cGUsXG4gICAgcmVhZGRpciBhcyByZWFkZGlyVHlwZSxcbiAgICByZWFkRmlsZSBhcyByZWFkRmlsZVR5cGUsXG4gICAgc3RhdCBhcyBzdGF0VHlwZSxcbiAgICB3cml0ZUZpbGUgYXMgd3JpdGVGaWxlVHlwZVxufSBmcm9tICdmcy9wcm9taXNlcydcbmltcG9ydCB0eXBlIHtcbiAgICBiYXNlbmFtZSBhcyBiYXNlbmFtZVR5cGUsXG4gICAgam9pbiBhcyBqb2luVHlwZSxcbiAgICByZXNvbHZlIGFzIHJlc29sdmVUeXBlXG59IGZyb20gJ3BhdGgnXG5cbmltcG9ydCB0eXBlIHtBbnlGdW5jdGlvbiwgRW5jb2RpbmcsIEZpbGUsIEZpbGVUcmF2ZXJzZVJlc3VsdH0gZnJvbSAnLi90eXBlJ1xuXG5pbXBvcnQge0RFRkFVTFRfRU5DT0RJTkd9IGZyb20gJy4vY29uc3RhbnRzJ1xuaW1wb3J0IHtOT09QfSBmcm9tICcuL2NvbnRleHQnXG5pbXBvcnQge29wdGlvbmFsSW1wb3J0fSBmcm9tICcuL21vZHVsZSdcblxuZXhwb3J0IGNvbnN0IGltcG9ydHM6IHtcbiAgICBmczogbnVsbCB8IHR5cGVvZiBpbXBvcnQoJ2ZzJylcbiAgICBmc1Byb21pc2VzOiBudWxsIHwgdHlwZW9mIGltcG9ydCgnZnMvcHJvbWlzZXMnKVxuICAgIHBhdGg6IG51bGwgfCB0eXBlb2YgaW1wb3J0KCdwYXRoJylcbn0gPSB7XG4gICAgZnM6IG51bGwsXG4gICAgZnNQcm9taXNlczogbnVsbCxcbiAgICBwYXRoOiBudWxsXG59XG5cbmxldCBta2RpclN5bmM6IG51bGwgfCB0eXBlb2YgbWtkaXJTeW5jVHlwZVxubGV0IHJlYWRkaXJTeW5jOiBudWxsIHwgdHlwZW9mIHJlYWRkaXJTeW5jVHlwZVxubGV0IHJlYWRGaWxlU3luYzogbnVsbCB8IHR5cGVvZiByZWFkRmlsZVN5bmNUeXBlXG5sZXQgc3RhdFN5bmM6IG51bGwgfCB0eXBlb2Ygc3RhdFN5bmNUeXBlXG5sZXQgd3JpdGVGaWxlU3luYzogbnVsbCB8IHR5cGVvZiB3cml0ZUZpbGVTeW5jVHlwZVxuY29uc3QgZnNJbXBvcnRQcm9taXNlID0gb3B0aW9uYWxJbXBvcnQ8dHlwZW9mIGltcG9ydCgnZnMnKT4oJ2ZzJylcbnZvaWQgZnNJbXBvcnRQcm9taXNlLnRoZW4oKG1vZHVsZSkgPT4ge1xuICAgIGltcG9ydHMuZnMgPSBtb2R1bGVcblxuICAgIGlmIChtb2R1bGUpIHtcbiAgICAgICAgbWtkaXJTeW5jID0gbW9kdWxlLm1rZGlyU3luY1xuICAgICAgICByZWFkZGlyU3luYyA9IG1vZHVsZS5yZWFkZGlyU3luY1xuICAgICAgICByZWFkRmlsZVN5bmMgPSBtb2R1bGUucmVhZEZpbGVTeW5jXG4gICAgICAgIHN0YXRTeW5jID0gbW9kdWxlLnN0YXRTeW5jXG4gICAgICAgIHdyaXRlRmlsZVN5bmMgPSBtb2R1bGUud3JpdGVGaWxlU3luY1xuICAgIH0gZWxzZSB7XG4gICAgICAgIG1rZGlyU3luYyA9IG51bGxcbiAgICAgICAgcmVhZGRpclN5bmMgPSBudWxsXG4gICAgICAgIHJlYWRGaWxlU3luYyA9IG51bGxcbiAgICAgICAgc3RhdFN5bmMgPSBudWxsXG4gICAgICAgIHdyaXRlRmlsZVN5bmMgPSBudWxsXG4gICAgfVxufSlcblxubGV0IG1rZGlyOiBudWxsIHwgdHlwZW9mIG1rZGlyVHlwZVxubGV0IHJlYWRkaXI6IG51bGwgfCB0eXBlb2YgcmVhZGRpclR5cGVcbmxldCByZWFkRmlsZTogbnVsbCB8IHR5cGVvZiByZWFkRmlsZVR5cGVcbmxldCBzdGF0OiBudWxsIHwgdHlwZW9mIHN0YXRUeXBlXG5sZXQgd3JpdGVGaWxlOiBudWxsIHwgdHlwZW9mIHdyaXRlRmlsZVR5cGVcbmNvbnN0IGZzUHJvbWlzZXNJbXBvcnRQcm9taXNlID1cbiAgICBvcHRpb25hbEltcG9ydDx0eXBlb2YgaW1wb3J0KCdmcy9wcm9taXNlcycpPignZnMvcHJvbWlzZXMnKVxudm9pZCBmc1Byb21pc2VzSW1wb3J0UHJvbWlzZS50aGVuKChtb2R1bGUpID0+IHtcbiAgICBpbXBvcnRzLmZzUHJvbWlzZXMgPSBtb2R1bGVcblxuICAgIGlmIChtb2R1bGUpIHtcbiAgICAgICAgbWtkaXIgPSBtb2R1bGUubWtkaXJcbiAgICAgICAgcmVhZGRpciA9IG1vZHVsZS5yZWFkZGlyXG4gICAgICAgIHJlYWRGaWxlID0gbW9kdWxlLnJlYWRGaWxlXG4gICAgICAgIHN0YXQgPSBtb2R1bGUuc3RhdFxuICAgICAgICB3cml0ZUZpbGUgPSBtb2R1bGUud3JpdGVGaWxlXG4gICAgfSBlbHNlIHtcbiAgICAgICAgbWtkaXIgPSBudWxsXG4gICAgICAgIHJlYWRkaXIgPSBudWxsXG4gICAgICAgIHJlYWRGaWxlID0gbnVsbFxuICAgICAgICBzdGF0ID0gbnVsbFxuICAgICAgICB3cml0ZUZpbGUgPSBudWxsXG4gICAgfVxufSlcblxubGV0IGJhc2VuYW1lOiBudWxsIHwgdHlwZW9mIGJhc2VuYW1lVHlwZVxubGV0IGpvaW46IG51bGwgfCB0eXBlb2Ygam9pblR5cGVcbmxldCByZXNvbHZlOiBudWxsIHwgdHlwZW9mIHJlc29sdmVUeXBlXG5jb25zdCBwYXRoSW1wb3J0UHJvbWlzZSA9IG9wdGlvbmFsSW1wb3J0PHR5cGVvZiBpbXBvcnQoJ3BhdGgnKT4oJ3BhdGgnKVxudm9pZCBwYXRoSW1wb3J0UHJvbWlzZS50aGVuKChtb2R1bGUpID0+IHtcbiAgICBpbXBvcnRzLnBhdGggPSBtb2R1bGVcblxuICAgIGlmIChtb2R1bGUpIHtcbiAgICAgICAgYmFzZW5hbWUgPSBtb2R1bGUuYmFzZW5hbWVcbiAgICAgICAgam9pbiA9IG1vZHVsZS5qb2luXG4gICAgICAgIHJlc29sdmUgPSBtb2R1bGUucmVzb2x2ZVxuICAgIH0gZWxzZSB7XG4gICAgICAgIGJhc2VuYW1lID0gbnVsbFxuICAgICAgICBqb2luID0gbnVsbFxuICAgICAgICByZXNvbHZlID0gbnVsbFxuICAgIH1cbn0pXG5cbmV4cG9ydCBjb25zdCBpbXBvcnRzUHJvbWlzZSA9IFByb21pc2UuYWxsKFtcbiAgICBmc0ltcG9ydFByb21pc2UsIGZzUHJvbWlzZXNJbXBvcnRQcm9taXNlLCBwYXRoSW1wb3J0UHJvbWlzZVxuXSlcblxuLyoqXG4gKiBDb3BpZXMgZ2l2ZW4gc291cmNlIGRpcmVjdG9yeSB2aWEgcGF0aCB0byBnaXZlbiB0YXJnZXQgZGlyZWN0b3J5IGxvY2F0aW9uXG4gKiB3aXRoIHNhbWUgdGFyZ2V0IG5hbWUgYXMgc291cmNlIGZpbGUgaGFzIG9yIGNvcHkgdG8gZ2l2ZW4gY29tcGxldGUgdGFyZ2V0XG4gKiBkaXJlY3RvcnkgcGF0aC5cbiAqIEBwYXJhbSBzb3VyY2VQYXRoIC0gUGF0aCB0byBkaXJlY3RvcnkgdG8gY29weS5cbiAqIEBwYXJhbSB0YXJnZXRQYXRoIC0gVGFyZ2V0IGRpcmVjdG9yeSBvciBjb21wbGV0ZSBkaXJlY3RvcnkgbG9jYXRpb24gdG8gY29weVxuICogaW4uXG4gKiBAcGFyYW0gY29udGVudHMgLSBJbmRpY2F0ZXMgd2hldGhlciB3ZSBvbmx5IHdhbnQgdG8gY29weSBjb250ZW50IG9mIHNvdXJjZVxuICogcGF0aCB3aXRob3V0IHJlY3JlYXRpbmcgdGhlIHNvdXJjZWZpbGUgaXRzZWxmIG9uIHRhcmdldCBsb2NhdGlvbi5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGludm9rZSBmb3IgZWFjaCB0cmF2ZXJzZWQgZmlsZS5cbiAqIEBwYXJhbSByZWFkT3B0aW9ucyAtIE9wdGlvbnMgdG8gdXNlIGZvciByZWFkaW5nIHNvdXJjZSBmaWxlLlxuICogQHBhcmFtIHdyaXRlT3B0aW9ucyAtIE9wdGlvbnMgdG8gdXNlIGZvciB3cml0aW5nIHRvIHRhcmdldCBmaWxlLlxuICogQHJldHVybnMgUHJvbWlzZSBob2xkaW5nIHRoZSBkZXRlcm1pbmVkIHRhcmdldCBkaXJlY3RvcnkgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvcHlEaXJlY3RvcnlSZWN1cnNpdmUgPSBhc3luYyAoXG4gICAgc291cmNlUGF0aDogc3RyaW5nLFxuICAgIHRhcmdldFBhdGg6IHN0cmluZyxcbiAgICBjb250ZW50cyA9IGZhbHNlLFxuICAgIGNhbGxiYWNrOiBBbnlGdW5jdGlvbiA9IE5PT1AsXG4gICAgcmVhZE9wdGlvbnMgPSB7ZW5jb2Rpbmc6IG51bGwsIGZsYWc6ICdyJ30sXG4gICAgd3JpdGVPcHRpb25zID0ge2VuY29kaW5nOiBERUZBVUxUX0VOQ09ESU5HLCBmbGFnOiAndycsIG1vZGU6IDBvNjY2fVxuKTogUHJvbWlzZTxzdHJpbmc+ID0+IHtcbiAgICBpZiAoIShiYXNlbmFtZSAmJiBqb2luICYmIG1rZGlyICYmIHJlc29sdmUpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBsb2FkIGZpbGVzeXN0ZW0gZnVuY3Rpb25zLicpXG5cbiAgICBzb3VyY2VQYXRoID0gcmVzb2x2ZShzb3VyY2VQYXRoKVxuICAgIGlmICghY29udGVudHMgJiYgYXdhaXQgaXNEaXJlY3RvcnkodGFyZ2V0UGF0aCkpXG4gICAgICAgIHRhcmdldFBhdGggPSByZXNvbHZlKHRhcmdldFBhdGgsIGJhc2VuYW1lKHNvdXJjZVBhdGgpKVxuXG4gICAgLy8gTk9URTogQ2hlY2sgaWYgZm9sZGVyIG5lZWRzIHRvIGJlIGNyZWF0ZWQgb3IgaW50ZWdyYXRlZC5cbiAgICB0cnkge1xuICAgICAgICBhd2FpdCBta2Rpcih0YXJnZXRQYXRoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmICgoZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uKS5jb2RlICE9PSAnRUVYSVNUJylcbiAgICAgICAgICAgIHRocm93IGVycm9yXG4gICAgfVxuXG4gICAgZm9yIChcbiAgICAgICAgY29uc3QgY3VycmVudFNvdXJjZUZpbGUgb2ZcbiAgICAgICAgYXdhaXQgd2Fsa0RpcmVjdG9yeVJlY3Vyc2l2ZWx5KHNvdXJjZVBhdGgsIGNhbGxiYWNrKVxuICAgICkge1xuICAgICAgICBjb25zdCBjdXJyZW50VGFyZ2V0UGF0aDogc3RyaW5nID0gam9pbihcbiAgICAgICAgICAgIHRhcmdldFBhdGgsIGN1cnJlbnRTb3VyY2VGaWxlLnBhdGguc3Vic3RyaW5nKHNvdXJjZVBhdGgubGVuZ3RoKVxuICAgICAgICApXG5cbiAgICAgICAgaWYgKGN1cnJlbnRTb3VyY2VGaWxlLnN0YXRzPy5pc0RpcmVjdG9yeSgpKVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBhd2FpdCBta2RpcihjdXJyZW50VGFyZ2V0UGF0aClcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgICAgICAgICAgaWYgKChlcnJvciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb24pLmNvZGUgIT09ICdFRVhJU1QnKVxuICAgICAgICAgICAgICAgICAgICB0aHJvdyBlcnJvclxuICAgICAgICAgICAgfVxuICAgICAgICBlbHNlXG4gICAgICAgICAgICBhd2FpdCBjb3B5RmlsZShcbiAgICAgICAgICAgICAgICBjdXJyZW50U291cmNlRmlsZS5wYXRoLFxuICAgICAgICAgICAgICAgIGN1cnJlbnRUYXJnZXRQYXRoLFxuICAgICAgICAgICAgICAgIHJlYWRPcHRpb25zLFxuICAgICAgICAgICAgICAgIHdyaXRlT3B0aW9uc1xuICAgICAgICAgICAgKVxuICAgIH1cblxuICAgIHJldHVybiB0YXJnZXRQYXRoXG59XG4vKipcbiAqIENvcGllcyBnaXZlbiBzb3VyY2UgZGlyZWN0b3J5IHZpYSBwYXRoIHRvIGdpdmVuIHRhcmdldCBkaXJlY3RvcnkgbG9jYXRpb25cbiAqIHdpdGggc2FtZSB0YXJnZXQgbmFtZSBhcyBzb3VyY2UgZmlsZSBoYXMgb3IgY29weSB0byBnaXZlbiBjb21wbGV0ZSB0YXJnZXRcbiAqIGRpcmVjdG9yeSBwYXRoLlxuICogQHBhcmFtIHNvdXJjZVBhdGggLSBQYXRoIHRvIGRpcmVjdG9yeSB0byBjb3B5LlxuICogQHBhcmFtIHRhcmdldFBhdGggLSBUYXJnZXQgZGlyZWN0b3J5IG9yIGNvbXBsZXRlIGRpcmVjdG9yeSBsb2NhdGlvbiB0byBjb3B5XG4gKiBpbi5cbiAqIEBwYXJhbSBjb250ZW50cyAtIEluZGljYXRlcyB3aGV0aGVyIHdlIG9ubHkgd2FudCB0byBjb3B5IGNvbnRlbnQgb2Ygc291cmNlXG4gKiBwYXRoIHdpdGhvdXQgcmVjcmVhdGluZyB0aGUgc291cmNlZmlsZSBpdHNlbGYgb24gdGFyZ2V0IGxvY2F0aW9uLlxuICogQHBhcmFtIGNhbGxiYWNrIC0gRnVuY3Rpb24gdG8gaW52b2tlIGZvciBlYWNoIHRyYXZlcnNlZCBmaWxlLlxuICogQHBhcmFtIHJlYWRPcHRpb25zIC0gT3B0aW9ucyB0byB1c2UgZm9yIHJlYWRpbmcgc291cmNlIGZpbGUuXG4gKiBAcGFyYW0gd3JpdGVPcHRpb25zIC0gT3B0aW9ucyB0byB1c2UgZm9yIHdyaXRpbmcgdG8gdGFyZ2V0IGZpbGUuXG4gKiBAcmV0dXJucyBEZXRlcm1pbmVkIHRhcmdldCBkaXJlY3RvcnkgcGF0aC5cbiAqL1xuZXhwb3J0IGNvbnN0IGNvcHlEaXJlY3RvcnlSZWN1cnNpdmVTeW5jID0gKFxuICAgIHNvdXJjZVBhdGg6IHN0cmluZyxcbiAgICB0YXJnZXRQYXRoOiBzdHJpbmcsXG4gICAgY29udGVudHMgPSBmYWxzZSxcbiAgICBjYWxsYmFjazogQW55RnVuY3Rpb24gPSBOT09QLFxuICAgIHJlYWRPcHRpb25zID0ge2VuY29kaW5nOiBudWxsLCBmbGFnOiAncid9LFxuICAgIHdyaXRlT3B0aW9ucyA9IHtlbmNvZGluZzogREVGQVVMVF9FTkNPRElORywgZmxhZzogJ3cnLCBtb2RlOiAwbzY2Nn1cbik6IHN0cmluZyA9PiB7XG4gICAgaWYgKCEoYmFzZW5hbWUgJiYgam9pbiAmJiBta2RpclN5bmMgJiYgcmVzb2x2ZSkpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGxvYWQgZmlsZXN5c3RlbSBmdW5jdGlvbnMuJylcblxuICAgIHNvdXJjZVBhdGggPSByZXNvbHZlKHNvdXJjZVBhdGgpXG4gICAgaWYgKCFjb250ZW50cyAmJiBpc0RpcmVjdG9yeVN5bmModGFyZ2V0UGF0aCkpXG4gICAgICAgIHRhcmdldFBhdGggPSByZXNvbHZlKHRhcmdldFBhdGgsIGJhc2VuYW1lKHNvdXJjZVBhdGgpKVxuXG4gICAgLy8gTk9URTogVHJ5L0NoZWNrIGlmIHRhcmdldCBmb2xkZXIgbmVlZHMgdG8gYmUgY3JlYXRlZC5cbiAgICB0cnkge1xuICAgICAgICBta2RpclN5bmModGFyZ2V0UGF0aClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoKGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbikuY29kZSAhPT0gJ0VFWElTVCcpXG4gICAgICAgICAgICB0aHJvdyBlcnJvclxuICAgIH1cblxuICAgIGZvciAoXG4gICAgICAgIGNvbnN0IGN1cnJlbnRTb3VyY2VGaWxlIG9mXG4gICAgICAgIHdhbGtEaXJlY3RvcnlSZWN1cnNpdmVseVN5bmMoc291cmNlUGF0aCwgY2FsbGJhY2spXG4gICAgKSB7XG4gICAgICAgIGNvbnN0IGN1cnJlbnRUYXJnZXRQYXRoOiBzdHJpbmcgPSBqb2luKFxuICAgICAgICAgICAgdGFyZ2V0UGF0aCwgY3VycmVudFNvdXJjZUZpbGUucGF0aC5zdWJzdHJpbmcoc291cmNlUGF0aC5sZW5ndGgpXG4gICAgICAgIClcbiAgICAgICAgaWYgKGN1cnJlbnRTb3VyY2VGaWxlLnN0YXRzPy5pc0RpcmVjdG9yeSgpKVxuICAgICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgICAgICBta2RpclN5bmMoY3VycmVudFRhcmdldFBhdGgpXG4gICAgICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgICAgIGlmICgoZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uKS5jb2RlICE9PSAnRUVYSVNUJylcbiAgICAgICAgICAgICAgICAgICAgdGhyb3cgZXJyb3JcbiAgICAgICAgICAgIH1cbiAgICAgICAgZWxzZVxuICAgICAgICAgICAgY29weUZpbGVTeW5jKFxuICAgICAgICAgICAgICAgIGN1cnJlbnRTb3VyY2VGaWxlLnBhdGgsXG4gICAgICAgICAgICAgICAgY3VycmVudFRhcmdldFBhdGgsXG4gICAgICAgICAgICAgICAgcmVhZE9wdGlvbnMsXG4gICAgICAgICAgICAgICAgd3JpdGVPcHRpb25zXG4gICAgICAgICAgICApXG4gICAgfVxuXG4gICAgcmV0dXJuIHRhcmdldFBhdGhcbn1cbi8qKlxuICogQ29waWVzIGdpdmVuIHNvdXJjZSBmaWxlIHZpYSBwYXRoIHRvIGdpdmVuIHRhcmdldCBkaXJlY3RvcnkgbG9jYXRpb24gd2l0aFxuICogc2FtZSB0YXJnZXQgbmFtZSBhcyBzb3VyY2UgZmlsZSBoYXMgb3IgY29weSB0byBnaXZlbiBjb21wbGV0ZSB0YXJnZXQgZmlsZVxuICogcGF0aC5cbiAqIEBwYXJhbSBzb3VyY2VQYXRoIC0gUGF0aCB0byBmaWxlIHRvIGNvcHkuXG4gKiBAcGFyYW0gdGFyZ2V0UGF0aCAtIFRhcmdldCBkaXJlY3Rvcnkgb3IgY29tcGxldGUgZmlsZSBsb2NhdGlvbiB0byBjb3B5IHRvLlxuICogQHBhcmFtIHJlYWRPcHRpb25zIC0gT3B0aW9ucyB0byB1c2UgZm9yIHJlYWRpbmcgc291cmNlIGZpbGUuXG4gKiBAcGFyYW0gd3JpdGVPcHRpb25zIC0gT3B0aW9ucyB0byB1c2UgZm9yIHdyaXRpbmcgdG8gdGFyZ2V0IGZpbGUuXG4gKiBAcmV0dXJucyBEZXRlcm1pbmVkIHRhcmdldCBmaWxlIHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBjb3B5RmlsZSA9IGFzeW5jIChcbiAgICBzb3VyY2VQYXRoOiBzdHJpbmcsXG4gICAgdGFyZ2V0UGF0aDogc3RyaW5nLFxuICAgIHJlYWRPcHRpb25zID0ge2VuY29kaW5nOiBudWxsLCBmbGFnOiAncid9LFxuICAgIHdyaXRlT3B0aW9ucyA9IHtlbmNvZGluZzogREVGQVVMVF9FTkNPRElORywgZmxhZzogJ3cnLCBtb2RlOiAwbzY2Nn1cbik6IFByb21pc2U8c3RyaW5nPiA9PiB7XG4gICAgaWYgKCEoYmFzZW5hbWUgJiYgcmVhZEZpbGUgJiYgcmVzb2x2ZSAmJiB3cml0ZUZpbGUpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBsb2FkIGZpbGVzeXN0ZW0gZnVuY3Rpb25zLicpXG5cbiAgICAvKlxuICAgICAgICBOT1RFOiBJZiB0YXJnZXQgcGF0aCByZWZlcmVuY2VzIGEgZGlyZWN0b3J5IGEgbmV3IGZpbGUgd2l0aCB0aGUgc2FtZVxuICAgICAgICBuYW1lIHdpbGwgYmUgY3JlYXRlZC5cbiAgICAqL1xuICAgIGlmIChhd2FpdCBpc0RpcmVjdG9yeSh0YXJnZXRQYXRoKSlcbiAgICAgICAgdGFyZ2V0UGF0aCA9IHJlc29sdmUodGFyZ2V0UGF0aCwgYmFzZW5hbWUoc291cmNlUGF0aCkpXG5cbiAgICBhd2FpdCB3cml0ZUZpbGUoXG4gICAgICAgIHRhcmdldFBhdGgsIGF3YWl0IHJlYWRGaWxlKHNvdXJjZVBhdGgsIHJlYWRPcHRpb25zKSwgd3JpdGVPcHRpb25zXG4gICAgKVxuXG4gICAgcmV0dXJuIHRhcmdldFBhdGhcbn1cbi8qKlxuICogQ29waWVzIGdpdmVuIHNvdXJjZSBmaWxlIHZpYSBwYXRoIHRvIGdpdmVuIHRhcmdldCBkaXJlY3RvcnkgbG9jYXRpb24gd2l0aFxuICogc2FtZSB0YXJnZXQgbmFtZSBhcyBzb3VyY2UgZmlsZSBoYXMgb3IgY29weSB0byBnaXZlbiBjb21wbGV0ZSB0YXJnZXQgZmlsZVxuICogcGF0aC5cbiAqIEBwYXJhbSBzb3VyY2VQYXRoIC0gUGF0aCB0byBmaWxlIHRvIGNvcHkuXG4gKiBAcGFyYW0gdGFyZ2V0UGF0aCAtIFRhcmdldCBkaXJlY3Rvcnkgb3IgY29tcGxldGUgZmlsZSBsb2NhdGlvbiB0byBjb3B5IHRvLlxuICogQHBhcmFtIHJlYWRPcHRpb25zIC0gT3B0aW9ucyB0byB1c2UgZm9yIHJlYWRpbmcgc291cmNlIGZpbGUuXG4gKiBAcGFyYW0gd3JpdGVPcHRpb25zIC0gT3B0aW9ucyB0byB1c2UgZm9yIHdyaXRpbmcgdG8gdGFyZ2V0IGZpbGUuXG4gKiBAcmV0dXJucyBEZXRlcm1pbmVkIHRhcmdldCBmaWxlIHBhdGguXG4gKi9cbmV4cG9ydCBjb25zdCBjb3B5RmlsZVN5bmMgPSAoXG4gICAgc291cmNlUGF0aDogc3RyaW5nLFxuICAgIHRhcmdldFBhdGg6IHN0cmluZyxcbiAgICByZWFkT3B0aW9ucyA9IHtlbmNvZGluZzogbnVsbCwgZmxhZzogJ3InfSxcbiAgICB3cml0ZU9wdGlvbnMgPSB7ZW5jb2Rpbmc6IERFRkFVTFRfRU5DT0RJTkcsIGZsYWc6ICd3JywgbW9kZTogMG82NjZ9XG4pOiBzdHJpbmcgPT4ge1xuICAgIGlmICghKGJhc2VuYW1lICYmIHJlYWRGaWxlU3luYyAmJiByZXNvbHZlICYmIHdyaXRlRmlsZVN5bmMpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBsb2FkIGZpbGVzeXN0ZW0gZnVuY3Rpb25zLicpXG5cbiAgICAvKlxuICAgICAgICBOT1RFOiBJZiB0YXJnZXQgcGF0aCByZWZlcmVuY2VzIGEgZGlyZWN0b3J5IGEgbmV3IGZpbGUgd2l0aCB0aGUgc2FtZVxuICAgICAgICBuYW1lIHdpbGwgYmUgY3JlYXRlZC5cbiAgICAqL1xuICAgIGlmIChpc0RpcmVjdG9yeVN5bmModGFyZ2V0UGF0aCkpXG4gICAgICAgIHRhcmdldFBhdGggPSByZXNvbHZlKHRhcmdldFBhdGgsIGJhc2VuYW1lKHNvdXJjZVBhdGgpKVxuXG4gICAgd3JpdGVGaWxlU3luYyhcbiAgICAgICAgdGFyZ2V0UGF0aCwgcmVhZEZpbGVTeW5jKHNvdXJjZVBhdGgsIHJlYWRPcHRpb25zKSwgd3JpdGVPcHRpb25zXG4gICAgKVxuXG4gICAgcmV0dXJuIHRhcmdldFBhdGhcbn1cbi8qKlxuICogQ2hlY2tzIGlmIGdpdmVuIHBhdGggcG9pbnRzIHRvIGEgdmFsaWQgZGlyZWN0b3J5LlxuICogQHBhcmFtIGZpbGVQYXRoIC0gUGF0aCB0byBkaXJlY3RvcnkuXG4gKiBAcmV0dXJucyBBIHByb21pc2UgaG9sZGluZyBhIGJvb2xlYW4gd2hpY2ggaW5kaWNhdGVzIGRpcmVjdG9yeSBleGlzdGVuY2UuXG4gKi9cbmV4cG9ydCBjb25zdCBpc0RpcmVjdG9yeSA9IGFzeW5jIChmaWxlUGF0aDogc3RyaW5nKTogUHJvbWlzZTxib29sZWFuPiA9PiB7XG4gICAgaWYgKCFzdGF0KVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBsb2FkIGZpbGVzeXN0ZW0gZnVuY3Rpb25zLicpXG5cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gKGF3YWl0IHN0YXQoZmlsZVBhdGgpKS5pc0RpcmVjdG9yeSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVycm9yLCAnY29kZScpICYmXG4gICAgICAgICAgICBbJ0VOT0VOVCcsICdFTk9URElSJ10uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgKGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbikuY29kZSBhcyBzdHJpbmdcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG5cbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG59XG4vKipcbiAqIENoZWNrcyBpZiBnaXZlbiBwYXRoIHBvaW50cyB0byBhIHZhbGlkIGRpcmVjdG9yeS5cbiAqIEBwYXJhbSBmaWxlUGF0aCAtIFBhdGggdG8gZGlyZWN0b3J5LlxuICogQHJldHVybnMgQSBib29sZWFuIHdoaWNoIGluZGljYXRlcyBkaXJlY3RvcnkgZXhpc3RlbmNlLlxuICovXG5leHBvcnQgY29uc3QgaXNEaXJlY3RvcnlTeW5jID0gKGZpbGVQYXRoOiBzdHJpbmcpOiBib29sZWFuID0+IHtcbiAgICBpZiAoIXN0YXRTeW5jKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBsb2FkIGZpbGVzeXN0ZW0gZnVuY3Rpb25zLicpXG5cbiAgICB0cnkge1xuICAgICAgICByZXR1cm4gc3RhdFN5bmMoZmlsZVBhdGgpLmlzRGlyZWN0b3J5KClcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICBpZiAoXG4gICAgICAgICAgICBPYmplY3QucHJvdG90eXBlLmhhc093blByb3BlcnR5LmNhbGwoZXJyb3IsICdjb2RlJykgJiZcbiAgICAgICAgICAgIFsnRU5PRU5UJywgJ0VOT1RESVInXS5pbmNsdWRlcyhcbiAgICAgICAgICAgICAgICAoZXJyb3IgYXMgTm9kZUpTLkVycm5vRXhjZXB0aW9uKS5jb2RlIGFzIHN0cmluZ1xuICAgICAgICAgICAgKVxuICAgICAgICApXG4gICAgICAgICAgICByZXR1cm4gZmFsc2VcblxuICAgICAgICB0aHJvdyBlcnJvclxuICAgIH1cbn1cbi8qKlxuICogQ2hlY2tzIGlmIGdpdmVuIHBhdGggcG9pbnRzIHRvIGEgdmFsaWQgZmlsZS5cbiAqIEBwYXJhbSBmaWxlUGF0aCAtIFBhdGggdG8gZGlyZWN0b3J5LlxuICogQHJldHVybnMgQSBwcm9taXNlIGhvbGRpbmcgYSBib29sZWFuIHdoaWNoIGluZGljYXRlcyBkaXJlY3RvcnkgZXhpc3RlbmNlLlxuICovXG5leHBvcnQgY29uc3QgaXNGaWxlID0gYXN5bmMgKGZpbGVQYXRoOiBzdHJpbmcpOiBQcm9taXNlPGJvb2xlYW4+ID0+IHtcbiAgICBpZiAoIXN0YXQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQ291bGQgbm90IGxvYWQgZmlsZXN5c3RlbSBmdW5jdGlvbnMuJylcblxuICAgIHRyeSB7XG4gICAgICAgIHJldHVybiAoYXdhaXQgc3RhdChmaWxlUGF0aCkpLmlzRmlsZSgpXG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgaWYgKFxuICAgICAgICAgICAgT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKGVycm9yLCAnY29kZScpICYmXG4gICAgICAgICAgICBbJ0VOT0VOVCcsICdFTk9URElSJ10uaW5jbHVkZXMoXG4gICAgICAgICAgICAgICAgKGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvbikuY29kZSBhcyBzdHJpbmdcbiAgICAgICAgICAgIClcbiAgICAgICAgKVxuICAgICAgICAgICAgcmV0dXJuIGZhbHNlXG5cbiAgICAgICAgdGhyb3cgZXJyb3JcbiAgICB9XG59XG4vKipcbiAqIENoZWNrcyBpZiBnaXZlbiBwYXRoIHBvaW50cyB0byBhIHZhbGlkIGZpbGUuXG4gKiBAcGFyYW0gZmlsZVBhdGggLSBQYXRoIHRvIGZpbGUuXG4gKiBAcmV0dXJucyBBIGJvb2xlYW4gd2hpY2ggaW5kaWNhdGVzIGZpbGUgZXhpc3RlbmNlLlxuICovXG5leHBvcnQgY29uc3QgaXNGaWxlU3luYyA9IChmaWxlUGF0aDogc3RyaW5nKTogYm9vbGVhbiA9PiB7XG4gICAgaWYgKCFzdGF0U3luYylcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgbG9hZCBmaWxlc3lzdGVtIGZ1bmN0aW9ucy4nKVxuXG4gICAgdHJ5IHtcbiAgICAgICAgcmV0dXJuIHN0YXRTeW5jKGZpbGVQYXRoKS5pc0ZpbGUoKVxuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAgIGlmIChcbiAgICAgICAgICAgIE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChlcnJvciwgJ2NvZGUnKSAmJlxuICAgICAgICAgICAgWydFTk9FTlQnLCAnRU5PVERJUiddLmluY2x1ZGVzKFxuICAgICAgICAgICAgICAgIChlcnJvciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb24pLmNvZGUgYXMgc3RyaW5nXG4gICAgICAgICAgICApXG4gICAgICAgIClcbiAgICAgICAgICAgIHJldHVybiBmYWxzZVxuXG4gICAgICAgIHRocm93IGVycm9yXG4gICAgfVxufVxuLyoqXG4gKiBJdGVyYXRlcyB0aHJvdWdoIGdpdmVuIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgcmVjdXJzaXZlbHkgYW5kIGNhbGxzIGdpdmVuXG4gKiBjYWxsYmFjayBmb3IgZWFjaCBmb3VuZCBmaWxlLiBDYWxsYmFjayBnZXRzIGZpbGUgcGF0aCBhbmQgY29ycmVzcG9uZGluZyBzdGF0XG4gKiBvYmplY3QgYXMgYXJndW1lbnQuXG4gKiBAcGFyYW0gZGlyZWN0b3J5UGF0aCAtIFBhdGggdG8gZGlyZWN0b3J5IHN0cnVjdHVyZSB0byB0cmF2ZXJzZS5cbiAqIEBwYXJhbSBjYWxsYmFjayAtIEZ1bmN0aW9uIHRvIGludm9rZSBmb3IgZWFjaCB0cmF2ZXJzZWQgZmlsZSBhbmQgcG90ZW50aWFsbHlcbiAqIG1hbmlwdWxhdGUgZnVydGhlciB0cmF2ZXJzaW5nIGluIGFscGhhYmV0aWNhbCBzb3J0ZWQgb3JkZXIuXG4gKiBJZiBpdCByZXR1cm5zIFwibnVsbFwiIG9yIGEgcHJvbWlzZSByZXNvbHZpbmcgdG8gXCJudWxsXCIsIG5vIGZ1cnRoZXIgZmlsZXNcbiAqIHdpbGwgYmUgdHJhdmVyc2VkIGFmdGVyd2FyZC5cbiAqIElmIGl0IGhhbmRsZXMgYSBkaXJlY3RvcnkgYW5kIHJldHVybnMgXCJmYWxzZVwiIG9yIGEgcHJvbWlzZSByZXNvbHZpbmcgdG9cbiAqIFwiZmFsc2VcIiBubyB0cmF2ZXJzaW5nIGludG8gdGhhdCBkaXJlY3Rvcnkgd2lsbCBvY2N1ci5cbiAqIEBwYXJhbSBvcHRpb25zIC0gT3B0aW9ucyB0byB1c2UgZm9yIG5lc3RlZCBcInJlYWRkaXJcIiBjYWxscy5cbiAqIEByZXR1cm5zIEEgcHJvbWlzZSBob2xkaW5nIHRoZSBkZXRlcm1pbmVkIGZpbGVzLlxuICovXG5leHBvcnQgY29uc3Qgd2Fsa0RpcmVjdG9yeVJlY3Vyc2l2ZWx5ID0gYXN5bmMgKFxuICAgIGRpcmVjdG9yeVBhdGg6IHN0cmluZyxcbiAgICBjYWxsYmFjazogbnVsbCB8ICgoZmlsZTogRmlsZSkgPT4gRmlsZVRyYXZlcnNlUmVzdWx0KSA9IG51bGwsXG4gICAgb3B0aW9uczogKFxuICAgICAgICBFbmNvZGluZyB8XG4gICAgICAgIChPYmplY3RFbmNvZGluZ09wdGlvbnMgJiB7d2l0aEZpbGVUeXBlcz86IGZhbHNlOyByZWN1cnNpdmU/OiBib29sZWFufSlcbiAgICApID0gREVGQVVMVF9FTkNPRElOR1xuKTogUHJvbWlzZTxBcnJheTxGaWxlPj4gPT4ge1xuICAgIGlmICghKHJlYWRkaXIgJiYgcmVzb2x2ZSAmJiBzdGF0KSlcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdDb3VsZCBub3QgbG9hZCBmaWxlc3lzdGVtIGZ1bmN0aW9ucy4nKVxuXG4gICAgY29uc3QgZmlsZXM6IEFycmF5PEZpbGU+ID0gW11cbiAgICBmb3IgKGNvbnN0IGRpcmVjdG9yeUVudHJ5IG9mIGF3YWl0IHJlYWRkaXIoXG4gICAgICAgIGRpcmVjdG9yeVBhdGgsXG4gICAgICAgICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ3N0cmluZycgP1xuICAgICAgICAgICAge2VuY29kaW5nOiBvcHRpb25zLCB3aXRoRmlsZVR5cGVzOiB0cnVlfSA6XG4gICAgICAgICAgICB7Li4ub3B0aW9ucywgd2l0aEZpbGVUeXBlczogdHJ1ZX1cbiAgICAgICAgKVxuICAgICkpIHtcbiAgICAgICAgY29uc3QgZmlsZVBhdGg6IHN0cmluZyA9IHJlc29sdmUoXG4gICAgICAgICAgICBkaXJlY3RvcnlQYXRoLCBkaXJlY3RvcnlFbnRyeS5uYW1lXG4gICAgICAgIClcbiAgICAgICAgY29uc3QgZmlsZTogRmlsZSA9IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICBkaXJlY3RvcnlFbnRyeSxcbiAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgICAgbmFtZTogZGlyZWN0b3J5RW50cnkubmFtZSxcbiAgICAgICAgICAgIHBhdGg6IGZpbGVQYXRoLFxuICAgICAgICAgICAgc3RhdHM6IG51bGxcbiAgICAgICAgfVxuXG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgICBmaWxlLnN0YXRzID0gYXdhaXQgc3RhdChmaWxlUGF0aClcbiAgICAgICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgICAgICAgIGZpbGUuZXJyb3IgPSBlcnJvciBhcyBOb2RlSlMuRXJybm9FeGNlcHRpb25cbiAgICAgICAgfVxuXG4gICAgICAgIGZpbGVzLnB1c2goZmlsZSlcbiAgICB9XG5cbiAgICBpZiAoY2FsbGJhY2spXG4gICAgICAgIC8qXG4gICAgICAgICAgICBOT1RFOiBEaXJlY3RvcmllcyBhbmQgaGF2ZSB0byBiZSBpdGVyYXRlZCBmaXJzdCB0byBiZSBhYmxlIHRvXG4gICAgICAgICAgICBhdm9pZCBkZWVwZXIgdW53YW50ZWQgdHJhdmVyc2luZy5cbiAgICAgICAgKi9cbiAgICAgICAgZmlsZXMuc29ydCgoZmlyc3RGaWxlOiBGaWxlLCBzZWNvbmRGaWxlOiBGaWxlKTogLTEgfCAwfDEgPT4ge1xuICAgICAgICAgICAgaWYgKGZpcnN0RmlsZS5zdGF0cz8uaXNEaXJlY3RvcnkoKSkge1xuICAgICAgICAgICAgICAgIGlmIChzZWNvbmRGaWxlLnN0YXRzPy5pc0RpcmVjdG9yeSgpKVxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gMFxuXG4gICAgICAgICAgICAgICAgcmV0dXJuIC0xXG4gICAgICAgICAgICB9XG5cbiAgICAgICAgICAgIGlmIChzZWNvbmRGaWxlLnN0YXRzPy5pc0RpcmVjdG9yeSgpKVxuICAgICAgICAgICAgICAgIHJldHVybiAxXG5cbiAgICAgICAgICAgIHJldHVybiAwXG4gICAgICAgIH0pXG5cbiAgICBsZXQgZmluYWxGaWxlczogQXJyYXk8RmlsZT4gPSBbXVxuICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICBmaW5hbEZpbGVzLnB1c2goZmlsZSlcblxuICAgICAgICBsZXQgcmVzdWx0OiBGaWxlVHJhdmVyc2VSZXN1bHQgPVxuICAgICAgICAgICAgY2FsbGJhY2sgPyBjYWxsYmFjayhmaWxlKSA6IHVuZGVmaW5lZFxuXG4gICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpXG4gICAgICAgICAgICBicmVha1xuXG4gICAgICAgIGlmICh0eXBlb2YgcmVzdWx0ID09PSAnb2JqZWN0JyAmJiAndGhlbicgaW4gcmVzdWx0KVxuICAgICAgICAgICAgcmVzdWx0ID0gYXdhaXQgcmVzdWx0XG5cbiAgICAgICAgaWYgKHJlc3VsdCA9PT0gbnVsbClcbiAgICAgICAgICAgIGJyZWFrXG5cbiAgICAgICAgaWYgKHJlc3VsdCAhPT0gZmFsc2UgJiYgZmlsZS5zdGF0cz8uaXNEaXJlY3RvcnkoKSlcbiAgICAgICAgICAgIGZpbmFsRmlsZXMgPSBmaW5hbEZpbGVzLmNvbmNhdChcbiAgICAgICAgICAgICAgICBhd2FpdCB3YWxrRGlyZWN0b3J5UmVjdXJzaXZlbHkoZmlsZS5wYXRoLCBjYWxsYmFjaywgb3B0aW9ucylcbiAgICAgICAgICAgIClcbiAgICB9XG5cbiAgICByZXR1cm4gZmluYWxGaWxlc1xufVxuLyoqXG4gKiBJdGVyYXRlcyB0aHJvdWdoIGdpdmVuIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgcmVjdXJzaXZlbHkgYW5kIGNhbGxzIGdpdmVuXG4gKiBjYWxsYmFjayBmb3IgZWFjaCBmb3VuZCBmaWxlLiBDYWxsYmFjayBnZXRzIGZpbGUgcGF0aCBhbmQgY29ycmVzcG9uZGluZ1xuICogc3RhdHMgb2JqZWN0IGFzIGFyZ3VtZW50LlxuICogQHBhcmFtIGRpcmVjdG9yeVBhdGggLSBQYXRoIHRvIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgdG8gdHJhdmVyc2UuXG4gKiBAcGFyYW0gY2FsbGJhY2sgLSBGdW5jdGlvbiB0byBpbnZva2UgZm9yIGVhY2ggdHJhdmVyc2VkIGZpbGUuXG4gKiBAcGFyYW0gb3B0aW9ucyAtIE9wdGlvbnMgdG8gdXNlIGZvciBuZXN0ZWQgXCJyZWFkZGlyXCIgY2FsbHMuXG4gKiBAcmV0dXJucyBEZXRlcm1pbmVkIGxpc3QgaWYgYWxsIGZpbGVzLlxuICovXG5leHBvcnQgY29uc3Qgd2Fsa0RpcmVjdG9yeVJlY3Vyc2l2ZWx5U3luYyA9IChcbiAgICBkaXJlY3RvcnlQYXRoOiBzdHJpbmcsXG4gICAgY2FsbGJhY2s6IEFueUZ1bmN0aW9uIHwgbnVsbCA9IE5PT1AsXG4gICAgb3B0aW9uczogKFxuICAgICAgICBFbmNvZGluZyB8XG4gICAgICAgIChPYmplY3RFbmNvZGluZ09wdGlvbnMgJiB7d2l0aEZpbGVUeXBlcz86IGZhbHNlOyByZWN1cnNpdmU/OiBib29sZWFufSlcbiAgICApID0gREVGQVVMVF9FTkNPRElOR1xuKTogQXJyYXk8RmlsZT4gPT4ge1xuICAgIGlmICghKHJlYWRkaXJTeW5jICYmIHJlc29sdmUgJiYgc3RhdFN5bmMpKVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0NvdWxkIG5vdCBsb2FkIGZpbGVzeXN0ZW0gZnVuY3Rpb25zLicpXG5cbiAgICBjb25zdCBmaWxlczogQXJyYXk8RmlsZT4gPSBbXVxuXG4gICAgZm9yIChjb25zdCBkaXJlY3RvcnlFbnRyeSBvZiByZWFkZGlyU3luYyhcbiAgICAgICAgZGlyZWN0b3J5UGF0aCxcbiAgICAgICAgdHlwZW9mIG9wdGlvbnMgPT09ICdzdHJpbmcnID9cbiAgICAgICAgICAgIHtlbmNvZGluZzogb3B0aW9ucywgd2l0aEZpbGVUeXBlczogdHJ1ZX0gOlxuICAgICAgICAgICAgey4uLm9wdGlvbnMsIHdpdGhGaWxlVHlwZXM6IHRydWV9XG4gICAgKSkge1xuICAgICAgICBjb25zdCBmaWxlUGF0aDogc3RyaW5nID1cbiAgICAgICAgICAgIHJlc29sdmUoZGlyZWN0b3J5UGF0aCwgZGlyZWN0b3J5RW50cnkubmFtZSlcbiAgICAgICAgY29uc3QgZmlsZTogRmlsZSA9IHtcbiAgICAgICAgICAgIGRpcmVjdG9yeVBhdGgsXG4gICAgICAgICAgICBkaXJlY3RvcnlFbnRyeSxcbiAgICAgICAgICAgIGVycm9yOiBudWxsLFxuICAgICAgICAgICAgbmFtZTogZGlyZWN0b3J5RW50cnkubmFtZSxcbiAgICAgICAgICAgIHBhdGg6IGZpbGVQYXRoLFxuICAgICAgICAgICAgc3RhdHM6IG51bGxcbiAgICAgICAgfVxuICAgICAgICB0cnkge1xuICAgICAgICAgICAgZmlsZS5zdGF0cyA9IHN0YXRTeW5jKGZpbGVQYXRoKVxuICAgICAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgICAgICAgZmlsZS5lcnJvciA9IGVycm9yIGFzIE5vZGVKUy5FcnJub0V4Y2VwdGlvblxuICAgICAgICB9XG4gICAgICAgIGZpbGVzLnB1c2goZmlsZSlcbiAgICB9XG5cbiAgICBsZXQgZmluYWxGaWxlczogQXJyYXk8RmlsZT4gPSBbXVxuXG4gICAgaWYgKGNhbGxiYWNrKSB7XG4gICAgICAgIC8qXG4gICAgICAgICAgICBOT1RFOiBEaXJlY3RvcmllcyBoYXZlIHRvIGJlIGl0ZXJhdGVkIGZpcnN0IHRvIHBvdGVudGlhbGx5XG4gICAgICAgICAgICBhdm9pZCBkZWVwZXIgaXRlcmF0aW9ucy5cbiAgICAgICAgKi9cbiAgICAgICAgZmlsZXMuc29ydCgoZmlyc3RGaWxlOiBGaWxlLCBzZWNvbmRGaWxlOiBGaWxlKTogbnVtYmVyID0+IHtcbiAgICAgICAgICAgIGlmIChmaXJzdEZpbGUuc3RhdHM/LmlzRGlyZWN0b3J5KCkpIHtcbiAgICAgICAgICAgICAgICBpZiAoc2Vjb25kRmlsZS5zdGF0cz8uaXNEaXJlY3RvcnkoKSlcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDBcblxuICAgICAgICAgICAgICAgIHJldHVybiAtMVxuICAgICAgICAgICAgfVxuXG4gICAgICAgICAgICBpZiAoc2Vjb25kRmlsZS5zdGF0cz8uaXNEaXJlY3RvcnkoKSlcbiAgICAgICAgICAgICAgICByZXR1cm4gMVxuXG4gICAgICAgICAgICByZXR1cm4gMFxuICAgICAgICB9KVxuXG4gICAgICAgIGZvciAoY29uc3QgZmlsZSBvZiBmaWxlcykge1xuICAgICAgICAgICAgZmluYWxGaWxlcy5wdXNoKGZpbGUpXG5cbiAgICAgICAgICAgIGNvbnN0IHJlc3VsdDogdW5rbm93biA9IGNhbGxiYWNrKGZpbGUpXG5cbiAgICAgICAgICAgIGlmIChyZXN1bHQgPT09IG51bGwpXG4gICAgICAgICAgICAgICAgYnJlYWtcblxuICAgICAgICAgICAgaWYgKHJlc3VsdCAhPT0gZmFsc2UgJiYgZmlsZS5zdGF0cz8uaXNEaXJlY3RvcnkoKSlcbiAgICAgICAgICAgICAgICBmaW5hbEZpbGVzID0gZmluYWxGaWxlcy5jb25jYXQoXG4gICAgICAgICAgICAgICAgICAgIHdhbGtEaXJlY3RvcnlSZWN1cnNpdmVseVN5bmMoZmlsZS5wYXRoLCBjYWxsYmFjaywgb3B0aW9ucylcbiAgICAgICAgICAgICAgICApXG4gICAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gZmluYWxGaWxlc1xufVxuIl0sIm1hcHBpbmdzIjoiQUFBQTtBQUNBO0FBQ0E7QUFDQSxZQUFZOztBQUNaO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFiQTtBQUFBO0FBcUNBLFNBQVEsZ0JBQWdCO0FBQ3hCLFNBQVEsSUFBSTtBQUNaLFNBQVEsY0FBYztBQUV0QixPQUFPLE1BQU0sT0FJWixHQUFHO0VBQ0EsRUFBRSxFQUFFLElBQUk7RUFDUixVQUFVLEVBQUUsSUFBSTtFQUNoQixJQUFJLEVBQUU7QUFDVixDQUFDO0FBRUQsSUFBSSxTQUFzQztBQUMxQyxJQUFJLFdBQTBDO0FBQzlDLElBQUksWUFBNEM7QUFDaEQsSUFBSSxRQUFvQztBQUN4QyxJQUFJLGFBQThDO0FBQ2xELE1BQU0sZUFBZSxHQUFHLGNBQWMsQ0FBc0IsSUFBSSxDQUFDO0FBQ2pFLEtBQUssZUFBZSxDQUFDLElBQUksQ0FBRSxNQUFNLElBQUs7RUFDbEMsT0FBTyxDQUFDLEVBQUUsR0FBRyxNQUFNO0VBRW5CLElBQUksTUFBTSxFQUFFO0lBQ1IsU0FBUyxHQUFHLE1BQU0sQ0FBQyxTQUFTO0lBQzVCLFdBQVcsR0FBRyxNQUFNLENBQUMsV0FBVztJQUNoQyxZQUFZLEdBQUcsTUFBTSxDQUFDLFlBQVk7SUFDbEMsUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRO0lBQzFCLGFBQWEsR0FBRyxNQUFNLENBQUMsYUFBYTtFQUN4QyxDQUFDLE1BQU07SUFDSCxTQUFTLEdBQUcsSUFBSTtJQUNoQixXQUFXLEdBQUcsSUFBSTtJQUNsQixZQUFZLEdBQUcsSUFBSTtJQUNuQixRQUFRLEdBQUcsSUFBSTtJQUNmLGFBQWEsR0FBRyxJQUFJO0VBQ3hCO0FBQ0osQ0FBQyxDQUFDO0FBRUYsSUFBSSxLQUE4QjtBQUNsQyxJQUFJLE9BQWtDO0FBQ3RDLElBQUksUUFBb0M7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