oxygen-cli 1.25.0 → 1.26.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (264) hide show
  1. package/CHANGELOG.md +6 -0
  2. package/build/core/OxygenCore.js +266 -37
  3. package/build/core/OxygenEvents.js +11 -1
  4. package/build/core/OxygenModule.js +14 -1
  5. package/build/core/OxygenService.js +12 -1
  6. package/build/core/OxygenSubModule.js +10 -1
  7. package/build/core/WebDriverModule.js +30 -1
  8. package/build/core/utils.js +17 -1
  9. package/build/errors/HookError.js +7 -1
  10. package/build/errors/ModuleError.js +7 -1
  11. package/build/errors/ModuleUnavailableError.js +3 -1
  12. package/build/errors/OxygenError.js +33 -1
  13. package/build/errors/ScriptNotFound.js +7 -1
  14. package/build/errors/helper.js +77 -45
  15. package/build/index.js +18 -6
  16. package/build/lib/cli-util.js +90 -28
  17. package/build/lib/cli.js +23 -1
  18. package/build/lib/debugger.js +144 -1
  19. package/build/lib/img-merge.js +15 -1
  20. package/build/lib/launcher.js +28 -1
  21. package/build/lib/moduleRequire.js +4 -1
  22. package/build/lib/param-manager.js +28 -1
  23. package/build/lib/param-reader-csv.js +15 -1
  24. package/build/lib/param-reader-excel.js +14 -1
  25. package/build/lib/param-reader-json.js +10 -1
  26. package/build/lib/util.js +58 -3
  27. package/build/model/case-result.js +4 -2
  28. package/build/model/failure.js +2 -1
  29. package/build/model/status.js +2 -1
  30. package/build/model/step-result.js +2 -1
  31. package/build/model/suite-result.js +2 -1
  32. package/build/model/test-result.js +2 -1
  33. package/build/model/testcase.js +2 -1
  34. package/build/model/testsuite.js +2 -1
  35. package/build/ox_modules/index.js +33 -13
  36. package/build/ox_modules/module-assert.js +24 -8
  37. package/build/ox_modules/module-date.js +8 -3
  38. package/build/ox_modules/module-db.js +28 -7
  39. package/build/ox_modules/module-email.js +36 -10
  40. package/build/ox_modules/module-eyes.js +46 -5
  41. package/build/ox_modules/module-http.js +102 -41
  42. package/build/ox_modules/module-log.js +22 -5
  43. package/build/ox_modules/module-mailinator.js +32 -10
  44. package/build/ox_modules/module-mob/commands/alertAccept.js +2 -1
  45. package/build/ox_modules/module-mob/commands/alertDismiss.js +2 -1
  46. package/build/ox_modules/module-mob/commands/assertAlert.js +6 -1
  47. package/build/ox_modules/module-mob/commands/assertText.js +3 -1
  48. package/build/ox_modules/module-mob/commands/assertTitle.js +4 -1
  49. package/build/ox_modules/module-mob/commands/assertValue.js +15 -9
  50. package/build/ox_modules/module-mob/commands/back.js +2 -1
  51. package/build/ox_modules/module-mob/commands/clear.js +4 -1
  52. package/build/ox_modules/module-mob/commands/click.js +4 -3
  53. package/build/ox_modules/module-mob/commands/clickHidden.js +9 -3
  54. package/build/ox_modules/module-mob/commands/clickLong.js +2 -1
  55. package/build/ox_modules/module-mob/commands/clickMultipleTimes.js +4 -1
  56. package/build/ox_modules/module-mob/commands/closeApp.js +2 -1
  57. package/build/ox_modules/module-mob/commands/debug.js +2 -2
  58. package/build/ox_modules/module-mob/commands/dragAndDrop.js +2 -1
  59. package/build/ox_modules/module-mob/commands/enableNetwork.js +12 -4
  60. package/build/ox_modules/module-mob/commands/execute.js +2 -1
  61. package/build/ox_modules/module-mob/commands/findElement.js +3 -1
  62. package/build/ox_modules/module-mob/commands/findElements.js +4 -1
  63. package/build/ox_modules/module-mob/commands/getAlertText.js +2 -1
  64. package/build/ox_modules/module-mob/commands/getAppiumLogs.js +2 -1
  65. package/build/ox_modules/module-mob/commands/getBrowserLogs.js +10 -1
  66. package/build/ox_modules/module-mob/commands/getCurrentActivity.js +2 -1
  67. package/build/ox_modules/module-mob/commands/getCurrentPackage.js +2 -1
  68. package/build/ox_modules/module-mob/commands/getDeviceLogs.js +9 -1
  69. package/build/ox_modules/module-mob/commands/getDeviceTime.js +2 -1
  70. package/build/ox_modules/module-mob/commands/getLocation.js +2 -1
  71. package/build/ox_modules/module-mob/commands/getSource.js +2 -1
  72. package/build/ox_modules/module-mob/commands/getText.js +4 -1
  73. package/build/ox_modules/module-mob/commands/getTitle.js +2 -1
  74. package/build/ox_modules/module-mob/commands/getUrl.js +2 -1
  75. package/build/ox_modules/module-mob/commands/getValue.js +9 -5
  76. package/build/ox_modules/module-mob/commands/getWindowHandles.js +2 -1
  77. package/build/ox_modules/module-mob/commands/hideKeyboard.js +2 -1
  78. package/build/ox_modules/module-mob/commands/index.js +94 -19
  79. package/build/ox_modules/module-mob/commands/installApp.js +2 -1
  80. package/build/ox_modules/module-mob/commands/isAppInstalled.js +2 -1
  81. package/build/ox_modules/module-mob/commands/isCheckable.js +2 -1
  82. package/build/ox_modules/module-mob/commands/isChecked.js +2 -1
  83. package/build/ox_modules/module-mob/commands/isClickable.js +2 -1
  84. package/build/ox_modules/module-mob/commands/isExist.js +3 -1
  85. package/build/ox_modules/module-mob/commands/isSelected.js +2 -1
  86. package/build/ox_modules/module-mob/commands/isVisible.js +3 -1
  87. package/build/ox_modules/module-mob/commands/isWebViewContext.js +2 -1
  88. package/build/ox_modules/module-mob/commands/launchApp.js +2 -1
  89. package/build/ox_modules/module-mob/commands/longPressKeyCode.js +2 -1
  90. package/build/ox_modules/module-mob/commands/open.js +3 -1
  91. package/build/ox_modules/module-mob/commands/pause.js +2 -1
  92. package/build/ox_modules/module-mob/commands/removeApp.js +2 -1
  93. package/build/ox_modules/module-mob/commands/resetApp.js +2 -1
  94. package/build/ox_modules/module-mob/commands/scrollIntoElement.js +6 -1
  95. package/build/ox_modules/module-mob/commands/scrollIntoView.js +2 -1
  96. package/build/ox_modules/module-mob/commands/select.js +4 -1
  97. package/build/ox_modules/module-mob/commands/selectFrame.js +4 -1
  98. package/build/ox_modules/module-mob/commands/selectWindow.js +26 -5
  99. package/build/ox_modules/module-mob/commands/sendKeys.js +9 -6
  100. package/build/ox_modules/module-mob/commands/setContext.js +2 -1
  101. package/build/ox_modules/module-mob/commands/setNativeContext.js +2 -1
  102. package/build/ox_modules/module-mob/commands/setTimeout.js +2 -1
  103. package/build/ox_modules/module-mob/commands/setWebViewContext.js +6 -3
  104. package/build/ox_modules/module-mob/commands/shake.js +2 -1
  105. package/build/ox_modules/module-mob/commands/smsClickLink.js +2 -1
  106. package/build/ox_modules/module-mob/commands/smsGetText.js +6 -3
  107. package/build/ox_modules/module-mob/commands/swipe.js +2 -1
  108. package/build/ox_modules/module-mob/commands/swipeElement.js +2 -1
  109. package/build/ox_modules/module-mob/commands/swipeScreen.js +2 -1
  110. package/build/ox_modules/module-mob/commands/takeScreenshot.js +2 -1
  111. package/build/ox_modules/module-mob/commands/tap.js +2 -1
  112. package/build/ox_modules/module-mob/commands/type.js +7 -3
  113. package/build/ox_modules/module-mob/commands/unlockPattern.js +10 -9
  114. package/build/ox_modules/module-mob/commands/waitForExist.js +2 -1
  115. package/build/ox_modules/module-mob/commands/waitForInteractable.js +3 -1
  116. package/build/ox_modules/module-mob/commands/waitForVisible.js +2 -1
  117. package/build/ox_modules/module-mob.js +139 -67
  118. package/build/ox_modules/module-pdf.js +62 -23
  119. package/build/ox_modules/module-proxy.js +68 -8
  120. package/build/ox_modules/module-serial.js +32 -7
  121. package/build/ox_modules/module-shell.js +27 -8
  122. package/build/ox_modules/module-soap.js +47 -14
  123. package/build/ox_modules/module-twilio.js +53 -10
  124. package/build/ox_modules/module-utils.js +51 -16
  125. package/build/ox_modules/module-web/commands/alertAccept.js +2 -1
  126. package/build/ox_modules/module-web/commands/alertDismiss.js +2 -1
  127. package/build/ox_modules/module-web/commands/assertAlert.js +6 -1
  128. package/build/ox_modules/module-web/commands/assertExist.js +2 -1
  129. package/build/ox_modules/module-web/commands/assertSelectedLabel.js +4 -1
  130. package/build/ox_modules/module-web/commands/assertSelectedValue.js +3 -1
  131. package/build/ox_modules/module-web/commands/assertText.js +3 -1
  132. package/build/ox_modules/module-web/commands/assertTextNotPresent.js +6 -1
  133. package/build/ox_modules/module-web/commands/assertTextPresent.js +6 -1
  134. package/build/ox_modules/module-web/commands/assertTitle.js +3 -1
  135. package/build/ox_modules/module-web/commands/assertValue.js +3 -1
  136. package/build/ox_modules/module-web/commands/back.js +2 -1
  137. package/build/ox_modules/module-web/commands/clear.js +5 -1
  138. package/build/ox_modules/module-web/commands/click.js +13 -4
  139. package/build/ox_modules/module-web/commands/clickHidden.js +7 -2
  140. package/build/ox_modules/module-web/commands/closeWindow.js +2 -1
  141. package/build/ox_modules/module-web/commands/debug.js +2 -2
  142. package/build/ox_modules/module-web/commands/deleteCookies.js +2 -1
  143. package/build/ox_modules/module-web/commands/deselect.js +2 -1
  144. package/build/ox_modules/module-web/commands/doubleClick.js +9 -3
  145. package/build/ox_modules/module-web/commands/dragAndDrop.js +2 -1
  146. package/build/ox_modules/module-web/commands/execute.js +2 -1
  147. package/build/ox_modules/module-web/commands/fileBrowse.js +10 -4
  148. package/build/ox_modules/module-web/commands/findElement.js +3 -1
  149. package/build/ox_modules/module-web/commands/findElements.js +4 -1
  150. package/build/ox_modules/module-web/commands/fullscreenWindow.js +2 -1
  151. package/build/ox_modules/module-web/commands/getAlertText.js +2 -1
  152. package/build/ox_modules/module-web/commands/getAttribute.js +4 -1
  153. package/build/ox_modules/module-web/commands/getBrowserLogs.js +3 -1
  154. package/build/ox_modules/module-web/commands/getCookies.js +2 -1
  155. package/build/ox_modules/module-web/commands/getCssValue.js +4 -1
  156. package/build/ox_modules/module-web/commands/getElementCount.js +2 -1
  157. package/build/ox_modules/module-web/commands/getHTML.js +2 -1
  158. package/build/ox_modules/module-web/commands/getSource.js +2 -1
  159. package/build/ox_modules/module-web/commands/getText.js +4 -1
  160. package/build/ox_modules/module-web/commands/getTitle.js +2 -1
  161. package/build/ox_modules/module-web/commands/getUrl.js +2 -1
  162. package/build/ox_modules/module-web/commands/getValue.js +5 -1
  163. package/build/ox_modules/module-web/commands/getWindowHandles.js +2 -1
  164. package/build/ox_modules/module-web/commands/getWindowSize.js +2 -1
  165. package/build/ox_modules/module-web/commands/getXMLPageSource.js +5 -1
  166. package/build/ox_modules/module-web/commands/index.js +100 -19
  167. package/build/ox_modules/module-web/commands/isAlertPresent.js +2 -1
  168. package/build/ox_modules/module-web/commands/isChecked.js +2 -1
  169. package/build/ox_modules/module-web/commands/isExist.js +3 -1
  170. package/build/ox_modules/module-web/commands/isInteractable.js +2 -1
  171. package/build/ox_modules/module-web/commands/isSelected.js +2 -1
  172. package/build/ox_modules/module-web/commands/isVisible.js +3 -1
  173. package/build/ox_modules/module-web/commands/makeVisible.js +10 -2
  174. package/build/ox_modules/module-web/commands/maximizeWindow.js +2 -1
  175. package/build/ox_modules/module-web/commands/minimizeWindow.js +2 -1
  176. package/build/ox_modules/module-web/commands/newWindow.js +2 -1
  177. package/build/ox_modules/module-web/commands/open.js +4 -1
  178. package/build/ox_modules/module-web/commands/pause.js +2 -1
  179. package/build/ox_modules/module-web/commands/point.js +2 -1
  180. package/build/ox_modules/module-web/commands/pointJS.js +8 -2
  181. package/build/ox_modules/module-web/commands/refresh.js +2 -1
  182. package/build/ox_modules/module-web/commands/rightClick.js +8 -3
  183. package/build/ox_modules/module-web/commands/rightClickActions.js +2 -1
  184. package/build/ox_modules/module-web/commands/scrollToElement.js +2 -1
  185. package/build/ox_modules/module-web/commands/select.js +5 -1
  186. package/build/ox_modules/module-web/commands/selectFrame.js +3 -1
  187. package/build/ox_modules/module-web/commands/selectWindow.js +26 -5
  188. package/build/ox_modules/module-web/commands/sendKeys.js +6 -3
  189. package/build/ox_modules/module-web/commands/setAutoWaitForAngular.js +2 -2
  190. package/build/ox_modules/module-web/commands/setTimeout.js +2 -1
  191. package/build/ox_modules/module-web/commands/setWindowSize.js +2 -1
  192. package/build/ox_modules/module-web/commands/takeScreenshot.js +5 -3
  193. package/build/ox_modules/module-web/commands/type.js +5 -1
  194. package/build/ox_modules/module-web/commands/waitForAngular.js +11 -6
  195. package/build/ox_modules/module-web/commands/waitForExist.js +2 -1
  196. package/build/ox_modules/module-web/commands/waitForInteractable.js +2 -1
  197. package/build/ox_modules/module-web/commands/waitForNotExist.js +8 -1
  198. package/build/ox_modules/module-web/commands/waitForNotText.js +3 -1
  199. package/build/ox_modules/module-web/commands/waitForNotValue.js +3 -1
  200. package/build/ox_modules/module-web/commands/waitForText.js +3 -1
  201. package/build/ox_modules/module-web/commands/waitForValue.js +3 -1
  202. package/build/ox_modules/module-web/commands/waitForVisible.js +2 -1
  203. package/build/ox_modules/module-web/commands/waitForWindow.js +21 -4
  204. package/build/ox_modules/module-web.js +179 -77
  205. package/build/ox_modules/module-win/commands/assertText.js +3 -1
  206. package/build/ox_modules/module-win/commands/assertTitle.js +4 -1
  207. package/build/ox_modules/module-win/commands/assertValue.js +15 -9
  208. package/build/ox_modules/module-win/commands/back.js +2 -1
  209. package/build/ox_modules/module-win/commands/clear.js +4 -1
  210. package/build/ox_modules/module-win/commands/click.js +2 -1
  211. package/build/ox_modules/module-win/commands/clickLong.js +2 -1
  212. package/build/ox_modules/module-win/commands/clickMultipleTimes.js +4 -1
  213. package/build/ox_modules/module-win/commands/findElement.js +3 -1
  214. package/build/ox_modules/module-win/commands/findElements.js +4 -1
  215. package/build/ox_modules/module-win/commands/getAppiumLogs.js +2 -1
  216. package/build/ox_modules/module-win/commands/getCurrentWindowHandle.js +2 -1
  217. package/build/ox_modules/module-win/commands/getLocation.js +2 -1
  218. package/build/ox_modules/module-win/commands/getSource.js +2 -1
  219. package/build/ox_modules/module-win/commands/getText.js +4 -1
  220. package/build/ox_modules/module-win/commands/getValue.js +9 -5
  221. package/build/ox_modules/module-win/commands/getWindowHandles.js +2 -1
  222. package/build/ox_modules/module-win/commands/index.js +43 -5
  223. package/build/ox_modules/module-win/commands/isCheckable.js +2 -1
  224. package/build/ox_modules/module-win/commands/isChecked.js +2 -1
  225. package/build/ox_modules/module-win/commands/isClickable.js +2 -1
  226. package/build/ox_modules/module-win/commands/isExist.js +3 -1
  227. package/build/ox_modules/module-win/commands/isSelected.js +2 -1
  228. package/build/ox_modules/module-win/commands/isVisible.js +3 -1
  229. package/build/ox_modules/module-win/commands/open.js +2 -1
  230. package/build/ox_modules/module-win/commands/pause.js +2 -1
  231. package/build/ox_modules/module-win/commands/rightClick.js +2 -1
  232. package/build/ox_modules/module-win/commands/selectWindow.js +15 -1
  233. package/build/ox_modules/module-win/commands/sendKeys.js +4 -1
  234. package/build/ox_modules/module-win/commands/setTimeout.js +2 -1
  235. package/build/ox_modules/module-win/commands/takeScreenshot.js +2 -1
  236. package/build/ox_modules/module-win/commands/tap.js +2 -1
  237. package/build/ox_modules/module-win/commands/type.js +4 -1
  238. package/build/ox_modules/module-win/commands/waitForExist.js +2 -1
  239. package/build/ox_modules/module-win/commands/waitForInteractable.js +4 -1
  240. package/build/ox_modules/module-win/commands/waitForVisible.js +2 -1
  241. package/build/ox_modules/module-win.js +87 -48
  242. package/build/ox_modules/utils.js +76 -22
  243. package/build/ox_reporters/reporter-excel.js +58 -1
  244. package/build/ox_reporters/reporter-html.js +28 -1
  245. package/build/ox_reporters/reporter-json.js +14 -1
  246. package/build/ox_reporters/reporter-junit.js +24 -1
  247. package/build/ox_reporters/reporter-pdf.js +19 -1
  248. package/build/ox_reporters/reporter-xml.js +17 -1
  249. package/build/ox_services/service-devtools/submodule-network.js +91 -4
  250. package/build/ox_services/service-devtools.js +23 -1
  251. package/build/reporter/FileReporterBase.js +44 -5
  252. package/build/reporter/ReportAggregator.js +65 -1
  253. package/build/reporter/ReporterBase.js +6 -1
  254. package/build/runners/WorkerProcess.js +99 -1
  255. package/build/runners/cucumber/CucumberEventListener.js +29 -4
  256. package/build/runners/cucumber/CucumberReporter.js +56 -1
  257. package/build/runners/cucumber/CucumberWorker.js +66 -1
  258. package/build/runners/cucumber/index.js +30 -1
  259. package/build/runners/cucumber/worker.js +18 -1
  260. package/build/runners/index.js +6 -1
  261. package/build/runners/oxygen/OxygenWorker.js +60 -3
  262. package/build/runners/oxygen/index.js +178 -17
  263. package/build/runners/oxygen/worker.js +25 -2
  264. package/package.json +1 -1
