@anansi/core 0.9.0 → 0.10.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +28 -0
- package/dist/client.js +3 -2
- package/dist/client.js.map +1 -1
- package/dist/server.js.map +1 -1
- package/lib/scripts/startDevserver.d.ts.map +1 -1
- package/lib/scripts/startDevserver.js +16 -13
- package/lib/spouts/document.server.d.ts +1 -1
- package/lib/spouts/document.server.d.ts.map +1 -1
- package/lib/spouts/document.server.js +1 -1
- package/lib/spouts/router.d.ts +2 -0
- package/lib/spouts/router.d.ts.map +1 -1
- package/lib/spouts/router.js +3 -2
- package/package.json +9 -8
- package/src/scripts/startDevserver.ts +14 -15
- package/src/spouts/document.server.tsx +1 -1
- package/src/spouts/router.tsx +7 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,34 @@
|
|
|
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.10.0](https://github.com/ntucker/anansi/compare/@anansi/core@0.9.0...@anansi/core@0.10.0) (2022-06-09)
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
### 🚀 Features
|
|
10
|
+
|
|
11
|
+
* add router onChange() ([5c981ed](https://github.com/ntucker/anansi/commit/5c981ed587b55a80fd4f604fc24fb143d2355a06))
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
### 💅 Enhancement
|
|
15
|
+
|
|
16
|
+
* Do require cache invalidation ourselves ([22b4e4c](https://github.com/ntucker/anansi/commit/22b4e4c2e4ce3d7de999813bd4e9397e770fe788))
|
|
17
|
+
* Improve devserver node 'require' reliability ([#1538](https://github.com/ntucker/anansi/issues/1538)) ([96b6a54](https://github.com/ntucker/anansi/commit/96b6a54562b97f116fc987b41fbf7547770debc8))
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
### 🐛 Bug Fix
|
|
21
|
+
|
|
22
|
+
* rootId is optional ([ff43166](https://github.com/ntucker/anansi/commit/ff43166d457ac93ffca2eae0738d81e734b6936e))
|
|
23
|
+
* SSR hot-reloading ([9809ad5](https://github.com/ntucker/anansi/commit/9809ad5798e9082554f0358fcd9c301a87e4acbf))
|
|
24
|
+
|
|
25
|
+
|
|
26
|
+
### 📦 Package
|
|
27
|
+
|
|
28
|
+
* Move compression to correct package ([1ce18ba](https://github.com/ntucker/anansi/commit/1ce18ba9d7dc4d04682184bc1fa74354684294bb))
|
|
29
|
+
* Update all non-major dependencies ([#1531](https://github.com/ntucker/anansi/issues/1531)) ([2677241](https://github.com/ntucker/anansi/commit/26772415c2763f35c1720a08bb4b5417214f20d3))
|
|
30
|
+
* Update jest monorepo to ^28.1.1 ([#1534](https://github.com/ntucker/anansi/issues/1534)) ([b73dea2](https://github.com/ntucker/anansi/commit/b73dea2ee14f914bdbca189000265693d7fb112f))
|
|
31
|
+
|
|
32
|
+
|
|
33
|
+
|
|
6
34
|
## [0.9.0](https://github.com/ntucker/anansi/compare/@anansi/core@0.8.0...@anansi/core@0.9.0) (2022-05-29)
|
|
7
35
|
|
|
8
36
|
|
package/dist/client.js
CHANGED
|
@@ -139,10 +139,11 @@ function routerSpout(options) {
|
|
|
139
139
|
return /*#__PURE__*/external_react_default().createElement(router_namespaceObject.RouteProvider, {
|
|
140
140
|
router: router,
|
|
141
141
|
resolveWith: resolveWith,
|
|
142
|
+
onChange: options.onChange,
|
|
142
143
|
__self: this,
|
|
143
144
|
__source: {
|
|
144
145
|
fileName: router_jsxFileName,
|
|
145
|
-
lineNumber:
|
|
146
|
+
lineNumber: 23,
|
|
146
147
|
columnNumber: 9
|
|
147
148
|
}
|
|
148
149
|
}, children);
|
|
@@ -162,7 +163,7 @@ function routerSpout(options) {
|
|
|
162
163
|
__self: this,
|
|
163
164
|
__source: {
|
|
164
165
|
fileName: router_jsxFileName,
|
|
165
|
-
lineNumber:
|
|
166
|
+
lineNumber: 46,
|
|
166
167
|
columnNumber: 14
|
|
167
168
|
}
|
|
168
169
|
}, nextProps.app)
|
package/dist/client.js.map
CHANGED
|
@@ -1 +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;
|
|
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;AAOA;AAMA;AAGA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;;AAEA;AACA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAJA;AAMA;AACA;AACA;;ACjDA;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';\nimport type { Update } 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 onChange?: (update: Update, callback: () => void | undefined) => void;\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\n router={router}\n resolveWith={resolveWith}\n onChange={options.onChange}\n >\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 router,\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.map
CHANGED
|
@@ -1 +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;AAEA;;AAnBA;AAuBA;;AACA;AACA;;AACA;AACA;;AC3DA;;;;;;;ACSA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;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;AAAA;AAEA;AACA;AAFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AAXA;;;AC5CA;AAKA;AAOA;AAMA;AAGA;AAAA;;AACA;AAEA;AAEA;AAOA;;AACA;AACA;AAAA;;AAEA;AACA;AACA;;AACA;AAFA;AAKA;AAGA;AAAA;AAGA;;AAAA;AAGA;AAHA;;AASA;AAQA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAGA;AAEA;AAGA;AACA;AACA;AAJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AAnDA;AAHA;AAqEA;;AAEA;AACA;AAEA;;AAAA;AAAA;AAGA;;AC/FA;;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;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAJA;AAMA;AACA;AACA;;ACvCA;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 = 200 }: { 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); Removing this avoids, \"React currently only supports piping to one writable stream.\"\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 charSet: string;\n};\n\nexport default function Document({\n assets,\n head,\n children,\n title,\n rootId,\n charSet,\n}: Props) {\n return (\n <html>\n <head>\n <meta charSet={charSet} />\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 name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link\n rel=\"shortcut icon\"\n href={`${process.env.WEBPACK_PUBLIC_PATH ?? '/'}favicon.ico`}\n />\n </>\n ),\n charSet: 'utf-8',\n rootId: 'anansi-root',\n};\n","import React from 'react';\nimport type { Route } from '@anansi/router';\nimport { StatsChunkGroup } from 'webpack';\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 charSet?: 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 publicPath = props.clientManifest.publicPath;\n\n if (\n Object.keys(props.clientManifest?.entrypoints ?? {}).length < 1 ||\n publicPath === undefined\n )\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\n const assetList: string[] = [];\n Object.values(props.clientManifest?.entrypoints ?? {}).forEach(\n entrypoint => {\n assetList.push(...assetMap(entrypoint.assets ?? []));\n },\n );\n new Set(\n assetMap(\n Object.values(props.clientManifest.namedChunkGroups ?? {})\n .filter(({ name }) =>\n nextProps.matchedRoutes.some(route => name?.includes(route.name)),\n )\n .flatMap(chunk => [\n ...(chunk.assets ?? []),\n // any chunk preloads\n ...childrenAssets(chunk),\n ]),\n ),\n ).forEach(asset => assetList.push(asset));\n\n // find additional assets to preload based on matched route\n const assets: {\n href: string;\n as?: string | undefined;\n rel?: string | undefined;\n }[] = assetList\n .filter(asset => !asset.endsWith('.hot-update.js'))\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\nfunction childrenAssets(chunk: StatsChunkGroup) {\n return chunk.children\n ? Object.values(chunk.children).flatMap(preload =>\n preload.flatMap(c => c.assets ?? []),\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 router,\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":""}
|
|
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;AAEA;;AAnBA;AAuBA;;AACA;AACA;;AACA;AACA;;AC3DA;;;;;;;ACSA;AACA;AACA;AACA;AACA;AACA;AACA;AANA;AAQA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AACA;AAAA;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;AAAA;AAEA;AACA;AAFA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA;AACA;AAXA;;;AC5CA;AAKA;AAOA;AAMA;AAGA;AAAA;;AACA;AAEA;AAEA;AAOA;;AACA;AACA;AAAA;;AAEA;AACA;AACA;;AACA;AAFA;AAKA;AAGA;AAAA;AAGA;;AAAA;AAGA;AAHA;;AASA;AAQA;AAAA;AAAA;AAEA;AAAA;AAAA;AACA;AAAA;AAGA;AAEA;AAGA;AACA;AACA;AAJA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AAnDA;AAHA;AAqEA;;AAEA;AACA;AAEA;;AAAA;AAAA;AAGA;;AC/FA;;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;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAJA;AAMA;AACA;AACA;;ACvCA;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 = 200 }: { 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); Removing this avoids, \"React currently only supports piping to one writable stream.\"\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 charSet: string;\n};\n\nexport default function Document({\n assets,\n head,\n children,\n title,\n rootId,\n charSet,\n}: Props) {\n return (\n <html>\n <head>\n <meta charSet={charSet} />\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 name=\"viewport\" content=\"width=device-width, initial-scale=1\" />\n <link\n rel=\"shortcut icon\"\n href={`${process.env.WEBPACK_PUBLIC_PATH ?? '/'}favicon.ico`}\n />\n </>\n ),\n charSet: 'utf-8',\n rootId: 'anansi-root',\n};\n","import React from 'react';\nimport type { Route } from '@anansi/router';\nimport { StatsChunkGroup } from 'webpack';\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 charSet?: 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 publicPath = props.clientManifest.publicPath;\n\n if (\n Object.keys(props.clientManifest?.entrypoints ?? {}).length < 1 ||\n publicPath === undefined\n )\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\n const assetList: string[] = [];\n Object.values(props.clientManifest?.entrypoints ?? {}).forEach(\n entrypoint => {\n assetList.push(...assetMap(entrypoint.assets ?? []));\n },\n );\n new Set(\n assetMap(\n Object.values(props.clientManifest.namedChunkGroups ?? {})\n .filter(({ name }) =>\n nextProps.matchedRoutes.some(route => name?.includes(route.name)),\n )\n .flatMap(chunk => [\n ...(chunk.assets ?? []),\n // any chunk preloads\n ...childrenAssets(chunk),\n ]),\n ),\n ).forEach(asset => assetList.push(asset));\n\n // find additional assets to preload based on matched route\n const assets: {\n href: string;\n as?: string | undefined;\n rel?: string | undefined;\n }[] = assetList\n .filter(asset => !asset.endsWith('.hot-update.js'))\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\nfunction childrenAssets(chunk: StatsChunkGroup) {\n return chunk.children\n ? Object.values(chunk.children).flatMap(preload =>\n preload.flatMap(c => c.assets ?? []),\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 router,\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":""}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"startDevserver.d.ts","sourceRoot":"","sources":["../../src/scripts/startDevserver.ts"],"names":[],"mappings":";
|
|
1
|
+
{"version":3,"file":"startDevserver.d.ts","sourceRoot":"","sources":["../../src/scripts/startDevserver.ts"],"names":[],"mappings":";AAgBA,OAAO,sBAAsB,CAAC;AAe9B,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,UAAU,EAAE,MAAM,EAClB,GAAG,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,QAmNlC"}
|
|
@@ -16,8 +16,6 @@ var _webpack = _interopRequireDefault(require("webpack"));
|
|
|
16
16
|
|
|
17
17
|
var _memfs = require("memfs");
|
|
18
18
|
|
|
19
|
-
var _fsMonkey = require("fs-monkey");
|
|
20
|
-
|
|
21
19
|
var _tmp = _interopRequireDefault(require("tmp"));
|
|
22
20
|
|
|
23
21
|
var _sourceMapSupport = _interopRequireDefault(require("source-map-support"));
|
|
@@ -26,10 +24,10 @@ var _unionfs = require("unionfs");
|
|
|
26
24
|
|
|
27
25
|
var _webpackDevServer = _interopRequireDefault(require("webpack-dev-server"));
|
|
28
26
|
|
|
29
|
-
var _importFresh = _interopRequireDefault(require("import-fresh"));
|
|
30
|
-
|
|
31
27
|
var _runtime = _interopRequireDefault(require("webpack/lib/logging/runtime"));
|
|
32
28
|
|
|
29
|
+
var _fsRequire = require("fs-require");
|
|
30
|
+
|
|
33
31
|
require("cross-fetch/polyfill");
|
|
34
32
|
|
|
35
33
|
// run directly from node
|
|
@@ -59,7 +57,7 @@ function startDevServer(entrypoint, env = {}) {
|
|
|
59
57
|
|
|
60
58
|
_unionfs.ufs.use(_fs.default).use(fs);
|
|
61
59
|
|
|
62
|
-
(0,
|
|
60
|
+
const fsRequire = (0, _fsRequire.createFsRequire)(_unionfs.ufs);
|
|
63
61
|
const readFile = (0, _util.promisify)(_unionfs.ufs.readFile);
|
|
64
62
|
let server; // Generate a temporary file so we can hot reload from the root of the application
|
|
65
63
|
|
|
@@ -126,10 +124,12 @@ function startDevServer(entrypoint, env = {}) {
|
|
|
126
124
|
};
|
|
127
125
|
}
|
|
128
126
|
|
|
129
|
-
|
|
127
|
+
let initRender = [];
|
|
130
128
|
|
|
131
129
|
let render = (...args) => new Promise(resolve => {
|
|
132
|
-
|
|
130
|
+
var _initRender;
|
|
131
|
+
|
|
132
|
+
(_initRender = initRender) === null || _initRender === void 0 ? void 0 : _initRender.push({
|
|
133
133
|
args,
|
|
134
134
|
resolve
|
|
135
135
|
});
|
|
@@ -150,14 +150,17 @@ function startDevServer(entrypoint, env = {}) {
|
|
|
150
150
|
} // ASSETS
|
|
151
151
|
|
|
152
152
|
|
|
153
|
-
const clientManifest = clientStats.toJson();
|
|
153
|
+
const clientManifest = clientStats.toJson();
|
|
154
|
+
const serverEntry = getServerBundle(serverStats); // reload modules
|
|
155
|
+
// TODO: should we just reset entire cache each time? then we could avoid needing one output
|
|
156
|
+
|
|
157
|
+
delete fsRequire.cache[fsRequire.resolve(serverEntry)]; // eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
158
|
+
|
|
159
|
+
render = fsRequire(serverEntry).default.bind(undefined, clientManifest); // SERVER SIDE ENTRYPOINT
|
|
154
160
|
|
|
155
161
|
if (Array.isArray(initRender)) {
|
|
156
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
157
|
-
render = require(getServerBundle(serverStats)).default.bind(undefined, clientManifest);
|
|
158
162
|
initRender.forEach(init => render(...init.args).then(init.resolve));
|
|
159
|
-
|
|
160
|
-
render = (0, _importFresh.default)(getServerBundle(serverStats)).default.bind(undefined, clientManifest);
|
|
163
|
+
initRender = undefined;
|
|
161
164
|
}
|
|
162
165
|
}
|
|
163
166
|
|
|
@@ -230,4 +233,4 @@ function startDevServer(entrypoint, env = {}) {
|
|
|
230
233
|
});
|
|
231
234
|
runServer();
|
|
232
235
|
}
|
|
233
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXF1aXJlIiwibWFpbiIsIm1vZHVsZSIsImVudHJ5cG9pbnQiLCJwcm9jZXNzIiwiYXJndiIsImNvbnNvbGUiLCJsb2ciLCJleGl0Iiwic3RhcnREZXZTZXJ2ZXIiLCJlbnYiLCJ3ZWJwYWNrQ29uZmlnIiwicmVzb2x2ZSIsInBhdGgiLCJqb2luIiwiY3dkIiwibG9nZ2luZyIsImdldExvZ2dlciIsInZvbHVtZSIsIlZvbHVtZSIsImZzIiwiY3JlYXRlRnNGcm9tVm9sdW1lIiwidWZzIiwidXNlIiwiZGlza0ZzIiwicGF0Y2hSZXF1aXJlIiwicmVhZEZpbGUiLCJwcm9taXNpZnkiLCJzZXJ2ZXIiLCJob3RFbnRyeSIsImVudHJ5UGF0aCIsImdlbmVyYXRlZEVudHJ5cG9pbnQiLCJ0bXAiLCJmaWxlU3luYyIsInBvc3RmaXgiLCJ3cml0ZVN5bmMiLCJmZCIsIndlYnBhY2tDb25maWdzIiwiZW50cnlwYXRoIiwibmFtZSIsIm1vZGUiLCJyZXBsYWNlIiwiQlJPV1NFUlNMSVNUX0VOViIsInRhcmdldCIsInBsdWdpbnMiLCJwdXNoIiwid2VicGFjayIsIm9wdGltaXplIiwiTGltaXRDaHVua0NvdW50UGx1Z2luIiwibWF4Q2h1bmtzIiwiY29tcGlsZXIiLCJzb3VyY2VNYXBTdXBwb3J0IiwiaW5zdGFsbCIsImhvb2tSZXF1aXJlIiwiZ2V0U2VydmVyQnVuZGxlIiwic2VydmVyU3RhdHMiLCJzZXJ2ZXJKc29uIiwidG9Kc29uIiwiYXNzZXRzIiwib3V0cHV0UGF0aCIsImhhbmRsZUVycm9ycyIsImZuIiwicmVxIiwicmVzIiwibmV4dCIsIngiLCJpbml0UmVuZGVyIiwicmVuZGVyIiwiYXJncyIsIlByb21pc2UiLCJpbXBvcnRSZW5kZXIiLCJzdGF0cyIsImNsaWVudFN0YXRzIiwiY29tcGlsYXRpb24iLCJlcnJvcnMiLCJsZW5ndGgiLCJlcnJvciIsImluZm8iLCJjbGllbnRNYW5pZmVzdCIsIkFycmF5IiwiaXNBcnJheSIsImRlZmF1bHQiLCJiaW5kIiwidW5kZWZpbmVkIiwiZm9yRWFjaCIsImluaXQiLCJ0aGVuIiwiaW1wb3J0RnJlc2giLCJkZXZTZXJ2ZXIiLCJXZWJwYWNrRGV2U2VydmVyIiwiZGV2TWlkZGxld2FyZSIsIm91dHB1dEZpbGVTeXN0ZW0iLCJzZXR1cE1pZGRsZXdhcmVzIiwibWlkZGxld2FyZXMiLCJFcnJvciIsIm90aGVyUm91dGVzIiwiV0VCUEFDS19QVUJMSUNfUEFUSCIsIk9iamVjdCIsImtleXMiLCJwcm94eSIsImFwcCIsImdldCIsIlJlZ0V4cCIsInVybCIsImVuZHNXaXRoIiwic3RhdHVzQ29kZSIsInNldEhlYWRlciIsInNlbmQiLCJzb2NrZXQiLCJvbiIsInJ1blNlcnZlciIsInN0YXJ0IiwiaG9va3MiLCJkb25lIiwidGFwIiwibXVsdGlTdGF0cyIsImhhc093biIsImUiLCJzdG9wU2VydmVyIiwic3RvcCIsIndhcm4iXSwic291cmNlcyI6WyIuLi8uLi9zcmMvc2NyaXB0cy9zdGFydERldnNlcnZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyIjIS91c3IvYmluL2VudiBub2RlXG5cbmltcG9ydCB7IHByb21pc2lmeSB9IGZyb20gJ3V0aWwnO1xuaW1wb3J0IGRpc2tGcyBmcm9tICdmcyc7XG5pbXBvcnQgcGF0aCBmcm9tICdwYXRoJztcbmltcG9ydCB3ZWJwYWNrLCB7IE11bHRpQ29tcGlsZXIgfSBmcm9tICd3ZWJwYWNrJztcbmltcG9ydCB7IGNyZWF0ZUZzRnJvbVZvbHVtZSwgVm9sdW1lIH0gZnJvbSAnbWVtZnMnO1xuaW1wb3J0IHsgU2VydmVyLCBJbmNvbWluZ01lc3NhZ2UsIFNlcnZlclJlc3BvbnNlIH0gZnJvbSAnaHR0cCc7XG5pbXBvcnQgdHlwZSB7IE5leHRGdW5jdGlvbiB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHsgcGF0Y2hSZXF1aXJlIH0gZnJvbSAnZnMtbW9ua2V5JztcbmltcG9ydCB0bXAgZnJvbSAndG1wJztcbmltcG9ydCBzb3VyY2VNYXBTdXBwb3J0IGZyb20gJ3NvdXJjZS1tYXAtc3VwcG9ydCc7XG5pbXBvcnQgeyB1ZnMgfSBmcm9tICd1bmlvbmZzJztcbmltcG9ydCBXZWJwYWNrRGV2U2VydmVyIGZyb20gJ3dlYnBhY2stZGV2LXNlcnZlcic7XG5pbXBvcnQgaW1wb3J0RnJlc2ggZnJvbSAnaW1wb3J0LWZyZXNoJztcbmltcG9ydCBsb2dnaW5nIGZyb20gJ3dlYnBhY2svbGliL2xvZ2dpbmcvcnVudGltZSc7XG5cbmltcG9ydCAnY3Jvc3MtZmV0Y2gvcG9seWZpbGwnO1xuaW1wb3J0IHsgQm91bmRSZW5kZXIgfSBmcm9tICcuL3R5cGVzJztcblxuLy8gcnVuIGRpcmVjdGx5IGZyb20gbm9kZVxuaWYgKHJlcXVpcmUubWFpbiA9PT0gbW9kdWxlKSB7XG4gIGNvbnN0IGVudHJ5cG9pbnQgPSBwcm9jZXNzLmFyZ3ZbMl07XG5cbiAgaWYgKCFlbnRyeXBvaW50KSB7XG4gICAgY29uc29sZS5sb2coYFVzYWdlOiBzdGFydC1hbmFuc2kgPGVudHJ5cG9pbnQtZmlsZT5gKTtcbiAgICBwcm9jZXNzLmV4aXQoLTEpO1xuICB9XG5cbiAgc3RhcnREZXZTZXJ2ZXIoZW50cnlwb2ludCk7XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHN0YXJ0RGV2U2VydmVyKFxuICBlbnRyeXBvaW50OiBzdHJpbmcsXG4gIGVudjogUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSB7fSxcbikge1xuICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICBjb25zdCB3ZWJwYWNrQ29uZmlnID0gcmVxdWlyZShyZXF1aXJlLnJlc29sdmUoXG4gICAgLy8gVE9ETzogdXNlIG5vcm1hbCByZXNvbHV0aW9uIGFsZ29yaXRobSB0byBmaW5kIHdlYnBhY2sgZmlsZVxuICAgIHBhdGguam9pbihwcm9jZXNzLmN3ZCgpLCAnd2VicGFjay5jb25maWcnKSxcbiAgKSk7XG5cbiAgY29uc3QgbG9nID0gbG9nZ2luZy5nZXRMb2dnZXIoJ2FuYW5zaS1kZXZzZXJ2ZXInKTtcblxuICAvLyBTZXQgdXAgaW4gbWVtb3J5IGZpbGVzeXN0ZW1cbiAgY29uc3Qgdm9sdW1lID0gbmV3IFZvbHVtZSgpO1xuICBjb25zdCBmcyA9IGNyZWF0ZUZzRnJvbVZvbHVtZSh2b2x1bWUpO1xuICB1ZnMudXNlKGRpc2tGcykudXNlKGZzIGFzIGFueSk7XG5cbiAgcGF0Y2hSZXF1aXJlKHVmcyk7XG4gIGNvbnN0IHJlYWRGaWxlID0gcHJvbWlzaWZ5KHVmcy5yZWFkRmlsZSk7XG4gIGxldCBzZXJ2ZXI6IFNlcnZlciB8IHVuZGVmaW5lZDtcblxuICAvLyBHZW5lcmF0ZSBhIHRlbXBvcmFyeSBmaWxlIHNvIHdlIGNhbiBob3QgcmVsb2FkIGZyb20gdGhlIHJvb3Qgb2YgdGhlIGFwcGxpY2F0aW9uXG4gIGZ1bmN0aW9uIGhvdEVudHJ5KGVudHJ5UGF0aDogc3RyaW5nKSB7XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lXG4gICAgLy8gQHRzLWlnbm9yZSBmb3Igc29tZSByZWFzb24gaXQncyBub3QgcGlja2luZyB1cCB0aGF0IG90aGVyIG9wdGlvbnMgYXJlIG9wdGlvbmFsXG4gICAgY29uc3QgZ2VuZXJhdGVkRW50cnlwb2ludCA9IHRtcC5maWxlU3luYyh7IHBvc3RmaXg6ICcuanMnIH0pO1xuICAgIGRpc2tGcy53cml0ZVN5bmMoXG4gICAgICBnZW5lcmF0ZWRFbnRyeXBvaW50LmZkLFxuICAgICAgYFxuICBpbXBvcnQgZW50cnkgZnJvbSBcIiR7cGF0aC5yZXNvbHZlKHByb2Nlc3MuY3dkKCksIGVudHJ5UGF0aCl9XCI7XG5cbiAgaWYgKG1vZHVsZS5ob3QpIHtcbiAgICBtb2R1bGUuaG90LmFjY2VwdCgpO1xuICB9XG5cbiAgZXhwb3J0IGRlZmF1bHQgZW50cnk7XG4gICAgYCxcbiAgICApO1xuICAgIHJldHVybiBnZW5lcmF0ZWRFbnRyeXBvaW50O1xuICB9XG5cbiAgY29uc3Qgd2VicGFja0NvbmZpZ3MgPSBbXG4gICAgd2VicGFja0NvbmZpZyhcbiAgICAgIHtcbiAgICAgICAgLi4uZW52LFxuICAgICAgICBlbnRyeXBhdGg6IGhvdEVudHJ5KGVudHJ5cG9pbnQpLm5hbWUsXG4gICAgICAgIG5hbWU6ICdjbGllbnQnLFxuICAgICAgfSxcbiAgICAgIHsgbW9kZTogJ2RldmVsb3BtZW50JyB9LFxuICAgICksXG4gICAgd2VicGFja0NvbmZpZyhcbiAgICAgIHtcbiAgICAgICAgLi4uZW52LFxuICAgICAgICBlbnRyeXBhdGg6IGVudHJ5cG9pbnQucmVwbGFjZSgnLnRzeCcsICcuc2VydmVyLnRzeCcpLFxuICAgICAgICBuYW1lOiAnc2VydmVyJyxcbiAgICAgICAgQlJPV1NFUlNMSVNUX0VOVjogJ2N1cnJlbnQgbm9kZScsXG4gICAgICB9LFxuICAgICAgeyBtb2RlOiAnZGV2ZWxvcG1lbnQnLCB0YXJnZXQ6ICdub2RlJyB9LFxuICAgICksXG4gIF0gYXMgY29uc3Q7XG4gIC8vIG9ubHkgaGF2ZSBvbmUgb3V0cHV0IGZvciBzZXJ2ZXIgc28gd2UgY2FuIGF2b2lkIGNhY2hlZCBtb2R1bGVzXG4gIHdlYnBhY2tDb25maWdzWzFdLnBsdWdpbnMucHVzaChcbiAgICBuZXcgd2VicGFjay5vcHRpbWl6ZS5MaW1pdENodW5rQ291bnRQbHVnaW4oeyBtYXhDaHVua3M6IDEgfSksXG4gICk7XG4gIC8vIGluaXRpYWxpemUgdGhlIHdlYnBhY2sgY29tcGlsZXJcbiAgY29uc3QgY29tcGlsZXI6IE11bHRpQ29tcGlsZXIgPSB3ZWJwYWNrKHdlYnBhY2tDb25maWdzKTtcblxuICBzb3VyY2VNYXBTdXBwb3J0Lmluc3RhbGwoeyBob29rUmVxdWlyZTogdHJ1ZSB9KTtcblxuICBmdW5jdGlvbiBnZXRTZXJ2ZXJCdW5kbGUoc2VydmVyU3RhdHM6IHdlYnBhY2suU3RhdHMpIHtcbiAgICBjb25zdCBzZXJ2ZXJKc29uID0gc2VydmVyU3RhdHMudG9Kc29uKHsgYXNzZXRzOiB0cnVlIH0pO1xuICAgIHJldHVybiBwYXRoLmpvaW4oc2VydmVySnNvbi5vdXRwdXRQYXRoID8/ICcnLCAnc2VydmVyLmpzJyk7XG4gIH1cbiAgZnVuY3Rpb24gaGFuZGxlRXJyb3JzPFxuICAgIEYgZXh0ZW5kcyAoXG4gICAgICByZXE6IFJlcXVlc3QgfCBJbmNvbWluZ01lc3NhZ2UsXG4gICAgICByZXM6IFJlc3BvbnNlIHwgU2VydmVyUmVzcG9uc2UsXG4gICAgKSA9PiBQcm9taXNlPHZvaWQ+LFxuICA+KGZuOiBGKSB7XG4gICAgcmV0dXJuIGFzeW5jIGZ1bmN0aW9uIChcbiAgICAgIHJlcTogUmVxdWVzdCB8IEluY29taW5nTWVzc2FnZSxcbiAgICAgIHJlczogUmVzcG9uc2UgfCBTZXJ2ZXJSZXNwb25zZSxcbiAgICAgIG5leHQ6IE5leHRGdW5jdGlvbixcbiAgICApIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHJldHVybiBhd2FpdCBmbihyZXEsIHJlcyk7XG4gICAgICB9IGNhdGNoICh4KSB7XG4gICAgICAgIG5leHQoeCk7XG4gICAgICB9XG4gICAgfTtcbiAgfVxuXG4gIGNvbnN0IGluaXRSZW5kZXI6XG4gICAgfCB7IGFyZ3M6IFBhcmFtZXRlcnM8Qm91bmRSZW5kZXI+OyByZXNvbHZlOiAoKSA9PiB2b2lkIH1bXVxuICAgIHwgdW5kZWZpbmVkID0gW107XG4gIGxldCByZW5kZXI6IEJvdW5kUmVuZGVyID0gKC4uLmFyZ3MpID0+XG4gICAgbmV3IFByb21pc2UocmVzb2x2ZSA9PiB7XG4gICAgICBpbml0UmVuZGVyLnB1c2goeyBhcmdzLCByZXNvbHZlIH0pO1xuICAgIH0pO1xuXG4gIGZ1bmN0aW9uIGltcG9ydFJlbmRlcihzdGF0czogd2VicGFjay5TdGF0c1tdKSB7XG4gICAgY29uc3QgW2NsaWVudFN0YXRzLCBzZXJ2ZXJTdGF0c10gPSBzdGF0cztcbiAgICBpZiAoXG4gICAgICBjbGllbnRTdGF0cz8uY29tcGlsYXRpb24/LmVycm9ycz8ubGVuZ3RoIHx8XG4gICAgICBzZXJ2ZXJTdGF0cz8uY29tcGlsYXRpb24/LmVycm9ycz8ubGVuZ3RoXG4gICAgKSB7XG4gICAgICBsb2cuZXJyb3IoJ0Vycm9ycyBmb3IgY2xpZW50IGJ1aWxkOiAnICsgY2xpZW50U3RhdHMuY29tcGlsYXRpb24uZXJyb3JzKTtcbiAgICAgIGxvZy5lcnJvcignRXJyb3JzIGZvciBzZXJ2ZXIgYnVpbGQ6ICcgKyBzZXJ2ZXJTdGF0cy5jb21waWxhdGlvbi5lcnJvcnMpO1xuICAgICAgLy8gVE9ETzogaGFuZGxlIG1vcmUgZ3JhY2VmdWxseVxuICAgICAgcHJvY2Vzcy5leGl0KC0xKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmluZm8oJ0xhdW5jaGluZyBTU1InKTtcbiAgICB9XG5cbiAgICAvLyBBU1NFVFNcbiAgICBjb25zdCBjbGllbnRNYW5pZmVzdCA9IGNsaWVudFN0YXRzLnRvSnNvbigpO1xuXG4gICAgLy8gU0VSVkVSIFNJREUgRU5UUllQT0lOVFxuICAgIGlmIChBcnJheS5pc0FycmF5KGluaXRSZW5kZXIpKSB7XG4gICAgICAvLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXZhci1yZXF1aXJlc1xuICAgICAgcmVuZGVyID0gKHJlcXVpcmUoZ2V0U2VydmVyQnVuZGxlKHNlcnZlclN0YXRzKSkgYXMgYW55KS5kZWZhdWx0LmJpbmQoXG4gICAgICAgIHVuZGVmaW5lZCxcbiAgICAgICAgY2xpZW50TWFuaWZlc3QsXG4gICAgICApO1xuICAgICAgaW5pdFJlbmRlci5mb3JFYWNoKGluaXQgPT4gcmVuZGVyKC4uLmluaXQuYXJncykudGhlbihpbml0LnJlc29sdmUpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgcmVuZGVyID0gKGltcG9ydEZyZXNoKGdldFNlcnZlckJ1bmRsZShzZXJ2ZXJTdGF0cykpIGFzIGFueSkuZGVmYXVsdC5iaW5kKFxuICAgICAgICB1bmRlZmluZWQsXG4gICAgICAgIGNsaWVudE1hbmlmZXN0LFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICBjb25zdCBkZXZTZXJ2ZXIgPSBuZXcgV2VicGFja0RldlNlcnZlcihcbiAgICAvLyB3cml0ZSB0byBtZW1vcnkgZmlsZXN5c3RlbSBzbyB3ZSBjYW4gaW1wb3J0XG4gICAge1xuICAgICAgLi4ud2VicGFja0NvbmZpZ3NbMF0uZGV2U2VydmVyLFxuICAgICAgZGV2TWlkZGxld2FyZToge1xuICAgICAgICAuLi53ZWJwYWNrQ29uZmlnc1swXT8uZGV2U2VydmVyPy5kZXZNaWRkbGV3YXJlLFxuICAgICAgICBvdXRwdXRGaWxlU3lzdGVtOiB7XG4gICAgICAgICAgLi4uZnMsXG4gICAgICAgICAgam9pbjogcGF0aC5qb2luIGFzIGFueSxcbiAgICAgICAgfSBhcyBhbnkgYXMgdHlwZW9mIGZzLFxuICAgICAgfSxcbiAgICAgIHNldHVwTWlkZGxld2FyZXM6IChtaWRkbGV3YXJlcywgZGV2U2VydmVyKSA9PiB7XG4gICAgICAgIGlmICghZGV2U2VydmVyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd3ZWJwYWNrLWRldi1zZXJ2ZXIgaXMgbm90IGRlZmluZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG90aGVyUm91dGVzID0gW1xuICAgICAgICAgIHByb2Nlc3MuZW52LldFQlBBQ0tfUFVCTElDX1BBVEgsXG4gICAgICAgICAgLi4uT2JqZWN0LmtleXMod2VicGFja0NvbmZpZ3NbMF0uZGV2U2VydmVyPy5wcm94eSA/PyB7fSksXG4gICAgICAgIF07XG4gICAgICAgIC8vIHNlcnZlIFNTUiBmb3Igbm9uLVdFQlBBQ0tfUFVCTElDX1BBVEhcbiAgICAgICAgZGV2U2VydmVyLmFwcD8uZ2V0KFxuICAgICAgICAgIG5ldyBSZWdFeHAoYF4oPyEke290aGVyUm91dGVzLmpvaW4oJ3wnKX0pYCksXG4gICAgICAgICAgaGFuZGxlRXJyb3JzKGFzeW5jIGZ1bmN0aW9uIChyZXE6IGFueSwgcmVzOiBhbnkpIHtcbiAgICAgICAgICAgIGlmIChyZXEudXJsLmVuZHNXaXRoKCdmYXZpY29uLmljbycpKSB7XG4gICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDA0O1xuICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LXR5cGUnLCAndGV4dC9odG1sJyk7XG4gICAgICAgICAgICAgIHJlcy5zZW5kKCdub3QgZm91bmQnKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzLnNvY2tldC5vbignZXJyb3InLCAoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmF0YWwnLCBlcnJvcik7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgYXdhaXQgcmVuZGVyKHJlcSwgcmVzKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gbWlkZGxld2FyZXM7XG4gICAgICB9LFxuICAgIH0sXG4gICAgY29tcGlsZXIsXG4gICk7XG4gIGNvbnN0IHJ1blNlcnZlciA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBkZXZTZXJ2ZXIuc3RhcnQoKTtcbiAgICBkZXZTZXJ2ZXIuY29tcGlsZXIuaG9va3MuZG9uZS50YXAoXG4gICAgICAnQW5hbnNpIFNlcnZlcicsXG4gICAgICAobXVsdGlTdGF0czogd2VicGFjay5NdWx0aVN0YXRzIHwgd2VicGFjay5TdGF0cykgPT4ge1xuICAgICAgICBpZiAoIW11bHRpU3RhdHMpIHtcbiAgICAgICAgICBsb2cuZXJyb3IoJ3N0YXRzIG5vdCBzZW5kJyk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KC0xKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghT2JqZWN0Lmhhc093bihtdWx0aVN0YXRzLCAnc3RhdHMnKSkgcmV0dXJuO1xuICAgICAgICBpZiAoKG11bHRpU3RhdHMgYXMgd2VicGFjay5NdWx0aVN0YXRzKS5zdGF0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGltcG9ydFJlbmRlcigobXVsdGlTdGF0cyBhcyB3ZWJwYWNrLk11bHRpU3RhdHMpLnN0YXRzKTtcbiAgICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICAgIGxvZy5lcnJvcignRmFpbGVkIHRvIGxvYWQgc2VydmUgZW50cnlwb2ludCcpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nLmVycm9yKCdPbmx5IGNvbXBpbGVyIG9uZSBzdGF0Jyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKTtcbiAgfTtcbiAgY29uc3Qgc3RvcFNlcnZlciA9IGFzeW5jICgpID0+IHtcbiAgICBsb2cuaW5mbygnU3RvcHBpbmcgc2VydmVyLi4uJyk7XG4gICAgYXdhaXQgZGV2U2VydmVyLnN0b3AoKTtcbiAgICBsb2cuaW5mbygnU2VydmVyIGNsb3NlZCcpO1xuICB9O1xuXG4gIHByb2Nlc3Mub24oJ1NJR0lOVCcsICgpID0+IHtcbiAgICBsb2cud2FybignUmVjZWl2ZWQgU0lHSU5ULCBkZXZzZXJ2ZXIgc2h1dHRpbmcgZG93bicpO1xuICAgIHN0b3BTZXJ2ZXIoKTtcbiAgICBwcm9jZXNzLmV4aXQoLTEpO1xuICB9KTtcblxuICBydW5TZXJ2ZXIoKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBR0E7QUFDQSxJQUFJQSxPQUFPLENBQUNDLElBQVIsS0FBaUJDLE1BQXJCLEVBQTZCO0VBQzNCLE1BQU1DLFVBQVUsR0FBR0MsT0FBTyxDQUFDQyxJQUFSLENBQWEsQ0FBYixDQUFuQjs7RUFFQSxJQUFJLENBQUNGLFVBQUwsRUFBaUI7SUFDZkcsT0FBTyxDQUFDQyxHQUFSLENBQWEsdUNBQWI7SUFDQUgsT0FBTyxDQUFDSSxJQUFSLENBQWEsQ0FBQyxDQUFkO0VBQ0Q7O0VBRURDLGNBQWMsQ0FBQ04sVUFBRCxDQUFkO0FBQ0Q7O0FBRWMsU0FBU00sY0FBVCxDQUNiTixVQURhLEVBRWJP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
|
|
236
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXF1aXJlIiwibWFpbiIsIm1vZHVsZSIsImVudHJ5cG9pbnQiLCJwcm9jZXNzIiwiYXJndiIsImNvbnNvbGUiLCJsb2ciLCJleGl0Iiwic3RhcnREZXZTZXJ2ZXIiLCJlbnYiLCJ3ZWJwYWNrQ29uZmlnIiwicmVzb2x2ZSIsInBhdGgiLCJqb2luIiwiY3dkIiwibG9nZ2luZyIsImdldExvZ2dlciIsInZvbHVtZSIsIlZvbHVtZSIsImZzIiwiY3JlYXRlRnNGcm9tVm9sdW1lIiwidWZzIiwidXNlIiwiZGlza0ZzIiwiZnNSZXF1aXJlIiwiY3JlYXRlRnNSZXF1aXJlIiwicmVhZEZpbGUiLCJwcm9taXNpZnkiLCJzZXJ2ZXIiLCJob3RFbnRyeSIsImVudHJ5UGF0aCIsImdlbmVyYXRlZEVudHJ5cG9pbnQiLCJ0bXAiLCJmaWxlU3luYyIsInBvc3RmaXgiLCJ3cml0ZVN5bmMiLCJmZCIsIndlYnBhY2tDb25maWdzIiwiZW50cnlwYXRoIiwibmFtZSIsIm1vZGUiLCJyZXBsYWNlIiwiQlJPV1NFUlNMSVNUX0VOViIsInRhcmdldCIsInBsdWdpbnMiLCJwdXNoIiwid2VicGFjayIsIm9wdGltaXplIiwiTGltaXRDaHVua0NvdW50UGx1Z2luIiwibWF4Q2h1bmtzIiwiY29tcGlsZXIiLCJzb3VyY2VNYXBTdXBwb3J0IiwiaW5zdGFsbCIsImhvb2tSZXF1aXJlIiwiZ2V0U2VydmVyQnVuZGxlIiwic2VydmVyU3RhdHMiLCJzZXJ2ZXJKc29uIiwidG9Kc29uIiwiYXNzZXRzIiwib3V0cHV0UGF0aCIsImhhbmRsZUVycm9ycyIsImZuIiwicmVxIiwicmVzIiwibmV4dCIsIngiLCJpbml0UmVuZGVyIiwicmVuZGVyIiwiYXJncyIsIlByb21pc2UiLCJpbXBvcnRSZW5kZXIiLCJzdGF0cyIsImNsaWVudFN0YXRzIiwiY29tcGlsYXRpb24iLCJlcnJvcnMiLCJsZW5ndGgiLCJlcnJvciIsImluZm8iLCJjbGllbnRNYW5pZmVzdCIsInNlcnZlckVudHJ5IiwiY2FjaGUiLCJkZWZhdWx0IiwiYmluZCIsInVuZGVmaW5lZCIsIkFycmF5IiwiaXNBcnJheSIsImZvckVhY2giLCJpbml0IiwidGhlbiIsImRldlNlcnZlciIsIldlYnBhY2tEZXZTZXJ2ZXIiLCJkZXZNaWRkbGV3YXJlIiwib3V0cHV0RmlsZVN5c3RlbSIsInNldHVwTWlkZGxld2FyZXMiLCJtaWRkbGV3YXJlcyIsIkVycm9yIiwib3RoZXJSb3V0ZXMiLCJXRUJQQUNLX1BVQkxJQ19QQVRIIiwiT2JqZWN0Iiwia2V5cyIsInByb3h5IiwiYXBwIiwiZ2V0IiwiUmVnRXhwIiwidXJsIiwiZW5kc1dpdGgiLCJzdGF0dXNDb2RlIiwic2V0SGVhZGVyIiwic2VuZCIsInNvY2tldCIsIm9uIiwicnVuU2VydmVyIiwic3RhcnQiLCJob29rcyIsImRvbmUiLCJ0YXAiLCJtdWx0aVN0YXRzIiwiaGFzT3duIiwiZSIsInN0b3BTZXJ2ZXIiLCJzdG9wIiwid2FybiJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zY3JpcHRzL3N0YXJ0RGV2c2VydmVyLnRzIl0sInNvdXJjZXNDb250ZW50IjpbIiMhL3Vzci9iaW4vZW52IG5vZGVcblxuaW1wb3J0IHsgcHJvbWlzaWZ5IH0gZnJvbSAndXRpbCc7XG5pbXBvcnQgZGlza0ZzIGZyb20gJ2ZzJztcbmltcG9ydCBwYXRoIGZyb20gJ3BhdGgnO1xuaW1wb3J0IHdlYnBhY2ssIHsgTXVsdGlDb21waWxlciB9IGZyb20gJ3dlYnBhY2snO1xuaW1wb3J0IHsgY3JlYXRlRnNGcm9tVm9sdW1lLCBWb2x1bWUgfSBmcm9tICdtZW1mcyc7XG5pbXBvcnQgeyBTZXJ2ZXIsIEluY29taW5nTWVzc2FnZSwgU2VydmVyUmVzcG9uc2UgfSBmcm9tICdodHRwJztcbmltcG9ydCB0eXBlIHsgTmV4dEZ1bmN0aW9uIH0gZnJvbSAnZXhwcmVzcyc7XG5pbXBvcnQgdG1wIGZyb20gJ3RtcCc7XG5pbXBvcnQgc291cmNlTWFwU3VwcG9ydCBmcm9tICdzb3VyY2UtbWFwLXN1cHBvcnQnO1xuaW1wb3J0IHsgdWZzIH0gZnJvbSAndW5pb25mcyc7XG5pbXBvcnQgV2VicGFja0RldlNlcnZlciBmcm9tICd3ZWJwYWNrLWRldi1zZXJ2ZXInO1xuaW1wb3J0IGxvZ2dpbmcgZnJvbSAnd2VicGFjay9saWIvbG9nZ2luZy9ydW50aW1lJztcbmltcG9ydCB7IGNyZWF0ZUZzUmVxdWlyZSB9IGZyb20gJ2ZzLXJlcXVpcmUnO1xuXG5pbXBvcnQgJ2Nyb3NzLWZldGNoL3BvbHlmaWxsJztcbmltcG9ydCB7IEJvdW5kUmVuZGVyIH0gZnJvbSAnLi90eXBlcyc7XG5cbi8vIHJ1biBkaXJlY3RseSBmcm9tIG5vZGVcbmlmIChyZXF1aXJlLm1haW4gPT09IG1vZHVsZSkge1xuICBjb25zdCBlbnRyeXBvaW50ID0gcHJvY2Vzcy5hcmd2WzJdO1xuXG4gIGlmICghZW50cnlwb2ludCkge1xuICAgIGNvbnNvbGUubG9nKGBVc2FnZTogc3RhcnQtYW5hbnNpIDxlbnRyeXBvaW50LWZpbGU+YCk7XG4gICAgcHJvY2Vzcy5leGl0KC0xKTtcbiAgfVxuXG4gIHN0YXJ0RGV2U2VydmVyKGVudHJ5cG9pbnQpO1xufVxuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBzdGFydERldlNlcnZlcihcbiAgZW50cnlwb2ludDogc3RyaW5nLFxuICBlbnY6IFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0ge30sXG4pIHtcbiAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbiAgY29uc3Qgd2VicGFja0NvbmZpZyA9IHJlcXVpcmUocmVxdWlyZS5yZXNvbHZlKFxuICAgIC8vIFRPRE86IHVzZSBub3JtYWwgcmVzb2x1dGlvbiBhbGdvcml0aG0gdG8gZmluZCB3ZWJwYWNrIGZpbGVcbiAgICBwYXRoLmpvaW4ocHJvY2Vzcy5jd2QoKSwgJ3dlYnBhY2suY29uZmlnJyksXG4gICkpO1xuXG4gIGNvbnN0IGxvZyA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdhbmFuc2ktZGV2c2VydmVyJyk7XG5cbiAgLy8gU2V0IHVwIGluIG1lbW9yeSBmaWxlc3lzdGVtXG4gIGNvbnN0IHZvbHVtZSA9IG5ldyBWb2x1bWUoKTtcbiAgY29uc3QgZnMgPSBjcmVhdGVGc0Zyb21Wb2x1bWUodm9sdW1lKTtcbiAgdWZzLnVzZShkaXNrRnMpLnVzZShmcyBhcyBhbnkpO1xuXG4gIGNvbnN0IGZzUmVxdWlyZSA9IGNyZWF0ZUZzUmVxdWlyZSh1ZnMpO1xuICBjb25zdCByZWFkRmlsZSA9IHByb21pc2lmeSh1ZnMucmVhZEZpbGUpO1xuICBsZXQgc2VydmVyOiBTZXJ2ZXIgfCB1bmRlZmluZWQ7XG5cbiAgLy8gR2VuZXJhdGUgYSB0ZW1wb3JhcnkgZmlsZSBzbyB3ZSBjYW4gaG90IHJlbG9hZCBmcm9tIHRoZSByb290IG9mIHRoZSBhcHBsaWNhdGlvblxuICBmdW5jdGlvbiBob3RFbnRyeShlbnRyeVBhdGg6IHN0cmluZykge1xuICAgIC8vIGVzbGludC1kaXNhYmxlLW5leHQtbGluZVxuICAgIC8vIEB0cy1pZ25vcmUgZm9yIHNvbWUgcmVhc29uIGl0J3Mgbm90IHBpY2tpbmcgdXAgdGhhdCBvdGhlciBvcHRpb25zIGFyZSBvcHRpb25hbFxuICAgIGNvbnN0IGdlbmVyYXRlZEVudHJ5cG9pbnQgPSB0bXAuZmlsZVN5bmMoeyBwb3N0Zml4OiAnLmpzJyB9KTtcbiAgICBkaXNrRnMud3JpdGVTeW5jKFxuICAgICAgZ2VuZXJhdGVkRW50cnlwb2ludC5mZCxcbiAgICAgIGBcbiAgaW1wb3J0IGVudHJ5IGZyb20gXCIke3BhdGgucmVzb2x2ZShwcm9jZXNzLmN3ZCgpLCBlbnRyeVBhdGgpfVwiO1xuXG4gIGlmIChtb2R1bGUuaG90KSB7XG4gICAgbW9kdWxlLmhvdC5hY2NlcHQoKTtcbiAgfVxuXG4gIGV4cG9ydCBkZWZhdWx0IGVudHJ5O1xuICAgIGAsXG4gICAgKTtcbiAgICByZXR1cm4gZ2VuZXJhdGVkRW50cnlwb2ludDtcbiAgfVxuXG4gIGNvbnN0IHdlYnBhY2tDb25maWdzID0gW1xuICAgIHdlYnBhY2tDb25maWcoXG4gICAgICB7XG4gICAgICAgIC4uLmVudixcbiAgICAgICAgZW50cnlwYXRoOiBob3RFbnRyeShlbnRyeXBvaW50KS5uYW1lLFxuICAgICAgICBuYW1lOiAnY2xpZW50JyxcbiAgICAgIH0sXG4gICAgICB7IG1vZGU6ICdkZXZlbG9wbWVudCcgfSxcbiAgICApLFxuICAgIHdlYnBhY2tDb25maWcoXG4gICAgICB7XG4gICAgICAgIC4uLmVudixcbiAgICAgICAgZW50cnlwYXRoOiBlbnRyeXBvaW50LnJlcGxhY2UoJy50c3gnLCAnLnNlcnZlci50c3gnKSxcbiAgICAgICAgbmFtZTogJ3NlcnZlcicsXG4gICAgICAgIEJST1dTRVJTTElTVF9FTlY6ICdjdXJyZW50IG5vZGUnLFxuICAgICAgfSxcbiAgICAgIHsgbW9kZTogJ2RldmVsb3BtZW50JywgdGFyZ2V0OiAnbm9kZScgfSxcbiAgICApLFxuICBdIGFzIGNvbnN0O1xuICAvLyBvbmx5IGhhdmUgb25lIG91dHB1dCBmb3Igc2VydmVyIHNvIHdlIGNhbiBhdm9pZCBjYWNoZWQgbW9kdWxlc1xuICB3ZWJwYWNrQ29uZmlnc1sxXS5wbHVnaW5zLnB1c2goXG4gICAgbmV3IHdlYnBhY2sub3B0aW1pemUuTGltaXRDaHVua0NvdW50UGx1Z2luKHsgbWF4Q2h1bmtzOiAxIH0pLFxuICApO1xuICAvLyBpbml0aWFsaXplIHRoZSB3ZWJwYWNrIGNvbXBpbGVyXG4gIGNvbnN0IGNvbXBpbGVyOiBNdWx0aUNvbXBpbGVyID0gd2VicGFjayh3ZWJwYWNrQ29uZmlncyk7XG5cbiAgc291cmNlTWFwU3VwcG9ydC5pbnN0YWxsKHsgaG9va1JlcXVpcmU6IHRydWUgfSk7XG5cbiAgZnVuY3Rpb24gZ2V0U2VydmVyQnVuZGxlKHNlcnZlclN0YXRzOiB3ZWJwYWNrLlN0YXRzKSB7XG4gICAgY29uc3Qgc2VydmVySnNvbiA9IHNlcnZlclN0YXRzLnRvSnNvbih7IGFzc2V0czogdHJ1ZSB9KTtcbiAgICByZXR1cm4gcGF0aC5qb2luKHNlcnZlckpzb24ub3V0cHV0UGF0aCA/PyAnJywgJ3NlcnZlci5qcycpO1xuICB9XG4gIGZ1bmN0aW9uIGhhbmRsZUVycm9yczxcbiAgICBGIGV4dGVuZHMgKFxuICAgICAgcmVxOiBSZXF1ZXN0IHwgSW5jb21pbmdNZXNzYWdlLFxuICAgICAgcmVzOiBSZXNwb25zZSB8IFNlcnZlclJlc3BvbnNlLFxuICAgICkgPT4gUHJvbWlzZTx2b2lkPixcbiAgPihmbjogRikge1xuICAgIHJldHVybiBhc3luYyBmdW5jdGlvbiAoXG4gICAgICByZXE6IFJlcXVlc3QgfCBJbmNvbWluZ01lc3NhZ2UsXG4gICAgICByZXM6IFJlc3BvbnNlIHwgU2VydmVyUmVzcG9uc2UsXG4gICAgICBuZXh0OiBOZXh0RnVuY3Rpb24sXG4gICAgKSB7XG4gICAgICB0cnkge1xuICAgICAgICByZXR1cm4gYXdhaXQgZm4ocmVxLCByZXMpO1xuICAgICAgfSBjYXRjaCAoeCkge1xuICAgICAgICBuZXh0KHgpO1xuICAgICAgfVxuICAgIH07XG4gIH1cblxuICBsZXQgaW5pdFJlbmRlcjpcbiAgICB8IHsgYXJnczogUGFyYW1ldGVyczxCb3VuZFJlbmRlcj47IHJlc29sdmU6ICgpID0+IHZvaWQgfVtdXG4gICAgfCB1bmRlZmluZWQgPSBbXTtcbiAgbGV0IHJlbmRlcjogQm91bmRSZW5kZXIgPSAoLi4uYXJncykgPT5cbiAgICBuZXcgUHJvbWlzZShyZXNvbHZlID0+IHtcbiAgICAgIGluaXRSZW5kZXI/LnB1c2goeyBhcmdzLCByZXNvbHZlIH0pO1xuICAgIH0pO1xuXG4gIGZ1bmN0aW9uIGltcG9ydFJlbmRlcihzdGF0czogd2VicGFjay5TdGF0c1tdKSB7XG4gICAgY29uc3QgW2NsaWVudFN0YXRzLCBzZXJ2ZXJTdGF0c10gPSBzdGF0cztcbiAgICBpZiAoXG4gICAgICBjbGllbnRTdGF0cz8uY29tcGlsYXRpb24/LmVycm9ycz8ubGVuZ3RoIHx8XG4gICAgICBzZXJ2ZXJTdGF0cz8uY29tcGlsYXRpb24/LmVycm9ycz8ubGVuZ3RoXG4gICAgKSB7XG4gICAgICBsb2cuZXJyb3IoJ0Vycm9ycyBmb3IgY2xpZW50IGJ1aWxkOiAnICsgY2xpZW50U3RhdHMuY29tcGlsYXRpb24uZXJyb3JzKTtcbiAgICAgIGxvZy5lcnJvcignRXJyb3JzIGZvciBzZXJ2ZXIgYnVpbGQ6ICcgKyBzZXJ2ZXJTdGF0cy5jb21waWxhdGlvbi5lcnJvcnMpO1xuICAgICAgLy8gVE9ETzogaGFuZGxlIG1vcmUgZ3JhY2VmdWxseVxuICAgICAgcHJvY2Vzcy5leGl0KC0xKTtcbiAgICB9IGVsc2Uge1xuICAgICAgbG9nLmluZm8oJ0xhdW5jaGluZyBTU1InKTtcbiAgICB9XG5cbiAgICAvLyBBU1NFVFNcbiAgICBjb25zdCBjbGllbnRNYW5pZmVzdCA9IGNsaWVudFN0YXRzLnRvSnNvbigpO1xuXG4gICAgY29uc3Qgc2VydmVyRW50cnkgPSBnZXRTZXJ2ZXJCdW5kbGUoc2VydmVyU3RhdHMpO1xuICAgIC8vIHJlbG9hZCBtb2R1bGVzXG4gICAgLy8gVE9ETzogc2hvdWxkIHdlIGp1c3QgcmVzZXQgZW50aXJlIGNhY2hlIGVhY2ggdGltZT8gdGhlbiB3ZSBjb3VsZCBhdm9pZCBuZWVkaW5nIG9uZSBvdXRwdXRcbiAgICBkZWxldGUgZnNSZXF1aXJlLmNhY2hlW2ZzUmVxdWlyZS5yZXNvbHZlKHNlcnZlckVudHJ5KV07XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby12YXItcmVxdWlyZXNcbiAgICByZW5kZXIgPSAoZnNSZXF1aXJlKHNlcnZlckVudHJ5KSBhcyBhbnkpLmRlZmF1bHQuYmluZChcbiAgICAgIHVuZGVmaW5lZCxcbiAgICAgIGNsaWVudE1hbmlmZXN0LFxuICAgICk7XG4gICAgLy8gU0VSVkVSIFNJREUgRU5UUllQT0lOVFxuICAgIGlmIChBcnJheS5pc0FycmF5KGluaXRSZW5kZXIpKSB7XG4gICAgICBpbml0UmVuZGVyLmZvckVhY2goaW5pdCA9PiByZW5kZXIoLi4uaW5pdC5hcmdzKS50aGVuKGluaXQucmVzb2x2ZSkpO1xuICAgICAgaW5pdFJlbmRlciA9IHVuZGVmaW5lZDtcbiAgICB9XG4gIH1cblxuICBjb25zdCBkZXZTZXJ2ZXIgPSBuZXcgV2VicGFja0RldlNlcnZlcihcbiAgICAvLyB3cml0ZSB0byBtZW1vcnkgZmlsZXN5c3RlbSBzbyB3ZSBjYW4gaW1wb3J0XG4gICAge1xuICAgICAgLi4ud2VicGFja0NvbmZpZ3NbMF0uZGV2U2VydmVyLFxuICAgICAgZGV2TWlkZGxld2FyZToge1xuICAgICAgICAuLi53ZWJwYWNrQ29uZmlnc1swXT8uZGV2U2VydmVyPy5kZXZNaWRkbGV3YXJlLFxuICAgICAgICBvdXRwdXRGaWxlU3lzdGVtOiB7XG4gICAgICAgICAgLi4uZnMsXG4gICAgICAgICAgam9pbjogcGF0aC5qb2luIGFzIGFueSxcbiAgICAgICAgfSBhcyBhbnkgYXMgdHlwZW9mIGZzLFxuICAgICAgfSxcbiAgICAgIHNldHVwTWlkZGxld2FyZXM6IChtaWRkbGV3YXJlcywgZGV2U2VydmVyKSA9PiB7XG4gICAgICAgIGlmICghZGV2U2VydmVyKSB7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKCd3ZWJwYWNrLWRldi1zZXJ2ZXIgaXMgbm90IGRlZmluZWQnKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IG90aGVyUm91dGVzID0gW1xuICAgICAgICAgIHByb2Nlc3MuZW52LldFQlBBQ0tfUFVCTElDX1BBVEgsXG4gICAgICAgICAgLi4uT2JqZWN0LmtleXMod2VicGFja0NvbmZpZ3NbMF0uZGV2U2VydmVyPy5wcm94eSA/PyB7fSksXG4gICAgICAgIF07XG4gICAgICAgIC8vIHNlcnZlIFNTUiBmb3Igbm9uLVdFQlBBQ0tfUFVCTElDX1BBVEhcbiAgICAgICAgZGV2U2VydmVyLmFwcD8uZ2V0KFxuICAgICAgICAgIG5ldyBSZWdFeHAoYF4oPyEke290aGVyUm91dGVzLmpvaW4oJ3wnKX0pYCksXG4gICAgICAgICAgaGFuZGxlRXJyb3JzKGFzeW5jIGZ1bmN0aW9uIChyZXE6IGFueSwgcmVzOiBhbnkpIHtcbiAgICAgICAgICAgIGlmIChyZXEudXJsLmVuZHNXaXRoKCdmYXZpY29uLmljbycpKSB7XG4gICAgICAgICAgICAgIHJlcy5zdGF0dXNDb2RlID0gNDA0O1xuICAgICAgICAgICAgICByZXMuc2V0SGVhZGVyKCdDb250ZW50LXR5cGUnLCAndGV4dC9odG1sJyk7XG4gICAgICAgICAgICAgIHJlcy5zZW5kKCdub3QgZm91bmQnKTtcbiAgICAgICAgICAgICAgcmV0dXJuO1xuICAgICAgICAgICAgfVxuICAgICAgICAgICAgcmVzLnNvY2tldC5vbignZXJyb3InLCAoZXJyb3I6IHVua25vd24pID0+IHtcbiAgICAgICAgICAgICAgY29uc29sZS5lcnJvcignRmF0YWwnLCBlcnJvcik7XG4gICAgICAgICAgICB9KTtcblxuICAgICAgICAgICAgYXdhaXQgcmVuZGVyKHJlcSwgcmVzKTtcbiAgICAgICAgICB9KSxcbiAgICAgICAgKTtcblxuICAgICAgICByZXR1cm4gbWlkZGxld2FyZXM7XG4gICAgICB9LFxuICAgIH0sXG4gICAgY29tcGlsZXIsXG4gICk7XG4gIGNvbnN0IHJ1blNlcnZlciA9IGFzeW5jICgpID0+IHtcbiAgICBhd2FpdCBkZXZTZXJ2ZXIuc3RhcnQoKTtcbiAgICBkZXZTZXJ2ZXIuY29tcGlsZXIuaG9va3MuZG9uZS50YXAoXG4gICAgICAnQW5hbnNpIFNlcnZlcicsXG4gICAgICAobXVsdGlTdGF0czogd2VicGFjay5NdWx0aVN0YXRzIHwgd2VicGFjay5TdGF0cykgPT4ge1xuICAgICAgICBpZiAoIW11bHRpU3RhdHMpIHtcbiAgICAgICAgICBsb2cuZXJyb3IoJ3N0YXRzIG5vdCBzZW5kJyk7XG4gICAgICAgICAgcHJvY2Vzcy5leGl0KC0xKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGlmICghT2JqZWN0Lmhhc093bihtdWx0aVN0YXRzLCAnc3RhdHMnKSkgcmV0dXJuO1xuICAgICAgICBpZiAoKG11bHRpU3RhdHMgYXMgd2VicGFjay5NdWx0aVN0YXRzKS5zdGF0cy5sZW5ndGggPiAxKSB7XG4gICAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGltcG9ydFJlbmRlcigobXVsdGlTdGF0cyBhcyB3ZWJwYWNrLk11bHRpU3RhdHMpLnN0YXRzKTtcbiAgICAgICAgICB9IGNhdGNoIChlOiBhbnkpIHtcbiAgICAgICAgICAgIGxvZy5lcnJvcignRmFpbGVkIHRvIGxvYWQgc2VydmUgZW50cnlwb2ludCcpO1xuICAgICAgICAgICAgdGhyb3cgZTtcbiAgICAgICAgICB9XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgbG9nLmVycm9yKCdPbmx5IGNvbXBpbGVyIG9uZSBzdGF0Jyk7XG4gICAgICAgIH1cbiAgICAgIH0sXG4gICAgKTtcbiAgfTtcbiAgY29uc3Qgc3RvcFNlcnZlciA9IGFzeW5jICgpID0+IHtcbiAgICBsb2cuaW5mbygnU3RvcHBpbmcgc2VydmVyLi4uJyk7XG4gICAgYXdhaXQgZGV2U2VydmVyLnN0b3AoKTtcbiAgICBsb2cuaW5mbygnU2VydmVyIGNsb3NlZCcpO1xuICB9O1xuXG4gIHByb2Nlc3Mub24oJ1NJR0lOVCcsICgpID0+IHtcbiAgICBsb2cud2FybignUmVjZWl2ZWQgU0lHSU5ULCBkZXZzZXJ2ZXIgc2h1dHRpbmcgZG93bicpO1xuICAgIHN0b3BTZXJ2ZXIoKTtcbiAgICBwcm9jZXNzLmV4aXQoLTEpO1xuICB9KTtcblxuICBydW5TZXJ2ZXIoKTtcbn1cbiJdLCJtYXBwaW5ncyI6IkFBQUE7Ozs7Ozs7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBR0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBR0E7QUFDQSxJQUFJQSxPQUFPLENBQUNDLElBQVIsS0FBaUJDLE1BQXJCLEVBQTZCO0VBQzNCLE1BQU1DLFVBQVUsR0FBR0MsT0FBTyxDQUFDQyxJQUFSLENBQWEsQ0FBYixDQUFuQjs7RUFFQSxJQUFJLENBQUNGLFVBQUwsRUFBaUI7SUFDZkcsT0FBTyxDQUFDQyxHQUFSLENBQWEsdUNBQWI7SUFDQUgsT0FBTyxDQUFD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
|
|
@@ -8,7 +8,7 @@ declare type NeededProps = {
|
|
|
8
8
|
export default function DocumentSpout(options: {
|
|
9
9
|
head?: React.ReactNode;
|
|
10
10
|
title: string;
|
|
11
|
-
rootId
|
|
11
|
+
rootId?: string;
|
|
12
12
|
charSet?: string;
|
|
13
13
|
}): <T extends NeededProps>(next: (props: ServerProps) => Promise<T>) => (props: ServerProps) => Promise<T & {
|
|
14
14
|
app: JSX.Element;
|
|
@@ -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;AAG5C,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;
|
|
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;AAG5C,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,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,yCAEiB,WAAW,4BAEJ,WAAW;;GAkEnC"}
|
|
@@ -65,4 +65,4 @@ function childrenAssets(chunk) {
|
|
|
65
65
|
return (_c$assets = c.assets) != null ? _c$assets : [];
|
|
66
66
|
})) : [];
|
|
67
67
|
}
|
|
68
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
68
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJEb2N1bWVudFNwb3V0Iiwib3B0aW9ucyIsIm5leHQiLCJwcm9wcyIsIm5leHRQcm9wcyIsInB1YmxpY1BhdGgiLCJjbGllbnRNYW5pZmVzdCIsIk9iamVjdCIsImtleXMiLCJlbnRyeXBvaW50cyIsImxlbmd0aCIsInVuZGVmaW5lZCIsIkVycm9yIiwiYXNzZXRNYXAiLCJhc3NldHMiLCJtYXAiLCJuYW1lIiwiYXNzZXRMaXN0IiwidmFsdWVzIiwiZm9yRWFjaCIsImVudHJ5cG9pbnQiLCJwdXNoIiwiU2V0IiwibmFtZWRDaHVua0dyb3VwcyIsImZpbHRlciIsIm1hdGNoZWRSb3V0ZXMiLCJzb21lIiwicm91dGUiLCJpbmNsdWRlcyIsImZsYXRNYXAiLCJjaHVuayIsImNoaWxkcmVuQXNzZXRzIiwiYXNzZXQiLCJlbmRzV2l0aCIsImhyZWYiLCJyZWwiLCJhcyIsImFwcCIsInRpdGxlIiwicm9vdElkIiwiY2hpbGRyZW4iLCJwcmVsb2FkIiwiYyJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvZG9jdW1lbnQuc2VydmVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHR5cGUgeyBSb3V0ZSB9IGZyb20gJ0BhbmFuc2kvcm91dGVyJztcbmltcG9ydCB7IFN0YXRzQ2h1bmtHcm91cCB9IGZyb20gJ3dlYnBhY2snO1xuXG5pbXBvcnQgdHlwZSB7IFNlcnZlclByb3BzLCBSZXNvbHZlUHJvcHMgfSBmcm9tICcuL3R5cGVzJztcbmltcG9ydCBEb2N1bWVudCBmcm9tICcuL0RvY3VtZW50Q29tcG9uZW50JztcblxudHlwZSBOZWVkZWRQcm9wcyA9IHtcbiAgbWF0Y2hlZFJvdXRlczogUm91dGU8YW55PltdO1xuICB0aXRsZT86IHN0cmluZztcbn0gJiBSZXNvbHZlUHJvcHM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIERvY3VtZW50U3BvdXQob3B0aW9uczoge1xuICBoZWFkPzogUmVhY3QuUmVhY3ROb2RlO1xuICB0aXRsZTogc3RyaW5nO1xuICByb290SWQ/OiBzdHJpbmc7XG4gIGNoYXJTZXQ/OiBzdHJpbmc7XG59KSB7XG4gIHJldHVybiBmdW5jdGlvbiA8VCBleHRlbmRzIE5lZWRlZFByb3BzPihcbiAgICBuZXh0OiAocHJvcHM6IFNlcnZlclByb3BzKSA9PiBQcm9taXNlPFQ+LFxuICApIHtcbiAgICByZXR1cm4gYXN5bmMgKHByb3BzOiBTZXJ2ZXJQcm9wcykgPT4ge1xuICAgICAgY29uc3QgbmV4dFByb3BzID0gYXdhaXQgbmV4dChwcm9wcyk7XG5cbiAgICAgIGNvbnN0IHB1YmxpY1BhdGggPSBwcm9wcy5jbGllbnRNYW5pZmVzdC5wdWJsaWNQYXRoO1xuXG4gICAgICBpZiAoXG4gICAgICAgIE9iamVjdC5rZXlzKHByb3BzLmNsaWVudE1hbmlmZXN0Py5lbnRyeXBvaW50cyA/PyB7fSkubGVuZ3RoIDwgMSB8fFxuICAgICAgICBwdWJsaWNQYXRoID09PSB1bmRlZmluZWRcbiAgICAgIClcbiAgICAgICAgdGhyb3cgbmV3IEVycm9yKCdNYW5pZmVzdCBtaXNzaW5nIGVudHJpZXMgbmVlZGVkJyk7XG5cbiAgICAgIC8vIFRPRE86IGNvbnNpZGVyIHVzaW5nIHRoaXMgcGFja2FnZSBmb3IgYnVpbGQgc3RhdHMgaW4gZnV0dXJlOlxuICAgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JlYWN0L3RyZWUvbWFpbi9wYWNrYWdlcy9yZWFjdC1zZXJ2ZXItZG9tLXdlYnBhY2tcbiAgICAgIGNvbnN0IGFzc2V0TWFwID0gKGFzc2V0czogeyBuYW1lOiBzdHJpbmc7IHNpemU/OiBudW1iZXIgfVtdKSA9PlxuICAgICAgICBhc3NldHMubWFwKCh7IG5hbWUgfSkgPT4gYCR7cHVibGljUGF0aH0ke25hbWV9YCk7XG5cbiAgICAgIGNvbnN0IGFzc2V0TGlzdDogc3RyaW5nW10gPSBbXTtcbiAgICAgIE9iamVjdC52YWx1ZXMocHJvcHMuY2xpZW50TWFuaWZlc3Q/LmVudHJ5cG9pbnRzID8/IHt9KS5mb3JFYWNoKFxuICAgICAgICBlbnRyeXBvaW50ID0+IHtcbiAgICAgICAgICBhc3NldExpc3QucHVzaCguLi5hc3NldE1hcChlbnRyeXBvaW50LmFzc2V0cyA/PyBbXSkpO1xuICAgICAgICB9LFxuICAgICAgKTtcbiAgICAgIG5ldyBTZXQoXG4gICAgICAgIGFzc2V0TWFwKFxuICAgICAgICAgIE9iamVjdC52YWx1ZXMocHJvcHMuY2xpZW50TWFuaWZlc3QubmFtZWRDaHVua0dyb3VwcyA/PyB7fSlcbiAgICAgICAgICAgIC5maWx0ZXIoKHsgbmFtZSB9KSA9PlxuICAgICAgICAgICAgICBuZXh0UHJvcHMubWF0Y2hlZFJvdXRlcy5zb21lKHJvdXRlID0+IG5hbWU/LmluY2x1ZGVzKHJvdXRlLm5hbWUpKSxcbiAgICAgICAgICAgIClcbiAgICAgICAgICAgIC5mbGF0TWFwKGNodW5rID0+IFtcbiAgICAgICAgICAgICAgLi4uKGNodW5rLmFzc2V0cyA/PyBbXSksXG4gICAgICAgICAgICAgIC8vIGFueSBjaHVuayBwcmVsb2Fkc1xuICAgICAgICAgICAgICAuLi5jaGlsZHJlbkFzc2V0cyhjaHVuayksXG4gICAgICAgICAgICBdKSxcbiAgICAgICAgKSxcbiAgICAgICkuZm9yRWFjaChhc3NldCA9PiBhc3NldExpc3QucHVzaChhc3NldCkpO1xuXG4gICAgICAvLyBmaW5kIGFkZGl0aW9uYWwgYXNzZXRzIHRvIHByZWxvYWQgYmFzZWQgb24gbWF0Y2hlZCByb3V0ZVxuICAgICAgY29uc3QgYXNzZXRzOiB7XG4gICAgICAgIGhyZWY6IHN0cmluZztcbiAgICAgICAgYXM/OiBzdHJpbmcgfCB1bmRlZmluZWQ7XG4gICAgICAgIHJlbD86IHN0cmluZyB8IHVuZGVmaW5lZDtcbiAgICAgIH1bXSA9IGFzc2V0TGlzdFxuICAgICAgICAuZmlsdGVyKGFzc2V0ID0+ICFhc3NldC5lbmRzV2l0aCgnLmhvdC11cGRhdGUuanMnKSlcbiAgICAgICAgLm1hcChhc3NldCA9PlxuICAgICAgICAgIGFzc2V0LmVuZHNXaXRoKCcuY3NzJylcbiAgICAgICAgICAgID8geyBocmVmOiBhc3NldCwgcmVsOiAnc3R5bGVzaGVldCcgfVxuICAgICAgICAgICAgOiBhc3NldC5lbmRzV2l0aCgnLmpzJylcbiAgICAgICAgICAgID8geyBocmVmOiBhc3NldCwgYXM6ICdzY3JpcHQnIH1cbiAgICAgICAgICAgIDogeyBocmVmOiBhc3NldCB9LFxuICAgICAgICApO1xuXG4gICAgICByZXR1cm4ge1xuICAgICAgICAuLi5uZXh0UHJvcHMsXG4gICAgICAgIGFwcDogKFxuICAgICAgICAgIDxEb2N1bWVudFxuICAgICAgICAgICAgey4uLm9wdGlvbnN9XG4gICAgICAgICAgICB0aXRsZT17bmV4dFByb3BzLnRpdGxlID8/IG9wdGlvbnMudGl0bGV9XG4gICAgICAgICAgICBhc3NldHM9e2Fzc2V0c31cbiAgICAgICAgICAgIHJvb3RJZD17b3B0aW9ucy5yb290SWR9XG4gICAgICAgICAgPlxuICAgICAgICAgICAge25leHRQcm9wcy5hcHB9XG4gICAgICAgICAgPC9Eb2N1bWVudD5cbiAgICAgICAgKSxcbiAgICAgIH07XG4gICAgfTtcbiAgfTtcbn1cblxuZnVuY3Rpb24gY2hpbGRyZW5Bc3NldHMoY2h1bms6IFN0YXRzQ2h1bmtHcm91cCkge1xuICByZXR1cm4gY2h1bmsuY2hpbGRyZW5cbiAgICA/IE9iamVjdC52YWx1ZXMoY2h1bmsuY2hpbGRyZW4pLmZsYXRNYXAocHJlbG9hZCA9PlxuICAgICAgICBwcmVsb2FkLmZsYXRNYXAoYyA9PiBjLmFzc2V0cyA/PyBbXSksXG4gICAgICApXG4gICAgOiBbXTtcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOztBQUtBOztBQU9lLFNBQVNBLGFBQVQsQ0FBdUJDLE9BQXZCLEVBS1o7RUFDRCxPQUFPLFVBQ0xDLElBREssRUFFTDtJQUNBLE9BQU8sTUFBT0MsS0FBUCxJQUE4QjtNQUFBOztNQUNuQyxNQUFNQyxTQUFTLEdBQUcsTUFBTUYsSUFBSSxDQUFDQyxL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
|
package/lib/spouts/router.d.ts
CHANGED
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
import { Route, RouteController } from '@anansi/router';
|
|
2
|
+
import type { Update } from 'history';
|
|
2
3
|
import type { ResolveProps, CreateRouter } from './types';
|
|
3
4
|
export default function routerSpout<ResolveWith>(options: {
|
|
4
5
|
resolveWith?: any;
|
|
5
6
|
useResolveWith: () => ResolveWith;
|
|
6
7
|
createRouter: CreateRouter<ResolveWith>;
|
|
8
|
+
onChange?: (update: Update, callback: () => void | undefined) => void;
|
|
7
9
|
}): <T extends ResolveProps>(next: () => Promise<T>) => () => Promise<T & {
|
|
8
10
|
matchedRoutes: (Route<ResolveWith, any> & object)[];
|
|
9
11
|
router: RouteController<Route<ResolveWith, any>>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/spouts/router.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAiB,eAAe,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"router.d.ts","sourceRoot":"","sources":["../../src/spouts/router.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAiB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAI1D,MAAM,CAAC,OAAO,UAAU,WAAW,CAAC,WAAW,EAAE,OAAO,EAAE;IACxD,WAAW,CAAC,EAAE,GAAG,CAAC;IAClB,cAAc,EAAE,MAAM,WAAW,CAAC;IAClC,YAAY,EAAE,YAAY,CAAC,WAAW,CAAC,CAAC;IACxC,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,IAAI,GAAG,SAAS,KAAK,IAAI,CAAC;CACvE;;;;GAmCA"}
|
package/lib/spouts/router.js
CHANGED
|
@@ -20,7 +20,8 @@ function routerSpout(options) {
|
|
|
20
20
|
const resolveWith = options.useResolveWith();
|
|
21
21
|
return /*#__PURE__*/(0, _jsx2.default)(_router.RouteProvider, {
|
|
22
22
|
router: router,
|
|
23
|
-
resolveWith: resolveWith
|
|
23
|
+
resolveWith: resolveWith,
|
|
24
|
+
onChange: options.onChange
|
|
24
25
|
}, void 0, children);
|
|
25
26
|
};
|
|
26
27
|
|
|
@@ -39,4 +40,4 @@ function routerSpout(options) {
|
|
|
39
40
|
};
|
|
40
41
|
};
|
|
41
42
|
}
|
|
42
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
43
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyb3V0ZXJTcG91dCIsIm9wdGlvbnMiLCJjcmVhdGVSb3V0ZUNvbXBvbmVudCIsInJvdXRlciIsIlJvdXRlciIsImNoaWxkcmVuIiwicmVzb2x2ZVdpdGgiLCJ1c2VSZXNvbHZlV2l0aCIsIm9uQ2hhbmdlIiwibmV4dCIsImhpc3RvcnkiLCJjcmVhdGVCcm93c2VySGlzdG9yeSIsImNyZWF0ZVJvdXRlciIsIm1hdGNoZWRSb3V0ZXMiLCJnZXRNYXRjaGVkUm91dGVzIiwibG9jYXRpb24iLCJwYXRobmFtZSIsIm5leHRQcm9wcyIsImFwcCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvcm91dGVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZSwgUm91dGVQcm92aWRlciwgUm91dGVDb250cm9sbGVyIH0gZnJvbSAnQGFuYW5zaS9yb3V0ZXInO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZUJyb3dzZXJIaXN0b3J5IH0gZnJvbSAnaGlzdG9yeSc7XG5pbXBvcnQgdHlwZSB7IFVwZGF0ZSB9IGZyb20gJ2hpc3RvcnknO1xuXG5pbXBvcnQgdHlwZSB7IFJlc29sdmVQcm9wcywgQ3JlYXRlUm91dGVyIH0gZnJvbSAnLi90eXBlcyc7XG5cbnR5cGUgTmVlZGVkUHJvcHMgPSBSZXNvbHZlUHJvcHM7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJvdXRlclNwb3V0PFJlc29sdmVXaXRoPihvcHRpb25zOiB7XG4gIHJlc29sdmVXaXRoPzogYW55O1xuICB1c2VSZXNvbHZlV2l0aDogKCkgPT4gUmVzb2x2ZVdpdGg7XG4gIGNyZWF0ZVJvdXRlcjogQ3JlYXRlUm91dGVyPFJlc29sdmVXaXRoPjtcbiAgb25DaGFuZ2U/OiAodXBkYXRlOiBVcGRhdGUsIGNhbGxiYWNrOiAoKSA9PiB2b2lkIHwgdW5kZWZpbmVkKSA9PiB2b2lkO1xufSkge1xuICBjb25zdCBjcmVhdGVSb3V0ZUNvbXBvbmVudCA9IChcbiAgICByb3V0ZXI6IFJvdXRlQ29udHJvbGxlcjxSb3V0ZTxSZXNvbHZlV2l0aCwgYW55Pj4sXG4gICkgPT5cbiAgICBmdW5jdGlvbiBSb3V0ZXIoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfSkge1xuICAgICAgY29uc3QgcmVzb2x2ZVdpdGggPSBvcHRpb25zLnVzZVJlc29sdmVXaXRoKCk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxSb3V0ZVByb3ZpZGVyXG4gICAgICAgICAgcm91dGVyPXtyb3V0ZXJ9XG4gICAgICAgICAgcmVzb2x2ZVdpdGg9e3Jlc29sdmVXaXRofVxuICAgICAgICAgIG9uQ2hhbmdlPXtvcHRpb25zLm9uQ2hhbmdlfVxuICAgICAgICA+XG4gICAgICAgICAge2NoaWxkcmVufVxuICAgICAgICA8L1JvdXRlUHJvdmlkZXI+XG4gICAgICApO1xuICAgIH07XG5cbiAgcmV0dXJuIGZ1bmN0aW9uIDxUIGV4dGVuZHMgTmVlZGVkUHJvcHM+KG5leHQ6ICgpID0+IFByb21pc2U8VD4pIHtcbiAgICByZXR1cm4gYXN5bmMgKCkgPT4ge1xuICAgICAgY29uc3QgaGlzdG9yeSA9IGNyZWF0ZUJyb3dzZXJIaXN0b3J5KCk7XG4gICAgICBjb25zdCByb3V0ZXIgPSBvcHRpb25zLmNyZWF0ZVJvdXRlcihoaXN0b3J5KTtcbiAgICAgIGNvbnN0IG1hdGNoZWRSb3V0ZXMgPSByb3V0ZXIuZ2V0TWF0Y2hlZFJvdXRlcyhoaXN0b3J5LmxvY2F0aW9uLnBhdGhuYW1lKTtcblxuICAgICAgY29uc3QgbmV4dFByb3BzID0gYXdhaXQgbmV4dCgpO1xuXG4gICAgICBjb25zdCBSb3V0ZXIgPSBjcmVhdGVSb3V0ZUNvbXBvbmVudChyb3V0ZXIpO1xuICAgICAgcmV0dXJuIHtcbiAgICAgICAgLi4ubmV4dFByb3BzLFxuICAgICAgICBtYXRjaGVkUm91dGVzLFxuICAgICAgICByb3V0ZXIsXG4gICAgICAgIGFwcDogPFJvdXRlcj57bmV4dFByb3BzLmFwcH08L1JvdXRlcj4sXG4gICAgICB9O1xuICAgIH07XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7OztBQUFBOztBQUNBOztBQUNBOztBQU9lLFNBQVNBLFdBQVQsQ0FBa0NDLE9BQWxDLEVBS1o7RUFDRCxNQUFNQyxvQkFBb0IsR0FDeEJDLE1BRDJCLElBRzNCLFNBQVNDLE1BQVQsQ0FBZ0I7SUFBRUM7RUFBRixDQUFoQixFQUE2RDtJQUMzRCxNQUFNQyxXQUFXLEdBQUdMLE9BQU8sQ0FBQ00sY0FBUixFQUFwQjtJQUVBLG9CQUNFLG1CQUFDLHFCQUFEO01BQ0UsTUFBTSxFQUFFSixNQURWO01BRUUsV0FBVyxFQUFFRyxXQUZmO01BR0UsUUFBUSxFQUFFTCxPQUFPLENBQUNPO0lBSHBCLFdBS0dILFFBTEgsQ0FERjtFQVNELENBZkg7O0VBaUJBLE9BQU8sVUFBaUNJLElBQWpDLEVBQXlEO0lBQzlELE9BQU8sWUFBWTtNQUNqQixNQUFNQyxPQUFPLEdBQUcsSUFBQUMsNkJBQUEsR0FBaEI7TUFDQSxNQUFNUixNQUFNLEdBQUdGLE9BQU8sQ0FBQ1csWUFBUixDQUFxQkYsT0FBckIsQ0FBZjtNQUNBLE1BQU1HLGFBQWEsR0FBR1YsTUFBTSxDQUFDVyxnQkFBUCxDQUF3QkosT0FBTyxDQUFDSyxRQUFSLENBQWlCQyxRQUF6QyxDQUF0QjtNQUVBLE1BQU1DLFNBQVMsR0FBRyxNQUFNUixJQUFJLEVBQTVCO01BRUEsTUFBTUwsTUFBTSxHQUFHRixvQkFBb0IsQ0FBQ0MsTUFBRCxDQUFuQztNQUNBLE9BQU8sRUFDTCxHQUFHYyxTQURFO1FBRUxKLGFBRks7UUFHTFYsTUFISztRQUlMZSxHQUFHLGVBQUUsbUJBQUMsTUFBRCxjQUFTRCxTQUFTLENBQUNDLEdBQW5CO01BSkEsQ0FBUDtJQU1ELENBZEQ7RUFlRCxDQWhCRDtBQWlCRCJ9
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@anansi/core",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.10.0",
|
|
4
4
|
"description": "React 18 Framework",
|
|
5
5
|
"homepage": "https://github.com/ntucker/anansi/tree/master/packages/core#readme",
|
|
6
6
|
"repository": {
|
|
@@ -65,29 +65,30 @@
|
|
|
65
65
|
"browser"
|
|
66
66
|
],
|
|
67
67
|
"devDependencies": {
|
|
68
|
-
"@anansi/babel-preset": "^3.2.
|
|
68
|
+
"@anansi/babel-preset": "^3.2.4",
|
|
69
69
|
"@anansi/browserslist-config": "1.3.3",
|
|
70
|
-
"@anansi/webpack-config": "^11.6.
|
|
70
|
+
"@anansi/webpack-config": "^11.6.4",
|
|
71
71
|
"@babel/cli": "7.17.10",
|
|
72
72
|
"@babel/core": "7.18.2",
|
|
73
|
+
"@types/compression": "^1.7.2",
|
|
73
74
|
"@types/source-map-support": "^0.5.4",
|
|
74
75
|
"@types/tmp": "^0.2.3",
|
|
75
76
|
"@types/webpack-hot-middleware": "^2.25.6",
|
|
76
|
-
"jest": "28.1.
|
|
77
|
+
"jest": "28.1.1",
|
|
77
78
|
"rimraf": "^3.0.0",
|
|
78
79
|
"webpack": "^5.72.1",
|
|
79
80
|
"webpack-cli": "^4.9.2"
|
|
80
81
|
},
|
|
81
82
|
"dependencies": {
|
|
82
|
-
"@anansi/router": "^0.
|
|
83
|
+
"@anansi/router": "^0.6.0",
|
|
83
84
|
"@babel/runtime": "^7.10.5",
|
|
84
|
-
"@rest-hooks/ssr": "^0.
|
|
85
|
+
"@rest-hooks/ssr": "^0.2.0",
|
|
85
86
|
"chalk": "^4.0.0",
|
|
87
|
+
"compression": "^1.7.4",
|
|
86
88
|
"cross-fetch": "^3.1.5",
|
|
87
|
-
"fs-
|
|
89
|
+
"fs-require": "^1.4.0",
|
|
88
90
|
"history": "^5.3.0",
|
|
89
91
|
"http-proxy-middleware": "^2.0.6",
|
|
90
|
-
"import-fresh": "^3.3.0",
|
|
91
92
|
"memfs": "^3.4.1",
|
|
92
93
|
"ora": "^5.0.0",
|
|
93
94
|
"redux": "^4.1.2",
|
|
@@ -7,13 +7,12 @@ import webpack, { MultiCompiler } from 'webpack';
|
|
|
7
7
|
import { createFsFromVolume, Volume } from 'memfs';
|
|
8
8
|
import { Server, IncomingMessage, ServerResponse } from 'http';
|
|
9
9
|
import type { NextFunction } from 'express';
|
|
10
|
-
import { patchRequire } from 'fs-monkey';
|
|
11
10
|
import tmp from 'tmp';
|
|
12
11
|
import sourceMapSupport from 'source-map-support';
|
|
13
12
|
import { ufs } from 'unionfs';
|
|
14
13
|
import WebpackDevServer from 'webpack-dev-server';
|
|
15
|
-
import importFresh from 'import-fresh';
|
|
16
14
|
import logging from 'webpack/lib/logging/runtime';
|
|
15
|
+
import { createFsRequire } from 'fs-require';
|
|
17
16
|
|
|
18
17
|
import 'cross-fetch/polyfill';
|
|
19
18
|
import { BoundRender } from './types';
|
|
@@ -47,7 +46,7 @@ export default function startDevServer(
|
|
|
47
46
|
const fs = createFsFromVolume(volume);
|
|
48
47
|
ufs.use(diskFs).use(fs as any);
|
|
49
48
|
|
|
50
|
-
|
|
49
|
+
const fsRequire = createFsRequire(ufs);
|
|
51
50
|
const readFile = promisify(ufs.readFile);
|
|
52
51
|
let server: Server | undefined;
|
|
53
52
|
|
|
@@ -122,12 +121,12 @@ export default function startDevServer(
|
|
|
122
121
|
};
|
|
123
122
|
}
|
|
124
123
|
|
|
125
|
-
|
|
124
|
+
let initRender:
|
|
126
125
|
| { args: Parameters<BoundRender>; resolve: () => void }[]
|
|
127
126
|
| undefined = [];
|
|
128
127
|
let render: BoundRender = (...args) =>
|
|
129
128
|
new Promise(resolve => {
|
|
130
|
-
initRender
|
|
129
|
+
initRender?.push({ args, resolve });
|
|
131
130
|
});
|
|
132
131
|
|
|
133
132
|
function importRender(stats: webpack.Stats[]) {
|
|
@@ -147,19 +146,19 @@ export default function startDevServer(
|
|
|
147
146
|
// ASSETS
|
|
148
147
|
const clientManifest = clientStats.toJson();
|
|
149
148
|
|
|
149
|
+
const serverEntry = getServerBundle(serverStats);
|
|
150
|
+
// reload modules
|
|
151
|
+
// TODO: should we just reset entire cache each time? then we could avoid needing one output
|
|
152
|
+
delete fsRequire.cache[fsRequire.resolve(serverEntry)];
|
|
153
|
+
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
154
|
+
render = (fsRequire(serverEntry) as any).default.bind(
|
|
155
|
+
undefined,
|
|
156
|
+
clientManifest,
|
|
157
|
+
);
|
|
150
158
|
// SERVER SIDE ENTRYPOINT
|
|
151
159
|
if (Array.isArray(initRender)) {
|
|
152
|
-
// eslint-disable-next-line @typescript-eslint/no-var-requires
|
|
153
|
-
render = (require(getServerBundle(serverStats)) as any).default.bind(
|
|
154
|
-
undefined,
|
|
155
|
-
clientManifest,
|
|
156
|
-
);
|
|
157
160
|
initRender.forEach(init => render(...init.args).then(init.resolve));
|
|
158
|
-
|
|
159
|
-
render = (importFresh(getServerBundle(serverStats)) as any).default.bind(
|
|
160
|
-
undefined,
|
|
161
|
-
clientManifest,
|
|
162
|
-
);
|
|
161
|
+
initRender = undefined;
|
|
163
162
|
}
|
|
164
163
|
}
|
|
165
164
|
|
package/src/spouts/router.tsx
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Route, RouteProvider, RouteController } from '@anansi/router';
|
|
2
2
|
import React from 'react';
|
|
3
3
|
import { createBrowserHistory } from 'history';
|
|
4
|
+
import type { Update } from 'history';
|
|
4
5
|
|
|
5
6
|
import type { ResolveProps, CreateRouter } from './types';
|
|
6
7
|
|
|
@@ -10,6 +11,7 @@ export default function routerSpout<ResolveWith>(options: {
|
|
|
10
11
|
resolveWith?: any;
|
|
11
12
|
useResolveWith: () => ResolveWith;
|
|
12
13
|
createRouter: CreateRouter<ResolveWith>;
|
|
14
|
+
onChange?: (update: Update, callback: () => void | undefined) => void;
|
|
13
15
|
}) {
|
|
14
16
|
const createRouteComponent = (
|
|
15
17
|
router: RouteController<Route<ResolveWith, any>>,
|
|
@@ -18,7 +20,11 @@ export default function routerSpout<ResolveWith>(options: {
|
|
|
18
20
|
const resolveWith = options.useResolveWith();
|
|
19
21
|
|
|
20
22
|
return (
|
|
21
|
-
<RouteProvider
|
|
23
|
+
<RouteProvider
|
|
24
|
+
router={router}
|
|
25
|
+
resolveWith={resolveWith}
|
|
26
|
+
onChange={options.onChange}
|
|
27
|
+
>
|
|
22
28
|
{children}
|
|
23
29
|
</RouteProvider>
|
|
24
30
|
);
|