@anansi/core 0.4.4 → 0.5.2
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 +32 -0
- package/dist/client.js +180 -0
- package/dist/client.js.map +1 -0
- package/dist/server.js +400 -0
- package/dist/server.js.map +1 -0
- package/lib/floodSpouts.d.ts +3 -1
- package/lib/floodSpouts.d.ts.map +1 -1
- package/lib/floodSpouts.js +7 -3
- package/lib/scripts/startDevserver.js +2 -2
- package/lib/spouts/DocumentComponent.d.ts +3 -1
- package/lib/spouts/DocumentComponent.d.ts.map +1 -1
- package/lib/spouts/DocumentComponent.js +9 -7
- package/lib/spouts/document.d.ts +1 -3
- package/lib/spouts/document.d.ts.map +1 -1
- package/lib/spouts/document.js +2 -15
- package/lib/spouts/document.server.d.ts +1 -0
- package/lib/spouts/document.server.d.ts.map +1 -1
- package/lib/spouts/document.server.js +3 -2
- package/package.json +20 -8
- package/src/floodSpouts.tsx +2 -1
- package/src/scripts/startDevserver.ts +2 -2
- package/src/spouts/DocumentComponent.tsx +11 -3
- package/src/spouts/document.server.tsx +2 -0
- package/src/spouts/document.tsx +1 -13
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,38 @@
|
|
|
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.2](https://github.com/ntucker/anansi/compare/@anansi/core@0.5.1...@anansi/core@0.5.2) (2022-05-21)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @anansi/core
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### [0.5.1](https://github.com/ntucker/anansi/compare/@anansi/core@0.5.0...@anansi/core@0.5.1) (2022-05-20)
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
### 📦 Package
|
|
18
|
+
|
|
19
|
+
* Update babel monorepo ([#1515](https://github.com/ntucker/anansi/issues/1515)) ([9d51b13](https://github.com/ntucker/anansi/commit/9d51b13218a67c17cfef56a1be88ac4af7933d03))
|
|
20
|
+
|
|
21
|
+
|
|
22
|
+
|
|
23
|
+
## [0.5.0](https://github.com/ntucker/anansi/compare/@anansi/core@0.4.4...@anansi/core@0.5.0) (2022-05-18)
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### 🚀 Features
|
|
27
|
+
|
|
28
|
+
* Add commonjs bundles ([#1508](https://github.com/ntucker/anansi/issues/1508)) ([3f1f5a2](https://github.com/ntucker/anansi/commit/3f1f5a2f881d3e314d9fd08d63607e0c8dbd34d1))
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
### 💅 Enhancement
|
|
32
|
+
|
|
33
|
+
* Ensure output works without WEBPACK_PUBLIC_HOST set ([1df3f57](https://github.com/ntucker/anansi/commit/1df3f57cf0d3966a371e89f8c2333f3f29e23b65))
|
|
34
|
+
* Only hydrate body content ([1a6412c](https://github.com/ntucker/anansi/commit/1a6412c2e2b55b176fa0491228888490e45de98f))
|
|
35
|
+
|
|
36
|
+
|
|
37
|
+
|
|
6
38
|
### [0.4.4](https://github.com/ntucker/anansi/compare/@anansi/core@0.4.3...@anansi/core@0.4.4) (2022-05-18)
|
|
7
39
|
|
|
8
40
|
|
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":""}
|
package/lib/floodSpouts.d.ts
CHANGED
package/lib/floodSpouts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"floodSpouts.d.ts","sourceRoot":"","sources":["../src/floodSpouts.tsx"],"names":[],"mappings":"AAEA,wBAA8B,WAAW,CACvC,MAAM,EAAE,MAAM,OAAO,CAAC;IACpB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;CAClB,CAAC,
|
|
1
|
+
{"version":3,"file":"floodSpouts.d.ts","sourceRoot":"","sources":["../src/floodSpouts.tsx"],"names":[],"mappings":"AAEA,wBAA8B,WAAW,CACvC,MAAM,EAAE,MAAM,OAAO,CAAC;IACpB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;CAClB,CAAC,EACF,EAAE,MAAsB,EAAE,GAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAA;CAAO,iBAKrD"}
|
package/lib/floodSpouts.js
CHANGED
|
@@ -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,
|
|
18
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJmbG9vZFNwb3V0cyIsInNwb3V0cyIsInJvb3RJZCIsImFwcCIsImh5ZHJhdGVSb290IiwiZG9jdW1lbnQiLCJnZXRFbGVtZW50QnlJZCJdLCJzb3VyY2VzIjpbIi4uL3NyYy9mbG9vZFNwb3V0cy50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgaHlkcmF0ZVJvb3QgfSBmcm9tICdyZWFjdC1kb20vY2xpZW50JztcblxuZXhwb3J0IGRlZmF1bHQgYXN5bmMgZnVuY3Rpb24gZmxvb2RTcG91dHMoXG4gIHNwb3V0czogKCkgPT4gUHJvbWlzZTx7XG4gICAgYXBwOiBKU1guRWxlbWVudDtcbiAgfT4sXG4gIHsgcm9vdElkID0gJ2FuYW5zaS1yb290JyB9OiB7IHJvb3RJZD86IHN0cmluZyB9ID0ge30sXG4pIHtcbiAgY29uc3QgeyBhcHAgfSA9IGF3YWl0IHNwb3V0cygpO1xuXG4gIGh5ZHJhdGVSb290KGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKHJvb3RJZCkgPz8gZG9jdW1lbnQsIGFwcCk7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUE7O0FBRWUsZUFBZUEsV0FBZixDQUNiQyxNQURhLEVBSWI7RUFBRUMsTUFBTSxHQUFHO0FBQVgsSUFBa0QsRUFKckMsRUFLYjtFQUFBOztFQUNBLE1BQU07SUFBRUM7RUFBRixJQUFVLE1BQU1GLE1BQU0sRUFBNUI7RUFFQSxJQUFBRyxtQkFBQSwyQkFBWUMsUUFBUSxDQUFDQyxjQUFULENBQXdCSixNQUF4QixDQUFaLG9DQUErQ0csUUFBL0MsRUFBeURGLEdBQXpEO0FBQ0QifQ==
|
|
@@ -51,7 +51,7 @@ if (!entrypoint) {
|
|
|
51
51
|
process.exit(-1);
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
console.log(_chalk.default.greenBright(`Starting SSR at
|
|
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,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3ZWJwYWNrQ29uZmlnIiwicmVxdWlyZSIsInJlc29sdmUiLCJwYXRoIiwiam9pbiIsInByb2Nlc3MiLCJjd2QiLCJlbnRyeXBvaW50IiwiYXJndiIsIlBPUlQiLCJlbnYiLCJXRUJQQUNLX1BVQkxJQ19QQVRIIiwiY29uc29sZSIsImxvZyIsImV4aXQiLCJjaGFsayIsImdyZWVuQnJpZ2h0IiwiY3lhbkJyaWdodCIsIldFQlBBQ0tfUFVCTElDX0hPU1QiLCJsb2FkZXIiLCJvcmEiLCJzdGFydCIsInZvbHVtZSIsIlZvbHVtZSIsImZzIiwiY3JlYXRlRnNGcm9tVm9sdW1lIiwidWZzIiwidXNlIiwiZGlza0ZzIiwicGF0Y2hSZXF1aXJlIiwicmVhZEZpbGUiLCJwcm9taXNpZnkiLCJzZXJ2ZXIiLCJob3RFbnRyeSIsImVudHJ5UGF0aCIsImdlbmVyYXRlZEVudHJ5cG9pbnQiLCJ0bXAiLCJmaWxlU3luYyIsInBvc3RmaXgiLCJ3cml0ZVN5bmMiLCJmZCIsIndlYnBhY2tDb25maWdzIiwibmFtZSIsIm1vZGUiLCJyZXBsYWNlIiwidGFyZ2V0IiwicGx1Z2lucyIsInB1c2giLCJ3ZWJwYWNrIiwib3B0aW1pemUiLCJMaW1pdENodW5rQ291bnRQbHVnaW4iLCJtYXhDaHVua3MiLCJjb21waWxlciIsInNvdXJjZU1hcFN1cHBvcnQiLCJpbnN0YWxsIiwiaG9va1JlcXVpcmUiLCJnZXRTZXJ2ZXJCdW5kbGUiLCJzZXJ2ZXJTdGF0cyIsInNlcnZlckpzb24iLCJ0b0pzb24iLCJhc3NldHMiLCJvdXRwdXRQYXRoIiwiaGFuZGxlRXJyb3JzIiwiZm4iLCJyZXEiLCJyZXMiLCJuZXh0IiwieCIsInJlbmRlciIsImluaXRpYWxpemVBcHAiLCJzdGF0cyIsImNsaWVudFN0YXRzIiwiY29tcGlsYXRpb24iLCJlcnJvcnMiLCJsZW5ndGgiLCJmYWlsIiwiaW5mbyIsIndyYXBwaW5nQXBwIiwiZXhwcmVzcyIsImNvbXByZXNzIiwiY2xpZW50TWFuaWZlc3QiLCJhc3NldFJvdXRlIiwiZmlsZW5hbWUiLCJ1cmwiLCJzdWJzdHJpbmciLCJzcGxpdCIsImFzc2V0UGF0aCIsImZpbGVDb250ZW50IiwidG9TdHJpbmciLCJjb250ZW50VHlwZSIsInNlbmQiLCJlIiwic3RhdHVzIiwiZ2V0IiwiZGVmYXVsdCIsImVuZHNXaXRoIiwic3RhdHVzQ29kZSIsInNldEhlYWRlciIsInNvY2tldCIsIm9uIiwiZXJyb3IiLCJsaXN0ZW4iLCJzdWNjZWVkIiwic3lzY2FsbCIsImlzUGlwZSIsInBvcnRPclBpcGUiLCJOdW1iZXIiLCJpc05hTiIsImJpbmQiLCJjb2RlIiwiZGV2U2VydmVyIiwiV2VicGFja0RldlNlcnZlciIsImRldk1pZGRsZXdhcmUiLCJvdXRwdXRGaWxlU3lzdGVtIiwicnVuU2VydmVyIiwiaG9va3MiLCJkb25lIiwidGFwIiwibXVsdGlTdGF0cyIsIk9iamVjdCIsImhhc093biIsImltcG9ydEZyZXNoIiwic3RvcFNlcnZlciIsInN0b3AiLCJ3YXJuIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvc3RhcnREZXZzZXJ2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcbmltcG9ydCBkaXNrRnMgZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgd2VicGFjaywgeyBNdWx0aUNvbXBpbGVyIH0gZnJvbSAnd2VicGFjayc7XG5pbXBvcnQgeyBjcmVhdGVGc0Zyb21Wb2x1bWUsIFZvbHVtZSB9IGZyb20gJ21lbWZzJztcbmltcG9ydCB7IFNlcnZlciwgSW5jb21pbmdNZXNzYWdlLCBTZXJ2ZXJSZXNwb25zZSB9IGZyb20gJ2h0dHAnO1xuaW1wb3J0IGV4cHJlc3MsIHsgTmV4dEZ1bmN0aW9uIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgb3JhIGZyb20gJ29yYSc7XG5pbXBvcnQgeyBwYXRjaFJlcXVpcmUgfSBmcm9tICdmcy1tb25rZXknO1xuaW1wb3J0IHRtcCBmcm9tICd0bXAnO1xuaW1wb3J0IHNvdXJjZU1hcFN1cHBvcnQgZnJvbSAnc291cmNlLW1hcC1zdXBwb3J0JztcbmltcG9ydCB7IHVmcyB9IGZyb20gJ3VuaW9uZnMnO1xuaW1wb3J0IGNvbXByZXNzIGZyb20gJ2NvbXByZXNzaW9uJztcbmltcG9ydCBXZWJwYWNrRGV2U2VydmVyIGZyb20gJ3dlYnBhY2stZGV2LXNlcnZlcic7XG5pbXBvcnQgaW1wb3J0RnJlc2ggZnJvbSAnaW1wb3J0LWZyZXNoJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmltcG9ydCAnY3Jvc3MtZmV0Y2gvcG9seWZpbGwnO1xuaW1wb3J0IHsgUmVuZGVyIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG5jb25zdCB3ZWJwYWNrQ29uZmlnID0gcmVxdWlyZShyZXF1aXJlLnJlc29sdmUoXG4gIC8vIFRPRE86IHVzZSBub3JtYWwgcmVzb2x1dGlvbiBhbGdvcml0aG0gdG8gZmluZCB3ZWJwYWNrIGZpbGVcbiAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICd3ZWJwYWNrLmNvbmZpZycpLFxuKSk7XG5cbmNvbnN0IGVudHJ5cG9pbnQgPSBwcm9jZXNzLmFyZ3ZbMl07XG5jb25zdCBQT1JUID0gcHJvY2Vzcy5lbnYuUE9SVCB8fCAzMDAwO1xuLy9wcm9jZXNzLmVudi5XRUJQQUNLX1BVQkxJQ19IT1NUID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtQT1JUfWA7IHRoaXMgYnJlYWtzIGNvbXBhdGliaWxpdHkgd2l0aCBzdGFja2JsaXR6XG5wcm9jZXNzLmVudi5XRUJQQUNLX1BVQkxJQ19QQVRIID0gJy9hc3NldHMvJztcblxuaWYgKCFlbnRyeXBvaW50KSB7XG4gIGNvbnNvbGUubG9nKGBVc2FnZTogc3RhcnQtYW5hbnNpIDxlbnRyeXBvaW50LWZpbGU+YCk7XG4gIHByb2Nlc3MuZXhpdCgtMSk7XG59XG5cbmNvbnNvbGUubG9nKFxuICBjaGFsay5ncmVlbkJyaWdodChgU3RhcnRpbmcgU1NSIGF0YCksXG4gIGNoYWxrLmN5YW5CcmlnaHQocHJvY2Vzcy5lbnYuV0VCUEFDS19QVUJMSUNfSE9TVCksXG4pO1xuY29uc3QgbG9hZGVyID0gb3JhKCkuc3RhcnQoKTtcblxuLy8gU2V0IHVwIGluIG1lbW9yeSBmaWxlc3lzdGVtXG5jb25zdCB2b2x1bWUgPSBuZXcgVm9sdW1lKCk7XG5jb25zdCBmcyA9IGNyZWF0ZUZzRnJvbVZvbHVtZSh2b2x1bWUpO1xudWZzLnVzZShkaXNrRnMpLnVzZShmcyBhcyBhbnkpO1xuXG5wYXRjaFJlcXVpcmUodWZzKTtcbmNvbnN0IHJlYWRGaWxlID0gcHJvbWlzaWZ5KHVmcy5yZWFkRmlsZSk7XG5sZXQgc2VydmVyOiBTZXJ2ZXIgfCB1bmRlZmluZWQ7XG5cbi8vIEdlbmVyYXRlIGEgdGVtcG9yYXJ5IGZpbGUgc28gd2UgY2FuIGhvdCByZWxvYWQgZnJvbSB0aGUgcm9vdCBvZiB0aGUgYXBwbGljYXRpb25cbmZ1bmN0aW9uIGhvdEVudHJ5KGVudHJ5UGF0aDogc3RyaW5nKSB7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAvLyBAdHMtaWdub3JlIGZvciBzb21lIHJlYXNvbiBpdCdzIG5vdCBwaWNraW5nIHVwIHRoYXQgb3RoZXIgb3B0aW9ucyBhcmUgb3B0aW9uYWxcbiAgY29uc3QgZ2VuZXJhdGVkRW50cnlwb2ludCA9IHRtcC5maWxlU3luYyh7IHBvc3RmaXg6ICcuanMnIH0pO1xuICBkaXNrRnMud3JpdGVTeW5jKFxuICAgIGdlbmVyYXRlZEVudHJ5cG9pbnQuZmQsXG4gICAgYFxuaW1wb3J0IGVudHJ5IGZyb20gXCIke3BhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBlbnRyeVBhdGgpfVwiO1xuXG5pZiAobW9kdWxlLmhvdCkge1xuICBtb2R1bGUuaG90LmFjY2VwdCgpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBlbnRyeTtcbiAgYCxcbiAgKTtcbiAgcmV0dXJuIGdlbmVyYXRlZEVudHJ5cG9pbnQ7XG59XG5cbmNvbnN0IHdlYnBhY2tDb25maWdzID0gW1xuICB3ZWJwYWNrQ29uZmlnKFxuICAgIHtcbiAgICAgIGVudHJ5cG9pbnQ6IGhvdEVudHJ5KGVudHJ5cG9pbnQpLm5hbWUsXG4gICAgICBuYW1lOiAnY2xpZW50JyxcbiAgICB9LFxuICAgIHsgbW9kZTogJ2RldmVsb3BtZW50JyB9LFxuICApLFxuICB3ZWJwYWNrQ29uZmlnKFxuICAgIHtcbiAgICAgIGVudHJ5cG9pbnQ6IGVudHJ5cG9pbnQucmVwbGFjZSgnLnRzeCcsICcuc2VydmVyLnRzeCcpLFxuICAgICAgbmFtZTogJ3NlcnZlcicsXG4gICAgfSxcbiAgICB7IG1vZGU6ICdkZXZlbG9wbWVudCcsIHRhcmdldDogJ25vZGUnIH0sXG4gICksXG5dIGFzIGNvbnN0O1xuLy8gb25seSBoYXZlIG9uZSBvdXRwdXQgZm9yIHNlcnZlciBzbyB3ZSBjYW4gYXZvaWQgY2FjaGVkIG1vZHVsZXNcbndlYnBhY2tDb25maWdzWzFdLnBsdWdpbnMucHVzaChcbiAgbmV3IHdlYnBhY2sub3B0aW1pemUuTGltaXRDaHVua0NvdW50UGx1Z2luKHsgbWF4Q2h1bmtzOiAxIH0pLFxuKTtcbi8vIGluaXRpYWxpemUgdGhlIHdlYnBhY2sgY29tcGlsZXJcbmNvbnN0IGNvbXBpbGVyOiBNdWx0aUNvbXBpbGVyID0gd2VicGFjayh3ZWJwYWNrQ29uZmlncyk7XG5cbnNvdXJjZU1hcFN1cHBvcnQuaW5zdGFsbCh7IGhvb2tSZXF1aXJlOiB0cnVlIH0pO1xuXG5mdW5jdGlvbiBnZXRTZXJ2ZXJCdW5kbGUoc2VydmVyU3RhdHM6IHdlYnBhY2suU3RhdHMpIHtcbiAgY29uc3Qgc2VydmVySnNvbiA9IHNlcnZlclN0YXRzLnRvSnNvbih7IGFzc2V0czogdHJ1ZSB9KTtcbiAgcmV0dXJuIHBhdGguam9pbihzZXJ2ZXJKc29uLm91dHB1dFBhdGggPz8gJycsICdtYWluLmpzJyk7XG59XG5mdW5jdGlvbiBoYW5kbGVFcnJvcnM8XG4gIEYgZXh0ZW5kcyAoXG4gICAgcmVxOiBSZXF1ZXN0IHwgSW5jb21pbmdNZXNzYWdlLFxuICAgIHJlczogUmVzcG9uc2UgfCBTZXJ2ZXJSZXNwb25zZSxcbiAgKSA9PiBQcm9taXNlPHZvaWQ+LFxuPihmbjogRikge1xuICByZXR1cm4gYXN5bmMgZnVuY3Rpb24gKFxuICAgIHJlcTogUmVxdWVzdCB8IEluY29taW5nTWVzc2FnZSxcbiAgICByZXM6IFJlc3BvbnNlIHwgU2VydmVyUmVzcG9uc2UsXG4gICAgbmV4dDogTmV4dEZ1bmN0aW9uLFxuICApIHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIGF3YWl0IGZuKHJlcSwgcmVzKTtcbiAgICB9IGNhdGNoICh4KSB7XG4gICAgICBuZXh0KHgpO1xuICAgIH1cbiAgfTtcbn1cbmxldCByZW5kZXI6IFJlbmRlcjtcbi8vIFN0YXJ0IHRoZSBleHByZXNzIHNlcnZlciBhZnRlciB0aGUgZmlyc3QgY29tcGlsYXRpb25cbmZ1bmN0aW9uIGluaXRpYWxpemVBcHAoc3RhdHM6IHdlYnBhY2suU3RhdHNbXSkge1xuICBjb25zdCBbY2xpZW50U3RhdHMsIHNlcnZlclN0YXRzXSA9IHN0YXRzO1xuICBpZiAoXG4gICAgY2xpZW50U3RhdHM/LmNvbXBpbGF0aW9uPy5lcnJvcnM/Lmxlbmd0aCB8fFxuICAgIHNlcnZlclN0YXRzPy5jb21waWxhdGlvbj8uZXJyb3JzPy5sZW5ndGhcbiAgKSB7XG4gICAgbG9hZGVyLmZhaWwoJ0Vycm9ycyBmb3IgY2xpZW50IGJ1aWxkOiAnICsgY2xpZW50U3RhdHMuY29tcGlsYXRpb24uZXJyb3JzKTtcbiAgICBsb2FkZXIuZmFpbCgnRXJyb3JzIGZvciBzZXJ2ZXIgYnVpbGQ6ICcgKyBzZXJ2ZXJTdGF0cy5jb21waWxhdGlvbi5lcnJvcnMpO1xuICAgIC8vIFRPRE86IGhhbmRsZSBtb3JlIGdyYWNlZnVsbHlcbiAgICBwcm9jZXNzLmV4aXQoLTEpO1xuICB9IGVsc2Uge1xuICAgIGxvYWRlci5pbmZvKCdMYXVuY2hpbmcgc2VydmVyJyk7XG4gIH1cblxuICBjb25zdCB3cmFwcGluZ0FwcCA9IGV4cHJlc3MoKTtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gIC8vQHRzLWlnbm9yZVxuICB3cmFwcGluZ0FwcC51c2UoY29tcHJlc3MoKSk7XG5cbiAgLy8gQVNTRVRTXG4gIGNvbnN0IGNsaWVudE1hbmlmZXN0ID0gY2xpZW50U3RhdHMudG9Kc29uKCk7XG4gIGNvbnN0IGFzc2V0Um91dGUgPSBhc3luYyAocmVxOiBSZXF1ZXN0IHwgSW5jb21pbmdNZXNzYWdlLCByZXM6IGFueSkgPT4ge1xuICAgIGNvbnN0IGZpbGVuYW1lID1cbiAgICAgIHJlcS51cmxcbiAgICAgICAgPy5zdWJzdHJpbmcoKHByb2Nlc3MuZW52LldFQlBBQ0tfUFVCTElDX1BBVEggYXMgc3RyaW5nKS5sZW5ndGgpXG4gICAgICAgIC5zcGxpdCgnPycpWzBdID8/ICcnO1xuICAgIGNvbnN0IGFzc2V0UGF0aCA9IHBhdGguam9pbihjbGllbnRNYW5pZmVzdC5vdXRwdXRQYXRoID8/ICcnLCBmaWxlbmFtZSk7XG5cbiAgICB0cnkge1xuICAgICAgY29uc3QgZmlsZUNvbnRlbnQgPSAoYXdhaXQgcmVhZEZpbGUoYXNzZXRQYXRoKSkudG9TdHJpbmcoKTtcbiAgICAgIHJlcy5jb250ZW50VHlwZShmaWxlbmFtZSk7XG4gICAgICByZXMuc2VuZChmaWxlQ29udGVudCk7XG4gICAgfSBjYXRjaCAoZSkge1xuICAgICAgcmVzLnN0YXR1cyg0MDQpO1xuICAgICAgcmVzLnNlbmQoZSk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9O1xuICB3cmFwcGluZ0FwcC5nZXQoYCR7cHJvY2Vzcy5lbnYuV0VCUEFDS19QVUJMSUNfUEFUSH0qYCwgYXNzZXRSb3V0ZSk7XG5cbiAgLy8gU0VSVkVSIFNJREUgUkVOREVSSU5HXG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG4gIHJlbmRlciA9IHJlcXVpcmUoZ2V0U2VydmVyQnVuZGxlKHNlcnZlclN0YXRzKSkuZGVmYXVsdDtcbiAgd3JhcHBpbmdBcHAuZ2V0KFxuICAgICcvKicsXG4gICAgaGFuZGxlRXJyb3JzKGFzeW5jIGZ1bmN0aW9uIChyZXE6IGFueSwgcmVzOiBhbnkpIHtcbiAgICAgIGlmIChyZXEudXJsLmVuZHNXaXRoKCdmYXZpY29uLmljbycpKSB7XG4gICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDA0O1xuICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LXR5cGUnLCAndGV4dC9odG1sJyk7XG4gICAgICAgIHJlcy5zZW5kKCdub3QgZm91bmQnKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmVzLnNvY2tldC5vbignZXJyb3InLCAoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgY29uc29sZS5lcnJvcignRmF0YWwnLCBlcnJvcik7XG4gICAgICB9KTtcblxuICAgICAgYXdhaXQgcmVuZGVyKGNsaWVudE1hbmlmZXN0LCByZXEsIHJlcyk7XG4gICAgfSksXG4gICk7XG5cbiAgc2VydmVyID0gd3JhcHBpbmdBcHBcbiAgICAubGlzdGVuKFBPUlQsICgpID0+IHtcbiAgICAgIGxvYWRlci5zdWNjZWVkKGBTU1IgUnVubmluZ2ApO1xuICAgIH0pXG4gICAgLm9uKCdlcnJvcicsIGZ1bmN0aW9uIChlcnJvcjogYW55KSB7XG4gICAgICBpZiAoZXJyb3Iuc3lzY2FsbCAhPT0gJ2xpc3RlbicpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgICBjb25zdCBpc1BpcGUgPSAocG9ydE9yUGlwZTogc3RyaW5nIHwgbnVtYmVyKSA9PiBOdW1iZXIuaXNOYU4ocG9ydE9yUGlwZSk7XG4gICAgICBjb25zdCBiaW5kID0gaXNQaXBlKFBPUlQpID8gJ1BpcGUgJyArIFBPUlQgOiAnUG9ydCAnICsgUE9SVDtcbiAgICAgIHN3aXRjaCAoZXJyb3IuY29kZSkge1xuICAgICAgICBjYXNlICdFQUNDRVMnOlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYmluZCArICcgcmVxdWlyZXMgZWxldmF0ZWQgcHJpdmlsZWdlcycpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgY2FzZSAnRUFERFJJTlVTRSc6XG4gICAgICAgICAgY29uc29sZS5lcnJvcihiaW5kICsgJyBpcyBhbHJlYWR5IGluIHVzZScpO1xuICAgICAgICAgIHByb2Nlc3MuZXhpdCgxKTtcbiAgICAgICAgICBicmVhaztcbiAgICAgICAgZGVmYXVsdDpcbiAgICAgICAgICB0aHJvdyBlcnJvcjtcbiAgICAgIH1cbiAgICB9KTtcbn1cblxuY29uc3QgZGV2U2VydmVyID0gbmV3IFdlYnBhY2tEZXZTZXJ2ZXIoXG4gIC8vIHdyaXRlIHRvIG1lbW9yeSBmaWxlc3lzdGVtIHNvIHdlIGNhbiBpbXBvcnRcbiAge1xuICAgIC4uLndlYnBhY2tDb25maWdzWzBdLmRldlNlcnZlcixcbiAgICAvKmNsaWVudDoge1xuICAgICAgLi4ud2VicGFja0NvbmZpZ3NbMF0uZGV2U2VydmVyPy5jbGllbnQsXG4gICAgICB3ZWJTb2NrZXRVUkw6IHtcbiAgICAgICAgLi4ud2VicGFja0NvbmZpZ3NbMF0uZGV2U2VydmVyPy5jbGllbnQud2ViU29ja2V0VVJMLFxuICAgICAgICBwb3J0OiA4MDgwLFxuICAgICAgfSxcbiAgICB9LCovXG4gICAgZGV2TWlkZGxld2FyZToge1xuICAgICAgLi4ud2VicGFja0NvbmZpZ3NbMF0/LmRldlNlcnZlcj8uZGV2TWlkZGxld2FyZSxcbiAgICAgIG91dHB1dEZpbGVTeXN0ZW06IHtcbiAgICAgICAgLi4uZnMsXG4gICAgICAgIGpvaW46IHBhdGguam9pbiBhcyBhbnksXG4gICAgICB9IGFzIGFueSBhcyB0eXBlb2YgZnMsXG4gICAgfSxcbiAgfSxcbiAgY29tcGlsZXIsXG4pO1xuY29uc3QgcnVuU2VydmVyID0gYXN5bmMgKCkgPT4ge1xuICBhd2FpdCBkZXZTZXJ2ZXIuc3RhcnQoKTtcbiAgZGV2U2VydmVyLmNvbXBpbGVyLmhvb2tzLmRvbmUudGFwKFxuICAgICdBbmFuc2kgU2VydmVyJyxcbiAgICAobXVsdGlTdGF0czogd2VicGFjay5NdWx0aVN0YXRzIHwgd2VicGFjay5TdGF0cykgPT4ge1xuICAgICAgaWYgKCFtdWx0aVN0YXRzKSB7XG4gICAgICAgIGxvYWRlci5mYWlsKCdzdGF0cyBub3Qgc2VuZCcpO1xuICAgICAgICBwcm9jZXNzLmV4aXQoLTEpO1xuICAgICAgfVxuXG4gICAgICBpZiAoIU9iamVjdC5oYXNPd24obXVsdGlTdGF0cywgJ3N0YXRzJykpIHJldHVybjtcbiAgICAgIGlmIChzZXJ2ZXIgJiYgKG11bHRpU3RhdHMgYXMgd2VicGFjay5NdWx0aVN0YXRzKS5zdGF0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgIHJlbmRlciA9IChcbiAgICAgICAgICBpbXBvcnRGcmVzaChcbiAgICAgICAgICAgIGdldFNlcnZlckJ1bmRsZSgobXVsdGlTdGF0cyBhcyB3ZWJwYWNrLk11bHRpU3RhdHMpLnN0YXRzWzFdKSxcbiAgICAgICAgICApIGFzIGFueVxuICAgICAgICApLmRlZmF1bHQ7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIGlmICghc2VydmVyKSB7XG4gICAgICAgIHRyeSB7XG4gICAgICAgICAgaW5pdGlhbGl6ZUFwcCgobXVsdGlTdGF0cyBhcyB3ZWJwYWNrLk11bHRpU3RhdHMpLnN0YXRzKTtcbiAgICAgICAgfSBjYXRjaCAoZSkge1xuICAgICAgICAgIGxvYWRlci5mYWlsKCdGYWlsZWQgdG8gaW5pdGlhbGl6ZSBhcHAnKTtcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfSxcbiAgKTtcbn07XG5jb25zdCBzdG9wU2VydmVyID0gYXN5bmMgKCkgPT4ge1xuICBsb2FkZXIuaW5mbygnU3RvcHBpbmcgc2VydmVyLi4uJyk7XG4gIGF3YWl0IGRldlNlcnZlci5zdG9wKCk7XG4gIGxvYWRlci5pbmZvKCdTZXJ2ZXIgY2xvc2VkJyk7XG59O1xuXG5wcm9jZXNzLm9uKCdTSUdJTlQnLCAoKSA9PiB7XG4gIGxvYWRlci53YXJuKCdSZWNlaXZlZCBTSUdJTlQsIGRldnNlcnZlciBzaHV0dGluZyBkb3duJyk7XG4gIHN0b3BTZXJ2ZXIoKTtcbiAgcHJvY2Vzcy5leGl0KC0xKTtcbn0pO1xuXG5ydW5TZXJ2ZXIoKTtcbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7Ozs7QUFHQTtBQUNBLE1BQU1BLGFBQWEsR0FBR0MsT0FBTyxDQUFDQSxPQUFPLENBQUNDLE9BQVIsRUFDNUI7QUFDQUMsYUFBQSxDQUFLQyxJQUFMLENBQVVDLE9BQU8sQ0FBQ0MsR0FBUixFQUFWLEVBQXlCLGdCQUF6QixDQUY0QixDQUFELENBQTdCOztBQUtBLE1BQU1DLFVBQVUsR0FBR0YsT0FBTyxDQUFDRyxJQUFSLENBQWEsQ0FBYixDQUFuQjtBQUNBLE1BQU1DLElBQUksR0FBR0osT0FBTyxDQUFDSyxHQUFSLENBQVlELElBQVosSUFBb0IsSUFBakMsQyxDQUNBOztBQUNBSixPQUFPLENBQUNLLEdBQVIsQ0FBWUMsbUJBQVosR0FBa0MsVUFBbEM7O0FBRUEsSUFBSSxDQUFDSixVQUFMLEVBQWlCO0VBQ2ZLLE9BQU8sQ0FBQ0MsR0FBUixDQUFhLHVDQUFiO0VBQ0FSLE9BQU8sQ0FBQ1MsSUFBUixDQUFhLENBQUMsQ0FBZDtBQUNEOztBQUVERixPQUFPLENBQUNDLEdBQVIsQ0FDRUUsY0FBQSxDQUFNQyxXQUFOLENBQW1CLGlCQUFuQixDQURGLEVBRUVELGNBQUEsQ0FBTUUsVUFBTixDQUFpQlosT0FBTyxDQUFDSyxHQUFSLENBQVlRLG1CQUE3QixDQUZGO0FBSUEsTUFBTUMsTUFBTSxHQUFHLElBQUFDLFlBQUEsSUFBTUMsS0FBTixFQUFmLEMsQ0FFQTs7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
|
|
269
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJ3ZWJwYWNrQ29uZmlnIiwicmVxdWlyZSIsInJlc29sdmUiLCJwYXRoIiwiam9pbiIsInByb2Nlc3MiLCJjd2QiLCJlbnRyeXBvaW50IiwiYXJndiIsIlBPUlQiLCJlbnYiLCJXRUJQQUNLX1BVQkxJQ19QQVRIIiwiY29uc29sZSIsImxvZyIsImV4aXQiLCJjaGFsayIsImdyZWVuQnJpZ2h0IiwiY3lhbkJyaWdodCIsIldFQlBBQ0tfUFVCTElDX0hPU1QiLCJsb2FkZXIiLCJvcmEiLCJzdGFydCIsInZvbHVtZSIsIlZvbHVtZSIsImZzIiwiY3JlYXRlRnNGcm9tVm9sdW1lIiwidWZzIiwidXNlIiwiZGlza0ZzIiwicGF0Y2hSZXF1aXJlIiwicmVhZEZpbGUiLCJwcm9taXNpZnkiLCJzZXJ2ZXIiLCJob3RFbnRyeSIsImVudHJ5UGF0aCIsImdlbmVyYXRlZEVudHJ5cG9pbnQiLCJ0bXAiLCJmaWxlU3luYyIsInBvc3RmaXgiLCJ3cml0ZVN5bmMiLCJmZCIsIndlYnBhY2tDb25maWdzIiwibmFtZSIsIm1vZGUiLCJyZXBsYWNlIiwidGFyZ2V0IiwicGx1Z2lucyIsInB1c2giLCJ3ZWJwYWNrIiwib3B0aW1pemUiLCJMaW1pdENodW5rQ291bnRQbHVnaW4iLCJtYXhDaHVua3MiLCJjb21waWxlciIsInNvdXJjZU1hcFN1cHBvcnQiLCJpbnN0YWxsIiwiaG9va1JlcXVpcmUiLCJnZXRTZXJ2ZXJCdW5kbGUiLCJzZXJ2ZXJTdGF0cyIsInNlcnZlckpzb24iLCJ0b0pzb24iLCJhc3NldHMiLCJvdXRwdXRQYXRoIiwiaGFuZGxlRXJyb3JzIiwiZm4iLCJyZXEiLCJyZXMiLCJuZXh0IiwieCIsInJlbmRlciIsImluaXRpYWxpemVBcHAiLCJzdGF0cyIsImNsaWVudFN0YXRzIiwiY29tcGlsYXRpb24iLCJlcnJvcnMiLCJsZW5ndGgiLCJmYWlsIiwiaW5mbyIsIndyYXBwaW5nQXBwIiwiZXhwcmVzcyIsImNvbXByZXNzIiwiY2xpZW50TWFuaWZlc3QiLCJhc3NldFJvdXRlIiwiZmlsZW5hbWUiLCJ1cmwiLCJzdWJzdHJpbmciLCJzcGxpdCIsImFzc2V0UGF0aCIsImZpbGVDb250ZW50IiwidG9TdHJpbmciLCJjb250ZW50VHlwZSIsInNlbmQiLCJlIiwic3RhdHVzIiwiZ2V0IiwiZGVmYXVsdCIsImVuZHNXaXRoIiwic3RhdHVzQ29kZSIsInNldEhlYWRlciIsInNvY2tldCIsIm9uIiwiZXJyb3IiLCJsaXN0ZW4iLCJzdWNjZWVkIiwic3lzY2FsbCIsImlzUGlwZSIsInBvcnRPclBpcGUiLCJOdW1iZXIiLCJpc05hTiIsImJpbmQiLCJjb2RlIiwiZGV2U2VydmVyIiwiV2VicGFja0RldlNlcnZlciIsImRldk1pZGRsZXdhcmUiLCJvdXRwdXRGaWxlU3lzdGVtIiwicnVuU2VydmVyIiwiaG9va3MiLCJkb25lIiwidGFwIiwibXVsdGlTdGF0cyIsIk9iamVjdCIsImhhc093biIsImltcG9ydEZyZXNoIiwic3RvcFNlcnZlciIsInN0b3AiLCJ3YXJuIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3NjcmlwdHMvc3RhcnREZXZzZXJ2ZXIudHMiXSwic291cmNlc0NvbnRlbnQiOlsiIyEvdXNyL2Jpbi9lbnYgbm9kZVxuXG5pbXBvcnQgeyBwcm9taXNpZnkgfSBmcm9tICd1dGlsJztcbmltcG9ydCBkaXNrRnMgZnJvbSAnZnMnO1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCc7XG5pbXBvcnQgd2VicGFjaywgeyBNdWx0aUNvbXBpbGVyIH0gZnJvbSAnd2VicGFjayc7XG5pbXBvcnQgeyBjcmVhdGVGc0Zyb21Wb2x1bWUsIFZvbHVtZSB9IGZyb20gJ21lbWZzJztcbmltcG9ydCB7IFNlcnZlciwgSW5jb21pbmdNZXNzYWdlLCBTZXJ2ZXJSZXNwb25zZSB9IGZyb20gJ2h0dHAnO1xuaW1wb3J0IGV4cHJlc3MsIHsgTmV4dEZ1bmN0aW9uIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgb3JhIGZyb20gJ29yYSc7XG5pbXBvcnQgeyBwYXRjaFJlcXVpcmUgfSBmcm9tICdmcy1tb25rZXknO1xuaW1wb3J0IHRtcCBmcm9tICd0bXAnO1xuaW1wb3J0IHNvdXJjZU1hcFN1cHBvcnQgZnJvbSAnc291cmNlLW1hcC1zdXBwb3J0JztcbmltcG9ydCB7IHVmcyB9IGZyb20gJ3VuaW9uZnMnO1xuaW1wb3J0IGNvbXByZXNzIGZyb20gJ2NvbXByZXNzaW9uJztcbmltcG9ydCBXZWJwYWNrRGV2U2VydmVyIGZyb20gJ3dlYnBhY2stZGV2LXNlcnZlcic7XG5pbXBvcnQgaW1wb3J0RnJlc2ggZnJvbSAnaW1wb3J0LWZyZXNoJztcbmltcG9ydCBjaGFsayBmcm9tICdjaGFsayc7XG5cbmltcG9ydCAnY3Jvc3MtZmV0Y2gvcG9seWZpbGwnO1xuaW1wb3J0IHsgUmVuZGVyIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZSBAdHlwZXNjcmlwdC1lc2xpbnQvbm8tdmFyLXJlcXVpcmVzXG5jb25zdCB3ZWJwYWNrQ29uZmlnID0gcmVxdWlyZShyZXF1aXJlLnJlc29sdmUoXG4gIC8vIFRPRE86IHVzZSBub3JtYWwgcmVzb2x1dGlvbiBhbGdvcml0aG0gdG8gZmluZCB3ZWJwYWNrIGZpbGVcbiAgcGF0aC5qb2luKHByb2Nlc3MuY3dkKCksICd3ZWJwYWNrLmNvbmZpZycpLFxuKSk7XG5cbmNvbnN0IGVudHJ5cG9pbnQgPSBwcm9jZXNzLmFyZ3ZbMl07XG5jb25zdCBQT1JUID0gcHJvY2Vzcy5lbnYuUE9SVCB8fCAzMDAwO1xuLy9wcm9jZXNzLmVudi5XRUJQQUNLX1BVQkxJQ19IT1NUID0gYGh0dHA6Ly9sb2NhbGhvc3Q6JHtQT1JUfWA7IHRoaXMgYnJlYWtzIGNvbXBhdGliaWxpdHkgd2l0aCBzdGFja2JsaXR6XG5wcm9jZXNzLmVudi5XRUJQQUNLX1BVQkxJQ19QQVRIID0gJy9hc3NldHMvJztcblxuaWYgKCFlbnRyeXBvaW50KSB7XG4gIGNvbnNvbGUubG9nKGBVc2FnZTogc3RhcnQtYW5hbnNpIDxlbnRyeXBvaW50LWZpbGU+YCk7XG4gIHByb2Nlc3MuZXhpdCgtMSk7XG59XG5cbmNvbnNvbGUubG9nKFxuICBjaGFsay5ncmVlbkJyaWdodChgU3RhcnRpbmcgU1NSIGF0OmApLFxuICBjaGFsay5jeWFuQnJpZ2h0KHByb2Nlc3MuZW52LldFQlBBQ0tfUFVCTElDX0hPU1QgfHwgYGh0dHA6Ly9sb2NhbGhvc3Q6JHtQT1JUfWApLFxuKTtcbmNvbnN0IGxvYWRlciA9IG9yYSgpLnN0YXJ0KCk7XG5cbi8vIFNldCB1cCBpbiBtZW1vcnkgZmlsZXN5c3RlbVxuY29uc3Qgdm9sdW1lID0gbmV3IFZvbHVtZSgpO1xuY29uc3QgZnMgPSBjcmVhdGVGc0Zyb21Wb2x1bWUodm9sdW1lKTtcbnVmcy51c2UoZGlza0ZzKS51c2UoZnMgYXMgYW55KTtcblxucGF0Y2hSZXF1aXJlKHVmcyk7XG5jb25zdCByZWFkRmlsZSA9IHByb21pc2lmeSh1ZnMucmVhZEZpbGUpO1xubGV0IHNlcnZlcjogU2VydmVyIHwgdW5kZWZpbmVkO1xuXG4vLyBHZW5lcmF0ZSBhIHRlbXBvcmFyeSBmaWxlIHNvIHdlIGNhbiBob3QgcmVsb2FkIGZyb20gdGhlIHJvb3Qgb2YgdGhlIGFwcGxpY2F0aW9uXG5mdW5jdGlvbiBob3RFbnRyeShlbnRyeVBhdGg6IHN0cmluZykge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmVcbiAgLy8gQHRzLWlnbm9yZSBmb3Igc29tZSByZWFzb24gaXQncyBub3QgcGlja2luZyB1cCB0aGF0IG90aGVyIG9wdGlvbnMgYXJlIG9wdGlvbmFsXG4gIGNvbnN0IGdlbmVyYXRlZEVudHJ5cG9pbnQgPSB0bXAuZmlsZVN5bmMoeyBwb3N0Zml4OiAnLmpzJyB9KTtcbiAgZGlza0ZzLndyaXRlU3luYyhcbiAgICBnZW5lcmF0ZWRFbnRyeXBvaW50LmZkLFxuICAgIGBcbmltcG9ydCBlbnRyeSBmcm9tIFwiJHtwYXRoLnJlc29sdmUocHJvY2Vzcy5jd2QoKSwgZW50cnlQYXRoKX1cIjtcblxuaWYgKG1vZHVsZS5ob3QpIHtcbiAgbW9kdWxlLmhvdC5hY2NlcHQoKTtcbn1cblxuZXhwb3J0IGRlZmF1bHQgZW50cnk7XG4gIGAsXG4gICk7XG4gIHJldHVybiBnZW5lcmF0ZWRFbnRyeXBvaW50O1xufVxuXG5jb25zdCB3ZWJwYWNrQ29uZmlncyA9IFtcbiAgd2VicGFja0NvbmZpZyhcbiAgICB7XG4gICAgICBlbnRyeXBvaW50OiBob3RFbnRyeShlbnRyeXBvaW50KS5uYW1lLFxuICAgICAgbmFtZTogJ2NsaWVudCcsXG4gICAgfSxcbiAgICB7IG1vZGU6ICdkZXZlbG9wbWVudCcgfSxcbiAgKSxcbiAgd2VicGFja0NvbmZpZyhcbiAgICB7XG4gICAgICBlbnRyeXBvaW50OiBlbnRyeXBvaW50LnJlcGxhY2UoJy50c3gnLCAnLnNlcnZlci50c3gnKSxcbiAgICAgIG5hbWU6ICdzZXJ2ZXInLFxuICAgIH0sXG4gICAgeyBtb2RlOiAnZGV2ZWxvcG1lbnQnLCB0YXJnZXQ6ICdub2RlJyB9LFxuICApLFxuXSBhcyBjb25zdDtcbi8vIG9ubHkgaGF2ZSBvbmUgb3V0cHV0IGZvciBzZXJ2ZXIgc28gd2UgY2FuIGF2b2lkIGNhY2hlZCBtb2R1bGVzXG53ZWJwYWNrQ29uZmlnc1sxXS5wbHVnaW5zLnB1c2goXG4gIG5ldyB3ZWJwYWNrLm9wdGltaXplLkxpbWl0Q2h1bmtDb3VudFBsdWdpbih7IG1heENodW5rczogMSB9KSxcbik7XG4vLyBpbml0aWFsaXplIHRoZSB3ZWJwYWNrIGNvbXBpbGVyXG5jb25zdCBjb21waWxlcjogTXVsdGlDb21waWxlciA9IHdlYnBhY2sod2VicGFja0NvbmZpZ3MpO1xuXG5zb3VyY2VNYXBTdXBwb3J0Lmluc3RhbGwoeyBob29rUmVxdWlyZTogdHJ1ZSB9KTtcblxuZnVuY3Rpb24gZ2V0U2VydmVyQnVuZGxlKHNlcnZlclN0YXRzOiB3ZWJwYWNrLlN0YXRzKSB7XG4gIGNvbnN0IHNlcnZlckpzb24gPSBzZXJ2ZXJTdGF0cy50b0pzb24oeyBhc3NldHM6IHRydWUgfSk7XG4gIHJldHVybiBwYXRoLmpvaW4oc2VydmVySnNvbi5vdXRwdXRQYXRoID8/ICcnLCAnbWFpbi5qcycpO1xufVxuZnVuY3Rpb24gaGFuZGxlRXJyb3JzPFxuICBGIGV4dGVuZHMgKFxuICAgIHJlcTogUmVxdWVzdCB8IEluY29taW5nTWVzc2FnZSxcbiAgICByZXM6IFJlc3BvbnNlIHwgU2VydmVyUmVzcG9uc2UsXG4gICkgPT4gUHJvbWlzZTx2b2lkPixcbj4oZm46IEYpIHtcbiAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIChcbiAgICByZXE6IFJlcXVlc3QgfCBJbmNvbWluZ01lc3NhZ2UsXG4gICAgcmVzOiBSZXNwb25zZSB8IFNlcnZlclJlc3BvbnNlLFxuICAgIG5leHQ6IE5leHRGdW5jdGlvbixcbiAgKSB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBmbihyZXEsIHJlcyk7XG4gICAgfSBjYXRjaCAoeCkge1xuICAgICAgbmV4dCh4KTtcbiAgICB9XG4gIH07XG59XG5sZXQgcmVuZGVyOiBSZW5kZXI7XG4vLyBTdGFydCB0aGUgZXhwcmVzcyBzZXJ2ZXIgYWZ0ZXIgdGhlIGZpcnN0IGNvbXBpbGF0aW9uXG5mdW5jdGlvbiBpbml0aWFsaXplQXBwKHN0YXRzOiB3ZWJwYWNrLlN0YXRzW10pIHtcbiAgY29uc3QgW2NsaWVudFN0YXRzLCBzZXJ2ZXJTdGF0c10gPSBzdGF0cztcbiAgaWYgKFxuICAgIGNsaWVudFN0YXRzPy5jb21waWxhdGlvbj8uZXJyb3JzPy5sZW5ndGggfHxcbiAgICBzZXJ2ZXJTdGF0cz8uY29tcGlsYXRpb24/LmVycm9ycz8ubGVuZ3RoXG4gICkge1xuICAgIGxvYWRlci5mYWlsKCdFcnJvcnMgZm9yIGNsaWVudCBidWlsZDogJyArIGNsaWVudFN0YXRzLmNvbXBpbGF0aW9uLmVycm9ycyk7XG4gICAgbG9hZGVyLmZhaWwoJ0Vycm9ycyBmb3Igc2VydmVyIGJ1aWxkOiAnICsgc2VydmVyU3RhdHMuY29tcGlsYXRpb24uZXJyb3JzKTtcbiAgICAvLyBUT0RPOiBoYW5kbGUgbW9yZSBncmFjZWZ1bGx5XG4gICAgcHJvY2Vzcy5leGl0KC0xKTtcbiAgfSBlbHNlIHtcbiAgICBsb2FkZXIuaW5mbygnTGF1bmNoaW5nIHNlcnZlcicpO1xuICB9XG5cbiAgY29uc3Qgd3JhcHBpbmdBcHAgPSBleHByZXNzKCk7XG4gIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAvL0B0cy1pZ25vcmVcbiAgd3JhcHBpbmdBcHAudXNlKGNvbXByZXNzKCkpO1xuXG4gIC8vIEFTU0VUU1xuICBjb25zdCBjbGllbnRNYW5pZmVzdCA9IGNsaWVudFN0YXRzLnRvSnNvbigpO1xuICBjb25zdCBhc3NldFJvdXRlID0gYXN5bmMgKHJlcTogUmVxdWVzdCB8IEluY29taW5nTWVzc2FnZSwgcmVzOiBhbnkpID0+IHtcbiAgICBjb25zdCBmaWxlbmFtZSA9XG4gICAgICByZXEudXJsXG4gICAgICAgID8uc3Vic3RyaW5nKChwcm9jZXNzLmVudi5XRUJQQUNLX1BVQkxJQ19QQVRIIGFzIHN0cmluZykubGVuZ3RoKVxuICAgICAgICAuc3BsaXQoJz8nKVswXSA/PyAnJztcbiAgICBjb25zdCBhc3NldFBhdGggPSBwYXRoLmpvaW4oY2xpZW50TWFuaWZlc3Qub3V0cHV0UGF0aCA/PyAnJywgZmlsZW5hbWUpO1xuXG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IGZpbGVDb250ZW50ID0gKGF3YWl0IHJlYWRGaWxlKGFzc2V0UGF0aCkpLnRvU3RyaW5nKCk7XG4gICAgICByZXMuY29udGVudFR5cGUoZmlsZW5hbWUpO1xuICAgICAgcmVzLnNlbmQoZmlsZUNvbnRlbnQpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIHJlcy5zdGF0dXMoNDA0KTtcbiAgICAgIHJlcy5zZW5kKGUpO1xuICAgICAgcmV0dXJuO1xuICAgIH1cbiAgfTtcbiAgd3JhcHBpbmdBcHAuZ2V0KGAke3Byb2Nlc3MuZW52LldFQlBBQ0tfUFVCTElDX1BBVEh9KmAsIGFzc2V0Um91dGUpO1xuXG4gIC8vIFNFUlZFUiBTSURFIFJFTkRFUklOR1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICByZW5kZXIgPSByZXF1aXJlKGdldFNlcnZlckJ1bmRsZShzZXJ2ZXJTdGF0cykpLmRlZmF1bHQ7XG4gIHdyYXBwaW5nQXBwLmdldChcbiAgICAnLyonLFxuICAgIGhhbmRsZUVycm9ycyhhc3luYyBmdW5jdGlvbiAocmVxOiBhbnksIHJlczogYW55KSB7XG4gICAgICBpZiAocmVxLnVybC5lbmRzV2l0aCgnZmF2aWNvbi5pY28nKSkge1xuICAgICAgICByZXMuc3RhdHVzQ29kZSA9IDQwNDtcbiAgICAgICAgcmVzLnNldEhlYWRlcignQ29udGVudC10eXBlJywgJ3RleHQvaHRtbCcpO1xuICAgICAgICByZXMuc2VuZCgnbm90IGZvdW5kJyk7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cbiAgICAgIHJlcy5zb2NrZXQub24oJ2Vycm9yJywgKGVycm9yOiB1bmtub3duKSA9PiB7XG4gICAgICAgIGNvbnNvbGUuZXJyb3IoJ0ZhdGFsJywgZXJyb3IpO1xuICAgICAgfSk7XG5cbiAgICAgIGF3YWl0IHJlbmRlcihjbGllbnRNYW5pZmVzdCwgcmVxLCByZXMpO1xuICAgIH0pLFxuICApO1xuXG4gIHNlcnZlciA9IHdyYXBwaW5nQXBwXG4gICAgLmxpc3RlbihQT1JULCAoKSA9PiB7XG4gICAgICBsb2FkZXIuc3VjY2VlZChgU1NSIFJ1bm5pbmdgKTtcbiAgICB9KVxuICAgIC5vbignZXJyb3InLCBmdW5jdGlvbiAoZXJyb3I6IGFueSkge1xuICAgICAgaWYgKGVycm9yLnN5c2NhbGwgIT09ICdsaXN0ZW4nKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuICAgICAgY29uc3QgaXNQaXBlID0gKHBvcnRPclBpcGU6IHN0cmluZyB8IG51bWJlcikgPT4gTnVtYmVyLmlzTmFOKHBvcnRPclBpcGUpO1xuICAgICAgY29uc3QgYmluZCA9IGlzUGlwZShQT1JUKSA/ICdQaXBlICcgKyBQT1JUIDogJ1BvcnQgJyArIFBPUlQ7XG4gICAgICBzd2l0Y2ggKGVycm9yLmNvZGUpIHtcbiAgICAgICAgY2FzZSAnRUFDQ0VTJzpcbiAgICAgICAgICBjb25zb2xlLmVycm9yKGJpbmQgKyAnIHJlcXVpcmVzIGVsZXZhdGVkIHByaXZpbGVnZXMnKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGNhc2UgJ0VBRERSSU5VU0UnOlxuICAgICAgICAgIGNvbnNvbGUuZXJyb3IoYmluZCArICcgaXMgYWxyZWFkeSBpbiB1c2UnKTtcbiAgICAgICAgICBwcm9jZXNzLmV4aXQoMSk7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICAgIGRlZmF1bHQ6XG4gICAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG4gICAgfSk7XG59XG5cbmNvbnN0IGRldlNlcnZlciA9IG5ldyBXZWJwYWNrRGV2U2VydmVyKFxuICAvLyB3cml0ZSB0byBtZW1vcnkgZmlsZXN5c3RlbSBzbyB3ZSBjYW4gaW1wb3J0XG4gIHtcbiAgICAuLi53ZWJwYWNrQ29uZmlnc1swXS5kZXZTZXJ2ZXIsXG4gICAgLypjbGllbnQ6IHtcbiAgICAgIC4uLndlYnBhY2tDb25maWdzWzBdLmRldlNlcnZlcj8uY2xpZW50LFxuICAgICAgd2ViU29ja2V0VVJMOiB7XG4gICAgICAgIC4uLndlYnBhY2tDb25maWdzWzBdLmRldlNlcnZlcj8uY2xpZW50LndlYlNvY2tldFVSTCxcbiAgICAgICAgcG9ydDogODA4MCxcbiAgICAgIH0sXG4gICAgfSwqL1xuICAgIGRldk1pZGRsZXdhcmU6IHtcbiAgICAgIC4uLndlYnBhY2tDb25maWdzWzBdPy5kZXZTZXJ2ZXI/LmRldk1pZGRsZXdhcmUsXG4gICAgICBvdXRwdXRGaWxlU3lzdGVtOiB7XG4gICAgICAgIC4uLmZzLFxuICAgICAgICBqb2luOiBwYXRoLmpvaW4gYXMgYW55LFxuICAgICAgfSBhcyBhbnkgYXMgdHlwZW9mIGZzLFxuICAgIH0sXG4gIH0sXG4gIGNvbXBpbGVyLFxuKTtcbmNvbnN0IHJ1blNlcnZlciA9IGFzeW5jICgpID0+IHtcbiAgYXdhaXQgZGV2U2VydmVyLnN0YXJ0KCk7XG4gIGRldlNlcnZlci5jb21waWxlci5ob29rcy5kb25lLnRhcChcbiAgICAnQW5hbnNpIFNlcnZlcicsXG4gICAgKG11bHRpU3RhdHM6IHdlYnBhY2suTXVsdGlTdGF0cyB8IHdlYnBhY2suU3RhdHMpID0+IHtcbiAgICAgIGlmICghbXVsdGlTdGF0cykge1xuICAgICAgICBsb2FkZXIuZmFpbCgnc3RhdHMgbm90IHNlbmQnKTtcbiAgICAgICAgcHJvY2Vzcy5leGl0KC0xKTtcbiAgICAgIH1cblxuICAgICAgaWYgKCFPYmplY3QuaGFzT3duKG11bHRpU3RhdHMsICdzdGF0cycpKSByZXR1cm47XG4gICAgICBpZiAoc2VydmVyICYmIChtdWx0aVN0YXRzIGFzIHdlYnBhY2suTXVsdGlTdGF0cykuc3RhdHMubGVuZ3RoID4gMSkge1xuICAgICAgICByZW5kZXIgPSAoXG4gICAgICAgICAgaW1wb3J0RnJlc2goXG4gICAgICAgICAgICBnZXRTZXJ2ZXJCdW5kbGUoKG11bHRpU3RhdHMgYXMgd2VicGFjay5NdWx0aVN0YXRzKS5zdGF0c1sxXSksXG4gICAgICAgICAgKSBhcyBhbnlcbiAgICAgICAgKS5kZWZhdWx0O1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG4gICAgICBpZiAoIXNlcnZlcikge1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGluaXRpYWxpemVBcHAoKG11bHRpU3RhdHMgYXMgd2VicGFjay5NdWx0aVN0YXRzKS5zdGF0cyk7XG4gICAgICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgICAgICBsb2FkZXIuZmFpbCgnRmFpbGVkIHRvIGluaXRpYWxpemUgYXBwJyk7XG4gICAgICAgICAgY29uc29sZS5lcnJvcihlKTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0sXG4gICk7XG59O1xuY29uc3Qgc3RvcFNlcnZlciA9IGFzeW5jICgpID0+IHtcbiAgbG9hZGVyLmluZm8oJ1N0b3BwaW5nIHNlcnZlci4uLicpO1xuICBhd2FpdCBkZXZTZXJ2ZXIuc3RvcCgpO1xuICBsb2FkZXIuaW5mbygnU2VydmVyIGNsb3NlZCcpO1xufTtcblxucHJvY2Vzcy5vbignU0lHSU5UJywgKCkgPT4ge1xuICBsb2FkZXIud2FybignUmVjZWl2ZWQgU0lHSU5ULCBkZXZzZXJ2ZXIgc2h1dHRpbmcgZG93bicpO1xuICBzdG9wU2VydmVyKCk7XG4gIHByb2Nlc3MuZXhpdCgtMSk7XG59KTtcblxucnVuU2VydmVyKCk7XG4iXSwibWFwcGluZ3MiOiJBQUFBOzs7OztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUNBOztBQUVBOzs7O0FBR0E7QUFDQSxNQUFNQSxhQUFhLEdBQUdDLE9BQU8sQ0FBQ0EsT0FBTyxDQUFDQyxPQUFSLEVBQzVCO0FBQ0FDLGFBQUEsQ0FBS0MsSUFBTCxDQUFVQyxPQUFPLENBQUNDLEdBQVIsRUFBVixFQUF5QixnQkFBekIsQ0FGNEIsQ0FBRCxDQUE3Qjs7QUFLQSxNQUFNQyxVQUFVLEdBQUdGLE9BQU8sQ0FBQ0csSUFBUixDQUFhLENBQWIsQ0FBbkI7QUFDQSxNQUFNQyxJQUFJLEdBQUdKLE9BQU8sQ0FBQ0ssR0FBUixDQUFZRCxJQUFaLElBQW9CLElBQWpDLEMsQ0FDQTs7QUFDQUosT0FBTyxDQUFDSyxHQUFSLENBQVlDLG1CQUFaLEdBQWtDLFVBQWxDOztBQUVBLElBQUksQ0FBQ0osVUFBTCxFQUFpQjtFQUNmSyxPQUFPLENBQUNDLEdBQVIsQ0FBYSx1Q0FBYjtFQUNBUixPQUFPLENBQUNTLElBQVIsQ0FBYSxDQUFDLENBQWQ7QUFDRDs7QUFFREYsT0FBTyxDQUFDQyxHQUFSLENBQ0VFLGNBQUEsQ0FBTUMsV0FBTixDQUFtQixrQkFBbkIsQ0FERixFQUVFRCxjQUFBLENBQU1FLFVBQU4sQ0FBaUJaLE9BQU8sQ0FBQ0ssR0FBUixDQUFZUSxtQkFBWixJQUFvQyxvQkFBbUJULElBQUssRUFBN0UsQ0FGRjtBQUlBLE1BQU1VLE1BQU0sR0FBRyxJQUFBQyxZQUFBLElBQU1DLEtBQU4sRUFBZixDLENBRUE7O0FBQ0EsTUFBTUMsTUFBTSxHQUFHLElBQUlDLGFBQUosRUFBZjtBQUNBLE1BQU1DLEVBQUUsR0FBRyxJQUFBQyx5QkFBQSxFQUFtQkgsTUFBbkIsQ0FBWDs7QUFDQUksWUFBQSxDQUFJQyxHQUFKLENBQVFDLFdBQVIsRUFBZ0JELEdBQWhCLENBQW9CSCxFQUFwQjs7QUFFQSxJQUFBSyxzQkFBQSxFQUFhSCxZQUFiO0FBQ0EsTUFBTUksUUFBUSxHQUFHLElBQUFDLGVBQUEsRUFBVUwsWUFBQSxDQUFJSSxRQUFkLENBQWpCO0FBQ0EsSUFBSUUsTUFBSixDLENBRUE7O0FBQ0EsU0FBU0MsUUFBVCxDQUFrQkMsU0FBbEIsRUFBcUM7RUFDbkM7RUFDQTtFQUNBLE1BQU1DLG1CQUFtQixHQUFHQyxZQUFBLENBQUlDLFFBQUosQ0FBYTtJQUFFQyxPQUFPLEVBQUU7RUFBWCxDQUFiLENBQTVCOztFQUNBVixXQUFBLENBQU9XLFNBQVAsQ0FDRUosbUJBQW1CLENBQUNLLEVBRHRCLEVBRUc7QUFDTCxxQkFBcUJyQyxhQUFBLENBQUtELE9BQUwsQ0FBYUcsT0FBTyxDQUFDQyxHQUFSLEVBQWIsRUFBNEI0QixTQUE1QixDQUF1QztBQUM1RDtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxHQVZFOztFQVlBLE9BQU9DLG1CQUFQO0FBQ0Q7O0FBRUQsTUFBTU0sY0FBYyxHQUFHLENBQ3JCekMsYUFBYSxDQUNYO0VBQ0VPLFVBQVUsRUFBRTBCLFFBQVEsQ0FBQzFCLFVBQUQsQ0FBUixDQUFxQm1DLElBRG5DO0VBRUVBLElBQUksRUFBRTtBQUZSLENBRFcsRUFLWDtFQUFFQyxJQUFJLEVBQUU7QUFBUixDQUxXLENBRFEsRUFRckIzQyxhQUFhLENBQ1g7RUFDRU8sVUFBVSxFQUFFQSxVQUFVLENBQUNxQyxPQUFYLENBQW1CLE1BQW5CLEVBQTJCLGFBQTNCLENBRGQ7RUFFRUYsSUFBSSxFQUFFO0FBRlIsQ0FEVyxFQUtYO0VBQUVDLElBQUksRUFBRSxhQUFSO0VBQXVCRSxNQUFNLEVBQUU7QUFBL0IsQ0FMVyxDQVJRLENBQXZCLEMsQ0FnQkE7O0FBQ0FKLGNBQWMsQ0FBQyxDQUFELENBQWQsQ0FBa0JLLE9BQWxCLENBQTBCQyxJQUExQixDQUNFLElBQUlDLGdCQUFBLENBQVFDLFFBQVIsQ0FBaUJDLHFCQUFyQixDQUEyQztFQUFFQyxTQUFTLEVBQUU7QUFBYixDQUEzQyxDQURGLEUsQ0FHQTs7QUFDQSxNQUFNQyxRQUF1QixHQUFHLElBQUFKLGdCQUFBLEVBQVFQLGNBQVIsQ0FBaEM7O0FBRUFZLHlCQUFBLENBQWlCQyxPQUFqQixDQUF5QjtFQUFFQyxXQUFXLEVBQUU7QUFBZixDQUF6Qjs7QUFFQSxTQUFTQyxlQUFULENBQXlCQyxXQUF6QixFQUFxRDtFQUFBOztFQUNuRCxNQUFNQyxVQUFVLEdBQUdELFdBQVcsQ0FBQ0UsTUFBWixDQUFtQjtJQUFFQyxNQUFNLEVBQUU7RUFBVixDQUFuQixDQUFuQjtFQUNBLE9BQU96RCxhQUFBLENBQUtDLElBQUwsMEJBQVVzRCxVQUFVLENBQUNHLFVBQXJCLG9DQUFtQyxFQUFuQyxFQUF1QyxTQUF2QyxDQUFQO0FBQ0Q7O0FBQ0QsU0FBU0MsWUFBVCxDQUtFQyxFQUxGLEVBS1M7RUFDUCxPQUFPLGdCQUNMQyxHQURLLEVBRUxDLEdBRkssRUFHTEMsSUFISyxFQUlMO0lBQ0EsSUFBSTtNQUNGLE9BQU8sTUFBTUgsRUFBRSxDQUFDQyxHQUFELEVBQU1DLEdBQU4sQ0FBZjtJQUNELENBRkQsQ0FFRSxPQUFPRSxDQUFQLEVBQVU7TUFDVkQsSUFBSSxDQUFDQyxDQUFELENBQUo7SUFDRDtFQUNGLENBVkQ7QUFXRDs7QUFDRCxJQUFJQyxNQUFKLEMsQ0FDQTs7QUFDQSxTQUFTQyxhQUFULENBQXVCQyxLQUF2QixFQUErQztFQUFBOztFQUM3QyxNQUFNLENBQUNDLFdBQUQsRUFBY2QsV0FBZCxJQUE2QmEsS0FBbkM7O0VBQ0EsSUFDRUMsV0FBVyxTQUFYLElBQUFBLFdBQVcsV0FBWCw2QkFBQUEsV0FBVyxDQUFFQyxXQUFiLGtHQUEwQkMsTUFBMUIsMEVBQWtDQyxNQUFsQyxJQUNBakIsV0FEQSxhQUNBQSxXQURBLHdDQUNBQSxXQUFXLENBQUVlLFdBRGIsNEVBQ0Esc0JBQTBCQyxNQUQxQixtREFDQSx1QkFBa0NDLE1BRnBDLEVBR0U7SUFDQXZELE1BQU0sQ0FBQ3dELElBQVAsQ0FBWSw4QkFBOEJKLFdBQVcsQ0FBQ0MsV0FBWixDQUF3QkMsTUFBbEU7SUFDQXRELE1BQU0sQ0FBQ3dELElBQVAsQ0FBWSw4QkFBOEJsQixXQUFXLENBQUNlLFdBQVosQ0FBd0JDLE1BQWxFLEVBRkEsQ0FHQTs7SUFDQXBFLE9BQU8sQ0FBQ1MsSUFBUixDQUFhLENBQUMsQ0FBZDtFQUNELENBUkQsTUFRTztJQUNMSyxNQUFNLENBQUN5RCxJQUFQLENBQVksa0JBQVo7RUFDRDs7RUFFRCxNQUFNQyxXQUFXLEdBQUcsSUFBQUMsZ0JBQUEsR0FBcEIsQ0FkNkMsQ0FlN0M7RUFDQTs7RUFDQUQsV0FBVyxDQUFDbEQsR0FBWixDQUFnQixJQUFBb0Qsb0JBQUEsR0FBaEIsRUFqQjZDLENBbUI3Qzs7RUFDQSxNQUFNQyxjQUFjLEdBQUdULFdBQVcsQ0FBQ1osTUFBWixFQUF2Qjs7RUFDQSxNQUFNc0IsVUFBVSxHQUFHLE9BQU9qQixHQUFQLEVBQXVDQyxHQUF2QyxLQUFvRDtJQUFBOztJQUNyRSxNQUFNaUIsUUFBUSx3Q0FDWmxCLEdBQUcsQ0FBQ21CLEdBRFEsNkNBQ1osU0FDSUMsU0FESixDQUNlL0UsT0FBTyxDQUFDSyxHQUFSLENBQVlDLG1CQUFiLENBQTRDK0QsTUFEMUQsRUFFR1csS0FGSCxDQUVTLEdBRlQsRUFFYyxDQUZkLENBRFksb0NBR1EsRUFIdEI7O0lBSUEsTUFBTUMsU0FBUyxHQUFHbkYsYUFBQSxDQUFLQyxJQUFMLDBCQUFVNEUsY0FBYyxDQUFDbkIsVUFBekIsb0NBQXVDLEVBQXZDLEVBQTJDcUIsUUFBM0MsQ0FBbEI7O0lBRUEsSUFBSTtNQUNGLE1BQU1LLFdBQVcsR0FBRyxDQUFDLE1BQU16RCxRQUFRLENBQUN3RCxTQUFELENBQWYsRUFBNEJFLFFBQTVCLEVBQXBCO01BQ0F2QixHQUFHLENBQUN3QixXQUFKLENBQWdCUCxRQUFoQjtNQUNBakIsR0FBRyxDQUFDeUIsSUFBSixDQUFTSCxXQUFUO0lBQ0QsQ0FKRCxDQUlFLE9BQU9JLENBQVAsRUFBVTtNQUNWMUIsR0FBRyxDQUFDMkIsTUFBSixDQUFXLEdBQVg7TUFDQTNCLEdBQUcsQ0FBQ3lCLElBQUosQ0FBU0MsQ0FBVDtNQUNBO0lBQ0Q7RUFDRixDQWhCRDs7RUFpQkFkLFdBQVcsQ0FBQ2dCLEdBQVosQ0FBaUIsR0FBRXhGLE9BQU8sQ0FBQ0ssR0FBUixDQUFZQyxtQkFBb0IsR0FBbkQsRUFBdURzRSxVQUF2RCxFQXRDNkMsQ0F3QzdDO0VBQ0E7O0VBQ0FiLE1BQU0sR0FBR25FLE9BQU8sQ0FBQ3VELGVBQWUsQ0FBQ0MsV0FBRCxDQUFoQixDQUFQLENBQXNDcUMsT0FBL0M7RUFDQWpCLFdBQVcsQ0FBQ2dCLEdBQVosQ0FDRSxJQURGLEVBRUUvQixZQUFZLENBQUMsZ0JBQWdCRSxHQUFoQixFQUEwQkMsR0FBMUIsRUFBb0M7SUFDL0MsSUFBSUQsR0FBRyxDQUFDbUIsR0FBSixDQUFRWSxRQUFSLENBQWlCLGFBQWpCLENBQUosRUFBcUM7TUFDbkM5QixHQUFHLENBQUMrQixVQUFKLEdBQWlCLEdBQWpCO01BQ0EvQixHQUFHLENBQUNnQyxTQUFKLENBQWMsY0FBZCxFQUE4QixXQUE5QjtNQUNBaEMsR0FBRyxDQUFDeUIsSUFBSixDQUFTLFdBQVQ7TUFDQTtJQUNEOztJQUNEekIsR0FBRyxDQUFDaUMsTUFBSixDQUFXQyxFQUFYLENBQWMsT0FBZCxFQUF3QkMsS0FBRCxJQUFvQjtNQUN6Q3hGLE9BQU8sQ0FBQ3dGLEtBQVIsQ0FBYyxPQUFkLEVBQXVCQSxLQUF2QjtJQUNELENBRkQ7SUFJQSxNQUFNaEMsTUFBTSxDQUFDWSxjQUFELEVBQWlCaEIsR0FBakIsRUFBc0JDLEdBQXRCLENBQVo7RUFDRCxDQVpXLENBRmQ7RUFpQkFqQyxNQUFNLEdBQUc2QyxXQUFXLENBQ2pCd0IsTUFETSxDQUNDNUYsSUFERCxFQUNPLE1BQU07SUFDbEJVLE1BQU0sQ0FBQ21GLE9BQVAsQ0FBZ0IsYUFBaEI7RUFDRCxDQUhNLEVBSU5ILEVBSk0sQ0FJSCxPQUpHLEVBSU0sVUFBVUMsS0FBVixFQUFzQjtJQUNqQyxJQUFJQSxLQUFLLENBQUNHLE9BQU4sS0FBa0IsUUFBdEIsRUFBZ0M7TUFDOUIsTUFBTUgsS0FBTjtJQUNEOztJQUNELE1BQU1JLE1BQU0sR0FBSUMsVUFBRCxJQUFpQ0MsTUFBTSxDQUFDQyxLQUFQLENBQWFGLFVBQWIsQ0FBaEQ7O0lBQ0EsTUFBTUcsSUFBSSxHQUFHSixNQUFNLENBQUMvRixJQUFELENBQU4sR0FBZSxVQUFVQSxJQUF6QixHQUFnQyxVQUFVQSxJQUF2RDs7SUFDQSxRQUFRMkYsS0FBSyxDQUFDUyxJQUFkO01BQ0UsS0FBSyxRQUFMO1FBQ0VqRyxPQUFPLENBQUN3RixLQUFSLENBQWNRLElBQUksR0FBRywrQkFBckI7UUFDQXZHLE9BQU8sQ0FBQ1MsSUFBUixDQUFhLENBQWI7UUFDQTs7TUFDRixLQUFLLFlBQUw7UUFDRUYsT0FBTyxDQUFDd0YsS0FBUixDQUFjUSxJQUFJLEdBQUcsb0JBQXJCO1FBQ0F2RyxPQUFPLENBQUNTLElBQVIsQ0FBYSxDQUFiO1FBQ0E7O01BQ0Y7UUFDRSxNQUFNc0YsS0FBTjtJQVZKO0VBWUQsQ0F0Qk0sQ0FBVDtBQXVCRDs7QUFFRCxNQUFNVSxTQUFTLEdBQUcsSUFBSUMseUJBQUosRUFDaEI7QUFDQSxFQUNFLEdBQUd0RSxjQUFjLENBQUMsQ0FBRCxDQUFkLENBQWtCcUUsU0FEdkI7O0VBRUU7QUFDSjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7RUFDSUUsYUFBYSxFQUFFLEVBQ2Isd0JBQUd2RSxjQUFjLENBQUMsQ0FBRCxDQUFqQiw4RUFBRyxpQkFBbUJxRSxTQUF0QiwwREFBRyxzQkFBOEJFLGFBQWpDLENBRGE7SUFFYkMsZ0JBQWdCLEVBQUUsRUFDaEIsR0FBR3pGLEVBRGE7TUFFaEJwQixJQUFJLEVBQUVELGFBQUEsQ0FBS0M7SUFGSztFQUZMO0FBVGpCLENBRmdCLEVBbUJoQmdELFFBbkJnQixDQUFsQjs7QUFxQkEsTUFBTThELFNBQVMsR0FBRyxZQUFZO0VBQzVCLE1BQU1KLFNBQVMsQ0FBQ3pGLEtBQVYsRUFBTjtFQUNBeUYsU0FBUyxDQUFDMUQsUUFBVixDQUFtQitELEtBQW5CLENBQXlCQyxJQUF6QixDQUE4QkMsR0FBOUIsQ0FDRSxlQURGLEVBRUdDLFVBQUQsSUFBb0Q7SUFDbEQsSUFBSSxDQUFDQSxVQUFMLEVBQWlCO01BQ2ZuRyxNQUFNLENBQUN3RCxJQUFQLENBQVksZ0JBQVo7TUFDQXRFLE9BQU8sQ0FBQ1MsSUFBUixDQUFhLENBQUMsQ0FBZDtJQUNEOztJQUVELElBQUksQ0FBQ3lHLE1BQU0sQ0FBQ0MsTUFBUCxDQUFjRixVQUFkLEVBQTBCLE9BQTFCLENBQUwsRUFBeUM7O0lBQ3pDLElBQUl0RixNQUFNLElBQUtzRixVQUFELENBQW1DaEQsS0FBbkMsQ0FBeUNJLE1BQXpDLEdBQWtELENBQWhFLEVBQW1FO01BQ2pFTixNQUFNLEdBQ0osSUFBQXFELG9CQUFBLEVBQ0VqRSxlQUFlLENBQUU4RCxVQUFELENBQW1DaEQsS0FBbkMsQ0FBeUMsQ0FBekMsQ0FBRCxDQURqQixDQURPLENBSVB3QixPQUpGO01BS0E7SUFDRDs7SUFDRCxJQUFJLENBQUM5RCxNQUFMLEVBQWE7TUFDWCxJQUFJO1FBQ0ZxQyxhQUFhLENBQUVpRCxVQUFELENBQW1DaEQsS0FBcEMsQ0FBYjtNQUNELENBRkQsQ0FFRSxPQUFPcUIsQ0FBUCxFQUFVO1FBQ1Z4RSxNQUFNLENBQUN3RCxJQUFQLENBQVksMEJBQVo7UUFDQS9ELE9BQU8sQ0FBQ3dGLEtBQVIsQ0FBY1QsQ0FBZDtNQUNEO0lBQ0Y7RUFDRixDQXpCSDtBQTJCRCxDQTdCRDs7QUE4QkEsTUFBTStCLFVBQVUsR0FBRyxZQUFZO0VBQzdCdkcsTUFBTSxDQUFDeUQsSUFBUCxDQUFZLG9CQUFaO0VBQ0EsTUFBTWtDLFNBQVMsQ0FBQ2EsSUFBVixFQUFOO0VBQ0F4RyxNQUFNLENBQUN5RCxJQUFQLENBQVksZUFBWjtBQUNELENBSkQ7O0FBTUF2RSxPQUFPLENBQUM4RixFQUFSLENBQVcsUUFBWCxFQUFxQixNQUFNO0VBQ3pCaEYsTUFBTSxDQUFDeUcsSUFBUCxDQUFZLDBDQUFaO0VBQ0FGLFVBQVU7RUFDVnJILE9BQU8sQ0FBQ1MsSUFBUixDQUFhLENBQUMsQ0FBZDtBQUNELENBSkQ7QUFNQW9HLFNBQVMifQ==
|
|
@@ -8,11 +8,13 @@ declare type Props = {
|
|
|
8
8
|
}[];
|
|
9
9
|
head: React.ReactNode;
|
|
10
10
|
title: string;
|
|
11
|
+
rootId: string;
|
|
11
12
|
};
|
|
12
|
-
declare function Document({ assets, head, children, title }: Props): JSX.Element;
|
|
13
|
+
declare function Document({ assets, head, children, title, rootId, }: Props): JSX.Element;
|
|
13
14
|
declare namespace Document {
|
|
14
15
|
var defaultProps: {
|
|
15
16
|
head: JSX.Element;
|
|
17
|
+
rootId: string;
|
|
16
18
|
};
|
|
17
19
|
}
|
|
18
20
|
export default Document;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DocumentComponent.d.ts","sourceRoot":"","sources":["../../src/spouts/DocumentComponent.tsx"],"names":[],"mappings":";AAAA,aAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"DocumentComponent.d.ts","sourceRoot":"","sources":["../../src/spouts/DocumentComponent.tsx"],"names":[],"mappings":";AAAA,aAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,GAAG,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IACtD,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,iBAAwB,QAAQ,CAAC,EAC/B,MAAM,EACN,IAAI,EACJ,QAAQ,EACR,KAAK,EACL,MAAM,GACP,EAAE,KAAK,eA0BP;kBAhCuB,QAAQ;;;;;;eAAR,QAAQ"}
|
|
@@ -13,15 +13,16 @@ function Document({
|
|
|
13
13
|
assets,
|
|
14
14
|
head,
|
|
15
15
|
children,
|
|
16
|
-
title
|
|
16
|
+
title,
|
|
17
|
+
rootId
|
|
17
18
|
}) {
|
|
18
|
-
return /*#__PURE__*/(0, _jsx2.default)("html", {}, void 0, /*#__PURE__*/(0, _jsx2.default)("head", {
|
|
19
|
-
suppressHydrationWarning: true
|
|
20
|
-
}, void 0, head, assets.map((asset, i) => /*#__PURE__*/_react.default.createElement("link", {
|
|
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", {
|
|
21
20
|
key: i,
|
|
22
21
|
rel: "preload",
|
|
23
22
|
...asset
|
|
24
|
-
})), /*#__PURE__*/(0, _jsx2.default)("title", {}, void 0, title)), /*#__PURE__*/(0, _jsx2.default)("body", {}, void 0,
|
|
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", {
|
|
25
26
|
dangerouslySetInnerHTML: {
|
|
26
27
|
__html: `assetManifest = ${JSON.stringify(assets)};`
|
|
27
28
|
}
|
|
@@ -44,6 +45,7 @@ Document.defaultProps = {
|
|
|
44
45
|
}), /*#__PURE__*/(0, _jsx2.default)("link", {
|
|
45
46
|
rel: "shortcut icon",
|
|
46
47
|
href: "/assets/favicon.ico"
|
|
47
|
-
}))
|
|
48
|
+
})),
|
|
49
|
+
rootId: 'anansi-root'
|
|
48
50
|
};
|
|
49
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
51
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEb2N1bWVudCIsImFzc2V0cyIsImhlYWQiLCJjaGlsZHJlbiIsInRpdGxlIiwicm9vdElkIiwibWFwIiwiYXNzZXQiLCJpIiwiX19odG1sIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbHRlciIsImhyZWYiLCJlbmRzV2l0aCIsImRlZmF1bHRQcm9wcyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvRG9jdW1lbnRDb21wb25lbnQudHN4Il0sInNvdXJjZXNDb250ZW50IjpbInR5cGUgUHJvcHMgPSB7XG4gIGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGU7XG4gIGFzc2V0czogeyBocmVmOiBzdHJpbmc7IGFzPzogc3RyaW5nOyByZWw/OiBzdHJpbmcgfVtdO1xuICBoZWFkOiBSZWFjdC5SZWFjdE5vZGU7XG4gIHRpdGxlOiBzdHJpbmc7XG4gIHJvb3RJZDogc3RyaW5nO1xufTtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRG9jdW1lbnQoe1xuICBhc3NldHMsXG4gIGhlYWQsXG4gIGNoaWxkcmVuLFxuICB0aXRsZSxcbiAgcm9vdElkLFxufTogUHJvcHMpIHtcbiAgcmV0dXJuIChcbiAgICA8aHRtbD5cbiAgICAgIDxoZWFkPlxuICAgICAgICB7aGVhZH1cbiAgICAgICAge2Fzc2V0cy5tYXAoKGFzc2V0LCBpKSA9PiAoXG4gICAgICAgICAgPGxpbmsga2V5PXtpfSByZWw9XCJwcmVsb2FkXCIgey4uLmFzc2V0fSAvPlxuICAgICAgICApKX1cbiAgICAgICAgPHRpdGxlPnt0aXRsZX08L3RpdGxlPlxuICAgICAgPC9oZWFkPlxuICAgICAgPGJvZHk+XG4gICAgICAgIDxkaXYgaWQ9e3Jvb3RJZH0+e2NoaWxkcmVufTwvZGl2PlxuICAgICAgICB7LyogdGhpcyBlbnN1cmVzIHRoZSBjbGllbnQgY2FuIGh5ZHJhdGUgdGhlIGFzc2V0cyBwcm9wICovfVxuICAgICAgICA8c2NyaXB0XG4gICAgICAgICAgZGFuZ2Vyb3VzbHlTZXRJbm5lckhUTUw9e3tcbiAgICAgICAgICAgIF9faHRtbDogYGFzc2V0TWFuaWZlc3QgPSAke0pTT04uc3RyaW5naWZ5KGFzc2V0cyl9O2AsXG4gICAgICAgICAgfX1cbiAgICAgICAgLz5cbiAgICAgICAge2Fzc2V0c1xuICAgICAgICAgIC5maWx0ZXIoKHsgaHJlZiB9KSA9PiBocmVmLmVuZHNXaXRoKCcuanMnKSlcbiAgICAgICAgICAubWFwKCh7IGhyZWYgfSwgaSkgPT4gKFxuICAgICAgICAgICAgPHNjcmlwdCBrZXk9e2l9IHNyYz17aHJlZn0gYXN5bmMgLz5cbiAgICAgICAgICApKX1cbiAgICAgIDwvYm9keT5cbiAgICA8L2h0bWw+XG4gICk7XG59XG5Eb2N1bWVudC5kZWZhdWx0UHJvcHMgPSB7XG4gIGhlYWQ6IChcbiAgICA8PlxuICAgICAgPG1ldGEgY2hhclNldD1cInV0Zi04XCIgLz5cbiAgICAgIDxtZXRhIG5hbWU9XCJ2aWV3cG9ydFwiIGNvbnRlbnQ9XCJ3aWR0aD1kZXZpY2Utd2lkdGgsIGluaXRpYWwtc2NhbGU9MVwiIC8+XG4gICAgICA8bGluayByZWw9XCJzaG9ydGN1dCBpY29uXCIgaHJlZj1cIi9hc3NldHMvZmF2aWNvbi5pY29cIiAvPlxuICAgIDwvPlxuICApLFxuICByb290SWQ6ICdhbmFuc2ktcm9vdCcsXG59O1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQVFlLFNBQVNBLFFBQVQsQ0FBa0I7RUFDL0JDLE1BRCtCO0VBRS9CQyxJQUYrQjtFQUcvQkMsUUFIK0I7RUFJL0JDLEtBSitCO0VBSy9CQztBQUwrQixDQUFsQixFQU1MO0VBQ1Isb0JBQ0Usb0RBQ0UsdUNBQ0dILElBREgsRUFFR0QsTUFBTSxDQUFDSyxHQUFQLENBQVcsQ0FBQ0MsS0FBRCxFQUFRQyxDQUFSLGtCQUNWO0lBQU0sR0FBRyxFQUFFQSxDQUFYO0lBQWMsR0FBRyxFQUFDLFNBQWxCO0lBQUEsR0FBZ0NEO0VBQWhDLEVBREQsQ0FGSCxlQUtFLHdDQUFRSCxLQUFSLENBTEYsQ0FERixlQVFFLG9EQUNFO0lBQUssRUFBRSxFQUFFQztFQUFULFdBQWtCRixRQUFsQixDQURGLGVBR0U7SUFDRSx1QkFBdUIsRUFBRTtNQUN2Qk0sTUFBTSxFQUFHLG1CQUFrQkMsSUFBSSxDQUFDQyxTQUFMLENBQWVWLE1BQWYsQ0FBdUI7SUFEM0I7RUFEM0IsRUFIRixFQVFHQSxNQUFNLENBQ0pXLE1BREYsQ0FDUyxDQUFDO0lBQUVDO0VBQUYsQ0FBRCxLQUFjQSxJQUFJLENBQUNDLFFBQUwsQ0FBYyxLQUFkLENBRHZCLEVBRUVSLEdBRkYsQ0FFTSxDQUFDO0lBQUVPO0VBQUYsQ0FBRCxFQUFXTCxDQUFYLGtCQUNIO0lBQWdCLEdBQUcsRUFBRUssSUFBckI7SUFBMkIsS0FBSztFQUFoQyxHQUFhTCxDQUFiLENBSEgsQ0FSSCxDQVJGLENBREY7QUF5QkQ7O0FBQ0RSLFFBQVEsQ0FBQ2UsWUFBVCxHQUF3QjtFQUN0QmIsSUFBSSxlQUNGLHlFQUNFO0lBQU0sT0FBTyxFQUFDO0VBQWQsRUFERixlQUVFO0lBQU0sSUFBSSxFQUFDLFVBQVg7SUFBc0IsT0FBTyxFQUFDO0VBQTlCLEVBRkYsZUFHRTtJQUFNLEdBQUcsRUFBQyxlQUFWO0lBQTBCLElBQUksRUFBQztFQUEvQixFQUhGLENBRm9CO0VBUXRCRyxNQUFNLEVBQUU7QUFSYyxDQUF4QiJ9
|
package/lib/spouts/document.d.ts
CHANGED
|
@@ -8,8 +8,6 @@ declare type NeededProps = {
|
|
|
8
8
|
export default function documentSpout(options: {
|
|
9
9
|
head?: React.ReactNode;
|
|
10
10
|
title: string;
|
|
11
|
-
}): <T extends NeededProps>(next: () => Promise<T>) => () => Promise<T
|
|
12
|
-
app: JSX.Element;
|
|
13
|
-
}>;
|
|
11
|
+
}): <T extends NeededProps>(next: () => Promise<T>) => () => Promise<T>;
|
|
14
12
|
export {};
|
|
15
13
|
//# sourceMappingURL=document.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/spouts/document.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"document.d.ts","sourceRoot":"","sources":["../../src/spouts/document.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE5C,aAAK,WAAW,GAAG;IACjB,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,YAAY,CAAC;AAEjB,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,OAAO,EAAE;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;CACf,uEAQA"}
|
package/lib/spouts/document.js
CHANGED
|
@@ -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
|
|
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,
|
|
14
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJkb2N1bWVudFNwb3V0Iiwib3B0aW9ucyIsIm5leHQiLCJuZXh0UHJvcHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc3BvdXRzL2RvY3VtZW50LnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBSb3V0ZSB9IGZyb20gJ0BhbmFuc2kvcm91dGVyJztcblxuaW1wb3J0IHR5cGUgeyBSZXNvbHZlUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcblxudHlwZSBOZWVkZWRQcm9wcyA9IHtcbiAgbWF0Y2hlZFJvdXRlczogUm91dGU8YW55PltdO1xuICB0aXRsZT86IHN0cmluZztcbn0gJiBSZXNvbHZlUHJvcHM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIGRvY3VtZW50U3BvdXQob3B0aW9uczoge1xuICBoZWFkPzogUmVhY3QuUmVhY3ROb2RlO1xuICB0aXRsZTogc3RyaW5nO1xufSkge1xuICByZXR1cm4gZnVuY3Rpb24gPFQgZXh0ZW5kcyBOZWVkZWRQcm9wcz4obmV4dDogKCkgPT4gUHJvbWlzZTxUPikge1xuICAgIHJldHVybiBhc3luYyAoKSA9PiB7XG4gICAgICBjb25zdCBuZXh0UHJvcHMgPSBhd2FpdCBuZXh0KCk7XG5cbiAgICAgIHJldHVybiBuZXh0UHJvcHM7XG4gICAgfTtcbiAgfTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFVZSxTQUFTQSxhQUFULENBQXVCQyxPQUF2QixFQUdaO0VBQ0QsT0FBTyxVQUFpQ0MsSUFBakMsRUFBeUQ7SUFDOUQsT0FBTyxZQUFZO01BQ2pCLE1BQU1DLFNBQVMsR0FBRyxNQUFNRCxJQUFJLEVBQTVCO01BRUEsT0FBT0MsU0FBUDtJQUNELENBSkQ7RUFLRCxDQU5EO0FBT0QifQ==
|
|
@@ -8,6 +8,7 @@ declare type NeededProps = {
|
|
|
8
8
|
export default function DocumentSpout(options: {
|
|
9
9
|
head?: React.ReactNode;
|
|
10
10
|
title: string;
|
|
11
|
+
rootId: string;
|
|
11
12
|
}): <T extends NeededProps>(next: (props: ServerProps) => Promise<T>) => (props: ServerProps) => Promise<T & {
|
|
12
13
|
app: JSX.Element;
|
|
13
14
|
}>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"document.server.d.ts","sourceRoot":"","sources":["../../src/spouts/document.server.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGzD,aAAK,WAAW,GAAG;IACjB,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,YAAY,CAAC;AAEjB,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,OAAO,EAAE;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"document.server.d.ts","sourceRoot":"","sources":["../../src/spouts/document.server.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,gBAAgB,CAAC;AAE5C,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGzD,aAAK,WAAW,GAAG;IACjB,aAAa,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,YAAY,CAAC;AAEjB,MAAM,CAAC,OAAO,UAAU,aAAa,CAAC,OAAO,EAAE;IAC7C,IAAI,CAAC,EAAE,KAAK,CAAC,SAAS,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,yCAEiB,WAAW,4BAEJ,WAAW;;GA0CnC"}
|
|
@@ -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,
|
|
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.
|
|
3
|
+
"version": "0.5.2",
|
|
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,17 +62,20 @@
|
|
|
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.2",
|
|
61
66
|
"@babel/cli": "7.17.10",
|
|
62
|
-
"@babel/core": "7.
|
|
67
|
+
"@babel/core": "7.18.0",
|
|
63
68
|
"@types/compression": "^1.7.2",
|
|
64
69
|
"@types/source-map-support": "^0.5.4",
|
|
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.
|
|
78
|
+
"@anansi/router": "^0.5.2",
|
|
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:
|
|
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
|
}
|
package/src/floodSpouts.tsx
CHANGED
|
@@ -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
|
}
|
|
@@ -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,12 +3,19 @@ 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({
|
|
9
|
+
export default function Document({
|
|
10
|
+
assets,
|
|
11
|
+
head,
|
|
12
|
+
children,
|
|
13
|
+
title,
|
|
14
|
+
rootId,
|
|
15
|
+
}: Props) {
|
|
9
16
|
return (
|
|
10
17
|
<html>
|
|
11
|
-
<head
|
|
18
|
+
<head>
|
|
12
19
|
{head}
|
|
13
20
|
{assets.map((asset, i) => (
|
|
14
21
|
<link key={i} rel="preload" {...asset} />
|
|
@@ -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>
|
package/src/spouts/document.tsx
CHANGED
|
@@ -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
|
}
|