@@ -1,17 +1,23 @@
1
1
  "use strict";
2
2
 
3
3
  require("source-map-support/register");
4
+
4
5
  var _jimp = _interopRequireDefault(require("jimp"));
6
+
5
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+
6
9
  function alignImage(total, size, align) {
7
10
  if (align === 'center') {
8
11
  return (total - size) / 2;
9
12
  }
13
+
10
14
  if (align === 'end') {
11
15
  return total - size;
12
16
  }
17
+
13
18
  return 0;
14
19
  }
20
+
15
21
  function calcMargin(obj = {}) {
16
22
  if (Number.isInteger(obj)) {
17
23
  return {
@@ -21,6 +27,7 @@ function calcMargin(obj = {}) {
21
27
  left: obj
22
28
  };
23
29
  }
30
+
24
31
  if (typeof obj === 'string') {
25
32
  const [top, right = top, bottom = top, left = right] = obj.split(' ');
26
33
  return {
@@ -30,6 +37,7 @@ function calcMargin(obj = {}) {
30
37
  left: Number(left)
31
38
  };
32
39
  }
40
+
33
41
  const {
34
42
  top = 0,
35
43
  right = 0,
@@ -43,6 +51,7 @@ function calcMargin(obj = {}) {
43
51
  left
44
52
  };
45
53
  }
54
+
46
55
  module.exports = function mergeImages(images, {
47
56
  direction = false,
48
57
  color = 0x00000000,
@@ -53,15 +62,18 @@ module.exports = function mergeImages(images, {
53
62
  if (!Array.isArray(images)) {
54
63
  throw new TypeError('`images` must be an array that contains images');
55
64
  }
65
+
56
66
  if (images.length < 1) {
57
67
  throw new Error('At least `images` must contain more than one image');
58
68
  }
69
+
59
70
  const processImg = async img => {
60
71
  const imgBuffer = await new Buffer.from(img, 'base64');
61
72
  return _jimp.default.read(imgBuffer).then(imgObj => ({
62
73
  img: imgObj
63
74
  }));
64
75
  };
76
+
65
77
  return Promise.all(images.map(processImg)).then(imgs => {
66
78
  let totalX = 0;
67
79
  let totalY = 0;
@@ -127,6 +139,7 @@ module.exports = function mergeImages(images, {
127
139
  }) => height + offsetY));
128
140
  const baseImage = new _jimp.default(totalWidth + marginRightLeft, totalHeight + marginTopBottom, color);
129
141
  const imgDataEntries = imgData.map((data, index) => [index, data]);
142
+
130
143
  for (const [index, {
131
144
  img,
132
145
  x,
@@ -143,7 +156,8 @@ module.exports = function mergeImages(images, {
143
156
  const [px, py] = direction ? [alignImage(totalWidth, width, align) + offsetX, y + index * offset] : [x + index * offset, alignImage(totalHeight, height, align) + offsetY];
144
157
  baseImage.composite(img, px + left, py + top);
145
158
  }
159
+
146
160
  return baseImage.getBase64Async(_jimp.default.MIME_JPEG);
147
161
  });
148
162
  };
149
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJhbGlnbkltYWdlIiwidG90YWwiLCJzaXplIiwiYWxpZ24iLCJjYWxjTWFyZ2luIiwib2JqIiwiTnVtYmVyIiwiaXNJbnRlZ2VyIiwidG9wIiwicmlnaHQiLCJib3R0b20iLCJsZWZ0Iiwic3BsaXQiLCJtb2R1bGUiLCJleHBvcnRzIiwibWVyZ2VJbWFnZXMiLCJpbWFnZXMiLCJkaXJlY3Rpb24iLCJjb2xvciIsIm9mZnNldCIsIm1hcmdpbiIsIkFycmF5IiwiaXNBcnJheSIsIlR5cGVFcnJvciIsImxlbmd0aCIsIkVycm9yIiwicHJvY2Vzc0ltZyIsImltZyIsImltZ0J1ZmZlciIsIkJ1ZmZlciIsImZyb20iLCJKaW1wIiwicmVhZCIsInRoZW4iLCJpbWdPYmoiLCJQcm9taXNlIiwiYWxsIiwibWFwIiwiaW1ncyIsInRvdGFsWCIsInRvdGFsWSIsImltZ0RhdGEiLCJyZWR1Y2UiLCJyZXMiLCJvZmZzZXRYIiwib2Zmc2V0WSIsImJpdG1hcCIsIndpZHRoIiwiaGVpZ2h0IiwicHVzaCIsIngiLCJ5IiwibWFyZ2luVG9wQm90dG9tIiwibWFyZ2luUmlnaHRMZWZ0IiwidG90YWxXaWR0aCIsIk1hdGgiLCJtYXgiLCJpbmRleCIsInRvdGFsSGVpZ2h0IiwiYmFzZUltYWdlIiwiaW1nRGF0YUVudHJpZXMiLCJkYXRhIiwicHgiLCJweSIsImNvbXBvc2l0ZSIsImdldEJhc2U2NEFzeW5jIiwiTUlNRV9KUEVHIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9pbWctbWVyZ2UuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gaHR0cHM6Ly9naXRodWIuY29tL3JhZ3JhZy9tZXJnZS1iYXNlNjRcclxuXHJcbmltcG9ydCBKaW1wIGZyb20gJ2ppbXAnO1xyXG5cclxuZnVuY3Rpb24gYWxpZ25JbWFnZSh0b3RhbCwgc2l6ZSwgYWxpZ24pIHtcclxuICAgIGlmIChhbGlnbiA9PT0gJ2NlbnRlcicpIHtcclxuICAgICAgICByZXR1cm4gKHRvdGFsIC0gc2l6ZSkgLyAyO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChhbGlnbiA9PT0gJ2VuZCcpIHtcclxuICAgICAgICByZXR1cm4gdG90YWwgLSBzaXplO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiAwO1xyXG59XHJcblxyXG5mdW5jdGlvbiBjYWxjTWFyZ2luKG9iaiA9IHt9KSB7XHJcbiAgICBpZiAoTnVtYmVyLmlzSW50ZWdlcihvYmopKSB7XHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdG9wOiBvYmosXHJcbiAgICAgICAgICAgIHJpZ2h0OiBvYmosXHJcbiAgICAgICAgICAgIGJvdHRvbTogb2JqLFxyXG4gICAgICAgICAgICBsZWZ0OiBvYmpcclxuICAgICAgICB9O1xyXG4gICAgfVxyXG5cclxuICAgIGlmICh0eXBlb2Ygb2JqID09PSAnc3RyaW5nJykge1xyXG4gICAgICAgIGNvbnN0IFt0b3AsIHJpZ2h0ID0gdG9wLCBib3R0b20gPSB0b3AsIGxlZnQgPSByaWdodF0gPSBvYmouc3BsaXQoJyAnKTtcclxuXHJcbiAgICAgICAgcmV0dXJuIHtcclxuICAgICAgICAgICAgdG9wOiBOdW1iZXIodG9wKSxcclxuICAgICAgICAgICAgcmlnaHQ6IE51bWJlcihyaWdodCksXHJcbiAgICAgICAgICAgIGJvdHRvbTogTnVtYmVyKGJvdHRvbSksXHJcbiAgICAgICAgICAgIGxlZnQ6IE51bWJlcihsZWZ0KVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3QgeyB0b3AgPSAwLCByaWdodCA9IDAsIGJvdHRvbSA9IDAsIGxlZnQgPSAwIH0gPSBvYmo7XHJcblxyXG4gICAgcmV0dXJuIHtcclxuICAgICAgICB0b3AsXHJcbiAgICAgICAgcmlnaHQsXHJcbiAgICAgICAgYm90dG9tLFxyXG4gICAgICAgIGxlZnRcclxuICAgIH07XHJcbn1cclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gbWVyZ2VJbWFnZXMoXHJcbiAgaW1hZ2VzLFxyXG4gIHtcclxuICAgIGRpcmVjdGlvbiA9IGZhbHNlLFxyXG4gICAgY29sb3IgPSAweDAwMDAwMDAwLFxyXG4gICAgYWxpZ24gPSAnc3RhcnQnLFxyXG4gICAgb2Zmc2V0ID0gMCxcclxuICAgIG1hcmdpblxyXG4gIH0gPSB7fVxyXG4pIHtcclxuICAgIGlmICghQXJyYXkuaXNBcnJheShpbWFnZXMpKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcignYGltYWdlc2AgbXVzdCBiZSBhbiBhcnJheSB0aGF0IGNvbnRhaW5zIGltYWdlcycpO1xyXG4gICAgfVxyXG5cclxuICAgIGlmIChpbWFnZXMubGVuZ3RoIDwgMSkge1xyXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignQXQgbGVhc3QgYGltYWdlc2AgbXVzdCBjb250YWluIG1vcmUgdGhhbiBvbmUgaW1hZ2UnKTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCBwcm9jZXNzSW1nID0gYXN5bmMgaW1nID0+IHtcclxuICAgICAgICBjb25zdCBpbWdCdWZmZXIgPSBhd2FpdCBuZXcgQnVmZmVyLmZyb20oaW1nLCAnYmFzZTY0Jyk7XHJcbiAgICAgICAgcmV0dXJuIEppbXAucmVhZChpbWdCdWZmZXIpLnRoZW4oaW1nT2JqID0+ICh7IGltZzogaW1nT2JqIH0pKTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIFByb21pc2UuYWxsKGltYWdlcy5tYXAocHJvY2Vzc0ltZykpLnRoZW4oaW1ncyA9PiB7XHJcbiAgICAgICAgbGV0IHRvdGFsWCA9IDA7XHJcbiAgICAgICAgbGV0IHRvdGFsWSA9IDA7XHJcblxyXG4gICAgICAgIGNvbnN0IGltZ0RhdGEgPSBpbWdzLnJlZHVjZSgocmVzLCB7IGltZywgb2Zmc2V0WCA9IDAsIG9mZnNldFkgPSAwIH0pID0+IHtcclxuICAgICAgICAgICAgY29uc3Qge1xyXG4gICAgICAgIGJpdG1hcDogeyB3aWR0aCwgaGVpZ2h0IH1cclxuICAgICAgfSA9IGltZztcclxuXHJcbiAgICAgICAgICAgIHJlcy5wdXNoKHtcclxuICAgICAgICAgICAgICAgIGltZyxcclxuICAgICAgICAgICAgICAgIHg6IHRvdGFsWCArIG9mZnNldFgsXHJcbiAgICAgICAgICAgICAgICB5OiB0b3RhbFkgKyBvZmZzZXRZLFxyXG4gICAgICAgICAgICAgICAgb2Zmc2V0WCxcclxuICAgICAgICAgICAgICAgIG9mZnNldFlcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgICAgICB0b3RhbFggKz0gd2lkdGggKyBvZmZzZXRYO1xyXG4gICAgICAgICAgICB0b3RhbFkgKz0gaGVpZ2h0ICsgb2Zmc2V0WTtcclxuXHJcbiAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgfSwgW10pO1xyXG5cclxuICAgICAgICBjb25zdCB7IHRvcCwgcmlnaHQsIGJvdHRvbSwgbGVmdCB9ID0gY2FsY01hcmdpbihtYXJnaW4pO1xyXG4gICAgICAgIGNvbnN0IG1hcmdpblRvcEJvdHRvbSA9IHRvcCArIGJvdHRvbTtcclxuICAgICAgICBjb25zdCBtYXJnaW5SaWdodExlZnQgPSByaWdodCArIGxlZnQ7XHJcblxyXG4gICAgICAgIGNvbnN0IHRvdGFsV2lkdGggPSBkaXJlY3Rpb25cclxuICAgICAgPyBNYXRoLm1heChcclxuICAgICAgICAgIC4uLmltZ0RhdGEubWFwKFxyXG4gICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgIGltZzoge1xyXG4gICAgICAgICAgICAgICAgYml0bWFwOiB7IHdpZHRoIH1cclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIG9mZnNldFhcclxuICAgICAgICAgICAgfSkgPT4gd2lkdGggKyBvZmZzZXRYXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKVxyXG4gICAgICA6IGltZ0RhdGEucmVkdWNlKFxyXG4gICAgICAgICAgKFxyXG4gICAgICAgICAgICByZXMsXHJcbiAgICAgICAgICAgIHtcclxuICAgICAgICAgICAgICBpbWc6IHtcclxuICAgICAgICAgICAgICAgIGJpdG1hcDogeyB3aWR0aCB9XHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBvZmZzZXRYXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGluZGV4XHJcbiAgICAgICAgICApID0+IHJlcyArIHdpZHRoICsgb2Zmc2V0WCArIE51bWJlcihpbmRleCA+IDApICogb2Zmc2V0LFxyXG4gICAgICAgICAgMFxyXG4gICAgICAgICk7XHJcblxyXG4gICAgICAgIGNvbnN0IHRvdGFsSGVpZ2h0ID0gZGlyZWN0aW9uXHJcbiAgICAgID8gaW1nRGF0YS5yZWR1Y2UoXHJcbiAgICAgICAgICAoXHJcbiAgICAgICAgICAgIHJlcyxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGltZzoge1xyXG4gICAgICAgICAgICAgICAgYml0bWFwOiB7IGhlaWdodCB9XHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBvZmZzZXRZXHJcbiAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgIGluZGV4XHJcbiAgICAgICAgICApID0+IHJlcyArIGhlaWdodCArIG9mZnNldFkgKyBOdW1iZXIoaW5kZXggPiAwKSAqIG9mZnNldCxcclxuICAgICAgICAgIDBcclxuICAgICAgICApXHJcbiAgICAgIDogTWF0aC5tYXgoXHJcbiAgICAgICAgICAuLi5pbWdEYXRhLm1hcChcclxuICAgICAgICAgICAgKHtcclxuICAgICAgICAgICAgICBpbWc6IHtcclxuICAgICAgICAgICAgICAgIGJpdG1hcDogeyBoZWlnaHQgfVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgb2Zmc2V0WVxyXG4gICAgICAgICAgICB9KSA9PiBoZWlnaHQgKyBvZmZzZXRZXHJcbiAgICAgICAgICApXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgY29uc3QgYmFzZUltYWdlID0gbmV3IEppbXAoXHJcbiAgICAgIHRvdGFsV2lkdGggKyBtYXJnaW5SaWdodExlZnQsXHJcbiAgICAgIHRvdGFsSGVpZ2h0ICsgbWFyZ2luVG9wQm90dG9tLFxyXG4gICAgICBjb2xvclxyXG4gICAgKTtcclxuXHJcbiAgICAvLyBGYWxsYmFjayBmb3IgYEFycmF5I2VudHJpZXMoKWBcclxuICAgICAgICBjb25zdCBpbWdEYXRhRW50cmllcyA9IGltZ0RhdGEubWFwKChkYXRhLCBpbmRleCkgPT4gW2luZGV4LCBkYXRhXSk7XHJcblxyXG4gICAgICAgIGZvciAoY29uc3QgW2luZGV4LCB7IGltZywgeCwgeSwgb2Zmc2V0WCwgb2Zmc2V0WSB9XSBvZiBpbWdEYXRhRW50cmllcykge1xyXG4gICAgICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgYml0bWFwOiB7IHdpZHRoLCBoZWlnaHQgfVxyXG4gICAgICB9ID0gaW1nO1xyXG4gICAgICAgICAgICBjb25zdCBbcHgsIHB5XSA9IGRpcmVjdGlvblxyXG4gICAgICAgID8gW2FsaWduSW1hZ2UodG90YWxXaWR0aCwgd2lkdGgsIGFsaWduKSArIG9mZnNldFgsIHkgKyBpbmRleCAqIG9mZnNldF1cclxuICAgICAgICA6IFtcclxuICAgICAgICAgICAgeCArIGluZGV4ICogb2Zmc2V0LFxyXG4gICAgICAgICAgICBhbGlnbkltYWdlKHRvdGFsSGVpZ2h0LCBoZWlnaHQsIGFsaWduKSArIG9mZnNldFlcclxuICAgICAgICBdO1xyXG5cclxuICAgICAgICAgICAgYmFzZUltYWdlLmNvbXBvc2l0ZShpbWcsIHB4ICsgbGVmdCwgcHkgKyB0b3ApO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgcmV0dXJuIGJhc2VJbWFnZS5nZXRCYXNlNjRBc3luYyhKaW1wLk1JTUVfSlBFRyk7XHJcbiAgICAvLyByZXR1cm4gYmFzZUltYWdlO1xyXG4gICAgfSk7XHJcbn07XHJcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBRUE7QUFBd0I7QUFFeEIsU0FBU0EsVUFBVSxDQUFDQyxLQUFLLEVBQUVDLElBQUksRUFBRUMsS0FBSyxFQUFFO0VBQ3BDLElBQUlBLEtBQUssS0FBSyxRQUFRLEVBQUU7SUFDcEIsT0FBTyxDQUFD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
163
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvaW1nLW1lcmdlLmpzIl0sIm5hbWVzIjpbImFsaWduSW1hZ2UiLCJ0b3RhbCIsInNpemUiLCJhbGlnbiIsImNhbGNNYXJnaW4iLCJvYmoiLCJOdW1iZXIiLCJpc0ludGVnZXIiLCJ0b3AiLCJyaWdodCIsImJvdHRvbSIsImxlZnQiLCJzcGxpdCIsIm1vZHVsZSIsImV4cG9ydHMiLCJtZXJnZUltYWdlcyIsImltYWdlcyIsImRpcmVjdGlvbiIsImNvbG9yIiwib2Zmc2V0IiwibWFyZ2luIiwiQXJyYXkiLCJpc0FycmF5IiwiVHlwZUVycm9yIiwibGVuZ3RoIiwiRXJyb3IiLCJwcm9jZXNzSW1nIiwiaW1nIiwiaW1nQnVmZmVyIiwiQnVmZmVyIiwiZnJvbSIsIkppbXAiLCJyZWFkIiwidGhlbiIsImltZ09iaiIsIlByb21pc2UiLCJhbGwiLCJtYXAiLCJpbWdzIiwidG90YWxYIiwidG90YWxZIiwiaW1nRGF0YSIsInJlZHVjZSIsInJlcyIsIm9mZnNldFgiLCJvZmZzZXRZIiwiYml0bWFwIiwid2lkdGgiLCJoZWlnaHQiLCJwdXNoIiwieCIsInkiLCJtYXJnaW5Ub3BCb3R0b20iLCJtYXJnaW5SaWdodExlZnQiLCJ0b3RhbFdpZHRoIiwiTWF0aCIsIm1heCIsImluZGV4IiwidG90YWxIZWlnaHQiLCJiYXNlSW1hZ2UiLCJpbWdEYXRhRW50cmllcyIsImRhdGEiLCJweCIsInB5IiwiY29tcG9zaXRlIiwiZ2V0QmFzZTY0QXN5bmMiLCJNSU1FX0pQRUciXSwibWFwcGluZ3MiOiI7Ozs7QUFFQTs7OztBQUVBLFNBQVNBLFVBQVQsQ0FBb0JDLEtBQXBCLEVBQTJCQyxJQUEzQixFQUFpQ0MsS0FBakMsRUFBd0M7QUFDcEMsTUFBSUEsS0FBSyxLQUFLLFFBQWQsRUFBd0I7QUFDcEIsV0FBTyxDQUFDRixLQUFLLEdBQUdDLElBQVQsSUFBaUIsQ0FBeEI7QUFDSDs7QUFFRCxNQUFJQyxLQUFLLEtBQUssS0FBZCxFQUFxQjtBQUNqQixXQUFPRixL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YjtBQUFzQkMsTUFBQUE7QUFBdEIsS0FBUixDQUFYLElBQXVEZSxjQUF2RCxFQUF1RTtBQUNuRSxZQUFNO0FBQ1ZkLFFBQUFBLE1BQU0sRUFBRTtBQUFFQyxVQUFBQSxLQUFGO0FBQVNDLFVBQUFBO0FBQVQ7QUFERSxVQUVSckIsR0FGRTtBQUdBLFlBQU0sQ0FBQ21DLEVBQUQsRUFBS0MsRUFBTCxJQUFXOUMsU0FBUyxHQUM1QixDQUFDakIsVUFBVSxDQUFDc0QsVUFBRCxFQUFhUCxLQUFiLEVBQW9CNUMsS0FBcEIsQ0FBVixHQUF1Q3lDLE9BQXhDLEVBQWlETyxDQUFDLEdBQUdNLEtBQUssR0FBR3RDLE1BQTdELENBRDRCLEdBRTVCLENBQ0UrQixDQUFDLEdBQUdPLEtBQUssR0FBR3RDLE1BRGQsRUFFRW5CLFVBQVUsQ0FBQzBELFdBQUQsRUFBY1YsTUFBZCxFQUFzQjdDLEtBQXRCLENBQVYsR0FBeUMwQyxPQUYzQyxDQUZFO0FBT0FjLE1BQUFBLFNBQVMsQ0FBQ0ssU0FBVixDQUFvQnJDLEdBQXBCLEVBQXlCbUMsRUFBRSxHQUFHbkQsSUFBOUIsRUFBb0NvRCxFQUFFLEdBQUd2RCxHQUF6QztBQUNIOztBQUVELFdBQU9tRCxTQUFTLENBQUNNLGNBQVYsQ0FBeUJsQyxjQUFLbUMsU0FBOUIsQ0FBUDtBQUVILEdBdEdNLENBQVA7QUF1R0gsQ0E5SEQiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBodHRwczovL2dpdGh1Yi5jb20vcmFncmFnL21lcmdlLWJhc2U2NFxyXG5cclxuaW1wb3J0IEppbXAgZnJvbSAnamltcCc7XHJcblxyXG5mdW5jdGlvbiBhbGlnbkltYWdlKHRvdGFsLCBzaXplLCBhbGlnbikge1xyXG4gICAgaWYgKGFsaWduID09PSAnY2VudGVyJykge1xyXG4gICAgICAgIHJldHVybiAodG90YWwgLSBzaXplKSAvIDI7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGFsaWduID09PSAnZW5kJykge1xyXG4gICAgICAgIHJldHVybiB0b3RhbCAtIHNpemU7XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIDA7XHJcbn1cclxuXHJcbmZ1bmN0aW9uIGNhbGNNYXJnaW4ob2JqID0ge30pIHtcclxuICAgIGlmIChOdW1iZXIuaXNJbnRlZ2VyKG9iaikpIHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0b3A6IG9iaixcclxuICAgICAgICAgICAgcmlnaHQ6IG9iaixcclxuICAgICAgICAgICAgYm90dG9tOiBvYmosXHJcbiAgICAgICAgICAgIGxlZnQ6IG9ialxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKHR5cGVvZiBvYmogPT09ICdzdHJpbmcnKSB7XHJcbiAgICAgICAgY29uc3QgW3RvcCwgcmlnaHQgPSB0b3AsIGJvdHRvbSA9IHRvcCwgbGVmdCA9IHJpZ2h0XSA9IG9iai5zcGxpdCgnICcpO1xyXG5cclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0b3A6IE51bWJlcih0b3ApLFxyXG4gICAgICAgICAgICByaWdodDogTnVtYmVyKHJpZ2h0KSxcclxuICAgICAgICAgICAgYm90dG9tOiBOdW1iZXIoYm90dG9tKSxcclxuICAgICAgICAgICAgbGVmdDogTnVtYmVyKGxlZnQpXHJcbiAgICAgICAgfTtcclxuICAgIH1cclxuXHJcbiAgICBjb25zdCB7IHRvcCA9IDAsIHJpZ2h0ID0gMCwgYm90dG9tID0gMCwgbGVmdCA9IDAgfSA9IG9iajtcclxuXHJcbiAgICByZXR1cm4ge1xyXG4gICAgICAgIHRvcCxcclxuICAgICAgICByaWdodCxcclxuICAgICAgICBib3R0b20sXHJcbiAgICAgICAgbGVmdFxyXG4gICAgfTtcclxufVxyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiBtZXJnZUltYWdlcyhcclxuICBpbWFnZXMsXHJcbiAge1xyXG4gICAgZGlyZWN0aW9uID0gZmFsc2UsXHJcbiAgICBjb2xvciA9IDB4MDAwMDAwMDAsXHJcbiAgICBhbGlnbiA9ICdzdGFydCcsXHJcbiAgICBvZmZzZXQgPSAwLFxyXG4gICAgbWFyZ2luXHJcbiAgfSA9IHt9XHJcbikge1xyXG4gICAgaWYgKCFBcnJheS5pc0FycmF5KGltYWdlcykpIHtcclxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKCdgaW1hZ2VzYCBtdXN0IGJlIGFuIGFycmF5IHRoYXQgY29udGFpbnMgaW1hZ2VzJyk7XHJcbiAgICB9XHJcblxyXG4gICAgaWYgKGltYWdlcy5sZW5ndGggPCAxKSB7XHJcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdBdCBsZWFzdCBgaW1hZ2VzYCBtdXN0IGNvbnRhaW4gbW9yZSB0aGFuIG9uZSBpbWFnZScpO1xyXG4gICAgfVxyXG5cclxuICAgIGNvbnN0IHByb2Nlc3NJbWcgPSBhc3luYyBpbWcgPT4ge1xyXG4gICAgICAgIGNvbnN0IGltZ0J1ZmZlciA9IGF3YWl0IG5ldyBCdWZmZXIuZnJvbShpbWcsICdiYXNlNjQnKTtcclxuICAgICAgICByZXR1cm4gSmltcC5yZWFkKGltZ0J1ZmZlcikudGhlbihpbWdPYmogPT4gKHsgaW1nOiBpbWdPYmogfSkpO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gUHJvbWlzZS5hbGwoaW1hZ2VzLm1hcChwcm9jZXNzSW1nKSkudGhlbihpbWdzID0+IHtcclxuICAgICAgICBsZXQgdG90YWxYID0gMDtcclxuICAgICAgICBsZXQgdG90YWxZID0gMDtcclxuXHJcbiAgICAgICAgY29uc3QgaW1nRGF0YSA9IGltZ3MucmVkdWNlKChyZXMsIHsgaW1nLCBvZmZzZXRYID0gMCwgb2Zmc2V0WSA9IDAgfSkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCB7XHJcbiAgICAgICAgYml0bWFwOiB7IHdpZHRoLCBoZWlnaHQgfVxyXG4gICAgICB9ID0gaW1nO1xyXG5cclxuICAgICAgICAgICAgcmVzLnB1c2goe1xyXG4gICAgICAgICAgICAgICAgaW1nLFxyXG4gICAgICAgICAgICAgICAgeDogdG90YWxYICsgb2Zmc2V0WCxcclxuICAgICAgICAgICAgICAgIHk6IHRvdGFsWSArIG9mZnNldFksXHJcbiAgICAgICAgICAgICAgICBvZmZzZXRYLFxyXG4gICAgICAgICAgICAgICAgb2Zmc2V0WVxyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgICAgIHRvdGFsWCArPSB3aWR0aCArIG9mZnNldFg7XHJcbiAgICAgICAgICAgIHRvdGFsWSArPSBoZWlnaHQgKyBvZmZzZXRZO1xyXG5cclxuICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICB9LCBbXSk7XHJcblxyXG4gICAgICAgIGNvbnN0IHsgdG9wLCByaWdodCwgYm90dG9tLCBsZWZ0IH0gPSBjYWxjTWFyZ2luKG1hcmdpbik7XHJcbiAgICAgICAgY29uc3QgbWFyZ2luVG9wQm90dG9tID0gdG9wICsgYm90dG9tO1xyXG4gICAgICAgIGNvbnN0IG1hcmdpblJpZ2h0TGVmdCA9IHJpZ2h0ICsgbGVmdDtcclxuXHJcbiAgICAgICAgY29uc3QgdG90YWxXaWR0aCA9IGRpcmVjdGlvblxyXG4gICAgICA/IE1hdGgubWF4KFxyXG4gICAgICAgICAgLi4uaW1nRGF0YS5tYXAoXHJcbiAgICAgICAgICAgICh7XHJcbiAgICAgICAgICAgICAgaW1nOiB7XHJcbiAgICAgICAgICAgICAgICBiaXRtYXA6IHsgd2lkdGggfVxyXG4gICAgICAgICAgICAgIH0sXHJcbiAgICAgICAgICAgICAgb2Zmc2V0WFxyXG4gICAgICAgICAgICB9KSA9PiB3aWR0aCArIG9mZnNldFhcclxuICAgICAgICAgIClcclxuICAgICAgICApXHJcbiAgICAgIDogaW1nRGF0YS5yZWR1Y2UoXHJcbiAgICAgICAgICAoXHJcbiAgICAgICAgICAgIHJlcyxcclxuICAgICAgICAgICAge1xyXG4gICAgICAgICAgICAgIGltZzoge1xyXG4gICAgICAgICAgICAgICAgYml0bWFwOiB7IHdpZHRoIH1cclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIG9mZnNldFhcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgaW5kZXhcclxuICAgICAgICAgICkgPT4gcmVzICsgd2lkdGggKyBvZmZzZXRYICsgTnVtYmVyKGluZGV4ID4gMCkgKiBvZmZzZXQsXHJcbiAgICAgICAgICAwXHJcbiAgICAgICAgKTtcclxuXHJcbiAgICAgICAgY29uc3QgdG90YWxIZWlnaHQgPSBkaXJlY3Rpb25cclxuICAgICAgPyBpbWdEYXRhLnJlZHVjZShcclxuICAgICAgICAgIChcclxuICAgICAgICAgICAgcmVzLFxyXG4gICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgaW1nOiB7XHJcbiAgICAgICAgICAgICAgICBiaXRtYXA6IHsgaGVpZ2h0IH1cclxuICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgIG9mZnNldFlcclxuICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgaW5kZXhcclxuICAgICAgICAgICkgPT4gcmVzICsgaGVpZ2h0ICsgb2Zmc2V0WSArIE51bWJlcihpbmRleCA+IDApICogb2Zmc2V0LFxyXG4gICAgICAgICAgMFxyXG4gICAgICAgIClcclxuICAgICAgOiBNYXRoLm1heChcclxuICAgICAgICAgIC4uLmltZ0RhdGEubWFwKFxyXG4gICAgICAgICAgICAoe1xyXG4gICAgICAgICAgICAgIGltZzoge1xyXG4gICAgICAgICAgICAgICAgYml0bWFwOiB7IGhlaWdodCB9XHJcbiAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICBvZmZzZXRZXHJcbiAgICAgICAgICAgIH0pID0+IGhlaWdodCArIG9mZnNldFlcclxuICAgICAgICAgIClcclxuICAgICAgICApO1xyXG5cclxuICAgICAgICBjb25zdCBiYXNlSW1hZ2UgPSBuZXcgSmltcChcclxuICAgICAgdG90YWxXaWR0aCArIG1hcmdpblJpZ2h0TGVmdCxcclxuICAgICAgdG90YWxIZWlnaHQgKyBtYXJnaW5Ub3BCb3R0b20sXHJcbiAgICAgIGNvbG9yXHJcbiAgICApO1xyXG5cclxuICAgIC8vIEZhbGxiYWNrIGZvciBgQXJyYXkjZW50cmllcygpYFxyXG4gICAgICAgIGNvbnN0IGltZ0RhdGFFbnRyaWVzID0gaW1nRGF0YS5tYXAoKGRhdGEsIGluZGV4KSA9PiBbaW5kZXgsIGRhdGFdKTtcclxuXHJcbiAgICAgICAgZm9yIChjb25zdCBbaW5kZXgsIHsgaW1nLCB4LCB5LCBvZmZzZXRYLCBvZmZzZXRZIH1dIG9mIGltZ0RhdGFFbnRyaWVzKSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHtcclxuICAgICAgICBiaXRtYXA6IHsgd2lkdGgsIGhlaWdodCB9XHJcbiAgICAgIH0gPSBpbWc7XHJcbiAgICAgICAgICAgIGNvbnN0IFtweCwgcHldID0gZGlyZWN0aW9uXHJcbiAgICAgICAgPyBbYWxpZ25JbWFnZSh0b3RhbFdpZHRoLCB3aWR0aCwgYWxpZ24pICsgb2Zmc2V0WCwgeSArIGluZGV4ICogb2Zmc2V0XVxyXG4gICAgICAgIDogW1xyXG4gICAgICAgICAgICB4ICsgaW5kZXggKiBvZmZzZXQsXHJcbiAgICAgICAgICAgIGFsaWduSW1hZ2UodG90YWxIZWlnaHQsIGhlaWdodCwgYWxpZ24pICsgb2Zmc2V0WVxyXG4gICAgICAgIF07XHJcblxyXG4gICAgICAgICAgICBiYXNlSW1hZ2UuY29tcG9zaXRlKGltZywgcHggKyBsZWZ0LCBweSArIHRvcCk7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICByZXR1cm4gYmFzZUltYWdlLmdldEJhc2U2NEFzeW5jKEppbXAuTUlNRV9KUEVHKTtcclxuICAgIC8vIHJldHVybiBiYXNlSW1hZ2U7XHJcbiAgICB9KTtcclxufTtcclxuIl19
@@ -4,13 +4,21 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = void 0;
7
+
7
8
  require("source-map-support/register");
9
+
8
10
  var _lodash = _interopRequireDefault(require("lodash"));
11
+
9
12
  var Runners = _interopRequireWildcard(require("../runners"));
13
+
10
14
  var _queue = _interopRequireDefault(require("async/queue"));
15
+
11
16
  function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function (nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
17
+
12
18
  function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || typeof obj !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
19
+
13
20
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
21
+
14
22
  class Launcher {
15
23
  constructor(config, reporter) {
16
24
  this._config = config;
@@ -18,49 +26,66 @@ class Launcher {
18
26
  this._results = [];
19
27
  this._queue = null;
20
28
  }
29
+
21
30
  async run(capsSet) {
22
31
  this._queue = (0, _queue.default)((task, cb) => this._launchTest(task, cb), this._config.parallel || this._config.concurrency || 1);
32
+
23
33
  this._queue.error((err, task) => {
24
34
  console.log('Error in queue:', err);
25
35
  });
36
+
26
37
  if (!capsSet) {
27
38
  this._queue.push(null);
28
39
  } else {
29
40
  capsSet = Array.isArray(capsSet) ? capsSet : [capsSet];
41
+
30
42
  const _this = this;
43
+
31
44
  _lodash.default.each(capsSet, function (caps) {
32
45
  _this._queue.push(caps);
33
46
  });
34
47
  }
48
+
35
49
  await this._queue.drain();
36
50
  }
51
+
37
52
  _instantiateRunner(caps) {
38
53
  if (this._config.framework && typeof this._config.framework === 'string') {
39
54
  if (Object.prototype.hasOwnProperty.call(Runners, this._config.framework)) {
40
55
  return new Runners[this._config.framework]();
41
56
  }
57
+
42
58
  return null;
43
59
  }
60
+
44
61
  return new Runners.oxygen();
45
62
  }
63
+
46
64
  async _launchTest(caps, callback) {
47
65
  if (!callback) {
48
66
  return;
49
67
  }
68
+
50
69
  const runner = this._instantiateRunner(caps);
70
+
51
71
  if (!runner) {
52
72
  const framework = this._config.framework;
53
73
  callback(new Error(`Cannot find runner for the specified framework: ${framework}.`));
54
74
  return;
55
75
  }
76
+
56
77
  try {
57
78
  await runner.init(this._config, caps, this.reporter);
58
79
  const result = await runner.run();
80
+
59
81
  this._results.push(result);
82
+
60
83
  callback();
61
84
  } catch (e) {
62
85
  console.error('Failed to launch the test:', e);
86
+
63
87
  this._queue.kill();
88
+
64
89
  if (e.error) {
65
90
  var errMsg = '';
66
91
  var err = e.error;
@@ -72,6 +97,8 @@ class Launcher {
72
97
  }
73
98
  }
74
99
  }
100
+
75
101
  }
102
+
76
103
  exports.default = Launcher;
77
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJMYXVuY2hlciIsImNvbnN0cnVjdG9yIiwiY29uZmlnIiwicmVwb3J0ZXIiLCJfY29uZmlnIiwiX3Jlc3VsdHMiLCJfcXVldWUiLCJydW4iLCJjYXBzU2V0IiwicXVldWUiLCJ0YXNrIiwiY2IiLCJfbGF1bmNoVGVzdCIsInBhcmFsbGVsIiwiY29uY3VycmVuY3kiLCJlcnJvciIsImVyciIsImNvbnNvbGUiLCJsb2ciLCJwdXNoIiwiQXJyYXkiLCJpc0FycmF5IiwiX3RoaXMiLCJfIiwiZWFjaCIsImNhcHMiLCJkcmFpbiIsIl9pbnN0YW50aWF0ZVJ1bm5lciIsImZyYW1ld29yayIsIk9iamVjdCIsInByb3RvdHlwZSIsImhhc093blByb3BlcnR5IiwiY2FsbCIsIlJ1bm5lcnMiLCJveHlnZW4iLCJjYWxsYmFjayIsInJ1bm5lciIsIkVycm9yIiwiaW5pdCIsInJlc3VsdCIsImUiLCJraWxsIiwiZXJyTXNnIiwidHlwZSIsIm1lc3NhZ2UiLCJ0b1N0cmluZyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbGF1bmNoZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgKiBhcyBSdW5uZXJzIGZyb20gJy4uL3J1bm5lcnMnO1xyXG5pbXBvcnQgcXVldWUgZnJvbSAnYXN5bmMvcXVldWUnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGF1bmNoZXIge1xyXG4gICAgY29uc3RydWN0b3IoY29uZmlnLCByZXBvcnRlcikge1xyXG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcclxuICAgICAgICB0aGlzLnJlcG9ydGVyID0gcmVwb3J0ZXI7XHJcbiAgICAgICAgdGhpcy5fcmVzdWx0cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX3F1ZXVlID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBydW4oY2Fwc1NldCkge1xyXG4gICAgICAgIHRoaXMuX3F1ZXVlID0gcXVldWUoKHRhc2ssIGNiKSA9PiB0aGlzLl9sYXVuY2hUZXN0KHRhc2ssIGNiKSwgdGhpcy5fY29uZmlnLnBhcmFsbGVsIHx8IHRoaXMuX2NvbmZpZy5jb25jdXJyZW5jeSB8fCAxKTtcclxuICAgICAgICB0aGlzLl9xdWV1ZS5lcnJvcigoZXJyLCB0YXNrKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiBxdWV1ZTonLCBlcnIpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBpZiBubyBjYXBhYmlsaXRpZXMgYXJlIHNwZWNpZmllZCwgcnVuIHNpbmdsZSBpbnN0YW5jZSB3aXRoIGRlZmF1bHQgYXJndW1lbnRzXHJcbiAgICAgICAgaWYgKCFjYXBzU2V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3F1ZXVlLnB1c2gobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgY2Fwc1NldCBpcyBhbiBhcnJheSBcclxuICAgICAgICAgICAgY2Fwc1NldCA9IEFycmF5LmlzQXJyYXkoY2Fwc1NldCkgPyBjYXBzU2V0IDogW2NhcHNTZXRdO1xyXG4gICAgICAgICAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgICAgIF8uZWFjaChjYXBzU2V0LCBmdW5jdGlvbihjYXBzKSB7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5fcXVldWUucHVzaChjYXBzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IHRoaXMuX3F1ZXVlLmRyYWluKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICogUHJpdmF0ZSBtZXRob2RzXHJcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgX2luc3RhbnRpYXRlUnVubmVyKGNhcHMpIHtcclxuICAgICAgICBpZiAodGhpcy5fY29uZmlnLmZyYW1ld29yayAmJiB0eXBlb2YgdGhpcy5fY29uZmlnLmZyYW1ld29yayA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChSdW5uZXJzLCB0aGlzLl9jb25maWcuZnJhbWV3b3JrKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSdW5uZXJzW3RoaXMuX2NvbmZpZy5mcmFtZXdvcmtdKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgUnVubmVycy5veHlnZW4oKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBfbGF1bmNoVGVzdChjYXBzLCBjYWxsYmFjaykge1xyXG4gICAgICAgIGlmICghY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBydW5uZXIgPSB0aGlzLl9pbnN0YW50aWF0ZVJ1bm5lcihjYXBzKTtcclxuICAgICAgICBpZiAoIXJ1bm5lcikge1xyXG4gICAgICAgICAgICBjb25zdCBmcmFtZXdvcmsgPSB0aGlzLl9jb25maWcuZnJhbWV3b3JrO1xyXG4gICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHJ1bm5lciBmb3IgdGhlIHNwZWNpZmllZCBmcmFtZXdvcms6ICR7ZnJhbWV3b3JrfS5gKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSBveHlnZW5cclxuICAgICAgICAgICAgYXdhaXQgcnVubmVyLmluaXQodGhpcy5fY29uZmlnLCBjYXBzLCB0aGlzLnJlcG9ydGVyKTtcclxuICAgICAgICAgICAgLy8gcnVuIE94eWdlbiB0ZXN0IFxyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBydW5uZXIucnVuKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3Jlc3VsdHMucHVzaChyZXN1bHQpO1xyXG4gICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbGF1bmNoIHRoZSB0ZXN0OicsIGUpO1xyXG4gICAgICAgICAgICAvLyBzdG9wIHByb2Nlc3NpbmcgdGhlIHF1ZXVlXHJcbiAgICAgICAgICAgIHRoaXMuX3F1ZXVlLmtpbGwoKTtcclxuICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBjdXN0b20gZXJyb3IgbWVzc2FnZVxyXG4gICAgICAgICAgICBpZiAoZS5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVyck1zZyA9ICcnO1xyXG4gICAgICAgICAgICAgICAgdmFyIGVyciA9IGUuZXJyb3I7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLnR5cGUpXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyTXNnICs9IGVyci50eXBlICsgJyAtICc7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UpXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyTXNnICs9IGVyci5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIGVyck1zZyA9IGVyci50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKGVyck1zZykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZSk7ICAgIC8vIGNhbGwgYmFjayB3aXRoIHRoZSBvcmlnaW5hbCBleGNlcHRpb25cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFTQTtBQUNBO0FBQ0E7QUFBZ0M7QUFBQTtBQUFBO0FBRWpCLE1BQU1BLFFBQVEsQ0FBQztFQUMxQkMsV0FBVyxDQUFDQyxNQUFNLEVBQUVDLFFBQVEsRUFBRTtJQUMxQixJQUFJLENBQUNDLE9BQU8sR0FBR0YsTUFBTTtJQUNyQixJQUFJLENBQUNDLFFBQVEsR0FBR0EsUUFBUTtJQUN4QixJQUFJLENBQUNFLFFBQVEsR0FBRyxFQUFFO0lBQ2xCLElBQUksQ0FBQ0MsTUFBTSxHQUFHLElBQUk7RUFDdEI7RUFFQSxNQUFNQyxHQUFHLENBQUNDLE9BQU8sRUFBRTtJQUNmLElBQUksQ0FBQ0YsTUFBTSxHQUFHLElBQUFHLGNBQUssRUFBQyxDQUFDQyxJQUFJLEVBQUVDLEVBQUUsS0FBSyxJQUFJLENBQUNDLFdBQVcsQ0FBQ0YsSUFBSSxFQUFFQyxFQUFFLENBQUMsRUFBRSxJQUFJLENBQUNQLE9BQU8sQ0FBQ1MsUUFBUSxJQUFJLElBQUksQ0FBQ1QsT0FBTyxDQUFDVSxXQUFXLElBQUksQ0FBQyxDQUFDO0lBQ3JILElBQUksQ0FBQ1IsTUFBTSxDQUFDUyxLQUFLLENBQUMsQ0FBQ0MsR0FBRyxFQUFFTixJQUFJLEtBQUs7TUFDN0JPLE9BQU8sQ0FBQ0MsR0FBRyxDQUFDLGlCQUFpQixFQUFFRixHQUFHLENBQUM7SUFD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
104
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbGF1bmNoZXIuanMiXSwibmFtZXMiOlsiTGF1bmNoZXIiLCJjb25zdHJ1Y3RvciIsImNvbmZpZyIsInJlcG9ydGVyIiwiX2NvbmZpZyIsIl9yZXN1bHRzIiwiX3F1ZXVlIiwicnVuIiwiY2Fwc1NldCIsInRhc2siLCJjYiIsIl9sYXVuY2hUZXN0IiwicGFyYWxsZWwiLCJjb25jdXJyZW5jeSIsImVycm9yIiwiZXJyIiwiY29uc29sZSIsImxvZyIsInB1c2giLCJBcnJheSIsImlzQXJyYXkiLCJfdGhpcyIsIl8iLCJlYWNoIiwiY2FwcyIsImRyYWluIiwiX2luc3RhbnRpYXRlUnVubmVyIiwiZnJhbWV3b3JrIiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwiUnVubmVycyIsIm94eWdlbiIsImNhbGxiYWNrIiwicnVubmVyIiwiRXJyb3IiLCJpbml0IiwicmVzdWx0IiwiZSIsImtpbGwiLCJlcnJNc2ciLCJ0eXBlIiwibWVzc2FnZSIsInRvU3RyaW5nIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFTQTs7QUFDQTs7QUFDQTs7Ozs7Ozs7QUFFZSxNQUFNQSxRQUFOLENBQWU7QUFDMUJDLEVBQUFBLFdBQVcsQ0FBQ0MsTUFBRCxFQUFTQyxRQUFULEVBQW1CO0FBQzFCLFNBQUtDLE9BQUwsR0FBZUYsTUFBZjtBQUNBLFNBQUtDLFFBQUwsR0FBZ0JBLFFBQWhCO0FBQ0EsU0FBS0UsUUFBTCxHQUFnQixFQUFoQjtBQUNBLFNBQUtDLE1BQUwsR0FBYyxJQUFkO0FBQ0g7O0FBRVEsUUFBSEMsR0FBRyxDQUFDQyxPQUFELEVBQVU7QUFDZixTQUFLRixNQUFMLEdBQWMsb0JBQU0sQ0FBQ0csSUFBRCxFQUFPQyxFQUFQLEtBQWMsS0FBS0MsV0FBTCxDQUFpQkYsSUFBakIsRUFBdUJDLEVBQXZCLENBQXBCLEVBQWdELEtBQUtOLE9BQUwsQ0FBYVEsUUFBYixJQUF5QixLQUFLUixPQUFMLENBQWFTLFdBQXRDLElB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QUQsQ0FBUjtBQUNILE9BVkQsTUFXSztBQUNEUCxRQUFBQSxRQUFRLENBQUNLLENBQUQsQ0FBUjtBQUNIO0FBQ0o7QUFDSjs7QUFoRnlCIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LXByZXNlbnQgQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG5pbXBvcnQgXyBmcm9tICdsb2Rhc2gnO1xyXG5pbXBvcnQgKiBhcyBSdW5uZXJzIGZyb20gJy4uL3J1bm5lcnMnO1xyXG5pbXBvcnQgcXVldWUgZnJvbSAnYXN5bmMvcXVldWUnO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgY2xhc3MgTGF1bmNoZXIge1xyXG4gICAgY29uc3RydWN0b3IoY29uZmlnLCByZXBvcnRlcikge1xyXG4gICAgICAgIHRoaXMuX2NvbmZpZyA9IGNvbmZpZztcclxuICAgICAgICB0aGlzLnJlcG9ydGVyID0gcmVwb3J0ZXI7XHJcbiAgICAgICAgdGhpcy5fcmVzdWx0cyA9IFtdO1xyXG4gICAgICAgIHRoaXMuX3F1ZXVlID0gbnVsbDtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBydW4oY2Fwc1NldCkge1xyXG4gICAgICAgIHRoaXMuX3F1ZXVlID0gcXVldWUoKHRhc2ssIGNiKSA9PiB0aGlzLl9sYXVuY2hUZXN0KHRhc2ssIGNiKSwgdGhpcy5fY29uZmlnLnBhcmFsbGVsIHx8IHRoaXMuX2NvbmZpZy5jb25jdXJyZW5jeSB8fCAxKTtcclxuICAgICAgICB0aGlzLl9xdWV1ZS5lcnJvcigoZXJyLCB0YXNrKSA9PiB7XHJcbiAgICAgICAgICAgIGNvbnNvbGUubG9nKCdFcnJvciBpbiBxdWV1ZTonLCBlcnIpO1xyXG4gICAgICAgIH0pO1xyXG5cclxuICAgICAgICAvLyBpZiBubyBjYXBhYmlsaXRpZXMgYXJlIHNwZWNpZmllZCwgcnVuIHNpbmdsZSBpbnN0YW5jZSB3aXRoIGRlZmF1bHQgYXJndW1lbnRzXHJcbiAgICAgICAgaWYgKCFjYXBzU2V0KSB7XHJcbiAgICAgICAgICAgIHRoaXMuX3F1ZXVlLnB1c2gobnVsbCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAvLyBtYWtlIHN1cmUgY2Fwc1NldCBpcyBhbiBhcnJheSBcclxuICAgICAgICAgICAgY2Fwc1NldCA9IEFycmF5LmlzQXJyYXkoY2Fwc1NldCkgPyBjYXBzU2V0IDogW2NhcHNTZXRdO1xyXG4gICAgICAgICAgICBjb25zdCBfdGhpcyA9IHRoaXM7XHJcbiAgICAgICAgICAgIF8uZWFjaChjYXBzU2V0LCBmdW5jdGlvbihjYXBzKSB7XHJcbiAgICAgICAgICAgICAgICBfdGhpcy5fcXVldWUucHVzaChjYXBzKTtcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGF3YWl0IHRoaXMuX3F1ZXVlLmRyYWluKCk7XHJcbiAgICB9XHJcblxyXG4gICAgLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKlxyXG4gICAgICogUHJpdmF0ZSBtZXRob2RzXHJcbiAgICAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqL1xyXG4gICAgX2luc3RhbnRpYXRlUnVubmVyKGNhcHMpIHtcclxuICAgICAgICBpZiAodGhpcy5fY29uZmlnLmZyYW1ld29yayAmJiB0eXBlb2YgdGhpcy5fY29uZmlnLmZyYW1ld29yayA9PT0gJ3N0cmluZycpIHtcclxuICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChSdW5uZXJzLCB0aGlzLl9jb25maWcuZnJhbWV3b3JrKSkge1xyXG4gICAgICAgICAgICAgICAgcmV0dXJuIG5ldyBSdW5uZXJzW3RoaXMuX2NvbmZpZy5mcmFtZXdvcmtdKCk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIG51bGw7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiBuZXcgUnVubmVycy5veHlnZW4oKTtcclxuICAgIH1cclxuXHJcbiAgICBhc3luYyBfbGF1bmNoVGVzdChjYXBzLCBjYWxsYmFjaykge1xyXG4gICAgICAgIGlmICghY2FsbGJhY2spIHtcclxuICAgICAgICAgICAgcmV0dXJuO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjb25zdCBydW5uZXIgPSB0aGlzLl9pbnN0YW50aWF0ZVJ1bm5lcihjYXBzKTtcclxuICAgICAgICBpZiAoIXJ1bm5lcikge1xyXG4gICAgICAgICAgICBjb25zdCBmcmFtZXdvcmsgPSB0aGlzLl9jb25maWcuZnJhbWV3b3JrO1xyXG4gICAgICAgICAgICBjYWxsYmFjayhuZXcgRXJyb3IoYENhbm5vdCBmaW5kIHJ1bm5lciBmb3IgdGhlIHNwZWNpZmllZCBmcmFtZXdvcms6ICR7ZnJhbWV3b3JrfS5gKSk7XHJcbiAgICAgICAgICAgIHJldHVybjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSBveHlnZW5cclxuICAgICAgICAgICAgYXdhaXQgcnVubmVyLmluaXQodGhpcy5fY29uZmlnLCBjYXBzLCB0aGlzLnJlcG9ydGVyKTtcclxuICAgICAgICAgICAgLy8gcnVuIE94eWdlbiB0ZXN0IFxyXG4gICAgICAgICAgICBjb25zdCByZXN1bHQgPSBhd2FpdCBydW5uZXIucnVuKCk7XHJcbiAgICAgICAgICAgIHRoaXMuX3Jlc3VsdHMucHVzaChyZXN1bHQpO1xyXG4gICAgICAgICAgICBjYWxsYmFjaygpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICBjb25zb2xlLmVycm9yKCdGYWlsZWQgdG8gbGF1bmNoIHRoZSB0ZXN0OicsIGUpO1xyXG4gICAgICAgICAgICAvLyBzdG9wIHByb2Nlc3NpbmcgdGhlIHF1ZXVlXHJcbiAgICAgICAgICAgIHRoaXMuX3F1ZXVlLmtpbGwoKTtcclxuICAgICAgICAgICAgLy8gaWYgdGhpcyBpcyBjdXN0b20gZXJyb3IgbWVzc2FnZVxyXG4gICAgICAgICAgICBpZiAoZS5lcnJvcikge1xyXG4gICAgICAgICAgICAgICAgdmFyIGVyck1zZyA9ICcnO1xyXG4gICAgICAgICAgICAgICAgdmFyIGVyciA9IGUuZXJyb3I7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLnR5cGUpXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyTXNnICs9IGVyci50eXBlICsgJyAtICc7XHJcbiAgICAgICAgICAgICAgICBpZiAoZXJyLm1lc3NhZ2UpXHJcbiAgICAgICAgICAgICAgICAgICAgZXJyTXNnICs9IGVyci5tZXNzYWdlO1xyXG4gICAgICAgICAgICAgICAgZWxzZVxyXG4gICAgICAgICAgICAgICAgICAgIGVyck1zZyA9IGVyci50b1N0cmluZygpO1xyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2sobmV3IEVycm9yKGVyck1zZykpO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgY2FsbGJhY2soZSk7ICAgIC8vIGNhbGwgYmFjayB3aXRoIHRoZSBvcmlnaW5hbCBleGNlcHRpb25cclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -4,8 +4,11 @@ Object.defineProperty(exports, "__esModule", {
4
4
  value: true
5
5
  });
6
6
  exports.default = moduleRequire;
7
+
7
8
  require("source-map-support/register");
9
+
8
10
  var decache = require('decache');
11
+
9
12
  function moduleRequire(moduleName) {
10
13
  try {
11
14
  decache(moduleName);
@@ -15,4 +18,4 @@ function moduleRequire(moduleName) {
15
18
  throw e;
16
19
  }
17
20
  }
18
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkZWNhY2hlIiwicmVxdWlyZSIsIm1vZHVsZVJlcXVpcmUiLCJtb2R1bGVOYW1lIiwiZSIsImNvbnNvbGUiLCJsb2ciXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL21vZHVsZVJlcXVpcmUuanMiXSwic291cmNlc0NvbnRlbnQiOlsidmFyIGRlY2FjaGUgPSByZXF1aXJlKCdkZWNhY2hlJyk7XHJcblxyXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBtb2R1bGVSZXF1aXJlKG1vZHVsZU5hbWUpIHtcclxuICAgIHRyeSB7XHJcbiAgICAgICAgZGVjYWNoZShtb2R1bGVOYW1lKTtcclxuICAgICAgICByZXR1cm4gcmVxdWlyZShtb2R1bGVOYW1lKTtcclxuICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICBjb25zb2xlLmxvZygnbW9kdWxlUmVxdWlyZSBlJywgZSk7XHJcbiAgICAgICAgdGhyb3cgZTtcclxuICAgIH1cclxufSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBLElBQUlBLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQVMsQ0FBQztBQUVqQixTQUFTQyxhQUFhLENBQUNDLFVBQVUsRUFBRTtFQUM5QyxJQUFJO0lBQ0FILE9BQU8sQ0FBQ0csVUFBVSxDQUFDO0lBQ25CLE9BQU9GLE9BQU8sQ0FBQ0UsVUFBVSxDQUFDO0VBQzlCLENBQUMsQ0FBQyxPQUFPQyxDQUFDLEVBQUU7SUFDUkMsT0FBTyxDQUFDQyxHQUFHLENBQUMsaUJBQWlCLEVBQUVGLENBQUMsQ0FBQztJQUNqQyxNQUFNQSxDQUFDO0VBQ1g7QUFDSiJ9
21
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvbW9kdWxlUmVxdWlyZS5qcyJdLCJuYW1lcyI6WyJkZWNhY2hlIiwicmVxdWlyZSIsIm1vZHVsZVJlcXVpcmUiLCJtb2R1bGVOYW1lIiwiZSIsImNvbnNvbGUiLCJsb2ciXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBLElBQUlBLE9BQU8sR0FBR0MsT0FBTyxDQUFDLFNBQUQsQ0FBckI7O0FBRWUsU0FBU0MsYUFBVCxDQUF1QkMsVUFBdkIsRUFBbUM7QUFDOUMsTUFBSTtBQUNBSCxJQUFBQSxPQUFPLENBQUNHLFVBQUQsQ0FBUDtBQUNBLFdBQU9GLE9BQU8sQ0FBQ0UsVUFBRCxDQUFkO0FBQ0gsR0FIRCxDQUdFLE9BQU9DLENBQVAsRUFBVTtBQUNSQyxJQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBWSxpQkFBWixFQUErQkYsQ0FBL0I7QUFDQSxVQUFNQSxDQUFOO0FBQ0g7QUFDSiIsInNvdXJjZXNDb250ZW50IjpbInZhciBkZWNhY2hlID0gcmVxdWlyZSgnZGVjYWNoZScpO1xyXG5cclxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gbW9kdWxlUmVxdWlyZShtb2R1bGVOYW1lKSB7XHJcbiAgICB0cnkge1xyXG4gICAgICAgIGRlY2FjaGUobW9kdWxlTmFtZSk7XHJcbiAgICAgICAgcmV0dXJuIHJlcXVpcmUobW9kdWxlTmFtZSk7XHJcbiAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgY29uc29sZS5sb2coJ21vZHVsZVJlcXVpcmUgZScsIGUpO1xyXG4gICAgICAgIHRocm93IGU7XHJcbiAgICB9XHJcbn0iXX0=
@@ -1,24 +1,38 @@
1
1
  "use strict";
2
2
 
3
3
  require("source-map-support/register");
4
+
4
5
  var _OxygenError = _interopRequireDefault(require("../errors/OxygenError"));
6
+
5
7
  function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
8
+
6
9
  module.exports = function (filePath, mode, fileType) {
7
10
  var defer = require('when').defer;
11
+
8
12
  var path = require('path');
13
+
9
14
  var ExcelReader = require('./param-reader-excel');
15
+
10
16
  var CsvReader = require('./param-reader-csv');
17
+
11
18
  var JsonReader = require('./param-reader-json');
19
+
12
20
  var errHelper = require('../errors/helper');
21
+
13
22
  var module = {};
23
+
14
24
  var _whenInitialized = defer();
25
+
15
26
  module.init = function () {
16
27
  var ext = path.extname(filePath);
28
+
17
29
  if (fileType) {
18
30
  ext = fileType;
19
31
  }
32
+
20
33
  var reader = null;
21
34
  var self = this;
35
+
22
36
  if (ext === '.xlsx' || ext === '.xls') {
23
37
  reader = new ExcelReader();
24
38
  } else if (ext === '.csv' || ext === '.txt') {
@@ -27,12 +41,15 @@ module.exports = function (filePath, mode, fileType) {
27
41
  reader = new JsonReader();
28
42
  } else {
29
43
  _whenInitialized.reject(new _OxygenError.default(errHelper.errorCode.PARAMETERS_ERROR, 'Unsupported parameters file type: ' + ext));
44
+
30
45
  return _whenInitialized.promise;
31
46
  }
47
+
32
48
  this.mode = mode;
33
49
  reader.read(filePath, fileType || null).then(function (result) {
34
50
  self.table = result;
35
51
  self.currentRow = self.mode === 'random' ? random(0, self.table.length) : 0;
52
+
36
53
  _whenInitialized.resolve(null);
37
54
  }).catch(function (err) {
38
55
  _whenInitialized.reject(new _OxygenError.default(errHelper.errorCode.PARAMETERS_ERROR, `${errHelper.errorCode.PARAMETERS_ERROR}: Unable to load parameters file.
@@ -40,37 +57,47 @@ ${err.message}`));
40
57
  });
41
58
  return _whenInitialized.promise;
42
59
  };
60
+
43
61
  module.getMode = function () {
44
62
  return this.mode;
45
63
  };
64
+
46
65
  module.readNext = function () {
47
66
  this.prevRow = this.currentRow;
67
+
48
68
  if (this.mode === 'random') {
49
69
  this.currentRow = random(0, this.table.length);
50
70
  } else {
51
71
  this.currentRow++;
52
72
  }
73
+
53
74
  if (this.currentRow > this.table.length - 1) {
54
75
  this.currentRow = 0;
55
76
  }
56
77
  };
78
+
57
79
  module.readPrev = function () {
58
80
  if (typeof this.prevRow !== 'undefined') {
59
81
  this.currentRow = this.prevRow;
60
82
  }
61
83
  };
84
+
62
85
  module.getValues = function () {
63
86
  if (!this.table || this.table.length === 0) {
64
87
  throw new _OxygenError.default(errHelper.errorCode.PARAMETERS_ERROR, 'Parameters table is empty');
65
88
  }
89
+
66
90
  return this.table[this.currentRow];
67
91
  };
92
+
68
93
  module.__defineGetter__('rows', function () {
69
94
  return this.table.length;
70
95
  });
96
+
71
97
  function random(min, max) {
72
98
  return Math.floor(Math.random() * (max - min)) + min;
73
99
  }
100
+
74
101
  return module;
75
102
  };
76
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwiZmlsZVBhdGgiLCJtb2RlIiwiZmlsZVR5cGUiLCJkZWZlciIsInJlcXVpcmUiLCJwYXRoIiwiRXhjZWxSZWFkZXIiLCJDc3ZSZWFkZXIiLCJKc29uUmVhZGVyIiwiZXJySGVscGVyIiwiX3doZW5Jbml0aWFsaXplZCIsImluaXQiLCJleHQiLCJleHRuYW1lIiwicmVhZGVyIiwic2VsZiIsInJlamVjdCIsIk94RXJyb3IiLCJlcnJvckNvZGUiLCJQQVJBTUVURVJTX0VSUk9SIiwicHJvbWlzZSIsInJlYWQiLCJ0aGVuIiwicmVzdWx0IiwidGFibGUiLCJjdXJyZW50Um93IiwicmFuZG9tIiwibGVuZ3RoIiwicmVzb2x2ZSIsImNhdGNoIiwiZXJyIiwibWVzc2FnZSIsImdldE1vZGUiLCJyZWFkTmV4dCIsInByZXZSb3ciLCJyZWFkUHJldiIsImdldFZhbHVlcyIsIl9fZGVmaW5lR2V0dGVyX18iLCJtaW4iLCJtYXgiLCJNYXRoIiwiZmxvb3IiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3BhcmFtLW1hbmFnZXIuanMiXSwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcbmltcG9ydCBPeEVycm9yIGZyb20gJy4uL2Vycm9ycy9PeHlnZW5FcnJvcic7XHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKGZpbGVQYXRoLCBtb2RlLCBmaWxlVHlwZSAvKm9wdGlvbmFsKi8pIHtcclxuICAgIHZhciBkZWZlciA9IHJlcXVpcmUoJ3doZW4nKS5kZWZlcjtcclxuICAgIHZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xyXG4gICAgdmFyIEV4Y2VsUmVhZGVyID0gcmVxdWlyZSgnLi9wYXJhbS1yZWFkZXItZXhjZWwnKTtcclxuICAgIHZhciBDc3ZSZWFkZXIgPSByZXF1aXJlKCcuL3BhcmFtLXJlYWRlci1jc3YnKTtcclxuICAgIHZhciBKc29uUmVhZGVyID0gcmVxdWlyZSgnLi9wYXJhbS1yZWFkZXItanNvbicpO1xyXG4gICAgdmFyIGVyckhlbHBlciA9IHJlcXVpcmUoJy4uL2Vycm9ycy9oZWxwZXInKTtcclxuICAgIHZhciBtb2R1bGUgPSB7fTtcclxuICAgIHZhciBfd2hlbkluaXRpYWxpemVkID0gZGVmZXIoKTtcclxuXHJcbiAgICBtb2R1bGUuaW5pdCA9IGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHZhciBleHQgPSBwYXRoLmV4dG5hbWUoZmlsZVBhdGgpO1xyXG5cclxuICAgICAgICBpZiAoZmlsZVR5cGUpIHtcclxuICAgICAgICAgICAgZXh0ID0gZmlsZVR5cGU7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHZhciByZWFkZXIgPSBudWxsO1xyXG4gICAgICAgIHZhciBzZWxmID0gdGhpcztcclxuICAgICAgICAvLyBjaG9vc2UgdGhlIHJpZ2h0IGNvbnZlcnRlciBiYXNlZCBvbiBlaXRoZXIgeGxzIG9yIHhsc3ggZmlsZSBleHRlbnNpb25cclxuICAgICAgICBpZiAoZXh0ID09PSAnLnhsc3gnIHx8IGV4dCA9PT0gJy54bHMnKSB7XHJcbiAgICAgICAgICAgIHJlYWRlciA9IG5ldyBFeGNlbFJlYWRlcigpO1xyXG4gICAgICAgIH1cclxuICAgICAgICBlbHNlIGlmIChleHQgPT09ICcuY3N2JyB8fCBleHQgPT09ICcudHh0Jykge1xyXG4gICAgICAgICAgICByZWFkZXIgPSBuZXcgQ3N2UmVhZGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGV4dCA9PT0gJy5qc29uJyB8fCBleHQgPT09ICcuanMnKSB7XHJcbiAgICAgICAgICAgIHJlYWRlciA9IG5ldyBKc29uUmVhZGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2Uge1xyXG4gICAgICAgICAgICBfd2hlbkluaXRpYWxpemVkLnJlamVjdChuZXcgT3hFcnJvcihlcnJIZWxwZXIuZXJyb3JDb2RlLlBBUkFNRVRFUlNfRVJST1IsICdVbnN1cHBvcnRlZCBwYXJhbWV0ZXJzIGZpbGUgdHlwZTogJyArIGV4dCkpO1xyXG4gICAgICAgICAgICByZXR1cm4gX3doZW5Jbml0aWFsaXplZC5wcm9taXNlO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgdGhpcy5tb2RlID0gbW9kZTtcclxuXHJcbiAgICAgICAgcmVhZGVyLnJlYWQoZmlsZVBhdGgsIGZpbGVUeXBlIHx8IG51bGwpXHJcbiAgICAgICAgICAgIC50aGVuKGZ1bmN0aW9uKHJlc3VsdCkge1xyXG4gICAgICAgICAgICAgICAgc2VsZi50YWJsZSA9IHJlc3VsdDtcclxuICAgICAgICAgICAgICAgIC8vIGluaXRpYWxpemUgY3VycmVudFJvdyBhY2NvcmRpbmcgd2l0aCBwYXJhbWV0ZXIgcmVhZGluZyBtb2RlIChyYW5kb20gb3Igc2VxdWVudGlhbClcclxuICAgICAgICAgICAgICAgIHNlbGYuY3VycmVudFJvdyA9IHNlbGYubW9kZSA9PT0gJ3JhbmRvbScgPyByYW5kb20oMCwgc2VsZi50YWJsZS5sZW5ndGgpIDogMDtcclxuICAgICAgICAgICAgICAgIF93aGVuSW5pdGlhbGl6ZWQucmVzb2x2ZShudWxsKTtcclxuICAgICAgICAgICAgfSlcclxuICAgICAgICAgICAgLmNhdGNoKGZ1bmN0aW9uKGVycikge1xyXG4gICAgICAgICAgICAgICAgX3doZW5Jbml0aWFsaXplZC5yZWplY3QoXHJcbiAgICAgICAgICAgICAgICAgICAgbmV3IE94RXJyb3IoXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGVyckhlbHBlci5lcnJvckNvZGUuUEFSQU1FVEVSU19FUlJPUixcclxuICAgICAgICAgICAgICAgICAgICAgICAgYCR7ZXJySGVscGVyLmVycm9yQ29kZS5QQVJBTUVURVJTX0VSUk9SfTogVW5hYmxlIHRvIGxvYWQgcGFyYW1ldGVycyBmaWxlLiBcclxuJHtlcnIubWVzc2FnZX1gXHJcbiAgICAgICAgICAgICAgICAgICAgKVxyXG4gICAgICAgICAgICAgICAgKTtcclxuICAgICAgICAgICAgfSk7XHJcblxyXG4gICAgICAgIHJldHVybiBfd2hlbkluaXRpYWxpemVkLnByb21pc2U7XHJcbiAgICB9O1xyXG5cclxuICAgIG1vZHVsZS5nZXRNb2RlID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMubW9kZTtcclxuICAgIH07XHJcblxyXG4gICAgbW9kdWxlLnJlYWROZXh0ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIHRoaXMucHJldlJvdyA9IHRoaXMuY3VycmVudFJvdztcclxuICAgICAgICBpZiAodGhpcy5tb2RlID09PSAncmFuZG9tJykge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRSb3cgPSByYW5kb20oMCwgdGhpcy50YWJsZS5sZW5ndGgpO1xyXG4gICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFJvdysrO1xyXG4gICAgICAgIH1cclxuXHJcbiAgICAgICAgaWYgKHRoaXMuY3VycmVudFJvdyA+IHRoaXMudGFibGUubGVuZ3RoIC0gMSkge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRSb3cgPSAwO1xyXG4gICAgICAgIH1cclxuICAgIH07XHJcblxyXG4gICAgbW9kdWxlLnJlYWRQcmV2ID0gZnVuY3Rpb24gKCkge1xyXG4gICAgICAgIGlmICh0eXBlb2YgdGhpcy5wcmV2Um93ICE9PSAndW5kZWZpbmVkJykge1xyXG4gICAgICAgICAgICB0aGlzLmN1cnJlbnRSb3cgPSB0aGlzLnByZXZSb3c7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBtb2R1bGUuZ2V0VmFsdWVzID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgaWYgKCF0aGlzLnRhYmxlIHx8IHRoaXMudGFibGUubGVuZ3RoID09PSAwKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuUEFSQU1FVEVSU19FUlJPUiwgJ1BhcmFtZXRlcnMgdGFibGUgaXMgZW1wdHknKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIHRoaXMudGFibGVbdGhpcy5jdXJyZW50Um93XTtcclxuICAgIH07XHJcblxyXG4gICAgbW9kdWxlLl9fZGVmaW5lR2V0dGVyX18oJ3Jvd3MnLCBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy50YWJsZS5sZW5ndGg7XHJcbiAgICB9KTtcclxuXHJcbiAgICBmdW5jdGlvbiByYW5kb20obWluLCBtYXgpIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcihNYXRoLnJhbmRvbSgpICogKG1heCAtIG1pbikpICsgbWluO1xyXG4gICAgfVxyXG5cclxuICAgIHJldHVybiBtb2R1bGU7XHJcbn07XHJcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBUUE7QUFBNEM7QUFDNUNBLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHLFVBQVVDLFFBQVEsRUFBRUMsSUFBSSxFQUFFQyxRQUFRLEVBQWU7RUFDOUQsSUFBSUMsS0FBSyxHQUFHQyxPQUFPLENBQUMsTUFBTSxDQUFDLENBQUNELEtBQUs7RUFDakMsSUFBSUUsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBTSxDQUFDO0VBQzFCLElBQUlFLFdBQVcsR0FBR0YsT0FBTyxDQUFDLHNCQUFzQixDQUFDO0VBQ2pELElBQUlHLFNBQVMsR0FBR0gsT0FBTyxDQUFDLG9CQUFvQixDQUFDO0VBQzdDLElBQUlJLFVBQVUsR0FBR0osT0FBTyxD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
103
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYW0tbWFuYWdlci5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwiZmlsZVBhdGgiLCJtb2RlIiwiZmlsZVR5cGUiLCJkZWZlciIsInJlcXVpcmUiLCJwYXRoIiwiRXhjZWxSZWFkZXIiLCJDc3ZSZWFkZXIiLCJKc29uUmVhZGVyIiwiZXJySGVscGVyIiwiX3doZW5Jbml0aWFsaXplZCIsImluaXQiLCJleHQiLCJleHRuYW1lIiwicmVhZGVyIiwic2VsZiIsInJlamVjdCIsIk94RXJyb3IiLCJlcnJvckNvZGUiLCJQQVJBTUVURVJTX0VSUk9SIiwicHJvbWlzZSIsInJlYWQiLCJ0aGVuIiwicmVzdWx0IiwidGFibGUiLCJjdXJyZW50Um93IiwicmFuZG9tIiwibGVuZ3RoIiwicmVzb2x2ZSIsImNhdGNoIiwiZXJyIiwibWVzc2FnZSIsImdldE1vZGUiLCJyZWFkTmV4dCIsInByZXZSb3ciLCJyZWFkUHJldiIsImdldFZhbHVlcyIsIl9fZGVmaW5lR2V0dGVyX18iLCJtaW4iLCJtYXgiLCJNYXRoIiwiZmxvb3IiXSwibWFwcGluZ3MiOiI7Ozs7QUFRQTs7OztBQUNBQSxNQUFNLENBQUNDLE9BQVAsR0FBaUIsVUFBVUMsUUFBVixFQUFvQkMsSUFBcEIsRUFBMEJDLFFBQTFCLEVBQWlEO0FBQzlELE1BQUlDLEtBQUssR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBUCxDQUFnQkQsS0FBNUI7O0FBQ0EsTUFBSUUsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFDQSxNQUFJRSxXQUFXLEdBQUdGLE9BQU8sQ0FBQyxzQkFBRCxDQUF6Qjs7QUFDQSxNQUFJRyxTQUFTLEdBQUdILE9BQU8sQ0FBQyxvQkFBRCxDQUF2Qjs7QUFDQSxNQUFJSSxVQUFVLEdBQUdKLE9BQU8sQ0FBQyxxQkFBRCxDQUF4Qjs7QUFDQSxNQUFJSyxTQUFTLEdBQUdMLE9BQU8sQ0FBQyxrQkFBRCxDQUF2Qjs7QUFDQSxNQUFJTixNQUFNLEdB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QUF3QixXQUE1QixFQUF5QztBQUNyQyxXQUFLVCxVQUFMLEdBQWtCLEtBQUtTLE9BQXZCO0FBQ0g7QUFDSixHQUpEOztBQU1BcEMsRUFBQUEsTUFBTSxDQUFDc0MsU0FBUCxHQUFtQixZQUFXO0FBQzFCLFFBQUksQ0FBQyxLQUFLWixLQUFOLElBQWUsS0FBS0EsS0FBTCxDQUFXRyxNQUFYLEtBQXNCLENBQXpDLEVBQTRDO0FBQ3hDLFlBQU0sSUFBSVYsb0JBQUosQ0FBWVIsU0FBUyxDQUFDUyxTQUFWLENBQW9CQyxnQkFBaEMsRUFBa0QsMkJBQWxELENBQU47QUFDSDs7QUFDRCxXQUFPLEtBQUtLLEtBQUwsQ0FBVyxLQUFLQyxVQUFoQixDQUFQO0FBQ0gsR0FMRDs7QUFPQTNCLEVBQUFBLE1BQU0sQ0FBQ3VDLGdCQUFQLENBQXdCLE1BQXhCLEVBQWdDLFlBQVc7QUFDdkMsV0FBTyxLQUFLYixLQUFMLENBQVdHLE1BQWxCO0FBQ0gsR0FGRDs7QUFJQSxXQUFTRCxNQUFULENBQWdCWSxHQUFoQixFQUFxQkMsR0FBckIsRUFBMEI7QUFDdEIsV0FBT0MsSUFBSSxDQUFDQyxLQUFMLENBQVdELElBQUksQ0FBQ2QsTUFBTCxNQUFpQmEsR0FBRyxHQUFHRCxHQUF2QixDQUFYLElBQTBDQSxHQUFqRDtBQUNIOztBQUVELFNBQU94QyxNQUFQO0FBQ0gsQ0E5RkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtMjAxOCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuaW1wb3J0IE94RXJyb3IgZnJvbSAnLi4vZXJyb3JzL094eWdlbkVycm9yJztcclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoZmlsZVBhdGgsIG1vZGUsIGZpbGVUeXBlIC8qb3B0aW9uYWwqLykge1xyXG4gICAgdmFyIGRlZmVyID0gcmVxdWlyZSgnd2hlbicpLmRlZmVyO1xyXG4gICAgdmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XHJcbiAgICB2YXIgRXhjZWxSZWFkZXIgPSByZXF1aXJlKCcuL3BhcmFtLXJlYWRlci1leGNlbCcpO1xyXG4gICAgdmFyIENzdlJlYWRlciA9IHJlcXVpcmUoJy4vcGFyYW0tcmVhZGVyLWNzdicpO1xyXG4gICAgdmFyIEpzb25SZWFkZXIgPSByZXF1aXJlKCcuL3BhcmFtLXJlYWRlci1qc29uJyk7XHJcbiAgICB2YXIgZXJySGVscGVyID0gcmVxdWlyZSgnLi4vZXJyb3JzL2hlbHBlcicpO1xyXG4gICAgdmFyIG1vZHVsZSA9IHt9O1xyXG4gICAgdmFyIF93aGVuSW5pdGlhbGl6ZWQgPSBkZWZlcigpO1xyXG5cclxuICAgIG1vZHVsZS5pbml0ID0gZnVuY3Rpb24oKSB7XHJcbiAgICAgICAgdmFyIGV4dCA9IHBhdGguZXh0bmFtZShmaWxlUGF0aCk7XHJcblxyXG4gICAgICAgIGlmIChmaWxlVHlwZSkge1xyXG4gICAgICAgICAgICBleHQgPSBmaWxlVHlwZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdmFyIHJlYWRlciA9IG51bGw7XHJcbiAgICAgICAgdmFyIHNlbGYgPSB0aGlzO1xyXG4gICAgICAgIC8vIGNob29zZSB0aGUgcmlnaHQgY29udmVydGVyIGJhc2VkIG9uIGVpdGhlciB4bHMgb3IgeGxzeCBmaWxlIGV4dGVuc2lvblxyXG4gICAgICAgIGlmIChleHQgPT09ICcueGxzeCcgfHwgZXh0ID09PSAnLnhscycpIHtcclxuICAgICAgICAgICAgcmVhZGVyID0gbmV3IEV4Y2VsUmVhZGVyKCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGVsc2UgaWYgKGV4dCA9PT0gJy5jc3YnIHx8IGV4dCA9PT0gJy50eHQnKSB7XHJcbiAgICAgICAgICAgIHJlYWRlciA9IG5ldyBDc3ZSZWFkZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSBpZiAoZXh0ID09PSAnLmpzb24nIHx8IGV4dCA9PT0gJy5qcycpIHtcclxuICAgICAgICAgICAgcmVhZGVyID0gbmV3IEpzb25SZWFkZXIoKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgZWxzZSB7XHJcbiAgICAgICAgICAgIF93aGVuSW5pdGlhbGl6ZWQucmVqZWN0KG5ldyBPeEVycm9yKGVyckhlbHBlci5lcnJvckNvZGUuUEFSQU1FVEVSU19FUlJPUiwgJ1Vuc3VwcG9ydGVkIHBhcmFtZXRlcnMgZmlsZSB0eXBlOiAnICsgZXh0KSk7XHJcbiAgICAgICAgICAgIHJldHVybiBfd2hlbkluaXRpYWxpemVkLnByb21pc2U7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICB0aGlzLm1vZGUgPSBtb2RlO1xyXG5cclxuICAgICAgICByZWFkZXIucmVhZChmaWxlUGF0aCwgZmlsZVR5cGUgfHwgbnVsbClcclxuICAgICAgICAgICAgLnRoZW4oZnVuY3Rpb24ocmVzdWx0KSB7XHJcbiAgICAgICAgICAgICAgICBzZWxmLnRhYmxlID0gcmVzdWx0O1xyXG4gICAgICAgICAgICAgICAgLy8gaW5pdGlhbGl6ZSBjdXJyZW50Um93IGFjY29yZGluZyB3aXRoIHBhcmFtZXRlciByZWFkaW5nIG1vZGUgKHJhbmRvbSBvciBzZXF1ZW50aWFsKVxyXG4gICAgICAgICAgICAgICAgc2VsZi5jdXJyZW50Um93ID0gc2VsZi5tb2RlID09PSAncmFuZG9tJyA/IHJhbmRvbSgwLCBzZWxmLnRhYmxlLmxlbmd0aCkgOiAwO1xyXG4gICAgICAgICAgICAgICAgX3doZW5Jbml0aWFsaXplZC5yZXNvbHZlKG51bGwpO1xyXG4gICAgICAgICAgICB9KVxyXG4gICAgICAgICAgICAuY2F0Y2goZnVuY3Rpb24oZXJyKSB7XHJcbiAgICAgICAgICAgICAgICBfd2hlbkluaXRpYWxpemVkLnJlamVjdChcclxuICAgICAgICAgICAgICAgICAgICBuZXcgT3hFcnJvcihcclxuICAgICAgICAgICAgICAgICAgICAgICAgZXJySGVscGVyLmVycm9yQ29kZS5QQVJBTUVURVJTX0VSUk9SLFxyXG4gICAgICAgICAgICAgICAgICAgICAgICBgJHtlcnJIZWxwZXIuZXJyb3JDb2RlLlBBUkFNRVRFUlNfRVJST1J9OiBVbmFibGUgdG8gbG9hZCBwYXJhbWV0ZXJzIGZpbGUuIFxyXG4ke2Vyci5tZXNzYWdlfWBcclxuICAgICAgICAgICAgICAgICAgICApXHJcbiAgICAgICAgICAgICAgICApO1xyXG4gICAgICAgICAgICB9KTtcclxuXHJcbiAgICAgICAgcmV0dXJuIF93aGVuSW5pdGlhbGl6ZWQucHJvbWlzZTtcclxuICAgIH07XHJcblxyXG4gICAgbW9kdWxlLmdldE1vZGUgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5tb2RlO1xyXG4gICAgfTtcclxuXHJcbiAgICBtb2R1bGUucmVhZE5leHQgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgdGhpcy5wcmV2Um93ID0gdGhpcy5jdXJyZW50Um93O1xyXG4gICAgICAgIGlmICh0aGlzLm1vZGUgPT09ICdyYW5kb20nKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFJvdyA9IHJhbmRvbSgwLCB0aGlzLnRhYmxlLmxlbmd0aCk7XHJcbiAgICAgICAgfSBlbHNlIHtcclxuICAgICAgICAgICAgdGhpcy5jdXJyZW50Um93Kys7XHJcbiAgICAgICAgfVxyXG5cclxuICAgICAgICBpZiAodGhpcy5jdXJyZW50Um93ID4gdGhpcy50YWJsZS5sZW5ndGggLSAxKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFJvdyA9IDA7XHJcbiAgICAgICAgfVxyXG4gICAgfTtcclxuXHJcbiAgICBtb2R1bGUucmVhZFByZXYgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICAgICAgaWYgKHR5cGVvZiB0aGlzLnByZXZSb3cgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICAgICAgICAgIHRoaXMuY3VycmVudFJvdyA9IHRoaXMucHJldlJvdztcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG5cclxuICAgIG1vZHVsZS5nZXRWYWx1ZXMgPSBmdW5jdGlvbigpIHtcclxuICAgICAgICBpZiAoIXRoaXMudGFibGUgfHwgdGhpcy50YWJsZS5sZW5ndGggPT09IDApIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IE94RXJyb3IoZXJySGVscGVyLmVycm9yQ29kZS5QQVJBTUVURVJTX0VSUk9SLCAnUGFyYW1ldGVycyB0YWJsZSBpcyBlbXB0eScpO1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gdGhpcy50YWJsZVt0aGlzLmN1cnJlbnRSb3ddO1xyXG4gICAgfTtcclxuXHJcbiAgICBtb2R1bGUuX19kZWZpbmVHZXR0ZXJfXygncm93cycsIGZ1bmN0aW9uKCkge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnRhYmxlLmxlbmd0aDtcclxuICAgIH0pO1xyXG5cclxuICAgIGZ1bmN0aW9uIHJhbmRvbShtaW4sIG1heCkge1xyXG4gICAgICAgIHJldHVybiBNYXRoLmZsb29yKE1hdGgucmFuZG9tKCkgKiAobWF4IC0gbWluKSkgKyBtaW47XHJcbiAgICB9XHJcblxyXG4gICAgcmV0dXJuIG1vZHVsZTtcclxufTtcclxuIl19
@@ -1,31 +1,43 @@
1
1
  "use strict";
2
2
 
3
3
  require("source-map-support/register");
4
+
4
5
  module.exports = function () {
5
6
  var module = {};
7
+
6
8
  const parse = require('csv-parse/lib/sync');
9
+
7
10
  var fs = require('fs');
11
+
8
12
  var path = require('path');
13
+
9
14
  module.read = function (filePath, extOverride) {
10
15
  return new Promise((resolve, reject) => {
11
16
  var ext = path.extname(filePath);
17
+
12
18
  if (extOverride) {
13
19
  ext = extOverride;
14
20
  }
21
+
15
22
  if (ext !== '.csv' && ext !== '.txt') {
16
23
  reject(new Error('Unsupported file extension: ' + ext));
17
24
  }
25
+
18
26
  var data;
27
+
19
28
  try {
20
29
  data = fs.readFileSync(filePath, 'utf8');
21
30
  } catch (e) {
22
31
  reject(new Error('Unable to read parameters file: ' + e));
23
32
  }
33
+
24
34
  data = data.replace(/\r\r/g, '\r');
25
35
  var bom = false;
36
+
26
37
  if (data.charCodeAt(0) === 0xFEFF) {
27
38
  bom = true;
28
39
  }
40
+
29
41
  try {
30
42
  var table = parse(data, {
31
43
  bom: bom,
@@ -35,9 +47,11 @@ module.exports = function () {
35
47
  } catch (e) {
36
48
  reject(e);
37
49
  }
50
+
38
51
  resolve(table);
39
52
  });
40
53
  };
54
+
41
55
  return module;
42
56
  };
43
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwicGFyc2UiLCJyZXF1aXJlIiwiZnMiLCJwYXRoIiwicmVhZCIsImZpbGVQYXRoIiwiZXh0T3ZlcnJpZGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImV4dCIsImV4dG5hbWUiLCJFcnJvciIsImRhdGEiLCJyZWFkRmlsZVN5bmMiLCJlIiwicmVwbGFjZSIsImJvbSIsImNoYXJDb2RlQXQiLCJ0YWJsZSIsImNvbHVtbnMiLCJ0cmltIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL2xpYi9wYXJhbS1yZWFkZXItY3N2LmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgbW9kdWxlID0ge307XHJcbiAgICBjb25zdCBwYXJzZSA9IHJlcXVpcmUoJ2Nzdi1wYXJzZS9saWIvc3luYycpO1xyXG4gICAgdmFyIGZzID0gcmVxdWlyZSgnZnMnKTtcclxuICAgIHZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xyXG5cclxuICAgIG1vZHVsZS5yZWFkID0gZnVuY3Rpb24oZmlsZVBhdGgsIGV4dE92ZXJyaWRlKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdmFyIGV4dCA9IHBhdGguZXh0bmFtZShmaWxlUGF0aCk7XHJcbiAgICAgICAgICAgIGlmIChleHRPdmVycmlkZSkge1xyXG4gICAgICAgICAgICAgICAgZXh0ID0gZXh0T3ZlcnJpZGU7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgaWYgKGV4dCAhPT0gJy5jc3YnICYmIGV4dCAhPT0gJy50eHQnKSB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdVbnN1cHBvcnRlZCBmaWxlIGV4dGVuc2lvbjogJyArIGV4dCkpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB2YXIgZGF0YTtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGRhdGEgPSBmcy5yZWFkRmlsZVN5bmMoZmlsZVBhdGgsICd1dGY4Jyk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1VuYWJsZSB0byByZWFkIHBhcmFtZXRlcnMgZmlsZTogJyArIGUpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgLy8gQ1NWcyBwcm9kdWNlZCBieSBPUyBYIEV4Y2VsIGhhdmUgaGVhZGVyIHRlcm1pbmF0ZWQgd2l0aCAwZDBkMGFcclxuICAgICAgICAgICAgZGF0YSA9IGRhdGEucmVwbGFjZSgvXFxyXFxyL2csICdcXHInKTtcclxuXHJcbiAgICAgICAgICAgIC8vIHN0cmlwIEJPTSBmb3IgVVRGLThcclxuICAgICAgICAgICAgdmFyIGJvbSA9IGZhbHNlO1xyXG4gICAgICAgICAgICAvLyBjYXRjaGVzIDB4RUZCQkJGIChVVEYtOCBCT00pIGJlY2F1c2UgdGhlIGJ1ZmZlci10by1zdHJpbmdcclxuICAgICAgICAgICAgLy8gY29udmVyc2lvbiB0cmFuc2xhdGVzIGl0IHRvIDB4RkVGRiAoVVRGLTE2IEJPTSlcclxuICAgICAgICAgICAgaWYgKGRhdGEuY2hhckNvZGVBdCgwKSA9PT0gMHhGRUZGKSB7XHJcbiAgICAgICAgICAgICAgICBib20gPSB0cnVlO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICB0cnkge1xyXG4gICAgICAgICAgICAgICAgdmFyIHRhYmxlID0gcGFyc2UoZGF0YSwgeyBib206IGJvbSwgY29sdW1uczogdHJ1ZSwgdHJpbTogdHJ1ZSB9KTtcclxuICAgICAgICAgICAgfSBjYXRjaCAoZSkge1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KGUpO1xyXG4gICAgICAgICAgICB9XHJcblxyXG4gICAgICAgICAgICByZXNvbHZlKHRhYmxlKTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG1vZHVsZTtcclxufTtcclxuIl0sIm1hcHBpbmdzIjoiOzs7QUFTQUEsTUFBTSxDQUFDQyxPQUFPLEdBQUcsWUFBWTtFQUN6QixJQUFJRCxNQUFNLEdBQUcsQ0FBQyxDQUFDO0VBQ2YsTUFBTUUsS0FBSyxHQUFHQyxPQUFPLENBQUMsb0JBQW9CLENBQUM7RUFDM0MsSUFBSUMsRUFBRSxHQUFHRCxPQUFPLENBQUMsSUFBSSxDQUFDO0VBQ3RCLElBQUlFLElBQUksR0FBR0YsT0FBTyxDQUFDLE1BQU0sQ0FBQztFQUUxQkgsTUFBTSxDQUFDTSxJQUFJLEdBQUcsVUFBU0MsUUFBUSxFQUFFQyxXQUFXLEVBQUU7SUFDMUMsT0FBTyxJQUFJQyxPQUFPLENBQUMsQ0FBQ0MsT0FBTyxFQUFFQyxNQUFNLEtBQUs7TUFDcEMsSUFBSUMsR0FBRyxHQUFHUCxJQUFJLENBQUNRLE9BQU8sQ0FBQ04sUUFBUSxDQUFDO01BQ2hDLElBQUlDLFdBQVcsRUFBRTtRQUNiSSxHQUFHLEdBQUdKLFdBQVc7TUFDckI7TUFDQSxJQUFJSSxHQUFHLEtBQUssTUFBTSxJQUFJQSxHQUFHLEtBQUssTUFBTSxFQUFFO1FBQ2xDRCxNQUFNLENBQUMsSUFBSUcsS0FBSyxDQUFDLDhCQUE4QixHQUFHRixHQUFHLENBQUMsQ0FBQztNQUMzRDtNQUVBLElBQUlHLElBQUk7TUFDUixJQUFJO1FBQ0FBLElBQUksR0FBR1gsRUFBRSxDQUFDWSxZQUFZLENBQUNULFFBQVEsRUFBRSxNQUFNLENBQUM7TUFDNUMsQ0FBQyxDQUFDLE9BQU9VLENBQUMsRUFBRTtRQUNSTixNQUFNLENBQUMsSUFBSUcsS0FBSyxDQUFDLGtDQUFrQyxHQUFHRyxDQUFDLENBQUMsQ0FBQztNQUM3RDtNQUdBRixJQUFJLEdBQUdBLElBQUksQ0FBQ0csT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUM7TUFHbEMsSUFBSUMsR0FBRyxHQUFHLEtBQUs7TUFHZixJQUFJSixJQUFJLENBQUNLLFVBQVUsQ0FBQyxDQUFDLENBQUMsS0FBSyxNQUFNLEVBQUU7UUFDL0JELEdBQUcsR0FBRyxJQUFJO01BQ2Q7TUFFQSxJQUFJO1FBQ0EsSUFBSUUsS0FBSyxHQUFHbkIsS0FBSyxDQUFDYSxJQUFJLEVBQUU7VUFBRUksR0FBRyxFQUFFQSxHQUFHO1VBQUVHLE9BQU8sRUFBRSxJQUFJO1VBQUVDLElBQUksRUFBRTtRQUFLLENBQUMsQ0FBQztNQUNwRSxDQUFDLENBQUMsT0FBT04sQ0FBQyxFQUFFO1FBQ1JOLE1BQU0sQ0FBQ00sQ0FBQyxDQUFDO01BQ2I7TUFFQVAsT0FBTyxDQUFDVyxLQUFLLENBQUM7SUFDbEIsQ0FBQyxDQUFDO0VBQ04sQ0FBQztFQUVELE9BQU9yQixNQUFNO0FBQ2pCLENBQUMifQ==
57
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYW0tcmVhZGVyLWNzdi5qcyJdLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwicGFyc2UiLCJyZXF1aXJlIiwiZnMiLCJwYXRoIiwicmVhZCIsImZpbGVQYXRoIiwiZXh0T3ZlcnJpZGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImV4dCIsImV4dG5hbWUiLCJFcnJvciIsImRhdGEiLCJyZWFkRmlsZVN5bmMiLCJlIiwicmVwbGFjZSIsImJvbSIsImNoYXJDb2RlQXQiLCJ0YWJsZSIsImNvbHVtbnMiLCJ0cmltIl0sIm1hcHBpbmdzIjoiOzs7O0FBU0FBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixZQUFZO0FBQ3pCLE1BQUlELE1BQU0sR0FBRyxFQUFiOztBQUNBLFFBQU1FLEtBQUssR0FBR0MsT0FBTyxDQUFDLG9CQUFELENBQXJCOztBQUNBLE1BQUlDLEVBQUUsR0FBR0QsT0FBTyxDQUFDLElBQUQsQ0FBaEI7O0FBQ0EsTUFBSUUsSUFBSSxHQUFHRixPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFFQUgsRUFBQUEsTUFBTSxDQUFDTSxJQUFQLEdBQWMsVUFBU0MsUUFBVCxFQUFtQkMsV0FBbkIsRUFBZ0M7QUFDMUMsV0FBTyxJQUFJQyxPQUFKLENBQVksQ0FBQ0MsT0FBRCxFQUFVQyxNQUFWLEtBQXFCO0FBQ3BDLFVBQUlDLEdBQUcsR0FBR1AsSUFBSSxDQUFDUSxPQUFMLENBQWFOLFFBQWIsQ0FBVjs7QUFDQSxVQUFJQyxXQUFKLEVBQWlCO0FBQ2JJLFFBQUFBLEdBQUcsR0FBR0osV0FBTjtBQUNIOztBQUNELFVBQUlJLEdBQUcsS0FBSyxNQUFSLElBQWtCQSxHQUFHLEtBQUssTUFBOUIsRUFBc0M7QUFDbENELFFBQUFBLE1BQU0sQ0FBQyxJQUFJRyxLQUFKLENBQVUsaUNBQWlDRixHQUEzQyxDQUFELENBQU47QUFDSDs7QUFFRCxVQUFJRyxJQUFKOztBQUNBLFVBQUk7QUFDQUEsUUFBQUEsSUFBSSxHQUFHWCxFQUFFLENBQUNZLFlBQUgsQ0FBZ0JULFFBQWhCLEVBQTBCLE1BQTFCLENBQVA7QUFDSCxPQUZELENBRUUsT0FBT1UsQ0FBUCxFQUFVO0FBQ1JOLFFBQUFBLE1BQU0sQ0FBQyxJQUFJRyxLQUFKLENBQVUscUNBQXFDRyxDQUEvQyxDQUFELENBQU47QUFDSDs7QUFHREYsTUFBQUEsSUFBSSxHQUFHQSxJQUFJLENBQUNHLE9BQUwsQ0FBYSxPQUFiLEVBQXNCLElBQXRCLENBQVA7QUFHQSxVQUFJQyxHQUFHLEdBQUcsS0FBVjs7QUFHQSxVQUFJSixJQUFJLENBQUNLLFVBQUwsQ0FBZ0IsQ0FBaEIsTUFBdUIsTUFBM0IsRUFBbUM7QUFDL0JELFFBQUFBLEdBQUcsR0FBRyxJQUFOO0FBQ0g7O0FBRUQsVUFBSTtBQUNBLFlBQUlFLEtBQUssR0FBR25CLEtBQUssQ0FBQ2EsSUFBRCxFQUFPO0FBQUVJLFVBQUFBLEdBQUcsRUFBRUEsR0FBUDtBQUFZRyxVQUFBQSxPQUFPLEVBQUUsSUFBckI7QUFBMkJDLFVBQUFBLElBQUksRUFBRTtBQUFqQyxTQUFQLENBQWpCO0FBQ0gsT0FGRCxDQUVFLE9BQU9OLENBQVAsRUFBVTtBQUNSTixRQUFBQSxNQUFNLENBQUNNLENBQUQsQ0FBTjtBQUNIOztBQUVEUCxNQUFBQSxPQUFPLENBQUNXLEtBQUQsQ0FBUDtBQUNILEtBbENNLENBQVA7QUFtQ0gsR0FwQ0Q7O0FBc0NBLFNBQU9yQixNQUFQO0FBQ0gsQ0E3Q0QiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIG1vZHVsZSA9IHt9O1xyXG4gICAgY29uc3QgcGFyc2UgPSByZXF1aXJlKCdjc3YtcGFyc2UvbGliL3N5bmMnKTtcclxuICAgIHZhciBmcyA9IHJlcXVpcmUoJ2ZzJyk7XHJcbiAgICB2YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuXHJcbiAgICBtb2R1bGUucmVhZCA9IGZ1bmN0aW9uKGZpbGVQYXRoLCBleHRPdmVycmlkZSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBleHQgPSBwYXRoLmV4dG5hbWUoZmlsZVBhdGgpO1xyXG4gICAgICAgICAgICBpZiAoZXh0T3ZlcnJpZGUpIHtcclxuICAgICAgICAgICAgICAgIGV4dCA9IGV4dE92ZXJyaWRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChleHQgIT09ICcuY3N2JyAmJiBleHQgIT09ICcudHh0Jykge1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgZmlsZSBleHRlbnNpb246ICcgKyBleHQpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdmFyIGRhdGE7XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBkYXRhID0gZnMucmVhZEZpbGVTeW5jKGZpbGVQYXRoLCAndXRmOCcpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdVbmFibGUgdG8gcmVhZCBwYXJhbWV0ZXJzIGZpbGU6ICcgKyBlKSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIC8vIENTVnMgcHJvZHVjZWQgYnkgT1MgWCBFeGNlbCBoYXZlIGhlYWRlciB0ZXJtaW5hdGVkIHdpdGggMGQwZDBhXHJcbiAgICAgICAgICAgIGRhdGEgPSBkYXRhLnJlcGxhY2UoL1xcclxcci9nLCAnXFxyJyk7XHJcblxyXG4gICAgICAgICAgICAvLyBzdHJpcCBCT00gZm9yIFVURi04XHJcbiAgICAgICAgICAgIHZhciBib20gPSBmYWxzZTtcclxuICAgICAgICAgICAgLy8gY2F0Y2hlcyAweEVGQkJCRiAoVVRGLTggQk9NKSBiZWNhdXNlIHRoZSBidWZmZXItdG8tc3RyaW5nXHJcbiAgICAgICAgICAgIC8vIGNvbnZlcnNpb24gdHJhbnNsYXRlcyBpdCB0byAweEZFRkYgKFVURi0xNiBCT00pXHJcbiAgICAgICAgICAgIGlmIChkYXRhLmNoYXJDb2RlQXQoMCkgPT09IDB4RkVGRikge1xyXG4gICAgICAgICAgICAgICAgYm9tID0gdHJ1ZTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHZhciB0YWJsZSA9IHBhcnNlKGRhdGEsIHsgYm9tOiBib20sIGNvbHVtbnM6IHRydWUsIHRyaW06IHRydWUgfSk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHJlamVjdChlKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZSh0YWJsZSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBtb2R1bGU7XHJcbn07XHJcbiJdfQ==
@@ -1,28 +1,38 @@
1
1
  "use strict";
2
2
 
3
3
  require("source-map-support/register");
4
+
4
5
  module.exports = function () {
5
6
  var module = {};
7
+
6
8
  var xlsx = require('xlsx');
9
+
7
10
  var path = require('path');
11
+
8
12
  module.read = function (filePath) {
9
13
  return new Promise((resolve, reject) => {
10
14
  var ext = path.extname(filePath);
15
+
11
16
  if (ext !== '.xlsx' && ext !== '.xls') {
12
17
  reject(new Error('Unsupported file extension: ' + ext));
13
18
  }
19
+
14
20
  var json = [];
21
+
15
22
  try {
16
23
  var workbook = xlsx.readFile(filePath);
17
24
  var sheetNameList = workbook.SheetNames;
18
25
  var jsonRaw = xlsx.utils.sheet_to_json(workbook.Sheets[sheetNameList[0]], {
19
26
  defval: ''
20
27
  });
28
+
21
29
  for (var paramRaw of jsonRaw) {
22
30
  var param = {};
31
+
23
32
  for (var propRaw in paramRaw) {
24
33
  if (Object.prototype.hasOwnProperty.call(paramRaw, propRaw)) {
25
34
  var valueRaw = paramRaw[propRaw];
35
+
26
36
  if (typeof valueRaw === 'string' || valueRaw instanceof String) {
27
37
  param[propRaw.trim()] = valueRaw.trim();
28
38
  } else {
@@ -30,14 +40,17 @@ module.exports = function () {
30
40
  }
31
41
  }
32
42
  }
43
+
33
44
  json.push(param);
34
45
  }
35
46
  } catch (err) {
36
47
  reject(err);
37
48
  }
49
+
38
50
  resolve(json);
39
51
  });
40
52
  };
53
+
41
54
  return module;
42
55
  };
43
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwieGxzeCIsInJlcXVpcmUiLCJwYXRoIiwicmVhZCIsImZpbGVQYXRoIiwiUHJvbWlzZSIsInJlc29sdmUiLCJyZWplY3QiLCJleHQiLCJleHRuYW1lIiwiRXJyb3IiLCJqc29uIiwid29ya2Jvb2siLCJyZWFkRmlsZSIsInNoZWV0TmFtZUxpc3QiLCJTaGVldE5hbWVzIiwianNvblJhdyIsInV0aWxzIiwic2hlZXRfdG9fanNvbiIsIlNoZWV0cyIsImRlZnZhbCIsInBhcmFtUmF3IiwicGFyYW0iLCJwcm9wUmF3IiwiT2JqZWN0IiwicHJvdG90eXBlIiwiaGFzT3duUHJvcGVydHkiLCJjYWxsIiwidmFsdWVSYXciLCJTdHJpbmciLCJ0cmltIiwicHVzaCIsImVyciJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYW0tcmVhZGVyLWV4Y2VsLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS0yMDE4IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgbW9kdWxlID0ge307XHJcbiAgICB2YXIgeGxzeCA9IHJlcXVpcmUoJ3hsc3gnKTtcclxuICAgIHZhciBwYXRoID0gcmVxdWlyZSgncGF0aCcpO1xyXG5cclxuICAgIC8vIGFzeW5jaHJvbm91c2x5IHJlYWRzIEV4Y2VsIGZpbGUgYW5kIHJldHVybnMganNvbiB0aGF0IHJlcHJlc2VudHMgdGhlIGZpcnN0IHNoZWV0XHJcbiAgICBtb2R1bGUucmVhZCA9IGZ1bmN0aW9uKGZpbGVQYXRoKSB7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlKChyZXNvbHZlLCByZWplY3QpID0+IHtcclxuICAgICAgICAgICAgdmFyIGV4dCA9IHBhdGguZXh0bmFtZShmaWxlUGF0aCk7XHJcbiAgICAgICAgICAgIGlmIChleHQgIT09ICcueGxzeCcgJiYgZXh0ICE9PSAnLnhscycpIHtcclxuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGZpbGUgZXh0ZW5zaW9uOiAnICsgZXh0KSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHZhciBqc29uID0gW107XHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICB2YXIgd29ya2Jvb2sgPSB4bHN4LnJlYWRGaWxlKGZpbGVQYXRoKTtcclxuICAgICAgICAgICAgICAgIHZhciBzaGVldE5hbWVMaXN0ID0gd29ya2Jvb2suU2hlZXROYW1lcztcclxuICAgICAgICAgICAgICAgIHZhciBqc29uUmF3ID0geGxzeC51dGlscy5zaGVldF90b19qc29uKHdvcmtib29rLlNoZWV0c1tzaGVldE5hbWVMaXN0WzBdXSwgeyBkZWZ2YWw6ICcnIH0pO1xyXG4gICAgICAgICAgICAgICAgLy8ganVzdCBpbiBjYXNlIHRoZXJlIHdlcmUgc29tZSBleHRyYSBsaW5lIGJyZWFrcyBpbiB0aGUgY2VsbHNcclxuICAgICAgICAgICAgICAgIC8vIHJlY3JlYXRlIHRoZSBwYXJhbWV0ZXJzIG9iamVjdHMgd2l0aCBhbGwgdGhlIFxcciBhbmQgXFxuIGFuZCB3aGl0ZSBzcGFjZXMgdHJpbW1lZFxyXG4gICAgICAgICAgICAgICAgZm9yICh2YXIgcGFyYW1SYXcgb2YganNvblJhdykge1xyXG4gICAgICAgICAgICAgICAgICAgIHZhciBwYXJhbSA9IHt9O1xyXG4gICAgICAgICAgICAgICAgICAgIGZvciAodmFyIHByb3BSYXcgaW4gcGFyYW1SYXcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgaWYgKE9iamVjdC5wcm90b3R5cGUuaGFzT3duUHJvcGVydHkuY2FsbChwYXJhbVJhdywgcHJvcFJhdykpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhciB2YWx1ZVJhdyA9IHBhcmFtUmF3W3Byb3BSYXddO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZVJhdyA9PT0gJ3N0cmluZycgfHwgdmFsdWVSYXcgaW5zdGFuY2VvZiBTdHJpbmcpIHtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYXJhbVtwcm9wUmF3LnRyaW0oKV0gPSB2YWx1ZVJhdy50cmltKCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9IGVsc2Uge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtW3Byb3BSYXcudHJpbSgpXSA9IHZhbHVlUmF3O1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGpzb24ucHVzaChwYXJhbSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGVycikge1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KGVycik7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHJlc29sdmUoanNvbik7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9O1xyXG5cclxuICAgIHJldHVybiBtb2R1bGU7XHJcbn07XHJcbiJdLCJtYXBwaW5ncyI6Ijs7O0FBU0FBLE1BQU0sQ0FBQ0MsT0FBTyxHQUFHLFlBQVk7RUFDekIsSUFBSUQsTUFBTSxHQUFHLENBQUMsQ0FBQztFQUNmLElBQUlFLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQU0sQ0FBQztFQUMxQixJQUFJQyxJQUFJLEdBQUdELE9BQU8sQ0FBQyxNQUFNLENBQUM7RUFHMUJILE1BQU0sQ0FBQ0ssSUFBSSxHQUFHLFVBQVNDLFFBQVEsRUFBRTtJQUM3QixPQUFPLElBQUlDLE9BQU8sQ0FBQyxDQUFDQyxPQUFPLEVBQUVDLE1BQU0sS0FBSztNQUNwQyxJQUFJQyxHQUFHLEdBQUdOLElBQUksQ0FBQ08sT0FBTyxDQUFDTCxRQUFRLENBQUM7TUFDaEMsSUFBSUksR0FBRyxLQUFLLE9BQU8sSUFBSUEsR0FBRyxLQUFLLE1BQU0sRUFBRTtRQUNuQ0QsTUFBTSxDQUFDLElBQUlHLEtBQUssQ0FBQyw4QkFBOEIsR0FBR0YsR0FBRyxDQUFDLENBQUM7TUFDM0Q7TUFFQSxJQUFJRyxJQUFJLEdBQUcsRUFBRTtNQUNiLElBQUk7UUFDQSxJQUFJQyxRQUFRLEdBQUdaLElBQUksQ0FBQ2EsUUFBUSxDQUFDVCxRQUFRLENBQUM7UUFDdEMsSUFBSVUsYUFBYSxHQUFHRixRQUFRLENBQUNHLFVBQVU7UUFDdkMsSUFBSUMsT0FBTyxHQUFHaEIsSUFBSSxDQUFDaUIsS0FBSyxDQUFDQyxhQUFhLENBQUNOLFFBQVEsQ0FBQ08sTUFBTSxDQUFDTCxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRTtVQUFFTSxNQUFNLEVBQUU7UUFBRyxDQUFDLENBQUM7UUFHekYsS0FBSyxJQUFJQyxRQUFRLElBQUlMLE9BQU8sRUFBRTtVQUMxQixJQUFJTSxLQUFLLEdBQUcsQ0FBQyxDQUFDO1VBQ2QsS0FBSyxJQUFJQyxPQUFPLElBQUlGLFFBQVEsRUFBRTtZQUMxQixJQUFJRyxNQUFNLENBQUNDLFNBQVMsQ0FBQ0MsY0FBYyxDQUFDQyxJQUFJLENBQUNOLFFBQVEsRUFBRUUsT0FBTyxDQUFDLEVBQUU7Y0FDekQsSUFBSUssUUFBUSxHQUFHUCxRQUFRLENBQUNFLE9BQU8sQ0FBQztjQUNoQyxJQUFJLE9BQU9LLFFBQVEsS0FBSyxRQUFRLElBQUlBLFFBQVEsWUFBWUMsTUFBTSxFQUFFO2dCQUM1RFAsS0FBSyxDQUFDQyxPQUFPLENBQUNPLElBQUksRUFBRSxDQUFDLEdBQUdGLFFBQVEsQ0FBQ0UsSUFBSSxFQUFFO2NBQzNDLENBQUMsTUFBTTtnQkFDSFIsS0FBSyxDQUFDQyxPQUFPLENBQUNPLElBQUksRUFBRSxDQUFDLEdBQUdGLFFBQVE7Y0FDcEM7WUFDSjtVQUNKO1VBQ0FqQixJQUFJLENBQUNvQixJQUFJLENBQUNULEtBQUssQ0FBQztRQUNwQjtNQUNKLENBQUMsQ0FBQyxPQUFPVSxHQUFHLEVBQUU7UUFDVnpCLE1BQU0sQ0FBQ3lCLEdBQUcsQ0FBQztNQUNmO01BRUExQixPQUFPLENBQUNLLElBQUksQ0FBQztJQUNqQixDQUFDLENBQUM7RUFDTixDQUFDO0VBRUQsT0FBT2IsTUFBTTtBQUNqQixDQUFDIn0=
56
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYW0tcmVhZGVyLWV4Y2VsLmpzIl0sIm5hbWVzIjpbIm1vZHVsZSIsImV4cG9ydHMiLCJ4bHN4IiwicmVxdWlyZSIsInBhdGgiLCJyZWFkIiwiZmlsZVBhdGgiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImV4dCIsImV4dG5hbWUiLCJFcnJvciIsImpzb24iLCJ3b3JrYm9vayIsInJlYWRGaWxlIiwic2hlZXROYW1lTGlzdCIsIlNoZWV0TmFtZXMiLCJqc29uUmF3IiwidXRpbHMiLCJzaGVldF90b19qc29uIiwiU2hlZXRzIiwiZGVmdmFsIiwicGFyYW1SYXciLCJwYXJhbSIsInByb3BSYXciLCJPYmplY3QiLCJwcm90b3R5cGUiLCJoYXNPd25Qcm9wZXJ0eSIsImNhbGwiLCJ2YWx1ZVJhdyIsIlN0cmluZyIsInRyaW0iLCJwdXNoIiwiZXJyIl0sIm1hcHBpbmdzIjoiOzs7O0FBU0FBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixZQUFZO0FBQ3pCLE1BQUlELE1BQU0sR0FBRyxFQUFiOztBQUNBLE1BQUlFLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBbEI7O0FBQ0EsTUFBSUMsSUFBSSxHQUFHRCxPQUFPLENBQUMsTUFBRCxDQUFsQjs7QUFHQUgsRUFBQUEsTUFBTSxDQUFDSyxJQUFQLEdBQWMsVUFBU0MsUUFBVCxFQUFtQjtBQUM3QixXQUFPLElBQUlDLE9BQUosQ0FBWSxDQUFDQyxPQUFELEVBQVVDLE1BQVYsS0FBcUI7QUFDcEMsVUFBSUMsR0FBRyxHQUFHTixJQUFJLENBQUNPLE9BQUwsQ0FBYUwsUUFBYixDQUFWOztBQUNBLFVBQUlJLEdBQUcsS0FBSyxPQUFSLElBQW1CQSxHQUFHLEtBQUssTUFBL0IsRUFBdUM7QUFDbkNELFFBQUFBLE1BQU0sQ0FBQyxJQUFJRyxLQUFKLENBQVUsaUNBQWlDRixHQUEzQyxDQUFELENBQU47QUFDSDs7QUFFRCxVQUFJRyxJQUFJLEdBQUcsRUFBWDs7QUFDQSxVQUFJO0FBQ0EsWUFBSUMsUUFBUSxHQUFHWixJQUFJLENBQUNhLFFBQUwsQ0FBY1QsUUFBZCxDQUFmO0FBQ0EsWUFBSVUsYUFBYSxHQUFHRixRQUFRLENBQUNHLFVBQTdCO0FBQ0EsWUFBSUMsT0FBTyxHQUFHaEIsSUFBSSxDQUFDaUIsS0FBTCxDQUFXQyxhQUFYLENBQXlCTixRQUFRLENBQUNPLE1BQVQsQ0FBZ0JMLGFBQWEsQ0FBQyxDQUFELENBQTdCLENBQXpCLEVBQTREO0FBQUVNLFVBQUFBLE1BQU0sRUFBRTtBQUFWLFNBQTVELENBQWQ7O0FBR0EsYUFBSyxJQUFJQyxRQUFULElBQXFCTCxPQUFyQixFQUE4QjtBQUMxQixjQUFJTSxLQUFLLEdBQUcsRUFBWjs7QUFDQSxlQUFLLElBQUlDLE9BQVQsSUFBb0JGLFFBQXBCLEVBQThCO0FBQzFCLGdCQUFJRyxNQUFNLENBQUNDLFNBQVAsQ0FBaUJDLGNBQWpCLENBQWdDQyxJQUFoQyxDQUFxQ04sUUFBckMsRUFBK0NFLE9BQS9DLENBQUosRUFBNkQ7QUFDekQsa0JBQUlLLFFBQVEsR0FBR1AsUUFBUSxDQUFDRSxPQUFELENBQXZCOztBQUNBLGtCQUFJLE9BQU9LLFFBQVAsS0FBb0IsUUFBcEIsSUFBZ0NBLFFBQVEsWUFBWUMsTUFBeEQsRUFBZ0U7QUFDNURQLGdCQUFBQSxLQUFLLENBQUNDLE9BQU8sQ0FBQ08sSUFBUixFQUFELENBQUwsR0FBd0JGLFFBQVEsQ0FBQ0UsSUFBVCxFQUF4QjtBQUNILGVBRkQsTUFFTztBQUNIUixnQkFBQUEsS0FBSyxDQUFDQyxPQUFPLENBQUNPLElBQVIsRUFBRCxDQUFMLEdBQXdCRixRQUF4QjtBQUNIO0FBQ0o7QUFDSjs7QUFDRGpCLFVBQUFBLElBQUksQ0FBQ29CLElBQUwsQ0FBVVQsS0FBVjtBQUNIO0FBQ0osT0FwQkQsQ0FvQkUsT0FBT1UsR0FBUCxFQUFZO0FBQ1Z6QixRQUFBQSxNQUFNLENBQUN5QixHQUFELENBQU47QUFDSDs7QUFFRDFCLE1BQUFBLE9BQU8sQ0FBQ0ssSUFBRCxDQUFQO0FBQ0gsS0FoQ00sQ0FBUDtBQWlDSCxHQWxDRDs7QUFvQ0EsU0FBT2IsTUFBUDtBQUNILENBM0NEIiwic291cmNlc0NvbnRlbnQiOlsiLypcclxuICogQ29weXJpZ2h0IChDKSAyMDE1LTIwMTggQ2xvdWRCZWF0IExpbWl0ZWRcclxuICpcclxuICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnlcclxuICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnlcclxuICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgZWl0aGVyIHZlcnNpb24gMyBvZiB0aGUgTGljZW5zZSwgb3JcclxuICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi5cclxuICovXHJcblxyXG5tb2R1bGUuZXhwb3J0cyA9IGZ1bmN0aW9uICgpIHtcclxuICAgIHZhciBtb2R1bGUgPSB7fTtcclxuICAgIHZhciB4bHN4ID0gcmVxdWlyZSgneGxzeCcpO1xyXG4gICAgdmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XHJcblxyXG4gICAgLy8gYXN5bmNocm9ub3VzbHkgcmVhZHMgRXhjZWwgZmlsZSBhbmQgcmV0dXJucyBqc29uIHRoYXQgcmVwcmVzZW50cyB0aGUgZmlyc3Qgc2hlZXRcclxuICAgIG1vZHVsZS5yZWFkID0gZnVuY3Rpb24oZmlsZVBhdGgpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgZXh0ID0gcGF0aC5leHRuYW1lKGZpbGVQYXRoKTtcclxuICAgICAgICAgICAgaWYgKGV4dCAhPT0gJy54bHN4JyAmJiBleHQgIT09ICcueGxzJykge1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgZmlsZSBleHRlbnNpb246ICcgKyBleHQpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdmFyIGpzb24gPSBbXTtcclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIHZhciB3b3JrYm9vayA9IHhsc3gucmVhZEZpbGUoZmlsZVBhdGgpO1xyXG4gICAgICAgICAgICAgICAgdmFyIHNoZWV0TmFtZUxpc3QgPSB3b3JrYm9vay5TaGVldE5hbWVzO1xyXG4gICAgICAgICAgICAgICAgdmFyIGpzb25SYXcgPSB4bHN4LnV0aWxzLnNoZWV0X3RvX2pzb24od29ya2Jvb2suU2hlZXRzW3NoZWV0TmFtZUxpc3RbMF1dLCB7IGRlZnZhbDogJycgfSk7XHJcbiAgICAgICAgICAgICAgICAvLyBqdXN0IGluIGNhc2UgdGhlcmUgd2VyZSBzb21lIGV4dHJhIGxpbmUgYnJlYWtzIGluIHRoZSBjZWxsc1xyXG4gICAgICAgICAgICAgICAgLy8gcmVjcmVhdGUgdGhlIHBhcmFtZXRlcnMgb2JqZWN0cyB3aXRoIGFsbCB0aGUgXFxyIGFuZCBcXG4gYW5kIHdoaXRlIHNwYWNlcyB0cmltbWVkXHJcbiAgICAgICAgICAgICAgICBmb3IgKHZhciBwYXJhbVJhdyBvZiBqc29uUmF3KSB7XHJcbiAgICAgICAgICAgICAgICAgICAgdmFyIHBhcmFtID0ge307XHJcbiAgICAgICAgICAgICAgICAgICAgZm9yICh2YXIgcHJvcFJhdyBpbiBwYXJhbVJhdykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBpZiAoT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKHBhcmFtUmF3LCBwcm9wUmF3KSkge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFyIHZhbHVlUmF3ID0gcGFyYW1SYXdbcHJvcFJhd107XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAodHlwZW9mIHZhbHVlUmF3ID09PSAnc3RyaW5nJyB8fCB2YWx1ZVJhdyBpbnN0YW5jZW9mIFN0cmluZykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhcmFtW3Byb3BSYXcudHJpbSgpXSA9IHZhbHVlUmF3LnRyaW0oKTtcclxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzZSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFyYW1bcHJvcFJhdy50cmltKCldID0gdmFsdWVSYXc7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICAgICAganNvbi5wdXNoKHBhcmFtKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgfSBjYXRjaCAoZXJyKSB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QoZXJyKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgcmVzb2x2ZShqc29uKTtcclxuICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG1vZHVsZTtcclxufTtcclxuIl19
@@ -1,29 +1,38 @@
1
1
  "use strict";
2
2
 
3
3
  require("source-map-support/register");
4
+
4
5
  module.exports = function () {
5
6
  var module = {};
7
+
6
8
  var path = require('path');
9
+
7
10
  module.read = function (filePath, extOverride) {
8
11
  return new Promise((resolve, reject) => {
9
12
  var ext = path.extname(filePath);
13
+
10
14
  if (extOverride) {
11
15
  ext = extOverride;
12
16
  }
17
+
13
18
  if (ext !== '.json' && ext !== '.js') {
14
19
  reject(new Error('Unsupported file extension: ' + ext));
15
20
  }
21
+
16
22
  try {
17
23
  const rows = require(filePath);
24
+
18
25
  if (!Array.isArray(rows)) {
19
26
  reject(new Error('Unsupported file content'));
20
27
  }
28
+
21
29
  resolve(rows);
22
30
  } catch (e) {
23
31
  reject(new Error('Unable to read parameters file: ' + e));
24
32
  }
25
33
  });
26
34
  };
35
+
27
36
  return module;
28
37
  };
29
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJtb2R1bGUiLCJleHBvcnRzIiwicGF0aCIsInJlcXVpcmUiLCJyZWFkIiwiZmlsZVBhdGgiLCJleHRPdmVycmlkZSIsIlByb21pc2UiLCJyZXNvbHZlIiwicmVqZWN0IiwiZXh0IiwiZXh0bmFtZSIsIkVycm9yIiwicm93cyIsIkFycmF5IiwiaXNBcnJheSIsImUiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvbGliL3BhcmFtLXJlYWRlci1qc29uLmpzIl0sInNvdXJjZXNDb250ZW50IjpbIi8qXHJcbiAqIENvcHlyaWdodCAoQykgMjAxNS1wcmVzZW50IENsb3VkQmVhdCBMaW1pdGVkXHJcbiAqXHJcbiAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5XHJcbiAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5XHJcbiAqIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yXHJcbiAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uXHJcbiAqL1xyXG5cclxubW9kdWxlLmV4cG9ydHMgPSBmdW5jdGlvbiAoKSB7XHJcbiAgICB2YXIgbW9kdWxlID0ge307XHJcbiAgICB2YXIgcGF0aCA9IHJlcXVpcmUoJ3BhdGgnKTtcclxuXHJcbiAgICBtb2R1bGUucmVhZCA9IGZ1bmN0aW9uKGZpbGVQYXRoLCBleHRPdmVycmlkZSkge1xyXG4gICAgICAgIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSwgcmVqZWN0KSA9PiB7XHJcbiAgICAgICAgICAgIHZhciBleHQgPSBwYXRoLmV4dG5hbWUoZmlsZVBhdGgpO1xyXG4gICAgICAgICAgICBpZiAoZXh0T3ZlcnJpZGUpIHtcclxuICAgICAgICAgICAgICAgIGV4dCA9IGV4dE92ZXJyaWRlO1xyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGlmIChleHQgIT09ICcuanNvbicgJiYgZXh0ICE9PSAnLmpzJykge1xyXG4gICAgICAgICAgICAgICAgcmVqZWN0KG5ldyBFcnJvcignVW5zdXBwb3J0ZWQgZmlsZSBleHRlbnNpb246ICcgKyBleHQpKTtcclxuICAgICAgICAgICAgfVxyXG5cclxuICAgICAgICAgICAgdHJ5IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJvd3MgPSByZXF1aXJlKGZpbGVQYXRoKTtcclxuICAgICAgICAgICAgICAgIGlmICghQXJyYXkuaXNBcnJheShyb3dzKSkge1xyXG4gICAgICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGZpbGUgY29udGVudCcpKTtcclxuICAgICAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgICAgIHJlc29sdmUocm93cyk7XHJcbiAgICAgICAgICAgIH0gY2F0Y2ggKGUpIHtcclxuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1VuYWJsZSB0byByZWFkIHBhcmFtZXRlcnMgZmlsZTogJyArIGUpKTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfTtcclxuXHJcbiAgICByZXR1cm4gbW9kdWxlO1xyXG59O1xyXG4iXSwibWFwcGluZ3MiOiI7OztBQVNBQSxNQUFNLENBQUNDLE9BQU8sR0FBRyxZQUFZO0VBQ3pCLElBQUlELE1BQU0sR0FBRyxDQUFDLENBQUM7RUFDZixJQUFJRSxJQUFJLEdBQUdDLE9BQU8sQ0FBQyxNQUFNLENBQUM7RUFFMUJILE1BQU0sQ0FBQ0ksSUFBSSxHQUFHLFVBQVNDLFFBQVEsRUFBRUMsV0FBVyxFQUFFO0lBQzFDLE9BQU8sSUFBSUMsT0FBTyxDQUFDLENBQUNDLE9BQU8sRUFBRUMsTUFBTSxLQUFLO01BQ3BDLElBQUlDLEdBQUcsR0FBR1IsSUFBSSxDQUFDUyxPQUFPLENBQUNOLFFBQVEsQ0FBQztNQUNoQyxJQUFJQyxXQUFXLEVBQUU7UUFDYkksR0FBRyxHQUFHSixXQUFXO01BQ3JCO01BQ0EsSUFBSUksR0FBRyxLQUFLLE9BQU8sSUFBSUEsR0FBRyxLQUFLLEtBQUssRUFBRTtRQUNsQ0QsTUFBTSxDQUFDLElBQUlHLEtBQUssQ0FBQyw4QkFBOEIsR0FBR0YsR0FBRyxDQUFDLENBQUM7TUFDM0Q7TUFFQSxJQUFJO1FBQ0EsTUFBTUcsSUFBSSxHQUFHVixPQUFPLENBQUNFLFFBQVEsQ0FBQztRQUM5QixJQUFJLENBQUNTLEtBQUssQ0FBQ0MsT0FBTyxDQUFDRixJQUFJLENBQUMsRUFBRTtVQUN0QkosTUFBTSxDQUFDLElBQUlHLEtBQUssQ0FBQywwQkFBMEIsQ0FBQyxDQUFDO1FBQ2pEO1FBQ0FKLE9BQU8sQ0FBQ0ssSUFBSSxDQUFDO01BQ2pCLENBQUMsQ0FBQyxPQUFPRyxDQUFDLEVBQUU7UUFDUlAsTUFBTSxDQUFDLElBQUlHLEtBQUssQ0FBQyxrQ0FBa0MsR0FBR0ksQ0FBQyxDQUFDLENBQUM7TUFDN0Q7SUFDSixDQUFDLENBQUM7RUFDTixDQUFDO0VBRUQsT0FBT2hCLE1BQU07QUFDakIsQ0FBQyJ9
38
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9saWIvcGFyYW0tcmVhZGVyLWpzb24uanMiXSwibmFtZXMiOlsibW9kdWxlIiwiZXhwb3J0cyIsInBhdGgiLCJyZXF1aXJlIiwicmVhZCIsImZpbGVQYXRoIiwiZXh0T3ZlcnJpZGUiLCJQcm9taXNlIiwicmVzb2x2ZSIsInJlamVjdCIsImV4dCIsImV4dG5hbWUiLCJFcnJvciIsInJvd3MiLCJBcnJheSIsImlzQXJyYXkiLCJlIl0sIm1hcHBpbmdzIjoiOzs7O0FBU0FBLE1BQU0sQ0FBQ0MsT0FBUCxHQUFpQixZQUFZO0FBQ3pCLE1BQUlELE1BQU0sR0FBRyxFQUFiOztBQUNBLE1BQUlFLElBQUksR0FBR0MsT0FBTyxDQUFDLE1BQUQsQ0FBbEI7O0FBRUFILEVBQUFBLE1BQU0sQ0FBQ0ksSUFBUCxHQUFjLFVBQVNDLFFBQVQsRUFBbUJDLFdBQW5CLEVBQWdDO0FBQzFDLFdBQU8sSUFBSUMsT0FBSixDQUFZLENBQUNDLE9BQUQsRUFBVUMsTUFBVixLQUFxQjtBQUNwQyxVQUFJQyxHQUFHLEdBQUdSLElBQUksQ0FBQ1MsT0FBTCxDQUFhTixRQUFiLENBQVY7O0FBQ0EsVUFBSUMsV0FBSixFQUFpQjtBQUNiSSxRQUFBQSxHQUFHLEdBQUdKLFdBQU47QUFDSDs7QUFDRCxVQUFJSSxHQUFHLEtBQUssT0FBUixJQUFtQkEsR0FBRyxLQUFLLEtBQS9CLEVBQXNDO0FBQ2xDRCxRQUFBQSxNQUFNLENBQUMsSUFBSUcsS0FBSixDQUFVLGlDQUFpQ0YsR0FBM0MsQ0FBRCxDQUFOO0FBQ0g7O0FBRUQsVUFBSTtBQUNBLGNBQU1HLElBQUksR0FBR1YsT0FBTyxDQUFDRSxRQUFELENBQXBCOztBQUNBLFlBQUksQ0FBQ1MsS0FBSyxDQUFDQyxPQUFOLENBQWNGLElBQWQsQ0FBTCxFQUEwQjtBQUN0QkosVUFBQUEsTUFBTSxDQUFDLElBQUlHLEtBQUosQ0FBVSwwQkFBVixDQUFELENBQU47QUFDSDs7QUFDREosUUFBQUEsT0FBTyxDQUFDSyxJQUFELENBQVA7QUFDSCxPQU5ELENBTUUsT0FBT0csQ0FBUCxFQUFVO0FBQ1JQLFFBQUFBLE1BQU0sQ0FBQyxJQUFJRyxLQUFKLENBQVUscUNBQXFDSSxDQUEvQyxDQUFELENBQU47QUFDSDtBQUNKLEtBbEJNLENBQVA7QUFtQkgsR0FwQkQ7O0FBc0JBLFNBQU9oQixNQUFQO0FBQ0gsQ0EzQkQiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxyXG4gKiBDb3B5cmlnaHQgKEMpIDIwMTUtcHJlc2VudCBDbG91ZEJlYXQgTGltaXRlZFxyXG4gKlxyXG4gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeVxyXG4gKiBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieVxyXG4gKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvclxyXG4gKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLlxyXG4gKi9cclxuXHJcbm1vZHVsZS5leHBvcnRzID0gZnVuY3Rpb24gKCkge1xyXG4gICAgdmFyIG1vZHVsZSA9IHt9O1xyXG4gICAgdmFyIHBhdGggPSByZXF1aXJlKCdwYXRoJyk7XHJcblxyXG4gICAgbW9kdWxlLnJlYWQgPSBmdW5jdGlvbihmaWxlUGF0aCwgZXh0T3ZlcnJpZGUpIHtcclxuICAgICAgICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICB2YXIgZXh0ID0gcGF0aC5leHRuYW1lKGZpbGVQYXRoKTtcclxuICAgICAgICAgICAgaWYgKGV4dE92ZXJyaWRlKSB7XHJcbiAgICAgICAgICAgICAgICBleHQgPSBleHRPdmVycmlkZTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICBpZiAoZXh0ICE9PSAnLmpzb24nICYmIGV4dCAhPT0gJy5qcycpIHtcclxuICAgICAgICAgICAgICAgIHJlamVjdChuZXcgRXJyb3IoJ1Vuc3VwcG9ydGVkIGZpbGUgZXh0ZW5zaW9uOiAnICsgZXh0KSk7XHJcbiAgICAgICAgICAgIH1cclxuXHJcbiAgICAgICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgICAgICBjb25zdCByb3dzID0gcmVxdWlyZShmaWxlUGF0aCk7XHJcbiAgICAgICAgICAgICAgICBpZiAoIUFycmF5LmlzQXJyYXkocm93cykpIHtcclxuICAgICAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdVbnN1cHBvcnRlZCBmaWxlIGNvbnRlbnQnKSk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXNvbHZlKHJvd3MpO1xyXG4gICAgICAgICAgICB9IGNhdGNoIChlKSB7XHJcbiAgICAgICAgICAgICAgICByZWplY3QobmV3IEVycm9yKCdVbmFibGUgdG8gcmVhZCBwYXJhbWV0ZXJzIGZpbGU6ICcgKyBlKSk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICB9KTtcclxuICAgIH07XHJcblxyXG4gICAgcmV0dXJuIG1vZHVsZTtcclxufTtcclxuIl19