@anansi/core 0.4.2 → 0.5.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,39 @@
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.5.0](https://github.com/ntucker/anansi/compare/@anansi/core@0.4.4...@anansi/core@0.5.0) (2022-05-18)
7
+
8
+
9
+ ### 🚀 Features
10
+
11
+ * Add commonjs bundles ([#1508](https://github.com/ntucker/anansi/issues/1508)) ([3f1f5a2](https://github.com/ntucker/anansi/commit/3f1f5a2f881d3e314d9fd08d63607e0c8dbd34d1))
12
+
13
+
14
+ ### 💅 Enhancement
15
+
16
+ * Ensure output works without WEBPACK_PUBLIC_HOST set ([1df3f57](https://github.com/ntucker/anansi/commit/1df3f57cf0d3966a371e89f8c2333f3f29e23b65))
17
+ * Only hydrate body content ([1a6412c](https://github.com/ntucker/anansi/commit/1a6412c2e2b55b176fa0491228888490e45de98f))
18
+
19
+
20
+
21
+ ### [0.4.4](https://github.com/ntucker/anansi/compare/@anansi/core@0.4.3...@anansi/core@0.4.4) (2022-05-18)
22
+
23
+
24
+ ### 💅 Enhancement
25
+
26
+ * Supress hydration warnings in head for stackblitz compat ([38ac992](https://github.com/ntucker/anansi/commit/38ac99237af30d97408fb23bfb95b3bbe5384a03))
27
+
28
+
29
+
30
+ ### [0.4.3](https://github.com/ntucker/anansi/compare/@anansi/core@0.4.2...@anansi/core@0.4.3) (2022-05-18)
31
+
32
+
33
+ ### 💅 Enhancement
34
+
35
+ * Use relative asset paths ([799b69e](https://github.com/ntucker/anansi/commit/799b69e52394edc26290b9f01ff60ad772f739da))
36
+
37
+
38
+
6
39
  ### [0.4.2](https://github.com/ntucker/anansi/compare/@anansi/core@0.4.1...@anansi/core@0.4.2) (2022-05-18)
7
40
 
8
41
  **Note:** Version bump only for package @anansi/core
package/dist/client.js ADDED
@@ -0,0 +1,180 @@
1
+ /******/ (() => { // webpackBootstrap
2
+ /******/ "use strict";
3
+ /******/ // The require scope
4
+ /******/ var __webpack_require__ = {};
5
+ /******/
6
+ /************************************************************************/
7
+ /******/ /* webpack/runtime/compat get default export */
8
+ /******/ (() => {
9
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
10
+ /******/ __webpack_require__.n = (module) => {
11
+ /******/ var getter = module && module.__esModule ?
12
+ /******/ () => (module['default']) :
13
+ /******/ () => (module);
14
+ /******/ __webpack_require__.d(getter, { a: getter });
15
+ /******/ return getter;
16
+ /******/ };
17
+ /******/ })();
18
+ /******/
19
+ /******/ /* webpack/runtime/define property getters */
20
+ /******/ (() => {
21
+ /******/ // define getter functions for harmony exports
22
+ /******/ __webpack_require__.d = (exports, definition) => {
23
+ /******/ for(var key in definition) {
24
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
25
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
26
+ /******/ }
27
+ /******/ }
28
+ /******/ };
29
+ /******/ })();
30
+ /******/
31
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
32
+ /******/ (() => {
33
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
34
+ /******/ })();
35
+ /******/
36
+ /******/ /* webpack/runtime/make namespace object */
37
+ /******/ (() => {
38
+ /******/ // define __esModule on exports
39
+ /******/ __webpack_require__.r = (exports) => {
40
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
41
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
42
+ /******/ }
43
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
44
+ /******/ };
45
+ /******/ })();
46
+ /******/
47
+ /************************************************************************/
48
+ var __webpack_exports__ = {};
49
+ // ESM COMPAT FLAG
50
+ __webpack_require__.r(__webpack_exports__);
51
+
52
+ // EXPORTS
53
+ __webpack_require__.d(__webpack_exports__, {
54
+ "documentSpout": () => (/* reexport */ documentSpout),
55
+ "floodSpouts": () => (/* reexport */ floodSpouts),
56
+ "restHooksSpout": () => (/* reexport */ restHooksSpout),
57
+ "routerSpout": () => (/* reexport */ routerSpout)
58
+ });
59
+
60
+ ;// CONCATENATED MODULE: external "react-dom/client"
61
+ const client_namespaceObject = require("react-dom/client");
62
+ ;// CONCATENATED MODULE: ./src/floodSpouts.tsx
63
+
64
+ async function floodSpouts(spouts, {
65
+ rootId = 'anansi-root'
66
+ } = {}) {
67
+ var _document$getElementB;
68
+
69
+ const {
70
+ app
71
+ } = await spouts();
72
+ (0,client_namespaceObject.hydrateRoot)((_document$getElementB = document.getElementById(rootId)) != null ? _document$getElementB : document, app);
73
+ }
74
+ ;// CONCATENATED MODULE: ./src/spouts/document.tsx
75
+ function documentSpout(options) {
76
+ return function (next) {
77
+ return async () => {
78
+ const nextProps = await next();
79
+ return nextProps;
80
+ };
81
+ };
82
+ }
83
+ ;// CONCATENATED MODULE: external "react"
84
+ const external_react_namespaceObject = require("react");
85
+ var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_namespaceObject);
86
+ ;// CONCATENATED MODULE: external "@rest-hooks/core"
87
+ const core_namespaceObject = require("@rest-hooks/core");
88
+ ;// CONCATENATED MODULE: external "@rest-hooks/ssr"
89
+ const ssr_namespaceObject = require("@rest-hooks/ssr");
90
+ ;// CONCATENATED MODULE: ./src/spouts/restHooks.tsx
91
+ var _jsxFileName = "/home/ntucker/src/anansi/packages/core/src/spouts/restHooks.tsx";
92
+
93
+
94
+
95
+ function restHooksSpout(options = {
96
+ getManagers: () => [new core_namespaceObject.NetworkManager()]
97
+ }) {
98
+ return function (next) {
99
+ return async () => {
100
+ const data = (0,ssr_namespaceObject.getDatafromDOM)();
101
+ const nextProps = await next();
102
+ return { ...nextProps,
103
+ app: /*#__PURE__*/external_react_default().createElement(core_namespaceObject.CacheProvider, {
104
+ initialState: data,
105
+ managers: options.getManagers(),
106
+ __self: this,
107
+ __source: {
108
+ fileName: _jsxFileName,
109
+ lineNumber: 22,
110
+ columnNumber: 11
111
+ }
112
+ }, nextProps.app, /*#__PURE__*/external_react_default().createElement(ssr_namespaceObject.ServerDataComponent, {
113
+ data: data,
114
+ __self: this,
115
+ __source: {
116
+ fileName: _jsxFileName,
117
+ lineNumber: 24,
118
+ columnNumber: 13
119
+ }
120
+ }))
121
+ };
122
+ };
123
+ };
124
+ }
125
+ ;// CONCATENATED MODULE: external "@anansi/router"
126
+ const router_namespaceObject = require("@anansi/router");
127
+ ;// CONCATENATED MODULE: external "history"
128
+ const external_history_namespaceObject = require("history");
129
+ ;// CONCATENATED MODULE: ./src/spouts/router.tsx
130
+ var router_jsxFileName = "/home/ntucker/src/anansi/packages/core/src/spouts/router.tsx";
131
+
132
+
133
+
134
+ function routerSpout(options) {
135
+ const createRouteComponent = router => function Router({
136
+ children
137
+ }) {
138
+ const resolveWith = options.useResolveWith();
139
+ return /*#__PURE__*/external_react_default().createElement(router_namespaceObject.RouteProvider, {
140
+ router: router,
141
+ resolveWith: resolveWith,
142
+ __self: this,
143
+ __source: {
144
+ fileName: router_jsxFileName,
145
+ lineNumber: 21,
146
+ columnNumber: 9
147
+ }
148
+ }, children);
149
+ };
150
+
151
+ return function (next) {
152
+ return async () => {
153
+ const history = (0,external_history_namespaceObject.createBrowserHistory)();
154
+ const router = options.createRouter(history);
155
+ const matchedRoutes = router.getMatchedRoutes(history.location.pathname);
156
+ const nextProps = await next();
157
+ const Router = createRouteComponent(router);
158
+ return { ...nextProps,
159
+ matchedRoutes,
160
+ app: /*#__PURE__*/external_react_default().createElement(Router, {
161
+ __self: this,
162
+ __source: {
163
+ fileName: router_jsxFileName,
164
+ lineNumber: 39,
165
+ columnNumber: 14
166
+ }
167
+ }, nextProps.app)
168
+ };
169
+ };
170
+ };
171
+ }
172
+ ;// CONCATENATED MODULE: ./src/index.ts
173
+
174
+
175
+
176
+
177
+ module.exports = __webpack_exports__;
178
+ /******/ })()
179
+ ;
180
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","mappings":";;AAAA;AACA;AACA;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACPA;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;ACNA;;ACAA;AAEA;AAIA;AAAA;AACA;;AACA;AAAA;AAAA;AAEA;AACA;;ACDA;AAIA;AACA;AACA;AAEA;AACA;AACA;AACA;;ACrBA;;;ACAA;;ACAA;;;;ACAA;AACA;AAMA;AAGA;AAAA;AAEA;AACA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AALA;AASA;AACA;AACA;;AC7BA;;ACAA;;;ACAA;AACA;AACA;AAMA;AAKA;AAGA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AAKA;AACA;AACA;;AC1CA;AACA;AACA","sources":["/home/ntucker/src/anansi/packages/core/webpack/bootstrap","/home/ntucker/src/anansi/packages/core/webpack/runtime/compat get default export","/home/ntucker/src/anansi/packages/core/webpack/runtime/define property getters","/home/ntucker/src/anansi/packages/core/webpack/runtime/hasOwnProperty shorthand","/home/ntucker/src/anansi/packages/core/webpack/runtime/make namespace object","/home/ntucker/src/anansi/packages/core/external commonjs \"react-dom/client\"","/home/ntucker/src/anansi/packages/core/src/floodSpouts.tsx","/home/ntucker/src/anansi/packages/core/src/spouts/document.tsx","/home/ntucker/src/anansi/packages/core/external commonjs \"react\"","/home/ntucker/src/anansi/packages/core/external commonjs \"@rest-hooks/core\"","/home/ntucker/src/anansi/packages/core/external commonjs \"@rest-hooks/ssr\"","/home/ntucker/src/anansi/packages/core/src/spouts/restHooks.tsx","/home/ntucker/src/anansi/packages/core/external commonjs \"@anansi/router\"","/home/ntucker/src/anansi/packages/core/external commonjs \"history\"","/home/ntucker/src/anansi/packages/core/src/spouts/router.tsx","/home/ntucker/src/anansi/packages/core/src/index.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dom/client\");","import { hydrateRoot } from 'react-dom/client';\n\nexport default async function floodSpouts(\n spouts: () => Promise<{\n app: JSX.Element;\n }>,\n { rootId = 'anansi-root' }: { rootId?: string } = {},\n) {\n const { app } = await spouts();\n\n hydrateRoot(document.getElementById(rootId) ?? document, app);\n}\n","import React from 'react';\nimport type { Route } from '@anansi/router';\n\nimport type { ResolveProps } from './types';\n\ntype NeededProps = {\n matchedRoutes: Route<any>[];\n title?: string;\n} & ResolveProps;\n\nexport default function documentSpout(options: {\n head?: React.ReactNode;\n title: string;\n}) {\n return function <T extends NeededProps>(next: () => Promise<T>) {\n return async () => {\n const nextProps = await next();\n\n return nextProps;\n };\n };\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@rest-hooks/core\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@rest-hooks/ssr\");","import { CacheProvider, Manager, NetworkManager } from '@rest-hooks/core';\nimport { ServerDataComponent, getDatafromDOM } from '@rest-hooks/ssr';\n\nimport type { ResolveProps } from './types';\n\ntype NeededProps = ResolveProps;\n\nexport default function restHooksSpout(\n options: {\n getManagers: () => Manager[];\n } = { getManagers: () => [new NetworkManager()] },\n) {\n return function <T extends NeededProps>(next: () => Promise<T>) {\n return async () => {\n const data = getDatafromDOM();\n\n const nextProps = await next();\n\n return {\n ...nextProps,\n app: (\n <CacheProvider initialState={data} managers={options.getManagers()}>\n {nextProps.app}\n <ServerDataComponent data={data} />\n </CacheProvider>\n ),\n };\n };\n };\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@anansi/router\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"history\");","import { Route, RouteProvider, RouteController } from '@anansi/router';\nimport React from 'react';\nimport { createBrowserHistory } from 'history';\n\nimport type { ResolveProps, CreateRouter } from './types';\n\ntype NeededProps = ResolveProps;\n\nexport default function routerSpout<ResolveWith>(options: {\n resolveWith?: any;\n useResolveWith: () => ResolveWith;\n createRouter: CreateRouter<ResolveWith>;\n}) {\n const createRouteComponent = (\n router: RouteController<Route<ResolveWith, any>>,\n ) =>\n function Router({ children }: { children: React.ReactNode }) {\n const resolveWith = options.useResolveWith();\n\n return (\n <RouteProvider router={router} resolveWith={resolveWith}>\n {children}\n </RouteProvider>\n );\n };\n\n return function <T extends NeededProps>(next: () => Promise<T>) {\n return async () => {\n const history = createBrowserHistory();\n const router = options.createRouter(history);\n const matchedRoutes = router.getMatchedRoutes(history.location.pathname);\n\n const nextProps = await next();\n\n const Router = createRouteComponent(router);\n return {\n ...nextProps,\n matchedRoutes,\n app: <Router>{nextProps.app}</Router>,\n };\n };\n };\n}\n","export { default as floodSpouts } from './floodSpouts';\nexport { default as documentSpout } from './spouts/document';\nexport { default as restHooksSpout } from './spouts/restHooks';\nexport { default as routerSpout } from './spouts/router';\n"],"names":[],"sourceRoot":""}
package/dist/server.js ADDED
@@ -0,0 +1,400 @@
1
+ /******/ (() => { // webpackBootstrap
2
+ /******/ "use strict";
3
+ /******/ // The require scope
4
+ /******/ var __webpack_require__ = {};
5
+ /******/
6
+ /************************************************************************/
7
+ /******/ /* webpack/runtime/compat get default export */
8
+ /******/ (() => {
9
+ /******/ // getDefaultExport function for compatibility with non-harmony modules
10
+ /******/ __webpack_require__.n = (module) => {
11
+ /******/ var getter = module && module.__esModule ?
12
+ /******/ () => (module['default']) :
13
+ /******/ () => (module);
14
+ /******/ __webpack_require__.d(getter, { a: getter });
15
+ /******/ return getter;
16
+ /******/ };
17
+ /******/ })();
18
+ /******/
19
+ /******/ /* webpack/runtime/define property getters */
20
+ /******/ (() => {
21
+ /******/ // define getter functions for harmony exports
22
+ /******/ __webpack_require__.d = (exports, definition) => {
23
+ /******/ for(var key in definition) {
24
+ /******/ if(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {
25
+ /******/ Object.defineProperty(exports, key, { enumerable: true, get: definition[key] });
26
+ /******/ }
27
+ /******/ }
28
+ /******/ };
29
+ /******/ })();
30
+ /******/
31
+ /******/ /* webpack/runtime/hasOwnProperty shorthand */
32
+ /******/ (() => {
33
+ /******/ __webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))
34
+ /******/ })();
35
+ /******/
36
+ /******/ /* webpack/runtime/make namespace object */
37
+ /******/ (() => {
38
+ /******/ // define __esModule on exports
39
+ /******/ __webpack_require__.r = (exports) => {
40
+ /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
41
+ /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
42
+ /******/ }
43
+ /******/ Object.defineProperty(exports, '__esModule', { value: true });
44
+ /******/ };
45
+ /******/ })();
46
+ /******/
47
+ /************************************************************************/
48
+ var __webpack_exports__ = {};
49
+ // ESM COMPAT FLAG
50
+ __webpack_require__.r(__webpack_exports__);
51
+
52
+ // EXPORTS
53
+ __webpack_require__.d(__webpack_exports__, {
54
+ "documentSpout": () => (/* reexport */ DocumentSpout),
55
+ "laySpouts": () => (/* reexport */ laySpouts),
56
+ "prefetchSpout": () => (/* reexport */ prefetchSpout),
57
+ "restHooksSpout": () => (/* reexport */ restHooksSpout),
58
+ "routerSpout": () => (/* reexport */ routerSpout)
59
+ });
60
+
61
+ ;// CONCATENATED MODULE: external "react-dom/server"
62
+ const server_namespaceObject = require("react-dom/server");
63
+ ;// CONCATENATED MODULE: ./src/laySpouts.tsx
64
+
65
+ function laySpouts(spouts, {
66
+ timeoutMS = 100
67
+ } = {}) {
68
+ const render = async (clientManifest, req, res) => {
69
+ const {
70
+ app
71
+ } = await spouts({
72
+ clientManifest,
73
+ req,
74
+ res
75
+ });
76
+ let didError = false;
77
+ const {
78
+ pipe,
79
+ abort
80
+ } = (0,server_namespaceObject.renderToPipeableStream)(app,
81
+ /*
82
+ This is not documented, so included the types here for reference:
83
+ type Options = {|
84
+ identifierPrefix?: string,
85
+ namespaceURI?: string,
86
+ nonce?: string,
87
+ bootstrapScriptContent?: string,
88
+ bootstrapScripts?: Array<string>,
89
+ bootstrapModules?: Array<string>,
90
+ progressiveChunkSize?: number,
91
+ onShellReady?: () => void,
92
+ onShellError?: () => void,
93
+ onAllReady?: () => void,
94
+ onError?: (error: mixed) => void,
95
+ |};
96
+ */
97
+ {
98
+ //bootstrapScripts: assets.filter(asset => asset.endsWith('.js')),
99
+ onShellReady() {
100
+ //managers.forEach(manager => manager.cleanup());
101
+ // If something errored before we started streaming, we set the error code appropriately.
102
+ res.statusCode = didError ? 500 : 200;
103
+ res.setHeader('Content-type', 'text/html');
104
+ pipe(res);
105
+ },
106
+
107
+ onShellError() {
108
+ didError = true;
109
+ res.statusCode = 500;
110
+ pipe(res);
111
+ },
112
+
113
+ onError(x) {
114
+ didError = true;
115
+ console.error(x);
116
+ res.statusCode = 500;
117
+ pipe(res);
118
+ }
119
+
120
+ }); // Abandon and switch to client rendering if enough time passes.
121
+ // Try lowering this to see the client recover.
122
+
123
+ setTimeout(abort, timeoutMS);
124
+ };
125
+
126
+ return render;
127
+ }
128
+ ;// CONCATENATED MODULE: external "react"
129
+ const external_react_namespaceObject = require("react");
130
+ var external_react_default = /*#__PURE__*/__webpack_require__.n(external_react_namespaceObject);
131
+ ;// CONCATENATED MODULE: ./src/spouts/DocumentComponent.tsx
132
+ var _jsxFileName = "/home/ntucker/src/anansi/packages/core/src/spouts/DocumentComponent.tsx";
133
+
134
+ function Document({
135
+ assets,
136
+ head,
137
+ children,
138
+ title,
139
+ rootId
140
+ }) {
141
+ return /*#__PURE__*/external_react_default().createElement("html", {
142
+ __self: this,
143
+ __source: {
144
+ fileName: _jsxFileName,
145
+ lineNumber: 17,
146
+ columnNumber: 5
147
+ }
148
+ }, /*#__PURE__*/external_react_default().createElement("head", {
149
+ __self: this,
150
+ __source: {
151
+ fileName: _jsxFileName,
152
+ lineNumber: 18,
153
+ columnNumber: 7
154
+ }
155
+ }, head, assets.map((asset, i) => /*#__PURE__*/external_react_default().createElement("link", {
156
+ key: i,
157
+ rel: "preload",
158
+ ...asset,
159
+ __self: this,
160
+ __source: {
161
+ fileName: _jsxFileName,
162
+ lineNumber: 21,
163
+ columnNumber: 11
164
+ }
165
+ })), /*#__PURE__*/external_react_default().createElement("title", {
166
+ __self: this,
167
+ __source: {
168
+ fileName: _jsxFileName,
169
+ lineNumber: 23,
170
+ columnNumber: 9
171
+ }
172
+ }, title)), /*#__PURE__*/external_react_default().createElement("body", {
173
+ __self: this,
174
+ __source: {
175
+ fileName: _jsxFileName,
176
+ lineNumber: 25,
177
+ columnNumber: 7
178
+ }
179
+ }, /*#__PURE__*/external_react_default().createElement("div", {
180
+ id: rootId,
181
+ __self: this,
182
+ __source: {
183
+ fileName: _jsxFileName,
184
+ lineNumber: 26,
185
+ columnNumber: 9
186
+ }
187
+ }, children), /*#__PURE__*/external_react_default().createElement("script", {
188
+ dangerouslySetInnerHTML: {
189
+ __html: `assetManifest = ${JSON.stringify(assets)};`
190
+ },
191
+ __self: this,
192
+ __source: {
193
+ fileName: _jsxFileName,
194
+ lineNumber: 28,
195
+ columnNumber: 9
196
+ }
197
+ }), assets.filter(({
198
+ href
199
+ }) => href.endsWith('.js')).map(({
200
+ href
201
+ }, i) => /*#__PURE__*/external_react_default().createElement("script", {
202
+ key: i,
203
+ src: href,
204
+ async: true,
205
+ __self: this,
206
+ __source: {
207
+ fileName: _jsxFileName,
208
+ lineNumber: 36,
209
+ columnNumber: 13
210
+ }
211
+ }))));
212
+ }
213
+ Document.defaultProps = {
214
+ head: /*#__PURE__*/external_react_default().createElement((external_react_default()).Fragment, null, /*#__PURE__*/external_react_default().createElement("meta", {
215
+ charSet: "utf-8",
216
+ __self: undefined,
217
+ __source: {
218
+ fileName: _jsxFileName,
219
+ lineNumber: 45,
220
+ columnNumber: 7
221
+ }
222
+ }), /*#__PURE__*/external_react_default().createElement("meta", {
223
+ name: "viewport",
224
+ content: "width=device-width, initial-scale=1",
225
+ __self: undefined,
226
+ __source: {
227
+ fileName: _jsxFileName,
228
+ lineNumber: 46,
229
+ columnNumber: 7
230
+ }
231
+ }), /*#__PURE__*/external_react_default().createElement("link", {
232
+ rel: "shortcut icon",
233
+ href: "/assets/favicon.ico",
234
+ __self: undefined,
235
+ __source: {
236
+ fileName: _jsxFileName,
237
+ lineNumber: 47,
238
+ columnNumber: 7
239
+ }
240
+ })),
241
+ rootId: 'anansi-root'
242
+ };
243
+ ;// CONCATENATED MODULE: ./src/spouts/document.server.tsx
244
+ var document_server_jsxFileName = "/home/ntucker/src/anansi/packages/core/src/spouts/document.server.tsx";
245
+
246
+
247
+ function DocumentSpout(options) {
248
+ return function (next) {
249
+ return async props => {
250
+ var _props$clientManifest, _props$clientManifest2, _entrypoint$assets, _entrypoint$children$, _entrypoint$children, _entrypoint$children$2, _entrypoint$children$3, _entrypoint$children$4, _nextProps$title;
251
+
252
+ const nextProps = await next(props);
253
+ const entrypoint = (_props$clientManifest = props.clientManifest) === null || _props$clientManifest === void 0 ? void 0 : (_props$clientManifest2 = _props$clientManifest.entrypoints) === null || _props$clientManifest2 === void 0 ? void 0 : _props$clientManifest2.main;
254
+ const publicPath = props.clientManifest.publicPath;
255
+ if (entrypoint === undefined || publicPath === undefined) throw new Error('Manifest missing entries needed'); // TODO: consider using this package for build stats in future:
256
+ // https://github.com/facebook/react/tree/main/packages/react-server-dom-webpack
257
+
258
+ const assetMap = assets => assets.map(({
259
+ name
260
+ }) => `${publicPath}${name}`); // find additional assets to preload based on matched route
261
+
262
+
263
+ const assets = assetMap([...((_entrypoint$assets = entrypoint.assets) != null ? _entrypoint$assets : []), ...((_entrypoint$children$ = (_entrypoint$children = entrypoint.children) === null || _entrypoint$children === void 0 ? void 0 : (_entrypoint$children$2 = _entrypoint$children.prefetch) === null || _entrypoint$children$2 === void 0 ? void 0 : (_entrypoint$children$3 = _entrypoint$children$2.find) === null || _entrypoint$children$3 === void 0 ? void 0 : (_entrypoint$children$4 = _entrypoint$children$3.call(_entrypoint$children$2, ({
264
+ name
265
+ }) => nextProps.matchedRoutes.some(route => name === route.name))) === null || _entrypoint$children$4 === void 0 ? void 0 : _entrypoint$children$4.assets) != null ? _entrypoint$children$ : [])]).map(asset => asset.endsWith('.css') ? {
266
+ href: asset,
267
+ rel: 'stylesheet'
268
+ } : asset.endsWith('.js') ? {
269
+ href: asset,
270
+ as: 'script'
271
+ } : {
272
+ href: asset
273
+ });
274
+ return { ...nextProps,
275
+ app: /*#__PURE__*/external_react_default().createElement(Document, { ...options,
276
+ title: (_nextProps$title = nextProps.title) != null ? _nextProps$title : options.title,
277
+ assets: assets,
278
+ rootId: options.rootId,
279
+ __self: this,
280
+ __source: {
281
+ fileName: document_server_jsxFileName,
282
+ lineNumber: 42,
283
+ columnNumber: 14
284
+ }
285
+ }, nextProps.app)
286
+ };
287
+ };
288
+ };
289
+ }
290
+ ;// CONCATENATED MODULE: external "@rest-hooks/core"
291
+ const core_namespaceObject = require("@rest-hooks/core");
292
+ ;// CONCATENATED MODULE: external "@rest-hooks/ssr"
293
+ const ssr_namespaceObject = require("@rest-hooks/ssr");
294
+ ;// CONCATENATED MODULE: ./src/spouts/restHooks.server.tsx
295
+ var restHooks_server_jsxFileName = "/home/ntucker/src/anansi/packages/core/src/spouts/restHooks.server.tsx";
296
+
297
+
298
+
299
+ function restHooksSpout(options = {
300
+ getManagers: () => [new core_namespaceObject.NetworkManager()]
301
+ }) {
302
+ return function (next) {
303
+ return async props => {
304
+ const [ServerCacheProvider, controller] = (0,ssr_namespaceObject.createPersistedStore)(options.getManagers());
305
+ const nextProps = await next(props);
306
+ return { ...nextProps,
307
+ controller,
308
+ app: /*#__PURE__*/external_react_default().createElement(ServerCacheProvider, {
309
+ __self: this,
310
+ __source: {
311
+ fileName: restHooks_server_jsxFileName,
312
+ lineNumber: 26,
313
+ columnNumber: 14
314
+ }
315
+ }, nextProps.app)
316
+ };
317
+ };
318
+ };
319
+ }
320
+ ;// CONCATENATED MODULE: external "@anansi/router"
321
+ const router_namespaceObject = require("@anansi/router");
322
+ ;// CONCATENATED MODULE: external "history"
323
+ const external_history_namespaceObject = require("history");
324
+ ;// CONCATENATED MODULE: ./src/spouts/router.server.tsx
325
+ var router_server_jsxFileName = "/home/ntucker/src/anansi/packages/core/src/spouts/router.server.tsx";
326
+
327
+
328
+
329
+ function routerSpout(options) {
330
+ const createRouteComponent = router => function Router({
331
+ children
332
+ }) {
333
+ const resolveWith = options.useResolveWith();
334
+ return /*#__PURE__*/external_react_default().createElement(router_namespaceObject.RouteProvider, {
335
+ router: router,
336
+ resolveWith: resolveWith,
337
+ __self: this,
338
+ __source: {
339
+ fileName: router_server_jsxFileName,
340
+ lineNumber: 21,
341
+ columnNumber: 9
342
+ }
343
+ }, children);
344
+ };
345
+
346
+ return function (next) {
347
+ return async props => {
348
+ const url = props.req.url || '';
349
+ const router = options.createRouter((0,external_history_namespaceObject.createMemoryHistory)({
350
+ initialEntries: [url]
351
+ }));
352
+ const matchedRoutes = router.getMatchedRoutes(url);
353
+ const nextProps = await next(props);
354
+ const Router = createRouteComponent(router);
355
+ return { ...nextProps,
356
+ matchedRoutes,
357
+ app: /*#__PURE__*/external_react_default().createElement(Router, {
358
+ __self: this,
359
+ __source: {
360
+ fileName: router_server_jsxFileName,
361
+ lineNumber: 43,
362
+ columnNumber: 14
363
+ }
364
+ }, nextProps.app)
365
+ };
366
+ };
367
+ };
368
+ }
369
+ ;// CONCATENATED MODULE: ./src/spouts/prefetch.server.tsx
370
+ function prefetchSpout(field) {
371
+ return function (next) {
372
+ return async props => {
373
+ const nextProps = await next(props);
374
+
375
+ try {
376
+ const toFetch = [];
377
+ nextProps.matchedRoutes.forEach(route => {
378
+ if (typeof route.resolveData === 'function') {
379
+ toFetch.push(route.resolveData(nextProps[field], route));
380
+ }
381
+ });
382
+ await Promise.all(toFetch);
383
+ } catch (e) {
384
+ console.error(e);
385
+ }
386
+
387
+ return nextProps;
388
+ };
389
+ };
390
+ }
391
+ ;// CONCATENATED MODULE: ./src/index.server.ts
392
+
393
+
394
+
395
+
396
+
397
+ module.exports = __webpack_exports__;
398
+ /******/ })()
399
+ ;
400
+ //# sourceMappingURL=server.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"server.js","mappings":";;AAAA;AACA;AACA;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACPA;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACNA;;ACAA;AAKA;AAIA;AAAA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;AAAA;AAAA;AAAA;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;AACA;AACA;;AAnBA;AAuBA;;AACA;AACA;;AACA;AACA;;AC3DA;;;;;ACQA;AACA;AACA;AACA;AACA;AACA;AALA;AAOA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AACA;AADA;AADA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AAAA;AACA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA;AARA;;;ACzCA;AAIA;AAOA;AAKA;AAGA;AAAA;;AACA;AAEA;AACA;AAEA;AAIA;;AACA;AACA;AAAA;;;AAEA;AAEA;AAAA;AAKA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAGA;AAEA;AAGA;AACA;AACA;AAJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AA3BA;AAHA;AA6CA;;AC7DA;;ACAA;;;;ACAA;AACA;AAMA;AAGA;AAAA;AAEA;AAGA;AACA;AAIA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AAKA;AACA;AACA;;AC7BA;;ACAA;;;ACAA;AACA;AACA;AAMA;AAKA;AAGA;AAAA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA;;AAEA;AAGA;AACA;AACA;AACA;AAAA;AAEA;AAEA;AAEA;AACA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AAKA;AACA;AACA;;ACtCA;AACA;AAOA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;;ACjCA;AACA;AACA;AACA","sources":["/home/ntucker/src/anansi/packages/core/webpack/bootstrap","/home/ntucker/src/anansi/packages/core/webpack/runtime/compat get default export","/home/ntucker/src/anansi/packages/core/webpack/runtime/define property getters","/home/ntucker/src/anansi/packages/core/webpack/runtime/hasOwnProperty shorthand","/home/ntucker/src/anansi/packages/core/webpack/runtime/make namespace object","/home/ntucker/src/anansi/packages/core/external commonjs \"react-dom/server\"","/home/ntucker/src/anansi/packages/core/src/laySpouts.tsx","/home/ntucker/src/anansi/packages/core/external commonjs \"react\"","/home/ntucker/src/anansi/packages/core/src/spouts/DocumentComponent.tsx","/home/ntucker/src/anansi/packages/core/src/spouts/document.server.tsx","/home/ntucker/src/anansi/packages/core/external commonjs \"@rest-hooks/core\"","/home/ntucker/src/anansi/packages/core/external commonjs \"@rest-hooks/ssr\"","/home/ntucker/src/anansi/packages/core/src/spouts/restHooks.server.tsx","/home/ntucker/src/anansi/packages/core/external commonjs \"@anansi/router\"","/home/ntucker/src/anansi/packages/core/external commonjs \"history\"","/home/ntucker/src/anansi/packages/core/src/spouts/router.server.tsx","/home/ntucker/src/anansi/packages/core/src/spouts/prefetch.server.tsx","/home/ntucker/src/anansi/packages/core/src/index.server.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dom/server\");","import { renderToPipeableStream as reactRender } from 'react-dom/server';\n\nimport { Render } from './scripts/types';\nimport { ServerProps } from './spouts/types';\n\nexport default function laySpouts(\n spouts: (props: ServerProps) => Promise<{\n app: JSX.Element;\n }>,\n { timeoutMS = 100 }: { timeoutMS?: number } = {},\n) {\n const render: Render = async (clientManifest, req, res) => {\n const { app } = await spouts({ clientManifest, req, res });\n let didError = false;\n const { pipe, abort } = reactRender(\n app,\n /*\n This is not documented, so included the types here for reference:\ntype Options = {|\n identifierPrefix?: string,\n namespaceURI?: string,\n nonce?: string,\n bootstrapScriptContent?: string,\n bootstrapScripts?: Array<string>,\n bootstrapModules?: Array<string>,\n progressiveChunkSize?: number,\n onShellReady?: () => void,\n onShellError?: () => void,\n onAllReady?: () => void,\n onError?: (error: mixed) => void,\n|};\n */\n {\n //bootstrapScripts: assets.filter(asset => asset.endsWith('.js')),\n onShellReady() {\n //managers.forEach(manager => manager.cleanup());\n // If something errored before we started streaming, we set the error code appropriately.\n res.statusCode = didError ? 500 : 200;\n res.setHeader('Content-type', 'text/html');\n pipe(res);\n },\n onShellError() {\n didError = true;\n res.statusCode = 500;\n pipe(res);\n },\n onError(x: any) {\n didError = true;\n console.error(x);\n res.statusCode = 500;\n pipe(res);\n },\n },\n );\n // Abandon and switch to client rendering if enough time passes.\n // Try lowering this to see the client recover.\n setTimeout(abort, timeoutMS);\n };\n return render;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","type Props = {\n children: React.ReactNode;\n assets: { href: string; as?: string; rel?: string }[];\n head: React.ReactNode;\n title: string;\n rootId: string;\n};\n\nexport default function Document({\n assets,\n head,\n children,\n title,\n rootId,\n}: Props) {\n return (\n <html>\n <head>\n {head}\n {assets.map((asset, i) => (\n <link key={i} rel=\"preload\" {...asset} />\n ))}\n <title>{title}</title>\n </head>\n <body>\n <div id={rootId}>{children}</div>\n {/* this ensures the client can hydrate the assets prop */}\n <script\n dangerouslySetInnerHTML={{\n __html: `assetManifest = ${JSON.stringify(assets)};`,\n }}\n />\n {assets\n .filter(({ href }) => href.endsWith('.js'))\n .map(({ href }, i) => (\n <script key={i} src={href} async />\n ))}\n </body>\n </html>\n );\n}\nDocument.defaultProps = {\n head: (\n <>\n <meta charSet=\"utf-8\" />\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link rel=\"shortcut icon\" href=\"/assets/favicon.ico\" />\n </>\n ),\n rootId: 'anansi-root',\n};\n","import React from 'react';\nimport type { Route } from '@anansi/router';\n\nimport type { ServerProps, ResolveProps } from './types';\nimport Document from './DocumentComponent';\n\ntype NeededProps = {\n matchedRoutes: Route<any>[];\n title?: string;\n} & ResolveProps;\n\nexport default function DocumentSpout(options: {\n head?: React.ReactNode;\n title: string;\n rootId: string;\n}) {\n return function <T extends NeededProps>(\n next: (props: ServerProps) => Promise<T>,\n ) {\n return async (props: ServerProps) => {\n const nextProps = await next(props);\n\n const entrypoint = props.clientManifest?.entrypoints?.main;\n const publicPath = props.clientManifest.publicPath;\n\n if (entrypoint === undefined || publicPath === undefined)\n throw new Error('Manifest missing entries needed');\n\n // TODO: consider using this package for build stats in future:\n // https://github.com/facebook/react/tree/main/packages/react-server-dom-webpack\n const assetMap = (assets: { name: string; size?: number }[]) =>\n assets.map(({ name }) => `${publicPath}${name}`);\n // find additional assets to preload based on matched route\n const assets = assetMap([\n ...(entrypoint.assets ?? []),\n ...(entrypoint.children?.prefetch?.find?.(({ name }) =>\n nextProps.matchedRoutes.some(route => name === route.name),\n )?.assets ?? []),\n ]).map(asset =>\n asset.endsWith('.css')\n ? { href: asset, rel: 'stylesheet' }\n : asset.endsWith('.js')\n ? { href: asset, as: 'script' }\n : { href: asset },\n );\n\n return {\n ...nextProps,\n app: (\n <Document\n {...options}\n title={nextProps.title ?? options.title}\n assets={assets}\n rootId={options.rootId}\n >\n {nextProps.app}\n </Document>\n ),\n };\n };\n };\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@rest-hooks/core\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@rest-hooks/ssr\");","import { Manager, NetworkManager } from '@rest-hooks/core';\nimport { createPersistedStore } from '@rest-hooks/ssr';\n\nimport type { ResolveProps, ServerProps } from './types';\n\ntype NeededProps = ResolveProps;\n\nexport default function restHooksSpout(\n options: {\n getManagers: () => Manager[];\n } = { getManagers: () => [new NetworkManager()] },\n) {\n return function <T extends NeededProps>(\n next: (props: ServerProps) => Promise<T>,\n ) {\n return async (props: ServerProps) => {\n const [ServerCacheProvider, controller] = createPersistedStore(\n options.getManagers(),\n );\n\n const nextProps = await next(props);\n\n return {\n ...nextProps,\n controller,\n app: <ServerCacheProvider>{nextProps.app}</ServerCacheProvider>,\n };\n };\n };\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@anansi/router\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"history\");","import { Route, RouteProvider, RouteController } from '@anansi/router';\nimport React from 'react';\nimport { createMemoryHistory } from 'history';\n\nimport type { ResolveProps, ServerProps, CreateRouter } from './types';\n\ntype NeededProps = ResolveProps;\n\nexport default function routerSpout<ResolveWith>(options: {\n resolveWith?: any;\n useResolveWith: () => ResolveWith;\n createRouter: CreateRouter<ResolveWith>;\n}) {\n const createRouteComponent = (\n router: RouteController<Route<ResolveWith, any>>,\n ) =>\n function Router({ children }: { children: React.ReactNode }) {\n const resolveWith = options.useResolveWith();\n\n return (\n <RouteProvider router={router} resolveWith={resolveWith}>\n {children}\n </RouteProvider>\n );\n };\n\n return function <T extends NeededProps>(\n next: (props: ServerProps) => Promise<T>,\n ) {\n return async (props: ServerProps) => {\n const url = props.req.url || '';\n const router = options.createRouter(\n createMemoryHistory({ initialEntries: [url] }),\n );\n const matchedRoutes: Route<ResolveWith>[] = router.getMatchedRoutes(url);\n\n const nextProps = await next(props);\n\n const Router = createRouteComponent(router);\n return {\n ...nextProps,\n matchedRoutes,\n app: <Router>{nextProps.app}</Router>,\n };\n };\n };\n}\n","import { Route } from '@anansi/router';\n\nimport type { ResolveProps, ServerProps } from './types';\n\ntype NeededProps<RouteWith> = {\n matchedRoutes: Route<RouteWith>[];\n} & ResolveProps;\n\nexport default function prefetchSpout<F extends string>(field: F) {\n return function <RouteWith, T extends NeededProps<RouteWith>>(\n next: (props: ServerProps) => Promise<\n {\n [K in F]: RouteWith;\n } & T\n >,\n ) {\n return async (props: ServerProps) => {\n const nextProps = await next(props);\n\n try {\n const toFetch: Promise<unknown>[] = [];\n nextProps.matchedRoutes.forEach(route => {\n if (typeof route.resolveData === 'function') {\n toFetch.push(route.resolveData(nextProps[field], route));\n }\n });\n await Promise.all(toFetch);\n } catch (e) {\n console.error(e);\n }\n return nextProps;\n };\n };\n}\n","export { default as laySpouts } from './laySpouts';\nexport { default as documentSpout } from './spouts/document.server';\nexport { default as restHooksSpout } from './spouts/restHooks.server';\nexport { default as routerSpout } from './spouts/router.server';\nexport { default as prefetchSpout } from './spouts/prefetch.server';\n"],"names":[],"sourceRoot":""}
@@ -5,10 +5,14 @@ exports.default = floodSpouts;
5
5
 
6
6
  var _client = require("react-dom/client");
7
7
 
8
- async function floodSpouts(spouts) {
8
+ async function floodSpouts(spouts, {
9
+ rootId = 'anansi-root'
10
+ } = {}) {
11
+ var _document$getElementB;
12
+
9
13
  const {
10
14
  app
11
15
  } = await spouts();
12
- (0, _client.hydrateRoot)(document, app);
16
+ (0, _client.hydrateRoot)((_document$getElementB = document.getElementById(rootId)) != null ? _document$getElementB : document, app);
13
17
  }
14
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmbG9vZFNwb3V0cyIsInNwb3V0cyIsImFwcCIsImh5ZHJhdGVSb290IiwiZG9jdW1lbnQiXSwic291cmNlcyI6WyIuLi9zcmMvZmxvb2RTcG91dHMudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGh5ZHJhdGVSb290IH0gZnJvbSAncmVhY3QtZG9tL2NsaWVudCc7XG5cbmV4cG9ydCBkZWZhdWx0IGFzeW5jIGZ1bmN0aW9uIGZsb29kU3BvdXRzKFxuICBzcG91dHM6ICgpID0+IFByb21pc2U8e1xuICAgIGFwcDogSlNYLkVsZW1lbnQ7XG4gIH0+LFxuKSB7XG4gIGNvbnN0IHsgYXBwIH0gPSBhd2FpdCBzcG91dHMoKTtcblxuICBoeWRyYXRlUm9vdChkb2N1bWVudCwgYXBwKTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQTs7QUFFZSxlQUFlQSxXQUFmLENBQ2JDLE1BRGEsRUFJYjtFQUNBLE1BQU07SUFBRUM7RUFBRixJQUFVLE1BQU1ELE1BQU0sRUFBNUI7RUFFQSxJQUFBRSxtQkFBQSxFQUFZQyxRQUFaLEVBQXNCRixHQUF0QjtBQUNEIn0=
18
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmbG9vZFNwb3V0cyIsInNwb3V0cyIsInJvb3RJZCIsImFwcCIsImh5ZHJhdGVSb290IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9mbG9vZFNwb3V0cy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaHlkcmF0ZVJvb3QgfSBmcm9tICdyZWFjdC1kb20vY2xpZW50JztcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZmxvb2RTcG91dHMoXG4gIHNwb3V0czogKCkgPT4gUHJvbWlzZTx7XG4gICAgYXBwOiBKU1guRWxlbWVudDtcbiAgfT4sXG4gIHsgcm9vdElkID0gJ2FuYW5zaS1yb290JyB9OiB7IHJvb3RJZD86IHN0cmluZyB9ID0ge30sXG4pIHtcbiAgY29uc3QgeyBhcHAgfSA9IGF3YWl0IHNwb3V0cygpO1xuXG4gIGh5ZHJhdGVSb290KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHJvb3RJZCkgPz8gZG9jdW1lbnQsIGFwcCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBRWUsZUFBZUEsV0FBZixDQUNiQyxNQURhLEVBSWI7RUFBRUMsTUFBTSxHQUFHO0FBQVgsSUFBa0QsRUFKckMsRUFLYjtFQUFBOztFQUNBLE1BQU07SUFBRUM7RUFBRixJQUFVLE1BQU1GLE1BQU0sRUFBNUI7RUFFQSxJQUFBRyxtQkFBQSwyQkFBWUMsUUFBUSxDQUFDQyxjQUFULENBQXdCSixNQUF4QixDQUFaLG9DQUErQ0csUUFBL0MsRUFBeURGLEdBQXpEO0FBQ0QifQ==
@@ -42,8 +42,8 @@ const webpackConfig = require(require.resolve( // TODO: use normal resolution al
42
42
  _path.default.join(process.cwd(), 'webpack.config')));
43
43
 
44
44
  const entrypoint = process.argv[2];
45
- const PORT = process.env.PORT || 3000;
46
- process.env.WEBPACK_PUBLIC_HOST = `http://localhost:${PORT}`;
45
+ const PORT = process.env.PORT || 3000; //process.env.WEBPACK_PUBLIC_HOST = `http://localhost:${PORT}`; this breaks compatibility with stackblitz
46
+
47
47
  process.env.WEBPACK_PUBLIC_PATH = '/assets/';
48
48
 
49
49
  if (!entrypoint) {
@@ -51,7 +51,7 @@ if (!entrypoint) {
51
51
  process.exit(-1);
52
52
  }
53
53
 
54
- console.log(_chalk.default.greenBright(`Starting SSR at`), _chalk.default.cyanBright(process.env.WEBPACK_PUBLIC_HOST));
54
+ console.log(_chalk.default.greenBright(`Starting SSR at:`), _chalk.default.cyanBright(process.env.WEBPACK_PUBLIC_HOST || `http://localhost:${PORT}`));
55
55
  const loader = (0, _ora.default)().start(); // Set up in memory filesystem
56
56
 
57
57
  const volume = new _memfs.Volume();
@@ -266,4 +266,4 @@ process.on('SIGINT', () => {
266
266
  process.exit(-1);
267
267
  });
268
268
  runServer();
269
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3ZWJwYWNrQ29uZmlnIiwicmVxdWlyZSIsInJlc29sdmUiLCJwYXRoIiwiam9pbiIsInByb2Nlc3MiLCJjd2QiLCJlbnRyeXBvaW50IiwiYXJndiIsIlBPUlQiLCJlbnYiLCJXRUJQQUNLX1BVQkxJQ19IT1NUIiwiV0VCUEFDS19QVUJMSUNfUEFUSCIsImNvbnNvbGUiLCJsb2ciLCJleGl0IiwiY2hhbGsiLCJncmVlbkJyaWdodCIsImN5YW5CcmlnaHQiLCJsb2FkZXIiLCJvcmEiLCJzdGFydCIsInZvbHVtZSIsIlZvbHVtZSIsImZzIiwiY3JlYXRlRnNGcm9tVm9sdW1lIiwidWZzIiwidXNlIiwiZGlza0ZzIiwicGF0Y2hSZXF1aXJlIiwicmVhZEZpbGUiLCJwcm9taXNpZnkiLCJzZXJ2ZXIiLCJob3RFbnRyeSIsImVudHJ5UGF0aCIsImdlbmVyYXRlZEVudHJ5cG9pbnQiLCJ0bXAiLCJmaWxlU3luYyIsInBvc3RmaXgiLCJ3cml0ZVN5bmMiLCJmZCIsIndlYnBhY2tDb25maWdzIiwibmFtZSIsIm1vZGUiLCJyZXBsYWNlIiwidGFyZ2V0IiwicGx1Z2lucyIsInB1c2giLCJ3ZWJwYWNrIiwib3B0aW1pemUiLCJMaW1pdENodW5rQ291bnRQbHVnaW4iLCJtYXhDaHVua3MiLCJjb21waWxlciIsInNvdXJjZU1hcFN1cHBvcnQiLCJpbnN0YWxsIiwiaG9va1JlcXVpcmUiLCJnZXRTZXJ2ZXJCdW5kbGUiLCJzZXJ2ZXJTdGF0cyIsInNlcnZlckpzb24iLCJ0b0pzb24iLCJhc3NldHMiLCJvdXRwdXRQYXRoIiwiaGFuZGxlRXJyb3JzIiwiZm4iLCJyZXEiLCJyZXMiLCJuZXh0IiwieCIsInJlbmRlciIsImluaXRpYWxpemVBcHAiLCJzdGF0cyIsImNsaWVudFN0YXRzIiwiY29tcGlsYXRpb24iLCJlcnJvcnMiLCJsZW5ndGgiLCJmYWlsIiwiaW5mbyIsIndyYXBwaW5nQXBwIiwiZXhwcmVzcyIsImNvbXByZXNzIiwiY2xpZW50TWFuaWZlc3QiLCJhc3NldFJvdXRlIiwiZmlsZW5hbWUiLCJ1cmwiLCJzdWJzdHJpbmciLCJzcGxpdCIsImFzc2V0UGF0aCIsImZpbGVDb250ZW50IiwidG9TdHJpbmciLCJjb250ZW50VHlwZSIsInNlbmQiLCJlIiwic3RhdHVzIiwiZ2V0IiwiZGVmYXVsdCIsImVuZHNXaXRoIiwic3RhdHVzQ29kZSIsInNldEhlYWRlciIsInNvY2tldCIsIm9uIiwiZXJyb3IiLCJsaXN0ZW4iLCJzdWNjZWVkIiwic3lzY2FsbCIsImlzUGlwZSIsInBvcnRPclBpcGUiLCJOdW1iZXIiLCJpc05hTiIsImJpbmQiLCJjb2RlIiwiZGV2U2VydmVyIiwiV2VicGFja0RldlNlcnZlciIsImRldk1pZGRsZXdhcmUiLCJvdXRwdXRGaWxlU3lzdGVtIiwicnVuU2VydmVyIiwiaG9va3MiLCJkb25lIiwidGFwIiwibXVsdGlTdGF0cyIsIk9iamVjdCIsImhhc093biIsImltcG9ydEZyZXNoIiwic3RvcFNlcnZlciIsInN0b3AiLCJ3YXJuIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvc3RhcnREZXZzZXJ2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcbmltcG9ydCBkaXNrRnMgZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgd2VicGFjaywgeyBNdWx0aUNvbXBpbGVyIH0gZnJvbSAnd2VicGFjayc7XG5pbXBvcnQgeyBjcmVhdGVGc0Zyb21Wb2x1bWUsIFZvbHVtZSB9IGZyb20gJ21lbWZzJztcbmltcG9ydCB7IFNlcnZlciwgSW5jb21pbmdNZXNzYWdlLCBTZXJ2ZXJSZXNwb25zZSB9IGZyb20gJ2h0dHAnO1xuaW1wb3J0IGV4cHJlc3MsIHsgTmV4dEZ1bmN0aW9uIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgb3JhIGZyb20gJ29yYSc7XG5pbXBvcnQgeyBwYXRjaFJlcXVpcmUgfSBmcm9tICdmcy1tb25rZXknO1xuaW1wb3J0IHRtcCBmcm9tICd0bXAnO1xuaW1wb3J0IHNvdXJjZU1hcFN1cHBvcnQgZnJvbSAnc291cmNlLW1hcC1zdXBwb3J0JztcbmltcG9ydCB7IHVmcyB9IGZyb20gJ3VuaW9uZnMnO1xuaW1wb3J0IGNvbXByZXNzIGZyb20gJ2NvbXByZXNzaW9uJztcbmltcG9ydCBXZWJwYWNrRGV2U2VydmVyIGZyb20gJ3dlYnBhY2stZGV2LXNlcnZlcic7XG5pbXBvcnQgaW1wb3J0RnJlc2ggZnJvbSAnaW1wb3J0LWZyZXNoJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmltcG9ydCAnY3Jvc3MtZmV0Y2gvcG9seWZpbGwnO1xuaW1wb3J0IHsgUmVuZGVyIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG5jb25zdCB3ZWJwYWNrQ29uZmlnID0gcmVxdWlyZShyZXF1aXJlLnJlc29sdmUoXG4gIC8vIFRPRE86IHVzZSBub3JtYWwgcmVzb2x1dGlvbiBhbGdvcml0aG0gdG8gZmluZCB3ZWJwYWNrIGZpbGVcbiAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICd3ZWJwYWNrLmNvbmZpZycpLFxuKSk7XG5cbmNvbnN0IGVudHJ5cG9pbnQgPSBwcm9jZXNzLmFyZ3ZbMl07XG5jb25zdCBQT1JUID0gcHJvY2Vzcy5lbnYuUE9SVCB8fCAzMDAwO1xucHJvY2Vzcy5lbnYuV0VCUEFDS19QVUJMSUNfSE9TVCA9IGBodHRwOi8vbG9jYWxob3N0OiR7UE9SVH1gO1xucHJvY2Vzcy5lbnYuV0VCUEFDS19QVUJMSUNfUEFUSCA9ICcvYXNzZXRzLyc7XG5cbmlmICghZW50cnlwb2ludCkge1xuICBjb25zb2xlLmxvZyhgVXNhZ2U6IHN0YXJ0LWFuYW5zaSA8ZW50cnlwb2ludC1maWxlPmApO1xuICBwcm9jZXNzLmV4aXQoLTEpO1xufVxuXG5jb25zb2xlLmxvZyhcbiAgY2hhbGsuZ3JlZW5CcmlnaHQoYFN0YXJ0aW5nIFNTUiBhdGApLFxuICBjaGFsay5jeWFuQnJpZ2h0KHByb2Nlc3MuZW52LldFQlBBQ0tfUFVCTElDX0hPU1QpLFxuKTtcbmNvbnN0IGxvYWRlciA9IG9yYSgpLnN0YXJ0KCk7XG5cbi8vIFNldCB1cCBpbiBtZW1vcnkgZmlsZXN5c3RlbVxuY29uc3Qgdm9sdW1lID0gbmV3IFZvbHVtZSgpO1xuY29uc3QgZnMgPSBjcmVhdGVGc0Zyb21Wb2x1bWUodm9sdW1lKTtcbnVmcy51c2UoZGlza0ZzKS51c2UoZnMgYXMgYW55KTtcblxucGF0Y2hSZXF1aXJlKHVmcyk7XG5jb25zdCByZWFkRmlsZSA9IHByb21pc2lmeSh1ZnMucmVhZEZpbGUpO1xubGV0IHNlcnZlcjogU2VydmVyIHwgdW5kZWZpbmVkO1xuXG4vLyBHZW5lcmF0ZSBhIHRlbXBvcmFyeSBmaWxlIHNvIHdlIGNhbiBob3QgcmVsb2FkIGZyb20gdGhlIHJvb3Qgb2YgdGhlIGFwcGxpY2F0aW9uXG5mdW5jdGlvbiBob3RFbnRyeShlbnRyeVBhdGg6IHN0cmluZykge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgLy8gQHRzLWlnbm9yZSBmb3Igc29tZSByZWFzb24gaXQncyBub3QgcGlja2luZyB1cCB0aGF0IG90aGVyIG9wdGlvbnMgYXJlIG9wdGlvbmFsXG4gIGNvbnN0IGdlbmVyYXRlZEVudHJ5cG9pbnQgPSB0bXAuZmlsZVN5bmMoeyBwb3N0Zml4OiAnLmpzJyB9KTtcbiAgZGlza0ZzLndyaXRlU3luYyhcbiAgICBnZW5lcmF0ZWRFbnRyeXBvaW50LmZkLFxuICAgIGBcbmltcG9ydCBlbnRyeSBmcm9tIFwiJHtwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgZW50cnlQYXRoKX1cIjtcblxuaWYgKG1vZHVsZS5ob3QpIHtcbiAgbW9kdWxlLmhvdC5hY2NlcHQoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZW50cnk7XG4gIGAsXG4gICk7XG4gIHJldHVybiBnZW5lcmF0ZWRFbnRyeXBvaW50O1xufVxuXG5jb25zdCB3ZWJwYWNrQ29uZmlncyA9IFtcbiAgd2VicGFja0NvbmZpZyhcbiAgICB7XG4gICAgICBlbnRyeXBvaW50OiBob3RFbnRyeShlbnRyeXBvaW50KS5uYW1lLFxuICAgICAgbmFtZTogJ2NsaWVudCcsXG4gICAgfSxcbiAgICB7IG1vZGU6ICdkZXZlbG9wbWVudCcgfSxcbiAgKSxcbiAgd2VicGFja0NvbmZpZyhcbiAgICB7XG4gICAgICBlbnRyeXBvaW50OiBlbnRyeXBvaW50LnJlcGxhY2UoJy50c3gnLCAnLnNlcnZlci50c3gnKSxcbiAgICAgIG5hbWU6ICdzZXJ2ZXInLFxuICAgIH0sXG4gICAgeyBtb2RlOiAnZGV2ZWxvcG1lbnQnLCB0YXJnZXQ6ICdub2RlJyB9LFxuICApLFxuXSBhcyBjb25zdDtcbi8vIG9ubHkgaGF2ZSBvbmUgb3V0cHV0IGZvciBzZXJ2ZXIgc28gd2UgY2FuIGF2b2lkIGNhY2hlZCBtb2R1bGVzXG53ZWJwYWNrQ29uZmlnc1sxXS5wbHVnaW5zLnB1c2goXG4gIG5ldyB3ZWJwYWNrLm9wdGltaXplLkxpbWl0Q2h1bmtDb3VudFBsdWdpbih7IG1heENodW5rczogMSB9KSxcbik7XG4vLyBpbml0aWFsaXplIHRoZSB3ZWJwYWNrIGNvbXBpbGVyXG5jb25zdCBjb21waWxlcjogTXVsdGlDb21waWxlciA9IHdlYnBhY2sod2VicGFja0NvbmZpZ3MpO1xuXG5zb3VyY2VNYXBTdXBwb3J0Lmluc3RhbGwoeyBob29rUmVxdWlyZTogdHJ1ZSB9KTtcblxuZnVuY3Rpb24gZ2V0U2VydmVyQnVuZGxlKHNlcnZlclN0YXRzOiB3ZWJwYWNrLlN0YXRzKSB7XG4gIGNvbnN0IHNlcnZlckpzb24gPSBzZXJ2ZXJTdGF0cy50b0pzb24oeyBhc3NldHM6IHRydWUgfSk7XG4gIHJldHVybiBwYXRoLmpvaW4oc2VydmVySnNvbi5vdXRwdXRQYXRoID8/ICcnLCAnbWFpbi5qcycpO1xufVxuZnVuY3Rpb24gaGFuZGxlRXJyb3JzPFxuICBGIGV4dGVuZHMgKFxuICAgIHJlcTogUmVxdWVzdCB8IEluY29taW5nTWVzc2FnZSxcbiAgICByZXM6IFJlc3BvbnNlIHwgU2VydmVyUmVzcG9uc2UsXG4gICkgPT4gUHJvbWlzZTx2b2lkPixcbj4oZm46IEYpIHtcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIChcbiAgICByZXE6IFJlcXVlc3QgfCBJbmNvbWluZ01lc3NhZ2UsXG4gICAgcmVzOiBSZXNwb25zZSB8IFNlcnZlclJlc3BvbnNlLFxuICAgIG5leHQ6IE5leHRGdW5jdGlvbixcbiAgKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmbihyZXEsIHJlcyk7XG4gICAgfSBjYXRjaCAoeCkge1xuICAgICAgbmV4dCh4KTtcbiAgICB9XG4gIH07XG59XG5sZXQgcmVuZGVyOiBSZW5kZXI7XG4vLyBTdGFydCB0aGUgZXhwcmVzcyBzZXJ2ZXIgYWZ0ZXIgdGhlIGZpcnN0IGNvbXBpbGF0aW9uXG5mdW5jdGlvbiBpbml0aWFsaXplQXBwKHN0YXRzOiB3ZWJwYWNrLlN0YXRzW10pIHtcbiAgY29uc3QgW2NsaWVudFN0YXRzLCBzZXJ2ZXJTdGF0c10gPSBzdGF0cztcbiAgaWYgKFxuICAgIGNsaWVudFN0YXRzPy5jb21waWxhdGlvbj8uZXJyb3JzPy5sZW5ndGggfHxcbiAgICBzZXJ2ZXJTdGF0cz8uY29tcGlsYXRpb24/LmVycm9ycz8ubGVuZ3RoXG4gICkge1xuICAgIGxvYWRlci5mYWlsKCdFcnJvcnMgZm9yIGNsaWVudCBidWlsZDogJyArIGNsaWVudFN0YXRzLmNvbXBpbGF0aW9uLmVycm9ycyk7XG4gICAgbG9hZGVyLmZhaWwoJ0Vycm9ycyBmb3Igc2VydmVyIGJ1aWxkOiAnICsgc2VydmVyU3RhdHMuY29tcGlsYXRpb24uZXJyb3JzKTtcbiAgICAvLyBUT0RPOiBoYW5kbGUgbW9yZSBncmFjZWZ1bGx5XG4gICAgcHJvY2Vzcy5leGl0KC0xKTtcbiAgfSBlbHNlIHtcbiAgICBsb2FkZXIuaW5mbygnTGF1bmNoaW5nIHNlcnZlcicpO1xuICB9XG5cbiAgY29uc3Qgd3JhcHBpbmdBcHAgPSBleHByZXNzKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAvL0B0cy1pZ25vcmVcbiAgd3JhcHBpbmdBcHAudXNlKGNvbXByZXNzKCkpO1xuXG4gIC8vIEFTU0VUU1xuICBjb25zdCBjbGllbnRNYW5pZmVzdCA9IGNsaWVudFN0YXRzLnRvSnNvbigpO1xuICBjb25zdCBhc3NldFJvdXRlID0gYXN5bmMgKHJlcTogUmVxdWVzdCB8IEluY29taW5nTWVzc2FnZSwgcmVzOiBhbnkpID0+IHtcbiAgICBjb25zdCBmaWxlbmFtZSA9XG4gICAgICByZXEudXJsXG4gICAgICAgID8uc3Vic3RyaW5nKChwcm9jZXNzLmVudi5XRUJQQUNLX1BVQkxJQ19QQVRIIGFzIHN0cmluZykubGVuZ3RoKVxuICAgICAgICAuc3BsaXQoJz8nKVswXSA/PyAnJztcbiAgICBjb25zdCBhc3NldFBhdGggPSBwYXRoLmpvaW4oY2xpZW50TWFuaWZlc3Qub3V0cHV0UGF0aCA/PyAnJywgZmlsZW5hbWUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbGVDb250ZW50ID0gKGF3YWl0IHJlYWRGaWxlKGFzc2V0UGF0aCkpLnRvU3RyaW5nKCk7XG4gICAgICByZXMuY29udGVudFR5cGUoZmlsZW5hbWUpO1xuICAgICAgcmVzLnNlbmQoZmlsZUNvbnRlbnQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICAgIHJlcy5zZW5kKGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfTtcbiAgd3JhcHBpbmdBcHAuZ2V0KGAke3Byb2Nlc3MuZW52LldFQlBBQ0tfUFVCTElDX1BBVEh9KmAsIGFzc2V0Um91dGUpO1xuXG4gIC8vIFNFUlZFUiBTSURFIFJFTkRFUklOR1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICByZW5kZXIgPSByZXF1aXJlKGdldFNlcnZlckJ1bmRsZShzZXJ2ZXJTdGF0cykpLmRlZmF1bHQ7XG4gIHdyYXBwaW5nQXBwLmdldChcbiAgICAnLyonLFxuICAgIGhhbmRsZUVycm9ycyhhc3luYyBmdW5jdGlvbiAocmVxOiBhbnksIHJlczogYW55KSB7XG4gICAgICBpZiAocmVxLnVybC5lbmRzV2l0aCgnZmF2aWNvbi5pY28nKSkge1xuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC10eXBlJywgJ3RleHQvaHRtbCcpO1xuICAgICAgICByZXMuc2VuZCgnbm90IGZvdW5kJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlcy5zb2NrZXQub24oJ2Vycm9yJywgKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhdGFsJywgZXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHJlbmRlcihjbGllbnRNYW5pZmVzdCwgcmVxLCByZXMpO1xuICAgIH0pLFxuICApO1xuXG4gIHNlcnZlciA9IHdyYXBwaW5nQXBwXG4gICAgLmxpc3RlbihQT1JULCAoKSA9PiB7XG4gICAgICBsb2FkZXIuc3VjY2VlZChgU1NSIFJ1bm5pbmdgKTtcbiAgICB9KVxuICAgIC5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xuICAgICAgaWYgKGVycm9yLnN5c2NhbGwgIT09ICdsaXN0ZW4nKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgY29uc3QgaXNQaXBlID0gKHBvcnRPclBpcGU6IHN0cmluZyB8IG51bWJlcikgPT4gTnVtYmVyLmlzTmFOKHBvcnRPclBpcGUpO1xuICAgICAgY29uc3QgYmluZCA9IGlzUGlwZShQT1JUKSA/ICdQaXBlICcgKyBQT1JUIDogJ1BvcnQgJyArIFBPUlQ7XG4gICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHtcbiAgICAgICAgY2FzZSAnRUFDQ0VTJzpcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGJpbmQgKyAnIHJlcXVpcmVzIGVsZXZhdGVkIHByaXZpbGVnZXMnKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0VBRERSSU5VU0UnOlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYmluZCArICcgaXMgYWxyZWFkeSBpbiB1c2UnKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbmNvbnN0IGRldlNlcnZlciA9IG5ldyBXZWJwYWNrRGV2U2VydmVyKFxuICAvLyB3cml0ZSB0byBtZW1vcnkgZmlsZXN5c3RlbSBzbyB3ZSBjYW4gaW1wb3J0XG4gIHtcbiAgICAuLi53ZWJwYWNrQ29uZmlnc1swXS5kZXZTZXJ2ZXIsXG4gICAgLypjbGllbnQ6IHtcbiAgICAgIC4uLndlYnBhY2tDb25maWdzWzBdLmRldlNlcnZlcj8uY2xpZW50LFxuICAgICAgd2ViU29ja2V0VVJMOiB7XG4gICAgICAgIC4uLndlYnBhY2tDb25maWdzWzBdLmRldlNlcnZlcj8uY2xpZW50LndlYlNvY2tldFVSTCxcbiAgICAgICAgcG9ydDogODA4MCxcbiAgICAgIH0sXG4gICAgfSwqL1xuICAgIGRldk1pZGRsZXdhcmU6IHtcbiAgICAgIC4uLndlYnBhY2tDb25maWdzWzBdPy5kZXZTZXJ2ZXI/LmRldk1pZGRsZXdhcmUsXG4gICAgICBvdXRwdXRGaWxlU3lzdGVtOiB7XG4gICAgICAgIC4uLmZzLFxuICAgICAgICBqb2luOiBwYXRoLmpvaW4gYXMgYW55LFxuICAgICAgfSBhcyBhbnkgYXMgdHlwZW9mIGZzLFxuICAgIH0sXG4gIH0sXG4gIGNvbXBpbGVyLFxuKTtcbmNvbnN0IHJ1blNlcnZlciA9IGFzeW5jICgpID0+IHtcbiAgYXdhaXQgZGV2U2VydmVyLnN0YXJ0KCk7XG4gIGRldlNlcnZlci5jb21waWxlci5ob29rcy5kb25lLnRhcChcbiAgICAnQW5hbnNpIFNlcnZlcicsXG4gICAgKG11bHRpU3RhdHM6IHdlYnBhY2suTXVsdGlTdGF0cyB8IHdlYnBhY2suU3RhdHMpID0+IHtcbiAgICAgIGlmICghbXVsdGlTdGF0cykge1xuICAgICAgICBsb2FkZXIuZmFpbCgnc3RhdHMgbm90IHNlbmQnKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KC0xKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFPYmplY3QuaGFzT3duKG11bHRpU3RhdHMsICdzdGF0cycpKSByZXR1cm47XG4gICAgICBpZiAoc2VydmVyICYmIChtdWx0aVN0YXRzIGFzIHdlYnBhY2suTXVsdGlTdGF0cykuc3RhdHMubGVuZ3RoID4gMSkge1xuICAgICAgICByZW5kZXIgPSAoXG4gICAgICAgICAgaW1wb3J0RnJlc2goXG4gICAgICAgICAgICBnZXRTZXJ2ZXJCdW5kbGUoKG11bHRpU3RhdHMgYXMgd2VicGFjay5NdWx0aVN0YXRzKS5zdGF0c1sxXSksXG4gICAgICAgICAgKSBhcyBhbnlcbiAgICAgICAgKS5kZWZhdWx0O1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIXNlcnZlcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGluaXRpYWxpemVBcHAoKG11bHRpU3RhdHMgYXMgd2VicGFjay5NdWx0aVN0YXRzKS5zdGF0cyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBsb2FkZXIuZmFpbCgnRmFpbGVkIHRvIGluaXRpYWxpemUgYXBwJyk7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICk7XG59O1xuY29uc3Qgc3RvcFNlcnZlciA9IGFzeW5jICgpID0+IHtcbiAgbG9hZGVyLmluZm8oJ1N0b3BwaW5nIHNlcnZlci4uLicpO1xuICBhd2FpdCBkZXZTZXJ2ZXIuc3RvcCgpO1xuICBsb2FkZXIuaW5mbygnU2VydmVyIGNsb3NlZCcpO1xufTtcblxucHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICBsb2FkZXIud2FybignUmVjZWl2ZWQgU0lHSU5ULCBkZXZzZXJ2ZXIgc2h1dHRpbmcgZG93bicpO1xuICBzdG9wU2VydmVyKCk7XG4gIHByb2Nlc3MuZXhpdCgtMSk7XG59KTtcblxucnVuU2VydmVyKCk7XG4iXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOzs7O0FBR0E7QUFDQSxNQUFNQSxhQUFhLEdBQUdDLE9BQU8sQ0FBQ0EsT0FBTyxDQUFDQyxPQUFSLEVBQzVCO0FBQ0FDLGFBQUEsQ0FBS0MsSUFBTCxDQUFVQyxPQUFPLENBQUNDLEdBQVIsRUFBVixFQUF5QixnQkFBekIsQ0FGNEIsQ0FBRCxDQUE3Qjs7QUFLQSxNQUFNQyxVQUFVLEdBQUdGLE9BQU8sQ0FBQ0csSUFBUixDQUFhLENBQWIsQ0FBbkI7QUFDQSxNQUFNQyxJQUFJLEdBQUdKLE9BQU8sQ0FBQ0ssR0FBUixDQUFZRCxJQUFaLElBQW9CLElBQWpDO0FBQ0FKLE9BQU8sQ0FBQ0ssR0FBUixDQUFZQyxtQkFBWixHQUFtQyxvQkFBbUJGLElBQUssRUFBM0Q7QUFDQUosT0FBTyxDQUFDSyxHQUFSLENBQVlFLG1CQUFaLEdBQWtDLFVBQWxDOztBQUVBLElBQUksQ0FBQ0wsVUFBTCxFQUFpQjtFQUNmTSxPQUFPLENBQUNDLEdBQVIsQ0FBYSx1Q0FBYjtFQUNBVCxPQUFPLENBQUNVLElBQVIsQ0FBYSxDQUFDLENBQWQ7QUFDRDs7QUFFREYsT0FBTyxDQUFDQyxHQUFSLENBQ0VFLGNBQUEsQ0FBTUMsV0FBTixDQUFtQixpQkFBbkIsQ0FERixFQUVFRCxjQUFBLENBQU1FLFVBQU4sQ0FBaUJiLE9BQU8sQ0FBQ0ssR0FBUixDQUFZQyxtQkFBN0IsQ0FGRjtBQUlBLE1BQU1RLE1BQU0sR0FBRyxJQUFBQyxZQUFBLElBQU1DLEtBQU4sRUFBZixD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
269
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3ZWJwYWNrQ29uZmlnIiwicmVxdWlyZSIsInJlc29sdmUiLCJwYXRoIiwiam9pbiIsInByb2Nlc3MiLCJjd2QiLCJlbnRyeXBvaW50IiwiYXJndiIsIlBPUlQiLCJlbnYiLCJXRUJQQUNLX1BVQkxJQ19QQVRIIiwiY29uc29sZSIsImxvZyIsImV4aXQiLCJjaGFsayIsImdyZWVuQnJpZ2h0IiwiY3lhbkJyaWdodCIsIldFQlBBQ0tfUFVCTElDX0hPU1QiLCJsb2FkZXIiLCJvcmEiLCJzdGFydCIsInZvbHVtZSIsIlZvbHVtZSIsImZzIiwiY3JlYXRlRnNGcm9tVm9sdW1lIiwidWZzIiwidXNlIiwiZGlza0ZzIiwicGF0Y2hSZXF1aXJlIiwicmVhZEZpbGUiLCJwcm9taXNpZnkiLCJzZXJ2ZXIiLCJob3RFbnRyeSIsImVudHJ5UGF0aCIsImdlbmVyYXRlZEVudHJ5cG9pbnQiLCJ0bXAiLCJmaWxlU3luYyIsInBvc3RmaXgiLCJ3cml0ZVN5bmMiLCJmZCIsIndlYnBhY2tDb25maWdzIiwibmFtZSIsIm1vZGUiLCJyZXBsYWNlIiwidGFyZ2V0IiwicGx1Z2lucyIsInB1c2giLCJ3ZWJwYWNrIiwib3B0aW1pemUiLCJMaW1pdENodW5rQ291bnRQbHVnaW4iLCJtYXhDaHVua3MiLCJjb21waWxlciIsInNvdXJjZU1hcFN1cHBvcnQiLCJpbnN0YWxsIiwiaG9va1JlcXVpcmUiLCJnZXRTZXJ2ZXJCdW5kbGUiLCJzZXJ2ZXJTdGF0cyIsInNlcnZlckpzb24iLCJ0b0pzb24iLCJhc3NldHMiLCJvdXRwdXRQYXRoIiwiaGFuZGxlRXJyb3JzIiwiZm4iLCJyZXEiLCJyZXMiLCJuZXh0IiwieCIsInJlbmRlciIsImluaXRpYWxpemVBcHAiLCJzdGF0cyIsImNsaWVudFN0YXRzIiwiY29tcGlsYXRpb24iLCJlcnJvcnMiLCJsZW5ndGgiLCJmYWlsIiwiaW5mbyIsIndyYXBwaW5nQXBwIiwiZXhwcmVzcyIsImNvbXByZXNzIiwiY2xpZW50TWFuaWZlc3QiLCJhc3NldFJvdXRlIiwiZmlsZW5hbWUiLCJ1cmwiLCJzdWJzdHJpbmciLCJzcGxpdCIsImFzc2V0UGF0aCIsImZpbGVDb250ZW50IiwidG9TdHJpbmciLCJjb250ZW50VHlwZSIsInNlbmQiLCJlIiwic3RhdHVzIiwiZ2V0IiwiZGVmYXVsdCIsImVuZHNXaXRoIiwic3RhdHVzQ29kZSIsInNldEhlYWRlciIsInNvY2tldCIsIm9uIiwiZXJyb3IiLCJsaXN0ZW4iLCJzdWNjZWVkIiwic3lzY2FsbCIsImlzUGlwZSIsInBvcnRPclBpcGUiLCJOdW1iZXIiLCJpc05hTiIsImJpbmQiLCJjb2RlIiwiZGV2U2VydmVyIiwiV2VicGFja0RldlNlcnZlciIsImRldk1pZGRsZXdhcmUiLCJvdXRwdXRGaWxlU3lzdGVtIiwicnVuU2VydmVyIiwiaG9va3MiLCJkb25lIiwidGFwIiwibXVsdGlTdGF0cyIsIk9iamVjdCIsImhhc093biIsImltcG9ydEZyZXNoIiwic3RvcFNlcnZlciIsInN0b3AiLCJ3YXJuIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvc3RhcnREZXZzZXJ2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcbmltcG9ydCBkaXNrRnMgZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgd2VicGFjaywgeyBNdWx0aUNvbXBpbGVyIH0gZnJvbSAnd2VicGFjayc7XG5pbXBvcnQgeyBjcmVhdGVGc0Zyb21Wb2x1bWUsIFZvbHVtZSB9IGZyb20gJ21lbWZzJztcbmltcG9ydCB7IFNlcnZlciwgSW5jb21pbmdNZXNzYWdlLCBTZXJ2ZXJSZXNwb25zZSB9IGZyb20gJ2h0dHAnO1xuaW1wb3J0IGV4cHJlc3MsIHsgTmV4dEZ1bmN0aW9uIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgb3JhIGZyb20gJ29yYSc7XG5pbXBvcnQgeyBwYXRjaFJlcXVpcmUgfSBmcm9tICdmcy1tb25rZXknO1xuaW1wb3J0IHRtcCBmcm9tICd0bXAnO1xuaW1wb3J0IHNvdXJjZU1hcFN1cHBvcnQgZnJvbSAnc291cmNlLW1hcC1zdXBwb3J0JztcbmltcG9ydCB7IHVmcyB9IGZyb20gJ3VuaW9uZnMnO1xuaW1wb3J0IGNvbXByZXNzIGZyb20gJ2NvbXByZXNzaW9uJztcbmltcG9ydCBXZWJwYWNrRGV2U2VydmVyIGZyb20gJ3dlYnBhY2stZGV2LXNlcnZlcic7XG5pbXBvcnQgaW1wb3J0RnJlc2ggZnJvbSAnaW1wb3J0LWZyZXNoJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmltcG9ydCAnY3Jvc3MtZmV0Y2gvcG9seWZpbGwnO1xuaW1wb3J0IHsgUmVuZGVyIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG5jb25zdCB3ZWJwYWNrQ29uZmlnID0gcmVxdWlyZShyZXF1aXJlLnJlc29sdmUoXG4gIC8vIFRPRE86IHVzZSBub3JtYWwgcmVzb2x1dGlvbiBhbGdvcml0aG0gdG8gZmluZCB3ZWJwYWNrIGZpbGVcbiAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICd3ZWJwYWNrLmNvbmZpZycpLFxuKSk7XG5cbmNvbnN0IGVudHJ5cG9pbnQgPSBwcm9jZXNzLmFyZ3ZbMl07XG5jb25zdCBQT1JUID0gcHJvY2Vzcy5lbnYuUE9SVCB8fCAzMDAwO1xuLy9wcm9jZXNzLmVudi5XRUJQQUNLX1BVQkxJQ19IT1NUID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtQT1JUfWA7IHRoaXMgYnJlYWtzIGNvbXBhdGliaWxpdHkgd2l0aCBzdGFja2JsaXR6XG5wcm9jZXNzLmVudi5XRUJQQUNLX1BVQkxJQ19QQVRIID0gJy9hc3NldHMvJztcblxuaWYgKCFlbnRyeXBvaW50KSB7XG4gIGNvbnNvbGUubG9nKGBVc2FnZTogc3RhcnQtYW5hbnNpIDxlbnRyeXBvaW50LWZpbGU+YCk7XG4gIHByb2Nlc3MuZXhpdCgtMSk7XG59XG5cbmNvbnNvbGUubG9nKFxuICBjaGFsay5ncmVlbkJyaWdodChgU3RhcnRpbmcgU1NSIGF0OmApLFxuICBjaGFsay5jeWFuQnJpZ2h0KHByb2Nlc3MuZW52LldFQlBBQ0tfUFVCTElDX0hPU1QgfHwgYGh0dHA6Ly9sb2NhbGhvc3Q6JHtQT1JUfWApLFxuKTtcbmNvbnN0IGxvYWRlciA9IG9yYSgpLnN0YXJ0KCk7XG5cbi8vIFNldCB1cCBpbiBtZW1vcnkgZmlsZXN5c3RlbVxuY29uc3Qgdm9sdW1lID0gbmV3IFZvbHVtZSgpO1xuY29uc3QgZnMgPSBjcmVhdGVGc0Zyb21Wb2x1bWUodm9sdW1lKTtcbnVmcy51c2UoZGlza0ZzKS51c2UoZnMgYXMgYW55KTtcblxucGF0Y2hSZXF1aXJlKHVmcyk7XG5jb25zdCByZWFkRmlsZSA9IHByb21pc2lmeSh1ZnMucmVhZEZpbGUpO1xubGV0IHNlcnZlcjogU2VydmVyIHwgdW5kZWZpbmVkO1xuXG4vLyBHZW5lcmF0ZSBhIHRlbXBvcmFyeSBmaWxlIHNvIHdlIGNhbiBob3QgcmVsb2FkIGZyb20gdGhlIHJvb3Qgb2YgdGhlIGFwcGxpY2F0aW9uXG5mdW5jdGlvbiBob3RFbnRyeShlbnRyeVBhdGg6IHN0cmluZykge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgLy8gQHRzLWlnbm9yZSBmb3Igc29tZSByZWFzb24gaXQncyBub3QgcGlja2luZyB1cCB0aGF0IG90aGVyIG9wdGlvbnMgYXJlIG9wdGlvbmFsXG4gIGNvbnN0IGdlbmVyYXRlZEVudHJ5cG9pbnQgPSB0bXAuZmlsZVN5bmMoeyBwb3N0Zml4OiAnLmpzJyB9KTtcbiAgZGlza0ZzLndyaXRlU3luYyhcbiAgICBnZW5lcmF0ZWRFbnRyeXBvaW50LmZkLFxuICAgIGBcbmltcG9ydCBlbnRyeSBmcm9tIFwiJHtwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgZW50cnlQYXRoKX1cIjtcblxuaWYgKG1vZHVsZS5ob3QpIHtcbiAgbW9kdWxlLmhvdC5hY2NlcHQoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZW50cnk7XG4gIGAsXG4gICk7XG4gIHJldHVybiBnZW5lcmF0ZWRFbnRyeXBvaW50O1xufVxuXG5jb25zdCB3ZWJwYWNrQ29uZmlncyA9IFtcbiAgd2VicGFja0NvbmZpZyhcbiAgICB7XG4gICAgICBlbnRyeXBvaW50OiBob3RFbnRyeShlbnRyeXBvaW50KS5uYW1lLFxuICAgICAgbmFtZTogJ2NsaWVudCcsXG4gICAgfSxcbiAgICB7IG1vZGU6ICdkZXZlbG9wbWVudCcgfSxcbiAgKSxcbiAgd2VicGFja0NvbmZpZyhcbiAgICB7XG4gICAgICBlbnRyeXBvaW50OiBlbnRyeXBvaW50LnJlcGxhY2UoJy50c3gnLCAnLnNlcnZlci50c3gnKSxcbiAgICAgIG5hbWU6ICdzZXJ2ZXInLFxuICAgIH0sXG4gICAgeyBtb2RlOiAnZGV2ZWxvcG1lbnQnLCB0YXJnZXQ6ICdub2RlJyB9LFxuICApLFxuXSBhcyBjb25zdDtcbi8vIG9ubHkgaGF2ZSBvbmUgb3V0cHV0IGZvciBzZXJ2ZXIgc28gd2UgY2FuIGF2b2lkIGNhY2hlZCBtb2R1bGVzXG53ZWJwYWNrQ29uZmlnc1sxXS5wbHVnaW5zLnB1c2goXG4gIG5ldyB3ZWJwYWNrLm9wdGltaXplLkxpbWl0Q2h1bmtDb3VudFBsdWdpbih7IG1heENodW5rczogMSB9KSxcbik7XG4vLyBpbml0aWFsaXplIHRoZSB3ZWJwYWNrIGNvbXBpbGVyXG5jb25zdCBjb21waWxlcjogTXVsdGlDb21waWxlciA9IHdlYnBhY2sod2VicGFja0NvbmZpZ3MpO1xuXG5zb3VyY2VNYXBTdXBwb3J0Lmluc3RhbGwoeyBob29rUmVxdWlyZTogdHJ1ZSB9KTtcblxuZnVuY3Rpb24gZ2V0U2VydmVyQnVuZGxlKHNlcnZlclN0YXRzOiB3ZWJwYWNrLlN0YXRzKSB7XG4gIGNvbnN0IHNlcnZlckpzb24gPSBzZXJ2ZXJTdGF0cy50b0pzb24oeyBhc3NldHM6IHRydWUgfSk7XG4gIHJldHVybiBwYXRoLmpvaW4oc2VydmVySnNvbi5vdXRwdXRQYXRoID8/ICcnLCAnbWFpbi5qcycpO1xufVxuZnVuY3Rpb24gaGFuZGxlRXJyb3JzPFxuICBGIGV4dGVuZHMgKFxuICAgIHJlcTogUmVxdWVzdCB8IEluY29taW5nTWVzc2FnZSxcbiAgICByZXM6IFJlc3BvbnNlIHwgU2VydmVyUmVzcG9uc2UsXG4gICkgPT4gUHJvbWlzZTx2b2lkPixcbj4oZm46IEYpIHtcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIChcbiAgICByZXE6IFJlcXVlc3QgfCBJbmNvbWluZ01lc3NhZ2UsXG4gICAgcmVzOiBSZXNwb25zZSB8IFNlcnZlclJlc3BvbnNlLFxuICAgIG5leHQ6IE5leHRGdW5jdGlvbixcbiAgKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmbihyZXEsIHJlcyk7XG4gICAgfSBjYXRjaCAoeCkge1xuICAgICAgbmV4dCh4KTtcbiAgICB9XG4gIH07XG59XG5sZXQgcmVuZGVyOiBSZW5kZXI7XG4vLyBTdGFydCB0aGUgZXhwcmVzcyBzZXJ2ZXIgYWZ0ZXIgdGhlIGZpcnN0IGNvbXBpbGF0aW9uXG5mdW5jdGlvbiBpbml0aWFsaXplQXBwKHN0YXRzOiB3ZWJwYWNrLlN0YXRzW10pIHtcbiAgY29uc3QgW2NsaWVudFN0YXRzLCBzZXJ2ZXJTdGF0c10gPSBzdGF0cztcbiAgaWYgKFxuICAgIGNsaWVudFN0YXRzPy5jb21waWxhdGlvbj8uZXJyb3JzPy5sZW5ndGggfHxcbiAgICBzZXJ2ZXJTdGF0cz8uY29tcGlsYXRpb24/LmVycm9ycz8ubGVuZ3RoXG4gICkge1xuICAgIGxvYWRlci5mYWlsKCdFcnJvcnMgZm9yIGNsaWVudCBidWlsZDogJyArIGNsaWVudFN0YXRzLmNvbXBpbGF0aW9uLmVycm9ycyk7XG4gICAgbG9hZGVyLmZhaWwoJ0Vycm9ycyBmb3Igc2VydmVyIGJ1aWxkOiAnICsgc2VydmVyU3RhdHMuY29tcGlsYXRpb24uZXJyb3JzKTtcbiAgICAvLyBUT0RPOiBoYW5kbGUgbW9yZSBncmFjZWZ1bGx5XG4gICAgcHJvY2Vzcy5leGl0KC0xKTtcbiAgfSBlbHNlIHtcbiAgICBsb2FkZXIuaW5mbygnTGF1bmNoaW5nIHNlcnZlcicpO1xuICB9XG5cbiAgY29uc3Qgd3JhcHBpbmdBcHAgPSBleHByZXNzKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAvL0B0cy1pZ25vcmVcbiAgd3JhcHBpbmdBcHAudXNlKGNvbXByZXNzKCkpO1xuXG4gIC8vIEFTU0VUU1xuICBjb25zdCBjbGllbnRNYW5pZmVzdCA9IGNsaWVudFN0YXRzLnRvSnNvbigpO1xuICBjb25zdCBhc3NldFJvdXRlID0gYXN5bmMgKHJlcTogUmVxdWVzdCB8IEluY29taW5nTWVzc2FnZSwgcmVzOiBhbnkpID0+IHtcbiAgICBjb25zdCBmaWxlbmFtZSA9XG4gICAgICByZXEudXJsXG4gICAgICAgID8uc3Vic3RyaW5nKChwcm9jZXNzLmVudi5XRUJQQUNLX1BVQkxJQ19QQVRIIGFzIHN0cmluZykubGVuZ3RoKVxuICAgICAgICAuc3BsaXQoJz8nKVswXSA/PyAnJztcbiAgICBjb25zdCBhc3NldFBhdGggPSBwYXRoLmpvaW4oY2xpZW50TWFuaWZlc3Qub3V0cHV0UGF0aCA/PyAnJywgZmlsZW5hbWUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbGVDb250ZW50ID0gKGF3YWl0IHJlYWRGaWxlKGFzc2V0UGF0aCkpLnRvU3RyaW5nKCk7XG4gICAgICByZXMuY29udGVudFR5cGUoZmlsZW5hbWUpO1xuICAgICAgcmVzLnNlbmQoZmlsZUNvbnRlbnQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICAgIHJlcy5zZW5kKGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfTtcbiAgd3JhcHBpbmdBcHAuZ2V0KGAke3Byb2Nlc3MuZW52LldFQlBBQ0tfUFVCTElDX1BBVEh9KmAsIGFzc2V0Um91dGUpO1xuXG4gIC8vIFNFUlZFUiBTSURFIFJFTkRFUklOR1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICByZW5kZXIgPSByZXF1aXJlKGdldFNlcnZlckJ1bmRsZShzZXJ2ZXJTdGF0cykpLmRlZmF1bHQ7XG4gIHdyYXBwaW5nQXBwLmdldChcbiAgICAnLyonLFxuICAgIGhhbmRsZUVycm9ycyhhc3luYyBmdW5jdGlvbiAocmVxOiBhbnksIHJlczogYW55KSB7XG4gICAgICBpZiAocmVxLnVybC5lbmRzV2l0aCgnZmF2aWNvbi5pY28nKSkge1xuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC10eXBlJywgJ3RleHQvaHRtbCcpO1xuICAgICAgICByZXMuc2VuZCgnbm90IGZvdW5kJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlcy5zb2NrZXQub24oJ2Vycm9yJywgKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhdGFsJywgZXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHJlbmRlcihjbGllbnRNYW5pZmVzdCwgcmVxLCByZXMpO1xuICAgIH0pLFxuICApO1xuXG4gIHNlcnZlciA9IHdyYXBwaW5nQXBwXG4gICAgLmxpc3RlbihQT1JULCAoKSA9PiB7XG4gICAgICBsb2FkZXIuc3VjY2VlZChgU1NSIFJ1bm5pbmdgKTtcbiAgICB9KVxuICAgIC5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xuICAgICAgaWYgKGVycm9yLnN5c2NhbGwgIT09ICdsaXN0ZW4nKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgY29uc3QgaXNQaXBlID0gKHBvcnRPclBpcGU6IHN0cmluZyB8IG51bWJlcikgPT4gTnVtYmVyLmlzTmFOKHBvcnRPclBpcGUpO1xuICAgICAgY29uc3QgYmluZCA9IGlzUGlwZShQT1JUKSA/ICdQaXBlICcgKyBQT1JUIDogJ1BvcnQgJyArIFBPUlQ7XG4gICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHtcbiAgICAgICAgY2FzZSAnRUFDQ0VTJzpcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGJpbmQgKyAnIHJlcXVpcmVzIGVsZXZhdGVkIHByaXZpbGVnZXMnKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0VBRERSSU5VU0UnOlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYmluZCArICcgaXMgYWxyZWFkeSBpbiB1c2UnKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbmNvbnN0IGRldlNlcnZlciA9IG5ldyBXZWJwYWNrRGV2U2VydmVyKFxuICAvLyB3cml0ZSB0byBtZW1vcnkgZmlsZXN5c3RlbSBzbyB3ZSBjYW4gaW1wb3J0XG4gIHtcbiAgICAuLi53ZWJwYWNrQ29uZmlnc1swXS5kZXZTZXJ2ZXIsXG4gICAgLypjbGllbnQ6IHtcbiAgICAgIC4uLndlYnBhY2tDb25maWdzWzBdLmRldlNlcnZlcj8uY2xpZW50LFxuICAgICAgd2ViU29ja2V0VVJMOiB7XG4gICAgICAgIC4uLndlYnBhY2tDb25maWdzWzBdLmRldlNlcnZlcj8uY2xpZW50LndlYlNvY2tldFVSTCxcbiAgICAgICAgcG9ydDogODA4MCxcbiAgICAgIH0sXG4gICAgfSwqL1xuICAgIGRldk1pZGRsZXdhcmU6IHtcbiAgICAgIC4uLndlYnBhY2tDb25maWdzWzBdPy5kZXZTZXJ2ZXI/LmRldk1pZGRsZXdhcmUsXG4gICAgICBvdXRwdXRGaWxlU3lzdGVtOiB7XG4gICAgICAgIC4uLmZzLFxuICAgICAgICBqb2luOiBwYXRoLmpvaW4gYXMgYW55LFxuICAgICAgfSBhcyBhbnkgYXMgdHlwZW9mIGZzLFxuICAgIH0sXG4gIH0sXG4gIGNvbXBpbGVyLFxuKTtcbmNvbnN0IHJ1blNlcnZlciA9IGFzeW5jICgpID0+IHtcbiAgYXdhaXQgZGV2U2VydmVyLnN0YXJ0KCk7XG4gIGRldlNlcnZlci5jb21waWxlci5ob29rcy5kb25lLnRhcChcbiAgICAnQW5hbnNpIFNlcnZlcicsXG4gICAgKG11bHRpU3RhdHM6IHdlYnBhY2suTXVsdGlTdGF0cyB8IHdlYnBhY2suU3RhdHMpID0+IHtcbiAgICAgIGlmICghbXVsdGlTdGF0cykge1xuICAgICAgICBsb2FkZXIuZmFpbCgnc3RhdHMgbm90IHNlbmQnKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KC0xKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFPYmplY3QuaGFzT3duKG11bHRpU3RhdHMsICdzdGF0cycpKSByZXR1cm47XG4gICAgICBpZiAoc2VydmVyICYmIChtdWx0aVN0YXRzIGFzIHdlYnBhY2suTXVsdGlTdGF0cykuc3RhdHMubGVuZ3RoID4gMSkge1xuICAgICAgICByZW5kZXIgPSAoXG4gICAgICAgICAgaW1wb3J0RnJlc2goXG4gICAgICAgICAgICBnZXRTZXJ2ZXJCdW5kbGUoKG11bHRpU3RhdHMgYXMgd2VicGFjay5NdWx0aVN0YXRzKS5zdGF0c1sxXSksXG4gICAgICAgICAgKSBhcyBhbnlcbiAgICAgICAgKS5kZWZhdWx0O1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIXNlcnZlcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGluaXRpYWxpemVBcHAoKG11bHRpU3RhdHMgYXMgd2VicGFjay5NdWx0aVN0YXRzKS5zdGF0cyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBsb2FkZXIuZmFpbCgnRmFpbGVkIHRvIGluaXRpYWxpemUgYXBwJyk7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICk7XG59O1xuY29uc3Qgc3RvcFNlcnZlciA9IGFzeW5jICgpID0+IHtcbiAgbG9hZGVyLmluZm8oJ1N0b3BwaW5nIHNlcnZlci4uLicpO1xuICBhd2FpdCBkZXZTZXJ2ZXIuc3RvcCgpO1xuICBsb2FkZXIuaW5mbygnU2VydmVyIGNsb3NlZCcpO1xufTtcblxucHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICBsb2FkZXIud2FybignUmVjZWl2ZWQgU0lHSU5ULCBkZXZzZXJ2ZXIgc2h1dHRpbmcgZG93bicpO1xuICBzdG9wU2VydmVyKCk7XG4gIHByb2Nlc3MuZXhpdCgtMSk7XG59KTtcblxucnVuU2VydmVyKCk7XG4iXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOzs7O0FBR0E7QUFDQSxNQUFNQSxhQUFhLEdBQUdDLE9BQU8sQ0FBQ0EsT0FBTyxDQUFDQyxPQUFSLEVBQzVCO0FBQ0FDLGFBQUEsQ0FBS0MsSUFBTCxDQUFVQyxPQUFPLENBQUNDLEdBQVIsRUFBVixFQUF5QixnQkFBekIsQ0FGNEIsQ0FBRCxDQUE3Qjs7QUFLQSxNQUFNQyxVQUFVLEdBQUdGLE9BQU8sQ0FBQ0csSUFBUixDQUFhLENBQWIsQ0FBbkI7QUFDQSxNQUFNQyxJQUFJLEdBQUdKLE9BQU8sQ0FBQ0ssR0FBUixDQUFZRCxJQUFaLElBQW9CLElBQWpDLEMsQ0FDQTs7QUFDQUosT0FBTyxDQUFDSyxHQUFSLENBQVlDLG1CQUFaLEdBQWtDLFVBQWxDOztBQUVBLElBQUksQ0FBQ0osVUFBTCxFQUFpQjtFQUNmSyxPQUFPLENBQUNDLEdBQVIsQ0FBYSx1Q0FBYjtFQUNBUixPQUFPLENBQUNTLElBQVIsQ0FBYSxDQUFDLENBQWQ7QUFDRDs7QUFFREYsT0FBTyxDQUFDQyxHQUFSLENBQ0VFLGNBQUEsQ0FBTUMsV0FBTixDQUFtQixrQkFBbkIsQ0FERixFQUVFRCxjQUFBLENBQU1FLFVBQU4sQ0FBaUJaLE9BQU8sQ0FBQ0ssR0FBUixDQUFZUSxtQkFBWixJQUFvQyxvQkFBbUJULElBQUssRUFBN0UsQ0FGRjtB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
@@ -13,13 +13,16 @@ function Document({
13
13
  assets,
14
14
  head,
15
15
  children,
16
- title
16
+ title,
17
+ rootId
17
18
  }) {
18
19
  return /*#__PURE__*/(0, _jsx2.default)("html", {}, void 0, /*#__PURE__*/(0, _jsx2.default)("head", {}, void 0, head, assets.map((asset, i) => /*#__PURE__*/_react.default.createElement("link", {
19
20
  key: i,
20
21
  rel: "preload",
21
22
  ...asset
22
- })), /*#__PURE__*/(0, _jsx2.default)("title", {}, void 0, title)), /*#__PURE__*/(0, _jsx2.default)("body", {}, void 0, children, /*#__PURE__*/(0, _jsx2.default)("script", {
23
+ })), /*#__PURE__*/(0, _jsx2.default)("title", {}, void 0, title)), /*#__PURE__*/(0, _jsx2.default)("body", {}, void 0, /*#__PURE__*/(0, _jsx2.default)("div", {
24
+ id: rootId
25
+ }, void 0, children), /*#__PURE__*/(0, _jsx2.default)("script", {
23
26
  dangerouslySetInnerHTML: {
24
27
  __html: `assetManifest = ${JSON.stringify(assets)};`
25
28
  }
@@ -42,6 +45,7 @@ Document.defaultProps = {
42
45
  }), /*#__PURE__*/(0, _jsx2.default)("link", {
43
46
  rel: "shortcut icon",
44
47
  href: "/assets/favicon.ico"
45
- }))
48
+ })),
49
+ rootId: 'anansi-root'
46
50
  };
47
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEb2N1bWVudCIsImFzc2V0cyIsImhlYWQiLCJjaGlsZHJlbiIsInRpdGxlIiwibWFwIiwiYXNzZXQiLCJpIiwiX19odG1sIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbHRlciIsImhyZWYiLCJlbmRzV2l0aCIsImRlZmF1bHRQcm9wcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvRG9jdW1lbnRDb21wb25lbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbInR5cGUgUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG4gIGFzc2V0czogeyBocmVmOiBzdHJpbmc7IGFzPzogc3RyaW5nOyByZWw/OiBzdHJpbmcgfVtdO1xuICBoZWFkOiBSZWFjdC5SZWFjdE5vZGU7XG4gIHRpdGxlOiBzdHJpbmc7XG59O1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEb2N1bWVudCh7IGFzc2V0cywgaGVhZCwgY2hpbGRyZW4sIHRpdGxlIH06IFByb3BzKSB7XG4gIHJldHVybiAoXG4gICAgPGh0bWw+XG4gICAgICA8aGVhZD5cbiAgICAgICAge2hlYWR9XG4gICAgICAgIHthc3NldHMubWFwKChhc3NldCwgaSkgPT4gKFxuICAgICAgICAgIDxsaW5rIGtleT17aX0gcmVsPVwicHJlbG9hZFwiIHsuLi5hc3NldH0gLz5cbiAgICAgICAgKSl9XG4gICAgICAgIDx0aXRsZT57dGl0bGV9PC90aXRsZT5cbiAgICAgIDwvaGVhZD5cbiAgICAgIDxib2R5PlxuICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIHsvKiB0aGlzIGVuc3VyZXMgdGhlIGNsaWVudCBjYW4gaHlkcmF0ZSB0aGUgYXNzZXRzIHByb3AgKi99XG4gICAgICAgIDxzY3JpcHRcbiAgICAgICAgICBkYW5nZXJvdXNseVNldElubmVySFRNTD17e1xuICAgICAgICAgICAgX19odG1sOiBgYXNzZXRNYW5pZmVzdCA9ICR7SlNPTi5zdHJpbmdpZnkoYXNzZXRzKX07YCxcbiAgICAgICAgICB9fVxuICAgICAgICAvPlxuICAgICAgICB7YXNzZXRzXG4gICAgICAgICAgLmZpbHRlcigoeyBocmVmIH0pID0+IGhyZWYuZW5kc1dpdGgoJy5qcycpKVxuICAgICAgICAgIC5tYXAoKHsgaHJlZiB9LCBpKSA9PiAoXG4gICAgICAgICAgICA8c2NyaXB0IGtleT17aX0gc3JjPXtocmVmfSBhc3luYyAvPlxuICAgICAgICAgICkpfVxuICAgICAgPC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKTtcbn1cbkRvY3VtZW50LmRlZmF1bHRQcm9wcyA9IHtcbiAgaGVhZDogKFxuICAgIDw+XG4gICAgICA8bWV0YSBjaGFyU2V0PVwidXRmLThcIiAvPlxuICAgICAgPG1ldGEgbmFtZT1cInZpZXdwb3J0XCIgY29udGVudD1cIndpZHRoPWRldmljZS13aWR0aCwgaW5pdGlhbC1zY2FsZT0xXCIgLz5cbiAgICAgIDxsaW5rIHJlbD1cInNob3J0Y3V0IGljb25cIiBocmVmPVwiL2Fzc2V0cy9mYXZpY29uLmljb1wiIC8+XG4gICAgPC8+XG4gICksXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQU9lLFNBQVNBLFFBQVQsQ0FBa0I7RUFBRUMsTUFBRjtFQUFVQyxJQUFWO0VBQWdCQyxRQUFoQjtFQUEwQkM7QUFBMUIsQ0FBbEIsRUFBNEQ7RUFDekUsb0JBQ0Usb0RBQ0UsdUNBQ0dGLElBREgsRUFFR0QsTUFBTSxDQUFDSSxHQUFQLENBQVcsQ0FBQ0MsS0FBRCxFQUFRQyxDQUFSLGtCQUNWO0lBQU0sR0FBRyxFQUFFQSxDQUFYO0lBQWMsR0FBRyxFQUFDLFNBQWxCO0lBQUEsR0FBZ0NEO0VBQWhDLEVBREQsQ0FGSCxlQUtFLHdDQUFRRixLQUFSLENBTEYsQ0FERixlQVFFLHVDQUNHRCxRQURILGVBR0U7SUFDRSx1QkFBdUIsRUFBRTtNQUN2QkssTUFBTSxFQUFHLG1CQUFrQkMsSUFBSSxDQUFDQyxTQUFMLENBQWVULE1BQWYsQ0FBdUI7SUFEM0I7RUFEM0IsRUFIRixFQVFHQSxNQUFNLENBQ0pVLE1BREYsQ0FDUyxDQUFDO0lBQUVDO0VBQUYsQ0FBRCxLQUFjQSxJQUFJLENBQUNDLFFBQUwsQ0FBYyxLQUFkLENBRHZCLEVBRUVSLEdBRkYsQ0FFTSxDQUFDO0lBQUVPO0VBQUYsQ0FBRCxFQUFXTCxDQUFYLGtCQUNIO0lBQWdCLEdBQUcsRUFBRUssSUFBckI7SUFBMkIsS0FBSztFQUFoQyxHQUFhTCxDQUFiLENBSEgsQ0FSSCxDQVJGLENBREY7QUF5QkQ7O0FBQ0RQLFFBQVEsQ0FBQ2MsWUFBVCxHQUF3QjtFQUN0QlosSUFBSSxlQUNGLHlFQUNFO0lBQU0sT0FBTyxFQUFDO0VBQWQsRUFERixlQUVFO0lBQU0sSUFBSSxFQUFDLFVBQVg7SUFBc0IsT0FBTyxFQUFDO0VBQTlCLEVBRkYsZUFHRTtJQUFNLEdBQUcsRUFBQyxlQUFWO0lBQTBCLElBQUksRUFBQztFQUEvQixFQUhGO0FBRm9CLENBQXhCIn0=
51
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEb2N1bWVudCIsImFzc2V0cyIsImhlYWQiLCJjaGlsZHJlbiIsInRpdGxlIiwicm9vdElkIiwibWFwIiwiYXNzZXQiLCJpIiwiX19odG1sIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbHRlciIsImhyZWYiLCJlbmRzV2l0aCIsImRlZmF1bHRQcm9wcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvRG9jdW1lbnRDb21wb25lbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbInR5cGUgUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG4gIGFzc2V0czogeyBocmVmOiBzdHJpbmc7IGFzPzogc3RyaW5nOyByZWw/OiBzdHJpbmcgfVtdO1xuICBoZWFkOiBSZWFjdC5SZWFjdE5vZGU7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHJvb3RJZDogc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRG9jdW1lbnQoe1xuICBhc3NldHMsXG4gIGhlYWQsXG4gIGNoaWxkcmVuLFxuICB0aXRsZSxcbiAgcm9vdElkLFxufTogUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8aHRtbD5cbiAgICAgIDxoZWFkPlxuICAgICAgICB7aGVhZH1cbiAgICAgICAge2Fzc2V0cy5tYXAoKGFzc2V0LCBpKSA9PiAoXG4gICAgICAgICAgPGxpbmsga2V5PXtpfSByZWw9XCJwcmVsb2FkXCIgey4uLmFzc2V0fSAvPlxuICAgICAgICApKX1cbiAgICAgICAgPHRpdGxlPnt0aXRsZX08L3RpdGxlPlxuICAgICAgPC9oZWFkPlxuICAgICAgPGJvZHk+XG4gICAgICAgIDxkaXYgaWQ9e3Jvb3RJZH0+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgICB7LyogdGhpcyBlbnN1cmVzIHRoZSBjbGllbnQgY2FuIGh5ZHJhdGUgdGhlIGFzc2V0cyBwcm9wICovfVxuICAgICAgICA8c2NyaXB0XG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogYGFzc2V0TWFuaWZlc3QgPSAke0pTT04uc3RyaW5naWZ5KGFzc2V0cyl9O2AsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAge2Fzc2V0c1xuICAgICAgICAgIC5maWx0ZXIoKHsgaHJlZiB9KSA9PiBocmVmLmVuZHNXaXRoKCcuanMnKSlcbiAgICAgICAgICAubWFwKCh7IGhyZWYgfSwgaSkgPT4gKFxuICAgICAgICAgICAgPHNjcmlwdCBrZXk9e2l9IHNyYz17aHJlZn0gYXN5bmMgLz5cbiAgICAgICAgICApKX1cbiAgICAgIDwvYm9keT5cbiAgICA8L2h0bWw+XG4gICk7XG59XG5Eb2N1bWVudC5kZWZhdWx0UHJvcHMgPSB7XG4gIGhlYWQ6IChcbiAgICA8PlxuICAgICAgPG1ldGEgY2hhclNldD1cInV0Zi04XCIgLz5cbiAgICAgIDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MVwiIC8+XG4gICAgICA8bGluayByZWw9XCJzaG9ydGN1dCBpY29uXCIgaHJlZj1cIi9hc3NldHMvZmF2aWNvbi5pY29cIiAvPlxuICAgIDwvPlxuICApLFxuICByb290SWQ6ICdhbmFuc2ktcm9vdCcsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQVFlLFNBQVNBLFFBQVQsQ0FBa0I7RUFDL0JDLE1BRCtCO0VBRS9CQyxJQUYrQjtFQUcvQkMsUUFIK0I7RUFJL0JDLEtBSitCO0VBSy9CQztBQUwrQixDQUFsQixFQU1MO0VBQ1Isb0JBQ0Usb0RBQ0UsdUNBQ0dILElBREgsRUFFR0QsTUFBTSxDQUFDSyxHQUFQLENBQVcsQ0FBQ0MsS0FBRCxFQUFRQyxDQUFSLGtCQUNWO0lBQU0sR0FBRyxFQUFFQSxDQUFYO0lBQWMsR0FBRyxFQUFDLFNBQWxCO0lBQUEsR0FBZ0NEO0VBQWhDLEVBREQsQ0FGSCxlQUtFLHdDQUFRSCxLQUFSLENBTEYsQ0FERixlQVFFLG9EQUNFO0lBQUssRUFBRSxFQUFFQztFQUFULFdBQWtCRixRQUFsQixDQURGLGVBR0U7SUFDRSx1QkFBdUIsRUFBRTtNQUN2Qk0sTUFBTSxFQUFHLG1CQUFrQkMsSUFBSSxDQUFDQyxTQUFMLENBQWVWLE1BQWYsQ0FBdUI7SUFEM0I7RUFEM0IsRUFIRixFQVFHQSxNQUFNLENBQ0pXLE1BREYsQ0FDUyxDQUFDO0lBQUVDO0VBQUYsQ0FBRCxLQUFjQSxJQUFJLENBQUNDLFFBQUwsQ0FBYyxLQUFkLENBRHZCLEVBRUVSLEdBRkYsQ0FFTSxDQUFDO0lBQUVPO0VBQUYsQ0FBRCxFQUFXTCxDQUFYLGtCQUNIO0lBQWdCLEdBQUcsRUFBRUssSUFBckI7SUFBMkIsS0FBSztFQUFoQyxHQUFhTCxDQUFiLENBSEgsQ0FSSCxDQVJGLENBREY7QUF5QkQ7O0FBQ0RSLFFBQVEsQ0FBQ2UsWUFBVCxHQUF3QjtFQUN0QmIsSUFBSSxlQUNGLHlFQUNFO0lBQU0sT0FBTyxFQUFDO0VBQWQsRUFERixlQUVFO0lBQU0sSUFBSSxFQUFDLFVBQVg7SUFBc0IsT0FBTyxFQUFDO0VBQTlCLEVBRkYsZUFHRTtJQUFNLEdBQUcsRUFBQyxlQUFWO0lBQTBCLElBQUksRUFBQztFQUEvQixFQUhGLENBRm9CO0VBUXRCRyxNQUFNLEVBQUU7QUFSYyxDQUF4QiJ9
@@ -1,27 +1,14 @@
1
1
  "use strict";
2
2
 
3
- var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
-
5
3
  exports.__esModule = true;
6
4
  exports.default = documentSpout;
7
5
 
8
- var _react = _interopRequireDefault(require("react"));
9
-
10
- var _DocumentComponent = _interopRequireDefault(require("./DocumentComponent"));
11
-
12
6
  function documentSpout(options) {
13
7
  return function (next) {
14
8
  return async () => {
15
- var _nextProps$title;
16
-
17
9
  const nextProps = await next();
18
- return { ...nextProps,
19
- app: /*#__PURE__*/_react.default.createElement(_DocumentComponent.default, { ...options,
20
- title: (_nextProps$title = nextProps.title) != null ? _nextProps$title : options.title,
21
- assets: globalThis.assetManifest
22
- }, nextProps.app)
23
- };
10
+ return nextProps;
24
11
  };
25
12
  };
26
13
  }
27
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkb2N1bWVudFNwb3V0Iiwib3B0aW9ucyIsIm5leHQiLCJuZXh0UHJvcHMiLCJhcHAiLCJ0aXRsZSIsImdsb2JhbFRoaXMiLCJhc3NldE1hbmlmZXN0Il0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nwb3V0cy9kb2N1bWVudC50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB0eXBlIHsgUm91dGUgfSBmcm9tICdAYW5hbnNpL3JvdXRlcic7XG5cbmltcG9ydCB0eXBlIHsgUmVzb2x2ZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgRG9jdW1lbnQgZnJvbSAnLi9Eb2N1bWVudENvbXBvbmVudCc7XG5cbnR5cGUgTmVlZGVkUHJvcHMgPSB7XG4gIG1hdGNoZWRSb3V0ZXM6IFJvdXRlPGFueT5bXTtcbiAgdGl0bGU/OiBzdHJpbmc7XG59ICYgUmVzb2x2ZVByb3BzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBkb2N1bWVudFNwb3V0KG9wdGlvbnM6IHtcbiAgaGVhZD86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgdGl0bGU6IHN0cmluZztcbn0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgTmVlZGVkUHJvcHM+KG5leHQ6ICgpID0+IFByb21pc2U8VD4pIHtcbiAgICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgbmV4dFByb3BzID0gYXdhaXQgbmV4dCgpO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXh0UHJvcHMsXG4gICAgICAgIGFwcDogKFxuICAgICAgICAgIDxEb2N1bWVudFxuICAgICAgICAgICAgey4uLm9wdGlvbnN9XG4gICAgICAgICAgICB0aXRsZT17bmV4dFByb3BzLnRpdGxlID8/IG9wdGlvbnMudGl0bGV9XG4gICAgICAgICAgICBhc3NldHM9eyhnbG9iYWxUaGlzIGFzIGFueSkuYXNzZXRNYW5pZmVzdH1cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bmV4dFByb3BzLmFwcH1cbiAgICAgICAgICA8L0RvY3VtZW50PlxuICAgICAgICApLFxuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBSUE7O0FBT2UsU0FBU0EsYUFBVCxDQUF1QkMsT0FBdkIsRUFHWjtFQUNELE9BQU8sVUFBaUNDLElBQWpDLEVBQXlEO0lBQzlELE9BQU8sWUFBWTtNQUFBOztNQUNqQixNQUFNQyxTQUFTLEdBQUcsTUFBTUQsSUFBSSxFQUE1QjtNQUVBLE9BQU8sRUFDTCxHQUFHQyxTQURFO1FBRUxDLEdBQUcsZUFDRCw2QkFBQywwQkFBRCxPQUNNSCxPQUROO1VBRUUsS0FBSyxzQkFBRUUsU0FBUyxDQUFDRSxLQUFaLCtCQUFxQkosT0FBTyxDQUFDSSxLQUZwQztVQUdFLE1BQU0sRUFBR0MsVUFBRCxDQUFvQkM7UUFIOUIsR0FLR0osU0FBUyxDQUFDQyxHQUxiO01BSEcsQ0FBUDtJQVlELENBZkQ7RUFnQkQsQ0FqQkQ7QUFrQkQifQ==
14
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkb2N1bWVudFNwb3V0Iiwib3B0aW9ucyIsIm5leHQiLCJuZXh0UHJvcHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3BvdXRzL2RvY3VtZW50LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBSb3V0ZSB9IGZyb20gJ0BhbmFuc2kvcm91dGVyJztcblxuaW1wb3J0IHR5cGUgeyBSZXNvbHZlUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxudHlwZSBOZWVkZWRQcm9wcyA9IHtcbiAgbWF0Y2hlZFJvdXRlczogUm91dGU8YW55PltdO1xuICB0aXRsZT86IHN0cmluZztcbn0gJiBSZXNvbHZlUHJvcHM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRvY3VtZW50U3BvdXQob3B0aW9uczoge1xuICBoZWFkPzogUmVhY3QuUmVhY3ROb2RlO1xuICB0aXRsZTogc3RyaW5nO1xufSkge1xuICByZXR1cm4gZnVuY3Rpb24gPFQgZXh0ZW5kcyBOZWVkZWRQcm9wcz4obmV4dDogKCkgPT4gUHJvbWlzZTxUPikge1xuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBuZXh0UHJvcHMgPSBhd2FpdCBuZXh0KCk7XG5cbiAgICAgIHJldHVybiBuZXh0UHJvcHM7XG4gICAgfTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFVZSxTQUFTQSxhQUFULENBQXVCQyxPQUF2QixFQUdaO0VBQ0QsT0FBTyxVQUFpQ0MsSUFBakMsRUFBeUQ7SUFDOUQsT0FBTyxZQUFZO01BQ2pCLE1BQU1DLFNBQVMsR0FBRyxNQUFNRCxJQUFJLEVBQTVCO01BRUEsT0FBT0MsU0FBUDtJQUNELENBSkQ7RUFLRCxDQU5EO0FBT0QifQ==
@@ -39,10 +39,11 @@ function DocumentSpout(options) {
39
39
  return { ...nextProps,
40
40
  app: /*#__PURE__*/_react.default.createElement(_DocumentComponent.default, { ...options,
41
41
  title: (_nextProps$title = nextProps.title) != null ? _nextProps$title : options.title,
42
- assets: assets
42
+ assets: assets,
43
+ rootId: options.rootId
43
44
  }, nextProps.app)
44
45
  };
45
46
  };
46
47
  };
47
48
  }
48
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEb2N1bWVudFNwb3V0Iiwib3B0aW9ucyIsIm5leHQiLCJwcm9wcyIsIm5leHRQcm9wcyIsImVudHJ5cG9pbnQiLCJjbGllbnRNYW5pZmVzdCIsImVudHJ5cG9pbnRzIiwibWFpbiIsInB1YmxpY1BhdGgiLCJ1bmRlZmluZWQiLCJFcnJvciIsImFzc2V0TWFwIiwiYXNzZXRzIiwibWFwIiwibmFtZSIsImNoaWxkcmVuIiwicHJlZmV0Y2giLCJmaW5kIiwibWF0Y2hlZFJvdXRlcyIsInNvbWUiLCJyb3V0ZSIsImFzc2V0IiwiZW5kc1dpdGgiLCJocmVmIiwicmVsIiwiYXMiLCJhcHAiLCJ0aXRsZSJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvZG9jdW1lbnQuc2VydmVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBSb3V0ZSB9IGZyb20gJ0BhbmFuc2kvcm91dGVyJztcblxuaW1wb3J0IHR5cGUgeyBTZXJ2ZXJQcm9wcywgUmVzb2x2ZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgRG9jdW1lbnQgZnJvbSAnLi9Eb2N1bWVudENvbXBvbmVudCc7XG5cbnR5cGUgTmVlZGVkUHJvcHMgPSB7XG4gIG1hdGNoZWRSb3V0ZXM6IFJvdXRlPGFueT5bXTtcbiAgdGl0bGU/OiBzdHJpbmc7XG59ICYgUmVzb2x2ZVByb3BzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEb2N1bWVudFNwb3V0KG9wdGlvbnM6IHtcbiAgaGVhZD86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgdGl0bGU6IHN0cmluZztcbn0pIHtcbiAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgTmVlZGVkUHJvcHM+KFxuICAgIG5leHQ6IChwcm9wczogU2VydmVyUHJvcHMpID0+IFByb21pc2U8VD4sXG4gICkge1xuICAgIHJldHVybiBhc3luYyAocHJvcHM6IFNlcnZlclByb3BzKSA9PiB7XG4gICAgICBjb25zdCBuZXh0UHJvcHMgPSBhd2FpdCBuZXh0KHByb3BzKTtcblxuICAgICAgY29uc3QgZW50cnlwb2ludCA9IHByb3BzLmNsaWVudE1hbmlmZXN0Py5lbnRyeXBvaW50cz8ubWFpbjtcbiAgICAgIGNvbnN0IHB1YmxpY1BhdGggPSBwcm9wcy5jbGllbnRNYW5pZmVzdC5wdWJsaWNQYXRoO1xuXG4gICAgICBpZiAoZW50cnlwb2ludCA9PT0gdW5kZWZpbmVkIHx8IHB1YmxpY1BhdGggPT09IHVuZGVmaW5lZClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYW5pZmVzdCBtaXNzaW5nIGVudHJpZXMgbmVlZGVkJyk7XG5cbiAgICAgIC8vIFRPRE86IGNvbnNpZGVyIHVzaW5nIHRoaXMgcGFja2FnZSBmb3IgYnVpbGQgc3RhdHMgaW4gZnV0dXJlOlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3RyZWUvbWFpbi9wYWNrYWdlcy9yZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2tcbiAgICAgIGNvbnN0IGFzc2V0TWFwID0gKGFzc2V0czogeyBuYW1lOiBzdHJpbmc7IHNpemU/OiBudW1iZXIgfVtdKSA9PlxuICAgICAgICBhc3NldHMubWFwKCh7IG5hbWUgfSkgPT4gYCR7cHVibGljUGF0aH0ke25hbWV9YCk7XG4gICAgICAvLyBmaW5kIGFkZGl0aW9uYWwgYXNzZXRzIHRvIHByZWxvYWQgYmFzZWQgb24gbWF0Y2hlZCByb3V0ZVxuICAgICAgY29uc3QgYXNzZXRzID0gYXNzZXRNYXAoW1xuICAgICAgICAuLi4oZW50cnlwb2ludC5hc3NldHMgPz8gW10pLFxuICAgICAgICAuLi4oZW50cnlwb2ludC5jaGlsZHJlbj8ucHJlZmV0Y2g/LmZpbmQ/LigoeyBuYW1lIH0pID0+XG4gICAgICAgICAgbmV4dFByb3BzLm1hdGNoZWRSb3V0ZXMuc29tZShyb3V0ZSA9PiBuYW1lID09PSByb3V0ZS5uYW1lKSxcbiAgICAgICAgKT8uYXNzZXRzID8/IFtdKSxcbiAgICAgIF0pLm1hcChhc3NldCA9PlxuICAgICAgICBhc3NldC5lbmRzV2l0aCgnLmNzcycpXG4gICAgICAgICAgPyB7IGhyZWY6IGFzc2V0LCByZWw6ICdzdHlsZXNoZWV0JyB9XG4gICAgICAgICAgOiBhc3NldC5lbmRzV2l0aCgnLmpzJylcbiAgICAgICAgICA/IHsgaHJlZjogYXNzZXQsIGFzOiAnc2NyaXB0JyB9XG4gICAgICAgICAgOiB7IGhyZWY6IGFzc2V0IH0sXG4gICAgICApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXh0UHJvcHMsXG4gICAgICAgIGFwcDogKFxuICAgICAgICAgIDxEb2N1bWVudFxuICAgICAgICAgICAgey4uLm9wdGlvbnN9XG4gICAgICAgICAgICB0aXRsZT17bmV4dFByb3BzLnRpdGxlID8/IG9wdGlvbnMudGl0bGV9XG4gICAgICAgICAgICBhc3NldHM9e2Fzc2V0c31cbiAgICAgICAgICA+XG4gICAgICAgICAgICB7bmV4dFByb3BzLmFwcH1cbiAgICAgICAgICA8L0RvY3VtZW50PlxuICAgICAgICApLFxuICAgICAgfTtcbiAgICB9O1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7O0FBSUE7O0FBT2UsU0FBU0EsYUFBVCxDQUF1QkMsT0FBdkIsRUFHWjtFQUNELE9BQU8sVUFDTEMsSUFESyxFQUVMO0lBQ0EsT0FBTyxNQUFPQyxLQUFQLElBQThCO01BQUE7O01BQ25DLE1BQU1DLFNBQVMsR0FBRyxNQUFNRixJQUFJLENBQUNDLEtBQUQsQ0FBNUI7TUFFQSxNQUFNRSxVQUFVLDRCQUFHRixLQUFLLENBQUNHLGNBQVQsb0ZBQUcsc0JBQXNCQyxXQUF6QiwyREFBRyx1QkFBbUNDLElBQXREO01BQ0EsTUFBTUMsVUFBVSxHQUFHTixLQUFLLENBQUNHLGNBQU4sQ0FBcUJHLFVBQXhDO01BRUEsSUFBSUosVUFBVSxLQUFLSyxTQUFmLElBQTRCRCxVQUFVLEtBQUtDLFNBQS9DLEVBQ0UsTUFBTSxJQUFJQyxLQUFKLENBQVUsaUNBQVYsQ0FBTixDQVBpQyxDQVNuQztNQUNBOztNQUNBLE1BQU1DLFFBQVEsR0FBSUMsTUFBRCxJQUNmQSxNQUFNLENBQUNDLEdBQVAsQ0FBVyxDQUFDO1FBQUVDO01BQUYsQ0FBRCxLQUFlLEdBQUVOLFVBQVcsR0FBRU0sSUFBSyxFQUE5QyxDQURGLENBWG1DLENBYW5DOzs7TUFDQSxNQUFNRixNQUFNLEdBQUdELFFBQVEsQ0FBQyxDQUN0QiwwQkFBSVAsVUFBVSxDQUFDUSxNQUFmLGlDQUF5QixFQUF6QixDQURzQixFQUV0QixxREFBSVIsVUFBVSxDQUFDVyxRQUFmLG1GQUFJLHFCQUFxQkMsUUFBekIscUZBQUksdUJBQStCQyxJQUFuQyxxRkFBSSxvREFBc0MsQ0FBQztRQUFFSDtNQUFGLENBQUQsS0FDeENYLFNBQVMsQ0FBQ2UsYUFBVixDQUF3QkMsSUFBeEIsQ0FBNkJDLEtBQUssSUFBSU4sSUFBSSxLQUFLTSxLQUFLLENBQUNOLElBQXJELENBREUsQ0FBSiwyREFBSSx1QkFFREYsTUFGSCxvQ0FFYSxFQUZiLENBRnNCLENBQUQsQ0FBUixDQUtaQyxHQUxZLENBS1JRLEtBQUssSUFDVkEsS0FBSyxDQUFDQyxRQUFOLENBQWUsTUFBZixJQUNJO1FBQUVDLElBQUksRUFBRUYsS0FBUjtRQUFlRyxHQUFHLEVBQUU7TUFBcEIsQ0FESixHQUVJSCxLQUFLLENBQUNDLFFBQU4sQ0FBZSxLQUFmLElBQ0E7UUFBRUMsSUFBSSxFQUFFRixLQUFSO1FBQWVJLEVBQUUsRUFBRTtNQUFuQixDQURBLEdBRUE7UUFBRUYsSUFBSSxFQUFFRjtNQUFSLENBVlMsQ0FBZjtNQWFBLE9BQU8sRUFDTCxHQUFHbEIsU0FERTtRQUVMdUIsR0FBRyxlQUNELDZCQUFDLDBCQUFELE9BQ00xQixPQUROO1VBRUUsS0FBSyxzQkFBRUcsU0FBUyxDQUFDd0IsS0FBWiwrQkFBcUIzQixPQUFPLENBQUMyQixLQUZwQztVQUdFLE1BQU0sRUFBRWY7UUFIVixHQUtHVCxTQUFTLENBQUN1QixHQUxiO01BSEcsQ0FBUDtJQVlELENBdkNEO0VBd0NELENBM0NEO0FBNENEIn0=
49
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEb2N1bWVudFNwb3V0Iiwib3B0aW9ucyIsIm5leHQiLCJwcm9wcyIsIm5leHRQcm9wcyIsImVudHJ5cG9pbnQiLCJjbGllbnRNYW5pZmVzdCIsImVudHJ5cG9pbnRzIiwibWFpbiIsInB1YmxpY1BhdGgiLCJ1bmRlZmluZWQiLCJFcnJvciIsImFzc2V0TWFwIiwiYXNzZXRzIiwibWFwIiwibmFtZSIsImNoaWxkcmVuIiwicHJlZmV0Y2giLCJmaW5kIiwibWF0Y2hlZFJvdXRlcyIsInNvbWUiLCJyb3V0ZSIsImFzc2V0IiwiZW5kc1dpdGgiLCJocmVmIiwicmVsIiwiYXMiLCJhcHAiLCJ0aXRsZSIsInJvb3RJZCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvZG9jdW1lbnQuc2VydmVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBSb3V0ZSB9IGZyb20gJ0BhbmFuc2kvcm91dGVyJztcblxuaW1wb3J0IHR5cGUgeyBTZXJ2ZXJQcm9wcywgUmVzb2x2ZVByb3BzIH0gZnJvbSAnLi90eXBlcyc7XG5pbXBvcnQgRG9jdW1lbnQgZnJvbSAnLi9Eb2N1bWVudENvbXBvbmVudCc7XG5cbnR5cGUgTmVlZGVkUHJvcHMgPSB7XG4gIG1hdGNoZWRSb3V0ZXM6IFJvdXRlPGFueT5bXTtcbiAgdGl0bGU/OiBzdHJpbmc7XG59ICYgUmVzb2x2ZVByb3BzO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEb2N1bWVudFNwb3V0KG9wdGlvbnM6IHtcbiAgaGVhZD86IFJlYWN0LlJlYWN0Tm9kZTtcbiAgdGl0bGU6IHN0cmluZztcbiAgcm9vdElkOiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIE5lZWRlZFByb3BzPihcbiAgICBuZXh0OiAocHJvcHM6IFNlcnZlclByb3BzKSA9PiBQcm9taXNlPFQ+LFxuICApIHtcbiAgICByZXR1cm4gYXN5bmMgKHByb3BzOiBTZXJ2ZXJQcm9wcykgPT4ge1xuICAgICAgY29uc3QgbmV4dFByb3BzID0gYXdhaXQgbmV4dChwcm9wcyk7XG5cbiAgICAgIGNvbnN0IGVudHJ5cG9pbnQgPSBwcm9wcy5jbGllbnRNYW5pZmVzdD8uZW50cnlwb2ludHM/Lm1haW47XG4gICAgICBjb25zdCBwdWJsaWNQYXRoID0gcHJvcHMuY2xpZW50TWFuaWZlc3QucHVibGljUGF0aDtcblxuICAgICAgaWYgKGVudHJ5cG9pbnQgPT09IHVuZGVmaW5lZCB8fCBwdWJsaWNQYXRoID09PSB1bmRlZmluZWQpXG4gICAgICAgIHRocm93IG5ldyBFcnJvcignTWFuaWZlc3QgbWlzc2luZyBlbnRyaWVzIG5lZWRlZCcpO1xuXG4gICAgICAvLyBUT0RPOiBjb25zaWRlciB1c2luZyB0aGlzIHBhY2thZ2UgZm9yIGJ1aWxkIHN0YXRzIGluIGZ1dHVyZTpcbiAgICAgIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yZWFjdC90cmVlL21haW4vcGFja2FnZXMvcmVhY3Qtc2VydmVyLWRvbS13ZWJwYWNrXG4gICAgICBjb25zdCBhc3NldE1hcCA9IChhc3NldHM6IHsgbmFtZTogc3RyaW5nOyBzaXplPzogbnVtYmVyIH1bXSkgPT5cbiAgICAgICAgYXNzZXRzLm1hcCgoeyBuYW1lIH0pID0+IGAke3B1YmxpY1BhdGh9JHtuYW1lfWApO1xuICAgICAgLy8gZmluZCBhZGRpdGlvbmFsIGFzc2V0cyB0byBwcmVsb2FkIGJhc2VkIG9uIG1hdGNoZWQgcm91dGVcbiAgICAgIGNvbnN0IGFzc2V0cyA9IGFzc2V0TWFwKFtcbiAgICAgICAgLi4uKGVudHJ5cG9pbnQuYXNzZXRzID8/IFtdKSxcbiAgICAgICAgLi4uKGVudHJ5cG9pbnQuY2hpbGRyZW4/LnByZWZldGNoPy5maW5kPy4oKHsgbmFtZSB9KSA9PlxuICAgICAgICAgIG5leHRQcm9wcy5tYXRjaGVkUm91dGVzLnNvbWUocm91dGUgPT4gbmFtZSA9PT0gcm91dGUubmFtZSksXG4gICAgICAgICk/LmFzc2V0cyA/PyBbXSksXG4gICAgICBdKS5tYXAoYXNzZXQgPT5cbiAgICAgICAgYXNzZXQuZW5kc1dpdGgoJy5jc3MnKVxuICAgICAgICAgID8geyBocmVmOiBhc3NldCwgcmVsOiAnc3R5bGVzaGVldCcgfVxuICAgICAgICAgIDogYXNzZXQuZW5kc1dpdGgoJy5qcycpXG4gICAgICAgICAgPyB7IGhyZWY6IGFzc2V0LCBhczogJ3NjcmlwdCcgfVxuICAgICAgICAgIDogeyBocmVmOiBhc3NldCB9LFxuICAgICAgKTtcblxuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubmV4dFByb3BzLFxuICAgICAgICBhcHA6IChcbiAgICAgICAgICA8RG9jdW1lbnRcbiAgICAgICAgICAgIHsuLi5vcHRpb25zfVxuICAgICAgICAgICAgdGl0bGU9e25leHRQcm9wcy50aXRsZSA/PyBvcHRpb25zLnRpdGxlfVxuICAgICAgICAgICAgYXNzZXRzPXthc3NldHN9XG4gICAgICAgICAgICByb290SWQ9e29wdGlvbnMucm9vdElkfVxuICAgICAgICAgID5cbiAgICAgICAgICAgIHtuZXh0UHJvcHMuYXBwfVxuICAgICAgICAgIDwvRG9jdW1lbnQ+XG4gICAgICAgICksXG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFBQTs7QUFJQTs7QUFPZSxTQUFTQSxhQUFULENBQXVCQyxPQUF2QixFQUlaO0VBQ0QsT0FBTyxVQUNMQyxJQURLLEVBRUw7SUFDQSxPQUFPLE1BQU9DLEtBQVAsSUFBOEI7TUFBQTs7TUFDbkMsTUFBTUMsU0FBUyxHQUFHLE1BQU1GLElBQUksQ0FBQ0MsS0FBRCxDQUE1QjtNQUVBLE1BQU1FLFVBQVUsNEJBQUdGLEtBQUssQ0FBQ0csY0FBVCxvRkFBRyxzQkFBc0JDLFdBQXpCLDJEQUFHLHVCQUFtQ0MsSUFBdEQ7TUFDQSxNQUFNQyxVQUFVLEdBQUdOLEtBQUssQ0FBQ0csY0FBTixDQUFxQkcsVUFBeEM7TUFFQSxJQUFJSixVQUFVLEtBQUtLLFNBQWYsSUFBNEJELFVBQVUsS0FBS0MsU0FBL0MsRUFDRSxNQUFNLElBQUlDLEtBQUosQ0FBVSxpQ0FBVixDQUFOLENBUGlDLENBU25DO01BQ0E7O01BQ0EsTUFBTUMsUUFBUSxHQUFJQyxNQUFELElBQ2ZBLE1BQU0sQ0FBQ0MsR0FBUCxDQUFXLENBQUM7UUFBRUM7TUFBRixDQUFELEtBQWUsR0FBRU4sVUFBVyxHQUFFTSxJQUFLLEVBQTlDLENBREYsQ0FYbUMsQ0FhbkM7OztNQUNBLE1BQU1GLE1BQU0sR0FBR0QsUUFBUSxDQUFDLENBQ3RCLDBCQUFJUCxVQUFVLENBQUNRLE1BQWYsaUNBQXlCLEVBQXpCLENBRHNCLEVBRXRCLHFEQUFJUixVQUFVLENBQUNXLFFBQWYsbUZBQUkscUJBQXFCQyxRQUF6QixxRkFBSSx1QkFBK0JDLElBQW5DLHFGQUFJLG9EQUFzQyxDQUFDO1FBQUVIO01BQUYsQ0FBRCxLQUN4Q1gsU0FBUyxDQUFDZSxhQUFWLENBQXdCQyxJQUF4QixDQUE2QkMsS0FBSyxJQUFJTixJQUFJLEtBQUtNLEtBQUssQ0FBQ04sSUFBckQsQ0FERSxDQUFKLDJEQUFJLHVCQUVERixNQUZILG9DQUVhLEVBRmIsQ0FGc0IsQ0FBRCxDQUFSLENBS1pDLEdBTFksQ0FLUlEsS0FBSyxJQUNWQSxLQUFLLENBQUNDLFFBQU4sQ0FBZSxNQUFmLElBQ0k7UUFBRUMsSUFBSSxFQUFFRixLQUFSO1FBQWVHLEdBQUcsRUFBRTtNQUFwQixDQURKLEdBRUlILEtBQUssQ0FBQ0MsUUFBTixDQUFlLEtBQWYsSUFDQTtRQUFFQyxJQUFJLEVBQUVGLEtBQVI7UUFBZUksRUFBRSxFQUFFO01BQW5CLENBREEsR0FFQTtRQUFFRixJQUFJLEVBQUVGO01BQVIsQ0FWUyxDQUFmO01BYUEsT0FBTyxFQUNMLEdBQUdsQixTQURFO1FBRUx1QixHQUFHLGVBQ0QsNkJBQUMsMEJBQUQsT0FDTTFCLE9BRE47VUFFRSxLQUFLLHNCQUFFRyxTQUFTLENBQUN3QixLQUFaLCtCQUFxQjNCLE9BQU8sQ0FBQzJCLEtBRnBDO1VBR0UsTUFBTSxFQUFFZixNQUhWO1VBSUUsTUFBTSxFQUFFWixPQUFPLENBQUM0QjtRQUpsQixHQU1HekIsU0FBUyxDQUFDdUIsR0FOYjtNQUhHLENBQVA7SUFhRCxDQXhDRDtFQXlDRCxDQTVDRDtBQTZDRCJ9
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anansi/core",
3
- "version": "0.4.2",
3
+ "version": "0.5.0",
4
4
  "description": "React 18 Framework",
5
5
  "homepage": "https://github.com/ntucker/anansi/tree/master/packages/core#readme",
6
6
  "repository": {
@@ -17,6 +17,7 @@
17
17
  "files": [
18
18
  "src",
19
19
  "lib",
20
+ "dist",
20
21
  "server.d.ts",
21
22
  "LICENSE",
22
23
  "README.md"
@@ -35,13 +36,16 @@
35
36
  ".": {
36
37
  "node": {
37
38
  "types": "./lib/index.server.d.ts",
39
+ "require": "./dist/server.js",
38
40
  "import": "./lib/index.server.js"
39
41
  },
40
42
  "types": "./lib/index.d.ts",
43
+ "require": "./dist/client.js",
41
44
  "default": "./lib/index.js"
42
45
  },
43
46
  "./server": {
44
47
  "types": "./lib/index.server.d.ts",
48
+ "require": "./dist/server.js",
45
49
  "default": "./lib/index.server.js"
46
50
  },
47
51
  "./package.json": "./package.json"
@@ -58,6 +62,7 @@
58
62
  "devDependencies": {
59
63
  "@anansi/babel-preset": "^3.1.3",
60
64
  "@anansi/browserslist-config": "1.3.3",
65
+ "@anansi/webpack-config": "^11.5.0",
61
66
  "@babel/cli": "7.17.10",
62
67
  "@babel/core": "7.17.12",
63
68
  "@types/compression": "^1.7.2",
@@ -65,10 +70,12 @@
65
70
  "@types/tmp": "^0.2.3",
66
71
  "@types/webpack-hot-middleware": "^2.25.6",
67
72
  "jest": "28.1.0",
68
- "rimraf": "^3.0.0"
73
+ "rimraf": "^3.0.0",
74
+ "webpack": "^5.72.1",
75
+ "webpack-cli": "^4.9.2"
69
76
  },
70
77
  "dependencies": {
71
- "@anansi/router": "^0.4.3",
78
+ "@anansi/router": "^0.5.0",
72
79
  "@babel/runtime": "^7.10.5",
73
80
  "@rest-hooks/ssr": "^0.1.3",
74
81
  "chalk": "^4.0.0",
@@ -76,11 +83,11 @@
76
83
  "cross-fetch": "^3.1.5",
77
84
  "express": "^4.17.3",
78
85
  "fs-monkey": "^1.0.3",
86
+ "history": "^5.3.0",
79
87
  "import-fresh": "^3.3.0",
80
88
  "memfs": "^3.4.1",
81
89
  "ora": "^5.0.0",
82
90
  "redux": "^4.1.2",
83
- "rest-hooks": "6.3.3",
84
91
  "source-map-support": "^0.5.21",
85
92
  "tmp": "^0.2.1",
86
93
  "unionfs": "^4.4.0",
@@ -88,6 +95,7 @@
88
95
  "whatwg-fetch": "^3.6.2"
89
96
  },
90
97
  "peerDependencies": {
98
+ "@rest-hooks/core": "^3.0.0",
91
99
  "@types/react": "^17.0.40 || ^18.0.0-0",
92
100
  "@types/react-dom": "^17.0.40 || ^18.0.0-0",
93
101
  "react": "^18.0.0-0",
@@ -95,6 +103,9 @@
95
103
  "webpack": "^5.60.0"
96
104
  },
97
105
  "peerDependenciesMeta": {
106
+ "@rest-hooks/core": {
107
+ "optional": true
108
+ },
98
109
  "@types/react": {
99
110
  "optional": true
100
111
  },
@@ -110,12 +121,13 @@
110
121
  ],
111
122
  "scripts": {
112
123
  "pretest": "eslint --ext .ts,.tsx .",
113
- "dev": "yarn run build:lib -w",
124
+ "dev": "yarn run build:lib -w & yarn run build:bundle -w && fg",
114
125
  "test": "jest",
115
126
  "test:type": "tsc",
116
- "build": "yarn run build:lib",
127
+ "build": "yarn run build:lib && yarn run build:bundle",
117
128
  "build:lib": "NODE_ENV=production BROWSERSLIST_ENV='2020' babel --root-mode upward src --out-dir lib --source-maps inline --extensions '.ts,.tsx,.js' --ignore '**/__tests__/**' --ignore '**/*.d.ts'",
118
- "build:clean": "rimraf lib ts3.4 legacy *.tsbuildinfo",
129
+ "build:bundle": "BROWSERSLIST_ENV=node12 webpack --mode=development --target=node",
130
+ "build:clean": "rimraf lib dist ts3.4 legacy *.tsbuildinfo",
119
131
  "prepack": "yarn build"
120
132
  }
121
133
  }
@@ -4,8 +4,9 @@ export default async function floodSpouts(
4
4
  spouts: () => Promise<{
5
5
  app: JSX.Element;
6
6
  }>,
7
+ { rootId = 'anansi-root' }: { rootId?: string } = {},
7
8
  ) {
8
9
  const { app } = await spouts();
9
10
 
10
- hydrateRoot(document, app);
11
+ hydrateRoot(document.getElementById(rootId) ?? document, app);
11
12
  }
@@ -28,7 +28,7 @@ const webpackConfig = require(require.resolve(
28
28
 
29
29
  const entrypoint = process.argv[2];
30
30
  const PORT = process.env.PORT || 3000;
31
- process.env.WEBPACK_PUBLIC_HOST = `http://localhost:${PORT}`;
31
+ //process.env.WEBPACK_PUBLIC_HOST = `http://localhost:${PORT}`; this breaks compatibility with stackblitz
32
32
  process.env.WEBPACK_PUBLIC_PATH = '/assets/';
33
33
 
34
34
  if (!entrypoint) {
@@ -37,8 +37,8 @@ if (!entrypoint) {
37
37
  }
38
38
 
39
39
  console.log(
40
- chalk.greenBright(`Starting SSR at`),
41
- chalk.cyanBright(process.env.WEBPACK_PUBLIC_HOST),
40
+ chalk.greenBright(`Starting SSR at:`),
41
+ chalk.cyanBright(process.env.WEBPACK_PUBLIC_HOST || `http://localhost:${PORT}`),
42
42
  );
43
43
  const loader = ora().start();
44
44
 
@@ -3,9 +3,16 @@ type Props = {
3
3
  assets: { href: string; as?: string; rel?: string }[];
4
4
  head: React.ReactNode;
5
5
  title: string;
6
+ rootId: string;
6
7
  };
7
8
 
8
- export default function Document({ assets, head, children, title }: Props) {
9
+ export default function Document({
10
+ assets,
11
+ head,
12
+ children,
13
+ title,
14
+ rootId,
15
+ }: Props) {
9
16
  return (
10
17
  <html>
11
18
  <head>
@@ -16,7 +23,7 @@ export default function Document({ assets, head, children, title }: Props) {
16
23
  <title>{title}</title>
17
24
  </head>
18
25
  <body>
19
- {children}
26
+ <div id={rootId}>{children}</div>
20
27
  {/* this ensures the client can hydrate the assets prop */}
21
28
  <script
22
29
  dangerouslySetInnerHTML={{
@@ -40,4 +47,5 @@ Document.defaultProps = {
40
47
  <link rel="shortcut icon" href="/assets/favicon.ico" />
41
48
  </>
42
49
  ),
50
+ rootId: 'anansi-root',
43
51
  };
@@ -12,6 +12,7 @@ type NeededProps = {
12
12
  export default function DocumentSpout(options: {
13
13
  head?: React.ReactNode;
14
14
  title: string;
15
+ rootId: string;
15
16
  }) {
16
17
  return function <T extends NeededProps>(
17
18
  next: (props: ServerProps) => Promise<T>,
@@ -50,6 +51,7 @@ export default function DocumentSpout(options: {
50
51
  {...options}
51
52
  title={nextProps.title ?? options.title}
52
53
  assets={assets}
54
+ rootId={options.rootId}
53
55
  >
54
56
  {nextProps.app}
55
57
  </Document>
@@ -2,7 +2,6 @@ import React from 'react';
2
2
  import type { Route } from '@anansi/router';
3
3
 
4
4
  import type { ResolveProps } from './types';
5
- import Document from './DocumentComponent';
6
5
 
7
6
  type NeededProps = {
8
7
  matchedRoutes: Route<any>[];
@@ -17,18 +16,7 @@ export default function documentSpout(options: {
17
16
  return async () => {
18
17
  const nextProps = await next();
19
18
 
20
- return {
21
- ...nextProps,
22
- app: (
23
- <Document
24
- {...options}
25
- title={nextProps.title ?? options.title}
26
- assets={(globalThis as any).assetManifest}
27
- >
28
- {nextProps.app}
29
- </Document>
30
- ),
31
- };
19
+ return nextProps;
32
20
  };
33
21
  };
34
22
  }