@anansi/core 0.11.2 → 0.14.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/CHANGELOG.md +41 -0
  2. package/README.md +18 -7
  3. package/dist/client.js +63 -47
  4. package/dist/client.js.map +1 -1
  5. package/dist/server.js +201 -190
  6. package/dist/server.js.map +1 -1
  7. package/lib/floodSpouts.d.ts +1 -1
  8. package/lib/floodSpouts.d.ts.map +1 -1
  9. package/lib/floodSpouts.js +2 -2
  10. package/lib/index.d.ts +3 -0
  11. package/lib/index.d.ts.map +1 -1
  12. package/lib/index.js +11 -2
  13. package/lib/index.server.d.ts +3 -0
  14. package/lib/index.server.d.ts.map +1 -1
  15. package/lib/index.server.js +11 -2
  16. package/lib/laySpouts.d.ts +2 -1
  17. package/lib/laySpouts.d.ts.map +1 -1
  18. package/lib/laySpouts.js +45 -54
  19. package/lib/scripts/startDevserver.d.ts.map +1 -1
  20. package/lib/scripts/startDevserver.js +8 -3
  21. package/lib/spouts/app.d.ts +5 -0
  22. package/lib/spouts/app.d.ts.map +1 -0
  23. package/lib/spouts/app.js +12 -0
  24. package/lib/spouts/app.server.d.ts +6 -0
  25. package/lib/spouts/app.server.d.ts.map +1 -0
  26. package/lib/spouts/app.server.js +12 -0
  27. package/lib/spouts/document.d.ts +2 -8
  28. package/lib/spouts/document.d.ts.map +1 -1
  29. package/lib/spouts/document.js +4 -6
  30. package/lib/spouts/document.server.d.ts +4 -6
  31. package/lib/spouts/document.server.d.ts.map +1 -1
  32. package/lib/spouts/document.server.js +40 -42
  33. package/lib/spouts/json.d.ts +4 -2
  34. package/lib/spouts/json.d.ts.map +1 -1
  35. package/lib/spouts/json.js +7 -6
  36. package/lib/spouts/json.server.d.ts +4 -6
  37. package/lib/spouts/json.server.d.ts.map +1 -1
  38. package/lib/spouts/json.server.js +32 -34
  39. package/lib/spouts/prefetch.server.d.ts +1 -1
  40. package/lib/spouts/prefetch.server.d.ts.map +1 -1
  41. package/lib/spouts/prefetch.server.js +1 -1
  42. package/lib/spouts/restHooks.d.ts +3 -3
  43. package/lib/spouts/restHooks.d.ts.map +1 -1
  44. package/lib/spouts/restHooks.js +9 -11
  45. package/lib/spouts/restHooks.server.d.ts +8 -45
  46. package/lib/spouts/restHooks.server.d.ts.map +1 -1
  47. package/lib/spouts/restHooks.server.js +15 -12
  48. package/lib/spouts/router.d.ts +3 -4
  49. package/lib/spouts/router.d.ts.map +1 -1
  50. package/lib/spouts/router.js +14 -13
  51. package/lib/spouts/router.server.d.ts +3 -4
  52. package/lib/spouts/router.server.d.ts.map +1 -1
  53. package/lib/spouts/router.server.js +17 -15
  54. package/lib/spouts/types.d.ts +2 -0
  55. package/lib/spouts/types.d.ts.map +1 -1
  56. package/lib/spouts/types.js +1 -1
  57. package/package.json +5 -5
  58. package/src/floodSpouts.tsx +2 -2
  59. package/src/index.server.ts +3 -0
  60. package/src/index.ts +3 -0
  61. package/src/laySpouts.tsx +23 -29
  62. package/src/scripts/startDevserver.ts +6 -2
  63. package/src/spouts/app.server.tsx +8 -0
  64. package/src/spouts/app.tsx +6 -0
  65. package/src/spouts/document.server.tsx +64 -68
  66. package/src/spouts/document.tsx +5 -14
  67. package/src/spouts/json.server.tsx +41 -45
  68. package/src/spouts/json.tsx +8 -16
  69. package/src/spouts/prefetch.server.tsx +8 -4
  70. package/src/spouts/restHooks.server.tsx +27 -22
  71. package/src/spouts/restHooks.tsx +12 -18
  72. package/src/spouts/router.server.tsx +27 -21
  73. package/src/spouts/router.tsx +19 -19
  74. package/src/spouts/types.ts +18 -0
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.0](https://github.com/ntucker/anansi/compare/@anansi/core@0.13.0...@anansi/core@0.14.0) (2022-06-24)
7
+
8
+
9
+ ### 🚀 Features
10
+
11
+ * Add Spout type for easy spout construction ([8f93eb3](https://github.com/ntucker/anansi/commit/8f93eb363f1bfe30d1ac30395df1a3d9fbd9cab3))
12
+
13
+
14
+
15
+ ## [0.13.0](https://github.com/ntucker/anansi/compare/@anansi/core@0.12.0...@anansi/core@0.13.0) (2022-06-23)
16
+
17
+
18
+ ### ⚠ 💥 BREAKING CHANGES
19
+
20
+ * Must use appSpout; Spouts need two generics
21
+
22
+ ### 💅 Enhancement
23
+
24
+ * Spouts produce props in both directions ([#1559](https://github.com/ntucker/anansi/issues/1559)) ([898cdde](https://github.com/ntucker/anansi/commit/898cdde500a204a7a4dc155ac7ee51930172380e))
25
+
26
+
27
+
28
+ ## [0.12.0](https://github.com/ntucker/anansi/compare/@anansi/core@0.11.2...@anansi/core@0.12.0) (2022-06-15)
29
+
30
+
31
+ ### 🚀 Features
32
+
33
+ * Add onError option to laySpouts ([a0ef72b](https://github.com/ntucker/anansi/commit/a0ef72bcaab1440a3d997d21636f81ca767a5a1c))
34
+
35
+
36
+ ### 💅 Enhancement
37
+
38
+ * Don't crash devserver on compiler errors ([3c764e4](https://github.com/ntucker/anansi/commit/3c764e4dd67a57409c64ff7dd144386623a1d93f))
39
+
40
+
41
+ ### 📦 Package
42
+
43
+ * Update babel monorepo to v7.18.5 ([#1545](https://github.com/ntucker/anansi/issues/1545)) ([aaaa8bc](https://github.com/ntucker/anansi/commit/aaaa8bcaa4d9188e9671ee31dc09b7aa9e3ce988))
44
+
45
+
46
+
6
47
  ### [0.11.2](https://github.com/ntucker/anansi/compare/@anansi/core@0.11.1...@anansi/core@0.11.2) (2022-06-13)
7
48
 
8
49
 
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # @anansi/core
2
+
2
3
  <!--[![CircleCI](https://circleci.com/gh/notwillk/pojo-router.svg?style=shield)](https://circleci.com/gh/notwillk/pojo-router)-->
4
+
3
5
  [![npm downloads](https://img.shields.io/npm/dm/@anansi/core.svg?style=flat-square)](https://www.npmjs.com/package/@anansi/core)
4
6
  [![bundle size](https://img.shields.io/bundlephobia/minzip/@anansi/core?style=flat-square)](https://bundlephobia.com/result?p=@anansi/core)
5
7
  [![npm version](https://img.shields.io/npm/v/@anansi/core.svg?style=flat-square)](https://www.npmjs.com/package/@anansi/core)
@@ -28,24 +30,27 @@ import {
28
30
  restHooksSpout,
29
31
  prefetchSpout,
30
32
  routerSpout,
33
+ JSONSpout,
34
+ appSpout,
31
35
  } from '@anansi/core/server';
32
36
 
33
37
  import app from 'app';
34
38
 
35
39
  import { createRouter } from './routing';
36
40
 
37
- const appSpout = () => Promise.resolve({ app });
38
-
39
41
  const spouts = prefetchSpout('controller')(
40
42
  documentSpout({ title: 'anansi' })(
41
- restHooksSpout()(
42
- routerSpout({ useResolveWith: useController, createRouter })(appSpout),
43
+ JSONSpout()(
44
+ restHooksSpout()(
45
+ routerSpout({ useResolveWith: useController, createRouter })(
46
+ appSpout(app),
47
+ ),
48
+ ),
43
49
  ),
44
50
  ),
45
51
  );
46
52
 
47
53
  export default laySpouts(spouts);
48
-
49
54
  ```
50
55
 
51
56
  </details>
@@ -59,6 +64,8 @@ import {
59
64
  documentSpout,
60
65
  restHooksSpout,
61
66
  routerSpout,
67
+ JSONSpout,
68
+ appSpout,
62
69
  } from '@anansi/core';
63
70
 
64
71
  import app from 'app';
@@ -68,8 +75,12 @@ import { createRouter } from './routing';
68
75
  const appSpout = () => Promise.resolve({ app });
69
76
 
70
77
  const spouts = documentSpout({ title: 'anansi' })(
71
- restHooksSpout()(
72
- routerSpout({ useResolveWith: useController, createRouter })(appSpout),
78
+ JSONSpout()(
79
+ restHooksSpout()(
80
+ routerSpout({ useResolveWith: useController, createRouter })(
81
+ appSpout(app),
82
+ ),
83
+ ),
73
84
  ),
74
85
  );
75
86
 
package/dist/client.js CHANGED
@@ -52,12 +52,19 @@ __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
+ "appSpout": () => (/* reexport */ app),
55
58
  "documentSpout": () => (/* reexport */ documentSpout),
56
59
  "floodSpouts": () => (/* reexport */ floodSpouts),
57
60
  "restHooksSpout": () => (/* reexport */ restHooksSpout),
58
61
  "routerSpout": () => (/* reexport */ routerSpout)
59
62
  });
60
63
 
64
+ // NAMESPACE OBJECT: ./src/spouts/types.ts
65
+ var types_namespaceObject = {};
66
+ __webpack_require__.r(types_namespaceObject);
67
+
61
68
  ;// CONCATENATED MODULE: external "react-dom/client"
62
69
  const client_namespaceObject = require("react-dom/client");
63
70
  ;// CONCATENATED MODULE: ./src/floodSpouts.tsx
@@ -69,16 +76,14 @@ async function floodSpouts(spouts, {
69
76
 
70
77
  const {
71
78
  app
72
- } = await spouts();
79
+ } = await spouts({});
73
80
  (0,client_namespaceObject.hydrateRoot)((_document$getElementB = document.getElementById(rootId)) != null ? _document$getElementB : document, app);
74
81
  }
75
82
  ;// CONCATENATED MODULE: ./src/spouts/document.tsx
76
83
  function documentSpout(options) {
77
- return function (next) {
78
- return async initData => {
79
- const nextProps = await next(initData);
80
- return nextProps;
81
- };
84
+ return next => async props => {
85
+ const nextProps = await next(props);
86
+ return nextProps;
82
87
  };
83
88
  }
84
89
  ;// CONCATENATED MODULE: external "react"
@@ -93,22 +98,20 @@ var _jsxFileName = "/home/ntucker/src/anansi/packages/core/src/spouts/restHooks.
93
98
  function restHooksSpout(options = {
94
99
  getManagers: () => [new core_namespaceObject.NetworkManager()]
95
100
  }) {
96
- return function (next) {
97
- return async initData => {
98
- const data = initData.resthooks;
99
- const nextProps = await next(initData);
100
- return { ...nextProps,
101
- app: /*#__PURE__*/external_react_default().createElement(core_namespaceObject.CacheProvider, {
102
- initialState: data,
103
- managers: options.getManagers(),
104
- __self: this,
105
- __source: {
106
- fileName: _jsxFileName,
107
- lineNumber: 28,
108
- columnNumber: 11
109
- }
110
- }, nextProps.app)
111
- };
101
+ return next => async props => {
102
+ const data = props.initData.resthooks;
103
+ const nextProps = await next(props);
104
+ return { ...nextProps,
105
+ app: /*#__PURE__*/external_react_default().createElement(core_namespaceObject.CacheProvider, {
106
+ initialState: data,
107
+ managers: options.getManagers(),
108
+ __self: this,
109
+ __source: {
110
+ fileName: _jsxFileName,
111
+ lineNumber: 23,
112
+ columnNumber: 9
113
+ }
114
+ }, nextProps.app)
112
115
  };
113
116
  };
114
117
  }
@@ -133,31 +136,32 @@ function routerSpout(options) {
133
136
  __self: this,
134
137
  __source: {
135
138
  fileName: router_jsxFileName,
136
- lineNumber: 23,
139
+ lineNumber: 27,
137
140
  columnNumber: 9
138
141
  }
139
142
  }, children);
140
143
  };
141
144
 
142
- return function (next) {
143
- return async initData => {
144
- const history = (0,external_history_namespaceObject.createBrowserHistory)();
145
- const router = options.createRouter(history);
146
- const matchedRoutes = router.getMatchedRoutes(history.location.pathname);
147
- const nextProps = await next(initData);
148
- const Router = createRouteComponent(router);
149
- return { ...nextProps,
150
- matchedRoutes,
151
- router,
152
- app: /*#__PURE__*/external_react_default().createElement(Router, {
153
- __self: this,
154
- __source: {
155
- fileName: router_jsxFileName,
156
- lineNumber: 48,
157
- columnNumber: 14
158
- }
159
- }, nextProps.app)
160
- };
145
+ return next => async props => {
146
+ const history = (0,external_history_namespaceObject.createBrowserHistory)();
147
+ const router = options.createRouter(history);
148
+ const matchedRoutes = router.getMatchedRoutes(history.location.pathname);
149
+ const nextProps = await next({ ...props,
150
+ matchedRoutes,
151
+ router
152
+ });
153
+ const Router = createRouteComponent(router);
154
+ return { ...nextProps,
155
+ matchedRoutes,
156
+ router,
157
+ app: /*#__PURE__*/external_react_default().createElement(Router, {
158
+ __self: this,
159
+ __source: {
160
+ fileName: router_jsxFileName,
161
+ lineNumber: 49,
162
+ columnNumber: 12
163
+ }
164
+ }, nextProps.app)
161
165
  };
162
166
  };
163
167
  }
@@ -165,11 +169,12 @@ function routerSpout(options) {
165
169
  function JSONSpout({
166
170
  id = 'anansi-json'
167
171
  } = {}) {
168
- return function (next) {
169
- return async () => {
170
- const initData = getDatafromDOM(id);
171
- const nextProps = await next(initData);
172
- return nextProps;
172
+ return next => async props => {
173
+ const initData = getDatafromDOM(id);
174
+ return { ...(await next({ ...props,
175
+ initData
176
+ })),
177
+ initData
173
178
  };
174
179
  };
175
180
  }
@@ -178,12 +183,23 @@ function getDatafromDOM(id) {
178
183
  const element = document.querySelector(`#${id}`);
179
184
  return element !== null && element !== void 0 && element.text ? JSON.parse(element === null || element === void 0 ? void 0 : element.text) : undefined;
180
185
  }
186
+ ;// CONCATENATED MODULE: ./src/spouts/app.tsx
187
+ const appSpout = app => props => Promise.resolve({ ...props,
188
+ app
189
+ });
190
+
191
+ /* harmony default export */ const app = (appSpout);
192
+ ;// CONCATENATED MODULE: ./src/spouts/types.ts
193
+
181
194
  ;// CONCATENATED MODULE: ./src/index.ts
182
195
 
183
196
 
184
197
 
185
198
 
186
199
 
200
+
201
+
202
+
187
203
  module.exports = __webpack_exports__;
188
204
  /******/ })()
189
205
  ;
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","mappings":";;AAAA;AACA;AACA;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACPA;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;ACNA;;ACAA;AAEA;AAIA;AAAA;AACA;;AACA;AAAA;AAAA;AAEA;AACA;;ACDA;AAIA;AAGA;AACA;AAEA;AACA;AACA;AACA;;ACvBA;;;ACAA;;;;ACAA;AAWA;AAGA;AAAA;AAEA;AAGA;AACA;AAEA;AAEA;AAEA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAHA;AAQA;AACA;AACA;;AClCA;;ACAA;;;ACAA;AACA;AACA;AAOA;AAMA;AAGA;AAAA;AACA;AAEA;AAEA;AACA;AACA;AAHA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAQA;;AAEA;AAGA;AACA;AACA;AACA;AAEA;AAEA;AACA;AAEA;AACA;AACA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAJA;AAMA;AACA;AACA;;AC5CA;AACA;AADA;AAGA;AAGA;AACA;AACA;AAEA;AACA;AACA;AACA;;AACA;AACA;AACA;AACA;;ACxBA;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/index.ts"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"react-dom/client\");","import { hydrateRoot } from 'react-dom/client';\n\nexport default async function floodSpouts(\n spouts: () => Promise<{\n app: JSX.Element;\n }>,\n { rootId = 'anansi-root' }: { rootId?: string } = {},\n) {\n const { app } = await spouts();\n\n hydrateRoot(document.getElementById(rootId) ?? document, app);\n}\n","import React from 'react';\nimport type { Route } from '@anansi/router';\n\nimport type { ResolveProps } from './types';\n\ntype NeededProps = {\n matchedRoutes: Route<any>[];\n title?: string;\n} & ResolveProps;\n\nexport default function documentSpout(options: {\n head?: React.ReactNode;\n title: string;\n}) {\n return function <T extends NeededProps>(\n next: (initData: Record<string, unknown>) => Promise<T>,\n ) {\n return async (initData: Record<string, unknown>) => {\n const nextProps = await next(initData);\n\n return nextProps;\n };\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 { ResolveProps } from './types';\n\ntype NeededProps = ResolveProps;\n\nexport default function restHooksSpout(\n options: {\n getManagers: () => Manager[];\n } = { getManagers: () => [new NetworkManager()] },\n) {\n return function <T extends NeededProps>(\n next: (initData: Record<string, unknown>) => Promise<T>,\n ) {\n return async (initData: Record<string, unknown>) => {\n const data = initData.resthooks as State<unknown>;\n\n const nextProps = await next(initData);\n\n return {\n ...nextProps,\n app: (\n <CacheProvider initialState={data} managers={options.getManagers()}>\n {nextProps.app}\n </CacheProvider>\n ),\n };\n };\n };\n}\n","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"@anansi/router\");","const __WEBPACK_NAMESPACE_OBJECT__ = require(\"history\");","import { Route, RouteProvider, RouteController } from '@anansi/router';\nimport React from 'react';\nimport { createBrowserHistory } from 'history';\nimport type { Update } from 'history';\n\nimport type { ResolveProps, CreateRouter } from './types';\n\ntype NeededProps = ResolveProps;\n\nexport default function routerSpout<ResolveWith>(options: {\n resolveWith?: any;\n useResolveWith: () => ResolveWith;\n createRouter: CreateRouter<ResolveWith>;\n onChange?: (update: Update, callback: () => void | undefined) => void;\n}) {\n const createRouteComponent = (\n router: RouteController<Route<ResolveWith, any>>,\n ) =>\n function Router({ children }: { children: React.ReactNode }) {\n const resolveWith = options.useResolveWith();\n\n return (\n <RouteProvider\n router={router}\n resolveWith={resolveWith}\n onChange={options.onChange}\n >\n {children}\n </RouteProvider>\n );\n };\n\n return function <T extends NeededProps>(\n next: (initData: Record<string, unknown>) => Promise<T>,\n ) {\n return async (initData: Record<string, unknown>) => {\n const history = createBrowserHistory();\n const router = options.createRouter(history);\n const matchedRoutes = router.getMatchedRoutes(history.location.pathname);\n\n const nextProps = await next(initData);\n\n const Router = createRouteComponent(router);\n return {\n ...nextProps,\n matchedRoutes,\n router,\n app: <Router>{nextProps.app}</Router>,\n };\n };\n };\n}\n","import React from 'react';\nimport type { Route } from '@anansi/router';\n\nimport type { ResolveProps } from './types';\n\ntype NeededProps = ResolveProps;\n\nexport default function JSONSpout({\n id = 'anansi-json',\n}: { id?: string } = {}) {\n return function <T extends NeededProps>(\n next: (initData: Record<string, unknown>) => Promise<T>,\n ) {\n return async () => {\n const initData = getDatafromDOM(id);\n const nextProps = await next(initData);\n\n return nextProps;\n };\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","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';\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;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":""}