@quilted/quilt 0.8.5 → 0.8.7
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 +21 -0
- package/build/esm/server/ServerContext.mjs +7 -2
- package/build/esm/server/request-router.mjs +49 -54
- package/build/esm/server.browser.mjs +4 -1
- package/build/esm/server.mjs +2 -1
- package/build/esnext/server/ServerContext.esnext +8 -3
- package/build/esnext/server/request-router.esnext +22 -31
- package/build/esnext/server.browser.esnext +4 -1
- package/build/esnext/server.esnext +2 -1
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/typescript/server/ServerContext.d.ts +3 -1
- package/build/typescript/server/ServerContext.d.ts.map +1 -1
- package/build/typescript/server/request-router.d.ts +1 -4
- package/build/typescript/server/request-router.d.ts.map +1 -1
- package/build/typescript/server.browser.d.ts +2 -0
- package/build/typescript/server.browser.d.ts.map +1 -1
- package/build/typescript/server.d.ts +2 -1
- package/build/typescript/server.d.ts.map +1 -1
- package/package.json +5 -5
- package/source/server/ServerContext.tsx +18 -2
- package/source/server/request-router.tsx +64 -68
- package/source/server.browser.ts +5 -0
- package/source/server.ts +1 -1
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type { RenderableProps, VNode } from 'preact';
|
|
2
2
|
import { type BrowserDetails } from '@quilted/preact-browser/server';
|
|
3
|
+
import { type BrowserAssets } from '@quilted/assets';
|
|
3
4
|
interface Props {
|
|
4
5
|
browser?: BrowserDetails;
|
|
6
|
+
assets?: BrowserAssets;
|
|
5
7
|
}
|
|
6
|
-
export declare function ServerContext({ browser, children }: RenderableProps<Props>): VNode<{}>;
|
|
8
|
+
export declare function ServerContext({ browser, assets, children, }: RenderableProps<Props>): VNode<{}>;
|
|
7
9
|
export {};
|
|
8
10
|
//# sourceMappingURL=ServerContext.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ServerContext.d.ts","sourceRoot":"","sources":["../../../source/server/ServerContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAE,KAAK,EAAC,MAAM,QAAQ,CAAC;AAEnD,OAAO,
|
|
1
|
+
{"version":3,"file":"ServerContext.d.ts","sourceRoot":"","sources":["../../../source/server/ServerContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,eAAe,EAAE,KAAK,EAAC,MAAM,QAAQ,CAAC;AAEnD,OAAO,EAGL,KAAK,cAAc,EACpB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAC,KAAK,aAAa,EAAC,MAAM,iBAAiB,CAAC;AAEnD,UAAU,KAAK;IACb,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,MAAM,CAAC,EAAE,aAAa,CAAC;CACxB;AAED,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,MAAM,EACN,QAAQ,GACT,EAAE,eAAe,CAAC,KAAK,CAAC,GAiBF,KAAK,CAAC,EAAE,CAAC,CAC/B"}
|
|
@@ -1,10 +1,7 @@
|
|
|
1
1
|
import { type VNode } from 'preact';
|
|
2
2
|
import { type BrowserAssets } from '@quilted/assets';
|
|
3
|
-
import {
|
|
3
|
+
import { BrowserResponse } from '@quilted/preact-browser/server';
|
|
4
4
|
import { EnhancedResponse } from '@quilted/request-router';
|
|
5
|
-
export declare function renderToStringWithServerContext(element: VNode<any>, { browser }?: {
|
|
6
|
-
browser?: BrowserDetails;
|
|
7
|
-
}): Promise<string>;
|
|
8
5
|
export interface RenderHTMLFunction {
|
|
9
6
|
(content: ReadableStream<string>, context: {
|
|
10
7
|
readonly response: BrowserResponse;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-router.d.ts","sourceRoot":"","sources":["../../../source/server/request-router.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,KAAK,
|
|
1
|
+
{"version":3,"file":"request-router.d.ts","sourceRoot":"","sources":["../../../source/server/request-router.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAiB,KAAK,KAAK,EAAC,MAAM,QAAQ,CAAC;AAMlD,OAAO,EAGL,KAAK,aAAa,EAEnB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAKL,eAAe,EAMhB,MAAM,gCAAgC,CAAC;AAExC,OAAO,EAAe,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AAIvE,MAAM,WAAW,kBAAkB;IACjC,CACE,OAAO,EAAE,cAAc,CAAC,MAAM,CAAC,EAC/B,OAAO,EAAE;QACP,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;KACpC,GACA,cAAc,CAAC,GAAG,CAAC,GAAG,MAAM,GAAG,OAAO,CAAC,cAAc,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;CACzE;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,OAAO,EAAE,OAAO,CAAC;IAC1B,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,MAAM,CAAC,EAAE,SAAS,GAAG,KAAK,CAAC;IACpC,QAAQ,CAAC,OAAO,CAAC,EAAE,WAAW,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,EAAE,aAAa,CAAC;IAChC,QAAQ,CAAC,cAAc,CAAC,EAAE,QAAQ,CAAC,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,UAAU,GAAG,kBAAkB,CAAC;IAC7E,SAAS,CAAC,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC;CACzC;AAED,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,KAAK,CAAC,GAAG,CAAC,EACnB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,gBAAgB,CAAC,CAAC;AAC7B,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,gBAAgB,CAAC,CAAC"}
|
|
@@ -7,4 +7,6 @@ declare function noopCreateRequestRouterLocalization(): void;
|
|
|
7
7
|
export { noopCreateRequestRouterLocalization as createRequestRouterLocalization };
|
|
8
8
|
declare function noopRenderToResponse(): void;
|
|
9
9
|
export { noopRenderToResponse as renderToResponse };
|
|
10
|
+
declare function NoopServerContext(): null;
|
|
11
|
+
export { NoopServerContext as ServerContext };
|
|
10
12
|
//# sourceMappingURL=server.browser.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.browser.d.ts","sourceRoot":"","sources":["../../source/server.browser.ts"],"names":[],"mappings":"AAAA,iBAAS,kBAAkB,SAAK;AAEhC,OAAO,EACL,kBAAkB,IAAI,cAAc,EACpC,kBAAkB,IAAI,mBAAmB,EACzC,kBAAkB,IAAI,oBAAoB,GAC3C,CAAC;AACF,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAC,yBAAyB,EAAC,MAAM,0BAA0B,CAAC;AAEnE,iBAAS,mCAAmC,SAAK;AACjD,OAAO,EAAC,mCAAmC,IAAI,+BAA+B,EAAC,CAAC;AAEhF,iBAAS,oBAAoB,SAAK;AAClC,OAAO,EAAC,oBAAoB,IAAI,gBAAgB,EAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"server.browser.d.ts","sourceRoot":"","sources":["../../source/server.browser.ts"],"names":[],"mappings":"AAAA,iBAAS,kBAAkB,SAAK;AAEhC,OAAO,EACL,kBAAkB,IAAI,cAAc,EACpC,kBAAkB,IAAI,mBAAmB,EACzC,kBAAkB,IAAI,oBAAoB,GAC3C,CAAC;AACF,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAC,yBAAyB,EAAC,MAAM,0BAA0B,CAAC;AAEnE,iBAAS,mCAAmC,SAAK;AACjD,OAAO,EAAC,mCAAmC,IAAI,+BAA+B,EAAC,CAAC;AAEhF,iBAAS,oBAAoB,SAAK;AAClC,OAAO,EAAC,oBAAoB,IAAI,gBAAgB,EAAC,CAAC;AAElD,iBAAS,iBAAiB,SAEzB;AACD,OAAO,EAAC,iBAAiB,IAAI,aAAa,EAAC,CAAC"}
|
|
@@ -3,5 +3,6 @@ export * from '@quilted/preact-browser/server';
|
|
|
3
3
|
export * from '@quilted/assets';
|
|
4
4
|
export { parseAcceptLanguageHeader } from '@quilted/preact-localize';
|
|
5
5
|
export { createRequestRouterLocalization } from '@quilted/preact-localize/request-router';
|
|
6
|
-
export { renderToResponse,
|
|
6
|
+
export { renderToResponse, type RenderToResponseOptions, type RenderHTMLFunction, } from './server/request-router.tsx';
|
|
7
|
+
export { ServerContext } from './server/ServerContext.tsx';
|
|
7
8
|
//# sourceMappingURL=server.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../source/server.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAC,yBAAyB,EAAC,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAC,+BAA+B,EAAC,MAAM,yCAAyC,CAAC;AAExF,OAAO,EACL,gBAAgB,EAChB
|
|
1
|
+
{"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../source/server.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,cAAc,EACd,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,yBAAyB,CAAC;AACjC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iBAAiB,CAAC;AAEhC,OAAO,EAAC,yBAAyB,EAAC,MAAM,0BAA0B,CAAC;AACnE,OAAO,EAAC,+BAA+B,EAAC,MAAM,yCAAyC,CAAC;AAExF,OAAO,EACL,gBAAgB,EAChB,KAAK,uBAAuB,EAC5B,KAAK,kBAAkB,GACxB,MAAM,6BAA6B,CAAC;AACrC,OAAO,EAAC,aAAa,EAAC,MAAM,4BAA4B,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@quilted/quilt",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "0.8.
|
|
4
|
+
"version": "0.8.7",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "https://github.com/lemonmade/quilt.git",
|
|
@@ -242,14 +242,14 @@
|
|
|
242
242
|
],
|
|
243
243
|
"dependencies": {
|
|
244
244
|
"@quilted/assets": "^0.1.5",
|
|
245
|
-
"@quilted/async": "^0.4.
|
|
245
|
+
"@quilted/async": "^0.4.22",
|
|
246
246
|
"@quilted/events": "^2.1.1",
|
|
247
|
-
"@quilted/graphql": "^3.3.
|
|
247
|
+
"@quilted/graphql": "^3.3.8",
|
|
248
248
|
"@quilted/preact-async": "^0.1.2",
|
|
249
|
-
"@quilted/preact-browser": "^0.1.
|
|
249
|
+
"@quilted/preact-browser": "^0.1.11",
|
|
250
250
|
"@quilted/preact-context": "^0.1.2",
|
|
251
251
|
"@quilted/preact-graphql": "^0.1.0",
|
|
252
|
-
"@quilted/preact-localize": "^0.3.
|
|
252
|
+
"@quilted/preact-localize": "^0.3.4",
|
|
253
253
|
"@quilted/preact-performance": "^0.1.0",
|
|
254
254
|
"@quilted/preact-router": "^0.2.10",
|
|
255
255
|
"@quilted/preact-signals": "^0.1.0",
|
|
@@ -2,14 +2,22 @@ import type {RenderableProps, VNode} from 'preact';
|
|
|
2
2
|
|
|
3
3
|
import {
|
|
4
4
|
BrowserDetailsContext,
|
|
5
|
+
BrowserAssetsManifestContext,
|
|
5
6
|
type BrowserDetails,
|
|
6
7
|
} from '@quilted/preact-browser/server';
|
|
7
8
|
|
|
9
|
+
import {type BrowserAssets} from '@quilted/assets';
|
|
10
|
+
|
|
8
11
|
interface Props {
|
|
9
12
|
browser?: BrowserDetails;
|
|
13
|
+
assets?: BrowserAssets;
|
|
10
14
|
}
|
|
11
15
|
|
|
12
|
-
export function ServerContext({
|
|
16
|
+
export function ServerContext({
|
|
17
|
+
browser,
|
|
18
|
+
assets,
|
|
19
|
+
children,
|
|
20
|
+
}: RenderableProps<Props>) {
|
|
13
21
|
const withBrowser = browser ? (
|
|
14
22
|
<BrowserDetailsContext.Provider value={browser}>
|
|
15
23
|
{children}
|
|
@@ -18,5 +26,13 @@ export function ServerContext({browser, children}: RenderableProps<Props>) {
|
|
|
18
26
|
children
|
|
19
27
|
);
|
|
20
28
|
|
|
21
|
-
|
|
29
|
+
const withAssets = assets ? (
|
|
30
|
+
<BrowserAssetsManifestContext.Provider value={assets}>
|
|
31
|
+
{withBrowser}
|
|
32
|
+
</BrowserAssetsManifestContext.Provider>
|
|
33
|
+
) : (
|
|
34
|
+
withBrowser
|
|
35
|
+
);
|
|
36
|
+
|
|
37
|
+
return withAssets as VNode<{}>;
|
|
22
38
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {isValidElement, type VNode
|
|
1
|
+
import {isValidElement, type VNode} from 'preact';
|
|
2
2
|
import {
|
|
3
3
|
renderToStaticMarkup,
|
|
4
4
|
renderToStringAsync,
|
|
@@ -11,29 +11,22 @@ import {
|
|
|
11
11
|
type BrowserAssetsEntry,
|
|
12
12
|
} from '@quilted/assets';
|
|
13
13
|
import {
|
|
14
|
-
|
|
14
|
+
Title,
|
|
15
|
+
Link,
|
|
16
|
+
Meta,
|
|
17
|
+
Serialization,
|
|
15
18
|
BrowserResponse,
|
|
16
19
|
ScriptAsset,
|
|
17
20
|
ScriptAssetPreload,
|
|
18
21
|
StyleAsset,
|
|
19
22
|
StyleAssetPreload,
|
|
23
|
+
BrowserEffectsAreActiveContext,
|
|
20
24
|
} from '@quilted/preact-browser/server';
|
|
21
25
|
|
|
22
26
|
import {HTMLResponse, EnhancedResponse} from '@quilted/request-router';
|
|
23
27
|
|
|
24
28
|
import {ServerContext} from './ServerContext.tsx';
|
|
25
29
|
|
|
26
|
-
export async function renderToStringWithServerContext(
|
|
27
|
-
element: VNode<any>,
|
|
28
|
-
{browser}: {browser?: BrowserDetails} = {},
|
|
29
|
-
) {
|
|
30
|
-
const rendered = await renderToStringAsync(
|
|
31
|
-
<ServerContext browser={browser}>{element}</ServerContext>,
|
|
32
|
-
);
|
|
33
|
-
|
|
34
|
-
return rendered;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
30
|
export interface RenderHTMLFunction {
|
|
38
31
|
(
|
|
39
32
|
content: ReadableStream<string>,
|
|
@@ -101,9 +94,11 @@ export async function renderToResponse(
|
|
|
101
94
|
let rendered: string;
|
|
102
95
|
|
|
103
96
|
try {
|
|
104
|
-
rendered = await
|
|
105
|
-
browser
|
|
106
|
-
|
|
97
|
+
rendered = await renderToStringAsync(
|
|
98
|
+
<ServerContext assets={assets} browser={browserResponse}>
|
|
99
|
+
{element}
|
|
100
|
+
</ServerContext>,
|
|
101
|
+
);
|
|
107
102
|
} catch (error) {
|
|
108
103
|
if (error instanceof Response) {
|
|
109
104
|
const mergedHeaders = new Headers(browserResponse.headers);
|
|
@@ -149,9 +144,11 @@ export async function renderToResponse(
|
|
|
149
144
|
// this, they will explicitly turn on streaming and will have to use some in-app
|
|
150
145
|
// to manually handle redirects (e.g., by rendering a script tag that uses JavaScript
|
|
151
146
|
// to redirect)
|
|
152
|
-
const rendered = await
|
|
153
|
-
browser
|
|
154
|
-
|
|
147
|
+
const rendered = await renderToStringAsync(
|
|
148
|
+
<ServerContext assets={assets} browser={browserResponse}>
|
|
149
|
+
{element}
|
|
150
|
+
</ServerContext>,
|
|
151
|
+
);
|
|
155
152
|
|
|
156
153
|
appWriter.write(rendered);
|
|
157
154
|
}
|
|
@@ -218,55 +215,54 @@ export async function renderToResponse(
|
|
|
218
215
|
}
|
|
219
216
|
|
|
220
217
|
const htmlContent = renderToStaticMarkup(
|
|
221
|
-
<
|
|
222
|
-
<
|
|
223
|
-
|
|
224
|
-
<
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
</html>,
|
|
218
|
+
<BrowserEffectsAreActiveContext.Provider value={false}>
|
|
219
|
+
<html {...browserResponse.htmlAttributes.value}>
|
|
220
|
+
<head>
|
|
221
|
+
<Title>{browserResponse.title.value}</Title>
|
|
222
|
+
{browserResponse.links.value.map((link) => (
|
|
223
|
+
<Link {...link} />
|
|
224
|
+
))}
|
|
225
|
+
{browserResponse.metas.value.map((meta) => (
|
|
226
|
+
<Meta {...meta} />
|
|
227
|
+
))}
|
|
228
|
+
{browserResponse.serializations.value.map(({name, content}) => (
|
|
229
|
+
<Serialization name={name} content={content} />
|
|
230
|
+
))}
|
|
231
|
+
{synchronousAssets?.scripts.map((script) => (
|
|
232
|
+
<ScriptAsset
|
|
233
|
+
key={script.source}
|
|
234
|
+
asset={script}
|
|
235
|
+
baseURL={baseURL}
|
|
236
|
+
/>
|
|
237
|
+
))}
|
|
238
|
+
{synchronousAssets?.styles.map((style) => (
|
|
239
|
+
<StyleAsset
|
|
240
|
+
key={style.source}
|
|
241
|
+
asset={style}
|
|
242
|
+
baseURL={baseURL}
|
|
243
|
+
/>
|
|
244
|
+
))}
|
|
245
|
+
{preloadAssets?.styles.map((style) => (
|
|
246
|
+
<StyleAssetPreload
|
|
247
|
+
key={style.source}
|
|
248
|
+
asset={style}
|
|
249
|
+
baseURL={baseURL}
|
|
250
|
+
/>
|
|
251
|
+
))}
|
|
252
|
+
{preloadAssets?.scripts.map((script) => (
|
|
253
|
+
<ScriptAssetPreload
|
|
254
|
+
key={script.source}
|
|
255
|
+
asset={script}
|
|
256
|
+
baseURL={baseURL}
|
|
257
|
+
/>
|
|
258
|
+
))}
|
|
259
|
+
</head>
|
|
260
|
+
<body
|
|
261
|
+
{...browserResponse.bodyAttributes.value}
|
|
262
|
+
dangerouslySetInnerHTML={{__html: '%%CONTENT%%'}}
|
|
263
|
+
></body>
|
|
264
|
+
</html>
|
|
265
|
+
</BrowserEffectsAreActiveContext.Provider>,
|
|
270
266
|
);
|
|
271
267
|
|
|
272
268
|
const [firstChunk, secondChunk] = htmlContent.split('%%CONTENT%%');
|
package/source/server.browser.ts
CHANGED
|
@@ -15,3 +15,8 @@ export {noopCreateRequestRouterLocalization as createRequestRouterLocalization};
|
|
|
15
15
|
|
|
16
16
|
function noopRenderToResponse() {}
|
|
17
17
|
export {noopRenderToResponse as renderToResponse};
|
|
18
|
+
|
|
19
|
+
function NoopServerContext() {
|
|
20
|
+
return null;
|
|
21
|
+
}
|
|
22
|
+
export {NoopServerContext as ServerContext};
|
package/source/server.ts
CHANGED
|
@@ -11,7 +11,7 @@ export {createRequestRouterLocalization} from '@quilted/preact-localize/request-
|
|
|
11
11
|
|
|
12
12
|
export {
|
|
13
13
|
renderToResponse,
|
|
14
|
-
renderToStringWithServerContext,
|
|
15
14
|
type RenderToResponseOptions,
|
|
16
15
|
type RenderHTMLFunction,
|
|
17
16
|
} from './server/request-router.tsx';
|
|
17
|
+
export {ServerContext} from './server/ServerContext.tsx';
|