@quilted/quilt 0.5.146 → 0.5.148
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 +22 -0
- package/build/cjs/index.cjs +20 -11
- package/build/cjs/server/request-router.cjs +30 -13
- package/build/cjs/threads.cjs +37 -20
- package/build/esm/index.mjs +3 -2
- package/build/esm/server/request-router.mjs +30 -13
- package/build/esm/threads.mjs +3 -2
- package/build/esnext/index.esnext +3 -2
- package/build/esnext/server/request-router.esnext +30 -13
- package/build/esnext/threads.esnext +3 -2
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/typescript/index.d.ts +4 -3
- package/build/typescript/index.d.ts.map +1 -1
- package/build/typescript/server/request-router.d.ts +12 -5
- package/build/typescript/server/request-router.d.ts.map +1 -1
- package/build/typescript/threads.d.ts +6 -5
- package/build/typescript/threads.d.ts.map +1 -1
- package/package.json +4 -3
- package/source/index.ts +8 -9
- package/source/server/request-router.tsx +110 -27
- package/source/threads.ts +19 -13
- package/tsconfig.json +1 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,27 @@
|
|
|
1
1
|
# @quilted/quilt
|
|
2
2
|
|
|
3
|
+
## 0.5.148
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- [`00d90d10`](https://github.com/lemonmade/quilt/commit/00d90d10f4eb97fe55712adcc8b34aa3d3ec1aa1) Thanks [@lemonmade](https://github.com/lemonmade)! - Update signals dependency and add dedicated package for signal utilities
|
|
8
|
+
|
|
9
|
+
- [#588](https://github.com/lemonmade/quilt/pull/588) [`837c8677`](https://github.com/lemonmade/quilt/commit/837c8677566b7e6d182496e07e9c998fc6b7802d) Thanks [@lemonmade](https://github.com/lemonmade)! - Clean up threads for a first version
|
|
10
|
+
|
|
11
|
+
- [#587](https://github.com/lemonmade/quilt/pull/587) [`1180dde2`](https://github.com/lemonmade/quilt/commit/1180dde278793006b8ae153804130cad6dab36c2) Thanks [@lemonmade](https://github.com/lemonmade)! - First major version for `@quilted/events`
|
|
12
|
+
|
|
13
|
+
- [`e45f766b`](https://github.com/lemonmade/quilt/commit/e45f766bce9e8632fe17d9e9c2e3d446d0783feb) Thanks [@lemonmade](https://github.com/lemonmade)! - Simplify thread creation and add helpers for transferring signals over threads
|
|
14
|
+
|
|
15
|
+
- Updated dependencies [[`00d90d10`](https://github.com/lemonmade/quilt/commit/00d90d10f4eb97fe55712adcc8b34aa3d3ec1aa1), [`837c8677`](https://github.com/lemonmade/quilt/commit/837c8677566b7e6d182496e07e9c998fc6b7802d), [`1180dde2`](https://github.com/lemonmade/quilt/commit/1180dde278793006b8ae153804130cad6dab36c2), [`e45f766b`](https://github.com/lemonmade/quilt/commit/e45f766bce9e8632fe17d9e9c2e3d446d0783feb)]:
|
|
16
|
+
- @quilted/threads@1.0.0
|
|
17
|
+
- @quilted/events@1.0.0
|
|
18
|
+
|
|
19
|
+
## 0.5.147
|
|
20
|
+
|
|
21
|
+
### Patch Changes
|
|
22
|
+
|
|
23
|
+
- [`93facb53`](https://github.com/lemonmade/quilt/commit/93facb530324894667817a6d2f78baea19a3b622) Thanks [@lemonmade](https://github.com/lemonmade)! - Allow omitting React element from server renderer
|
|
24
|
+
|
|
3
25
|
## 0.5.146
|
|
4
26
|
|
|
5
27
|
### Patch Changes
|
package/build/cjs/index.cjs
CHANGED
|
@@ -12,6 +12,7 @@ var reactPerformance = require('@quilted/react-performance');
|
|
|
12
12
|
var reactRouter = require('@quilted/react-router');
|
|
13
13
|
var reactHttp = require('@quilted/react-http');
|
|
14
14
|
var reactUtilities = require('@quilted/react-utilities');
|
|
15
|
+
var signals = require('@quilted/signals');
|
|
15
16
|
var reactSignals = require('@quilted/react-signals');
|
|
16
17
|
var App = require('./App.cjs');
|
|
17
18
|
|
|
@@ -49,6 +50,10 @@ Object.defineProperty(exports, 'AbortError', {
|
|
|
49
50
|
enumerable: true,
|
|
50
51
|
get: function () { return events.AbortError; }
|
|
51
52
|
});
|
|
53
|
+
Object.defineProperty(exports, 'EventEmitter', {
|
|
54
|
+
enumerable: true,
|
|
55
|
+
get: function () { return events.EventEmitter; }
|
|
56
|
+
});
|
|
52
57
|
Object.defineProperty(exports, 'NestedAbortController', {
|
|
53
58
|
enumerable: true,
|
|
54
59
|
get: function () { return events.NestedAbortController; }
|
|
@@ -57,13 +62,13 @@ Object.defineProperty(exports, 'TimedAbortController', {
|
|
|
57
62
|
enumerable: true,
|
|
58
63
|
get: function () { return events.TimedAbortController; }
|
|
59
64
|
});
|
|
60
|
-
Object.defineProperty(exports, '
|
|
65
|
+
Object.defineProperty(exports, 'addEventHandler', {
|
|
61
66
|
enumerable: true,
|
|
62
|
-
get: function () { return events.
|
|
67
|
+
get: function () { return events.addEventHandler; }
|
|
63
68
|
});
|
|
64
|
-
Object.defineProperty(exports, '
|
|
69
|
+
Object.defineProperty(exports, 'createEventEmitter', {
|
|
65
70
|
enumerable: true,
|
|
66
|
-
get: function () { return events.
|
|
71
|
+
get: function () { return events.createEventEmitter; }
|
|
67
72
|
});
|
|
68
73
|
Object.defineProperty(exports, 'on', {
|
|
69
74
|
enumerable: true,
|
|
@@ -271,31 +276,35 @@ Object.defineProperty(exports, 'createUseOptionalValueHook', {
|
|
|
271
276
|
});
|
|
272
277
|
Object.defineProperty(exports, 'Signal', {
|
|
273
278
|
enumerable: true,
|
|
274
|
-
get: function () { return
|
|
279
|
+
get: function () { return signals.Signal; }
|
|
275
280
|
});
|
|
276
281
|
Object.defineProperty(exports, 'computedSignal', {
|
|
277
282
|
enumerable: true,
|
|
278
|
-
get: function () { return
|
|
283
|
+
get: function () { return signals.computed; }
|
|
279
284
|
});
|
|
280
285
|
Object.defineProperty(exports, 'isSignal', {
|
|
281
286
|
enumerable: true,
|
|
282
|
-
get: function () { return
|
|
287
|
+
get: function () { return signals.isSignal; }
|
|
283
288
|
});
|
|
284
289
|
Object.defineProperty(exports, 'resolveSignalOrValue', {
|
|
285
290
|
enumerable: true,
|
|
286
|
-
get: function () { return
|
|
291
|
+
get: function () { return signals.resolveSignalOrValue; }
|
|
287
292
|
});
|
|
288
293
|
Object.defineProperty(exports, 'signal', {
|
|
289
294
|
enumerable: true,
|
|
290
|
-
get: function () { return
|
|
295
|
+
get: function () { return signals.signal; }
|
|
291
296
|
});
|
|
292
297
|
Object.defineProperty(exports, 'signalBatch', {
|
|
293
298
|
enumerable: true,
|
|
294
|
-
get: function () { return
|
|
299
|
+
get: function () { return signals.batch; }
|
|
295
300
|
});
|
|
296
301
|
Object.defineProperty(exports, 'signalEffect', {
|
|
297
302
|
enumerable: true,
|
|
298
|
-
get: function () { return
|
|
303
|
+
get: function () { return signals.effect; }
|
|
304
|
+
});
|
|
305
|
+
Object.defineProperty(exports, 'signalToIterator', {
|
|
306
|
+
enumerable: true,
|
|
307
|
+
get: function () { return signals.signalToIterator; }
|
|
299
308
|
});
|
|
300
309
|
Object.defineProperty(exports, 'useComputed', {
|
|
301
310
|
enumerable: true,
|
|
@@ -10,10 +10,16 @@ var requestRouter = require('@quilted/request-router');
|
|
|
10
10
|
var ServerContext = require('./ServerContext.cjs');
|
|
11
11
|
var jsxRuntime = require('react/jsx-runtime');
|
|
12
12
|
|
|
13
|
-
function createServerRender(
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
13
|
+
function createServerRender(...args) {
|
|
14
|
+
let getApp;
|
|
15
|
+
let options;
|
|
16
|
+
if (args.length > 1) {
|
|
17
|
+
getApp = args[0];
|
|
18
|
+
options = args[1] ?? {};
|
|
19
|
+
} else {
|
|
20
|
+
options = args[0] ?? {};
|
|
21
|
+
}
|
|
22
|
+
const stream = options.stream;
|
|
17
23
|
return async (request, requestContext) => {
|
|
18
24
|
const accepts = request.headers.get('Accept');
|
|
19
25
|
if (accepts != null && !accepts.includes('text/html')) return;
|
|
@@ -34,7 +40,7 @@ async function renderAppToResponse(getApp, {
|
|
|
34
40
|
context,
|
|
35
41
|
assets,
|
|
36
42
|
extract,
|
|
37
|
-
|
|
43
|
+
html: htmlOptions
|
|
38
44
|
}) {
|
|
39
45
|
const app = typeof getApp === 'function' ? await getApp() : getApp;
|
|
40
46
|
const cacheKey = await assets?.cacheKey?.(request);
|
|
@@ -59,7 +65,7 @@ async function renderAppToResponse(getApp, {
|
|
|
59
65
|
request,
|
|
60
66
|
context,
|
|
61
67
|
assets,
|
|
62
|
-
|
|
68
|
+
html: htmlOptions
|
|
63
69
|
});
|
|
64
70
|
return requestRouter.html(content, {
|
|
65
71
|
headers,
|
|
@@ -71,7 +77,7 @@ async function renderAppToStreamedResponse(getApp, {
|
|
|
71
77
|
context,
|
|
72
78
|
assets: assets$1,
|
|
73
79
|
extract,
|
|
74
|
-
|
|
80
|
+
html: htmlOptions
|
|
75
81
|
}) {
|
|
76
82
|
const headers = new Headers();
|
|
77
83
|
const stream = new TransformStream();
|
|
@@ -104,7 +110,7 @@ async function renderAppToStreamedResponse(getApp, {
|
|
|
104
110
|
request,
|
|
105
111
|
context,
|
|
106
112
|
assets: assets$1,
|
|
107
|
-
|
|
113
|
+
html: htmlOptions
|
|
108
114
|
});
|
|
109
115
|
const encoder = new TextEncoder();
|
|
110
116
|
const writer = stream.writable.getWriter();
|
|
@@ -129,7 +135,7 @@ async function serverRenderDetailsForApp(app, {
|
|
|
129
135
|
decorate,
|
|
130
136
|
...rest
|
|
131
137
|
} = extractOptions ?? {};
|
|
132
|
-
const rendered = await server$3.extract(app, {
|
|
138
|
+
const rendered = app ? await server$3.extract(app, {
|
|
133
139
|
decorate(app) {
|
|
134
140
|
return /*#__PURE__*/jsxRuntime.jsx(ServerContext.ServerContext, {
|
|
135
141
|
http: http,
|
|
@@ -140,7 +146,7 @@ async function serverRenderDetailsForApp(app, {
|
|
|
140
146
|
});
|
|
141
147
|
},
|
|
142
148
|
...rest
|
|
143
|
-
});
|
|
149
|
+
}) : undefined;
|
|
144
150
|
return {
|
|
145
151
|
rendered,
|
|
146
152
|
http,
|
|
@@ -152,7 +158,7 @@ async function renderAppDetailsToHtmlString(details, {
|
|
|
152
158
|
request,
|
|
153
159
|
context,
|
|
154
160
|
assets,
|
|
155
|
-
|
|
161
|
+
html: htmlOptions
|
|
156
162
|
}) {
|
|
157
163
|
const {
|
|
158
164
|
http,
|
|
@@ -172,13 +178,22 @@ async function renderAppDetailsToHtmlString(details, {
|
|
|
172
178
|
}), {
|
|
173
179
|
cacheKey
|
|
174
180
|
})]) : [];
|
|
181
|
+
let renderHtml;
|
|
182
|
+
let rootElement;
|
|
183
|
+
if (typeof htmlOptions === 'function') {
|
|
184
|
+
renderHtml = htmlOptions;
|
|
185
|
+
} else {
|
|
186
|
+
rootElement = htmlOptions?.rootElement;
|
|
187
|
+
renderHtml = defaultRenderHtml;
|
|
188
|
+
}
|
|
175
189
|
const htmlElement = await renderHtml(rendered, {
|
|
176
190
|
request,
|
|
177
191
|
context,
|
|
178
192
|
html: htmlManager,
|
|
179
193
|
http,
|
|
180
194
|
assets: entryAssets,
|
|
181
|
-
preloadAssets
|
|
195
|
+
preloadAssets,
|
|
196
|
+
rootElement
|
|
182
197
|
});
|
|
183
198
|
return server.renderHtmlToString(htmlElement);
|
|
184
199
|
}
|
|
@@ -186,11 +201,13 @@ const defaultRenderHtml = function defaultRenderHtml(content, {
|
|
|
186
201
|
request,
|
|
187
202
|
html,
|
|
188
203
|
assets: assets$1,
|
|
189
|
-
preloadAssets
|
|
204
|
+
preloadAssets,
|
|
205
|
+
rootElement
|
|
190
206
|
}) {
|
|
191
207
|
const baseUrl = new URL(request.url);
|
|
192
208
|
return /*#__PURE__*/jsxRuntime.jsx(server.Html, {
|
|
193
209
|
manager: html,
|
|
210
|
+
rootElement: rootElement,
|
|
194
211
|
headEndContent: /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
195
212
|
children: [assets$1 && assets$1.styles.map(style => {
|
|
196
213
|
const attributes = assets.styleAssetAttributes(style, {
|
package/build/cjs/threads.cjs
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var threads = require('@quilted/threads');
|
|
4
|
+
var signals = require('@quilted/threads/signals');
|
|
4
5
|
var events = require('@quilted/events');
|
|
5
6
|
var reactWorkers = require('@quilted/react-workers');
|
|
6
7
|
|
|
@@ -18,10 +19,6 @@ Object.defineProperty(exports, 'createBasicEncoder', {
|
|
|
18
19
|
enumerable: true,
|
|
19
20
|
get: function () { return threads.createBasicEncoder; }
|
|
20
21
|
});
|
|
21
|
-
Object.defineProperty(exports, 'createBasicEncoderWithOverrides', {
|
|
22
|
-
enumerable: true,
|
|
23
|
-
get: function () { return threads.createBasicEncoderWithOverrides; }
|
|
24
|
-
});
|
|
25
22
|
Object.defineProperty(exports, 'createThread', {
|
|
26
23
|
enumerable: true,
|
|
27
24
|
get: function () { return threads.createThread; }
|
|
@@ -30,6 +27,26 @@ Object.defineProperty(exports, 'createThreadAbortSignal', {
|
|
|
30
27
|
enumerable: true,
|
|
31
28
|
get: function () { return threads.createThreadAbortSignal; }
|
|
32
29
|
});
|
|
30
|
+
Object.defineProperty(exports, 'createThreadFromBrowserWebSocket', {
|
|
31
|
+
enumerable: true,
|
|
32
|
+
get: function () { return threads.createThreadFromBrowserWebSocket; }
|
|
33
|
+
});
|
|
34
|
+
Object.defineProperty(exports, 'createThreadFromIframe', {
|
|
35
|
+
enumerable: true,
|
|
36
|
+
get: function () { return threads.createThreadFromIframe; }
|
|
37
|
+
});
|
|
38
|
+
Object.defineProperty(exports, 'createThreadFromInsideIframe', {
|
|
39
|
+
enumerable: true,
|
|
40
|
+
get: function () { return threads.createThreadFromInsideIframe; }
|
|
41
|
+
});
|
|
42
|
+
Object.defineProperty(exports, 'createThreadFromMessagePort', {
|
|
43
|
+
enumerable: true,
|
|
44
|
+
get: function () { return threads.createThreadFromMessagePort; }
|
|
45
|
+
});
|
|
46
|
+
Object.defineProperty(exports, 'createThreadFromWebWorker', {
|
|
47
|
+
enumerable: true,
|
|
48
|
+
get: function () { return threads.createThreadFromWebWorker; }
|
|
49
|
+
});
|
|
33
50
|
Object.defineProperty(exports, 'isMemoryManageable', {
|
|
34
51
|
enumerable: true,
|
|
35
52
|
get: function () { return threads.isMemoryManageable; }
|
|
@@ -42,37 +59,37 @@ Object.defineProperty(exports, 'retain', {
|
|
|
42
59
|
enumerable: true,
|
|
43
60
|
get: function () { return threads.retain; }
|
|
44
61
|
});
|
|
45
|
-
Object.defineProperty(exports, '
|
|
62
|
+
Object.defineProperty(exports, 'acceptThreadSignal', {
|
|
46
63
|
enumerable: true,
|
|
47
|
-
get: function () { return
|
|
64
|
+
get: function () { return signals.acceptThreadSignal; }
|
|
48
65
|
});
|
|
49
|
-
Object.defineProperty(exports, '
|
|
66
|
+
Object.defineProperty(exports, 'createThreadSignal', {
|
|
50
67
|
enumerable: true,
|
|
51
|
-
get: function () { return
|
|
68
|
+
get: function () { return signals.createThreadSignal; }
|
|
52
69
|
});
|
|
53
|
-
Object.defineProperty(exports, '
|
|
70
|
+
Object.defineProperty(exports, 'AbortError', {
|
|
54
71
|
enumerable: true,
|
|
55
|
-
get: function () { return
|
|
72
|
+
get: function () { return events.AbortError; }
|
|
56
73
|
});
|
|
57
|
-
Object.defineProperty(exports, '
|
|
74
|
+
Object.defineProperty(exports, 'EventEmitter', {
|
|
58
75
|
enumerable: true,
|
|
59
|
-
get: function () { return
|
|
76
|
+
get: function () { return events.EventEmitter; }
|
|
60
77
|
});
|
|
61
|
-
Object.defineProperty(exports, '
|
|
78
|
+
Object.defineProperty(exports, 'NestedAbortController', {
|
|
62
79
|
enumerable: true,
|
|
63
|
-
get: function () { return
|
|
80
|
+
get: function () { return events.NestedAbortController; }
|
|
64
81
|
});
|
|
65
|
-
Object.defineProperty(exports, '
|
|
82
|
+
Object.defineProperty(exports, 'TimedAbortController', {
|
|
66
83
|
enumerable: true,
|
|
67
|
-
get: function () { return events.
|
|
84
|
+
get: function () { return events.TimedAbortController; }
|
|
68
85
|
});
|
|
69
|
-
Object.defineProperty(exports, '
|
|
86
|
+
Object.defineProperty(exports, 'addEventHandler', {
|
|
70
87
|
enumerable: true,
|
|
71
|
-
get: function () { return events.
|
|
88
|
+
get: function () { return events.addEventHandler; }
|
|
72
89
|
});
|
|
73
|
-
Object.defineProperty(exports, '
|
|
90
|
+
Object.defineProperty(exports, 'createEventEmitter', {
|
|
74
91
|
enumerable: true,
|
|
75
|
-
get: function () { return events.
|
|
92
|
+
get: function () { return events.createEventEmitter; }
|
|
76
93
|
});
|
|
77
94
|
Object.defineProperty(exports, 'on', {
|
|
78
95
|
enumerable: true,
|
package/build/esm/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { createBrowserAssetsEntryFromManifest, createBrowserAssetsFromManifests, scriptAssetAttributes, scriptAssetPreloadAttributes, styleAssetAttributes, styleAssetPreloadAttributes } from '@quilted/assets';
|
|
2
2
|
export { createAsyncModule } from '@quilted/async';
|
|
3
|
-
export { AbortError, NestedAbortController, TimedAbortController,
|
|
3
|
+
export { AbortError, EventEmitter, NestedAbortController, TimedAbortController, addEventHandler, createEventEmitter, on, once, raceAgainstAbortSignal, sleep } from '@quilted/events';
|
|
4
4
|
export { useAssetsCacheKey, useModuleAssets } from '@quilted/react-assets';
|
|
5
5
|
export { createAsyncComponent, useAsyncModule, useAsyncModulePreload, usePreload } from '@quilted/react-async';
|
|
6
6
|
export { useIdleCallback } from '@quilted/react-idle';
|
|
@@ -10,5 +10,6 @@ export { PerformanceContext, createPerformance, usePerformance, usePerformanceNa
|
|
|
10
10
|
export { Link, NavigationBlock, Redirect, RoutePreloading, Routing, useCurrentUrl, useInitialUrl, useNavigate, useNavigationBlock, useRedirect, useRouteChangeFocusRef, useRouteMatch, useRouteMatchDetails, useRouter, useRoutes, useScrollRestoration } from '@quilted/react-router';
|
|
11
11
|
export { CookieContext, useCookie, useCookies } from '@quilted/react-http';
|
|
12
12
|
export { createOptionalContext, createUseContextHook, createUseOptionalValueHook } from '@quilted/react-utilities';
|
|
13
|
-
export { Signal, computed as computedSignal, isSignal, resolveSignalOrValue, signal, batch as signalBatch, effect as signalEffect,
|
|
13
|
+
export { Signal, computed as computedSignal, isSignal, resolveSignalOrValue, signal, batch as signalBatch, effect as signalEffect, signalToIterator } from '@quilted/signals';
|
|
14
|
+
export { useComputed, useSignal, useSignalEffect } from '@quilted/react-signals';
|
|
14
15
|
export { QuiltApp } from './App.mjs';
|
|
@@ -8,10 +8,16 @@ import { redirect, html } from '@quilted/request-router';
|
|
|
8
8
|
import { ServerContext } from './ServerContext.mjs';
|
|
9
9
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
10
10
|
|
|
11
|
-
function createServerRender(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
function createServerRender(...args) {
|
|
12
|
+
let getApp;
|
|
13
|
+
let options;
|
|
14
|
+
if (args.length > 1) {
|
|
15
|
+
getApp = args[0];
|
|
16
|
+
options = args[1] ?? {};
|
|
17
|
+
} else {
|
|
18
|
+
options = args[0] ?? {};
|
|
19
|
+
}
|
|
20
|
+
const stream = options.stream;
|
|
15
21
|
return async (request, requestContext) => {
|
|
16
22
|
const accepts = request.headers.get('Accept');
|
|
17
23
|
if (accepts != null && !accepts.includes('text/html')) return;
|
|
@@ -32,7 +38,7 @@ async function renderAppToResponse(getApp, {
|
|
|
32
38
|
context,
|
|
33
39
|
assets,
|
|
34
40
|
extract,
|
|
35
|
-
|
|
41
|
+
html: htmlOptions
|
|
36
42
|
}) {
|
|
37
43
|
const app = typeof getApp === 'function' ? await getApp() : getApp;
|
|
38
44
|
const cacheKey = await assets?.cacheKey?.(request);
|
|
@@ -57,7 +63,7 @@ async function renderAppToResponse(getApp, {
|
|
|
57
63
|
request,
|
|
58
64
|
context,
|
|
59
65
|
assets,
|
|
60
|
-
|
|
66
|
+
html: htmlOptions
|
|
61
67
|
});
|
|
62
68
|
return html(content, {
|
|
63
69
|
headers,
|
|
@@ -69,7 +75,7 @@ async function renderAppToStreamedResponse(getApp, {
|
|
|
69
75
|
context,
|
|
70
76
|
assets,
|
|
71
77
|
extract,
|
|
72
|
-
|
|
78
|
+
html: htmlOptions
|
|
73
79
|
}) {
|
|
74
80
|
const headers = new Headers();
|
|
75
81
|
const stream = new TransformStream();
|
|
@@ -102,7 +108,7 @@ async function renderAppToStreamedResponse(getApp, {
|
|
|
102
108
|
request,
|
|
103
109
|
context,
|
|
104
110
|
assets,
|
|
105
|
-
|
|
111
|
+
html: htmlOptions
|
|
106
112
|
});
|
|
107
113
|
const encoder = new TextEncoder();
|
|
108
114
|
const writer = stream.writable.getWriter();
|
|
@@ -127,7 +133,7 @@ async function serverRenderDetailsForApp(app, {
|
|
|
127
133
|
decorate,
|
|
128
134
|
...rest
|
|
129
135
|
} = extractOptions ?? {};
|
|
130
|
-
const rendered = await extract(app, {
|
|
136
|
+
const rendered = app ? await extract(app, {
|
|
131
137
|
decorate(app) {
|
|
132
138
|
return /*#__PURE__*/jsx(ServerContext, {
|
|
133
139
|
http: http,
|
|
@@ -138,7 +144,7 @@ async function serverRenderDetailsForApp(app, {
|
|
|
138
144
|
});
|
|
139
145
|
},
|
|
140
146
|
...rest
|
|
141
|
-
});
|
|
147
|
+
}) : undefined;
|
|
142
148
|
return {
|
|
143
149
|
rendered,
|
|
144
150
|
http,
|
|
@@ -150,7 +156,7 @@ async function renderAppDetailsToHtmlString(details, {
|
|
|
150
156
|
request,
|
|
151
157
|
context,
|
|
152
158
|
assets,
|
|
153
|
-
|
|
159
|
+
html: htmlOptions
|
|
154
160
|
}) {
|
|
155
161
|
const {
|
|
156
162
|
http,
|
|
@@ -170,13 +176,22 @@ async function renderAppDetailsToHtmlString(details, {
|
|
|
170
176
|
}), {
|
|
171
177
|
cacheKey
|
|
172
178
|
})]) : [];
|
|
179
|
+
let renderHtml;
|
|
180
|
+
let rootElement;
|
|
181
|
+
if (typeof htmlOptions === 'function') {
|
|
182
|
+
renderHtml = htmlOptions;
|
|
183
|
+
} else {
|
|
184
|
+
rootElement = htmlOptions?.rootElement;
|
|
185
|
+
renderHtml = defaultRenderHtml;
|
|
186
|
+
}
|
|
173
187
|
const htmlElement = await renderHtml(rendered, {
|
|
174
188
|
request,
|
|
175
189
|
context,
|
|
176
190
|
html: htmlManager,
|
|
177
191
|
http,
|
|
178
192
|
assets: entryAssets,
|
|
179
|
-
preloadAssets
|
|
193
|
+
preloadAssets,
|
|
194
|
+
rootElement
|
|
180
195
|
});
|
|
181
196
|
return renderHtmlToString(htmlElement);
|
|
182
197
|
}
|
|
@@ -184,11 +199,13 @@ const defaultRenderHtml = function defaultRenderHtml(content, {
|
|
|
184
199
|
request,
|
|
185
200
|
html,
|
|
186
201
|
assets,
|
|
187
|
-
preloadAssets
|
|
202
|
+
preloadAssets,
|
|
203
|
+
rootElement
|
|
188
204
|
}) {
|
|
189
205
|
const baseUrl = new URL(request.url);
|
|
190
206
|
return /*#__PURE__*/jsx(Html, {
|
|
191
207
|
manager: html,
|
|
208
|
+
rootElement: rootElement,
|
|
192
209
|
headEndContent: /*#__PURE__*/jsxs(Fragment, {
|
|
193
210
|
children: [assets && assets.styles.map(style => {
|
|
194
211
|
const attributes = styleAssetAttributes(style, {
|
package/build/esm/threads.mjs
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export { ENCODE_METHOD, acceptThreadAbortSignal, createBasicEncoder,
|
|
2
|
-
export {
|
|
1
|
+
export { ENCODE_METHOD, acceptThreadAbortSignal, createBasicEncoder, createThread, createThreadAbortSignal, createThreadFromBrowserWebSocket, createThreadFromIframe, createThreadFromInsideIframe, createThreadFromMessagePort, createThreadFromWebWorker, isMemoryManageable, release, retain } from '@quilted/threads';
|
|
2
|
+
export { acceptThreadSignal, createThreadSignal } from '@quilted/threads/signals';
|
|
3
|
+
export { AbortError, EventEmitter, NestedAbortController, TimedAbortController, addEventHandler, createEventEmitter, on, once } from '@quilted/events';
|
|
3
4
|
export { createThreadWorker, createWorker, useThreadWorker } from '@quilted/react-workers';
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { createBrowserAssetsEntryFromManifest, createBrowserAssetsFromManifests, scriptAssetAttributes, scriptAssetPreloadAttributes, styleAssetAttributes, styleAssetPreloadAttributes } from '@quilted/assets';
|
|
2
2
|
export { createAsyncModule } from '@quilted/async';
|
|
3
|
-
export { AbortError, NestedAbortController, TimedAbortController,
|
|
3
|
+
export { AbortError, EventEmitter, NestedAbortController, TimedAbortController, addEventHandler, createEventEmitter, on, once, raceAgainstAbortSignal, sleep } from '@quilted/events';
|
|
4
4
|
export { useAssetsCacheKey, useModuleAssets } from '@quilted/react-assets';
|
|
5
5
|
export { createAsyncComponent, useAsyncModule, useAsyncModulePreload, usePreload } from '@quilted/react-async';
|
|
6
6
|
export { useIdleCallback } from '@quilted/react-idle';
|
|
@@ -10,5 +10,6 @@ export { PerformanceContext, createPerformance, usePerformance, usePerformanceNa
|
|
|
10
10
|
export { Link, NavigationBlock, Redirect, RoutePreloading, Routing, useCurrentUrl, useInitialUrl, useNavigate, useNavigationBlock, useRedirect, useRouteChangeFocusRef, useRouteMatch, useRouteMatchDetails, useRouter, useRoutes, useScrollRestoration } from '@quilted/react-router';
|
|
11
11
|
export { CookieContext, useCookie, useCookies } from '@quilted/react-http';
|
|
12
12
|
export { createOptionalContext, createUseContextHook, createUseOptionalValueHook } from '@quilted/react-utilities';
|
|
13
|
-
export { Signal, computed as computedSignal, isSignal, resolveSignalOrValue, signal, batch as signalBatch, effect as signalEffect,
|
|
13
|
+
export { Signal, computed as computedSignal, isSignal, resolveSignalOrValue, signal, batch as signalBatch, effect as signalEffect, signalToIterator } from '@quilted/signals';
|
|
14
|
+
export { useComputed, useSignal, useSignalEffect } from '@quilted/react-signals';
|
|
14
15
|
export { QuiltApp } from './App.esnext';
|
|
@@ -8,10 +8,16 @@ import { redirect, html } from '@quilted/request-router';
|
|
|
8
8
|
import { ServerContext } from './ServerContext.esnext';
|
|
9
9
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
10
10
|
|
|
11
|
-
function createServerRender(
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
11
|
+
function createServerRender(...args) {
|
|
12
|
+
let getApp;
|
|
13
|
+
let options;
|
|
14
|
+
if (args.length > 1) {
|
|
15
|
+
getApp = args[0];
|
|
16
|
+
options = args[1] ?? {};
|
|
17
|
+
} else {
|
|
18
|
+
options = args[0] ?? {};
|
|
19
|
+
}
|
|
20
|
+
const stream = options.stream;
|
|
15
21
|
return async (request, requestContext) => {
|
|
16
22
|
const accepts = request.headers.get('Accept');
|
|
17
23
|
if (accepts != null && !accepts.includes('text/html')) return;
|
|
@@ -32,7 +38,7 @@ async function renderAppToResponse(getApp, {
|
|
|
32
38
|
context,
|
|
33
39
|
assets,
|
|
34
40
|
extract,
|
|
35
|
-
|
|
41
|
+
html: htmlOptions
|
|
36
42
|
}) {
|
|
37
43
|
const app = typeof getApp === 'function' ? await getApp() : getApp;
|
|
38
44
|
const cacheKey = await assets?.cacheKey?.(request);
|
|
@@ -57,7 +63,7 @@ async function renderAppToResponse(getApp, {
|
|
|
57
63
|
request,
|
|
58
64
|
context,
|
|
59
65
|
assets,
|
|
60
|
-
|
|
66
|
+
html: htmlOptions
|
|
61
67
|
});
|
|
62
68
|
return html(content, {
|
|
63
69
|
headers,
|
|
@@ -69,7 +75,7 @@ async function renderAppToStreamedResponse(getApp, {
|
|
|
69
75
|
context,
|
|
70
76
|
assets,
|
|
71
77
|
extract,
|
|
72
|
-
|
|
78
|
+
html: htmlOptions
|
|
73
79
|
}) {
|
|
74
80
|
const headers = new Headers();
|
|
75
81
|
const stream = new TransformStream();
|
|
@@ -102,7 +108,7 @@ async function renderAppToStreamedResponse(getApp, {
|
|
|
102
108
|
request,
|
|
103
109
|
context,
|
|
104
110
|
assets,
|
|
105
|
-
|
|
111
|
+
html: htmlOptions
|
|
106
112
|
});
|
|
107
113
|
const encoder = new TextEncoder();
|
|
108
114
|
const writer = stream.writable.getWriter();
|
|
@@ -127,7 +133,7 @@ async function serverRenderDetailsForApp(app, {
|
|
|
127
133
|
decorate,
|
|
128
134
|
...rest
|
|
129
135
|
} = extractOptions ?? {};
|
|
130
|
-
const rendered = await extract(app, {
|
|
136
|
+
const rendered = app ? await extract(app, {
|
|
131
137
|
decorate(app) {
|
|
132
138
|
return /*#__PURE__*/jsx(ServerContext, {
|
|
133
139
|
http: http,
|
|
@@ -138,7 +144,7 @@ async function serverRenderDetailsForApp(app, {
|
|
|
138
144
|
});
|
|
139
145
|
},
|
|
140
146
|
...rest
|
|
141
|
-
});
|
|
147
|
+
}) : undefined;
|
|
142
148
|
return {
|
|
143
149
|
rendered,
|
|
144
150
|
http,
|
|
@@ -150,7 +156,7 @@ async function renderAppDetailsToHtmlString(details, {
|
|
|
150
156
|
request,
|
|
151
157
|
context,
|
|
152
158
|
assets,
|
|
153
|
-
|
|
159
|
+
html: htmlOptions
|
|
154
160
|
}) {
|
|
155
161
|
const {
|
|
156
162
|
http,
|
|
@@ -170,13 +176,22 @@ async function renderAppDetailsToHtmlString(details, {
|
|
|
170
176
|
}), {
|
|
171
177
|
cacheKey
|
|
172
178
|
})]) : [];
|
|
179
|
+
let renderHtml;
|
|
180
|
+
let rootElement;
|
|
181
|
+
if (typeof htmlOptions === 'function') {
|
|
182
|
+
renderHtml = htmlOptions;
|
|
183
|
+
} else {
|
|
184
|
+
rootElement = htmlOptions?.rootElement;
|
|
185
|
+
renderHtml = defaultRenderHtml;
|
|
186
|
+
}
|
|
173
187
|
const htmlElement = await renderHtml(rendered, {
|
|
174
188
|
request,
|
|
175
189
|
context,
|
|
176
190
|
html: htmlManager,
|
|
177
191
|
http,
|
|
178
192
|
assets: entryAssets,
|
|
179
|
-
preloadAssets
|
|
193
|
+
preloadAssets,
|
|
194
|
+
rootElement
|
|
180
195
|
});
|
|
181
196
|
return renderHtmlToString(htmlElement);
|
|
182
197
|
}
|
|
@@ -184,11 +199,13 @@ const defaultRenderHtml = function defaultRenderHtml(content, {
|
|
|
184
199
|
request,
|
|
185
200
|
html,
|
|
186
201
|
assets,
|
|
187
|
-
preloadAssets
|
|
202
|
+
preloadAssets,
|
|
203
|
+
rootElement
|
|
188
204
|
}) {
|
|
189
205
|
const baseUrl = new URL(request.url);
|
|
190
206
|
return /*#__PURE__*/jsx(Html, {
|
|
191
207
|
manager: html,
|
|
208
|
+
rootElement: rootElement,
|
|
192
209
|
headEndContent: /*#__PURE__*/jsxs(Fragment, {
|
|
193
210
|
children: [assets && assets.styles.map(style => {
|
|
194
211
|
const attributes = styleAssetAttributes(style, {
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
-
export { ENCODE_METHOD, acceptThreadAbortSignal, createBasicEncoder,
|
|
2
|
-
export {
|
|
1
|
+
export { ENCODE_METHOD, acceptThreadAbortSignal, createBasicEncoder, createThread, createThreadAbortSignal, createThreadFromBrowserWebSocket, createThreadFromIframe, createThreadFromInsideIframe, createThreadFromMessagePort, createThreadFromWebWorker, isMemoryManageable, release, retain } from '@quilted/threads';
|
|
2
|
+
export { acceptThreadSignal, createThreadSignal } from '@quilted/threads/signals';
|
|
3
|
+
export { AbortError, EventEmitter, NestedAbortController, TimedAbortController, addEventHandler, createEventEmitter, on, once } from '@quilted/events';
|
|
3
4
|
export { createThreadWorker, createWorker, useThreadWorker } from '@quilted/react-workers';
|