@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.
- package/CHANGELOG.md +41 -0
- package/README.md +18 -7
- package/dist/client.js +63 -47
- package/dist/client.js.map +1 -1
- package/dist/server.js +201 -190
- package/dist/server.js.map +1 -1
- package/lib/floodSpouts.d.ts +1 -1
- package/lib/floodSpouts.d.ts.map +1 -1
- package/lib/floodSpouts.js +2 -2
- package/lib/index.d.ts +3 -0
- package/lib/index.d.ts.map +1 -1
- package/lib/index.js +11 -2
- package/lib/index.server.d.ts +3 -0
- package/lib/index.server.d.ts.map +1 -1
- package/lib/index.server.js +11 -2
- package/lib/laySpouts.d.ts +2 -1
- package/lib/laySpouts.d.ts.map +1 -1
- package/lib/laySpouts.js +45 -54
- package/lib/scripts/startDevserver.d.ts.map +1 -1
- package/lib/scripts/startDevserver.js +8 -3
- package/lib/spouts/app.d.ts +5 -0
- package/lib/spouts/app.d.ts.map +1 -0
- package/lib/spouts/app.js +12 -0
- package/lib/spouts/app.server.d.ts +6 -0
- package/lib/spouts/app.server.d.ts.map +1 -0
- package/lib/spouts/app.server.js +12 -0
- package/lib/spouts/document.d.ts +2 -8
- package/lib/spouts/document.d.ts.map +1 -1
- package/lib/spouts/document.js +4 -6
- package/lib/spouts/document.server.d.ts +4 -6
- package/lib/spouts/document.server.d.ts.map +1 -1
- package/lib/spouts/document.server.js +40 -42
- package/lib/spouts/json.d.ts +4 -2
- package/lib/spouts/json.d.ts.map +1 -1
- package/lib/spouts/json.js +7 -6
- package/lib/spouts/json.server.d.ts +4 -6
- package/lib/spouts/json.server.d.ts.map +1 -1
- package/lib/spouts/json.server.js +32 -34
- package/lib/spouts/prefetch.server.d.ts +1 -1
- package/lib/spouts/prefetch.server.d.ts.map +1 -1
- package/lib/spouts/prefetch.server.js +1 -1
- package/lib/spouts/restHooks.d.ts +3 -3
- package/lib/spouts/restHooks.d.ts.map +1 -1
- package/lib/spouts/restHooks.js +9 -11
- package/lib/spouts/restHooks.server.d.ts +8 -45
- package/lib/spouts/restHooks.server.d.ts.map +1 -1
- package/lib/spouts/restHooks.server.js +15 -12
- package/lib/spouts/router.d.ts +3 -4
- package/lib/spouts/router.d.ts.map +1 -1
- package/lib/spouts/router.js +14 -13
- package/lib/spouts/router.server.d.ts +3 -4
- package/lib/spouts/router.server.d.ts.map +1 -1
- package/lib/spouts/router.server.js +17 -15
- package/lib/spouts/types.d.ts +2 -0
- package/lib/spouts/types.d.ts.map +1 -1
- package/lib/spouts/types.js +1 -1
- package/package.json +5 -5
- package/src/floodSpouts.tsx +2 -2
- package/src/index.server.ts +3 -0
- package/src/index.ts +3 -0
- package/src/laySpouts.tsx +23 -29
- package/src/scripts/startDevserver.ts +6 -2
- package/src/spouts/app.server.tsx +8 -0
- package/src/spouts/app.tsx +6 -0
- package/src/spouts/document.server.tsx +64 -68
- package/src/spouts/document.tsx +5 -14
- package/src/spouts/json.server.tsx +41 -45
- package/src/spouts/json.tsx +8 -16
- package/src/spouts/prefetch.server.tsx +8 -4
- package/src/spouts/restHooks.server.tsx +27 -22
- package/src/spouts/restHooks.tsx +12 -18
- package/src/spouts/router.server.tsx +27 -21
- package/src/spouts/router.tsx +19 -19
- 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
|
<!--[](https://circleci.com/gh/notwillk/pojo-router)-->
|
|
4
|
+
|
|
3
5
|
[](https://www.npmjs.com/package/@anansi/core)
|
|
4
6
|
[](https://bundlephobia.com/result?p=@anansi/core)
|
|
5
7
|
[](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
|
-
|
|
42
|
-
|
|
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
|
-
|
|
72
|
-
|
|
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
|
|
78
|
-
|
|
79
|
-
|
|
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
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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:
|
|
139
|
+
lineNumber: 27,
|
|
137
140
|
columnNumber: 9
|
|
138
141
|
}
|
|
139
142
|
}, children);
|
|
140
143
|
};
|
|
141
144
|
|
|
142
|
-
return
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
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
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
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
|
;
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","mappings":";;AAAA;AACA;AACA;;;;ACFA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACPA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;ACPA;;;;;ACAA;AACA;AACA;AACA;AACA;AACA;AACA
|
|
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":""}
|