@anansi/core 0.2.2 → 0.4.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.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,49 @@
3
3
  All notable changes to this project will be documented in this file.
4
4
  See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
5
5
 
6
+ ## [0.4.0](https://github.com/ntucker/anansi/compare/@anansi/core@0.3.1...@anansi/core@0.4.0) (2022-05-17)
7
+
8
+
9
+ ### 🚀 Features
10
+
11
+ * SSR uses webpack devserver and responds to code changes ([#1504](https://github.com/ntucker/anansi/issues/1504)) ([25803a5](https://github.com/ntucker/anansi/commit/25803a5b49316c7e73846efbe774d5cbe3eb28a3))
12
+
13
+
14
+ ### 📦 Package
15
+
16
+ * Update babel monorepo to v7.17.12 ([#1505](https://github.com/ntucker/anansi/issues/1505)) ([cdf449c](https://github.com/ntucker/anansi/commit/cdf449c234da377c6968847a500ef77d7340c5bb))
17
+ * Update jest monorepo to ^28.1.0 ([#1493](https://github.com/ntucker/anansi/issues/1493)) ([7cc9df4](https://github.com/ntucker/anansi/commit/7cc9df4a439a0743bf243a5ad8393c62c067aa44))
18
+
19
+
20
+
21
+ ### [0.3.1](https://github.com/ntucker/anansi/compare/@anansi/core@0.3.0...@anansi/core@0.3.1) (2022-05-04)
22
+
23
+
24
+ ### 📦 Package
25
+
26
+ * Update all non-major dependencies ([#1490](https://github.com/ntucker/anansi/issues/1490)) ([c333a59](https://github.com/ntucker/anansi/commit/c333a595dd912e67f64e22b4c4af58e825e75cad))
27
+
28
+
29
+
30
+ ## [0.3.0](https://github.com/ntucker/anansi/compare/@anansi/core@0.2.2...@anansi/core@0.3.0) (2022-04-30)
31
+
32
+
33
+ ### ⚠ 💥 BREAKING CHANGES
34
+
35
+ * Requires TypeScript 4.3 and Jest 28
36
+
37
+ Co-authored-by: Renovate Bot <bot@renovateapp.com>
38
+ Co-authored-by: Nathaniel Tucker <me@ntucker.me>
39
+
40
+ ### 📦 Package
41
+
42
+ * Update babel monorepo to v7.17.10 ([#1487](https://github.com/ntucker/anansi/issues/1487)) ([4cae6b5](https://github.com/ntucker/anansi/commit/4cae6b50855c2307ba1cf4e7293579d51614f978))
43
+ * Update jest monorepo to ^28.0.2 ([#1484](https://github.com/ntucker/anansi/issues/1484)) ([0792dbf](https://github.com/ntucker/anansi/commit/0792dbf9e9fe2c6b22eb5414ec2a7c7aaf1d9e48))
44
+ * Update jest monorepo to ^28.0.3 ([#1486](https://github.com/ntucker/anansi/issues/1486)) ([a5b325a](https://github.com/ntucker/anansi/commit/a5b325af0166351f40c421d4a3a0bef59f6d1218))
45
+ * Update jest monorepo to v28 (major) ([#1479](https://github.com/ntucker/anansi/issues/1479)) ([06338de](https://github.com/ntucker/anansi/commit/06338de8bf871945dac4b6b35155e49fd062bfdb))
46
+
47
+
48
+
6
49
  ### [0.2.2](https://github.com/ntucker/anansi/compare/@anansi/core@0.2.1...@anansi/core@0.2.2) (2022-04-22)
7
50
 
8
51
 
@@ -11,4 +11,4 @@ async function floodSpouts(spouts) {
11
11
  } = await spouts();
12
12
  (0, _client.hydrateRoot)(document, app);
13
13
  }
14
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9mbG9vZFNwb3V0cy50c3giXSwibmFtZXMiOlsiZmxvb2RTcG91dHMiLCJzcG91dHMiLCJhcHAiLCJkb2N1bWVudCJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7QUFFZSxlQUFlQSxXQUFmLENBQ2JDLE1BRGEsRUFJYjtBQUNBLFFBQU07QUFBRUMsSUFBQUE7QUFBRixNQUFVLE1BQU1ELE1BQU0sRUFBNUI7QUFFQSwyQkFBWUUsUUFBWixFQUFzQkQsR0FBdEI7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGh5ZHJhdGVSb290IH0gZnJvbSAncmVhY3QtZG9tL2NsaWVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGZsb29kU3BvdXRzKFxuICBzcG91dHM6ICgpID0+IFByb21pc2U8e1xuICAgIGFwcDogSlNYLkVsZW1lbnQ7XG4gIH0+LFxuKSB7XG4gIGNvbnN0IHsgYXBwIH0gPSBhd2FpdCBzcG91dHMoKTtcblxuICBoeWRyYXRlUm9vdChkb2N1bWVudCwgYXBwKTtcbn1cbiJdfQ==
14
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmbG9vZFNwb3V0cyIsInNwb3V0cyIsImFwcCIsImh5ZHJhdGVSb290IiwiZG9jdW1lbnQiXSwic291cmNlcyI6WyIuLi9zcmMvZmxvb2RTcG91dHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGh5ZHJhdGVSb290IH0gZnJvbSAncmVhY3QtZG9tL2NsaWVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGZsb29kU3BvdXRzKFxuICBzcG91dHM6ICgpID0+IFByb21pc2U8e1xuICAgIGFwcDogSlNYLkVsZW1lbnQ7XG4gIH0+LFxuKSB7XG4gIGNvbnN0IHsgYXBwIH0gPSBhd2FpdCBzcG91dHMoKTtcblxuICBoeWRyYXRlUm9vdChkb2N1bWVudCwgYXBwKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7QUFFZSxlQUFlQSxXQUFmLENBQ2JDLE1BRGEsRUFJYjtFQUNBLE1BQU07SUFBRUM7RUFBRixJQUFVLE1BQU1ELE1BQU0sRUFBNUI7RUFFQSxJQUFBRSxtQkFBQSxFQUFZQyxRQUFaLEVBQXNCRixHQUF0QjtBQUNEIn0=
package/lib/index.js CHANGED
@@ -20,4 +20,4 @@ exports.restHooksSpout = _restHooks.default;
20
20
  var _router = _interopRequireDefault(require("./spouts/router"));
21
21
 
22
22
  exports.routerSpout = _router.default;
23
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0IGFzIGZsb29kU3BvdXRzIH0gZnJvbSAnLi9mbG9vZFNwb3V0cyc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGRvY3VtZW50U3BvdXQgfSBmcm9tICcuL3Nwb3V0cy9kb2N1bWVudCc7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlc3RIb29rc1Nwb3V0IH0gZnJvbSAnLi9zcG91dHMvcmVzdEhvb2tzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcm91dGVyU3BvdXQgfSBmcm9tICcuL3Nwb3V0cy9yb3V0ZXInO1xuIl19
23
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgZmxvb2RTcG91dHMgfSBmcm9tICcuL2Zsb29kU3BvdXRzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZG9jdW1lbnRTcG91dCB9IGZyb20gJy4vc3BvdXRzL2RvY3VtZW50JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcmVzdEhvb2tzU3BvdXQgfSBmcm9tICcuL3Nwb3V0cy9yZXN0SG9va3MnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByb3V0ZXJTcG91dCB9IGZyb20gJy4vc3BvdXRzL3JvdXRlcic7XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQSJ9
@@ -24,4 +24,4 @@ exports.routerSpout = _router.default;
24
24
  var _prefetch = _interopRequireDefault(require("./spouts/prefetch.server"));
25
25
 
26
26
  exports.prefetchSpout = _prefetch.default;
27
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5zZXJ2ZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0EiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0IGFzIGxheVNwb3V0cyB9IGZyb20gJy4vbGF5U3BvdXRzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZG9jdW1lbnRTcG91dCB9IGZyb20gJy4vc3BvdXRzL2RvY3VtZW50LnNlcnZlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlc3RIb29rc1Nwb3V0IH0gZnJvbSAnLi9zcG91dHMvcmVzdEhvb2tzLnNlcnZlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJvdXRlclNwb3V0IH0gZnJvbSAnLi9zcG91dHMvcm91dGVyLnNlcnZlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByZWZldGNoU3BvdXQgfSBmcm9tICcuL3Nwb3V0cy9wcmVmZXRjaC5zZXJ2ZXInO1xuIl19
27
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LnNlcnZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0IGFzIGxheVNwb3V0cyB9IGZyb20gJy4vbGF5U3BvdXRzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZG9jdW1lbnRTcG91dCB9IGZyb20gJy4vc3BvdXRzL2RvY3VtZW50LnNlcnZlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlc3RIb29rc1Nwb3V0IH0gZnJvbSAnLi9zcG91dHMvcmVzdEhvb2tzLnNlcnZlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJvdXRlclNwb3V0IH0gZnJvbSAnLi9zcG91dHMvcm91dGVyLnNlcnZlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByZWZldGNoU3BvdXQgfSBmcm9tICcuL3Nwb3V0cy9wcmVmZXRjaC5zZXJ2ZXInO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQSJ9
@@ -1 +1 @@
1
- {"version":3,"file":"laySpouts.d.ts","sourceRoot":"","sources":["../src/laySpouts.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC;IACtC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;CAClB,CAAC,EACF,EAAE,SAAgB,EAAE,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,UAkDlD"}
1
+ {"version":3,"file":"laySpouts.d.ts","sourceRoot":"","sources":["../src/laySpouts.tsx"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAE7C,MAAM,CAAC,OAAO,UAAU,SAAS,CAC/B,MAAM,EAAE,CAAC,KAAK,EAAE,WAAW,KAAK,OAAO,CAAC;IACtC,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;CAClB,CAAC,EACF,EAAE,SAAe,EAAE,GAAE;IAAE,SAAS,CAAC,EAAE,MAAM,CAAA;CAAO,UAkDjD"}
package/lib/laySpouts.js CHANGED
@@ -6,7 +6,7 @@ exports.default = laySpouts;
6
6
  var _server = require("react-dom/server");
7
7
 
8
8
  function laySpouts(spouts, {
9
- timeoutMS = 1000
9
+ timeoutMS = 100
10
10
  } = {}) {
11
11
  const render = async (clientManifest, req, res) => {
12
12
  const {
@@ -68,4 +68,4 @@ function laySpouts(spouts, {
68
68
 
69
69
  return render;
70
70
  }
71
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9sYXlTcG91dHMudHN4Il0sIm5hbWVzIjpbImxheVNwb3V0cyIsInNwb3V0cyIsInRpbWVvdXRNUyIsInJlbmRlciIsImNsaWVudE1hbmlmZXN0IiwicmVxIiwicmVzIiwiYXBwIiwiZGlkRXJyb3IiLCJwaXBlIiwiYWJvcnQiLCJvblNoZWxsUmVhZHkiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwib25TaGVsbEVycm9yIiwib25FcnJvciIsIngiLCJjb25zb2xlIiwiZXJyb3IiLCJzZXRUaW1lb3V0Il0sIm1hcHBpbmdzIjoiOzs7OztBQUFBOztBQUtlLFNBQVNBLFNBQVQsQ0FDYkMsTUFEYSxFQUliO0FBQUVDLEVBQUFBLFNBQVMsR0FBRztBQUFkLElBQStDLEVBSmxDLEVBS2I7QUFDQSxRQUFNQyxNQUFjLEdBQUcsT0FBT0MsY0FBUCxFQUF1QkMsR0FBdkIsRUFBNEJDLEdBQTVCLEtBQW9DO0FBQ3pELFVBQU07QUFBRUMsTUFBQUE7QUFBRixRQUFVLE1BQU1OLE1BQU0sQ0FBQztBQUFFRyxNQUFBQSxjQUFGO0FBQWtCQyxNQUFBQSxHQUFsQjtBQUF1QkMsTUFBQUE7QUFBdkIsS0FBRCxDQUE1QjtBQUNBLFFBQUlFLFFBQVEsR0FBRyxLQUFmO0FBQ0EsVUFBTTtBQUFFQyxNQUFBQSxJQUFGO0FBQVFDLE1BQUFBO0FBQVIsUUFBa0Isb0NBQ3RCSCxHQURzQjtBQUV0QjtBQUNOO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNNO0FBQ0U7QUFDQUksTUFBQUEsWUFBWSxHQUFHO0FBQ2I7QUFDQTtBQUNBTCxRQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUJKLFFBQVEsR0FBRyxHQUFILEdBQVMsR0FBbEM7QUFDQUYsUUFBQUEsR0FBRyxDQUFDTyxTQUFKLENBQWMsY0FBZCxFQUE4QixXQUE5QjtBQUNBSixRQUFBQSxJQUFJLENBQUNILEdBQUQsQ0FBSjtBQUNELE9BUkg7O0FBU0VRLE1BQUFBLFlBQVksR0FBRztBQUNiTixRQUFBQSxRQUFRLEdBQUcsSUFBWDtBQUNBRixRQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQUgsUUFBQUEsSUFBSSxDQUFDSCxHQUFELENBQUo7QUFDRCxPQWJIOztBQWNFUyxNQUFBQSxPQUFPLENBQUNDLENBQUQsRUFBUztBQUNkUixRQUFBQSxRQUFRLEdBQUcsSUFBWDtBQUNBUyxRQUFBQSxPQUFPLENBQUNDLEtBQVIsQ0FBY0YsQ0FBZDtBQUNBVixRQUFBQSxHQUFHLENBQUNNLFVBQUosR0FBaUIsR0FBakI7QUFDQUgsUUFBQUEsSUFBSSxDQUFDSCxHQUFELENBQUo7QUFDRDs7QUFuQkgsS0FsQnNCLENBQXhCLENBSHlELENBMkN6RDtBQUNBOztBQUNBYSxJQUFBQSxVQUFVLENBQUNULEtBQUQsRUFBUVIsU0FBUixDQUFWO0FBQ0QsR0E5Q0Q7O0FBK0NBLFNBQU9DLE1BQVA7QUFDRCIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IHJlbmRlclRvUGlwZWFibGVTdHJlYW0gYXMgcmVhY3RSZW5kZXIgfSBmcm9tICdyZWFjdC1kb20vc2VydmVyJztcblxuaW1wb3J0IHsgUmVuZGVyIH0gZnJvbSAnLi9zY3JpcHRzL3R5cGVzJztcbmltcG9ydCB7IFNlcnZlclByb3BzIH0gZnJvbSAnLi9zcG91dHMvdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBsYXlTcG91dHMoXG4gIHNwb3V0czogKHByb3BzOiBTZXJ2ZXJQcm9wcykgPT4gUHJvbWlzZTx7XG4gICAgYXBwOiBKU1guRWxlbWVudDtcbiAgfT4sXG4gIHsgdGltZW91dE1TID0gMTAwMCB9OiB7IHRpbWVvdXRNUz86IG51bWJlciB9ID0ge30sXG4pIHtcbiAgY29uc3QgcmVuZGVyOiBSZW5kZXIgPSBhc3luYyAoY2xpZW50TWFuaWZlc3QsIHJlcSwgcmVzKSA9PiB7XG4gICAgY29uc3QgeyBhcHAgfSA9IGF3YWl0IHNwb3V0cyh7IGNsaWVudE1hbmlmZXN0LCByZXEsIHJlcyB9KTtcbiAgICBsZXQgZGlkRXJyb3IgPSBmYWxzZTtcbiAgICBjb25zdCB7IHBpcGUsIGFib3J0IH0gPSByZWFjdFJlbmRlcihcbiAgICAgIGFwcCxcbiAgICAgIC8qXG4gICAgICBUaGlzIGlzIG5vdCBkb2N1bWVudGVkLCBzbyBpbmNsdWRlZCB0aGUgdHlwZXMgaGVyZSBmb3IgcmVmZXJlbmNlOlxudHlwZSBPcHRpb25zID0ge3xcbiAgaWRlbnRpZmllclByZWZpeD86IHN0cmluZyxcbiAgbmFtZXNwYWNlVVJJPzogc3RyaW5nLFxuICBub25jZT86IHN0cmluZyxcbiAgYm9vdHN0cmFwU2NyaXB0Q29udGVudD86IHN0cmluZyxcbiAgYm9vdHN0cmFwU2NyaXB0cz86IEFycmF5PHN0cmluZz4sXG4gIGJvb3RzdHJhcE1vZHVsZXM/OiBBcnJheTxzdHJpbmc+LFxuICBwcm9ncmVzc2l2ZUNodW5rU2l6ZT86IG51bWJlcixcbiAgb25TaGVsbFJlYWR5PzogKCkgPT4gdm9pZCxcbiAgb25TaGVsbEVycm9yPzogKCkgPT4gdm9pZCxcbiAgb25BbGxSZWFkeT86ICgpID0+IHZvaWQsXG4gIG9uRXJyb3I/OiAoZXJyb3I6IG1peGVkKSA9PiB2b2lkLFxufH07XG4gICovXG4gICAgICB7XG4gICAgICAgIC8vYm9vdHN0cmFwU2NyaXB0czogYXNzZXRzLmZpbHRlcihhc3NldCA9PiBhc3NldC5lbmRzV2l0aCgnLmpzJykpLFxuICAgICAgICBvblNoZWxsUmVhZHkoKSB7XG4gICAgICAgICAgLy9tYW5hZ2Vycy5mb3JFYWNoKG1hbmFnZXIgPT4gbWFuYWdlci5jbGVhbnVwKCkpO1xuICAgICAgICAgIC8vIElmIHNvbWV0aGluZyBlcnJvcmVkIGJlZm9yZSB3ZSBzdGFydGVkIHN0cmVhbWluZywgd2Ugc2V0IHRoZSBlcnJvciBjb2RlIGFwcHJvcHJpYXRlbHkuXG4gICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSBkaWRFcnJvciA/IDUwMCA6IDIwMDtcbiAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LXR5cGUnLCAndGV4dC9odG1sJyk7XG4gICAgICAgICAgcGlwZShyZXMpO1xuICAgICAgICB9LFxuICAgICAgICBvblNoZWxsRXJyb3IoKSB7XG4gICAgICAgICAgZGlkRXJyb3IgPSB0cnVlO1xuICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNTAwO1xuICAgICAgICAgIHBpcGUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25FcnJvcih4OiBhbnkpIHtcbiAgICAgICAgICBkaWRFcnJvciA9IHRydWU7XG4gICAgICAgICAgY29uc29sZS5lcnJvcih4KTtcbiAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcbiAgICAgICAgICBwaXBlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICB9LFxuICAgICk7XG4gICAgLy8gQWJhbmRvbiBhbmQgc3dpdGNoIHRvIGNsaWVudCByZW5kZXJpbmcgaWYgZW5vdWdoIHRpbWUgcGFzc2VzLlxuICAgIC8vIFRyeSBsb3dlcmluZyB0aGlzIHRvIHNlZSB0aGUgY2xpZW50IHJlY292ZXIuXG4gICAgc2V0VGltZW91dChhYm9ydCwgdGltZW91dE1TKTtcbiAgfTtcbiAgcmV0dXJuIHJlbmRlcjtcbn1cbiJdfQ==
71
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJsYXlTcG91dHMiLCJzcG91dHMiLCJ0aW1lb3V0TVMiLCJyZW5kZXIiLCJjbGllbnRNYW5pZmVzdCIsInJlcSIsInJlcyIsImFwcCIsImRpZEVycm9yIiwicGlwZSIsImFib3J0IiwicmVhY3RSZW5kZXIiLCJvblNoZWxsUmVhZHkiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwib25TaGVsbEVycm9yIiwib25FcnJvciIsIngiLCJjb25zb2xlIiwiZXJyb3IiLCJzZXRUaW1lb3V0Il0sInNvdXJjZXMiOlsiLi4vc3JjL2xheVNwb3V0cy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgcmVuZGVyVG9QaXBlYWJsZVN0cmVhbSBhcyByZWFjdFJlbmRlciB9IGZyb20gJ3JlYWN0LWRvbS9zZXJ2ZXInO1xuXG5pbXBvcnQgeyBSZW5kZXIgfSBmcm9tICcuL3NjcmlwdHMvdHlwZXMnO1xuaW1wb3J0IHsgU2VydmVyUHJvcHMgfSBmcm9tICcuL3Nwb3V0cy90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGxheVNwb3V0cyhcbiAgc3BvdXRzOiAocHJvcHM6IFNlcnZlclByb3BzKSA9PiBQcm9taXNlPHtcbiAgICBhcHA6IEpTWC5FbGVtZW50O1xuICB9PixcbiAgeyB0aW1lb3V0TVMgPSAxMDAgfTogeyB0aW1lb3V0TVM/OiBudW1iZXIgfSA9IHt9LFxuKSB7XG4gIGNvbnN0IHJlbmRlcjogUmVuZGVyID0gYXN5bmMgKGNsaWVudE1hbmlmZXN0LCByZXEsIHJlcykgPT4ge1xuICAgIGNvbnN0IHsgYXBwIH0gPSBhd2FpdCBzcG91dHMoeyBjbGllbnRNYW5pZmVzdCwgcmVxLCByZXMgfSk7XG4gICAgbGV0IGRpZEVycm9yID0gZmFsc2U7XG4gICAgY29uc3QgeyBwaXBlLCBhYm9ydCB9ID0gcmVhY3RSZW5kZXIoXG4gICAgICBhcHAsXG4gICAgICAvKlxuICAgICAgVGhpcyBpcyBub3QgZG9jdW1lbnRlZCwgc28gaW5jbHVkZWQgdGhlIHR5cGVzIGhlcmUgZm9yIHJlZmVyZW5jZTpcbnR5cGUgT3B0aW9ucyA9IHt8XG4gIGlkZW50aWZpZXJQcmVmaXg/OiBzdHJpbmcsXG4gIG5hbWVzcGFjZVVSST86IHN0cmluZyxcbiAgbm9uY2U/OiBzdHJpbmcsXG4gIGJvb3RzdHJhcFNjcmlwdENvbnRlbnQ/OiBzdHJpbmcsXG4gIGJvb3RzdHJhcFNjcmlwdHM/OiBBcnJheTxzdHJpbmc+LFxuICBib290c3RyYXBNb2R1bGVzPzogQXJyYXk8c3RyaW5nPixcbiAgcHJvZ3Jlc3NpdmVDaHVua1NpemU/OiBudW1iZXIsXG4gIG9uU2hlbGxSZWFkeT86ICgpID0+IHZvaWQsXG4gIG9uU2hlbGxFcnJvcj86ICgpID0+IHZvaWQsXG4gIG9uQWxsUmVhZHk/OiAoKSA9PiB2b2lkLFxuICBvbkVycm9yPzogKGVycm9yOiBtaXhlZCkgPT4gdm9pZCxcbnx9O1xuICAqL1xuICAgICAge1xuICAgICAgICAvL2Jvb3RzdHJhcFNjcmlwdHM6IGFzc2V0cy5maWx0ZXIoYXNzZXQgPT4gYXNzZXQuZW5kc1dpdGgoJy5qcycpKSxcbiAgICAgICAgb25TaGVsbFJlYWR5KCkge1xuICAgICAgICAgIC8vbWFuYWdlcnMuZm9yRWFjaChtYW5hZ2VyID0+IG1hbmFnZXIuY2xlYW51cCgpKTtcbiAgICAgICAgICAvLyBJZiBzb21ldGhpbmcgZXJyb3JlZCBiZWZvcmUgd2Ugc3RhcnRlZCBzdHJlYW1pbmcsIHdlIHNldCB0aGUgZXJyb3IgY29kZSBhcHByb3ByaWF0ZWx5LlxuICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gZGlkRXJyb3IgPyA1MDAgOiAyMDA7XG4gICAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC10eXBlJywgJ3RleHQvaHRtbCcpO1xuICAgICAgICAgIHBpcGUocmVzKTtcbiAgICAgICAgfSxcbiAgICAgICAgb25TaGVsbEVycm9yKCkge1xuICAgICAgICAgIGRpZEVycm9yID0gdHJ1ZTtcbiAgICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDUwMDtcbiAgICAgICAgICBwaXBlKHJlcyk7XG4gICAgICAgIH0sXG4gICAgICAgIG9uRXJyb3IoeDogYW55KSB7XG4gICAgICAgICAgZGlkRXJyb3IgPSB0cnVlO1xuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoeCk7XG4gICAgICAgICAgcmVzLnN0YXR1c0NvZGUgPSA1MDA7XG4gICAgICAgICAgcGlwZShyZXMpO1xuICAgICAgICB9LFxuICAgICAgfSxcbiAgICApO1xuICAgIC8vIEFiYW5kb24gYW5kIHN3aXRjaCB0byBjbGllbnQgcmVuZGVyaW5nIGlmIGVub3VnaCB0aW1lIHBhc3Nlcy5cbiAgICAvLyBUcnkgbG93ZXJpbmcgdGhpcyB0byBzZWUgdGhlIGNsaWVudCByZWNvdmVyLlxuICAgIHNldFRpbWVvdXQoYWJvcnQsIHRpbWVvdXRNUyk7XG4gIH07XG4gIHJldHVybiByZW5kZXI7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBS2UsU0FBU0EsU0FBVCxDQUNiQyxNQURhLEVBSWI7RUFBRUMsU0FBUyxHQUFHO0FBQWQsSUFBOEMsRUFKakMsRUFLYjtFQUNBLE1BQU1DLE1BQWMsR0FBRyxPQUFPQyxjQUFQLEVBQXVCQyxHQUF2QixFQUE0QkMsR0FBNUIsS0FBb0M7SUFDekQsTUFBTTtNQUFFQztJQUFGLElBQVUsTUFBTU4sTUFBTSxDQUFDO01BQUVHLGNBQUY7TUFBa0JDLEdBQWxCO01BQXVCQztJQUF2QixDQUFELENBQTVCO0lBQ0EsSUFBSUUsUUFBUSxHQUFHLEtBQWY7SUFDQSxNQUFNO01BQUVDLElBQUY7TUFBUUM7SUFBUixJQUFrQixJQUFBQyw4QkFBQSxFQUN0QkosR0FEc0I7SUFFdEI7QUFDTjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7SUFDTTtNQUNFO01BQ0FLLFlBQVksR0FBRztRQUNiO1FBQ0E7UUFDQU4sR0FBRyxDQUFDTyxVQUFKLEdBQWlCTCxRQUFRLEdBQUcsR0FBSCxHQUFTLEdBQWxDO1FBQ0FGLEdBQUcsQ0FBQ1EsU0FBSixDQUFjLGNBQWQsRUFBOEIsV0FBOUI7UUFDQUwsSUFBSSxDQUFDSCxHQUFELENBQUo7TUFDRCxDQVJIOztNQVNFUyxZQUFZLEdBQUc7UUFDYlAsUUFBUSxHQUFHLElBQVg7UUFDQUYsR0FBRyxDQUFDTyxVQUFKLEdBQWlCLEdBQWpCO1FBQ0FKLElBQUksQ0FBQ0gsR0FBRCxDQUFKO01BQ0QsQ0FiSDs7TUFjRVUsT0FBTyxDQUFDQyxDQUFELEVBQVM7UUFDZFQsUUFBUSxHQUFHLElBQVg7UUFDQVUsT0FBTyxDQUFDQyxLQUFSLENBQWNGLENBQWQ7UUFDQVgsR0FBRyxDQUFDTyxVQUFKLEdBQWlCLEdBQWpCO1FBQ0FKLElBQUksQ0FBQ0gsR0FBRCxDQUFKO01BQ0Q7O0lBbkJILENBbEJzQixDQUF4QixDQUh5RCxDQTJDekQ7SUFDQTs7SUFDQWMsVUFBVSxDQUFDVixLQUFELEVBQVFSLFNBQVIsQ0FBVjtFQUNELENBOUNEOztFQStDQSxPQUFPQyxNQUFQO0FBQ0QifQ==
@@ -1 +1 @@
1
- {"version":3,"file":"startDevserver.d.ts","sourceRoot":"","sources":["../../src/scripts/startDevserver.ts"],"names":[],"mappings":";AAiBA,OAAO,sBAAsB,CAAC"}
1
+ {"version":3,"file":"startDevserver.d.ts","sourceRoot":"","sources":["../../src/scripts/startDevserver.ts"],"names":[],"mappings":";AAmBA,OAAO,sBAAsB,CAAC"}
@@ -11,8 +11,6 @@ var _path = _interopRequireDefault(require("path"));
11
11
 
12
12
  var _webpack = _interopRequireDefault(require("webpack"));
13
13
 
14
- var _webpackHotMiddleware = _interopRequireDefault(require("webpack-hot-middleware"));
15
-
16
14
  var _memfs = require("memfs");
17
15
 
18
16
  var _express = _interopRequireDefault(require("express"));
@@ -29,8 +27,16 @@ var _unionfs = require("unionfs");
29
27
 
30
28
  var _compression = _interopRequireDefault(require("compression"));
31
29
 
30
+ var _webpackDevServer = _interopRequireDefault(require("webpack-dev-server"));
31
+
32
+ var _importFresh = _interopRequireDefault(require("import-fresh"));
33
+
34
+ var _chalk = _interopRequireDefault(require("chalk"));
35
+
32
36
  require("cross-fetch/polyfill");
33
37
 
38
+ var _webpackConfigs$, _webpackConfigs$$devS;
39
+
34
40
  // eslint-disable-next-line @typescript-eslint/no-var-requires
35
41
  const webpackConfig = require(require.resolve( // TODO: use normal resolution algorithm to find webpack file
36
42
  _path.default.join(process.cwd(), 'webpack.config')));
@@ -45,7 +51,8 @@ if (!entrypoint) {
45
51
  process.exit(-1);
46
52
  }
47
53
 
48
- const loader = (0, _ora.default)('Building the assets').start(); // Set up in memory filesystem
54
+ console.log(_chalk.default.greenBright(`Starting SSR at`), _chalk.default.cyanBright(process.env.WEBPACK_PUBLIC_HOST));
55
+ const loader = (0, _ora.default)().start(); // Set up in memory filesystem
49
56
 
50
57
  const volume = new _memfs.Volume();
51
58
  const fs = (0, _memfs.createFsFromVolume)(volume);
@@ -82,17 +89,18 @@ const webpackConfigs = [webpackConfig({
82
89
  }, {
83
90
  mode: 'development'
84
91
  }), webpackConfig({
85
- entrypoint: hotEntry(entrypoint.replace('.tsx', '.server.tsx')).name,
92
+ entrypoint: entrypoint.replace('.tsx', '.server.tsx'),
86
93
  name: 'server'
87
94
  }, {
88
95
  mode: 'development',
89
96
  target: 'node'
90
- })]; // initialize the webpack compiler
97
+ })]; // only have one output for server so we can avoid cached modules
98
+
99
+ webpackConfigs[1].plugins.push(new _webpack.default.optimize.LimitChunkCountPlugin({
100
+ maxChunks: 1
101
+ })); // initialize the webpack compiler
91
102
 
92
103
  const compiler = (0, _webpack.default)(webpackConfigs);
93
- compiler.outputFileSystem = { ...fs,
94
- join: _path.default.join
95
- };
96
104
 
97
105
  _sourceMapSupport.default.install({
98
106
  hookRequire: true
@@ -115,20 +123,22 @@ function handleErrors(fn) {
115
123
  next(x);
116
124
  }
117
125
  };
118
- } // Start the express server after the first compilation
126
+ }
119
127
 
128
+ let render; // Start the express server after the first compilation
120
129
 
121
130
  function initializeApp(stats) {
122
131
  var _clientStats$compilat, _clientStats$compilat2, _serverStats$compilat, _serverStats$compilat2;
123
132
 
124
- loader.info('Launching server');
125
133
  const [clientStats, serverStats] = stats;
126
134
 
127
135
  if (clientStats !== null && clientStats !== void 0 && (_clientStats$compilat = clientStats.compilation) !== null && _clientStats$compilat !== void 0 && (_clientStats$compilat2 = _clientStats$compilat.errors) !== null && _clientStats$compilat2 !== void 0 && _clientStats$compilat2.length || serverStats !== null && serverStats !== void 0 && (_serverStats$compilat = serverStats.compilation) !== null && _serverStats$compilat !== void 0 && (_serverStats$compilat2 = _serverStats$compilat.errors) !== null && _serverStats$compilat2 !== void 0 && _serverStats$compilat2.length) {
128
- console.log('Errors for client build: ', clientStats.compilation.errors);
129
- console.log('Errors for server build:', serverStats.compilation.errors); // TODO: handle more gracefully
136
+ loader.fail('Errors for client build: ' + clientStats.compilation.errors);
137
+ loader.fail('Errors for server build: ' + serverStats.compilation.errors); // TODO: handle more gracefully
130
138
 
131
139
  process.exit(-1);
140
+ } else {
141
+ loader.info('Launching server');
132
142
  }
133
143
 
134
144
  const wrappingApp = (0, _express.default)(); // eslint-disable-next-line
@@ -136,19 +146,12 @@ function initializeApp(stats) {
136
146
 
137
147
  wrappingApp.use((0, _compression.default)()); // ASSETS
138
148
 
139
- wrappingApp.use((0, _webpackHotMiddleware.default)(compiler.compilers[0], {
140
- log: console.log,
141
- path: '/__webpack_hmr',
142
- heartbeat: 10 * 1000 //noInfo: true,
143
- //name: 'client',
144
-
145
- }));
146
149
  const clientManifest = clientStats.toJson();
147
150
 
148
151
  const assetRoute = async (req, res) => {
149
- var _req$url$substr, _req$url, _clientManifest$outpu;
152
+ var _req$url$substring$sp, _req$url, _clientManifest$outpu;
150
153
 
151
- const filename = (_req$url$substr = (_req$url = req.url) === null || _req$url === void 0 ? void 0 : _req$url.substr(process.env.WEBPACK_PUBLIC_PATH.length)) != null ? _req$url$substr : '';
154
+ const filename = (_req$url$substring$sp = (_req$url = req.url) === null || _req$url === void 0 ? void 0 : _req$url.substring(process.env.WEBPACK_PUBLIC_PATH.length).split('?')[0]) != null ? _req$url$substring$sp : '';
152
155
 
153
156
  const assetPath = _path.default.join((_clientManifest$outpu = clientManifest.outputPath) != null ? _clientManifest$outpu : '', filename);
154
157
 
@@ -166,8 +169,7 @@ function initializeApp(stats) {
166
169
  wrappingApp.get(`${process.env.WEBPACK_PUBLIC_PATH}*`, assetRoute); // SERVER SIDE RENDERING
167
170
  // eslint-disable-next-line @typescript-eslint/no-var-requires
168
171
 
169
- const render = require(getServerBundle(serverStats)).default;
170
-
172
+ render = require(getServerBundle(serverStats)).default;
171
173
  wrappingApp.get('/*', handleErrors(async function (req, res) {
172
174
  if (req.url.endsWith('favicon.ico')) {
173
175
  res.statusCode = 404;
@@ -182,7 +184,7 @@ function initializeApp(stats) {
182
184
  await render(clientManifest, req, res);
183
185
  }));
184
186
  server = wrappingApp.listen(PORT, () => {
185
- console.log(`Listening at ${PORT}...`);
187
+ loader.succeed(`SSR Running`);
186
188
  }).on('error', function (error) {
187
189
  if (error.syscall !== 'listen') {
188
190
  throw error;
@@ -207,44 +209,61 @@ function initializeApp(stats) {
207
209
  throw error;
208
210
  }
209
211
  });
210
- } // Watch the files for changes
211
-
212
+ }
212
213
 
213
- const watcher = compiler.watch({}, (err, multiStats) => {
214
- if (!multiStats) {
215
- console.error('stats not send');
216
- process.exit(-1);
214
+ const devServer = new _webpackDevServer.default( // write to memory filesystem so we can import
215
+ { ...webpackConfigs[0].devServer,
216
+
217
+ /*client: {
218
+ ...webpackConfigs[0].devServer?.client,
219
+ webSocketURL: {
220
+ ...webpackConfigs[0].devServer?.client.webSocketURL,
221
+ port: 8080,
222
+ },
223
+ },*/
224
+ devMiddleware: { ...((_webpackConfigs$ = webpackConfigs[0]) === null || _webpackConfigs$ === void 0 ? void 0 : (_webpackConfigs$$devS = _webpackConfigs$.devServer) === null || _webpackConfigs$$devS === void 0 ? void 0 : _webpackConfigs$$devS.devMiddleware),
225
+ outputFileSystem: { ...fs,
226
+ join: _path.default.join
227
+ }
217
228
  }
229
+ }, compiler);
230
+
231
+ const runServer = async () => {
232
+ await devServer.start();
233
+ devServer.compiler.hooks.done.tap('Anansi Server', multiStats => {
234
+ if (!multiStats) {
235
+ loader.fail('stats not send');
236
+ process.exit(-1);
237
+ }
218
238
 
219
- if (err) {
220
- console.error('Error in compilation');
221
- console.error(err);
222
- process.exit(-1);
223
- }
239
+ if (!Object.hasOwn(multiStats, 'stats')) return;
224
240
 
225
- if (server) {
226
- loader.succeed('Webpack bundle updated');
227
- return;
228
- }
241
+ if (server && multiStats.stats.length > 1) {
242
+ render = (0, _importFresh.default)(getServerBundle(multiStats.stats[1])).default;
243
+ return;
244
+ }
229
245
 
230
- try {
231
- initializeApp(multiStats.stats);
232
- } catch (e) {
233
- console.error('Failed to initialize app');
234
- console.error(e);
235
- }
236
- });
237
- process.on('SIGINT', () => {
238
- var _server;
246
+ if (!server) {
247
+ try {
248
+ initializeApp(multiStats.stats);
249
+ } catch (e) {
250
+ loader.fail('Failed to initialize app');
251
+ console.error(e);
252
+ }
253
+ }
254
+ });
255
+ };
256
+
257
+ const stopServer = async () => {
258
+ loader.info('Stopping server...');
259
+ await devServer.stop();
260
+ loader.info('Server closed');
261
+ };
239
262
 
263
+ process.on('SIGINT', () => {
240
264
  loader.warn('Received SIGINT, devserver shutting down');
241
- if (server) console.log('Closing server');
242
- (_server = server) === null || _server === void 0 ? void 0 : _server.close(() => {
243
- loader.info('Server closed');
244
- });
245
- watcher.close(() => {
246
- loader.info('webpack build stopped');
247
- });
265
+ stopServer();
248
266
  process.exit(-1);
249
267
  });
250
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3N0YXJ0RGV2c2VydmVyLnRzIl0sIm5hbWVzIjpbIndlYnBhY2tDb25maWciLCJyZXF1aXJlIiwicmVzb2x2ZSIsInBhdGgiLCJqb2luIiwicHJvY2VzcyIsImN3ZCIsImVudHJ5cG9pbnQiLCJhcmd2IiwiUE9SVCIsImVudiIsIldFQlBBQ0tfUFVCTElDX0hPU1QiLCJXRUJQQUNLX1BVQkxJQ19QQVRIIiwiY29uc29sZSIsImxvZyIsImV4aXQiLCJsb2FkZXIiLCJzdGFydCIsInZvbHVtZSIsIlZvbHVtZSIsImZzIiwidWZzIiwidXNlIiwiZGlza0ZzIiwicmVhZEZpbGUiLCJzZXJ2ZXIiLCJob3RFbnRyeSIsImVudHJ5UGF0aCIsImdlbmVyYXRlZEVudHJ5cG9pbnQiLCJ0bXAiLCJmaWxlU3luYyIsInBvc3RmaXgiLCJ3cml0ZVN5bmMiLCJmZCIsIndlYnBhY2tDb25maWdzIiwibmFtZSIsIm1vZGUiLCJyZXBsYWNlIiwidGFyZ2V0IiwiY29tcGlsZXIiLCJvdXRwdXRGaWxlU3lzdGVtIiwic291cmNlTWFwU3VwcG9ydCIsImluc3RhbGwiLCJob29rUmVxdWlyZSIsImdldFNlcnZlckJ1bmRsZSIsInNlcnZlclN0YXRzIiwic2VydmVySnNvbiIsInRvSnNvbiIsImFzc2V0cyIsIm91dHB1dFBhdGgiLCJoYW5kbGVFcnJvcnMiLCJmbiIsInJlcSIsInJlcyIsIm5leHQiLCJ4IiwiaW5pdGlhbGl6ZUFwcCIsInN0YXRzIiwiaW5mbyIsImNsaWVudFN0YXRzIiwiY29tcGlsYXRpb24iLCJlcnJvcnMiLCJsZW5ndGgiLCJ3cmFwcGluZ0FwcCIsImNvbXBpbGVycyIsImhlYXJ0YmVhdCIsImNsaWVudE1hbmlmZXN0IiwiYXNzZXRSb3V0ZSIsImZpbGVuYW1lIiwidXJsIiwic3Vic3RyIiwiYXNzZXRQYXRoIiwiZmlsZUNvbnRlbnQiLCJ0b1N0cmluZyIsImNvbnRlbnRUeXBlIiwic2VuZCIsImUiLCJzdGF0dXMiLCJnZXQiLCJyZW5kZXIiLCJkZWZhdWx0IiwiZW5kc1dpdGgiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwic29ja2V0Iiwib24iLCJlcnJvciIsImxpc3RlbiIsInN5c2NhbGwiLCJpc1BpcGUiLCJwb3J0T3JQaXBlIiwiTnVtYmVyIiwiaXNOYU4iLCJiaW5kIiwiY29kZSIsIndhdGNoZXIiLCJ3YXRjaCIsImVyciIsIm11bHRpU3RhdHMiLCJzdWNjZWVkIiwid2FybiIsImNsb3NlIl0sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFDQTs7QUFFQTs7QUFHQTtBQUNBLE1BQU1BLGFBQWEsR0FBR0MsT0FBTyxDQUFDQSxPQUFPLENBQUNDLE9BQVIsRUFDNUI7QUFDQUMsY0FBS0MsSUFBTCxDQUFVQyxPQUFPLENBQUNDLEdBQVIsRUFBVixFQUF5QixnQkFBekIsQ0FGNEIsQ0FBRCxDQUE3Qjs7QUFLQSxNQUFNQyxVQUFVLEdBQUdGLE9BQU8sQ0FBQ0csSUFBUixDQUFhLENBQWIsQ0FBbkI7QUFDQSxNQUFNQyxJQUFJLEdBQUdKLE9BQU8sQ0FBQ0ssR0FBUixDQUFZRCxJQUFaLElBQW9CLElBQWpDO0FBQ0FKLE9BQU8sQ0FBQ0ssR0FBUixDQUFZQyxtQkFBWixHQUFtQyxvQkFBbUJGLElBQUssRUFBM0Q7QUFDQUosT0FBTyxDQUFDSyxHQUFSLENBQVlFLG1CQUFaLEdBQWtDLFVBQWxDOztBQUVBLElBQUksQ0FBQ0wsVUFBTCxFQUFpQjtBQUNmTSxFQUFBQSxPQUFPLENBQUNDLEdBQVIsQ0FBYSxVQUFTVCxPQUFPLENBQUNHLElBQVIsQ0FBYSxDQUFiLENBQWdCLG9CQUF0QztBQUNBSCxFQUFBQSxPQUFPLENBQUNVLElBQVIsQ0FBYSxDQUFDLENBQWQ7QUFDRDs7QUFFRCxNQUFNQyxNQUFNLEdBQUcsa0JBQUkscUJBQUosRUFBMkJDLEtBQTNCLEVBQWYsQyxDQUVBOztBQUNBLE1BQU1DLE1BQU0s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QUFhLENBQUMsQ0FBZDtBQUNELENBVkQiLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IGRpc2tGcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB3ZWJwYWNrLCB7IE11bHRpQ29tcGlsZXIgfSBmcm9tICd3ZWJwYWNrJztcbmltcG9ydCB3ZWJwYWNrSG90TWlkZGxld2FyZSBmcm9tICd3ZWJwYWNrLWhvdC1taWRkbGV3YXJlJztcbmltcG9ydCB7IGNyZWF0ZUZzRnJvbVZvbHVtZSwgVm9sdW1lIH0gZnJvbSAnbWVtZnMnO1xuaW1wb3J0IHsgU2VydmVyLCBJbmNvbWluZ01lc3NhZ2UsIFNlcnZlclJlc3BvbnNlIH0gZnJvbSAnaHR0cCc7XG5pbXBvcnQgZXhwcmVzcywgeyBOZXh0RnVuY3Rpb24gfSBmcm9tICdleHByZXNzJztcbmltcG9ydCBvcmEgZnJvbSAnb3JhJztcbmltcG9ydCB7IHBhdGNoUmVxdWlyZSB9IGZyb20gJ2ZzLW1vbmtleSc7XG5pbXBvcnQgdG1wIGZyb20gJ3RtcCc7XG5pbXBvcnQgc291cmNlTWFwU3VwcG9ydCBmcm9tICdzb3VyY2UtbWFwLXN1cHBvcnQnO1xuaW1wb3J0IHsgdWZzIH0gZnJvbSAndW5pb25mcyc7XG5pbXBvcnQgY29tcHJlc3MgZnJvbSAnY29tcHJlc3Npb24nO1xuXG5pbXBvcnQgJ2Nyb3NzLWZldGNoL3BvbHlmaWxsJztcbmltcG9ydCB7IFJlbmRlciB9IGZyb20gJy4vdHlwZXMnO1xuXG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuY29uc3Qgd2VicGFja0NvbmZpZyA9IHJlcXVpcmUocmVxdWlyZS5yZXNvbHZlKFxuICAvLyBUT0RPOiB1c2Ugbm9ybWFsIHJlc29sdXRpb24gYWxnb3JpdGhtIHRvIGZpbmQgd2VicGFjayBmaWxlXG4gIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnd2VicGFjay5jb25maWcnKSxcbikpO1xuXG5jb25zdCBlbnRyeXBvaW50ID0gcHJvY2Vzcy5hcmd2WzJdO1xuY29uc3QgUE9SVCA9IHByb2Nlc3MuZW52LlBPUlQgfHwgMzAwMDtcbnByb2Nlc3MuZW52LldFQlBBQ0tfUFVCTElDX0hPU1QgPSBgaHR0cDovL2xvY2FsaG9zdDoke1BPUlR9YDtcbnByb2Nlc3MuZW52LldFQlBBQ0tfUFVCTElDX1BBVEggPSAnL2Fzc2V0cy8nO1xuXG5pZiAoIWVudHJ5cG9pbnQpIHtcbiAgY29uc29sZS5sb2coYFVzYWdlOiAke3Byb2Nlc3MuYXJndlswXX0gPGVudHJ5cG9pbnQtZmlsZT5gKTtcbiAgcHJvY2Vzcy5leGl0KC0xKTtcbn1cblxuY29uc3QgbG9hZGVyID0gb3JhKCdCdWlsZGluZyB0aGUgYXNzZXRzJykuc3RhcnQoKTtcblxuLy8gU2V0IHVwIGluIG1lbW9yeSBmaWxlc3lzdGVtXG5jb25zdCB2b2x1bWUgPSBuZXcgVm9sdW1lKCk7XG5jb25zdCBmcyA9IGNyZWF0ZUZzRnJvbVZvbHVtZSh2b2x1bWUpO1xudWZzLnVzZShkaXNrRnMpLnVzZShmcyBhcyBhbnkpO1xuXG5wYXRjaFJlcXVpcmUodWZzKTtcbmNvbnN0IHJlYWRGaWxlID0gcHJvbWlzaWZ5KHVmcy5yZWFkRmlsZSk7XG5sZXQgc2VydmVyOiBTZXJ2ZXIgfCB1bmRlZmluZWQ7XG5cbi8vIEdlbmVyYXRlIGEgdGVtcG9yYXJ5IGZpbGUgc28gd2UgY2FuIGhvdCByZWxvYWQgZnJvbSB0aGUgcm9vdCBvZiB0aGUgYXBwbGljYXRpb25cbmZ1bmN0aW9uIGhvdEVudHJ5KGVudHJ5UGF0aDogc3RyaW5nKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAvLyBAdHMtaWdub3JlIGZvciBzb21lIHJlYXNvbiBpdCdzIG5vdCBwaWNraW5nIHVwIHRoYXQgb3RoZXIgb3B0aW9ucyBhcmUgb3B0aW9uYWxcbiAgY29uc3QgZ2VuZXJhdGVkRW50cnlwb2ludCA9IHRtcC5maWxlU3luYyh7IHBvc3RmaXg6ICcuanMnIH0pO1xuICBkaXNrRnMud3JpdGVTeW5jKFxuICAgIGdlbmVyYXRlZEVudHJ5cG9pbnQuZmQsXG4gICAgYFxuaW1wb3J0IGVudHJ5IGZyb20gXCIke3BhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBlbnRyeVBhdGgpfVwiO1xuXG5pZiAobW9kdWxlLmhvdCkge1xuICBtb2R1bGUuaG90LmFjY2VwdCgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBlbnRyeTtcbiAgYCxcbiAgKTtcbiAgcmV0dXJuIGdlbmVyYXRlZEVudHJ5cG9pbnQ7XG59XG5cbmNvbnN0IHdlYnBhY2tDb25maWdzID0gW1xuICB3ZWJwYWNrQ29uZmlnKFxuICAgIHtcbiAgICAgIGVudHJ5cG9pbnQ6IGhvdEVudHJ5KGVudHJ5cG9pbnQpLm5hbWUsXG4gICAgICBuYW1lOiAnY2xpZW50JyxcbiAgICB9LFxuICAgIHsgbW9kZTogJ2RldmVsb3BtZW50JyB9LFxuICApLFxuICB3ZWJwYWNrQ29uZmlnKFxuICAgIHtcbiAgICAgIGVudHJ5cG9pbnQ6IGhvdEVudHJ5KGVudHJ5cG9pbnQucmVwbGFjZSgnLnRzeCcsICcuc2VydmVyLnRzeCcpKS5uYW1lLFxuICAgICAgbmFtZTogJ3NlcnZlcicsXG4gICAgfSxcbiAgICB7IG1vZGU6ICdkZXZlbG9wbWVudCcsIHRhcmdldDogJ25vZGUnIH0sXG4gICksXG5dIGFzIGNvbnN0O1xuLy8gaW5pdGlhbGl6ZSB0aGUgd2VicGFjayBjb21waWxlclxuY29uc3QgY29tcGlsZXI6IE11bHRpQ29tcGlsZXIgPSB3ZWJwYWNrKHdlYnBhY2tDb25maWdzKTtcblxuY29tcGlsZXIub3V0cHV0RmlsZVN5c3RlbSA9IHtcbiAgLi4uZnMsXG4gIGpvaW46IHBhdGguam9pbiBhcyBhbnksXG59IGFzIGFueSBhcyB0eXBlb2YgZnM7XG5cbnNvdXJjZU1hcFN1cHBvcnQuaW5zdGFsbCh7IGhvb2tSZXF1aXJlOiB0cnVlIH0pO1xuXG5mdW5jdGlvbiBnZXRTZXJ2ZXJCdW5kbGUoc2VydmVyU3RhdHM6IHdlYnBhY2suU3RhdHMpIHtcbiAgY29uc3Qgc2VydmVySnNvbiA9IHNlcnZlclN0YXRzLnRvSnNvbih7IGFzc2V0czogdHJ1ZSB9KTtcbiAgcmV0dXJuIHBhdGguam9pbihzZXJ2ZXJKc29uLm91dHB1dFBhdGggPz8gJycsICdtYWluLmpzJyk7XG59XG5mdW5jdGlvbiBoYW5kbGVFcnJvcnM8XG4gIEYgZXh0ZW5kcyAoXG4gICAgcmVxOiBSZXF1ZXN0IHwgSW5jb21pbmdNZXNzYWdlLFxuICAgIHJlczogUmVzcG9uc2UgfCBTZXJ2ZXJSZXNwb25zZSxcbiAgKSA9PiBQcm9taXNlPHZvaWQ+LFxuPihmbjogRikge1xuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gKFxuICAgIHJlcTogUmVxdWVzdCB8IEluY29taW5nTWVzc2FnZSxcbiAgICByZXM6IFJlc3BvbnNlIHwgU2VydmVyUmVzcG9uc2UsXG4gICAgbmV4dDogTmV4dEZ1bmN0aW9uLFxuICApIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGZuKHJlcSwgcmVzKTtcbiAgICB9IGNhdGNoICh4KSB7XG4gICAgICBuZXh0KHgpO1xuICAgIH1cbiAgfTtcbn1cblxuLy8gU3RhcnQgdGhlIGV4cHJlc3Mgc2VydmVyIGFmdGVyIHRoZSBmaXJzdCBjb21waWxhdGlvblxuZnVuY3Rpb24gaW5pdGlhbGl6ZUFwcChzdGF0czogd2VicGFjay5TdGF0c1tdKSB7XG4gIGxvYWRlci5pbmZvKCdMYXVuY2hpbmcgc2VydmVyJyk7XG4gIGNvbnN0IFtjbGllbnRTdGF0cywgc2VydmVyU3RhdHNdID0gc3RhdHM7XG4gIGlmIChcbiAgICBjbGllbnRTdGF0cz8uY29tcGlsYXRpb24/LmVycm9ycz8ubGVuZ3RoIHx8XG4gICAgc2VydmVyU3RhdHM/LmNvbXBpbGF0aW9uPy5lcnJvcnM/Lmxlbmd0aFxuICApIHtcbiAgICBjb25zb2xlLmxvZygnRXJyb3JzIGZvciBjbGllbnQgYnVpbGQ6ICcsIGNsaWVudFN0YXRzLmNvbXBpbGF0aW9uLmVycm9ycyk7XG4gICAgY29uc29sZS5sb2coJ0Vycm9ycyBmb3Igc2VydmVyIGJ1aWxkOicsIHNlcnZlclN0YXRzLmNvbXBpbGF0aW9uLmVycm9ycyk7XG4gICAgLy8gVE9ETzogaGFuZGxlIG1vcmUgZ3JhY2VmdWxseVxuICAgIHByb2Nlc3MuZXhpdCgtMSk7XG4gIH1cblxuICBjb25zdCB3cmFwcGluZ0FwcCA9IGV4cHJlc3MoKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIC8vQHRzLWlnbm9yZVxuICB3cmFwcGluZ0FwcC51c2UoY29tcHJlc3MoKSk7XG5cbiAgLy8gQVNTRVRTXG4gIHdyYXBwaW5nQXBwLnVzZShcbiAgICB3ZWJwYWNrSG90TWlkZGxld2FyZShjb21waWxlci5jb21waWxlcnNbMF0sIHtcbiAgICAgIGxvZzogY29uc29sZS5sb2csXG4gICAgICBwYXRoOiAnL19fd2VicGFja19obXInLFxuICAgICAgaGVhcnRiZWF0OiAxMCAqIDEwMDAsXG4gICAgICAvL25vSW5mbzogdHJ1ZSxcbiAgICAgIC8vbmFtZTogJ2NsaWVudCcsXG4gICAgfSksXG4gICk7XG4gIGNvbnN0IGNsaWVudE1hbmlmZXN0ID0gY2xpZW50U3RhdHMudG9Kc29uKCk7XG4gIGNvbnN0IGFzc2V0Um91dGUgPSBhc3luYyAocmVxOiBSZXF1ZXN0IHwgSW5jb21pbmdNZXNzYWdlLCByZXM6IGFueSkgPT4ge1xuICAgIGNvbnN0IGZpbGVuYW1lID1cbiAgICAgIHJlcS51cmw/LnN1YnN0cigocHJvY2Vzcy5lbnYuV0VCUEFDS19QVUJMSUNfUEFUSCBhcyBzdHJpbmcpLmxlbmd0aCkgPz8gJyc7XG4gICAgY29uc3QgYXNzZXRQYXRoID0gcGF0aC5qb2luKGNsaWVudE1hbmlmZXN0Lm91dHB1dFBhdGggPz8gJycsIGZpbGVuYW1lKTtcblxuICAgIHRyeSB7XG4gICAgICBjb25zdCBmaWxlQ29udGVudCA9IChhd2FpdCByZWFkRmlsZShhc3NldFBhdGgpKS50b1N0cmluZygpO1xuICAgICAgcmVzLmNvbnRlbnRUeXBlKGZpbGVuYW1lKTtcbiAgICAgIHJlcy5zZW5kKGZpbGVDb250ZW50KTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICByZXMuc3RhdHVzKDQwNCk7XG4gICAgICByZXMuc2VuZChlKTtcbiAgICAgIHJldHVybjtcbiAgICB9XG4gIH07XG4gIHdyYXBwaW5nQXBwLmdldChgJHtwcm9jZXNzLmVudi5XRUJQQUNLX1BVQkxJQ19QQVRIfSpgLCBhc3NldFJvdXRlKTtcblxuICAvLyBTRVJWRVIgU0lERSBSRU5ERVJJTkdcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbiAgY29uc3QgcmVuZGVyOiBSZW5kZXIgPSByZXF1aXJlKGdldFNlcnZlckJ1bmRsZShzZXJ2ZXJTdGF0cykpLmRlZmF1bHQ7XG4gIHdyYXBwaW5nQXBwLmdldChcbiAgICAnLyonLFxuICAgIGhhbmRsZUVycm9ycyhhc3luYyBmdW5jdGlvbiAocmVxOiBhbnksIHJlczogYW55KSB7XG4gICAgICBpZiAocmVxLnVybC5lbmRzV2l0aCgnZmF2aWNvbi5pY28nKSkge1xuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC10eXBlJywgJ3RleHQvaHRtbCcpO1xuICAgICAgICByZXMuc2VuZCgnbm90IGZvdW5kJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlcy5zb2NrZXQub24oJ2Vycm9yJywgKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhdGFsJywgZXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHJlbmRlcihjbGllbnRNYW5pZmVzdCwgcmVxLCByZXMpO1xuICAgIH0pLFxuICApO1xuXG4gIHNlcnZlciA9IHdyYXBwaW5nQXBwXG4gICAgLmxpc3RlbihQT1JULCAoKSA9PiB7XG4gICAgICBjb25zb2xlLmxvZyhgTGlzdGVuaW5nIGF0ICR7UE9SVH0uLi5gKTtcbiAgICB9KVxuICAgIC5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xuICAgICAgaWYgKGVycm9yLnN5c2NhbGwgIT09ICdsaXN0ZW4nKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgY29uc3QgaXNQaXBlID0gKHBvcnRPclBpcGU6IHN0cmluZyB8IG51bWJlcikgPT4gTnVtYmVyLmlzTmFOKHBvcnRPclBpcGUpO1xuICAgICAgY29uc3QgYmluZCA9IGlzUGlwZShQT1JUKSA/ICdQaXBlICcgKyBQT1JUIDogJ1BvcnQgJyArIFBPUlQ7XG4gICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHtcbiAgICAgICAgY2FzZSAnRUFDQ0VTJzpcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGJpbmQgKyAnIHJlcXVpcmVzIGVsZXZhdGVkIHByaXZpbGVnZXMnKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0VBRERSSU5VU0UnOlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYmluZCArICcgaXMgYWxyZWFkeSBpbiB1c2UnKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbi8vIFdhdGNoIHRoZSBmaWxlcyBmb3IgY2hhbmdlc1xuY29uc3Qgd2F0Y2hlciA9IGNvbXBpbGVyLndhdGNoKHt9LCAoZXJyLCBtdWx0aVN0YXRzKSA9PiB7XG4gIGlmICghbXVsdGlTdGF0cykge1xuICAgIGNvbnNvbGUuZXJyb3IoJ3N0YXRzIG5vdCBzZW5kJyk7XG4gICAgcHJvY2Vzcy5leGl0KC0xKTtcbiAgfVxuICBpZiAoZXJyKSB7XG4gICAgY29uc29sZS5lcnJvcignRXJyb3IgaW4gY29tcGlsYXRpb24nKTtcbiAgICBjb25zb2xlLmVycm9yKGVycik7XG4gICAgcHJvY2Vzcy5leGl0KC0xKTtcbiAgfVxuICBpZiAoc2VydmVyKSB7XG4gICAgbG9hZGVyLnN1Y2NlZWQoJ1dlYnBhY2sgYnVuZGxlIHVwZGF0ZWQnKTtcbiAgICByZXR1cm47XG4gIH1cbiAgdHJ5IHtcbiAgICBpbml0aWFsaXplQXBwKG11bHRpU3RhdHMuc3RhdHMpO1xuICB9IGNhdGNoIChlKSB7XG4gICAgY29uc29sZS5lcnJvcignRmFpbGVkIHRvIGluaXRpYWxpemUgYXBwJyk7XG4gICAgY29uc29sZS5lcnJvcihlKTtcbiAgfVxufSk7XG5cbnByb2Nlc3Mub24oJ1NJR0lOVCcsICgpID0+IHtcbiAgbG9hZGVyLndhcm4oJ1JlY2VpdmVkIFNJR0lOVCwgZGV2c2VydmVyIHNodXR0aW5nIGRvd24nKTtcbiAgaWYgKHNlcnZlcikgY29uc29sZS5sb2coJ0Nsb3Npbmcgc2VydmVyJyk7XG4gIHNlcnZlcj8uY2xvc2UoKCkgPT4ge1xuICAgIGxvYWRlci5pbmZvKCdTZXJ2ZXIgY2xvc2VkJyk7XG4gIH0pO1xuICB3YXRjaGVyLmNsb3NlKCgpID0+IHtcbiAgICBsb2FkZXIuaW5mbygnd2VicGFjayBidWlsZCBzdG9wcGVkJyk7XG4gIH0pO1xuICBwcm9jZXNzLmV4aXQoLTEpO1xufSk7XG4iXX0=
268
+ runServer();
269
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3ZWJwYWNrQ29uZmlnIiwicmVxdWlyZSIsInJlc29sdmUiLCJwYXRoIiwiam9pbiIsInByb2Nlc3MiLCJjd2QiLCJlbnRyeXBvaW50IiwiYXJndiIsIlBPUlQiLCJlbnYiLCJXRUJQQUNLX1BVQkxJQ19IT1NUIiwiV0VCUEFDS19QVUJMSUNfUEFUSCIsImNvbnNvbGUiLCJsb2ciLCJleGl0IiwiY2hhbGsiLCJncmVlbkJyaWdodCIsImN5YW5CcmlnaHQiLCJsb2FkZXIiLCJvcmEiLCJzdGFydCIsInZvbHVtZSIsIlZvbHVtZSIsImZzIiwiY3JlYXRlRnNGcm9tVm9sdW1lIiwidWZzIiwidXNlIiwiZGlza0ZzIiwicGF0Y2hSZXF1aXJlIiwicmVhZEZpbGUiLCJwcm9taXNpZnkiLCJzZXJ2ZXIiLCJob3RFbnRyeSIsImVudHJ5UGF0aCIsImdlbmVyYXRlZEVudHJ5cG9pbnQiLCJ0bXAiLCJmaWxlU3luYyIsInBvc3RmaXgiLCJ3cml0ZVN5bmMiLCJmZCIsIndlYnBhY2tDb25maWdzIiwibmFtZSIsIm1vZGUiLCJyZXBsYWNlIiwidGFyZ2V0IiwicGx1Z2lucyIsInB1c2giLCJ3ZWJwYWNrIiwib3B0aW1pemUiLCJMaW1pdENodW5rQ291bnRQbHVnaW4iLCJtYXhDaHVua3MiLCJjb21waWxlciIsInNvdXJjZU1hcFN1cHBvcnQiLCJpbnN0YWxsIiwiaG9va1JlcXVpcmUiLCJnZXRTZXJ2ZXJCdW5kbGUiLCJzZXJ2ZXJTdGF0cyIsInNlcnZlckpzb24iLCJ0b0pzb24iLCJhc3NldHMiLCJvdXRwdXRQYXRoIiwiaGFuZGxlRXJyb3JzIiwiZm4iLCJyZXEiLCJyZXMiLCJuZXh0IiwieCIsInJlbmRlciIsImluaXRpYWxpemVBcHAiLCJzdGF0cyIsImNsaWVudFN0YXRzIiwiY29tcGlsYXRpb24iLCJlcnJvcnMiLCJsZW5ndGgiLCJmYWlsIiwiaW5mbyIsIndyYXBwaW5nQXBwIiwiZXhwcmVzcyIsImNvbXByZXNzIiwiY2xpZW50TWFuaWZlc3QiLCJhc3NldFJvdXRlIiwiZmlsZW5hbWUiLCJ1cmwiLCJzdWJzdHJpbmciLCJzcGxpdCIsImFzc2V0UGF0aCIsImZpbGVDb250ZW50IiwidG9TdHJpbmciLCJjb250ZW50VHlwZSIsInNlbmQiLCJlIiwic3RhdHVzIiwiZ2V0IiwiZGVmYXVsdCIsImVuZHNXaXRoIiwic3RhdHVzQ29kZSIsInNldEhlYWRlciIsInNvY2tldCIsIm9uIiwiZXJyb3IiLCJsaXN0ZW4iLCJzdWNjZWVkIiwic3lzY2FsbCIsImlzUGlwZSIsInBvcnRPclBpcGUiLCJOdW1iZXIiLCJpc05hTiIsImJpbmQiLCJjb2RlIiwiZGV2U2VydmVyIiwiV2VicGFja0RldlNlcnZlciIsImRldk1pZGRsZXdhcmUiLCJvdXRwdXRGaWxlU3lzdGVtIiwicnVuU2VydmVyIiwiaG9va3MiLCJkb25lIiwidGFwIiwibXVsdGlTdGF0cyIsIk9iamVjdCIsImhhc093biIsImltcG9ydEZyZXNoIiwic3RvcFNlcnZlciIsInN0b3AiLCJ3YXJuIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvc3RhcnREZXZzZXJ2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcbmltcG9ydCBkaXNrRnMgZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgd2VicGFjaywgeyBNdWx0aUNvbXBpbGVyIH0gZnJvbSAnd2VicGFjayc7XG5pbXBvcnQgeyBjcmVhdGVGc0Zyb21Wb2x1bWUsIFZvbHVtZSB9IGZyb20gJ21lbWZzJztcbmltcG9ydCB7IFNlcnZlciwgSW5jb21pbmdNZXNzYWdlLCBTZXJ2ZXJSZXNwb25zZSB9IGZyb20gJ2h0dHAnO1xuaW1wb3J0IGV4cHJlc3MsIHsgTmV4dEZ1bmN0aW9uIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgb3JhIGZyb20gJ29yYSc7XG5pbXBvcnQgeyBwYXRjaFJlcXVpcmUgfSBmcm9tICdmcy1tb25rZXknO1xuaW1wb3J0IHRtcCBmcm9tICd0bXAnO1xuaW1wb3J0IHNvdXJjZU1hcFN1cHBvcnQgZnJvbSAnc291cmNlLW1hcC1zdXBwb3J0JztcbmltcG9ydCB7IHVmcyB9IGZyb20gJ3VuaW9uZnMnO1xuaW1wb3J0IGNvbXByZXNzIGZyb20gJ2NvbXByZXNzaW9uJztcbmltcG9ydCBXZWJwYWNrRGV2U2VydmVyIGZyb20gJ3dlYnBhY2stZGV2LXNlcnZlcic7XG5pbXBvcnQgaW1wb3J0RnJlc2ggZnJvbSAnaW1wb3J0LWZyZXNoJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmltcG9ydCAnY3Jvc3MtZmV0Y2gvcG9seWZpbGwnO1xuaW1wb3J0IHsgUmVuZGVyIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG5jb25zdCB3ZWJwYWNrQ29uZmlnID0gcmVxdWlyZShyZXF1aXJlLnJlc29sdmUoXG4gIC8vIFRPRE86IHVzZSBub3JtYWwgcmVzb2x1dGlvbiBhbGdvcml0aG0gdG8gZmluZCB3ZWJwYWNrIGZpbGVcbiAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICd3ZWJwYWNrLmNvbmZpZycpLFxuKSk7XG5cbmNvbnN0IGVudHJ5cG9pbnQgPSBwcm9jZXNzLmFyZ3ZbMl07XG5jb25zdCBQT1JUID0gcHJvY2Vzcy5lbnYuUE9SVCB8fCAzMDAwO1xucHJvY2Vzcy5lbnYuV0VCUEFDS19QVUJMSUNfSE9TVCA9IGBodHRwOi8vbG9jYWxob3N0OiR7UE9SVH1gO1xucHJvY2Vzcy5lbnYuV0VCUEFDS19QVUJMSUNfUEFUSCA9ICcvYXNzZXRzLyc7XG5cbmlmICghZW50cnlwb2ludCkge1xuICBjb25zb2xlLmxvZyhgVXNhZ2U6ICR7cHJvY2Vzcy5hcmd2WzBdfSA8ZW50cnlwb2ludC1maWxlPmApO1xuICBwcm9jZXNzLmV4aXQoLTEpO1xufVxuXG5jb25zb2xlLmxvZyhcbiAgY2hhbGsuZ3JlZW5CcmlnaHQoYFN0YXJ0aW5nIFNTUiBhdGApLFxuICBjaGFsay5jeWFuQnJpZ2h0KHByb2Nlc3MuZW52LldFQlBBQ0tfUFVCTElDX0hPU1QpLFxuKTtcbmNvbnN0IGxvYWRlciA9IG9yYSgpLnN0YXJ0KCk7XG5cbi8vIFNldCB1cCBpbiBtZW1vcnkgZmlsZXN5c3RlbVxuY29uc3Qgdm9sdW1lID0gbmV3IFZvbHVtZSgpO1xuY29uc3QgZnMgPSBjcmVhdGVGc0Zyb21Wb2x1bWUodm9sdW1lKTtcbnVmcy51c2UoZGlza0ZzKS51c2UoZnMgYXMgYW55KTtcblxucGF0Y2hSZXF1aXJlKHVmcyk7XG5jb25zdCByZWFkRmlsZSA9IHByb21pc2lmeSh1ZnMucmVhZEZpbGUpO1xubGV0IHNlcnZlcjogU2VydmVyIHwgdW5kZWZpbmVkO1xuXG4vLyBHZW5lcmF0ZSBhIHRlbXBvcmFyeSBmaWxlIHNvIHdlIGNhbiBob3QgcmVsb2FkIGZyb20gdGhlIHJvb3Qgb2YgdGhlIGFwcGxpY2F0aW9uXG5mdW5jdGlvbiBob3RFbnRyeShlbnRyeVBhdGg6IHN0cmluZykge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgLy8gQHRzLWlnbm9yZSBmb3Igc29tZSByZWFzb24gaXQncyBub3QgcGlja2luZyB1cCB0aGF0IG90aGVyIG9wdGlvbnMgYXJlIG9wdGlvbmFsXG4gIGNvbnN0IGdlbmVyYXRlZEVudHJ5cG9pbnQgPSB0bXAuZmlsZVN5bmMoeyBwb3N0Zml4OiAnLmpzJyB9KTtcbiAgZGlza0ZzLndyaXRlU3luYyhcbiAgICBnZW5lcmF0ZWRFbnRyeXBvaW50LmZkLFxuICAgIGBcbmltcG9ydCBlbnRyeSBmcm9tIFwiJHtwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgZW50cnlQYXRoKX1cIjtcblxuaWYgKG1vZHVsZS5ob3QpIHtcbiAgbW9kdWxlLmhvdC5hY2NlcHQoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZW50cnk7XG4gIGAsXG4gICk7XG4gIHJldHVybiBnZW5lcmF0ZWRFbnRyeXBvaW50O1xufVxuXG5jb25zdCB3ZWJwYWNrQ29uZmlncyA9IFtcbiAgd2VicGFja0NvbmZpZyhcbiAgICB7XG4gICAgICBlbnRyeXBvaW50OiBob3RFbnRyeShlbnRyeXBvaW50KS5uYW1lLFxuICAgICAgbmFtZTogJ2NsaWVudCcsXG4gICAgfSxcbiAgICB7IG1vZGU6ICdkZXZlbG9wbWVudCcgfSxcbiAgKSxcbiAgd2VicGFja0NvbmZpZyhcbiAgICB7XG4gICAgICBlbnRyeXBvaW50OiBlbnRyeXBvaW50LnJlcGxhY2UoJy50c3gnLCAnLnNlcnZlci50c3gnKSxcbiAgICAgIG5hbWU6ICdzZXJ2ZXInLFxuICAgIH0sXG4gICAgeyBtb2RlOiAnZGV2ZWxvcG1lbnQnLCB0YXJnZXQ6ICdub2RlJyB9LFxuICApLFxuXSBhcyBjb25zdDtcbi8vIG9ubHkgaGF2ZSBvbmUgb3V0cHV0IGZvciBzZXJ2ZXIgc28gd2UgY2FuIGF2b2lkIGNhY2hlZCBtb2R1bGVzXG53ZWJwYWNrQ29uZmlnc1sxXS5wbHVnaW5zLnB1c2goXG4gIG5ldyB3ZWJwYWNrLm9wdGltaXplLkxpbWl0Q2h1bmtDb3VudFBsdWdpbih7IG1heENodW5rczogMSB9KSxcbik7XG4vLyBpbml0aWFsaXplIHRoZSB3ZWJwYWNrIGNvbXBpbGVyXG5jb25zdCBjb21waWxlcjogTXVsdGlDb21waWxlciA9IHdlYnBhY2sod2VicGFja0NvbmZpZ3MpO1xuXG5zb3VyY2VNYXBTdXBwb3J0Lmluc3RhbGwoeyBob29rUmVxdWlyZTogdHJ1ZSB9KTtcblxuZnVuY3Rpb24gZ2V0U2VydmVyQnVuZGxlKHNlcnZlclN0YXRzOiB3ZWJwYWNrLlN0YXRzKSB7XG4gIGNvbnN0IHNlcnZlckpzb24gPSBzZXJ2ZXJTdGF0cy50b0pzb24oeyBhc3NldHM6IHRydWUgfSk7XG4gIHJldHVybiBwYXRoLmpvaW4oc2VydmVySnNvbi5vdXRwdXRQYXRoID8/ICcnLCAnbWFpbi5qcycpO1xufVxuZnVuY3Rpb24gaGFuZGxlRXJyb3JzPFxuICBGIGV4dGVuZHMgKFxuICAgIHJlcTogUmVxdWVzdCB8IEluY29taW5nTWVzc2FnZSxcbiAgICByZXM6IFJlc3BvbnNlIHwgU2VydmVyUmVzcG9uc2UsXG4gICkgPT4gUHJvbWlzZTx2b2lkPixcbj4oZm46IEYpIHtcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIChcbiAgICByZXE6IFJlcXVlc3QgfCBJbmNvbWluZ01lc3NhZ2UsXG4gICAgcmVzOiBSZXNwb25zZSB8IFNlcnZlclJlc3BvbnNlLFxuICAgIG5leHQ6IE5leHRGdW5jdGlvbixcbiAgKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmbihyZXEsIHJlcyk7XG4gICAgfSBjYXRjaCAoeCkge1xuICAgICAgbmV4dCh4KTtcbiAgICB9XG4gIH07XG59XG5sZXQgcmVuZGVyOiBSZW5kZXI7XG4vLyBTdGFydCB0aGUgZXhwcmVzcyBzZXJ2ZXIgYWZ0ZXIgdGhlIGZpcnN0IGNvbXBpbGF0aW9uXG5mdW5jdGlvbiBpbml0aWFsaXplQXBwKHN0YXRzOiB3ZWJwYWNrLlN0YXRzW10pIHtcbiAgY29uc3QgW2NsaWVudFN0YXRzLCBzZXJ2ZXJTdGF0c10gPSBzdGF0cztcbiAgaWYgKFxuICAgIGNsaWVudFN0YXRzPy5jb21waWxhdGlvbj8uZXJyb3JzPy5sZW5ndGggfHxcbiAgICBzZXJ2ZXJTdGF0cz8uY29tcGlsYXRpb24/LmVycm9ycz8ubGVuZ3RoXG4gICkge1xuICAgIGxvYWRlci5mYWlsKCdFcnJvcnMgZm9yIGNsaWVudCBidWlsZDogJyArIGNsaWVudFN0YXRzLmNvbXBpbGF0aW9uLmVycm9ycyk7XG4gICAgbG9hZGVyLmZhaWwoJ0Vycm9ycyBmb3Igc2VydmVyIGJ1aWxkOiAnICsgc2VydmVyU3RhdHMuY29tcGlsYXRpb24uZXJyb3JzKTtcbiAgICAvLyBUT0RPOiBoYW5kbGUgbW9yZSBncmFjZWZ1bGx5XG4gICAgcHJvY2Vzcy5leGl0KC0xKTtcbiAgfSBlbHNlIHtcbiAgICBsb2FkZXIuaW5mbygnTGF1bmNoaW5nIHNlcnZlcicpO1xuICB9XG5cbiAgY29uc3Qgd3JhcHBpbmdBcHAgPSBleHByZXNzKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAvL0B0cy1pZ25vcmVcbiAgd3JhcHBpbmdBcHAudXNlKGNvbXByZXNzKCkpO1xuXG4gIC8vIEFTU0VUU1xuICBjb25zdCBjbGllbnRNYW5pZmVzdCA9IGNsaWVudFN0YXRzLnRvSnNvbigpO1xuICBjb25zdCBhc3NldFJvdXRlID0gYXN5bmMgKHJlcTogUmVxdWVzdCB8IEluY29taW5nTWVzc2FnZSwgcmVzOiBhbnkpID0+IHtcbiAgICBjb25zdCBmaWxlbmFtZSA9XG4gICAgICByZXEudXJsXG4gICAgICAgID8uc3Vic3RyaW5nKChwcm9jZXNzLmVudi5XRUJQQUNLX1BVQkxJQ19QQVRIIGFzIHN0cmluZykubGVuZ3RoKVxuICAgICAgICAuc3BsaXQoJz8nKVswXSA/PyAnJztcbiAgICBjb25zdCBhc3NldFBhdGggPSBwYXRoLmpvaW4oY2xpZW50TWFuaWZlc3Qub3V0cHV0UGF0aCA/PyAnJywgZmlsZW5hbWUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbGVDb250ZW50ID0gKGF3YWl0IHJlYWRGaWxlKGFzc2V0UGF0aCkpLnRvU3RyaW5nKCk7XG4gICAgICByZXMuY29udGVudFR5cGUoZmlsZW5hbWUpO1xuICAgICAgcmVzLnNlbmQoZmlsZUNvbnRlbnQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICAgIHJlcy5zZW5kKGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfTtcbiAgd3JhcHBpbmdBcHAuZ2V0KGAke3Byb2Nlc3MuZW52LldFQlBBQ0tfUFVCTElDX1BBVEh9KmAsIGFzc2V0Um91dGUpO1xuXG4gIC8vIFNFUlZFUiBTSURFIFJFTkRFUklOR1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICByZW5kZXIgPSByZXF1aXJlKGdldFNlcnZlckJ1bmRsZShzZXJ2ZXJTdGF0cykpLmRlZmF1bHQ7XG4gIHdyYXBwaW5nQXBwLmdldChcbiAgICAnLyonLFxuICAgIGhhbmRsZUVycm9ycyhhc3luYyBmdW5jdGlvbiAocmVxOiBhbnksIHJlczogYW55KSB7XG4gICAgICBpZiAocmVxLnVybC5lbmRzV2l0aCgnZmF2aWNvbi5pY28nKSkge1xuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC10eXBlJywgJ3RleHQvaHRtbCcpO1xuICAgICAgICByZXMuc2VuZCgnbm90IGZvdW5kJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlcy5zb2NrZXQub24oJ2Vycm9yJywgKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhdGFsJywgZXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHJlbmRlcihjbGllbnRNYW5pZmVzdCwgcmVxLCByZXMpO1xuICAgIH0pLFxuICApO1xuXG4gIHNlcnZlciA9IHdyYXBwaW5nQXBwXG4gICAgLmxpc3RlbihQT1JULCAoKSA9PiB7XG4gICAgICBsb2FkZXIuc3VjY2VlZChgU1NSIFJ1bm5pbmdgKTtcbiAgICB9KVxuICAgIC5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xuICAgICAgaWYgKGVycm9yLnN5c2NhbGwgIT09ICdsaXN0ZW4nKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgY29uc3QgaXNQaXBlID0gKHBvcnRPclBpcGU6IHN0cmluZyB8IG51bWJlcikgPT4gTnVtYmVyLmlzTmFOKHBvcnRPclBpcGUpO1xuICAgICAgY29uc3QgYmluZCA9IGlzUGlwZShQT1JUKSA/ICdQaXBlICcgKyBQT1JUIDogJ1BvcnQgJyArIFBPUlQ7XG4gICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHtcbiAgICAgICAgY2FzZSAnRUFDQ0VTJzpcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGJpbmQgKyAnIHJlcXVpcmVzIGVsZXZhdGVkIHByaXZpbGVnZXMnKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0VBRERSSU5VU0UnOlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYmluZCArICcgaXMgYWxyZWFkeSBpbiB1c2UnKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbmNvbnN0IGRldlNlcnZlciA9IG5ldyBXZWJwYWNrRGV2U2VydmVyKFxuICAvLyB3cml0ZSB0byBtZW1vcnkgZmlsZXN5c3RlbSBzbyB3ZSBjYW4gaW1wb3J0XG4gIHtcbiAgICAuLi53ZWJwYWNrQ29uZmlnc1swXS5kZXZTZXJ2ZXIsXG4gICAgLypjbGllbnQ6IHtcbiAgICAgIC4uLndlYnBhY2tDb25maWdzWzBdLmRldlNlcnZlcj8uY2xpZW50LFxuICAgICAgd2ViU29ja2V0VVJMOiB7XG4gICAgICAgIC4uLndlYnBhY2tDb25maWdzWzBdLmRldlNlcnZlcj8uY2xpZW50LndlYlNvY2tldFVSTCxcbiAgICAgICAgcG9ydDogODA4MCxcbiAgICAgIH0sXG4gICAgfSwqL1xuICAgIGRldk1pZGRsZXdhcmU6IHtcbiAgICAgIC4uLndlYnBhY2tDb25maWdzWzBdPy5kZXZTZXJ2ZXI/LmRldk1pZGRsZXdhcmUsXG4gICAgICBvdXRwdXRGaWxlU3lzdGVtOiB7XG4gICAgICAgIC4uLmZzLFxuICAgICAgICBqb2luOiBwYXRoLmpvaW4gYXMgYW55LFxuICAgICAgfSBhcyBhbnkgYXMgdHlwZW9mIGZzLFxuICAgIH0sXG4gIH0sXG4gIGNvbXBpbGVyLFxuKTtcbmNvbnN0IHJ1blNlcnZlciA9IGFzeW5jICgpID0+IHtcbiAgYXdhaXQgZGV2U2VydmVyLnN0YXJ0KCk7XG4gIGRldlNlcnZlci5jb21waWxlci5ob29rcy5kb25lLnRhcChcbiAgICAnQW5hbnNpIFNlcnZlcicsXG4gICAgKG11bHRpU3RhdHM6IHdlYnBhY2suTXVsdGlTdGF0cyB8IHdlYnBhY2suU3RhdHMpID0+IHtcbiAgICAgIGlmICghbXVsdGlTdGF0cykge1xuICAgICAgICBsb2FkZXIuZmFpbCgnc3RhdHMgbm90IHNlbmQnKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KC0xKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFPYmplY3QuaGFzT3duKG11bHRpU3RhdHMsICdzdGF0cycpKSByZXR1cm47XG4gICAgICBpZiAoc2VydmVyICYmIChtdWx0aVN0YXRzIGFzIHdlYnBhY2suTXVsdGlTdGF0cykuc3RhdHMubGVuZ3RoID4gMSkge1xuICAgICAgICByZW5kZXIgPSAoXG4gICAgICAgICAgaW1wb3J0RnJlc2goXG4gICAgICAgICAgICBnZXRTZXJ2ZXJCdW5kbGUoKG11bHRpU3RhdHMgYXMgd2VicGFjay5NdWx0aVN0YXRzKS5zdGF0c1sxXSksXG4gICAgICAgICAgKSBhcyBhbnlcbiAgICAgICAgKS5kZWZhdWx0O1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIXNlcnZlcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGluaXRpYWxpemVBcHAoKG11bHRpU3RhdHMgYXMgd2VicGFjay5NdWx0aVN0YXRzKS5zdGF0cyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBsb2FkZXIuZmFpbCgnRmFpbGVkIHRvIGluaXRpYWxpemUgYXBwJyk7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICk7XG59O1xuY29uc3Qgc3RvcFNlcnZlciA9IGFzeW5jICgpID0+IHtcbiAgbG9hZGVyLmluZm8oJ1N0b3BwaW5nIHNlcnZlci4uLicpO1xuICBhd2FpdCBkZXZTZXJ2ZXIuc3RvcCgpO1xuICBsb2FkZXIuaW5mbygnU2VydmVyIGNsb3NlZCcpO1xufTtcblxucHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICBsb2FkZXIud2FybignUmVjZWl2ZWQgU0lHSU5ULCBkZXZzZXJ2ZXIgc2h1dHRpbmcgZG93bicpO1xuICBzdG9wU2VydmVyKCk7XG4gIHByb2Nlc3MuZXhpdCgtMSk7XG59KTtcblxucnVuU2VydmVyKCk7XG4iXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOzs7O0FBR0E7QUFDQSxNQUFNQSxhQUFhLEdBQUdDLE9BQU8sQ0FBQ0EsT0FBTyxDQUFDQyxPQUFSLEVBQzVCO0FBQ0FDLGFBQUEsQ0FBS0MsSUFBTCxDQUFVQyxPQUFPLENBQUNDLEdBQVIsRUFBVixFQUF5QixnQkFBekIsQ0FGNEIsQ0FBRCxDQUE3Qjs7QUFLQSxNQUFNQyxVQUFVLEdBQUdGLE9BQU8sQ0FBQ0csSUFBUixDQUFhLENBQWIsQ0FBbkI7QUFDQSxNQUFNQyxJQUFJLEdBQUdKLE9BQU8sQ0FBQ0ssR0FBUixDQUFZRCxJQUFaLElBQW9CLElBQWpDO0FBQ0FKLE9BQU8sQ0FBQ0ssR0FBUixDQUFZQyxtQkFBWixHQUFtQyxvQkFBbUJGLElBQUssRUFBM0Q7QUFDQUosT0FBTyxDQUFDSyxHQUFSLENBQVlFLG1CQUFaLEdBQWtDLFVBQWxDOztBQUVBLElBQUksQ0FBQ0wsVUFBTCxFQUFpQjtFQUNmTSxPQUFPLENBQUNDLEdBQVIsQ0FBYSxVQUFTVCxPQUFPLENBQUNHLElBQVIsQ0FBYSxDQUFiLENBQWdCLG9CQUF0QztFQUNBSCxPQUFPLENBQUNVLElBQVIsQ0FBYSxDQUFDLENBQWQ7QUFDRDs7QUFFREYsT0FBTyxDQUFDQyxHQUFSLENBQ0VFLGNBQUEsQ0FBTUMsV0FBTixDQUFtQixpQkFBbkIsQ0FERixFQUVFRCxjQUFBLENBQU1FLFVBQU4sQ0FBaUJiLE9BQU8sQ0FBQ0ssR0FBUixDQUFZQyxtQkFBN0IsQ0FGRjtBQUlB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
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0=
4
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvdHlwZXMudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU2VydmVyUmVzcG9uc2UsIEluY29taW5nTWVzc2FnZSB9IGZyb20gJ2h0dHAnO1xuaW1wb3J0IHsgU3RhdHNDb21waWxhdGlvbiB9IGZyb20gJ3dlYnBhY2snO1xuaW1wb3J0IHsgUmVxdWVzdCwgUmVzcG9uc2UgfSBmcm9tICdleHByZXNzJztcblxuZXhwb3J0IHR5cGUgUmVuZGVyID0gKFxuICBjbGllbnRNYW5pZmVzdDogU3RhdHNDb21waWxhdGlvbixcbiAgcmVxOiBSZXF1ZXN0IHwgSW5jb21pbmdNZXNzYWdlLFxuICByZXM6IFJlc3BvbnNlIHwgU2VydmVyUmVzcG9uc2UsXG4pID0+IFByb21pc2U8dm9pZD47XG4iXSwibWFwcGluZ3MiOiIifQ==
@@ -44,4 +44,4 @@ Document.defaultProps = {
44
44
  href: "/assets/favicon.ico"
45
45
  }))
46
46
  };
47
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvRG9jdW1lbnRDb21wb25lbnQudHN4Il0sIm5hbWVzIjpbIkRvY3VtZW50IiwiYXNzZXRzIiwiaGVhZCIsImNoaWxkcmVuIiwidGl0bGUiLCJtYXAiLCJhc3NldCIsImkiLCJfX2h0bWwiLCJKU09OIiwic3RyaW5naWZ5IiwiZmlsdGVyIiwiaHJlZiIsImVuZHNXaXRoIiwiZGVmYXVsdFByb3BzIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQU9lLFNBQVNBLFFBQVQsQ0FBa0I7QUFBRUMsRUFBQUEsTUFBRjtBQUFVQyxFQUFBQSxJQUFWO0FBQWdCQyxFQUFBQSxRQUFoQjtBQUEwQkMsRUFBQUE7QUFBMUIsQ0FBbEIsRUFBNEQ7QUFDekUsc0JBQ0Usb0RBQ0UsdUNBQ0dGLElBREgsRUFFR0QsTUFBTSxDQUFDSSxHQUFQLENBQVcsQ0FBQ0MsS0FBRCxFQUFRQyxDQUFSLGtCQUNWO0FBQU0sSUFBQSxHQUFHLEVBQUVBLENBQVg7QUFBYyxJQUFBLEdBQUcsRUFBQyxTQUFsQjtBQUFBLE9BQWdDRDtBQUFoQyxJQURELENBRkgsZUFLRSx3Q0FBUUYsS0FBUixDQUxGLENBREYsZUFRRSx1Q0FDR0QsUUFESCxlQUdFO0FBQ0UsSUFBQSx1QkFBdUIsRUFBRTtBQUN2QkssTUFBQUEsTUFBTSxFQUFHLG1CQUFrQkMsSUFBSSxDQUFDQyxTQUFMLENBQWVULE1BQWYsQ0FBdUI7QUFEM0I7QUFEM0IsSUFIRixFQVFHQSxNQUFNLENBQ0pVLE1BREYsQ0FDUyxDQUFDO0FBQUVDLElBQUFBO0FBQUYsR0FBRCxLQUFjQSxJQUFJLENBQUNDLFFBQUwsQ0FBYyxLQUFkLENBRHZCLEVBRUVSLEdBRkYsQ0FFTSxDQUFDO0FBQUVPLElBQUFBO0FBQUYsR0FBRCxFQUFXTCxDQUFYLGtCQUNIO0FBQWdCLElBQUEsR0FBRyxFQUFFSyxJQUFyQjtBQUEyQixJQUFBLEtBQUs7QUFBaEMsS0FBYUwsQ0FBYixDQUhILENBUkgsQ0FSRixDQURGO0FBeUJEOztBQUNEUCxRQUFRLENBQUNjLFlBQVQsR0FBd0I7QUFDdEJaLEVBQUFBLElBQUksZUFDRix5RUFDRTtBQUFNLElBQUEsT0FBTyxFQUFDO0FBQWQsSUFERixlQUVFO0FBQU0sSUFBQSxJQUFJLEVBQUMsVUFBWDtBQUFzQixJQUFBLE9BQU8sRUFBQztBQUE5QixJQUZGLGVBR0U7QUFBTSxJQUFBLEdBQUcsRUFBQyxlQUFWO0FBQTBCLElBQUEsSUFBSSxFQUFDO0FBQS9CLElBSEY7QUFGb0IsQ0FBeEIiLCJzb3VyY2VzQ29udGVudCI6WyJ0eXBlIFByb3BzID0ge1xuICBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlO1xuICBhc3NldHM6IHsgaHJlZjogc3RyaW5nOyBhcz86IHN0cmluZzsgcmVsPzogc3RyaW5nIH1bXTtcbiAgaGVhZDogUmVhY3QuUmVhY3ROb2RlO1xuICB0aXRsZTogc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRG9jdW1lbnQoeyBhc3NldHMsIGhlYWQsIGNoaWxkcmVuLCB0aXRsZSB9OiBQcm9wcykge1xuICByZXR1cm4gKFxuICAgIDxodG1sPlxuICAgICAgPGhlYWQ+XG4gICAgICAgIHtoZWFkfVxuICAgICAgICB7YXNzZXRzLm1hcCgoYXNzZXQsIGkpID0+IChcbiAgICAgICAgICA8bGluayBrZXk9e2l9IHJlbD1cInByZWxvYWRcIiB7Li4uYXNzZXR9IC8+XG4gICAgICAgICkpfVxuICAgICAgICA8dGl0bGU+e3RpdGxlfTwvdGl0bGU+XG4gICAgICA8L2hlYWQ+XG4gICAgICA8Ym9keT5cbiAgICAgICAge2NoaWxkcmVufVxuICAgICAgICB7LyogdGhpcyBlbnN1cmVzIHRoZSBjbGllbnQgY2FuIGh5ZHJhdGUgdGhlIGFzc2V0cyBwcm9wICovfVxuICAgICAgICA8c2NyaXB0XG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogYGFzc2V0TWFuaWZlc3QgPSAke0pTT04uc3RyaW5naWZ5KGFzc2V0cyl9O2AsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAge2Fzc2V0c1xuICAgICAgICAgIC5maWx0ZXIoKHsgaHJlZiB9KSA9PiBocmVmLmVuZHNXaXRoKCcuanMnKSlcbiAgICAgICAgICAubWFwKCh7IGhyZWYgfSwgaSkgPT4gKFxuICAgICAgICAgICAgPHNjcmlwdCBrZXk9e2l9IHNyYz17aHJlZn0gYXN5bmMgLz5cbiAgICAgICAgICApKX1cbiAgICAgIDwvYm9keT5cbiAgICA8L2h0bWw+XG4gICk7XG59XG5Eb2N1bWVudC5kZWZhdWx0UHJvcHMgPSB7XG4gIGhlYWQ6IChcbiAgICA8PlxuICAgICAgPG1ldGEgY2hhclNldD1cInV0Zi04XCIgLz5cbiAgICAgIDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MVwiIC8+XG4gICAgICA8bGluayByZWw9XCJzaG9ydGN1dCBpY29uXCIgaHJlZj1cIi9hc3NldHMvZmF2aWNvbi5pY29cIiAvPlxuICAgIDwvPlxuICApLFxufTtcbiJdfQ==
47
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEb2N1bWVudCIsImFzc2V0cyIsImhlYWQiLCJjaGlsZHJlbiIsInRpdGxlIiwibWFwIiwiYXNzZXQiLCJpIiwiX19odG1sIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbHRlciIsImhyZWYiLCJlbmRzV2l0aCIsImRlZmF1bHRQcm9wcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvRG9jdW1lbnRDb21wb25lbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbInR5cGUgUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG4gIGFzc2V0czogeyBocmVmOiBzdHJpbmc7IGFzPzogc3RyaW5nOyByZWw/OiBzdHJpbmcgfVtdO1xuICBoZWFkOiBSZWFjdC5SZWFjdE5vZGU7XG4gIHRpdGxlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEb2N1bWVudCh7IGFzc2V0cywgaGVhZCwgY2hpbGRyZW4sIHRpdGxlIH06IFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGh0bWw+XG4gICAgICA8aGVhZD5cbiAgICAgICAge2hlYWR9XG4gICAgICAgIHthc3NldHMubWFwKChhc3NldCwgaSkgPT4gKFxuICAgICAgICAgIDxsaW5rIGtleT17aX0gcmVsPVwicHJlbG9hZFwiIHsuLi5hc3NldH0gLz5cbiAgICAgICAgKSl9XG4gICAgICAgIDx0aXRsZT57dGl0bGV9PC90aXRsZT5cbiAgICAgIDwvaGVhZD5cbiAgICAgIDxib2R5PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHsvKiB0aGlzIGVuc3VyZXMgdGhlIGNsaWVudCBjYW4gaHlkcmF0ZSB0aGUgYXNzZXRzIHByb3AgKi99XG4gICAgICAgIDxzY3JpcHRcbiAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e1xuICAgICAgICAgICAgX19odG1sOiBgYXNzZXRNYW5pZmVzdCA9ICR7SlNPTi5zdHJpbmdpZnkoYXNzZXRzKX07YCxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgICB7YXNzZXRzXG4gICAgICAgICAgLmZpbHRlcigoeyBocmVmIH0pID0+IGhyZWYuZW5kc1dpdGgoJy5qcycpKVxuICAgICAgICAgIC5tYXAoKHsgaHJlZiB9LCBpKSA9PiAoXG4gICAgICAgICAgICA8c2NyaXB0IGtleT17aX0gc3JjPXtocmVmfSBhc3luYyAvPlxuICAgICAgICAgICkpfVxuICAgICAgPC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKTtcbn1cbkRvY3VtZW50LmRlZmF1bHRQcm9wcyA9IHtcbiAgaGVhZDogKFxuICAgIDw+XG4gICAgICA8bWV0YSBjaGFyU2V0PVwidXRmLThcIiAvPlxuICAgICAgPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xXCIgLz5cbiAgICAgIDxsaW5rIHJlbD1cInNob3J0Y3V0IGljb25cIiBocmVmPVwiL2Fzc2V0cy9mYXZpY29uLmljb1wiIC8+XG4gICAgPC8+XG4gICksXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQU9lLFNBQVNBLFFBQVQsQ0FBa0I7RUFBRUMsTUFBRjtFQUFVQyxJQUFWO0VBQWdCQyxRQUFoQjtFQUEwQkM7QUFBMUIsQ0FBbEIsRUFBNEQ7RUFDekUsb0JBQ0Usb0RBQ0UsdUNBQ0dGLElBREgsRUFFR0QsTUFBTSxDQUFDSSxHQUFQLENBQVcsQ0FBQ0MsS0FBRCxFQUFRQyxDQUFSLGtCQUNWO0lBQU0sR0FBRyxFQUFFQSxDQUFYO0lBQWMsR0FBRyxFQUFDLFNBQWxCO0lBQUEsR0FBZ0NEO0VBQWhDLEVBREQsQ0FGSCxlQUtFLHdDQUFRRixLQUFSLENBTEYsQ0FERixlQVFFLHVDQUNHRCxRQURILGVBR0U7SUFDRSx1QkFBdUIsRUFBRTtNQUN2QkssTUFBTSxFQUFHLG1CQUFrQkMsSUFBSSxDQUFDQyxTQUFMLENBQWVULE1BQWYsQ0FBdUI7SUFEM0I7RUFEM0IsRUFIRixFQVFHQSxNQUFNLENBQ0pVLE1BREYsQ0FDUyxDQUFDO0lBQUVDO0VBQUYsQ0FBRCxLQUFjQSxJQUFJLENBQUNDLFFBQUwsQ0FBYyxLQUFkLENBRHZCLEVBRUVSLEdBRkYsQ0FFTSxDQUFDO0lBQUVPO0VBQUYsQ0FBRCxFQUFXTCxDQUFYLGtCQUNIO0lBQWdCLEdBQUcsRUFBRUssSUFBckI7SUFBMkIsS0FBSztFQUFoQyxHQUFhTCxDQUFiLENBSEgsQ0FSSCxDQVJGLENBREY7QUF5QkQ7O0FBQ0RQLFFBQVEsQ0FBQ2MsWUFBVCxHQUF3QjtFQUN0QlosSUFBSSxlQUNGLHlFQUNFO0lBQU0sT0FBTyxFQUFDO0VBQWQsRUFERixlQUVFO0lBQU0sSUFBSSxFQUFDLFVBQVg7SUFBc0IsT0FBTyxFQUFDO0VBQTlCLEVBRkYsZUFHRTtJQUFNLEdBQUcsRUFBQyxlQUFWO0lBQTBCLElBQUksRUFBQztFQUEvQixFQUhGO0FBRm9CLENBQXhCIn0=
@@ -24,4 +24,4 @@ function documentSpout(options) {
24
24
  };
25
25
  };
26
26
  }
27
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvZG9jdW1lbnQudHN4Il0sIm5hbWVzIjpbImRvY3VtZW50U3BvdXQiLCJvcHRpb25zIiwibmV4dCIsIm5leHRQcm9wcyIsImFwcCIsInRpdGxlIiwiZ2xvYmFsVGhpcyIsImFzc2V0TWFuaWZlc3QiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFJQTs7QUFPZSxTQUFTQSxhQUFULENBQXVCQyxPQUF2QixFQUdaO0FBQ0QsU0FBTyxVQUFpQ0MsSUFBakMsRUFBeUQ7QUFDOUQsV0FBTyxZQUFZO0FBQUE7O0FBQ2pCLFlBQU1DLFNBQVMsR0FBRyxNQUFNRCxJQUFJLEVBQTVCO0FBRUEsYUFBTyxFQUNMLEdBQUdDLFNBREU7QUFFTEMsUUFBQUEsR0FBRyxlQUNELDZCQUFDLDBCQUFELE9BQ01ILE9BRE47QUFFRSxVQUFBLEtBQUssc0JBQUVFLFNBQVMsQ0FBQ0UsS0FBWiwrQkFBcUJKLE9BQU8sQ0FBQ0ksS0FGcEM7QUFHRSxVQUFBLE1BQU0sRUFBR0MsVUFBRCxDQUFvQkM7QUFIOUIsV0FLR0osU0FBUyxDQUFDQyxHQUxiO0FBSEcsT0FBUDtBQVlELEtBZkQ7QUFnQkQsR0FqQkQ7QUFrQkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBSb3V0ZSB9IGZyb20gJ0BhbmFuc2kvcm91dGVyJztcblxuaW1wb3J0IHR5cGUgeyBSZXNvbHZlUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCBEb2N1bWVudCBmcm9tICcuL0RvY3VtZW50Q29tcG9uZW50JztcblxudHlwZSBOZWVkZWRQcm9wcyA9IHtcbiAgbWF0Y2hlZFJvdXRlczogUm91dGU8YW55PltdO1xuICB0aXRsZT86IHN0cmluZztcbn0gJiBSZXNvbHZlUHJvcHM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRvY3VtZW50U3BvdXQob3B0aW9uczoge1xuICBoZWFkPzogUmVhY3QuUmVhY3ROb2RlO1xuICB0aXRsZTogc3RyaW5nO1xufSkge1xuICByZXR1cm4gZnVuY3Rpb24gPFQgZXh0ZW5kcyBOZWVkZWRQcm9wcz4obmV4dDogKCkgPT4gUHJvbWlzZTxUPikge1xuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBuZXh0UHJvcHMgPSBhd2FpdCBuZXh0KCk7XG5cbiAgICAgIHJldHVybiB7XG4gICAgICAgIC4uLm5leHRQcm9wcyxcbiAgICAgICAgYXBwOiAoXG4gICAgICAgICAgPERvY3VtZW50XG4gICAgICAgICAgICB7Li4ub3B0aW9uc31cbiAgICAgICAgICAgIHRpdGxlPXtuZXh0UHJvcHMudGl0bGUgPz8gb3B0aW9ucy50aXRsZX1cbiAgICAgICAgICAgIGFzc2V0cz17KGdsb2JhbFRoaXMgYXMgYW55KS5hc3NldE1hbmlmZXN0fVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtuZXh0UHJvcHMuYXBwfVxuICAgICAgICAgIDwvRG9jdW1lbnQ+XG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG4iXX0=
27
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkb2N1bWVudFNwb3V0Iiwib3B0aW9ucyIsIm5leHQiLCJuZXh0UHJvcHMiLCJhcHAiLCJ0aXRsZSIsImdsb2JhbFRoaXMiLCJhc3NldE1hbmlmZXN0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nwb3V0cy9kb2N1bWVudC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgUm91dGUgfSBmcm9tICdAYW5hbnNpL3JvdXRlcic7XG5cbmltcG9ydCB0eXBlIHsgUmVzb2x2ZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgRG9jdW1lbnQgZnJvbSAnLi9Eb2N1bWVudENvbXBvbmVudCc7XG5cbnR5cGUgTmVlZGVkUHJvcHMgPSB7XG4gIG1hdGNoZWRSb3V0ZXM6IFJvdXRlPGFueT5bXTtcbiAgdGl0bGU/OiBzdHJpbmc7XG59ICYgUmVzb2x2ZVByb3BzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkb2N1bWVudFNwb3V0KG9wdGlvbnM6IHtcbiAgaGVhZD86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgdGl0bGU6IHN0cmluZztcbn0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgTmVlZGVkUHJvcHM+KG5leHQ6ICgpID0+IFByb21pc2U8VD4pIHtcbiAgICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbmV4dFByb3BzID0gYXdhaXQgbmV4dCgpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXh0UHJvcHMsXG4gICAgICAgIGFwcDogKFxuICAgICAgICAgIDxEb2N1bWVudFxuICAgICAgICAgICAgey4uLm9wdGlvbnN9XG4gICAgICAgICAgICB0aXRsZT17bmV4dFByb3BzLnRpdGxlID8/IG9wdGlvbnMudGl0bGV9XG4gICAgICAgICAgICBhc3NldHM9eyhnbG9iYWxUaGlzIGFzIGFueSkuYXNzZXRNYW5pZmVzdH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bmV4dFByb3BzLmFwcH1cbiAgICAgICAgICA8L0RvY3VtZW50PlxuICAgICAgICApLFxuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBSUE7O0FBT2UsU0FBU0EsYUFBVCxDQUF1QkMsT0FBdkIsRUFHWjtFQUNELE9BQU8sVUFBaUNDLElBQWpDLEVBQXlEO0lBQzlELE9BQU8sWUFBWTtNQUFBOztNQUNqQixNQUFNQyxTQUFTLEdBQUcsTUFBTUQsSUFBSSxFQUE1QjtNQUVBLE9BQU8sRUFDTCxHQUFHQyxTQURFO1FBRUxDLEdBQUcsZUFDRCw2QkFBQywwQkFBRCxPQUNNSCxPQUROO1VBRUUsS0FBSyxzQkFBRUUsU0FBUyxDQUFDRSxLQUFaLCtCQUFxQkosT0FBTyxDQUFDSSxLQUZwQztVQUdFLE1BQU0sRUFBR0MsVUFBRCxDQUFvQkM7UUFIOUIsR0FLR0osU0FBUyxDQUFDQyxHQUxiO01BSEcsQ0FBUDtJQVlELENBZkQ7RUFnQkQsQ0FqQkQ7QUFrQkQifQ==
@@ -45,4 +45,4 @@ function DocumentSpout(options) {
45
45
  };
46
46
  };
47
47
  }
48
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvZG9jdW1lbnQuc2VydmVyLnRzeCJdLCJuYW1lcyI6WyJEb2N1bWVudFNwb3V0Iiwib3B0aW9ucyIsIm5leHQiLCJwcm9wcyIsIm5leHRQcm9wcyIsImVudHJ5cG9pbnQiLCJjbGllbnRNYW5pZmVzdCIsImVudHJ5cG9pbnRzIiwibWFpbiIsInB1YmxpY1BhdGgiLCJ1bmRlZmluZWQiLCJFcnJvciIsImFzc2V0TWFwIiwiYXNzZXRzIiwibWFwIiwibmFtZSIsImNoaWxkcmVuIiwicHJlZmV0Y2giLCJmaW5kIiwibWF0Y2hlZFJvdXRlcyIsInNvbWUiLCJyb3V0ZSIsImFzc2V0IiwiZW5kc1dpdGgiLCJocmVmIiwicmVsIiwiYXMiLCJhcHAiLCJ0aXRsZSJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUlBOztBQU9lLFNBQVNBLGFBQVQsQ0FBdUJDLE9BQXZCLEVBR1o7QUFDRCxTQUFPLFVBQ0xDLElBREssRUFFTDtBQUNBLFdBQU8sTUFBT0MsS0FBUCxJQUE4QjtBQUFBOztBQUNuQyxZQUFNQyxTQUFTLEdBQUcsTUFBTUYsSUFBSSxDQUFDQyxLQUFELENBQTVCO0FBRUEsWUFBTUUsVUFBVSw0QkFBR0YsS0FBSyxDQUFDRyxjQUFULG9GQUFHLHNCQUFzQkMsV0FBekIsMkRBQUcsdUJBQW1DQyxJQUF0RDtBQUNBLFlBQU1DLFVBQVUsR0FBR04sS0FBSyxDQUFDRyxjQUFOLENBQXFCRyxVQUF4QztBQUVBLFVBQUlKLFVBQVUsS0FBS0ssU0FBZixJQUE0QkQsVUFBVSxLQUFLQyxTQUEvQyxFQUNFLE1BQU0sSUFBSUMsS0FBSixDQUFVLGlDQUFWLENBQU4sQ0FQaUMsQ0FTbkM7QUFDQTs7QUFDQSxZQUFNQyxRQUFRLEdBQUlDLE1BQUQsSUFDZkEsTUFBTSxDQUFDQyxHQUFQLENBQVcsQ0FBQztBQUFFQyxRQUFBQTtBQUFGLE9BQUQsS0FBZSxHQUFFTixVQUFXLEdBQUVNLElBQUssRUFBOUMsQ0FERixDQVhtQyxDQWFuQzs7O0FBQ0EsWUFBTUYsTUFBTSxHQUFHRCxRQUFRLENBQUMsQ0FDdEIsMEJBQUlQLFVBQVUsQ0FBQ1EsTUFBZixpQ0FBeUIsRUFBekIsQ0FEc0IsRUFFdEIscURBQUlSLFVBQVUsQ0FBQ1csUUFBZixtRkFBSSxxQkFBcUJDLFFBQXpCLHFGQUFJLHVCQUErQkMsSUFBbkMscUZBQUksb0RBQXNDLENBQUM7QUFBRUgsUUFBQUE7QUFBRixPQUFELEtBQ3hDWCxTQUFTLENBQUNlLGFBQVYsQ0FBd0JDLElBQXhCLENBQTZCQyxLQUFLLElBQUlOLElBQUksS0FBS00sS0FBSyxDQUFDTixJQUFyRCxDQURFLENBQUosMkRBQUksdUJBRURGLE1BRkgsb0NBRWEsRUFGYixDQUZzQixDQUFELENBQVIsQ0FLWkMsR0FMWSxDQUtSUSxLQUFLLElBQ1ZBLEtBQUssQ0FBQ0MsUUFBTixDQUFlLE1BQWYsSUFDSTtBQUFFQyxRQUFBQSxJQUFJLEVBQUVGLEtBQVI7QUFBZUcsUUFBQUEsR0FBRyxFQUFFO0FBQXBCLE9BREosR0FFSUgsS0FBSyxDQUFDQyxRQUFOLENBQWUsS0FBZixJQUNBO0FBQUVDLFFBQUFBLElBQUksRUFBRUYsS0FBUjtBQUFlSSxRQUFBQSxFQUFFLEVBQUU7QUFBbkIsT0FEQSxHQUVBO0FBQUVGLFFBQUFBLElBQUksRUFBRUY7QUFBUixPQVZTLENBQWY7QUFhQSxhQUFPLEVBQ0wsR0FBR2xCLFNBREU7QUFFTHVCLFFBQUFBLEdBQUcsZUFDRCw2QkFBQywwQkFBRCxPQUNNMUIsT0FETjtBQUVFLFVBQUEsS0FBSyxzQkFBRUcsU0FBUyxDQUFDd0IsS0FBWiwrQkFBcUIzQixPQUFPLENBQUMyQixLQUZwQztBQUdFLFVBQUEsTUFBTSxFQUFFZjtBQUhWLFdBS0dULFNBQVMsQ0FBQ3VCLEdBTGI7QUFIRyxPQUFQO0FBWUQsS0F2Q0Q7QUF3Q0QsR0EzQ0Q7QUE0Q0QiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBSb3V0ZSB9IGZyb20gJ0BhbmFuc2kvcm91dGVyJztcblxuaW1wb3J0IHR5cGUgeyBTZXJ2ZXJQcm9wcywgUmVzb2x2ZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgRG9jdW1lbnQgZnJvbSAnLi9Eb2N1bWVudENvbXBvbmVudCc7XG5cbnR5cGUgTmVlZGVkUHJvcHMgPSB7XG4gIG1hdGNoZWRSb3V0ZXM6IFJvdXRlPGFueT5bXTtcbiAgdGl0bGU/OiBzdHJpbmc7XG59ICYgUmVzb2x2ZVByb3BzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEb2N1bWVudFNwb3V0KG9wdGlvbnM6IHtcbiAgaGVhZD86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgdGl0bGU6IHN0cmluZztcbn0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgTmVlZGVkUHJvcHM+KFxuICAgIG5leHQ6IChwcm9wczogU2VydmVyUHJvcHMpID0+IFByb21pc2U8VD4sXG4gICkge1xuICAgIHJldHVybiBhc3luYyAocHJvcHM6IFNlcnZlclByb3BzKSA9PiB7XG4gICAgICBjb25zdCBuZXh0UHJvcHMgPSBhd2FpdCBuZXh0KHByb3BzKTtcblxuICAgICAgY29uc3QgZW50cnlwb2ludCA9IHByb3BzLmNsaWVudE1hbmlmZXN0Py5lbnRyeXBvaW50cz8ubWFpbjtcbiAgICAgIGNvbnN0IHB1YmxpY1BhdGggPSBwcm9wcy5jbGllbnRNYW5pZmVzdC5wdWJsaWNQYXRoO1xuXG4gICAgICBpZiAoZW50cnlwb2ludCA9PT0gdW5kZWZpbmVkIHx8IHB1YmxpY1BhdGggPT09IHVuZGVmaW5lZClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYW5pZmVzdCBtaXNzaW5nIGVudHJpZXMgbmVlZGVkJyk7XG5cbiAgICAgIC8vIFRPRE86IGNvbnNpZGVyIHVzaW5nIHRoaXMgcGFja2FnZSBmb3IgYnVpbGQgc3RhdHMgaW4gZnV0dXJlOlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3RyZWUvbWFpbi9wYWNrYWdlcy9yZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2tcbiAgICAgIGNvbnN0IGFzc2V0TWFwID0gKGFzc2V0czogeyBuYW1lOiBzdHJpbmc7IHNpemU/OiBudW1iZXIgfVtdKSA9PlxuICAgICAgICBhc3NldHMubWFwKCh7IG5hbWUgfSkgPT4gYCR7cHVibGljUGF0aH0ke25hbWV9YCk7XG4gICAgICAvLyBmaW5kIGFkZGl0aW9uYWwgYXNzZXRzIHRvIHByZWxvYWQgYmFzZWQgb24gbWF0Y2hlZCByb3V0ZVxuICAgICAgY29uc3QgYXNzZXRzID0gYXNzZXRNYXAoW1xuICAgICAgICAuLi4oZW50cnlwb2ludC5hc3NldHMgPz8gW10pLFxuICAgICAgICAuLi4oZW50cnlwb2ludC5jaGlsZHJlbj8ucHJlZmV0Y2g/LmZpbmQ/LigoeyBuYW1lIH0pID0+XG4gICAgICAgICAgbmV4dFByb3BzLm1hdGNoZWRSb3V0ZXMuc29tZShyb3V0ZSA9PiBuYW1lID09PSByb3V0ZS5uYW1lKSxcbiAgICAgICAgKT8uYXNzZXRzID8/IFtdKSxcbiAgICAgIF0pLm1hcChhc3NldCA9PlxuICAgICAgICBhc3NldC5lbmRzV2l0aCgnLmNzcycpXG4gICAgICAgICAgPyB7IGhyZWY6IGFzc2V0LCByZWw6ICdzdHlsZXNoZWV0JyB9XG4gICAgICAgICAgOiBhc3NldC5lbmRzV2l0aCgnLmpzJylcbiAgICAgICAgICA/IHsgaHJlZjogYXNzZXQsIGFzOiAnc2NyaXB0JyB9XG4gICAgICAgICAgOiB7IGhyZWY6IGFzc2V0IH0sXG4gICAgICApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXh0UHJvcHMsXG4gICAgICAgIGFwcDogKFxuICAgICAgICAgIDxEb2N1bWVudFxuICAgICAgICAgICAgey4uLm9wdGlvbnN9XG4gICAgICAgICAgICB0aXRsZT17bmV4dFByb3BzLnRpdGxlID8/IG9wdGlvbnMudGl0bGV9XG4gICAgICAgICAgICBhc3NldHM9e2Fzc2V0c31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bmV4dFByb3BzLmFwcH1cbiAgICAgICAgICA8L0RvY3VtZW50PlxuICAgICAgICApLFxuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuIl19
48
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEb2N1bWVudFNwb3V0Iiwib3B0aW9ucyIsIm5leHQiLCJwcm9wcyIsIm5leHRQcm9wcyIsImVudHJ5cG9pbnQiLCJjbGllbnRNYW5pZmVzdCIsImVudHJ5cG9pbnRzIiwibWFpbiIsInB1YmxpY1BhdGgiLCJ1bmRlZmluZWQiLCJFcnJvciIsImFzc2V0TWFwIiwiYXNzZXRzIiwibWFwIiwibmFtZSIsImNoaWxkcmVuIiwicHJlZmV0Y2giLCJmaW5kIiwibWF0Y2hlZFJvdXRlcyIsInNvbWUiLCJyb3V0ZSIsImFzc2V0IiwiZW5kc1dpdGgiLCJocmVmIiwicmVsIiwiYXMiLCJhcHAiLCJ0aXRsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvZG9jdW1lbnQuc2VydmVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBSb3V0ZSB9IGZyb20gJ0BhbmFuc2kvcm91dGVyJztcblxuaW1wb3J0IHR5cGUgeyBTZXJ2ZXJQcm9wcywgUmVzb2x2ZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgRG9jdW1lbnQgZnJvbSAnLi9Eb2N1bWVudENvbXBvbmVudCc7XG5cbnR5cGUgTmVlZGVkUHJvcHMgPSB7XG4gIG1hdGNoZWRSb3V0ZXM6IFJvdXRlPGFueT5bXTtcbiAgdGl0bGU/OiBzdHJpbmc7XG59ICYgUmVzb2x2ZVByb3BzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEb2N1bWVudFNwb3V0KG9wdGlvbnM6IHtcbiAgaGVhZD86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgdGl0bGU6IHN0cmluZztcbn0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgTmVlZGVkUHJvcHM+KFxuICAgIG5leHQ6IChwcm9wczogU2VydmVyUHJvcHMpID0+IFByb21pc2U8VD4sXG4gICkge1xuICAgIHJldHVybiBhc3luYyAocHJvcHM6IFNlcnZlclByb3BzKSA9PiB7XG4gICAgICBjb25zdCBuZXh0UHJvcHMgPSBhd2FpdCBuZXh0KHByb3BzKTtcblxuICAgICAgY29uc3QgZW50cnlwb2ludCA9IHByb3BzLmNsaWVudE1hbmlmZXN0Py5lbnRyeXBvaW50cz8ubWFpbjtcbiAgICAgIGNvbnN0IHB1YmxpY1BhdGggPSBwcm9wcy5jbGllbnRNYW5pZmVzdC5wdWJsaWNQYXRoO1xuXG4gICAgICBpZiAoZW50cnlwb2ludCA9PT0gdW5kZWZpbmVkIHx8IHB1YmxpY1BhdGggPT09IHVuZGVmaW5lZClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYW5pZmVzdCBtaXNzaW5nIGVudHJpZXMgbmVlZGVkJyk7XG5cbiAgICAgIC8vIFRPRE86IGNvbnNpZGVyIHVzaW5nIHRoaXMgcGFja2FnZSBmb3IgYnVpbGQgc3RhdHMgaW4gZnV0dXJlOlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3RyZWUvbWFpbi9wYWNrYWdlcy9yZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2tcbiAgICAgIGNvbnN0IGFzc2V0TWFwID0gKGFzc2V0czogeyBuYW1lOiBzdHJpbmc7IHNpemU/OiBudW1iZXIgfVtdKSA9PlxuICAgICAgICBhc3NldHMubWFwKCh7IG5hbWUgfSkgPT4gYCR7cHVibGljUGF0aH0ke25hbWV9YCk7XG4gICAgICAvLyBmaW5kIGFkZGl0aW9uYWwgYXNzZXRzIHRvIHByZWxvYWQgYmFzZWQgb24gbWF0Y2hlZCByb3V0ZVxuICAgICAgY29uc3QgYXNzZXRzID0gYXNzZXRNYXAoW1xuICAgICAgICAuLi4oZW50cnlwb2ludC5hc3NldHMgPz8gW10pLFxuICAgICAgICAuLi4oZW50cnlwb2ludC5jaGlsZHJlbj8ucHJlZmV0Y2g/LmZpbmQ/LigoeyBuYW1lIH0pID0+XG4gICAgICAgICAgbmV4dFByb3BzLm1hdGNoZWRSb3V0ZXMuc29tZShyb3V0ZSA9PiBuYW1lID09PSByb3V0ZS5uYW1lKSxcbiAgICAgICAgKT8uYXNzZXRzID8/IFtdKSxcbiAgICAgIF0pLm1hcChhc3NldCA9PlxuICAgICAgICBhc3NldC5lbmRzV2l0aCgnLmNzcycpXG4gICAgICAgICAgPyB7IGhyZWY6IGFzc2V0LCByZWw6ICdzdHlsZXNoZWV0JyB9XG4gICAgICAgICAgOiBhc3NldC5lbmRzV2l0aCgnLmpzJylcbiAgICAgICAgICA/IHsgaHJlZjogYXNzZXQsIGFzOiAnc2NyaXB0JyB9XG4gICAgICAgICAgOiB7IGhyZWY6IGFzc2V0IH0sXG4gICAgICApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXh0UHJvcHMsXG4gICAgICAgIGFwcDogKFxuICAgICAgICAgIDxEb2N1bWVudFxuICAgICAgICAgICAgey4uLm9wdGlvbnN9XG4gICAgICAgICAgICB0aXRsZT17bmV4dFByb3BzLnRpdGxlID8/IG9wdGlvbnMudGl0bGV9XG4gICAgICAgICAgICBhc3NldHM9e2Fzc2V0c31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bmV4dFByb3BzLmFwcH1cbiAgICAgICAgICA8L0RvY3VtZW50PlxuICAgICAgICApLFxuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBSUE7O0FBT2UsU0FBU0EsYUFBVCxDQUF1QkMsT0FBdkIsRUFHWjtFQUNELE9BQU8sVUFDTEMsSUFESyxFQUVMO0lBQ0EsT0FBTyxNQUFPQyxLQUFQLElBQThCO01BQUE7O01BQ25DLE1BQU1DLFNBQVMsR0FBRyxNQUFNRixJQUFJLENBQUNDLEtBQUQsQ0FBNUI7TUFFQSxNQUFNRSxVQUFVLDRCQUFHRixLQUFLLENBQUNHLGNBQVQsb0ZBQUcsc0JBQXNCQyxXQUF6QiwyREFBRyx1QkFBbUNDLElBQXREO01BQ0EsTUFBTUMsVUFBVSxHQUFHTixLQUFLLENBQUNHLGNBQU4sQ0FBcUJHLFVBQXhDO01BRUEsSUFBSUosVUFBVSxLQUFLSyxTQUFmLElBQTRCRCxVQUFVLEtBQUtDLFNBQS9DLEVBQ0UsTUFBTSxJQUFJQyxLQUFKLENBQVUsaUNBQVYsQ0FBTixDQVBpQyxDQVNuQztNQUNBOztNQUNBLE1BQU1DLFFBQVEsR0FBSUMsTUFBRCxJQUNmQSxNQUFNLENBQUNDLEdBQVAsQ0FBVyxDQUFDO1FBQUVDO01BQUYsQ0FBRCxLQUFlLEdBQUVOLFVBQVcsR0FBRU0sSUFBSyxFQUE5QyxDQURGLENBWG1DLENBYW5DOzs7TUFDQSxNQUFNRixNQUFNLEdBQUdELFFBQVEsQ0FBQyxDQUN0QiwwQkFBSVAsVUFBVSxDQUFDUSxNQUFmLGlDQUF5QixFQUF6QixDQURzQixFQUV0QixxREFBSVIsVUFBVSxDQUFDVyxRQUFmLG1GQUFJLHFCQUFxQkMsUUFBekIscUZBQUksdUJBQStCQyxJQUFuQyxxRkFBSSxvREFBc0MsQ0FBQztRQUFFSDtNQUFGLENBQUQsS0FDeENYLFNBQVMsQ0FBQ2UsYUFBVixDQUF3QkMsSUFBeEIsQ0FBNkJDLEtBQUssSUFBSU4sSUFBSSxLQUFLTSxLQUFLLENBQUNOLElBQXJELENBREUsQ0FBSiwyREFBSSx1QkFFREYsTUFGSCxvQ0FFYSxFQUZiLENBRnNCLENBQUQsQ0FBUixDQUtaQyxHQUxZLENBS1JRLEtBQUssSUFDVkEsS0FBSyxDQUFDQyxRQUFOLENBQWUsTUFBZixJQUNJO1FBQUVDLElBQUksRUFBRUYsS0FBUjtRQUFlRyxHQUFHLEVBQUU7TUFBcEIsQ0FESixHQUVJSCxLQUFLLENBQUNDLFFBQU4sQ0FBZSxLQUFmLElBQ0E7UUFBRUMsSUFBSSxFQUFFRixLQUFSO1FBQWVJLEVBQUUsRUFBRTtNQUFuQixDQURBLEdBRUE7UUFBRUYsSUFBSSxFQUFFRjtNQUFSLENBVlMsQ0FBZjtNQWFBLE9BQU8sRUFDTCxHQUFHbEIsU0FERTtRQUVMdUIsR0FBRyxlQUNELDZCQUFDLDBCQUFELE9BQ00xQixPQUROO1VBRUUsS0FBSyxzQkFBRUcsU0FBUyxDQUFDd0IsS0FBWiwrQkFBcUIzQixPQUFPLENBQUMyQixLQUZwQztVQUdFLE1BQU0sRUFBRWY7UUFIVixHQUtHVCxTQUFTLENBQUN1QixHQUxiO01BSEcsQ0FBUDtJQVlELENBdkNEO0VBd0NELENBM0NEO0FBNENEIn0=
@@ -24,4 +24,4 @@ function prefetchSpout(field) {
24
24
  };
25
25
  };
26
26
  }
27
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvcHJlZmV0Y2guc2VydmVyLnRzeCJdLCJuYW1lcyI6WyJwcmVmZXRjaFNwb3V0IiwiZmllbGQiLCJuZXh0IiwicHJvcHMiLCJuZXh0UHJvcHMiLCJ0b0ZldGNoIiwibWF0Y2hlZFJvdXRlcyIsImZvckVhY2giLCJyb3V0ZSIsInJlc29sdmVEYXRhIiwicHVzaCIsIlByb21pc2UiLCJhbGwiLCJlIiwiY29uc29sZSIsImVycm9yIl0sIm1hcHBpbmdzIjoiOzs7OztBQVFlLFNBQVNBLGFBQVQsQ0FBeUNDLEtBQXpDLEVBQW1EO0FBQ2hFLFNBQU8sVUFDTEMsSUFESyxFQU1MO0FBQ0EsV0FBTyxNQUFPQyxLQUFQLElBQThCO0FBQ25DLFlBQU1DLFNBQVMsR0FBRyxNQUFNRixJQUFJLENBQUNDLEtBQUQsQ0FBNUI7O0FBRUEsVUFBSTtBQUNGLGNBQU1FLE9BQTJCLEdBQUcsRUFBcEM7QUFDQUQsUUFBQUEsU0FBUyxDQUFDRSxhQUFWLENBQXdCQyxPQUF4QixDQUFnQ0MsS0FBSyxJQUFJO0FBQ3ZDLGNBQUksT0FBT0EsS0FBSyxDQUFDQyxXQUFiLEtBQTZCLFVBQWpDLEVBQTZDO0FBQzNDSixZQUFBQSxPQUFPLENBQUNLLElBQVIsQ0FBYUYsS0FBSyxDQUFDQyxXQUFOLENBQWtCTCxTQUFTLENBQUNILEtBQUQsQ0FBM0IsRUFBb0NPLEtBQXBDLENBQWI7QUFDRDtBQUNGLFNBSkQ7QUFLQSxjQUFNRyxPQUFPLENBQUNDLEdBQVIsQ0FBWVAsT0FBWixDQUFOO0FBQ0QsT0FSRCxDQVFFLE9BQU9RLENBQVAsRUFBVTtBQUNWQyxRQUFBQSxPQUFPLENBQUNDLEtBQVIsQ0FBY0YsQ0FBZDtBQUNEOztBQUNELGFBQU9ULFNBQVA7QUFDRCxLQWZEO0FBZ0JELEdBdkJEO0FBd0JEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGUgfSBmcm9tICdAYW5hbnNpL3JvdXRlcic7XG5cbmltcG9ydCB0eXBlIHsgUmVzb2x2ZVByb3BzLCBTZXJ2ZXJQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG50eXBlIE5lZWRlZFByb3BzPFJvdXRlV2l0aD4gPSB7XG4gIG1hdGNoZWRSb3V0ZXM6IFJvdXRlPFJvdXRlV2l0aD5bXTtcbn0gJiBSZXNvbHZlUHJvcHM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHByZWZldGNoU3BvdXQ8RiBleHRlbmRzIHN0cmluZz4oZmllbGQ6IEYpIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxSb3V0ZVdpdGgsIFQgZXh0ZW5kcyBOZWVkZWRQcm9wczxSb3V0ZVdpdGg+PihcbiAgICBuZXh0OiAocHJvcHM6IFNlcnZlclByb3BzKSA9PiBQcm9taXNlPFxuICAgICAge1xuICAgICAgICBbSyBpbiBGXTogUm91dGVXaXRoO1xuICAgICAgfSAmIFRcbiAgICA+LFxuICApIHtcbiAgICByZXR1cm4gYXN5bmMgKHByb3BzOiBTZXJ2ZXJQcm9wcykgPT4ge1xuICAgICAgY29uc3QgbmV4dFByb3BzID0gYXdhaXQgbmV4dChwcm9wcyk7XG5cbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHRvRmV0Y2g6IFByb21pc2U8dW5rbm93bj5bXSA9IFtdO1xuICAgICAgICBuZXh0UHJvcHMubWF0Y2hlZFJvdXRlcy5mb3JFYWNoKHJvdXRlID0+IHtcbiAgICAgICAgICBpZiAodHlwZW9mIHJvdXRlLnJlc29sdmVEYXRhID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICAgICAgICB0b0ZldGNoLnB1c2gocm91dGUucmVzb2x2ZURhdGEobmV4dFByb3BzW2ZpZWxkXSwgcm91dGUpKTtcbiAgICAgICAgICB9XG4gICAgICAgIH0pO1xuICAgICAgICBhd2FpdCBQcm9taXNlLmFsbCh0b0ZldGNoKTtcbiAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgIH1cbiAgICAgIHJldHVybiBuZXh0UHJvcHM7XG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==
27
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJwcmVmZXRjaFNwb3V0IiwiZmllbGQiLCJuZXh0IiwicHJvcHMiLCJuZXh0UHJvcHMiLCJ0b0ZldGNoIiwibWF0Y2hlZFJvdXRlcyIsImZvckVhY2giLCJyb3V0ZSIsInJlc29sdmVEYXRhIiwicHVzaCIsIlByb21pc2UiLCJhbGwiLCJlIiwiY29uc29sZSIsImVycm9yIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nwb3V0cy9wcmVmZXRjaC5zZXJ2ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlIH0gZnJvbSAnQGFuYW5zaS9yb3V0ZXInO1xuXG5pbXBvcnQgdHlwZSB7IFJlc29sdmVQcm9wcywgU2VydmVyUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxudHlwZSBOZWVkZWRQcm9wczxSb3V0ZVdpdGg+ID0ge1xuICBtYXRjaGVkUm91dGVzOiBSb3V0ZTxSb3V0ZVdpdGg+W107XG59ICYgUmVzb2x2ZVByb3BzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBwcmVmZXRjaFNwb3V0PEYgZXh0ZW5kcyBzdHJpbmc+KGZpZWxkOiBGKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8Um91dGVXaXRoLCBUIGV4dGVuZHMgTmVlZGVkUHJvcHM8Um91dGVXaXRoPj4oXG4gICAgbmV4dDogKHByb3BzOiBTZXJ2ZXJQcm9wcykgPT4gUHJvbWlzZTxcbiAgICAgIHtcbiAgICAgICAgW0sgaW4gRl06IFJvdXRlV2l0aDtcbiAgICAgIH0gJiBUXG4gICAgPixcbiAgKSB7XG4gICAgcmV0dXJuIGFzeW5jIChwcm9wczogU2VydmVyUHJvcHMpID0+IHtcbiAgICAgIGNvbnN0IG5leHRQcm9wcyA9IGF3YWl0IG5leHQocHJvcHMpO1xuXG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCB0b0ZldGNoOiBQcm9taXNlPHVua25vd24+W10gPSBbXTtcbiAgICAgICAgbmV4dFByb3BzLm1hdGNoZWRSb3V0ZXMuZm9yRWFjaChyb3V0ZSA9PiB7XG4gICAgICAgICAgaWYgKHR5cGVvZiByb3V0ZS5yZXNvbHZlRGF0YSA9PT0gJ2Z1bmN0aW9uJykge1xuICAgICAgICAgICAgdG9GZXRjaC5wdXNoKHJvdXRlLnJlc29sdmVEYXRhKG5leHRQcm9wc1tmaWVsZF0sIHJvdXRlKSk7XG4gICAgICAgICAgfVxuICAgICAgICB9KTtcbiAgICAgICAgYXdhaXQgUHJvbWlzZS5hbGwodG9GZXRjaCk7XG4gICAgICB9IGNhdGNoIChlKSB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoZSk7XG4gICAgICB9XG4gICAgICByZXR1cm4gbmV4dFByb3BzO1xuICAgIH07XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBUWUsU0FBU0EsYUFBVCxDQUF5Q0MsS0FBekMsRUFBbUQ7RUFDaEUsT0FBTyxVQUNMQyxJQURLLEVBTUw7SUFDQSxPQUFPLE1BQU9DLEtBQVAsSUFBOEI7TUFDbkMsTUFBTUMsU0FBUyxHQUFHLE1BQU1GLElBQUksQ0FBQ0MsS0FBRCxDQUE1Qjs7TUFFQSxJQUFJO1FBQ0YsTUFBTUUsT0FBMkIsR0FBRyxFQUFwQztRQUNBRCxTQUFTLENBQUNFLGFBQVYsQ0FBd0JDLE9BQXhCLENBQWdDQyxLQUFLLElBQUk7VUFDdkMsSUFBSSxPQUFPQSxLQUFLLENBQUNDLFdBQWIsS0FBNkIsVUFBakMsRUFBNkM7WUFDM0NKLE9BQU8sQ0FBQ0ssSUFBUixDQUFhRixLQUFLLENBQUNDLFdBQU4sQ0FBa0JMLFNBQVMsQ0FBQ0gsS0FBRCxDQUEzQixFQUFvQ08sS0FBcEMsQ0FBYjtVQUNEO1FBQ0YsQ0FKRDtRQUtBLE1BQU1HLE9BQU8sQ0FBQ0MsR0FBUixDQUFZUCxPQUFaLENBQU47TUFDRCxDQVJELENBUUUsT0FBT1EsQ0FBUCxFQUFVO1FBQ1ZDLE9BQU8sQ0FBQ0MsS0FBUixDQUFjRixDQUFkO01BQ0Q7O01BQ0QsT0FBT1QsU0FBUDtJQUNELENBZkQ7RUFnQkQsQ0F2QkQ7QUF3QkQifQ==
@@ -31,4 +31,4 @@ function restHooksSpout(options = {
31
31
  };
32
32
  };
33
33
  }
34
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvcmVzdEhvb2tzLnRzeCJdLCJuYW1lcyI6WyJyZXN0SG9va3NTcG91dCIsIm9wdGlvbnMiLCJnZXRNYW5hZ2VycyIsIk5ldHdvcmtNYW5hZ2VyIiwibmV4dCIsImRhdGEiLCJuZXh0UHJvcHMiLCJhcHAiXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBTWUsU0FBU0EsY0FBVCxDQUNiQyxPQUVDLEdBQUc7QUFBRUMsRUFBQUEsV0FBVyxFQUFFLE1BQU0sQ0FBQyxJQUFJQyxvQkFBSixFQUFEO0FBQXJCLENBSFMsRUFJYjtBQUNBLFNBQU8sVUFBaUNDLElBQWpDLEVBQXlEO0FBQzlELFdBQU8sWUFBWTtBQUNqQixZQUFNQyxJQUFJLEdBQUcsMEJBQWI7QUFFQSxZQUFNQyxTQUFTLEdBQUcsTUFBTUYsSUFBSSxFQUE1QjtBQUVBLGFBQU8sRUFDTCxHQUFHRSxTQURFO0FBRUxDLFFBQUFBLEdBQUcsZUFDRCxtQkFBQyxtQkFBRDtBQUFlLFVBQUEsWUFBWSxFQUFFRixJQUE3QjtBQUFtQyxVQUFBLFFBQVEsRUFBRUosT0FBTyxDQUFDQyxXQUFSO0FBQTdDLG1CQUNHSSxTQUFTLENBQUNDLEdBRGIsZUFFRSxtQkFBQyx3QkFBRDtBQUFxQixVQUFBLElBQUksRUFBRUY7QUFBM0IsVUFGRjtBQUhHLE9BQVA7QUFTRCxLQWREO0FBZUQsR0FoQkQ7QUFpQkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYWNoZVByb3ZpZGVyLCBNYW5hZ2VyLCBOZXR3b3JrTWFuYWdlciB9IGZyb20gJ0ByZXN0LWhvb2tzL2NvcmUnO1xuaW1wb3J0IHsgU2VydmVyRGF0YUNvbXBvbmVudCwgZ2V0RGF0YWZyb21ET00gfSBmcm9tICdAcmVzdC1ob29rcy9zc3InO1xuXG5pbXBvcnQgdHlwZSB7IFJlc29sdmVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG50eXBlIE5lZWRlZFByb3BzID0gUmVzb2x2ZVByb3BzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXN0SG9va3NTcG91dChcbiAgb3B0aW9uczoge1xuICAgIGdldE1hbmFnZXJzOiAoKSA9PiBNYW5hZ2VyW107XG4gIH0gPSB7IGdldE1hbmFnZXJzOiAoKSA9PiBbbmV3IE5ldHdvcmtNYW5hZ2VyKCldIH0sXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgTmVlZGVkUHJvcHM+KG5leHQ6ICgpID0+IFByb21pc2U8VD4pIHtcbiAgICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IGdldERhdGFmcm9tRE9NKCk7XG5cbiAgICAgIGNvbnN0IG5leHRQcm9wcyA9IGF3YWl0IG5leHQoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubmV4dFByb3BzLFxuICAgICAgICBhcHA6IChcbiAgICAgICAgICA8Q2FjaGVQcm92aWRlciBpbml0aWFsU3RhdGU9e2RhdGF9IG1hbmFnZXJzPXtvcHRpb25zLmdldE1hbmFnZXJzKCl9PlxuICAgICAgICAgICAge25leHRQcm9wcy5hcHB9XG4gICAgICAgICAgICA8U2VydmVyRGF0YUNvbXBvbmVudCBkYXRhPXtkYXRhfSAvPlxuICAgICAgICAgIDwvQ2FjaGVQcm92aWRlcj5cbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==
34
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXN0SG9va3NTcG91dCIsIm9wdGlvbnMiLCJnZXRNYW5hZ2VycyIsIk5ldHdvcmtNYW5hZ2VyIiwibmV4dCIsImRhdGEiLCJnZXREYXRhZnJvbURPTSIsIm5leHRQcm9wcyIsImFwcCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvcmVzdEhvb2tzLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBDYWNoZVByb3ZpZGVyLCBNYW5hZ2VyLCBOZXR3b3JrTWFuYWdlciB9IGZyb20gJ0ByZXN0LWhvb2tzL2NvcmUnO1xuaW1wb3J0IHsgU2VydmVyRGF0YUNvbXBvbmVudCwgZ2V0RGF0YWZyb21ET00gfSBmcm9tICdAcmVzdC1ob29rcy9zc3InO1xuXG5pbXBvcnQgdHlwZSB7IFJlc29sdmVQcm9wcyB9IGZyb20gJy4vdHlwZXMnO1xuXG50eXBlIE5lZWRlZFByb3BzID0gUmVzb2x2ZVByb3BzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByZXN0SG9va3NTcG91dChcbiAgb3B0aW9uczoge1xuICAgIGdldE1hbmFnZXJzOiAoKSA9PiBNYW5hZ2VyW107XG4gIH0gPSB7IGdldE1hbmFnZXJzOiAoKSA9PiBbbmV3IE5ldHdvcmtNYW5hZ2VyKCldIH0sXG4pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgTmVlZGVkUHJvcHM+KG5leHQ6ICgpID0+IFByb21pc2U8VD4pIHtcbiAgICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgZGF0YSA9IGdldERhdGFmcm9tRE9NKCk7XG5cbiAgICAgIGNvbnN0IG5leHRQcm9wcyA9IGF3YWl0IG5leHQoKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubmV4dFByb3BzLFxuICAgICAgICBhcHA6IChcbiAgICAgICAgICA8Q2FjaGVQcm92aWRlciBpbml0aWFsU3RhdGU9e2RhdGF9IG1hbmFnZXJzPXtvcHRpb25zLmdldE1hbmFnZXJzKCl9PlxuICAgICAgICAgICAge25leHRQcm9wcy5hcHB9XG4gICAgICAgICAgICA8U2VydmVyRGF0YUNvbXBvbmVudCBkYXRhPXtkYXRhfSAvPlxuICAgICAgICAgIDwvQ2FjaGVQcm92aWRlcj5cbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFNZSxTQUFTQSxjQUFULENBQ2JDLE9BRUMsR0FBRztFQUFFQyxXQUFXLEVBQUUsTUFBTSxDQUFDLElBQUlDLG9CQUFKLEVBQUQ7QUFBckIsQ0FIUyxFQUliO0VBQ0EsT0FBTyxVQUFpQ0MsSUFBakMsRUFBeUQ7SUFDOUQsT0FBTyxZQUFZO01BQ2pCLE1BQU1DLElBQUksR0FBRyxJQUFBQyxtQkFBQSxHQUFiO01BRUEsTUFBTUMsU0FBUyxHQUFHLE1BQU1ILElBQUksRUFBNUI7TUFFQSxPQUFPLEVBQ0wsR0FBR0csU0FERTtRQUVMQyxHQUFHLGVBQ0QsbUJBQUMsbUJBQUQ7VUFBZSxZQUFZLEVBQUVILElBQTdCO1VBQW1DLFFBQVEsRUFBRUosT0FBTyxDQUFDQyxXQUFSO1FBQTdDLFdBQ0dLLFNBQVMsQ0FBQ0MsR0FEYixlQUVFLG1CQUFDLHdCQUFEO1VBQXFCLElBQUksRUFBRUg7UUFBM0IsRUFGRjtNQUhHLENBQVA7SUFTRCxDQWREO0VBZUQsQ0FoQkQ7QUFpQkQifQ==
@@ -27,4 +27,4 @@ function restHooksSpout(options = {
27
27
  };
28
28
  };
29
29
  }
30
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvcmVzdEhvb2tzLnNlcnZlci50c3giXSwibmFtZXMiOlsicmVzdEhvb2tzU3BvdXQiLCJvcHRpb25zIiwiZ2V0TWFuYWdlcnMiLCJOZXR3b3JrTWFuYWdlciIsIm5leHQiLCJwcm9wcyIsIlNlcnZlckNhY2hlUHJvdmlkZXIiLCJjb250cm9sbGVyIiwibmV4dFByb3BzIiwiYXBwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUNBOztBQU1lLFNBQVNBLGNBQVQsQ0FDYkMsT0FFQyxHQUFHO0FBQUVDLEVBQUFBLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSUMsb0JBQUosRUFBRDtBQUFyQixDQUhTLEVBSWI7QUFDQSxTQUFPLFVBQ0xDLElBREssRUFFTDtBQUNBLFdBQU8sTUFBT0MsS0FBUCxJQUE4QjtBQUNuQyxZQUFNLENBQUNDLG1CQUFELEVBQXNCQyxVQUF0QixJQUFvQywrQkFDeENOLE9BQU8sQ0FBQ0MsV0FBUixFQUR3QyxDQUExQztBQUlBLFlBQU1NLFNBQVMsR0FBRyxNQUFNSixJQUFJLENBQUNDLEtBQUQsQ0FBNUI7QUFFQSxhQUFPLEVBQ0wsR0FBR0csU0FERTtBQUVMRCxRQUFBQSxVQUZLO0FBR0xFLFFBQUFBLEdBQUcsZUFBRSxtQkFBQyxtQkFBRCxjQUFzQkQsU0FBUyxDQUFDQyxHQUFoQztBQUhBLE9BQVA7QUFLRCxLQVpEO0FBYUQsR0FoQkQ7QUFpQkQiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBNYW5hZ2VyLCBOZXR3b3JrTWFuYWdlciB9IGZyb20gJ0ByZXN0LWhvb2tzL2NvcmUnO1xuaW1wb3J0IHsgY3JlYXRlUGVyc2lzdGVkU3RvcmUgfSBmcm9tICdAcmVzdC1ob29rcy9zc3InO1xuXG5pbXBvcnQgdHlwZSB7IFJlc29sdmVQcm9wcywgU2VydmVyUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxudHlwZSBOZWVkZWRQcm9wcyA9IFJlc29sdmVQcm9wcztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVzdEhvb2tzU3BvdXQoXG4gIG9wdGlvbnM6IHtcbiAgICBnZXRNYW5hZ2VyczogKCkgPT4gTWFuYWdlcltdO1xuICB9ID0geyBnZXRNYW5hZ2VyczogKCkgPT4gW25ldyBOZXR3b3JrTWFuYWdlcigpXSB9LFxuKSB7XG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIE5lZWRlZFByb3BzPihcbiAgICBuZXh0OiAocHJvcHM6IFNlcnZlclByb3BzKSA9PiBQcm9taXNlPFQ+LFxuICApIHtcbiAgICByZXR1cm4gYXN5bmMgKHByb3BzOiBTZXJ2ZXJQcm9wcykgPT4ge1xuICAgICAgY29uc3QgW1NlcnZlckNhY2hlUHJvdmlkZXIsIGNvbnRyb2xsZXJdID0gY3JlYXRlUGVyc2lzdGVkU3RvcmUoXG4gICAgICAgIG9wdGlvbnMuZ2V0TWFuYWdlcnMoKSxcbiAgICAgICk7XG5cbiAgICAgIGNvbnN0IG5leHRQcm9wcyA9IGF3YWl0IG5leHQocHJvcHMpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXh0UHJvcHMsXG4gICAgICAgIGNvbnRyb2xsZXIsXG4gICAgICAgIGFwcDogPFNlcnZlckNhY2hlUHJvdmlkZXI+e25leHRQcm9wcy5hcHB9PC9TZXJ2ZXJDYWNoZVByb3ZpZGVyPixcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn1cbiJdfQ==
30
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXN0SG9va3NTcG91dCIsIm9wdGlvbnMiLCJnZXRNYW5hZ2VycyIsIk5ldHdvcmtNYW5hZ2VyIiwibmV4dCIsInByb3BzIiwiU2VydmVyQ2FjaGVQcm92aWRlciIsImNvbnRyb2xsZXIiLCJjcmVhdGVQZXJzaXN0ZWRTdG9yZSIsIm5leHRQcm9wcyIsImFwcCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvcmVzdEhvb2tzLnNlcnZlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgTWFuYWdlciwgTmV0d29ya01hbmFnZXIgfSBmcm9tICdAcmVzdC1ob29rcy9jb3JlJztcbmltcG9ydCB7IGNyZWF0ZVBlcnNpc3RlZFN0b3JlIH0gZnJvbSAnQHJlc3QtaG9va3Mvc3NyJztcblxuaW1wb3J0IHR5cGUgeyBSZXNvbHZlUHJvcHMsIFNlcnZlclByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5cbnR5cGUgTmVlZGVkUHJvcHMgPSBSZXNvbHZlUHJvcHM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJlc3RIb29rc1Nwb3V0KFxuICBvcHRpb25zOiB7XG4gICAgZ2V0TWFuYWdlcnM6ICgpID0+IE1hbmFnZXJbXTtcbiAgfSA9IHsgZ2V0TWFuYWdlcnM6ICgpID0+IFtuZXcgTmV0d29ya01hbmFnZXIoKV0gfSxcbikge1xuICByZXR1cm4gZnVuY3Rpb24gPFQgZXh0ZW5kcyBOZWVkZWRQcm9wcz4oXG4gICAgbmV4dDogKHByb3BzOiBTZXJ2ZXJQcm9wcykgPT4gUHJvbWlzZTxUPixcbiAgKSB7XG4gICAgcmV0dXJuIGFzeW5jIChwcm9wczogU2VydmVyUHJvcHMpID0+IHtcbiAgICAgIGNvbnN0IFtTZXJ2ZXJDYWNoZVByb3ZpZGVyLCBjb250cm9sbGVyXSA9IGNyZWF0ZVBlcnNpc3RlZFN0b3JlKFxuICAgICAgICBvcHRpb25zLmdldE1hbmFnZXJzKCksXG4gICAgICApO1xuXG4gICAgICBjb25zdCBuZXh0UHJvcHMgPSBhd2FpdCBuZXh0KHByb3BzKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubmV4dFByb3BzLFxuICAgICAgICBjb250cm9sbGVyLFxuICAgICAgICBhcHA6IDxTZXJ2ZXJDYWNoZVByb3ZpZGVyPntuZXh0UHJvcHMuYXBwfTwvU2VydmVyQ2FjaGVQcm92aWRlcj4sXG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBQ0E7O0FBTWUsU0FBU0EsY0FBVCxDQUNiQyxPQUVDLEdBQUc7RUFBRUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxJQUFJQyxvQkFBSixFQUFEO0FBQXJCLENBSFMsRUFJYjtFQUNBLE9BQU8sVUFDTEMsSUFESyxFQUVMO0lBQ0EsT0FBTyxNQUFPQyxLQUFQLElBQThCO01BQ25DLE1BQU0sQ0FBQ0MsbUJBQUQsRUFBc0JDLFVBQXRCLElBQW9DLElBQUFDLHlCQUFBLEVBQ3hDUCxPQUFPLENBQUNDLFdBQVIsRUFEd0MsQ0FBMUM7TUFJQSxNQUFNTyxTQUFTLEdBQUcsTUFBTUwsSUFBSSxDQUFDQyxLQUFELENBQTVCO01BRUEsT0FBTyxFQUNMLEdBQUdJLFNBREU7UUFFTEYsVUFGSztRQUdMRyxHQUFHLGVBQUUsbUJBQUMsbUJBQUQsY0FBc0JELFNBQVMsQ0FBQ0MsR0FBaEM7TUFIQSxDQUFQO0lBS0QsQ0FaRDtFQWFELENBaEJEO0FBaUJEIn0=
@@ -38,4 +38,4 @@ function routerSpout(options) {
38
38
  };
39
39
  };
40
40
  }
41
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvcm91dGVyLnRzeCJdLCJuYW1lcyI6WyJyb3V0ZXJTcG91dCIsIm9wdGlvbnMiLCJjcmVhdGVSb3V0ZUNvbXBvbmVudCIsInJvdXRlciIsIlJvdXRlciIsImNoaWxkcmVuIiwicmVzb2x2ZVdpdGgiLCJ1c2VSZXNvbHZlV2l0aCIsIm5leHQiLCJoaXN0b3J5IiwiY3JlYXRlUm91dGVyIiwibWF0Y2hlZFJvdXRlcyIsImdldE1hdGNoZWRSb3V0ZXMiLCJsb2NhdGlvbiIsInBhdGhuYW1lIiwibmV4dFByb3BzIiwiYXBwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFNZSxTQUFTQSxXQUFULENBQWtDQyxPQUFsQyxFQUlaO0FBQ0QsUUFBTUMsb0JBQW9CLEdBQ3hCQyxNQUQyQixJQUczQixTQUFTQyxNQUFULENBQWdCO0FBQUVDLElBQUFBO0FBQUYsR0FBaEIsRUFBNkQ7QUFDM0QsVUFBTUMsV0FBVyxHQUFHTCxPQUFPLENBQUNNLGNBQVIsRUFBcEI7QUFFQSx3QkFDRSxtQkFBQyxxQkFBRDtBQUFlLE1BQUEsTUFBTSxFQUFFSixNQUF2QjtBQUErQixNQUFBLFdBQVcsRUFBRUc7QUFBNUMsZUFDR0QsUUFESCxDQURGO0FBS0QsR0FYSDs7QUFhQSxTQUFPLFVBQWlDRyxJQUFqQyxFQUF5RDtBQUM5RCxXQUFPLFlBQVk7QUFDakIsWUFBTUMsT0FBTyxHQUFHLG9DQUFoQjtBQUNBLFlBQU1OLE1BQU0sR0FBR0YsT0FBTyxDQUFDUyxZQUFSLENBQXFCRCxPQUFyQixDQUFmO0FBQ0EsWUFBTUUsYUFBYSxHQUFHUixNQUFNLENBQUNTLGdCQUFQLENBQXdCSCxPQUFPLENBQUNJLFFBQVIsQ0FBaUJDLFFBQXpDLENBQXRCO0FBRUEsWUFBTUMsU0FBUyxHQUFHLE1BQU1QLElBQUksRUFBNUI7QUFFQSxZQUFNSixNQUFNLEdBQUdGLG9CQUFvQixDQUFDQyxNQUFELENBQW5DO0FBQ0EsYUFBTyxFQUNMLEdBQUdZLFNBREU7QUFFTEosUUFBQUEsYUFGSztBQUdMSyxRQUFBQSxHQUFHLGVBQUUsbUJBQUMsTUFBRCxjQUFTRCxTQUFTLENBQUNDLEdBQW5CO0FBSEEsT0FBUDtBQUtELEtBYkQ7QUFjRCxHQWZEO0FBZ0JEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGUsIFJvdXRlUHJvdmlkZXIsIFJvdXRlQ29udHJvbGxlciB9IGZyb20gJ0BhbmFuc2kvcm91dGVyJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjcmVhdGVCcm93c2VySGlzdG9yeSB9IGZyb20gJ2hpc3RvcnknO1xuXG5pbXBvcnQgdHlwZSB7IFJlc29sdmVQcm9wcywgQ3JlYXRlUm91dGVyIH0gZnJvbSAnLi90eXBlcyc7XG5cbnR5cGUgTmVlZGVkUHJvcHMgPSBSZXNvbHZlUHJvcHM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJvdXRlclNwb3V0PFJlc29sdmVXaXRoPihvcHRpb25zOiB7XG4gIHJlc29sdmVXaXRoPzogYW55O1xuICB1c2VSZXNvbHZlV2l0aDogKCkgPT4gUmVzb2x2ZVdpdGg7XG4gIGNyZWF0ZVJvdXRlcjogQ3JlYXRlUm91dGVyPFJlc29sdmVXaXRoPjtcbn0pIHtcbiAgY29uc3QgY3JlYXRlUm91dGVDb21wb25lbnQgPSAoXG4gICAgcm91dGVyOiBSb3V0ZUNvbnRyb2xsZXI8Um91dGU8UmVzb2x2ZVdpdGgsIGFueT4+LFxuICApID0+XG4gICAgZnVuY3Rpb24gUm91dGVyKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0pIHtcbiAgICAgIGNvbnN0IHJlc29sdmVXaXRoID0gb3B0aW9ucy51c2VSZXNvbHZlV2l0aCgpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Um91dGVQcm92aWRlciByb3V0ZXI9e3JvdXRlcn0gcmVzb2x2ZVdpdGg9e3Jlc29sdmVXaXRofT5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvUm91dGVQcm92aWRlcj5cbiAgICAgICk7XG4gICAgfTtcblxuICByZXR1cm4gZnVuY3Rpb24gPFQgZXh0ZW5kcyBOZWVkZWRQcm9wcz4obmV4dDogKCkgPT4gUHJvbWlzZTxUPikge1xuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBoaXN0b3J5ID0gY3JlYXRlQnJvd3Nlckhpc3RvcnkoKTtcbiAgICAgIGNvbnN0IHJvdXRlciA9IG9wdGlvbnMuY3JlYXRlUm91dGVyKGhpc3RvcnkpO1xuICAgICAgY29uc3QgbWF0Y2hlZFJvdXRlcyA9IHJvdXRlci5nZXRNYXRjaGVkUm91dGVzKGhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWUpO1xuXG4gICAgICBjb25zdCBuZXh0UHJvcHMgPSBhd2FpdCBuZXh0KCk7XG5cbiAgICAgIGNvbnN0IFJvdXRlciA9IGNyZWF0ZVJvdXRlQ29tcG9uZW50KHJvdXRlcik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXh0UHJvcHMsXG4gICAgICAgIG1hdGNoZWRSb3V0ZXMsXG4gICAgICAgIGFwcDogPFJvdXRlcj57bmV4dFByb3BzLmFwcH08L1JvdXRlcj4sXG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG4iXX0=
41
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyb3V0ZXJTcG91dCIsIm9wdGlvbnMiLCJjcmVhdGVSb3V0ZUNvbXBvbmVudCIsInJvdXRlciIsIlJvdXRlciIsImNoaWxkcmVuIiwicmVzb2x2ZVdpdGgiLCJ1c2VSZXNvbHZlV2l0aCIsIm5leHQiLCJoaXN0b3J5IiwiY3JlYXRlQnJvd3Nlckhpc3RvcnkiLCJjcmVhdGVSb3V0ZXIiLCJtYXRjaGVkUm91dGVzIiwiZ2V0TWF0Y2hlZFJvdXRlcyIsImxvY2F0aW9uIiwicGF0aG5hbWUiLCJuZXh0UHJvcHMiLCJhcHAiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3BvdXRzL3JvdXRlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGUsIFJvdXRlUHJvdmlkZXIsIFJvdXRlQ29udHJvbGxlciB9IGZyb20gJ0BhbmFuc2kvcm91dGVyJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjcmVhdGVCcm93c2VySGlzdG9yeSB9IGZyb20gJ2hpc3RvcnknO1xuXG5pbXBvcnQgdHlwZSB7IFJlc29sdmVQcm9wcywgQ3JlYXRlUm91dGVyIH0gZnJvbSAnLi90eXBlcyc7XG5cbnR5cGUgTmVlZGVkUHJvcHMgPSBSZXNvbHZlUHJvcHM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJvdXRlclNwb3V0PFJlc29sdmVXaXRoPihvcHRpb25zOiB7XG4gIHJlc29sdmVXaXRoPzogYW55O1xuICB1c2VSZXNvbHZlV2l0aDogKCkgPT4gUmVzb2x2ZVdpdGg7XG4gIGNyZWF0ZVJvdXRlcjogQ3JlYXRlUm91dGVyPFJlc29sdmVXaXRoPjtcbn0pIHtcbiAgY29uc3QgY3JlYXRlUm91dGVDb21wb25lbnQgPSAoXG4gICAgcm91dGVyOiBSb3V0ZUNvbnRyb2xsZXI8Um91dGU8UmVzb2x2ZVdpdGgsIGFueT4+LFxuICApID0+XG4gICAgZnVuY3Rpb24gUm91dGVyKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0pIHtcbiAgICAgIGNvbnN0IHJlc29sdmVXaXRoID0gb3B0aW9ucy51c2VSZXNvbHZlV2l0aCgpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Um91dGVQcm92aWRlciByb3V0ZXI9e3JvdXRlcn0gcmVzb2x2ZVdpdGg9e3Jlc29sdmVXaXRofT5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvUm91dGVQcm92aWRlcj5cbiAgICAgICk7XG4gICAgfTtcblxuICByZXR1cm4gZnVuY3Rpb24gPFQgZXh0ZW5kcyBOZWVkZWRQcm9wcz4obmV4dDogKCkgPT4gUHJvbWlzZTxUPikge1xuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBoaXN0b3J5ID0gY3JlYXRlQnJvd3Nlckhpc3RvcnkoKTtcbiAgICAgIGNvbnN0IHJvdXRlciA9IG9wdGlvbnMuY3JlYXRlUm91dGVyKGhpc3RvcnkpO1xuICAgICAgY29uc3QgbWF0Y2hlZFJvdXRlcyA9IHJvdXRlci5nZXRNYXRjaGVkUm91dGVzKGhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWUpO1xuXG4gICAgICBjb25zdCBuZXh0UHJvcHMgPSBhd2FpdCBuZXh0KCk7XG5cbiAgICAgIGNvbnN0IFJvdXRlciA9IGNyZWF0ZVJvdXRlQ29tcG9uZW50KHJvdXRlcik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXh0UHJvcHMsXG4gICAgICAgIG1hdGNoZWRSb3V0ZXMsXG4gICAgICAgIGFwcDogPFJvdXRlcj57bmV4dFByb3BzLmFwcH08L1JvdXRlcj4sXG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQU1lLFNBQVNBLFdBQVQsQ0FBa0NDLE9BQWxDLEVBSVo7RUFDRCxNQUFNQyxvQkFBb0IsR0FDeEJDLE1BRDJCLElBRzNCLFNBQVNDLE1BQVQsQ0FBZ0I7SUFBRUM7RUFBRixDQUFoQixFQUE2RDtJQUMzRCxNQUFNQyxXQUFXLEdBQUdMLE9BQU8sQ0FBQ00sY0FBUixFQUFwQjtJQUVBLG9CQUNFLG1CQUFDLHFCQUFEO01BQWUsTUFBTSxFQUFFSixNQUF2QjtNQUErQixXQUFXLEVBQUVHO0lBQTVDLFdBQ0dELFFBREgsQ0FERjtFQUtELENBWEg7O0VBYUEsT0FBTyxVQUFpQ0csSUFBakMsRUFBeUQ7SUFDOUQsT0FBTyxZQUFZO01BQ2pCLE1BQU1DLE9BQU8sR0FBRyxJQUFBQyw2QkFBQSxHQUFoQjtNQUNBLE1BQU1QLE1BQU0sR0FBR0YsT0FBTyxDQUFDVSxZQUFSLENBQXFCRixPQUFyQixDQUFmO01BQ0EsTUFBTUcsYUFBYSxHQUFHVCxNQUFNLENBQUNVLGdCQUFQLENBQXdCSixPQUFPLENBQUNLLFFBQVIsQ0FBaUJDLFFBQXpDLENBQXRCO01BRUEsTUFBTUMsU0FBUyxHQUFHLE1BQU1SLElBQUksRUFBNUI7TUFFQSxNQUFNSixNQUFNLEdBQUdGLG9CQUFvQixDQUFDQyxNQUFELENBQW5DO01BQ0EsT0FBTyxFQUNMLEdBQUdhLFNBREU7UUFFTEosYUFGSztRQUdMSyxHQUFHLGVBQUUsbUJBQUMsTUFBRCxjQUFTRCxTQUFTLENBQUNDLEdBQW5CO01BSEEsQ0FBUDtJQUtELENBYkQ7RUFjRCxDQWZEO0FBZ0JEIn0=
@@ -40,4 +40,4 @@ function routerSpout(options) {
40
40
  };
41
41
  };
42
42
  }
43
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvcm91dGVyLnNlcnZlci50c3giXSwibmFtZXMiOlsicm91dGVyU3BvdXQiLCJvcHRpb25zIiwiY3JlYXRlUm91dGVDb21wb25lbnQiLCJyb3V0ZXIiLCJSb3V0ZXIiLCJjaGlsZHJlbiIsInJlc29sdmVXaXRoIiwidXNlUmVzb2x2ZVdpdGgiLCJuZXh0IiwicHJvcHMiLCJ1cmwiLCJyZXEiLCJjcmVhdGVSb3V0ZXIiLCJpbml0aWFsRW50cmllcyIsIm1hdGNoZWRSb3V0ZXMiLCJnZXRNYXRjaGVkUm91dGVzIiwibmV4dFByb3BzIiwiYXBwIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFNZSxTQUFTQSxXQUFULENBQWtDQyxPQUFsQyxFQUlaO0FBQ0QsUUFBTUMsb0JBQW9CLEdBQ3hCQyxNQUQyQixJQUczQixTQUFTQyxNQUFULENBQWdCO0FBQUVDLElBQUFBO0FBQUYsR0FBaEIsRUFBNkQ7QUFDM0QsVUFBTUMsV0FBVyxHQUFHTCxPQUFPLENBQUNNLGNBQVIsRUFBcEI7QUFFQSx3QkFDRSxtQkFBQyxxQkFBRDtBQUFlLE1BQUEsTUFBTSxFQUFFSixNQUF2QjtBQUErQixNQUFBLFdBQVcsRUFBRUc7QUFBNUMsZUFDR0QsUUFESCxDQURGO0FBS0QsR0FYSDs7QUFhQSxTQUFPLFVBQ0xHLElBREssRUFFTDtBQUNBLFdBQU8sTUFBT0MsS0FBUCxJQUE4QjtBQUNuQyxZQUFNQyxHQUFHLEdBQUdELEtBQUssQ0FBQ0UsR0FBTixDQUFVRCxHQUFWLElBQWlCLEVBQTdCO0FBQ0EsWUFBTVAsTUFBTSxHQUFHRixPQUFPLENBQUNXLFlBQVIsQ0FDYixrQ0FBb0I7QUFBRUMsUUFBQUEsY0FBYyxFQUFFLENBQUNILEdBQUQ7QUFBbEIsT0FBcEIsQ0FEYSxDQUFmO0FBR0EsWUFBTUksYUFBbUMsR0FBR1gsTUFBTSxDQUFDWSxnQkFBUCxDQUF3QkwsR0FBeEIsQ0FBNUM7QUFFQSxZQUFNTSxTQUFTLEdBQUcsTUFBTVIsSUFBSSxDQUFDQyxLQUFELENBQTVCO0FBRUEsWUFBTUwsTUFBTSxHQUFHRixvQkFBb0IsQ0FBQ0MsTUFBRCxDQUFuQztBQUNBLGFBQU8sRUFDTCxHQUFHYSxTQURFO0FBRUxGLFFBQUFBLGFBRks7QUFHTEcsUUFBQUEsR0FBRyxlQUFFLG1CQUFDLE1BQUQsY0FBU0QsU0FBUyxDQUFDQyxHQUFuQjtBQUhBLE9BQVA7QUFLRCxLQWZEO0FBZ0JELEdBbkJEO0FBb0JEIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUm91dGUsIFJvdXRlUHJvdmlkZXIsIFJvdXRlQ29udHJvbGxlciB9IGZyb20gJ0BhbmFuc2kvcm91dGVyJztcbmltcG9ydCBSZWFjdCBmcm9tICdyZWFjdCc7XG5pbXBvcnQgeyBjcmVhdGVNZW1vcnlIaXN0b3J5IH0gZnJvbSAnaGlzdG9yeSc7XG5cbmltcG9ydCB0eXBlIHsgUmVzb2x2ZVByb3BzLCBTZXJ2ZXJQcm9wcywgQ3JlYXRlUm91dGVyIH0gZnJvbSAnLi90eXBlcyc7XG5cbnR5cGUgTmVlZGVkUHJvcHMgPSBSZXNvbHZlUHJvcHM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJvdXRlclNwb3V0PFJlc29sdmVXaXRoPihvcHRpb25zOiB7XG4gIHJlc29sdmVXaXRoPzogYW55O1xuICB1c2VSZXNvbHZlV2l0aDogKCkgPT4gUmVzb2x2ZVdpdGg7XG4gIGNyZWF0ZVJvdXRlcjogQ3JlYXRlUm91dGVyPFJlc29sdmVXaXRoPjtcbn0pIHtcbiAgY29uc3QgY3JlYXRlUm91dGVDb21wb25lbnQgPSAoXG4gICAgcm91dGVyOiBSb3V0ZUNvbnRyb2xsZXI8Um91dGU8UmVzb2x2ZVdpdGgsIGFueT4+LFxuICApID0+XG4gICAgZnVuY3Rpb24gUm91dGVyKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3QuUmVhY3ROb2RlIH0pIHtcbiAgICAgIGNvbnN0IHJlc29sdmVXaXRoID0gb3B0aW9ucy51c2VSZXNvbHZlV2l0aCgpO1xuXG4gICAgICByZXR1cm4gKFxuICAgICAgICA8Um91dGVQcm92aWRlciByb3V0ZXI9e3JvdXRlcn0gcmVzb2x2ZVdpdGg9e3Jlc29sdmVXaXRofT5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvUm91dGVQcm92aWRlcj5cbiAgICAgICk7XG4gICAgfTtcblxuICByZXR1cm4gZnVuY3Rpb24gPFQgZXh0ZW5kcyBOZWVkZWRQcm9wcz4oXG4gICAgbmV4dDogKHByb3BzOiBTZXJ2ZXJQcm9wcykgPT4gUHJvbWlzZTxUPixcbiAgKSB7XG4gICAgcmV0dXJuIGFzeW5jIChwcm9wczogU2VydmVyUHJvcHMpID0+IHtcbiAgICAgIGNvbnN0IHVybCA9IHByb3BzLnJlcS51cmwgfHwgJyc7XG4gICAgICBjb25zdCByb3V0ZXIgPSBvcHRpb25zLmNyZWF0ZVJvdXRlcihcbiAgICAgICAgY3JlYXRlTWVtb3J5SGlzdG9yeSh7IGluaXRpYWxFbnRyaWVzOiBbdXJsXSB9KSxcbiAgICAgICk7XG4gICAgICBjb25zdCBtYXRjaGVkUm91dGVzOiBSb3V0ZTxSZXNvbHZlV2l0aD5bXSA9IHJvdXRlci5nZXRNYXRjaGVkUm91dGVzKHVybCk7XG5cbiAgICAgIGNvbnN0IG5leHRQcm9wcyA9IGF3YWl0IG5leHQocHJvcHMpO1xuXG4gICAgICBjb25zdCBSb3V0ZXIgPSBjcmVhdGVSb3V0ZUNvbXBvbmVudChyb3V0ZXIpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubmV4dFByb3BzLFxuICAgICAgICBtYXRjaGVkUm91dGVzLFxuICAgICAgICBhcHA6IDxSb3V0ZXI+e25leHRQcm9wcy5hcHB9PC9Sb3V0ZXI+LFxuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuIl19
43
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyb3V0ZXJTcG91dCIsIm9wdGlvbnMiLCJjcmVhdGVSb3V0ZUNvbXBvbmVudCIsInJvdXRlciIsIlJvdXRlciIsImNoaWxkcmVuIiwicmVzb2x2ZVdpdGgiLCJ1c2VSZXNvbHZlV2l0aCIsIm5leHQiLCJwcm9wcyIsInVybCIsInJlcSIsImNyZWF0ZVJvdXRlciIsImNyZWF0ZU1lbW9yeUhpc3RvcnkiLCJpbml0aWFsRW50cmllcyIsIm1hdGNoZWRSb3V0ZXMiLCJnZXRNYXRjaGVkUm91dGVzIiwibmV4dFByb3BzIiwiYXBwIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nwb3V0cy9yb3V0ZXIuc2VydmVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZSwgUm91dGVQcm92aWRlciwgUm91dGVDb250cm9sbGVyIH0gZnJvbSAnQGFuYW5zaS9yb3V0ZXInO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZU1lbW9yeUhpc3RvcnkgfSBmcm9tICdoaXN0b3J5JztcblxuaW1wb3J0IHR5cGUgeyBSZXNvbHZlUHJvcHMsIFNlcnZlclByb3BzLCBDcmVhdGVSb3V0ZXIgfSBmcm9tICcuL3R5cGVzJztcblxudHlwZSBOZWVkZWRQcm9wcyA9IFJlc29sdmVQcm9wcztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcm91dGVyU3BvdXQ8UmVzb2x2ZVdpdGg+KG9wdGlvbnM6IHtcbiAgcmVzb2x2ZVdpdGg/OiBhbnk7XG4gIHVzZVJlc29sdmVXaXRoOiAoKSA9PiBSZXNvbHZlV2l0aDtcbiAgY3JlYXRlUm91dGVyOiBDcmVhdGVSb3V0ZXI8UmVzb2x2ZVdpdGg+O1xufSkge1xuICBjb25zdCBjcmVhdGVSb3V0ZUNvbXBvbmVudCA9IChcbiAgICByb3V0ZXI6IFJvdXRlQ29udHJvbGxlcjxSb3V0ZTxSZXNvbHZlV2l0aCwgYW55Pj4sXG4gICkgPT5cbiAgICBmdW5jdGlvbiBSb3V0ZXIoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfSkge1xuICAgICAgY29uc3QgcmVzb2x2ZVdpdGggPSBvcHRpb25zLnVzZVJlc29sdmVXaXRoKCk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxSb3V0ZVByb3ZpZGVyIHJvdXRlcj17cm91dGVyfSByZXNvbHZlV2l0aD17cmVzb2x2ZVdpdGh9PlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9Sb3V0ZVByb3ZpZGVyPlxuICAgICAgKTtcbiAgICB9O1xuXG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIE5lZWRlZFByb3BzPihcbiAgICBuZXh0OiAocHJvcHM6IFNlcnZlclByb3BzKSA9PiBQcm9taXNlPFQ+LFxuICApIHtcbiAgICByZXR1cm4gYXN5bmMgKHByb3BzOiBTZXJ2ZXJQcm9wcykgPT4ge1xuICAgICAgY29uc3QgdXJsID0gcHJvcHMucmVxLnVybCB8fCAnJztcbiAgICAgIGNvbnN0IHJvdXRlciA9IG9wdGlvbnMuY3JlYXRlUm91dGVyKFxuICAgICAgICBjcmVhdGVNZW1vcnlIaXN0b3J5KHsgaW5pdGlhbEVudHJpZXM6IFt1cmxdIH0pLFxuICAgICAgKTtcbiAgICAgIGNvbnN0IG1hdGNoZWRSb3V0ZXM6IFJvdXRlPFJlc29sdmVXaXRoPltdID0gcm91dGVyLmdldE1hdGNoZWRSb3V0ZXModXJsKTtcblxuICAgICAgY29uc3QgbmV4dFByb3BzID0gYXdhaXQgbmV4dChwcm9wcyk7XG5cbiAgICAgIGNvbnN0IFJvdXRlciA9IGNyZWF0ZVJvdXRlQ29tcG9uZW50KHJvdXRlcik7XG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXh0UHJvcHMsXG4gICAgICAgIG1hdGNoZWRSb3V0ZXMsXG4gICAgICAgIGFwcDogPFJvdXRlcj57bmV4dFByb3BzLmFwcH08L1JvdXRlcj4sXG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQU1lLFNBQVNBLFdBQVQsQ0FBa0NDLE9BQWxDLEVBSVo7RUFDRCxNQUFNQyxvQkFBb0IsR0FDeEJDLE1BRDJCLElBRzNCLFNBQVNDLE1BQVQsQ0FBZ0I7SUFBRUM7RUFBRixDQUFoQixFQUE2RDtJQUMzRCxNQUFNQyxXQUFXLEdBQUdMLE9BQU8sQ0FBQ00sY0FBUixFQUFwQjtJQUVBLG9CQUNFLG1CQUFDLHFCQUFEO01BQWUsTUFBTSxFQUFFSixNQUF2QjtNQUErQixXQUFXLEVBQUVHO0lBQTVDLFdBQ0dELFFBREgsQ0FERjtFQUtELENBWEg7O0VBYUEsT0FBTyxVQUNMRyxJQURLLEVBRUw7SUFDQSxPQUFPLE1BQU9DLEtBQVAsSUFBOEI7TUFDbkMsTUFBTUMsR0FBRyxHQUFHRCxLQUFLLENBQUNFLEdBQU4sQ0FBVUQsR0FBVixJQUFpQixFQUE3QjtNQUNBLE1BQU1QLE1BQU0sR0FBR0YsT0FBTyxDQUFDVyxZQUFSLENBQ2IsSUFBQUMsNEJBQUEsRUFBb0I7UUFBRUMsY0FBYyxFQUFFLENBQUNKLEdBQUQ7TUFBbEIsQ0FBcEIsQ0FEYSxDQUFmO01BR0EsTUFBTUssYUFBbUMsR0FBR1osTUFBTSxDQUFDYSxnQkFBUCxDQUF3Qk4sR0FBeEIsQ0FBNUM7TUFFQSxNQUFNTyxTQUFTLEdBQUcsTUFBTVQsSUFBSSxDQUFDQyxLQUFELENBQTVCO01BRUEsTUFBTUwsTUFBTSxHQUFHRixvQkFBb0IsQ0FBQ0MsTUFBRCxDQUFuQztNQUNBLE9BQU8sRUFDTCxHQUFHYyxTQURFO1FBRUxGLGFBRks7UUFHTEcsR0FBRyxlQUFFLG1CQUFDLE1BQUQsY0FBU0QsU0FBUyxDQUFDQyxHQUFuQjtNQUhBLENBQVA7SUFLRCxDQWZEO0VBZ0JELENBbkJEO0FBb0JEIn0=
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbXX0=
4
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nwb3V0cy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmNvbWluZ01lc3NhZ2UsIFNlcnZlclJlc3BvbnNlIH0gZnJvbSAnaHR0cCc7XG5pbXBvcnQgeyBSZXF1ZXN0LCBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHR5cGUgeyBTdGF0c0NvbXBpbGF0aW9uIH0gZnJvbSAnd2VicGFjayc7XG5pbXBvcnQgeyBIaXN0b3J5IH0gZnJvbSAnaGlzdG9yeSc7XG5pbXBvcnQgeyBSb3V0ZSwgUm91dGVDb250cm9sbGVyIH0gZnJvbSAnQGFuYW5zaS9yb3V0ZXInO1xuXG4vKiBWYXJpYWJsZXMgZnJvbSB0aGUgcmVuZGVyaW5nIGNhbGwgKi9cbmV4cG9ydCB0eXBlIFNlcnZlclByb3BzID0ge1xuICByZXE6IFJlcXVlc3QgfCBJbmNvbWluZ01lc3NhZ2U7XG4gIHJlczogUmVzcG9uc2UgfCBTZXJ2ZXJSZXNwb25zZTtcbiAgY2xpZW50TWFuaWZlc3Q6IFN0YXRzQ29tcGlsYXRpb247XG59O1xuXG4vKiBCYXNlbGluZSBleHBlY3RhdGlvbnMgb2YgcmV0dXJuIHZhbHVlICovXG5leHBvcnQgdHlwZSBSZXNvbHZlUHJvcHMgPSB7XG4gIGFwcDogSlNYLkVsZW1lbnQ7XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVSb3V0ZXI8VD4gPSAoXG4gIGhpc3Rvcnk6IEhpc3RvcnksXG4pID0+IFJvdXRlQ29udHJvbGxlcjxSb3V0ZTxULCBhbnk+PjtcbiJdLCJtYXBwaW5ncyI6IiJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anansi/core",
3
- "version": "0.2.2",
3
+ "version": "0.4.0",
4
4
  "description": "React 18 Framework",
5
5
  "homepage": "https://github.com/ntucker/anansi/tree/master/packages/core#readme",
6
6
  "repository": {
@@ -56,40 +56,43 @@
56
56
  "browser"
57
57
  ],
58
58
  "devDependencies": {
59
- "@anansi/babel-preset": "^3.0.4",
59
+ "@anansi/babel-preset": "^3.1.2",
60
60
  "@anansi/browserslist-config": "1.3.3",
61
- "@babel/cli": "7.17.6",
62
- "@babel/core": "7.17.9",
61
+ "@babel/cli": "7.17.10",
62
+ "@babel/core": "7.17.12",
63
63
  "@types/compression": "^1.7.2",
64
64
  "@types/source-map-support": "^0.5.4",
65
65
  "@types/tmp": "^0.2.3",
66
66
  "@types/webpack-hot-middleware": "^2.25.6",
67
- "jest": "^27.5.1",
67
+ "jest": "28.1.0",
68
68
  "rimraf": "^3.0.0"
69
69
  },
70
70
  "dependencies": {
71
- "@anansi/router": "^0.3.5",
71
+ "@anansi/router": "^0.4.2",
72
72
  "@babel/runtime": "^7.10.5",
73
73
  "@rest-hooks/ssr": "^0.1.3",
74
+ "chalk": "^4.0.0",
74
75
  "compression": "^1.7.4",
75
76
  "cross-fetch": "^3.1.5",
76
77
  "express": "^4.17.3",
77
78
  "fs-monkey": "^1.0.3",
79
+ "import-fresh": "^3.3.0",
78
80
  "memfs": "^3.4.1",
79
81
  "ora": "^5.0.0",
80
82
  "redux": "^4.1.2",
81
- "rest-hooks": "6.3.2",
83
+ "rest-hooks": "6.3.3",
82
84
  "source-map-support": "^0.5.21",
83
85
  "tmp": "^0.2.1",
84
86
  "unionfs": "^4.4.0",
85
- "webpack-hot-middleware": "^2.25.1",
87
+ "webpack-dev-server": "^4.9.0",
86
88
  "whatwg-fetch": "^3.6.2"
87
89
  },
88
90
  "peerDependencies": {
89
91
  "@types/react": "^17.0.40 || ^18.0.0-0",
90
92
  "@types/react-dom": "^17.0.40 || ^18.0.0-0",
91
93
  "react": "^18.0.0-0",
92
- "react-dom": "^18.0.0-0"
94
+ "react-dom": "^18.0.0-0",
95
+ "webpack": "^5.60.0"
93
96
  },
94
97
  "peerDependenciesMeta": {
95
98
  "@types/react": {
@@ -107,6 +110,7 @@
107
110
  ],
108
111
  "scripts": {
109
112
  "pretest": "eslint --ext .ts,.tsx .",
113
+ "dev": "yarn run build:lib -w",
110
114
  "test": "jest",
111
115
  "test:type": "tsc",
112
116
  "build": "yarn run build:lib",
package/src/laySpouts.tsx CHANGED
@@ -7,7 +7,7 @@ export default function laySpouts(
7
7
  spouts: (props: ServerProps) => Promise<{
8
8
  app: JSX.Element;
9
9
  }>,
10
- { timeoutMS = 1000 }: { timeoutMS?: number } = {},
10
+ { timeoutMS = 100 }: { timeoutMS?: number } = {},
11
11
  ) {
12
12
  const render: Render = async (clientManifest, req, res) => {
13
13
  const { app } = await spouts({ clientManifest, req, res });
@@ -4,7 +4,6 @@ import { promisify } from 'util';
4
4
  import diskFs from 'fs';
5
5
  import path from 'path';
6
6
  import webpack, { MultiCompiler } from 'webpack';
7
- import webpackHotMiddleware from 'webpack-hot-middleware';
8
7
  import { createFsFromVolume, Volume } from 'memfs';
9
8
  import { Server, IncomingMessage, ServerResponse } from 'http';
10
9
  import express, { NextFunction } from 'express';
@@ -14,6 +13,9 @@ import tmp from 'tmp';
14
13
  import sourceMapSupport from 'source-map-support';
15
14
  import { ufs } from 'unionfs';
16
15
  import compress from 'compression';
16
+ import WebpackDevServer from 'webpack-dev-server';
17
+ import importFresh from 'import-fresh';
18
+ import chalk from 'chalk';
17
19
 
18
20
  import 'cross-fetch/polyfill';
19
21
  import { Render } from './types';
@@ -34,7 +36,11 @@ if (!entrypoint) {
34
36
  process.exit(-1);
35
37
  }
36
38
 
37
- const loader = ora('Building the assets').start();
39
+ console.log(
40
+ chalk.greenBright(`Starting SSR at`),
41
+ chalk.cyanBright(process.env.WEBPACK_PUBLIC_HOST),
42
+ );
43
+ const loader = ora().start();
38
44
 
39
45
  // Set up in memory filesystem
40
46
  const volume = new Volume();
@@ -75,20 +81,19 @@ const webpackConfigs = [
75
81
  ),
76
82
  webpackConfig(
77
83
  {
78
- entrypoint: hotEntry(entrypoint.replace('.tsx', '.server.tsx')).name,
84
+ entrypoint: entrypoint.replace('.tsx', '.server.tsx'),
79
85
  name: 'server',
80
86
  },
81
87
  { mode: 'development', target: 'node' },
82
88
  ),
83
89
  ] as const;
90
+ // only have one output for server so we can avoid cached modules
91
+ webpackConfigs[1].plugins.push(
92
+ new webpack.optimize.LimitChunkCountPlugin({ maxChunks: 1 }),
93
+ );
84
94
  // initialize the webpack compiler
85
95
  const compiler: MultiCompiler = webpack(webpackConfigs);
86
96
 
87
- compiler.outputFileSystem = {
88
- ...fs,
89
- join: path.join as any,
90
- } as any as typeof fs;
91
-
92
97
  sourceMapSupport.install({ hookRequire: true });
93
98
 
94
99
  function getServerBundle(serverStats: webpack.Stats) {
@@ -113,19 +118,20 @@ function handleErrors<
113
118
  }
114
119
  };
115
120
  }
116
-
121
+ let render: Render;
117
122
  // Start the express server after the first compilation
118
123
  function initializeApp(stats: webpack.Stats[]) {
119
- loader.info('Launching server');
120
124
  const [clientStats, serverStats] = stats;
121
125
  if (
122
126
  clientStats?.compilation?.errors?.length ||
123
127
  serverStats?.compilation?.errors?.length
124
128
  ) {
125
- console.log('Errors for client build: ', clientStats.compilation.errors);
126
- console.log('Errors for server build:', serverStats.compilation.errors);
129
+ loader.fail('Errors for client build: ' + clientStats.compilation.errors);
130
+ loader.fail('Errors for server build: ' + serverStats.compilation.errors);
127
131
  // TODO: handle more gracefully
128
132
  process.exit(-1);
133
+ } else {
134
+ loader.info('Launching server');
129
135
  }
130
136
 
131
137
  const wrappingApp = express();
@@ -134,19 +140,12 @@ function initializeApp(stats: webpack.Stats[]) {
134
140
  wrappingApp.use(compress());
135
141
 
136
142
  // ASSETS
137
- wrappingApp.use(
138
- webpackHotMiddleware(compiler.compilers[0], {
139
- log: console.log,
140
- path: '/__webpack_hmr',
141
- heartbeat: 10 * 1000,
142
- //noInfo: true,
143
- //name: 'client',
144
- }),
145
- );
146
143
  const clientManifest = clientStats.toJson();
147
144
  const assetRoute = async (req: Request | IncomingMessage, res: any) => {
148
145
  const filename =
149
- req.url?.substr((process.env.WEBPACK_PUBLIC_PATH as string).length) ?? '';
146
+ req.url
147
+ ?.substring((process.env.WEBPACK_PUBLIC_PATH as string).length)
148
+ .split('?')[0] ?? '';
150
149
  const assetPath = path.join(clientManifest.outputPath ?? '', filename);
151
150
 
152
151
  try {
@@ -163,7 +162,7 @@ function initializeApp(stats: webpack.Stats[]) {
163
162
 
164
163
  // SERVER SIDE RENDERING
165
164
  // eslint-disable-next-line @typescript-eslint/no-var-requires
166
- const render: Render = require(getServerBundle(serverStats)).default;
165
+ render = require(getServerBundle(serverStats)).default;
167
166
  wrappingApp.get(
168
167
  '/*',
169
168
  handleErrors(async function (req: any, res: any) {
@@ -183,7 +182,7 @@ function initializeApp(stats: webpack.Stats[]) {
183
182
 
184
183
  server = wrappingApp
185
184
  .listen(PORT, () => {
186
- console.log(`Listening at ${PORT}...`);
185
+ loader.succeed(`SSR Running`);
187
186
  })
188
187
  .on('error', function (error: any) {
189
188
  if (error.syscall !== 'listen') {
@@ -206,37 +205,67 @@ function initializeApp(stats: webpack.Stats[]) {
206
205
  });
207
206
  }
208
207
 
209
- // Watch the files for changes
210
- const watcher = compiler.watch({}, (err, multiStats) => {
211
- if (!multiStats) {
212
- console.error('stats not send');
213
- process.exit(-1);
214
- }
215
- if (err) {
216
- console.error('Error in compilation');
217
- console.error(err);
218
- process.exit(-1);
219
- }
220
- if (server) {
221
- loader.succeed('Webpack bundle updated');
222
- return;
223
- }
224
- try {
225
- initializeApp(multiStats.stats);
226
- } catch (e) {
227
- console.error('Failed to initialize app');
228
- console.error(e);
229
- }
230
- });
208
+ const devServer = new WebpackDevServer(
209
+ // write to memory filesystem so we can import
210
+ {
211
+ ...webpackConfigs[0].devServer,
212
+ /*client: {
213
+ ...webpackConfigs[0].devServer?.client,
214
+ webSocketURL: {
215
+ ...webpackConfigs[0].devServer?.client.webSocketURL,
216
+ port: 8080,
217
+ },
218
+ },*/
219
+ devMiddleware: {
220
+ ...webpackConfigs[0]?.devServer?.devMiddleware,
221
+ outputFileSystem: {
222
+ ...fs,
223
+ join: path.join as any,
224
+ } as any as typeof fs,
225
+ },
226
+ },
227
+ compiler,
228
+ );
229
+ const runServer = async () => {
230
+ await devServer.start();
231
+ devServer.compiler.hooks.done.tap(
232
+ 'Anansi Server',
233
+ (multiStats: webpack.MultiStats | webpack.Stats) => {
234
+ if (!multiStats) {
235
+ loader.fail('stats not send');
236
+ process.exit(-1);
237
+ }
238
+
239
+ if (!Object.hasOwn(multiStats, 'stats')) return;
240
+ if (server && (multiStats as webpack.MultiStats).stats.length > 1) {
241
+ render = (
242
+ importFresh(
243
+ getServerBundle((multiStats as webpack.MultiStats).stats[1]),
244
+ ) as any
245
+ ).default;
246
+ return;
247
+ }
248
+ if (!server) {
249
+ try {
250
+ initializeApp((multiStats as webpack.MultiStats).stats);
251
+ } catch (e) {
252
+ loader.fail('Failed to initialize app');
253
+ console.error(e);
254
+ }
255
+ }
256
+ },
257
+ );
258
+ };
259
+ const stopServer = async () => {
260
+ loader.info('Stopping server...');
261
+ await devServer.stop();
262
+ loader.info('Server closed');
263
+ };
231
264
 
232
265
  process.on('SIGINT', () => {
233
266
  loader.warn('Received SIGINT, devserver shutting down');
234
- if (server) console.log('Closing server');
235
- server?.close(() => {
236
- loader.info('Server closed');
237
- });
238
- watcher.close(() => {
239
- loader.info('webpack build stopped');
240
- });
267
+ stopServer();
241
268
  process.exit(-1);
242
269
  });
270
+
271
+ runServer();