@anansi/core 0.14.0 → 0.14.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md CHANGED
@@ -3,6 +3,47 @@
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.14.4](https://github.com/ntucker/anansi/compare/@anansi/core@0.14.3...@anansi/core@0.14.4) (2022-07-08)
7
+
8
+ **Note:** Version bump only for package @anansi/core
9
+
10
+
11
+
12
+
13
+
14
+ ### [0.14.3](https://github.com/ntucker/anansi/compare/@anansi/core@0.14.1...@anansi/core@0.14.3) (2022-07-01)
15
+
16
+
17
+ ### 🐛 Bug Fix
18
+
19
+ * Spout type removes provided props from needed props ([#1572](https://github.com/ntucker/anansi/issues/1572)) ([caa25fd](https://github.com/ntucker/anansi/commit/caa25fd73b1b381fea84427a26b44199d4b12314))
20
+
21
+
22
+
23
+ ### [0.14.2](https://github.com/ntucker/anansi/compare/@anansi/core@0.14.1...@anansi/core@0.14.2) (2022-07-01)
24
+
25
+
26
+ ### 🐛 Bug Fix
27
+
28
+ * Spout type removes provided props from needed props ([#1572](https://github.com/ntucker/anansi/issues/1572)) ([caa25fd](https://github.com/ntucker/anansi/commit/caa25fd73b1b381fea84427a26b44199d4b12314))
29
+
30
+
31
+
32
+ ### [0.14.1](https://github.com/ntucker/anansi/compare/@anansi/core@0.14.0...@anansi/core@0.14.1) (2022-06-29)
33
+
34
+
35
+ ### 🐛 Bug Fix
36
+
37
+ * Provide rest-hooks package for rest-hooks/ssr ([#1569](https://github.com/ntucker/anansi/issues/1569)) ([1dbb8ae](https://github.com/ntucker/anansi/commit/1dbb8aec39ad3180a96e76827611b05b53d7e02f))
38
+
39
+
40
+ ### 📦 Package
41
+
42
+ * Update babel monorepo to v7.18.6 ([#1566](https://github.com/ntucker/anansi/issues/1566)) ([1634f13](https://github.com/ntucker/anansi/commit/1634f1358de98ba724433ffb462094ad17f88b72))
43
+ * Update jest monorepo to ^28.1.2 ([#1567](https://github.com/ntucker/anansi/issues/1567)) ([2e614b1](https://github.com/ntucker/anansi/commit/2e614b1bc54ade3cf78717e7d26d606f5e917888))
44
+
45
+
46
+
6
47
  ## [0.14.0](https://github.com/ntucker/anansi/compare/@anansi/core@0.13.0...@anansi/core@0.14.0) (2022-06-24)
7
48
 
8
49
 
package/dist/client.js CHANGED
@@ -52,8 +52,6 @@ __webpack_require__.r(__webpack_exports__);
52
52
  // EXPORTS
53
53
  __webpack_require__.d(__webpack_exports__, {
54
54
  "JSONSpout": () => (/* reexport */ JSONSpout),
55
- "ServerProps": () => (/* reexport */ types_namespaceObject.ServerProps),
56
- "Spout": () => (/* reexport */ types_namespaceObject.ClientSpout),
57
55
  "appSpout": () => (/* reexport */ app),
58
56
  "documentSpout": () => (/* reexport */ documentSpout),
59
57
  "floodSpouts": () => (/* reexport */ floodSpouts),
@@ -61,10 +59,6 @@ __webpack_require__.d(__webpack_exports__, {
61
59
  "routerSpout": () => (/* reexport */ routerSpout)
62
60
  });
63
61
 
64
- // NAMESPACE OBJECT: ./src/spouts/types.ts
65
- var types_namespaceObject = {};
66
- __webpack_require__.r(types_namespaceObject);
67
-
68
62
  ;// CONCATENATED MODULE: external "react-dom/client"
69
63
  const client_namespaceObject = require("react-dom/client");
70
64
  ;// CONCATENATED MODULE: ./src/floodSpouts.tsx
@@ -136,7 +130,7 @@ function routerSpout(options) {
136
130
  __self: this,
137
131
  __source: {
138
132
  fileName: router_jsxFileName,
139
- lineNumber: 27,
133
+ lineNumber: 28,
140
134
  columnNumber: 9
141
135
  }
142
136
  }, children);
@@ -158,7 +152,7 @@ function routerSpout(options) {
158
152
  __self: this,
159
153
  __source: {
160
154
  fileName: router_jsxFileName,
161
- lineNumber: 49,
155
+ lineNumber: 50,
162
156
  columnNumber: 12
163
157
  }
164
158
  }, nextProps.app)
@@ -189,8 +183,6 @@ const appSpout = app => props => Promise.resolve({ ...props,
189
183
  });
190
184
 
191
185
  /* harmony default export */ const app = (appSpout);
192
- ;// CONCATENATED MODULE: ./src/spouts/types.ts
193
-
194
186
  ;// CONCATENATED MODULE: ./src/index.ts
195
187
 
196
188
 
@@ -198,8 +190,6 @@ const appSpout = app => props => Promise.resolve({ ...props,
198
190
 
199
191
 
200
192
 
201
-
202
-
203
193
  module.exports = __webpack_exports__;
204
194
  /******/ })()
205
195
  ;
@@ -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;;ACNA;AAIA;AACA;AAEA;AACA;AACA;;ACdA;;;ACAA;;;;ACAA;AASA;AAGA;AAAA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AAQA;AACA;;AC5BA;;ACAA;;;ACAA;AACA;AACA;AAKA;AAYA;AAGA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAJA;AAMA;AACA;;ACjDA;AACA;AADA;AAMA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;AACA;AACA;AACA;AACA;;AChBA;AAGA;AAAA;;AAEA;;;;AELA;AACA;AACA;AACA;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/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/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/spouts/json.tsx","/home/ntucker/src/anansi/packages/core/src/spouts/app.tsx","/home/ntucker/src/anansi/packages/core/src/spouts/types.ts","/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: (props: Record<string, unknown>) => 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 { ClientSpout } from './types';\n\nexport default function documentSpout(options: {\n head?: React.ReactNode;\n title: string;\n}): ClientSpout {\n return next => async props => {\n const nextProps = await next(props);\n\n return nextProps;\n };\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@rest-hooks/core\");","import {\n CacheProvider,\n Manager,\n NetworkManager,\n State,\n} from '@rest-hooks/core';\n\nimport type { ClientSpout } from './types';\n\nexport default function restHooksSpout(\n options: {\n getManagers: () => Manager[];\n } = { getManagers: () => [new NetworkManager()] },\n): ClientSpout<{ initData: Record<string, unknown> }> {\n return next => async props => {\n const data = props.initData.resthooks as State<unknown>;\n\n const nextProps = await next(props);\n\n return {\n ...nextProps,\n app: (\n <CacheProvider initialState={data} managers={options.getManagers()}>\n {nextProps.app}\n </CacheProvider>\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 { CreateRouter, ClientSpout } from './types';\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}): ClientSpout<\n Record<string, unknown>,\n {\n matchedRoutes: Route<ResolveWith, any>[];\n router: RouteController<Route<ResolveWith, any>>;\n }\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 next => async props => {\n const history = createBrowserHistory();\n const router = options.createRouter(history);\n const matchedRoutes = router.getMatchedRoutes(history.location.pathname);\n\n const nextProps = await next({ ...props, matchedRoutes, router });\n\n const Router = createRouteComponent(router);\n return {\n ...nextProps,\n matchedRoutes,\n router,\n app: <Router>{nextProps.app}</Router>,\n };\n };\n}\n","import type { ClientSpout } from './types';\n\nexport default function JSONSpout({\n id = 'anansi-json',\n}: { id?: string } = {}): ClientSpout<\n Record<string, unknown>,\n { initData: Record<string, unknown> }\n> {\n return next => async props => {\n const initData = getDatafromDOM(id);\n return { ...(await next({ ...props, initData })), initData };\n };\n}\nfunction getDatafromDOM(id: string): Record<string, unknown> {\n const element: HTMLScriptElement | null = document.querySelector(`#${id}`);\n return element?.text ? JSON.parse(element?.text) : undefined;\n}\n","const appSpout =\n (app: JSX.Element) =>\n <P extends Record<string, unknown>>(props: P) =>\n Promise.resolve({ ...props, app });\n\nexport default appSpout;\n","import { IncomingMessage, ServerResponse } from 'http';\nimport { Request, Response } from 'express';\nimport type { StatsCompilation } from 'webpack';\nimport { History } from 'history';\nimport { Route, RouteController } from '@anansi/router';\n\n/* Variables from the rendering call */\nexport type ServerProps = {\n req: Request | IncomingMessage;\n res: Response | ServerResponse;\n clientManifest: StatsCompilation;\n nonce: string;\n};\n\n/* Baseline expectations of return value */\nexport type ResolveProps = {\n app: JSX.Element;\n};\n\nexport type CreateRouter<T> = (\n history: History,\n) => RouteController<Route<T, any>>;\n\n/* Spouts are middleware for Anansi */\nexport type ServerSpout<\n NeededProps extends Record<string, unknown> = Record<string, unknown>,\n ProvidedProps extends Record<string, unknown> = Record<string, unknown>,\n NeededNext extends Record<string, unknown> = NeededProps,\n> = <N extends NeededNext & ResolveProps, I extends NeededProps & ServerProps>(\n next: (props: I & ProvidedProps) => Promise<N>,\n) => (props: I) => Promise<N & ProvidedProps>;\n\n/* Spouts are middleware for Anansi */\nexport type ClientSpout<\n NeededProps extends Record<string, unknown> = Record<string, unknown>,\n ProvidedProps extends Record<string, unknown> = Record<string, unknown>,\n NeededNext extends Record<string, unknown> = NeededProps,\n> = <N extends NeededNext & ResolveProps, I extends NeededProps>(\n next: (props: I & ProvidedProps) => Promise<N>,\n) => (props: I) => Promise<N & ProvidedProps>;\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';\nexport { default as JSONSpout } from './spouts/json';\nexport { default as appSpout } from './spouts/app';\nexport { ServerProps } from './spouts/types';\nexport { ClientSpout as Spout } from './spouts/types';\n"],"names":[],"sourceRoot":""}
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;;ACNA;AAIA;AACA;AAEA;AACA;AACA;;ACdA;;;ACAA;;;;ACAA;AASA;AAGA;AAAA;AAEA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AAQA;AACA;;AC5BA;;ACAA;;;ACAA;AACA;AACA;AAKA;AAaA;AAGA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;;AAEA;AACA;AACA;AACA;AAEA;AAAA;AAAA;AAAA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAJA;AAMA;AACA;;AClDA;AACA;AADA;AAMA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AACA;AACA;;AACA;AACA;AACA;AACA;;AChBA;AAGA;AAAA;;AAEA;;ACLA;AACA;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/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/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/spouts/json.tsx","/home/ntucker/src/anansi/packages/core/src/spouts/app.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: (props: Record<string, unknown>) => 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 { ClientSpout } from './types';\n\nexport default function documentSpout(options: {\n head?: React.ReactNode;\n title: string;\n}): ClientSpout {\n return next => async props => {\n const nextProps = await next(props);\n\n return nextProps;\n };\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@rest-hooks/core\");","import {\n CacheProvider,\n Manager,\n NetworkManager,\n State,\n} from '@rest-hooks/core';\n\nimport type { ClientSpout } from './types';\n\nexport default function restHooksSpout(\n options: {\n getManagers: () => Manager[];\n } = { getManagers: () => [new NetworkManager()] },\n): ClientSpout<{ initData: Record<string, unknown> }> {\n return next => async props => {\n const data = props.initData.resthooks as State<unknown>;\n\n const nextProps = await next(props);\n\n return {\n ...nextProps,\n app: (\n <CacheProvider initialState={data} managers={options.getManagers()}>\n {nextProps.app}\n </CacheProvider>\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 { CreateRouter, ClientSpout } from './types';\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}): ClientSpout<\n Record<string, unknown>,\n {\n matchedRoutes: Route<ResolveWith, any>[];\n } & {\n router: RouteController<Route<ResolveWith, any>>;\n }\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 next => async props => {\n const history = createBrowserHistory();\n const router = options.createRouter(history);\n const matchedRoutes = router.getMatchedRoutes(history.location.pathname);\n\n const nextProps = await next({ ...props, matchedRoutes, router });\n\n const Router = createRouteComponent(router);\n return {\n ...nextProps,\n matchedRoutes,\n router,\n app: <Router>{nextProps.app}</Router>,\n };\n };\n}\n","import type { ClientSpout } from './types';\n\nexport default function JSONSpout({\n id = 'anansi-json',\n}: { id?: string } = {}): ClientSpout<\n Record<string, unknown>,\n { initData: Record<string, unknown> }\n> {\n return next => async props => {\n const initData = getDatafromDOM(id);\n return { ...(await next({ ...props, initData })), initData };\n };\n}\nfunction getDatafromDOM(id: string): Record<string, unknown> {\n const element: HTMLScriptElement | null = document.querySelector(`#${id}`);\n return element?.text ? JSON.parse(element?.text) : undefined;\n}\n","const appSpout =\n (app: JSX.Element) =>\n <P extends Record<string, unknown>>(props: P) =>\n Promise.resolve({ ...props, app });\n\nexport default appSpout;\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';\nexport { default as JSONSpout } from './spouts/json';\nexport { default as appSpout } from './spouts/app';\nexport type { ServerProps } from './spouts/types';\nexport type { ClientSpout as Spout } from './spouts/types';\n"],"names":[],"sourceRoot":""}
package/dist/server.js CHANGED
@@ -52,8 +52,6 @@ __webpack_require__.r(__webpack_exports__);
52
52
  // EXPORTS
53
53
  __webpack_require__.d(__webpack_exports__, {
54
54
  "JSONSpout": () => (/* reexport */ JSONSpout),
55
- "ServerProps": () => (/* reexport */ types_namespaceObject.ServerProps),
56
- "Spout": () => (/* reexport */ types_namespaceObject.ServerSpout),
57
55
  "appSpout": () => (/* reexport */ app_server),
58
56
  "documentSpout": () => (/* reexport */ DocumentSpout),
59
57
  "laySpouts": () => (/* reexport */ laySpouts),
@@ -62,10 +60,6 @@ __webpack_require__.d(__webpack_exports__, {
62
60
  "routerSpout": () => (/* reexport */ routerSpout)
63
61
  });
64
62
 
65
- // NAMESPACE OBJECT: ./src/spouts/types.ts
66
- var types_namespaceObject = {};
67
- __webpack_require__.r(types_namespaceObject);
68
-
69
63
  ;// CONCATENATED MODULE: external "react-dom/server"
70
64
  const server_namespaceObject = require("react-dom/server");
71
65
  ;// CONCATENATED MODULE: external "crypto"
@@ -455,7 +449,7 @@ function routerSpout(options) {
455
449
  __self: this,
456
450
  __source: {
457
451
  fileName: router_server_jsxFileName,
458
- lineNumber: 25,
452
+ lineNumber: 26,
459
453
  columnNumber: 9
460
454
  }
461
455
  }, children);
@@ -477,7 +471,7 @@ function routerSpout(options) {
477
471
  __self: this,
478
472
  __source: {
479
473
  fileName: router_server_jsxFileName,
480
- lineNumber: 48,
474
+ lineNumber: 49,
481
475
  columnNumber: 12
482
476
  }
483
477
  }, nextProps.app),
@@ -592,8 +586,6 @@ const appSpout = app => props => Promise.resolve({ ...props,
592
586
  });
593
587
 
594
588
  /* harmony default export */ const app_server = (appSpout);
595
- ;// CONCATENATED MODULE: ./src/spouts/types.ts
596
-
597
589
  ;// CONCATENATED MODULE: ./src/index.server.ts
598
590
 
599
591
 
@@ -602,8 +594,6 @@ const appSpout = app => props => Promise.resolve({ ...props,
602
594
 
603
595
 
604
596
 
605
-
606
-
607
597
  module.exports = __webpack_exports__;
608
598
  /******/ })()
609
599
  ;
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","mappings":"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","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/external node-commonjs \"crypto\"","/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/csp.ts","/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\"","/home/ntucker/src/anansi/packages/core/external commonjs \"redux\"","/home/ntucker/src/anansi/packages/core/src/spouts/rhHelp.tsx","/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/spouts/json.server.tsx","/home/ntucker/src/anansi/packages/core/src/spouts/app.server.tsx","/home/ntucker/src/anansi/packages/core/src/spouts/types.ts","/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\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"crypto\");","import { renderToPipeableStream as reactRender } from 'react-dom/server';\nimport crypto from 'crypto';\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 {\n timeoutMS = 200,\n onError,\n }: { timeoutMS?: number; onError?: (error: unknown) => void } = {},\n) {\n const render: Render = async (clientManifest, req, res) => {\n const nonce = crypto.randomBytes(16).toString('base64');\n\n try {\n const { app } = await spouts({ clientManifest, req, res, nonce });\n\n let didError = false;\n const { pipe, abort } = reactRender(app, {\n nonce,\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(e: any) {\n didError = true;\n console.error(e);\n res.statusCode = 500;\n //pipe(res); Removing this avoids, \"React currently only supports piping to one writable stream.\"\n if (onError) onError(e);\n },\n });\n // Abandon and switch to client rendering if enough time passes.\n // Try lowering this to see the client recover.\n setTimeout(\n () => (abort as any)(`Timeout of ${timeoutMS}ms exceeded`),\n timeoutMS,\n );\n } catch (e: unknown) {\n if (onError) onError(e);\n throw e;\n }\n };\n return render;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","export interface Policy {\n [directive: string]: string | string[];\n}\n\n// TODO: memoize this\nexport function buildPolicy(policyObj: Policy) {\n return Object.keys(policyObj)\n .map(key => {\n const val = Array.isArray(policyObj[key])\n ? [...new Set(policyObj[key]).values()].filter(v => v).join(' ')\n : policyObj[key];\n\n // move strict dynamic to the end of the policy if it exists to be backwards compatible with csp2\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#strict-dynamic\n if (typeof val === 'string' && val.includes(\"'strict-dynamic'\")) {\n const newVal = `${val\n .replace(/\\s?'strict-dynamic'\\s?/gi, ' ')\n .trim()} 'strict-dynamic'`;\n return `${key} ${newVal}`;\n }\n\n return `${key} ${val}`;\n })\n .join('; ');\n}\n","import type { Policy } from './csp';\nimport { buildPolicy } from './csp';\n\ntype Props = {\n children: React.ReactNode;\n assets: { href: string; as?: string; rel?: string }[];\n head: React.ReactNode;\n scripts: React.ReactNode;\n title: string;\n rootId: string;\n charSet: string;\n csPolicy?: Policy;\n nonce?: string | undefined;\n};\n\nexport default function Document({\n assets,\n head,\n children,\n title,\n rootId,\n charSet,\n csPolicy,\n nonce,\n scripts,\n}: Props) {\n let cspMeta: null | React.ReactNode = null;\n if (csPolicy) {\n // add nonce to policy\n const policy = {\n ...csPolicy,\n };\n if (\n nonce &&\n // nonces negate 'unsafe-inline' so do not add it if that directive exists\n (!policy['script-src'] ||\n !policy['script-src'].includes(\"'unsafe-inline'\"))\n ) {\n if (typeof policy['script-src'] === 'string') {\n policy['script-src'] = [policy['script-src'], `'nonce-${nonce}'`];\n } else {\n policy['script-src'] = [...policy['script-src'], `'nonce-${nonce}'`];\n }\n }\n cspMeta = (\n <meta httpEquiv=\"Content-Security-Policy\" content={buildPolicy(policy)} />\n );\n }\n return (\n <html>\n <head>\n <meta charSet={charSet} />\n {cspMeta}\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 {scripts}\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 scripts: null,\n};\n","import React from 'react';\nimport type { Route } from '@anansi/router';\nimport { StatsChunkGroup } from 'webpack';\n\nimport type { ServerSpout } from './types';\nimport type { Policy } from './csp';\nimport Document from './DocumentComponent';\n\ntype NeededNext = {\n matchedRoutes: Route<any>[];\n title?: string;\n scripts?: React.ReactNode[];\n};\n\nexport default function DocumentSpout(options: {\n head?: React.ReactNode;\n title: string;\n rootId?: string;\n charSet?: string;\n csPolicy?: Policy;\n}): ServerSpout<Record<string, unknown>, Record<string, unknown>, NeededNext> {\n return next => async props => {\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 nonce={props.nonce}\n csPolicy={options.csPolicy}\n scripts={nextProps.scripts}\n >\n {nextProps.app}\n </Document>\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\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"redux\");","import { ExternalCacheProvider, PromiseifyMiddleware } from 'rest-hooks';\nimport {\n Controller,\n createReducer,\n initialState,\n Manager,\n applyManager,\n NetworkManager,\n} from '@rest-hooks/core';\nimport { createStore, applyMiddleware } from 'redux';\n\n// TODO: Rework this and upstream to rest hooks\nexport function createPersistedStore(managers?: Manager[]) {\n const controller = new Controller();\n managers = managers ?? [new NetworkManager()];\n const reducer = createReducer(controller);\n const enhancer = applyMiddleware(\n ...applyManager(managers, controller),\n PromiseifyMiddleware as any,\n );\n const store = createStore(reducer, initialState as any, enhancer);\n managers.forEach(manager => manager.init?.(store.getState()));\n\n const selector = (state: any) => state;\n function ServerCacheProvider({ children }: { children: React.ReactNode }) {\n return (\n <ExternalCacheProvider\n store={store}\n selector={selector}\n controller={controller}\n >\n {children}\n </ExternalCacheProvider>\n );\n }\n return [ServerCacheProvider, controller, store] as const;\n}\n","import { Controller, Manager, NetworkManager, State } from '@rest-hooks/core';\nimport type { Store } from 'redux';\n\nimport { createPersistedStore } from './rhHelp';\nimport type { ServerSpout } from './types';\n\nexport default function restHooksSpout(\n options: {\n getManagers: () => Manager[];\n } = { getManagers: () => [new NetworkManager()] },\n): ServerSpout<\n Record<string, unknown>,\n { controller: Controller; store: Store<State<unknown>> },\n { initData?: Record<string, () => unknown> }\n> {\n return next => async props => {\n const [ServerCacheProvider, controller, store] = createPersistedStore(\n options.getManagers(),\n );\n\n const nextProps = await next({\n ...props,\n controller,\n store,\n });\n\n return {\n ...nextProps,\n initData: {\n ...nextProps.initData,\n resthooks: () => store.getState(),\n },\n app: <ServerCacheProvider>{nextProps.app}</ServerCacheProvider>,\n // TODO: figure out how to only inject in next and not have to also put here\n controller,\n store,\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 { CreateRouter, ServerSpout } from './types';\n\nexport default function routerSpout<ResolveWith>(options: {\n resolveWith?: any;\n useResolveWith: () => ResolveWith;\n createRouter: CreateRouter<ResolveWith>;\n}): ServerSpout<\n Record<string, unknown>,\n {\n matchedRoutes: Route<ResolveWith>[];\n router: RouteController<Route<ResolveWith, any>>;\n }\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 next => async props => {\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({\n ...props,\n matchedRoutes,\n router,\n });\n\n const Router = createRouteComponent(router);\n\n return {\n ...nextProps,\n app: <Router>{nextProps.app}</Router>,\n // TODO: figure out how to only inject in next and not have to also put here\n matchedRoutes,\n router,\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 <\n RouteWith,\n N extends NeededProps<RouteWith>,\n I extends ServerProps,\n >(\n next: (props: I) => Promise<\n {\n [K in F]: RouteWith;\n } & N\n >,\n ) {\n return async (props: I) => {\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","import React from 'react';\n\nimport type { ServerSpout } from './types';\n\ntype NeededNext = {\n initData?: Record<string, () => unknown>;\n scripts?: React.ReactNode[];\n};\n\nexport default function JSONSpout({\n id = 'anansi-json',\n}: { id?: string } = {}): ServerSpout<\n Record<string, unknown>,\n Record<string, unknown>,\n NeededNext\n> {\n return next => async props => {\n const nextProps = await next(props);\n\n const scripts: React.ReactNode[] = nextProps.scripts ?? [];\n /*\n Object.entries(nextProps.initData ?? {}).forEach(([key, data]) => {\n try {\n const encoded = JSON.stringify(data);\n scripts.push(\n <script\n key={key}\n id={`${id}-${key}`}\n type=\"application/json\"\n dangerouslySetInnerHTML={{\n __html: encoded,\n }}\n nonce={props.nonce}\n />,\n );\n } catch (e) {\n // TODO: Use unified logging\n console.error(e);\n }\n });*/\n const Script = () => {\n try {\n const data: any = {};\n Object.entries(nextProps.initData ?? {}).forEach(([key, getData]) => {\n data[key] = getData();\n });\n const encoded = JSON.stringify(data);\n return (\n <script\n key={id}\n id={id}\n type=\"application/json\"\n dangerouslySetInnerHTML={{\n __html: encoded,\n }}\n nonce={props.nonce}\n />\n );\n } catch (e) {\n // TODO: Use unified logging\n console.error('Error serializing json');\n console.error(e);\n return null;\n }\n };\n scripts.push(<Script />);\n\n return {\n ...nextProps,\n scripts,\n };\n };\n}\n","import { ServerProps } from './types';\n\nconst appSpout =\n (app: JSX.Element) =>\n <P extends ServerProps>(props: P) =>\n Promise.resolve({ ...props, app });\n\nexport default appSpout;\n","import { IncomingMessage, ServerResponse } from 'http';\nimport { Request, Response } from 'express';\nimport type { StatsCompilation } from 'webpack';\nimport { History } from 'history';\nimport { Route, RouteController } from '@anansi/router';\n\n/* Variables from the rendering call */\nexport type ServerProps = {\n req: Request | IncomingMessage;\n res: Response | ServerResponse;\n clientManifest: StatsCompilation;\n nonce: string;\n};\n\n/* Baseline expectations of return value */\nexport type ResolveProps = {\n app: JSX.Element;\n};\n\nexport type CreateRouter<T> = (\n history: History,\n) => RouteController<Route<T, any>>;\n\n/* Spouts are middleware for Anansi */\nexport type ServerSpout<\n NeededProps extends Record<string, unknown> = Record<string, unknown>,\n ProvidedProps extends Record<string, unknown> = Record<string, unknown>,\n NeededNext extends Record<string, unknown> = NeededProps,\n> = <N extends NeededNext & ResolveProps, I extends NeededProps & ServerProps>(\n next: (props: I & ProvidedProps) => Promise<N>,\n) => (props: I) => Promise<N & ProvidedProps>;\n\n/* Spouts are middleware for Anansi */\nexport type ClientSpout<\n NeededProps extends Record<string, unknown> = Record<string, unknown>,\n ProvidedProps extends Record<string, unknown> = Record<string, unknown>,\n NeededNext extends Record<string, unknown> = NeededProps,\n> = <N extends NeededNext & ResolveProps, I extends NeededProps>(\n next: (props: I & ProvidedProps) => Promise<N>,\n) => (props: I) => Promise<N & ProvidedProps>;\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';\nexport { default as JSONSpout } from './spouts/json.server';\nexport { default as appSpout } from './spouts/app.server';\nexport { ServerProps } from './spouts/types';\nexport { ServerSpout as Spout } from './spouts/types';\n"],"names":[],"sourceRoot":""}
1
+ {"version":3,"file":"server.js","mappings":"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","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/external node-commonjs \"crypto\"","/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/csp.ts","/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\"","/home/ntucker/src/anansi/packages/core/external commonjs \"redux\"","/home/ntucker/src/anansi/packages/core/src/spouts/rhHelp.tsx","/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/spouts/json.server.tsx","/home/ntucker/src/anansi/packages/core/src/spouts/app.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\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"crypto\");","import { renderToPipeableStream as reactRender } from 'react-dom/server';\nimport crypto from 'crypto';\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 {\n timeoutMS = 200,\n onError,\n }: { timeoutMS?: number; onError?: (error: unknown) => void } = {},\n) {\n const render: Render = async (clientManifest, req, res) => {\n const nonce = crypto.randomBytes(16).toString('base64');\n\n try {\n const { app } = await spouts({ clientManifest, req, res, nonce });\n\n let didError = false;\n const { pipe, abort } = reactRender(app, {\n nonce,\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(e: any) {\n didError = true;\n console.error(e);\n res.statusCode = 500;\n //pipe(res); Removing this avoids, \"React currently only supports piping to one writable stream.\"\n if (onError) onError(e);\n },\n });\n // Abandon and switch to client rendering if enough time passes.\n // Try lowering this to see the client recover.\n setTimeout(\n () => (abort as any)(`Timeout of ${timeoutMS}ms exceeded`),\n timeoutMS,\n );\n } catch (e: unknown) {\n if (onError) onError(e);\n throw e;\n }\n };\n return render;\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react\");","export interface Policy {\n [directive: string]: string | string[];\n}\n\n// TODO: memoize this\nexport function buildPolicy(policyObj: Policy) {\n return Object.keys(policyObj)\n .map(key => {\n const val = Array.isArray(policyObj[key])\n ? [...new Set(policyObj[key]).values()].filter(v => v).join(' ')\n : policyObj[key];\n\n // move strict dynamic to the end of the policy if it exists to be backwards compatible with csp2\n // https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src#strict-dynamic\n if (typeof val === 'string' && val.includes(\"'strict-dynamic'\")) {\n const newVal = `${val\n .replace(/\\s?'strict-dynamic'\\s?/gi, ' ')\n .trim()} 'strict-dynamic'`;\n return `${key} ${newVal}`;\n }\n\n return `${key} ${val}`;\n })\n .join('; ');\n}\n","import type { Policy } from './csp';\nimport { buildPolicy } from './csp';\n\ntype Props = {\n children: React.ReactNode;\n assets: { href: string; as?: string; rel?: string }[];\n head: React.ReactNode;\n scripts: React.ReactNode;\n title: string;\n rootId: string;\n charSet: string;\n csPolicy?: Policy;\n nonce?: string | undefined;\n};\n\nexport default function Document({\n assets,\n head,\n children,\n title,\n rootId,\n charSet,\n csPolicy,\n nonce,\n scripts,\n}: Props) {\n let cspMeta: null | React.ReactNode = null;\n if (csPolicy) {\n // add nonce to policy\n const policy = {\n ...csPolicy,\n };\n if (\n nonce &&\n // nonces negate 'unsafe-inline' so do not add it if that directive exists\n (!policy['script-src'] ||\n !policy['script-src'].includes(\"'unsafe-inline'\"))\n ) {\n if (typeof policy['script-src'] === 'string') {\n policy['script-src'] = [policy['script-src'], `'nonce-${nonce}'`];\n } else {\n policy['script-src'] = [...policy['script-src'], `'nonce-${nonce}'`];\n }\n }\n cspMeta = (\n <meta httpEquiv=\"Content-Security-Policy\" content={buildPolicy(policy)} />\n );\n }\n return (\n <html>\n <head>\n <meta charSet={charSet} />\n {cspMeta}\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 {scripts}\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 scripts: null,\n};\n","import React from 'react';\nimport type { Route } from '@anansi/router';\nimport { StatsChunkGroup } from 'webpack';\n\nimport type { ServerSpout } from './types';\nimport type { Policy } from './csp';\nimport Document from './DocumentComponent';\n\ntype NeededNext = {\n matchedRoutes: Route<any>[];\n title?: string;\n scripts?: React.ReactNode[];\n};\n\nexport default function DocumentSpout(options: {\n head?: React.ReactNode;\n title: string;\n rootId?: string;\n charSet?: string;\n csPolicy?: Policy;\n}): ServerSpout<Record<string, unknown>, Record<string, unknown>, NeededNext> {\n return next => async props => {\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 nonce={props.nonce}\n csPolicy={options.csPolicy}\n scripts={nextProps.scripts}\n >\n {nextProps.app}\n </Document>\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\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"redux\");","import { ExternalCacheProvider, PromiseifyMiddleware } from 'rest-hooks';\nimport {\n Controller,\n createReducer,\n initialState,\n Manager,\n applyManager,\n NetworkManager,\n} from '@rest-hooks/core';\nimport { createStore, applyMiddleware } from 'redux';\n\n// TODO: Rework this and upstream to rest hooks\nexport function createPersistedStore(managers?: Manager[]) {\n const controller = new Controller();\n managers = managers ?? [new NetworkManager()];\n const reducer = createReducer(controller);\n const enhancer = applyMiddleware(\n ...applyManager(managers, controller),\n PromiseifyMiddleware as any,\n );\n const store = createStore(reducer, initialState as any, enhancer);\n managers.forEach(manager => manager.init?.(store.getState()));\n\n const selector = (state: any) => state;\n function ServerCacheProvider({ children }: { children: React.ReactNode }) {\n return (\n <ExternalCacheProvider\n store={store}\n selector={selector}\n controller={controller}\n >\n {children}\n </ExternalCacheProvider>\n );\n }\n return [ServerCacheProvider, controller, store] as const;\n}\n","import { Controller, Manager, NetworkManager, State } from '@rest-hooks/core';\nimport type { Store } from 'redux';\n\nimport { createPersistedStore } from './rhHelp';\nimport type { ServerSpout } from './types';\n\nexport default function restHooksSpout(\n options: {\n getManagers: () => Manager[];\n } = { getManagers: () => [new NetworkManager()] },\n): ServerSpout<\n Record<string, unknown>,\n { controller: Controller } & { store: Store<State<unknown>> },\n { initData?: Record<string, () => unknown> }\n> {\n return next => async props => {\n const [ServerCacheProvider, controller, store] = createPersistedStore(\n options.getManagers(),\n );\n\n const nextProps = await next({\n ...props,\n controller,\n store,\n });\n\n return {\n ...nextProps,\n initData: {\n ...nextProps.initData,\n resthooks: () => store.getState(),\n },\n app: <ServerCacheProvider>{nextProps.app}</ServerCacheProvider>,\n // TODO: figure out how to only inject in next and not have to also put here\n controller,\n store,\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 { CreateRouter, ServerSpout } from './types';\n\nexport default function routerSpout<ResolveWith>(options: {\n resolveWith?: any;\n useResolveWith: () => ResolveWith;\n createRouter: CreateRouter<ResolveWith>;\n}): ServerSpout<\n Record<string, unknown>,\n {\n matchedRoutes: Route<ResolveWith>[];\n } & {\n router: RouteController<Route<ResolveWith, any>>;\n }\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 next => async props => {\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({\n ...props,\n matchedRoutes,\n router,\n });\n\n const Router = createRouteComponent(router);\n\n return {\n ...nextProps,\n app: <Router>{nextProps.app}</Router>,\n // TODO: figure out how to only inject in next and not have to also put here\n matchedRoutes,\n router,\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 <\n RouteWith,\n N extends NeededProps<RouteWith>,\n I extends ServerProps,\n >(\n next: (props: I) => Promise<\n {\n [K in F]: RouteWith;\n } & N\n >,\n ) {\n return async (props: I) => {\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","import React from 'react';\n\nimport type { ServerSpout } from './types';\n\ntype NeededNext = {\n initData?: Record<string, () => unknown>;\n scripts?: React.ReactNode[];\n};\n\nexport default function JSONSpout({\n id = 'anansi-json',\n}: { id?: string } = {}): ServerSpout<\n Record<string, unknown>,\n Record<string, unknown>,\n NeededNext\n> {\n return next => async props => {\n const nextProps = await next(props);\n\n const scripts: React.ReactNode[] = nextProps.scripts ?? [];\n /*\n Object.entries(nextProps.initData ?? {}).forEach(([key, data]) => {\n try {\n const encoded = JSON.stringify(data);\n scripts.push(\n <script\n key={key}\n id={`${id}-${key}`}\n type=\"application/json\"\n dangerouslySetInnerHTML={{\n __html: encoded,\n }}\n nonce={props.nonce}\n />,\n );\n } catch (e) {\n // TODO: Use unified logging\n console.error(e);\n }\n });*/\n const Script = () => {\n try {\n const data: any = {};\n Object.entries(nextProps.initData ?? {}).forEach(([key, getData]) => {\n data[key] = getData();\n });\n const encoded = JSON.stringify(data);\n return (\n <script\n key={id}\n id={id}\n type=\"application/json\"\n dangerouslySetInnerHTML={{\n __html: encoded,\n }}\n nonce={props.nonce}\n />\n );\n } catch (e) {\n // TODO: Use unified logging\n console.error('Error serializing json');\n console.error(e);\n return null;\n }\n };\n scripts.push(<Script />);\n\n return {\n ...nextProps,\n scripts,\n };\n };\n}\n","import { ServerProps } from './types';\n\nconst appSpout =\n (app: JSX.Element) =>\n <P extends ServerProps>(props: P) =>\n Promise.resolve({ ...props, app });\n\nexport default appSpout;\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';\nexport { default as JSONSpout } from './spouts/json.server';\nexport { default as appSpout } from './spouts/app.server';\nexport type { ServerProps } from './spouts/types';\nexport type { ServerSpout as Spout } from './spouts/types';\n"],"names":[],"sourceRoot":""}
package/lib/index.d.ts CHANGED
@@ -4,6 +4,6 @@ export { default as restHooksSpout } from './spouts/restHooks';
4
4
  export { default as routerSpout } from './spouts/router';
5
5
  export { default as JSONSpout } from './spouts/json';
6
6
  export { default as appSpout } from './spouts/app';
7
- export { ServerProps } from './spouts/types';
8
- export { ClientSpout as Spout } from './spouts/types';
7
+ export type { ServerProps } from './spouts/types';
8
+ export type { ClientSpout as Spout } from './spouts/types';
9
9
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnD,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,eAAe,CAAC;AACvD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAC/D,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,iBAAiB,CAAC;AACzD,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,eAAe,CAAC;AACrD,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,cAAc,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,YAAY,EAAE,WAAW,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC"}
package/lib/index.js CHANGED
@@ -3,7 +3,7 @@
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
 
5
5
  exports.__esModule = true;
6
- exports.routerSpout = exports.restHooksSpout = exports.floodSpouts = exports.documentSpout = exports.appSpout = exports.Spout = exports.ServerProps = exports.JSONSpout = void 0;
6
+ exports.routerSpout = exports.restHooksSpout = exports.floodSpouts = exports.documentSpout = exports.appSpout = exports.JSONSpout = void 0;
7
7
 
8
8
  var _floodSpouts = _interopRequireDefault(require("./floodSpouts"));
9
9
 
@@ -28,9 +28,4 @@ exports.JSONSpout = _json.default;
28
28
  var _app = _interopRequireDefault(require("./spouts/app"));
29
29
 
30
30
  exports.appSpout = _app.default;
31
-
32
- var _types = require("./spouts/types");
33
-
34
- exports.ServerProps = _types.ServerProps;
35
- exports.Spout = _types.ClientSpout;
36
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgZmxvb2RTcG91dHMgfSBmcm9tICcuL2Zsb29kU3BvdXRzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZG9jdW1lbnRTcG91dCB9IGZyb20gJy4vc3BvdXRzL2RvY3VtZW50JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcmVzdEhvb2tzU3BvdXQgfSBmcm9tICcuL3Nwb3V0cy9yZXN0SG9va3MnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByb3V0ZXJTcG91dCB9IGZyb20gJy4vc3BvdXRzL3JvdXRlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEpTT05TcG91dCB9IGZyb20gJy4vc3BvdXRzL2pzb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhcHBTcG91dCB9IGZyb20gJy4vc3BvdXRzL2FwcCc7XG5leHBvcnQgeyBTZXJ2ZXJQcm9wcyB9IGZyb20gJy4vc3BvdXRzL3R5cGVzJztcbmV4cG9ydCB7IENsaWVudFNwb3V0IGFzIFNwb3V0IH0gZnJvbSAnLi9zcG91dHMvdHlwZXMnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0EifQ==
31
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LnRzIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCB7IGRlZmF1bHQgYXMgZmxvb2RTcG91dHMgfSBmcm9tICcuL2Zsb29kU3BvdXRzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZG9jdW1lbnRTcG91dCB9IGZyb20gJy4vc3BvdXRzL2RvY3VtZW50JztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgcmVzdEhvb2tzU3BvdXQgfSBmcm9tICcuL3Nwb3V0cy9yZXN0SG9va3MnO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyByb3V0ZXJTcG91dCB9IGZyb20gJy4vc3BvdXRzL3JvdXRlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIEpTT05TcG91dCB9IGZyb20gJy4vc3BvdXRzL2pzb24nO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBhcHBTcG91dCB9IGZyb20gJy4vc3BvdXRzL2FwcCc7XG5leHBvcnQgdHlwZSB7IFNlcnZlclByb3BzIH0gZnJvbSAnLi9zcG91dHMvdHlwZXMnO1xuZXhwb3J0IHR5cGUgeyBDbGllbnRTcG91dCBhcyBTcG91dCB9IGZyb20gJy4vc3BvdXRzL3R5cGVzJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQSJ9
@@ -5,6 +5,6 @@ export { default as routerSpout } from './spouts/router.server';
5
5
  export { default as prefetchSpout } from './spouts/prefetch.server';
6
6
  export { default as JSONSpout } from './spouts/json.server';
7
7
  export { default as appSpout } from './spouts/app.server';
8
- export { ServerProps } from './spouts/types';
9
- export { ServerSpout as Spout } from './spouts/types';
8
+ export type { ServerProps } from './spouts/types';
9
+ export type { ServerSpout as Spout } from './spouts/types';
10
10
  //# sourceMappingURL=index.server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.server.d.ts","sourceRoot":"","sources":["../src/index.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,EAAE,WAAW,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.server.d.ts","sourceRoot":"","sources":["../src/index.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,cAAc,EAAE,MAAM,2BAA2B,CAAC;AACtE,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,wBAAwB,CAAC;AAChE,OAAO,EAAE,OAAO,IAAI,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,OAAO,IAAI,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC1D,YAAY,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,YAAY,EAAE,WAAW,IAAI,KAAK,EAAE,MAAM,gBAAgB,CAAC"}
@@ -3,7 +3,7 @@
3
3
  var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
4
4
 
5
5
  exports.__esModule = true;
6
- exports.routerSpout = exports.restHooksSpout = exports.prefetchSpout = exports.laySpouts = exports.documentSpout = exports.appSpout = exports.Spout = exports.ServerProps = exports.JSONSpout = void 0;
6
+ exports.routerSpout = exports.restHooksSpout = exports.prefetchSpout = exports.laySpouts = exports.documentSpout = exports.appSpout = exports.JSONSpout = void 0;
7
7
 
8
8
  var _laySpouts = _interopRequireDefault(require("./laySpouts"));
9
9
 
@@ -32,9 +32,4 @@ exports.JSONSpout = _json.default;
32
32
  var _app = _interopRequireDefault(require("./spouts/app.server"));
33
33
 
34
34
  exports.appSpout = _app.default;
35
-
36
- var _types = require("./spouts/types");
37
-
38
- exports.ServerProps = _types.ServerProps;
39
- exports.Spout = _types.ServerSpout;
40
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LnNlcnZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0IGFzIGxheVNwb3V0cyB9IGZyb20gJy4vbGF5U3BvdXRzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZG9jdW1lbnRTcG91dCB9IGZyb20gJy4vc3BvdXRzL2RvY3VtZW50LnNlcnZlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlc3RIb29rc1Nwb3V0IH0gZnJvbSAnLi9zcG91dHMvcmVzdEhvb2tzLnNlcnZlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJvdXRlclNwb3V0IH0gZnJvbSAnLi9zcG91dHMvcm91dGVyLnNlcnZlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByZWZldGNoU3BvdXQgfSBmcm9tICcuL3Nwb3V0cy9wcmVmZXRjaC5zZXJ2ZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBKU09OU3BvdXQgfSBmcm9tICcuL3Nwb3V0cy9qc29uLnNlcnZlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFwcFNwb3V0IH0gZnJvbSAnLi9zcG91dHMvYXBwLnNlcnZlcic7XG5leHBvcnQgeyBTZXJ2ZXJQcm9wcyB9IGZyb20gJy4vc3BvdXRzL3R5cGVzJztcbmV4cG9ydCB7IFNlcnZlclNwb3V0IGFzIFNwb3V0IH0gZnJvbSAnLi9zcG91dHMvdHlwZXMnO1xuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUE7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQSJ9
35
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vc3JjL2luZGV4LnNlcnZlci50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgeyBkZWZhdWx0IGFzIGxheVNwb3V0cyB9IGZyb20gJy4vbGF5U3BvdXRzJztcbmV4cG9ydCB7IGRlZmF1bHQgYXMgZG9jdW1lbnRTcG91dCB9IGZyb20gJy4vc3BvdXRzL2RvY3VtZW50LnNlcnZlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJlc3RIb29rc1Nwb3V0IH0gZnJvbSAnLi9zcG91dHMvcmVzdEhvb2tzLnNlcnZlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHJvdXRlclNwb3V0IH0gZnJvbSAnLi9zcG91dHMvcm91dGVyLnNlcnZlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIHByZWZldGNoU3BvdXQgfSBmcm9tICcuL3Nwb3V0cy9wcmVmZXRjaC5zZXJ2ZXInO1xuZXhwb3J0IHsgZGVmYXVsdCBhcyBKU09OU3BvdXQgfSBmcm9tICcuL3Nwb3V0cy9qc29uLnNlcnZlcic7XG5leHBvcnQgeyBkZWZhdWx0IGFzIGFwcFNwb3V0IH0gZnJvbSAnLi9zcG91dHMvYXBwLnNlcnZlcic7XG5leHBvcnQgdHlwZSB7IFNlcnZlclByb3BzIH0gZnJvbSAnLi9zcG91dHMvdHlwZXMnO1xuZXhwb3J0IHR5cGUgeyBTZXJ2ZXJTcG91dCBhcyBTcG91dCB9IGZyb20gJy4vc3BvdXRzL3R5cGVzJztcbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUFBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBOzs7O0FBQ0E7Ozs7QUFDQTs7OztBQUNBIn0=
@@ -5,6 +5,7 @@ export default function restHooksSpout(options?: {
5
5
  getManagers: () => Manager[];
6
6
  }): ServerSpout<Record<string, unknown>, {
7
7
  controller: Controller;
8
+ } & {
8
9
  store: Store<State<unknown>>;
9
10
  }, {
10
11
  initData?: Record<string, () => unknown>;
@@ -1 +1 @@
1
- {"version":3,"file":"restHooks.server.d.ts","sourceRoot":"","sources":["../../src/spouts/restHooks.server.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAkB,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,OAAO,GAAE;IACP,WAAW,EAAE,MAAM,OAAO,EAAE,CAAC;CACkB,GAChD,WAAW,CACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvB;IAAE,UAAU,EAAE,UAAU,CAAC;IAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;CAAE,EACxD;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,CAAA;CAAE,CAC7C,CAwBA"}
1
+ {"version":3,"file":"restHooks.server.d.ts","sourceRoot":"","sources":["../../src/spouts/restHooks.server.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,OAAO,EAAkB,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,OAAO,CAAC;AAGnC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,CAAC,OAAO,UAAU,cAAc,CACpC,OAAO,GAAE;IACP,WAAW,EAAE,MAAM,OAAO,EAAE,CAAC;CACkB,GAChD,WAAW,CACZ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvB;IAAE,UAAU,EAAE,UAAU,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAA;CAAE,EAC7D;IAAE,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,OAAO,CAAC,CAAA;CAAE,CAC7C,CAwBA"}
@@ -33,4 +33,4 @@ function restHooksSpout(options = {
33
33
  };
34
34
  };
35
35
  }
36
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXN0SG9va3NTcG91dCIsIm9wdGlvbnMiLCJnZXRNYW5hZ2VycyIsIk5ldHdvcmtNYW5hZ2VyIiwibmV4dCIsInByb3BzIiwiU2VydmVyQ2FjaGVQcm92aWRlciIsImNvbnRyb2xsZXIiLCJzdG9yZSIsImNyZWF0ZVBlcnNpc3RlZFN0b3JlIiwibmV4dFByb3BzIiwiaW5pdERhdGEiLCJyZXN0aG9va3MiLCJnZXRTdGF0ZSIsImFwcCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvcmVzdEhvb2tzLnNlcnZlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udHJvbGxlciwgTWFuYWdlciwgTmV0d29ya01hbmFnZXIsIFN0YXRlIH0gZnJvbSAnQHJlc3QtaG9va3MvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFN0b3JlIH0gZnJvbSAncmVkdXgnO1xuXG5pbXBvcnQgeyBjcmVhdGVQZXJzaXN0ZWRTdG9yZSB9IGZyb20gJy4vcmhIZWxwJztcbmltcG9ydCB0eXBlIHsgU2VydmVyU3BvdXQgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVzdEhvb2tzU3BvdXQoXG4gIG9wdGlvbnM6IHtcbiAgICBnZXRNYW5hZ2VyczogKCkgPT4gTWFuYWdlcltdO1xuICB9ID0geyBnZXRNYW5hZ2VyczogKCkgPT4gW25ldyBOZXR3b3JrTWFuYWdlcigpXSB9LFxuKTogU2VydmVyU3BvdXQ8XG4gIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICB7IGNvbnRyb2xsZXI6IENvbnRyb2xsZXI7IHN0b3JlOiBTdG9yZTxTdGF0ZTx1bmtub3duPj4gfSxcbiAgeyBpbml0RGF0YT86IFJlY29yZDxzdHJpbmcsICgpID0+IHVua25vd24+IH1cbj4ge1xuICByZXR1cm4gbmV4dCA9PiBhc3luYyBwcm9wcyA9PiB7XG4gICAgY29uc3QgW1NlcnZlckNhY2hlUHJvdmlkZXIsIGNvbnRyb2xsZXIsIHN0b3JlXSA9IGNyZWF0ZVBlcnNpc3RlZFN0b3JlKFxuICAgICAgb3B0aW9ucy5nZXRNYW5hZ2VycygpLFxuICAgICk7XG5cbiAgICBjb25zdCBuZXh0UHJvcHMgPSBhd2FpdCBuZXh0KHtcbiAgICAgIC4uLnByb3BzLFxuICAgICAgY29udHJvbGxlcixcbiAgICAgIHN0b3JlLFxuICAgIH0pO1xuXG4gICAgcmV0dXJuIHtcbiAgICAgIC4uLm5leHRQcm9wcyxcbiAgICAgIGluaXREYXRhOiB7XG4gICAgICAgIC4uLm5leHRQcm9wcy5pbml0RGF0YSxcbiAgICAgICAgcmVzdGhvb2tzOiAoKSA9PiBzdG9yZS5nZXRTdGF0ZSgpLFxuICAgICAgfSxcbiAgICAgIGFwcDogPFNlcnZlckNhY2hlUHJvdmlkZXI+e25leHRQcm9wcy5hcHB9PC9TZXJ2ZXJDYWNoZVByb3ZpZGVyPixcbiAgICAgIC8vIFRPRE86IGZpZ3VyZSBvdXQgaG93IHRvIG9ubHkgaW5qZWN0IGluIG5leHQgYW5kIG5vdCBoYXZlIHRvIGFsc28gcHV0IGhlcmVcbiAgICAgIGNvbnRyb2xsZXIsXG4gICAgICBzdG9yZSxcbiAgICB9O1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUFBOztBQUdBOztBQUdlLFNBQVNBLGNBQVQsQ0FDYkMsT0FFQyxHQUFHO0VBQUVDLFdBQVcsRUFBRSxNQUFNLENBQUMsSUFBSUMsb0JBQUosRUFBRDtBQUFyQixDQUhTLEVBUWI7RUFDQSxPQUFPQyxJQUFJLElBQUksTUFBTUMsS0FBTixJQUFlO0lBQzVCLE1BQU0sQ0FBQ0MsbUJBQUQsRUFBc0JDLFVBQXRCLEVBQWtDQyxLQUFsQyxJQUEyQyxJQUFBQyw0QkFBQSxFQUMvQ1IsT0FBTyxDQUFDQyxXQUFSLEVBRCtDLENBQWpEO0lBSUEsTUFBTVEsU0FBUyxHQUFHLE1BQU1OLElBQUksQ0FBQyxFQUMzQixHQUFHQyxLQUR3QjtNQUUzQkUsVUFGMkI7TUFHM0JDO0lBSDJCLENBQUQsQ0FBNUI7SUFNQSxPQUFPLEVBQ0wsR0FBR0UsU0FERTtNQUVMQyxRQUFRLEVBQUUsRUFDUixHQUFHRCxTQUFTLENBQUNDLFFBREw7UUFFUkMsU0FBUyxFQUFFLE1BQU1KLEtBQUssQ0FBQ0ssUUFBTjtNQUZULENBRkw7TUFNTEMsR0FBRyxlQUFFLG1CQUFDLG1CQUFELGNBQXNCSixTQUFTLENBQUNJLEdBQWhDLENBTkE7TUFPTDtNQUNBUCxVQVJLO01BU0xDO0lBVEssQ0FBUDtFQVdELENBdEJEO0FBdUJEIn0=
36
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyZXN0SG9va3NTcG91dCIsIm9wdGlvbnMiLCJnZXRNYW5hZ2VycyIsIk5ldHdvcmtNYW5hZ2VyIiwibmV4dCIsInByb3BzIiwiU2VydmVyQ2FjaGVQcm92aWRlciIsImNvbnRyb2xsZXIiLCJzdG9yZSIsImNyZWF0ZVBlcnNpc3RlZFN0b3JlIiwibmV4dFByb3BzIiwiaW5pdERhdGEiLCJyZXN0aG9va3MiLCJnZXRTdGF0ZSIsImFwcCJdLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zcG91dHMvcmVzdEhvb2tzLnNlcnZlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29udHJvbGxlciwgTWFuYWdlciwgTmV0d29ya01hbmFnZXIsIFN0YXRlIH0gZnJvbSAnQHJlc3QtaG9va3MvY29yZSc7XG5pbXBvcnQgdHlwZSB7IFN0b3JlIH0gZnJvbSAncmVkdXgnO1xuXG5pbXBvcnQgeyBjcmVhdGVQZXJzaXN0ZWRTdG9yZSB9IGZyb20gJy4vcmhIZWxwJztcbmltcG9ydCB0eXBlIHsgU2VydmVyU3BvdXQgfSBmcm9tICcuL3R5cGVzJztcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gcmVzdEhvb2tzU3BvdXQoXG4gIG9wdGlvbnM6IHtcbiAgICBnZXRNYW5hZ2VyczogKCkgPT4gTWFuYWdlcltdO1xuICB9ID0geyBnZXRNYW5hZ2VyczogKCkgPT4gW25ldyBOZXR3b3JrTWFuYWdlcigpXSB9LFxuKTogU2VydmVyU3BvdXQ8XG4gIFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICB7IGNvbnRyb2xsZXI6IENvbnRyb2xsZXIgfSAmIHsgc3RvcmU6IFN0b3JlPFN0YXRlPHVua25vd24+PiB9LFxuICB7IGluaXREYXRhPzogUmVjb3JkPHN0cmluZywgKCkgPT4gdW5rbm93bj4gfVxuPiB7XG4gIHJldHVybiBuZXh0ID0+IGFzeW5jIHByb3BzID0+IHtcbiAgICBjb25zdCBbU2VydmVyQ2FjaGVQcm92aWRlciwgY29udHJvbGxlciwgc3RvcmVdID0gY3JlYXRlUGVyc2lzdGVkU3RvcmUoXG4gICAgICBvcHRpb25zLmdldE1hbmFnZXJzKCksXG4gICAgKTtcblxuICAgIGNvbnN0IG5leHRQcm9wcyA9IGF3YWl0IG5leHQoe1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBjb250cm9sbGVyLFxuICAgICAgc3RvcmUsXG4gICAgfSk7XG5cbiAgICByZXR1cm4ge1xuICAgICAgLi4ubmV4dFByb3BzLFxuICAgICAgaW5pdERhdGE6IHtcbiAgICAgICAgLi4ubmV4dFByb3BzLmluaXREYXRhLFxuICAgICAgICByZXN0aG9va3M6ICgpID0+IHN0b3JlLmdldFN0YXRlKCksXG4gICAgICB9LFxuICAgICAgYXBwOiA8U2VydmVyQ2FjaGVQcm92aWRlcj57bmV4dFByb3BzLmFwcH08L1NlcnZlckNhY2hlUHJvdmlkZXI+LFxuICAgICAgLy8gVE9ETzogZmlndXJlIG91dCBob3cgdG8gb25seSBpbmplY3QgaW4gbmV4dCBhbmQgbm90IGhhdmUgdG8gYWxzbyBwdXQgaGVyZVxuICAgICAgY29udHJvbGxlcixcbiAgICAgIHN0b3JlLFxuICAgIH07XG4gIH07XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBQUE7O0FBR0E7O0FBR2UsU0FBU0EsY0FBVCxDQUNiQyxPQUVDLEdBQUc7RUFBRUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxJQUFJQyxvQkFBSixFQUFEO0FBQXJCLENBSFMsRUFRYjtFQUNBLE9BQU9DLElBQUksSUFBSSxNQUFNQyxLQUFOLElBQWU7SUFDNUIsTUFBTSxDQUFDQyxtQkFBRCxFQUFzQkMsVUFBdEIsRUFBa0NDLEtBQWxDLElBQTJDLElBQUFDLDRCQUFBLEVBQy9DUixPQUFPLENBQUNDLFdBQVIsRUFEK0MsQ0FBakQ7SUFJQSxNQUFNUSxTQUFTLEdBQUcsTUFBTU4sSUFBSSxDQUFDLEVBQzNCLEdBQUdDLEtBRHdCO01BRTNCRSxVQUYyQjtNQUczQkM7SUFIMkIsQ0FBRCxDQUE1QjtJQU1BLE9BQU8sRUFDTCxHQUFHRSxTQURFO01BRUxDLFFBQVEsRUFBRSxFQUNSLEdBQUdELFNBQVMsQ0FBQ0MsUUFETDtRQUVSQyxTQUFTLEVBQUUsTUFBTUosS0FBSyxDQUFDSyxRQUFOO01BRlQsQ0FGTDtNQU1MQyxHQUFHLGVBQUUsbUJBQUMsbUJBQUQsY0FBc0JKLFNBQVMsQ0FBQ0ksR0FBaEMsQ0FOQTtNQU9MO01BQ0FQLFVBUks7TUFTTEM7SUFUSyxDQUFQO0VBV0QsQ0F0QkQ7QUF1QkQifQ==
@@ -8,6 +8,7 @@ export default function routerSpout<ResolveWith>(options: {
8
8
  onChange?: (update: Update, callback: () => void | undefined) => void;
9
9
  }): ClientSpout<Record<string, unknown>, {
10
10
  matchedRoutes: Route<ResolveWith, any>[];
11
+ } & {
11
12
  router: RouteController<Route<ResolveWith, any>>;
12
13
  }>;
13
14
  //# sourceMappingURL=router.d.ts.map
@@ -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;AAGvE,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAEtC,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEzD,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,GAAG,WAAW,CACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvB;IACE,aAAa,EAAE,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;IACzC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;CAClD,CACF,CAiCA"}
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,WAAW,EAAE,MAAM,SAAS,CAAC;AAEzD,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,GAAG,WAAW,CACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvB;IACE,aAAa,EAAE,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,EAAE,CAAC;CAC1C,GAAG;IACF,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;CAClD,CACF,CAiCA"}
@@ -41,4 +41,4 @@ function routerSpout(options) {
41
41
  };
42
42
  };
43
43
  }
44
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyb3V0ZXJTcG91dCIsIm9wdGlvbnMiLCJjcmVhdGVSb3V0ZUNvbXBvbmVudCIsInJvdXRlciIsIlJvdXRlciIsImNoaWxkcmVuIiwicmVzb2x2ZVdpdGgiLCJ1c2VSZXNvbHZlV2l0aCIsIm9uQ2hhbmdlIiwibmV4dCIsInByb3BzIiwiaGlzdG9yeSIsImNyZWF0ZUJyb3dzZXJIaXN0b3J5IiwiY3JlYXRlUm91dGVyIiwibWF0Y2hlZFJvdXRlcyIsImdldE1hdGNoZWRSb3V0ZXMiLCJsb2NhdGlvbiIsInBhdGhuYW1lIiwibmV4dFByb3BzIiwiYXBwIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nwb3V0cy9yb3V0ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlLCBSb3V0ZVByb3ZpZGVyLCBSb3V0ZUNvbnRyb2xsZXIgfSBmcm9tICdAYW5hbnNpL3JvdXRlcic7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3JlYXRlQnJvd3Nlckhpc3RvcnkgfSBmcm9tICdoaXN0b3J5JztcbmltcG9ydCB0eXBlIHsgVXBkYXRlIH0gZnJvbSAnaGlzdG9yeSc7XG5cbmltcG9ydCB0eXBlIHsgQ3JlYXRlUm91dGVyLCBDbGllbnRTcG91dCB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByb3V0ZXJTcG91dDxSZXNvbHZlV2l0aD4ob3B0aW9uczoge1xuICByZXNvbHZlV2l0aD86IGFueTtcbiAgdXNlUmVzb2x2ZVdpdGg6ICgpID0+IFJlc29sdmVXaXRoO1xuICBjcmVhdGVSb3V0ZXI6IENyZWF0ZVJvdXRlcjxSZXNvbHZlV2l0aD47XG4gIG9uQ2hhbmdlPzogKHVwZGF0ZTogVXBkYXRlLCBjYWxsYmFjazogKCkgPT4gdm9pZCB8IHVuZGVmaW5lZCkgPT4gdm9pZDtcbn0pOiBDbGllbnRTcG91dDxcbiAgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIHtcbiAgICBtYXRjaGVkUm91dGVzOiBSb3V0ZTxSZXNvbHZlV2l0aCwgYW55PltdO1xuICAgIHJvdXRlcjogUm91dGVDb250cm9sbGVyPFJvdXRlPFJlc29sdmVXaXRoLCBhbnk+PjtcbiAgfVxuPiB7XG4gIGNvbnN0IGNyZWF0ZVJvdXRlQ29tcG9uZW50ID0gKFxuICAgIHJvdXRlcjogUm91dGVDb250cm9sbGVyPFJvdXRlPFJlc29sdmVXaXRoLCBhbnk+PixcbiAgKSA9PlxuICAgIGZ1bmN0aW9uIFJvdXRlcih7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9KSB7XG4gICAgICBjb25zdCByZXNvbHZlV2l0aCA9IG9wdGlvbnMudXNlUmVzb2x2ZVdpdGgoKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFJvdXRlUHJvdmlkZXJcbiAgICAgICAgICByb3V0ZXI9e3JvdXRlcn1cbiAgICAgICAgICByZXNvbHZlV2l0aD17cmVzb2x2ZVdpdGh9XG4gICAgICAgICAgb25DaGFuZ2U9e29wdGlvbnMub25DaGFuZ2V9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvUm91dGVQcm92aWRlcj5cbiAgICAgICk7XG4gICAgfTtcblxuICByZXR1cm4gbmV4dCA9PiBhc3luYyBwcm9wcyA9PiB7XG4gICAgY29uc3QgaGlzdG9yeSA9IGNyZWF0ZUJyb3dzZXJIaXN0b3J5KCk7XG4gICAgY29uc3Qgcm91dGVyID0gb3B0aW9ucy5jcmVhdGVSb3V0ZXIoaGlzdG9yeSk7XG4gICAgY29uc3QgbWF0Y2hlZFJvdXRlcyA9IHJvdXRlci5nZXRNYXRjaGVkUm91dGVzKGhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWUpO1xuXG4gICAgY29uc3QgbmV4dFByb3BzID0gYXdhaXQgbmV4dCh7IC4uLnByb3BzLCBtYXRjaGVkUm91dGVzLCByb3V0ZXIgfSk7XG5cbiAgICBjb25zdCBSb3V0ZXIgPSBjcmVhdGVSb3V0ZUNvbXBvbmVudChyb3V0ZXIpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5uZXh0UHJvcHMsXG4gICAgICBtYXRjaGVkUm91dGVzLFxuICAgICAgcm91dGVyLFxuICAgICAgYXBwOiA8Um91dGVyPntuZXh0UHJvcHMuYXBwfTwvUm91dGVyPixcbiAgICB9O1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFLZSxTQUFTQSxXQUFULENBQWtDQyxPQUFsQyxFQVdiO0VBQ0EsTUFBTUMsb0JBQW9CLEdBQ3hCQyxNQUQyQixJQUczQixTQUFTQyxNQUFULENBQWdCO0lBQUVDO0VBQUYsQ0FBaEIsRUFBNkQ7SUFDM0QsTUFBTUMsV0FBVyxHQUFHTCxPQUFPLENBQUNNLGNBQVIsRUFBcEI7SUFFQSxvQkFDRSxtQkFBQyxxQkFBRDtNQUNFLE1BQU0sRUFBRUosTUFEVjtNQUVFLFdBQVcsRUFBRUcsV0FGZjtNQUdFLFFBQVEsRUFBRUwsT0FBTyxDQUFDTztJQUhwQixXQUtHSCxRQUxILENBREY7RUFTRCxDQWZIOztFQWlCQSxPQUFPSSxJQUFJLElBQUksTUFBTUMsS0FBTixJQUFlO0lBQzVCLE1BQU1DLE9BQU8sR0FBRyxJQUFBQyw2QkFBQSxHQUFoQjtJQUNBLE1BQU1ULE1BQU0sR0FBR0YsT0FBTyxDQUFDWSxZQUFSLENBQXFCRixPQUFyQixDQUFmO0lBQ0EsTUFBTUcsYUFBYSxHQUFHWCxNQUFNLENBQUNZLGdCQUFQLENBQXdCSixPQUFPLENBQUNLLFFBQVIsQ0FBaUJDLFFBQXpDLENBQXRCO0lBRUEsTUFBTUMsU0FBUyxHQUFHLE1BQU1ULElBQUksQ0FBQyxFQUFFLEdBQUdDLEtBQUw7TUFBWUksYUFBWjtNQUEyQlg7SUFBM0IsQ0FBRCxDQUE1QjtJQUVBLE1BQU1DLE1BQU0sR0FBR0Ysb0JBQW9CLENBQUNDLE1BQUQsQ0FBbkM7SUFDQSxPQUFPLEVBQ0wsR0FBR2UsU0FERTtNQUVMSixhQUZLO01BR0xYLE1BSEs7TUFJTGdCLEdBQUcsZUFBRSxtQkFBQyxNQUFELGNBQVNELFNBQVMsQ0FBQ0MsR0FBbkI7SUFKQSxDQUFQO0VBTUQsQ0FkRDtBQWVEIn0=
44
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyb3V0ZXJTcG91dCIsIm9wdGlvbnMiLCJjcmVhdGVSb3V0ZUNvbXBvbmVudCIsInJvdXRlciIsIlJvdXRlciIsImNoaWxkcmVuIiwicmVzb2x2ZVdpdGgiLCJ1c2VSZXNvbHZlV2l0aCIsIm9uQ2hhbmdlIiwibmV4dCIsInByb3BzIiwiaGlzdG9yeSIsImNyZWF0ZUJyb3dzZXJIaXN0b3J5IiwiY3JlYXRlUm91dGVyIiwibWF0Y2hlZFJvdXRlcyIsImdldE1hdGNoZWRSb3V0ZXMiLCJsb2NhdGlvbiIsInBhdGhuYW1lIiwibmV4dFByb3BzIiwiYXBwIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nwb3V0cy9yb3V0ZXIudHN4Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFJvdXRlLCBSb3V0ZVByb3ZpZGVyLCBSb3V0ZUNvbnRyb2xsZXIgfSBmcm9tICdAYW5hbnNpL3JvdXRlcic7XG5pbXBvcnQgUmVhY3QgZnJvbSAncmVhY3QnO1xuaW1wb3J0IHsgY3JlYXRlQnJvd3Nlckhpc3RvcnkgfSBmcm9tICdoaXN0b3J5JztcbmltcG9ydCB0eXBlIHsgVXBkYXRlIH0gZnJvbSAnaGlzdG9yeSc7XG5cbmltcG9ydCB0eXBlIHsgQ3JlYXRlUm91dGVyLCBDbGllbnRTcG91dCB9IGZyb20gJy4vdHlwZXMnO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiByb3V0ZXJTcG91dDxSZXNvbHZlV2l0aD4ob3B0aW9uczoge1xuICByZXNvbHZlV2l0aD86IGFueTtcbiAgdXNlUmVzb2x2ZVdpdGg6ICgpID0+IFJlc29sdmVXaXRoO1xuICBjcmVhdGVSb3V0ZXI6IENyZWF0ZVJvdXRlcjxSZXNvbHZlV2l0aD47XG4gIG9uQ2hhbmdlPzogKHVwZGF0ZTogVXBkYXRlLCBjYWxsYmFjazogKCkgPT4gdm9pZCB8IHVuZGVmaW5lZCkgPT4gdm9pZDtcbn0pOiBDbGllbnRTcG91dDxcbiAgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIHtcbiAgICBtYXRjaGVkUm91dGVzOiBSb3V0ZTxSZXNvbHZlV2l0aCwgYW55PltdO1xuICB9ICYge1xuICAgIHJvdXRlcjogUm91dGVDb250cm9sbGVyPFJvdXRlPFJlc29sdmVXaXRoLCBhbnk+PjtcbiAgfVxuPiB7XG4gIGNvbnN0IGNyZWF0ZVJvdXRlQ29tcG9uZW50ID0gKFxuICAgIHJvdXRlcjogUm91dGVDb250cm9sbGVyPFJvdXRlPFJlc29sdmVXaXRoLCBhbnk+PixcbiAgKSA9PlxuICAgIGZ1bmN0aW9uIFJvdXRlcih7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9KSB7XG4gICAgICBjb25zdCByZXNvbHZlV2l0aCA9IG9wdGlvbnMudXNlUmVzb2x2ZVdpdGgoKTtcblxuICAgICAgcmV0dXJuIChcbiAgICAgICAgPFJvdXRlUHJvdmlkZXJcbiAgICAgICAgICByb3V0ZXI9e3JvdXRlcn1cbiAgICAgICAgICByZXNvbHZlV2l0aD17cmVzb2x2ZVdpdGh9XG4gICAgICAgICAgb25DaGFuZ2U9e29wdGlvbnMub25DaGFuZ2V9XG4gICAgICAgID5cbiAgICAgICAgICB7Y2hpbGRyZW59XG4gICAgICAgIDwvUm91dGVQcm92aWRlcj5cbiAgICAgICk7XG4gICAgfTtcblxuICByZXR1cm4gbmV4dCA9PiBhc3luYyBwcm9wcyA9PiB7XG4gICAgY29uc3QgaGlzdG9yeSA9IGNyZWF0ZUJyb3dzZXJIaXN0b3J5KCk7XG4gICAgY29uc3Qgcm91dGVyID0gb3B0aW9ucy5jcmVhdGVSb3V0ZXIoaGlzdG9yeSk7XG4gICAgY29uc3QgbWF0Y2hlZFJvdXRlcyA9IHJvdXRlci5nZXRNYXRjaGVkUm91dGVzKGhpc3RvcnkubG9jYXRpb24ucGF0aG5hbWUpO1xuXG4gICAgY29uc3QgbmV4dFByb3BzID0gYXdhaXQgbmV4dCh7IC4uLnByb3BzLCBtYXRjaGVkUm91dGVzLCByb3V0ZXIgfSk7XG5cbiAgICBjb25zdCBSb3V0ZXIgPSBjcmVhdGVSb3V0ZUNvbXBvbmVudChyb3V0ZXIpO1xuICAgIHJldHVybiB7XG4gICAgICAuLi5uZXh0UHJvcHMsXG4gICAgICBtYXRjaGVkUm91dGVzLFxuICAgICAgcm91dGVyLFxuICAgICAgYXBwOiA8Um91dGVyPntuZXh0UHJvcHMuYXBwfTwvUm91dGVyPixcbiAgICB9O1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFLZSxTQUFTQSxXQUFULENBQWtDQyxPQUFsQyxFQVliO0VBQ0EsTUFBTUMsb0JBQW9CLEdBQ3hCQyxNQUQyQixJQUczQixTQUFTQyxNQUFULENBQWdCO0lBQUVDO0VBQUYsQ0FBaEIsRUFBNkQ7SUFDM0QsTUFBTUMsV0FBVyxHQUFHTCxPQUFPLENBQUNNLGNBQVIsRUFBcEI7SUFFQSxvQkFDRSxtQkFBQyxxQkFBRDtNQUNFLE1BQU0sRUFBRUosTUFEVjtNQUVFLFdBQVcsRUFBRUcsV0FGZjtNQUdFLFFBQVEsRUFBRUwsT0FBTyxDQUFDTztJQUhwQixXQUtHSCxRQUxILENBREY7RUFTRCxDQWZIOztFQWlCQSxPQUFPSSxJQUFJLElBQUksTUFBTUMsS0FBTixJQUFlO0lBQzVCLE1BQU1DLE9BQU8sR0FBRyxJQUFBQyw2QkFBQSxHQUFoQjtJQUNBLE1BQU1ULE1BQU0sR0FBR0YsT0FBTyxDQUFDWSxZQUFSLENBQXFCRixPQUFyQixDQUFmO0lBQ0EsTUFBTUcsYUFBYSxHQUFHWCxNQUFNLENBQUNZLGdCQUFQLENBQXdCSixPQUFPLENBQUNLLFFBQVIsQ0FBaUJDLFFBQXpDLENBQXRCO0lBRUEsTUFBTUMsU0FBUyxHQUFHLE1BQU1ULElBQUksQ0FBQyxFQUFFLEdBQUdDLEtBQUw7TUFBWUksYUFBWjtNQUEyQlg7SUFBM0IsQ0FBRCxDQUE1QjtJQUVBLE1BQU1DLE1BQU0sR0FBR0Ysb0JBQW9CLENBQUNDLE1BQUQsQ0FBbkM7SUFDQSxPQUFPLEVBQ0wsR0FBR2UsU0FERTtNQUVMSixhQUZLO01BR0xYLE1BSEs7TUFJTGdCLEdBQUcsZUFBRSxtQkFBQyxNQUFELGNBQVNELFNBQVMsQ0FBQ0MsR0FBbkI7SUFKQSxDQUFQO0VBTUQsQ0FkRDtBQWVEIn0=
@@ -6,6 +6,7 @@ export default function routerSpout<ResolveWith>(options: {
6
6
  createRouter: CreateRouter<ResolveWith>;
7
7
  }): ServerSpout<Record<string, unknown>, {
8
8
  matchedRoutes: Route<ResolveWith>[];
9
+ } & {
9
10
  router: RouteController<Route<ResolveWith, any>>;
10
11
  }>;
11
12
  //# sourceMappingURL=router.server.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"router.server.d.ts","sourceRoot":"","sources":["../../src/spouts/router.server.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAiB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAIvE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEzD,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;CACzC,GAAG,WAAW,CACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvB;IACE,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;IACpC,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;CAClD,CACF,CAqCA"}
1
+ {"version":3,"file":"router.server.d.ts","sourceRoot":"","sources":["../../src/spouts/router.server.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAiB,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAIvE,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEzD,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;CACzC,GAAG,WAAW,CACb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvB;IACE,aAAa,EAAE,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC;CACrC,GAAG;IACF,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,WAAW,EAAE,GAAG,CAAC,CAAC,CAAC;CAClD,CACF,CAqCA"}
@@ -43,4 +43,4 @@ function routerSpout(options) {
43
43
  };
44
44
  };
45
45
  }
46
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyb3V0ZXJTcG91dCIsIm9wdGlvbnMiLCJjcmVhdGVSb3V0ZUNvbXBvbmVudCIsInJvdXRlciIsIlJvdXRlciIsImNoaWxkcmVuIiwicmVzb2x2ZVdpdGgiLCJ1c2VSZXNvbHZlV2l0aCIsIm5leHQiLCJwcm9wcyIsInVybCIsInJlcSIsImNyZWF0ZVJvdXRlciIsImNyZWF0ZU1lbW9yeUhpc3RvcnkiLCJpbml0aWFsRW50cmllcyIsIm1hdGNoZWRSb3V0ZXMiLCJnZXRNYXRjaGVkUm91dGVzIiwibmV4dFByb3BzIiwiYXBwIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nwb3V0cy9yb3V0ZXIuc2VydmVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZSwgUm91dGVQcm92aWRlciwgUm91dGVDb250cm9sbGVyIH0gZnJvbSAnQGFuYW5zaS9yb3V0ZXInO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZU1lbW9yeUhpc3RvcnkgfSBmcm9tICdoaXN0b3J5JztcblxuaW1wb3J0IHR5cGUgeyBDcmVhdGVSb3V0ZXIsIFNlcnZlclNwb3V0IH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJvdXRlclNwb3V0PFJlc29sdmVXaXRoPihvcHRpb25zOiB7XG4gIHJlc29sdmVXaXRoPzogYW55O1xuICB1c2VSZXNvbHZlV2l0aDogKCkgPT4gUmVzb2x2ZVdpdGg7XG4gIGNyZWF0ZVJvdXRlcjogQ3JlYXRlUm91dGVyPFJlc29sdmVXaXRoPjtcbn0pOiBTZXJ2ZXJTcG91dDxcbiAgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIHtcbiAgICBtYXRjaGVkUm91dGVzOiBSb3V0ZTxSZXNvbHZlV2l0aD5bXTtcbiAgICByb3V0ZXI6IFJvdXRlQ29udHJvbGxlcjxSb3V0ZTxSZXNvbHZlV2l0aCwgYW55Pj47XG4gIH1cbj4ge1xuICBjb25zdCBjcmVhdGVSb3V0ZUNvbXBvbmVudCA9IChcbiAgICByb3V0ZXI6IFJvdXRlQ29udHJvbGxlcjxSb3V0ZTxSZXNvbHZlV2l0aCwgYW55Pj4sXG4gICkgPT5cbiAgICBmdW5jdGlvbiBSb3V0ZXIoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfSkge1xuICAgICAgY29uc3QgcmVzb2x2ZVdpdGggPSBvcHRpb25zLnVzZVJlc29sdmVXaXRoKCk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxSb3V0ZVByb3ZpZGVyIHJvdXRlcj17cm91dGVyfSByZXNvbHZlV2l0aD17cmVzb2x2ZVdpdGh9PlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9Sb3V0ZVByb3ZpZGVyPlxuICAgICAgKTtcbiAgICB9O1xuXG4gIHJldHVybiBuZXh0ID0+IGFzeW5jIHByb3BzID0+IHtcbiAgICBjb25zdCB1cmwgPSBwcm9wcy5yZXEudXJsIHx8ICcnO1xuICAgIGNvbnN0IHJvdXRlciA9IG9wdGlvbnMuY3JlYXRlUm91dGVyKFxuICAgICAgY3JlYXRlTWVtb3J5SGlzdG9yeSh7IGluaXRpYWxFbnRyaWVzOiBbdXJsXSB9KSxcbiAgICApO1xuICAgIGNvbnN0IG1hdGNoZWRSb3V0ZXM6IFJvdXRlPFJlc29sdmVXaXRoPltdID0gcm91dGVyLmdldE1hdGNoZWRSb3V0ZXModXJsKTtcblxuICAgIGNvbnN0IG5leHRQcm9wcyA9IGF3YWl0IG5leHQoe1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBtYXRjaGVkUm91dGVzLFxuICAgICAgcm91dGVyLFxuICAgIH0pO1xuXG4gICAgY29uc3QgUm91dGVyID0gY3JlYXRlUm91dGVDb21wb25lbnQocm91dGVyKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5uZXh0UHJvcHMsXG4gICAgICBhcHA6IDxSb3V0ZXI+e25leHRQcm9wcy5hcHB9PC9Sb3V0ZXI+LFxuICAgICAgLy8gVE9ETzogZmlndXJlIG91dCBob3cgdG8gb25seSBpbmplY3QgaW4gbmV4dCBhbmQgbm90IGhhdmUgdG8gYWxzbyBwdXQgaGVyZVxuICAgICAgbWF0Y2hlZFJvdXRlcyxcbiAgICAgIHJvdXRlcixcbiAgICB9O1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFJZSxTQUFTQSxXQUFULENBQWtDQyxPQUFsQyxFQVViO0VBQ0EsTUFBTUMsb0JBQW9CLEdBQ3hCQyxNQUQyQixJQUczQixTQUFTQyxNQUFULENBQWdCO0lBQUVDO0VBQUYsQ0FBaEIsRUFBNkQ7SUFDM0QsTUFBTUMsV0FBVyxHQUFHTCxPQUFPLENBQUNNLGNBQVIsRUFBcEI7SUFFQSxvQkFDRSxtQkFBQyxxQkFBRDtNQUFlLE1BQU0sRUFBRUosTUFBdkI7TUFBK0IsV0FBVyxFQUFFRztJQUE1QyxXQUNHRCxRQURILENBREY7RUFLRCxDQVhIOztFQWFBLE9BQU9HLElBQUksSUFBSSxNQUFNQyxLQUFOLElBQWU7SUFDNUIsTUFBTUMsR0FBRyxHQUFHRCxLQUFLLENBQUNFLEdBQU4sQ0FBVUQsR0FBVixJQUFpQixFQUE3QjtJQUNBLE1BQU1QLE1BQU0sR0FBR0YsT0FBTyxDQUFDVyxZQUFSLENBQ2IsSUFBQUMsNEJBQUEsRUFBb0I7TUFBRUMsY0FBYyxFQUFFLENBQUNKLEdBQUQ7SUFBbEIsQ0FBcEIsQ0FEYSxDQUFmO0lBR0EsTUFBTUssYUFBbUMsR0FBR1osTUFBTSxDQUFDYSxnQkFBUCxDQUF3Qk4sR0FBeEIsQ0FBNUM7SUFFQSxNQUFNTyxTQUFTLEdBQUcsTUFBTVQsSUFBSSxDQUFDLEVBQzNCLEdBQUdDLEtBRHdCO01BRTNCTSxhQUYyQjtNQUczQlo7SUFIMkIsQ0FBRCxDQUE1QjtJQU1BLE1BQU1DLE1BQU0sR0FBR0Ysb0JBQW9CLENBQUNDLE1BQUQsQ0FBbkM7SUFFQSxPQUFPLEVBQ0wsR0FBR2MsU0FERTtNQUVMQyxHQUFHLGVBQUUsbUJBQUMsTUFBRCxjQUFTRCxTQUFTLENBQUNDLEdBQW5CLENBRkE7TUFHTDtNQUNBSCxhQUpLO01BS0xaO0lBTEssQ0FBUDtFQU9ELENBdEJEO0FBdUJEIn0=
46
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJyb3V0ZXJTcG91dCIsIm9wdGlvbnMiLCJjcmVhdGVSb3V0ZUNvbXBvbmVudCIsInJvdXRlciIsIlJvdXRlciIsImNoaWxkcmVuIiwicmVzb2x2ZVdpdGgiLCJ1c2VSZXNvbHZlV2l0aCIsIm5leHQiLCJwcm9wcyIsInVybCIsInJlcSIsImNyZWF0ZVJvdXRlciIsImNyZWF0ZU1lbW9yeUhpc3RvcnkiLCJpbml0aWFsRW50cmllcyIsIm1hdGNoZWRSb3V0ZXMiLCJnZXRNYXRjaGVkUm91dGVzIiwibmV4dFByb3BzIiwiYXBwIl0sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nwb3V0cy9yb3V0ZXIuc2VydmVyLnRzeCJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBSb3V0ZSwgUm91dGVQcm92aWRlciwgUm91dGVDb250cm9sbGVyIH0gZnJvbSAnQGFuYW5zaS9yb3V0ZXInO1xuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IGNyZWF0ZU1lbW9yeUhpc3RvcnkgfSBmcm9tICdoaXN0b3J5JztcblxuaW1wb3J0IHR5cGUgeyBDcmVhdGVSb3V0ZXIsIFNlcnZlclNwb3V0IH0gZnJvbSAnLi90eXBlcyc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJvdXRlclNwb3V0PFJlc29sdmVXaXRoPihvcHRpb25zOiB7XG4gIHJlc29sdmVXaXRoPzogYW55O1xuICB1c2VSZXNvbHZlV2l0aDogKCkgPT4gUmVzb2x2ZVdpdGg7XG4gIGNyZWF0ZVJvdXRlcjogQ3JlYXRlUm91dGVyPFJlc29sdmVXaXRoPjtcbn0pOiBTZXJ2ZXJTcG91dDxcbiAgUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIHtcbiAgICBtYXRjaGVkUm91dGVzOiBSb3V0ZTxSZXNvbHZlV2l0aD5bXTtcbiAgfSAmIHtcbiAgICByb3V0ZXI6IFJvdXRlQ29udHJvbGxlcjxSb3V0ZTxSZXNvbHZlV2l0aCwgYW55Pj47XG4gIH1cbj4ge1xuICBjb25zdCBjcmVhdGVSb3V0ZUNvbXBvbmVudCA9IChcbiAgICByb3V0ZXI6IFJvdXRlQ29udHJvbGxlcjxSb3V0ZTxSZXNvbHZlV2l0aCwgYW55Pj4sXG4gICkgPT5cbiAgICBmdW5jdGlvbiBSb3V0ZXIoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdC5SZWFjdE5vZGUgfSkge1xuICAgICAgY29uc3QgcmVzb2x2ZVdpdGggPSBvcHRpb25zLnVzZVJlc29sdmVXaXRoKCk7XG5cbiAgICAgIHJldHVybiAoXG4gICAgICAgIDxSb3V0ZVByb3ZpZGVyIHJvdXRlcj17cm91dGVyfSByZXNvbHZlV2l0aD17cmVzb2x2ZVdpdGh9PlxuICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgPC9Sb3V0ZVByb3ZpZGVyPlxuICAgICAgKTtcbiAgICB9O1xuXG4gIHJldHVybiBuZXh0ID0+IGFzeW5jIHByb3BzID0+IHtcbiAgICBjb25zdCB1cmwgPSBwcm9wcy5yZXEudXJsIHx8ICcnO1xuICAgIGNvbnN0IHJvdXRlciA9IG9wdGlvbnMuY3JlYXRlUm91dGVyKFxuICAgICAgY3JlYXRlTWVtb3J5SGlzdG9yeSh7IGluaXRpYWxFbnRyaWVzOiBbdXJsXSB9KSxcbiAgICApO1xuICAgIGNvbnN0IG1hdGNoZWRSb3V0ZXM6IFJvdXRlPFJlc29sdmVXaXRoPltdID0gcm91dGVyLmdldE1hdGNoZWRSb3V0ZXModXJsKTtcblxuICAgIGNvbnN0IG5leHRQcm9wcyA9IGF3YWl0IG5leHQoe1xuICAgICAgLi4ucHJvcHMsXG4gICAgICBtYXRjaGVkUm91dGVzLFxuICAgICAgcm91dGVyLFxuICAgIH0pO1xuXG4gICAgY29uc3QgUm91dGVyID0gY3JlYXRlUm91dGVDb21wb25lbnQocm91dGVyKTtcblxuICAgIHJldHVybiB7XG4gICAgICAuLi5uZXh0UHJvcHMsXG4gICAgICBhcHA6IDxSb3V0ZXI+e25leHRQcm9wcy5hcHB9PC9Sb3V0ZXI+LFxuICAgICAgLy8gVE9ETzogZmlndXJlIG91dCBob3cgdG8gb25seSBpbmplY3QgaW4gbmV4dCBhbmQgbm90IGhhdmUgdG8gYWxzbyBwdXQgaGVyZVxuICAgICAgbWF0Y2hlZFJvdXRlcyxcbiAgICAgIHJvdXRlcixcbiAgICB9O1xuICB9O1xufVxuIl0sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7QUFBQTs7QUFDQTs7QUFDQTs7QUFJZSxTQUFTQSxXQUFULENBQWtDQyxPQUFsQyxFQVdiO0VBQ0EsTUFBTUMsb0JBQW9CLEdBQ3hCQyxNQUQyQixJQUczQixTQUFTQyxNQUFULENBQWdCO0lBQUVDO0VBQUYsQ0FBaEIsRUFBNkQ7SUFDM0QsTUFBTUMsV0FBVyxHQUFHTCxPQUFPLENBQUNNLGNBQVIsRUFBcEI7SUFFQSxvQkFDRSxtQkFBQyxxQkFBRDtNQUFlLE1BQU0sRUFBRUosTUFBdkI7TUFBK0IsV0FBVyxFQUFFRztJQUE1QyxXQUNHRCxRQURILENBREY7RUFLRCxDQVhIOztFQWFBLE9BQU9HLElBQUksSUFBSSxNQUFNQyxLQUFOLElBQWU7SUFDNUIsTUFBTUMsR0FBRyxHQUFHRCxLQUFLLENBQUNFLEdBQU4sQ0FBVUQsR0FBVixJQUFpQixFQUE3QjtJQUNBLE1BQU1QLE1BQU0sR0FBR0YsT0FBTyxDQUFDVyxZQUFSLENBQ2IsSUFBQUMsNEJBQUEsRUFBb0I7TUFBRUMsY0FBYyxFQUFFLENBQUNKLEdBQUQ7SUFBbEIsQ0FBcEIsQ0FEYSxDQUFmO0lBR0EsTUFBTUssYUFBbUMsR0FBR1osTUFBTSxDQUFDYSxnQkFBUCxDQUF3Qk4sR0FBeEIsQ0FBNUM7SUFFQSxNQUFNTyxTQUFTLEdBQUcsTUFBTVQsSUFBSSxDQUFDLEVBQzNCLEdBQUdDLEtBRHdCO01BRTNCTSxhQUYyQjtNQUczQlo7SUFIMkIsQ0FBRCxDQUE1QjtJQU1BLE1BQU1DLE1BQU0sR0FBR0Ysb0JBQW9CLENBQUNDLE1BQUQsQ0FBbkM7SUFFQSxPQUFPLEVBQ0wsR0FBR2MsU0FERTtNQUVMQyxHQUFHLGVBQUUsbUJBQUMsTUFBRCxjQUFTRCxTQUFTLENBQUNDLEdBQW5CLENBRkE7TUFHTDtNQUNBSCxhQUpLO01BS0xaO0lBTEssQ0FBUDtFQU9ELENBdEJEO0FBdUJEIn0=
@@ -14,6 +14,6 @@ export declare type ResolveProps = {
14
14
  app: JSX.Element;
15
15
  };
16
16
  export declare type CreateRouter<T> = (history: History) => RouteController<Route<T, any>>;
17
- export declare type ServerSpout<NeededProps extends Record<string, unknown> = Record<string, unknown>, ProvidedProps extends Record<string, unknown> = Record<string, unknown>, NeededNext extends Record<string, unknown> = NeededProps> = <N extends NeededNext & ResolveProps, I extends NeededProps & ServerProps>(next: (props: I & ProvidedProps) => Promise<N>) => (props: I) => Promise<N & ProvidedProps>;
18
- export declare type ClientSpout<NeededProps extends Record<string, unknown> = Record<string, unknown>, ProvidedProps extends Record<string, unknown> = Record<string, unknown>, NeededNext extends Record<string, unknown> = NeededProps> = <N extends NeededNext & ResolveProps, I extends NeededProps>(next: (props: I & ProvidedProps) => Promise<N>) => (props: I) => Promise<N & ProvidedProps>;
17
+ export declare type ServerSpout<NeededProps extends Record<string, unknown> = Record<string, unknown>, ProvidedProps extends Record<string, unknown> = Record<string, unknown>, NeededNext extends Record<string, unknown> = Record<string, unknown>> = <N extends NeededNext & ResolveProps, I extends ServerProps>(next: (props: I & ProvidedProps) => Promise<N>) => (props: NeededProps & I) => Promise<N & ProvidedProps>;
18
+ export declare type ClientSpout<NeededProps extends Record<string, unknown> = Record<string, unknown>, ProvidedProps extends Record<string, unknown> = Record<string, unknown>, NeededNext extends Record<string, unknown> = Record<string, unknown>> = <N extends NeededNext & ResolveProps, I>(next: (props: I & ProvidedProps) => Promise<N>) => (props: NeededProps & I) => Promise<N & ProvidedProps>;
19
19
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/spouts/types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGxD,oBAAY,WAAW,GAAG;IACxB,GAAG,EAAE,OAAO,GAAG,eAAe,CAAC;IAC/B,GAAG,EAAE,QAAQ,GAAG,cAAc,CAAC;IAC/B,cAAc,EAAE,gBAAgB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAGF,oBAAY,YAAY,GAAG;IACzB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;CAClB,CAAC;AAEF,oBAAY,YAAY,CAAC,CAAC,IAAI,CAC5B,OAAO,EAAE,OAAO,KACb,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAGpC,oBAAY,WAAW,CACrB,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrE,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvE,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,IACtD,CAAC,CAAC,SAAS,UAAU,GAAG,YAAY,EAAE,CAAC,SAAS,WAAW,GAAG,WAAW,EAC3E,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,KAC3C,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;AAG9C,oBAAY,WAAW,CACrB,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrE,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvE,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,WAAW,IACtD,CAAC,CAAC,SAAS,UAAU,GAAG,YAAY,EAAE,CAAC,SAAS,WAAW,EAC7D,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,KAC3C,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/spouts/types.ts"],"names":[],"mappings":";AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAC5C,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAChD,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAGxD,oBAAY,WAAW,GAAG;IACxB,GAAG,EAAE,OAAO,GAAG,eAAe,CAAC;IAC/B,GAAG,EAAE,QAAQ,GAAG,cAAc,CAAC;IAC/B,cAAc,EAAE,gBAAgB,CAAC;IACjC,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAGF,oBAAY,YAAY,GAAG;IACzB,GAAG,EAAE,GAAG,CAAC,OAAO,CAAC;CAClB,CAAC;AAEF,oBAAY,YAAY,CAAC,CAAC,IAAI,CAC5B,OAAO,EAAE,OAAO,KACb,eAAe,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,CAAC;AAGpC,oBAAY,WAAW,CACrB,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrE,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvE,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAClE,CAAC,CAAC,SAAS,UAAU,GAAG,YAAY,EAAE,CAAC,SAAS,WAAW,EAC7D,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,KAC3C,CAAC,KAAK,EAAE,WAAW,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC;AAG5D,oBAAY,WAAW,CACrB,WAAW,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACrE,aAAa,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EACvE,UAAU,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,IAClE,CAAC,CAAC,SAAS,UAAU,GAAG,YAAY,EAAE,CAAC,EACzC,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC,GAAG,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,KAC3C,CAAC,KAAK,EAAE,WAAW,GAAG,CAAC,KAAK,OAAO,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC"}
@@ -1,4 +1,4 @@
1
1
  "use strict";
2
2
 
3
3
  exports.__esModule = true;
4
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nwb3V0cy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmNvbWluZ01lc3NhZ2UsIFNlcnZlclJlc3BvbnNlIH0gZnJvbSAnaHR0cCc7XG5pbXBvcnQgeyBSZXF1ZXN0LCBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHR5cGUgeyBTdGF0c0NvbXBpbGF0aW9uIH0gZnJvbSAnd2VicGFjayc7XG5pbXBvcnQgeyBIaXN0b3J5IH0gZnJvbSAnaGlzdG9yeSc7XG5pbXBvcnQgeyBSb3V0ZSwgUm91dGVDb250cm9sbGVyIH0gZnJvbSAnQGFuYW5zaS9yb3V0ZXInO1xuXG4vKiBWYXJpYWJsZXMgZnJvbSB0aGUgcmVuZGVyaW5nIGNhbGwgKi9cbmV4cG9ydCB0eXBlIFNlcnZlclByb3BzID0ge1xuICByZXE6IFJlcXVlc3QgfCBJbmNvbWluZ01lc3NhZ2U7XG4gIHJlczogUmVzcG9uc2UgfCBTZXJ2ZXJSZXNwb25zZTtcbiAgY2xpZW50TWFuaWZlc3Q6IFN0YXRzQ29tcGlsYXRpb247XG4gIG5vbmNlOiBzdHJpbmc7XG59O1xuXG4vKiBCYXNlbGluZSBleHBlY3RhdGlvbnMgb2YgcmV0dXJuIHZhbHVlICovXG5leHBvcnQgdHlwZSBSZXNvbHZlUHJvcHMgPSB7XG4gIGFwcDogSlNYLkVsZW1lbnQ7XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVSb3V0ZXI8VD4gPSAoXG4gIGhpc3Rvcnk6IEhpc3RvcnksXG4pID0+IFJvdXRlQ29udHJvbGxlcjxSb3V0ZTxULCBhbnk+PjtcblxuLyogU3BvdXRzIGFyZSBtaWRkbGV3YXJlIGZvciBBbmFuc2kgKi9cbmV4cG9ydCB0eXBlIFNlcnZlclNwb3V0PFxuICBOZWVkZWRQcm9wcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIFByb3ZpZGVkUHJvcHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBOZWVkZWROZXh0IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBOZWVkZWRQcm9wcyxcbj4gPSA8TiBleHRlbmRzIE5lZWRlZE5leHQgJiBSZXNvbHZlUHJvcHMsIEkgZXh0ZW5kcyBOZWVkZWRQcm9wcyAmIFNlcnZlclByb3BzPihcbiAgbmV4dDogKHByb3BzOiBJICYgUHJvdmlkZWRQcm9wcykgPT4gUHJvbWlzZTxOPixcbikgPT4gKHByb3BzOiBJKSA9PiBQcm9taXNlPE4gJiBQcm92aWRlZFByb3BzPjtcblxuLyogU3BvdXRzIGFyZSBtaWRkbGV3YXJlIGZvciBBbmFuc2kgKi9cbmV4cG9ydCB0eXBlIENsaWVudFNwb3V0PFxuICBOZWVkZWRQcm9wcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIFByb3ZpZGVkUHJvcHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBOZWVkZWROZXh0IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBOZWVkZWRQcm9wcyxcbj4gPSA8TiBleHRlbmRzIE5lZWRlZE5leHQgJiBSZXNvbHZlUHJvcHMsIEkgZXh0ZW5kcyBOZWVkZWRQcm9wcz4oXG4gIG5leHQ6IChwcm9wczogSSAmIFByb3ZpZGVkUHJvcHMpID0+IFByb21pc2U8Tj4sXG4pID0+IChwcm9wczogSSkgPT4gUHJvbWlzZTxOICYgUHJvdmlkZWRQcm9wcz47XG4iXSwibWFwcGluZ3MiOiIifQ==
4
+ //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6W10sInNvdXJjZXMiOlsiLi4vLi4vc3JjL3Nwb3V0cy90eXBlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmNvbWluZ01lc3NhZ2UsIFNlcnZlclJlc3BvbnNlIH0gZnJvbSAnaHR0cCc7XG5pbXBvcnQgeyBSZXF1ZXN0LCBSZXNwb25zZSB9IGZyb20gJ2V4cHJlc3MnO1xuaW1wb3J0IHR5cGUgeyBTdGF0c0NvbXBpbGF0aW9uIH0gZnJvbSAnd2VicGFjayc7XG5pbXBvcnQgeyBIaXN0b3J5IH0gZnJvbSAnaGlzdG9yeSc7XG5pbXBvcnQgeyBSb3V0ZSwgUm91dGVDb250cm9sbGVyIH0gZnJvbSAnQGFuYW5zaS9yb3V0ZXInO1xuXG4vKiBWYXJpYWJsZXMgZnJvbSB0aGUgcmVuZGVyaW5nIGNhbGwgKi9cbmV4cG9ydCB0eXBlIFNlcnZlclByb3BzID0ge1xuICByZXE6IFJlcXVlc3QgfCBJbmNvbWluZ01lc3NhZ2U7XG4gIHJlczogUmVzcG9uc2UgfCBTZXJ2ZXJSZXNwb25zZTtcbiAgY2xpZW50TWFuaWZlc3Q6IFN0YXRzQ29tcGlsYXRpb247XG4gIG5vbmNlOiBzdHJpbmc7XG59O1xuXG4vKiBCYXNlbGluZSBleHBlY3RhdGlvbnMgb2YgcmV0dXJuIHZhbHVlICovXG5leHBvcnQgdHlwZSBSZXNvbHZlUHJvcHMgPSB7XG4gIGFwcDogSlNYLkVsZW1lbnQ7XG59O1xuXG5leHBvcnQgdHlwZSBDcmVhdGVSb3V0ZXI8VD4gPSAoXG4gIGhpc3Rvcnk6IEhpc3RvcnksXG4pID0+IFJvdXRlQ29udHJvbGxlcjxSb3V0ZTxULCBhbnk+PjtcblxuLyogU3BvdXRzIGFyZSBtaWRkbGV3YXJlIGZvciBBbmFuc2kgKi9cbmV4cG9ydCB0eXBlIFNlcnZlclNwb3V0PFxuICBOZWVkZWRQcm9wcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIFByb3ZpZGVkUHJvcHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBOZWVkZWROZXh0IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4gPSA8TiBleHRlbmRzIE5lZWRlZE5leHQgJiBSZXNvbHZlUHJvcHMsIEkgZXh0ZW5kcyBTZXJ2ZXJQcm9wcz4oXG4gIG5leHQ6IChwcm9wczogSSAmIFByb3ZpZGVkUHJvcHMpID0+IFByb21pc2U8Tj4sXG4pID0+IChwcm9wczogTmVlZGVkUHJvcHMgJiBJKSA9PiBQcm9taXNlPE4gJiBQcm92aWRlZFByb3BzPjtcblxuLyogU3BvdXRzIGFyZSBtaWRkbGV3YXJlIGZvciBBbmFuc2kgKi9cbmV4cG9ydCB0eXBlIENsaWVudFNwb3V0PFxuICBOZWVkZWRQcm9wcyBleHRlbmRzIFJlY29yZDxzdHJpbmcsIHVua25vd24+ID0gUmVjb3JkPHN0cmluZywgdW5rbm93bj4sXG4gIFByb3ZpZGVkUHJvcHMgZXh0ZW5kcyBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiA9IFJlY29yZDxzdHJpbmcsIHVua25vd24+LFxuICBOZWVkZWROZXh0IGV4dGVuZHMgUmVjb3JkPHN0cmluZywgdW5rbm93bj4gPSBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPixcbj4gPSA8TiBleHRlbmRzIE5lZWRlZE5leHQgJiBSZXNvbHZlUHJvcHMsIEk+KFxuICBuZXh0OiAocHJvcHM6IEkgJiBQcm92aWRlZFByb3BzKSA9PiBQcm9taXNlPE4+LFxuKSA9PiAocHJvcHM6IE5lZWRlZFByb3BzICYgSSkgPT4gUHJvbWlzZTxOICYgUHJvdmlkZWRQcm9wcz47XG4iXSwibWFwcGluZ3MiOiIifQ==
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anansi/core",
3
- "version": "0.14.0",
3
+ "version": "0.14.4",
4
4
  "description": "React 18 Framework",
5
5
  "homepage": "https://github.com/ntucker/anansi/tree/master/packages/core#readme",
6
6
  "repository": {
@@ -65,22 +65,22 @@
65
65
  "browser"
66
66
  ],
67
67
  "devDependencies": {
68
- "@anansi/babel-preset": "^3.2.6",
68
+ "@anansi/babel-preset": "^3.2.8",
69
69
  "@anansi/browserslist-config": "1.3.3",
70
- "@anansi/webpack-config": "^11.6.6",
71
- "@babel/cli": "7.17.10",
72
- "@babel/core": "7.18.5",
70
+ "@anansi/webpack-config": "^11.6.8",
71
+ "@babel/cli": "7.18.6",
72
+ "@babel/core": "7.18.6",
73
73
  "@types/compression": "^1.7.2",
74
74
  "@types/source-map-support": "^0.5.4",
75
75
  "@types/tmp": "^0.2.3",
76
76
  "@types/webpack-hot-middleware": "^2.25.6",
77
- "jest": "28.1.1",
77
+ "jest": "28.1.2",
78
78
  "rimraf": "^3.0.0",
79
79
  "webpack": "^5.72.1",
80
80
  "webpack-cli": "4.10.0"
81
81
  },
82
82
  "dependencies": {
83
- "@anansi/router": "^0.6.4",
83
+ "@anansi/router": "^0.6.6",
84
84
  "@babel/runtime": "^7.10.5",
85
85
  "@rest-hooks/ssr": "^0.2.0",
86
86
  "chalk": "^4.0.0",
@@ -104,6 +104,7 @@
104
104
  "@types/react-dom": "^17.0.40 || ^18.0.0-0",
105
105
  "react": "^18.0.0-0",
106
106
  "react-dom": "^18.0.0-0",
107
+ "rest-hooks": "^6.0.0",
107
108
  "webpack": "^5.60.0"
108
109
  },
109
110
  "peerDependenciesMeta": {
@@ -115,6 +116,9 @@
115
116
  },
116
117
  "@types/react-dom": {
117
118
  "optional": true
119
+ },
120
+ "rest-hooks": {
121
+ "optional": true
118
122
  }
119
123
  },
120
124
  "engines": {
@@ -5,5 +5,5 @@ export { default as routerSpout } from './spouts/router.server';
5
5
  export { default as prefetchSpout } from './spouts/prefetch.server';
6
6
  export { default as JSONSpout } from './spouts/json.server';
7
7
  export { default as appSpout } from './spouts/app.server';
8
- export { ServerProps } from './spouts/types';
9
- export { ServerSpout as Spout } from './spouts/types';
8
+ export type { ServerProps } from './spouts/types';
9
+ export type { ServerSpout as Spout } from './spouts/types';
package/src/index.ts CHANGED
@@ -4,5 +4,5 @@ export { default as restHooksSpout } from './spouts/restHooks';
4
4
  export { default as routerSpout } from './spouts/router';
5
5
  export { default as JSONSpout } from './spouts/json';
6
6
  export { default as appSpout } from './spouts/app';
7
- export { ServerProps } from './spouts/types';
8
- export { ClientSpout as Spout } from './spouts/types';
7
+ export type { ServerProps } from './spouts/types';
8
+ export type { ClientSpout as Spout } from './spouts/types';
@@ -10,7 +10,7 @@ export default function restHooksSpout(
10
10
  } = { getManagers: () => [new NetworkManager()] },
11
11
  ): ServerSpout<
12
12
  Record<string, unknown>,
13
- { controller: Controller; store: Store<State<unknown>> },
13
+ { controller: Controller } & { store: Store<State<unknown>> },
14
14
  { initData?: Record<string, () => unknown> }
15
15
  > {
16
16
  return next => async props => {
@@ -12,6 +12,7 @@ export default function routerSpout<ResolveWith>(options: {
12
12
  Record<string, unknown>,
13
13
  {
14
14
  matchedRoutes: Route<ResolveWith>[];
15
+ } & {
15
16
  router: RouteController<Route<ResolveWith, any>>;
16
17
  }
17
18
  > {
@@ -14,6 +14,7 @@ export default function routerSpout<ResolveWith>(options: {
14
14
  Record<string, unknown>,
15
15
  {
16
16
  matchedRoutes: Route<ResolveWith, any>[];
17
+ } & {
17
18
  router: RouteController<Route<ResolveWith, any>>;
18
19
  }
19
20
  > {
@@ -25,16 +25,16 @@ export type CreateRouter<T> = (
25
25
  export type ServerSpout<
26
26
  NeededProps extends Record<string, unknown> = Record<string, unknown>,
27
27
  ProvidedProps extends Record<string, unknown> = Record<string, unknown>,
28
- NeededNext extends Record<string, unknown> = NeededProps,
29
- > = <N extends NeededNext & ResolveProps, I extends NeededProps & ServerProps>(
28
+ NeededNext extends Record<string, unknown> = Record<string, unknown>,
29
+ > = <N extends NeededNext & ResolveProps, I extends ServerProps>(
30
30
  next: (props: I & ProvidedProps) => Promise<N>,
31
- ) => (props: I) => Promise<N & ProvidedProps>;
31
+ ) => (props: NeededProps & I) => Promise<N & ProvidedProps>;
32
32
 
33
33
  /* Spouts are middleware for Anansi */
34
34
  export type ClientSpout<
35
35
  NeededProps extends Record<string, unknown> = Record<string, unknown>,
36
36
  ProvidedProps extends Record<string, unknown> = Record<string, unknown>,
37
- NeededNext extends Record<string, unknown> = NeededProps,
38
- > = <N extends NeededNext & ResolveProps, I extends NeededProps>(
37
+ NeededNext extends Record<string, unknown> = Record<string, unknown>,
38
+ > = <N extends NeededNext & ResolveProps, I>(
39
39
  next: (props: I & ProvidedProps) => Promise<N>,
40
- ) => (props: I) => Promise<N & ProvidedProps>;
40
+ ) => (props: NeededProps & I) => Promise<N & ProvidedProps>;