@quilted/quilt 0.5.151 → 0.5.153
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 +16 -0
- package/build/cjs/assets.cjs +39 -0
- package/build/cjs/async.cjs +32 -0
- package/build/cjs/events.cjs +46 -0
- package/build/cjs/graphql/testing.cjs +2 -6
- package/build/cjs/html/HTML.cjs +21 -0
- package/build/cjs/html.cjs +33 -6
- package/build/cjs/http.cjs +16 -0
- package/build/cjs/index.cjs +0 -319
- package/build/cjs/localize.cjs +46 -0
- package/build/cjs/navigate/testing.cjs +12 -0
- package/build/cjs/navigate.cjs +70 -0
- package/build/cjs/performance.cjs +26 -0
- package/build/cjs/polyfills/fetch-get-set-cookie.cjs +4 -0
- package/build/cjs/react/testing.cjs +30 -0
- package/build/cjs/react/tools.cjs +19 -0
- package/build/cjs/react.cjs +15 -0
- package/build/cjs/server/ServerContext.cjs +1 -1
- package/build/cjs/server/preload.cjs +1 -1
- package/build/cjs/server/request-router.cjs +215 -231
- package/build/cjs/{server/index.cjs → server.cjs} +26 -52
- package/build/cjs/signals.cjs +51 -0
- package/build/cjs/static/StaticContext.cjs +1 -1
- package/build/cjs/static/index.cjs +43 -51
- package/build/cjs/static/render.cjs +1 -1
- package/build/cjs/testing.cjs +6 -34
- package/build/esm/assets.mjs +2 -0
- package/build/esm/async.mjs +3 -0
- package/build/esm/events.mjs +1 -0
- package/build/esm/graphql/testing.mjs +1 -1
- package/build/esm/html/HTML.mjs +19 -0
- package/build/esm/html.mjs +3 -1
- package/build/esm/http.mjs +1 -1
- package/build/esm/index.mjs +1 -15
- package/build/esm/localize.mjs +1 -0
- package/build/esm/navigate/testing.mjs +1 -0
- package/build/esm/navigate.mjs +1 -0
- package/build/esm/performance.mjs +1 -0
- package/build/esm/polyfills/fetch-get-set-cookie.mjs +1 -0
- package/build/esm/react/testing.mjs +3 -0
- package/build/esm/react/tools.mjs +2 -0
- package/build/esm/react.mjs +2 -0
- package/build/esm/server/ServerContext.mjs +2 -2
- package/build/esm/server/preload.mjs +2 -2
- package/build/esm/server/request-router.mjs +218 -232
- package/build/esm/server.mjs +10 -0
- package/build/esm/signals.mjs +2 -0
- package/build/esm/static/StaticContext.mjs +2 -2
- package/build/esm/static/index.mjs +40 -48
- package/build/esm/static/render.mjs +2 -2
- package/build/esm/testing.mjs +0 -3
- package/build/esnext/assets.esnext +2 -0
- package/build/esnext/async.esnext +3 -0
- package/build/esnext/events.esnext +1 -0
- package/build/esnext/graphql/testing.esnext +1 -1
- package/build/esnext/html/HTML.esnext +19 -0
- package/build/esnext/html.esnext +3 -1
- package/build/esnext/http.esnext +1 -1
- package/build/esnext/index.esnext +1 -15
- package/build/esnext/localize.esnext +1 -0
- package/build/esnext/navigate/testing.esnext +1 -0
- package/build/esnext/navigate.esnext +1 -0
- package/build/esnext/performance.esnext +1 -0
- package/build/esnext/polyfills/fetch-get-set-cookie.esnext +1 -0
- package/build/esnext/react/testing.esnext +3 -0
- package/build/esnext/react/tools.esnext +2 -0
- package/build/esnext/react.esnext +2 -0
- package/build/esnext/server/ServerContext.esnext +2 -2
- package/build/esnext/server/preload.esnext +2 -2
- package/build/esnext/server/request-router.esnext +218 -232
- package/build/esnext/server.esnext +10 -0
- package/build/esnext/signals.esnext +2 -0
- package/build/esnext/static/StaticContext.esnext +2 -2
- package/build/esnext/static/index.esnext +40 -48
- package/build/esnext/static/render.esnext +2 -2
- package/build/esnext/testing.esnext +0 -3
- package/build/tsconfig.tsbuildinfo +1 -1
- package/build/typescript/assets.d.ts +3 -1
- package/build/typescript/assets.d.ts.map +1 -1
- package/build/typescript/async.d.ts +6 -0
- package/build/typescript/async.d.ts.map +1 -0
- package/build/typescript/events.d.ts +3 -0
- package/build/typescript/events.d.ts.map +1 -0
- package/build/typescript/globals.d.ts +8 -0
- package/build/typescript/globals.d.ts.map +1 -0
- package/build/typescript/graphql/testing/matchers/operations.d.ts +7 -0
- package/build/typescript/graphql/testing/matchers/operations.d.ts.map +1 -0
- package/build/typescript/graphql/testing/matchers/utilities.d.ts +8 -0
- package/build/typescript/graphql/testing/matchers/utilities.d.ts.map +1 -0
- package/build/typescript/graphql/testing/matchers.d.ts +11 -0
- package/build/typescript/graphql/testing/matchers.d.ts.map +1 -0
- package/build/typescript/graphql/testing.d.ts +2 -1
- package/build/typescript/graphql/testing.d.ts.map +1 -1
- package/build/typescript/html/HTML.d.ts +5 -0
- package/build/typescript/html/HTML.d.ts.map +1 -0
- package/build/typescript/html.d.ts +3 -1
- package/build/typescript/html.d.ts.map +1 -1
- package/build/typescript/http.d.ts +1 -1
- package/build/typescript/http.d.ts.map +1 -1
- package/build/typescript/index.d.ts +1 -24
- package/build/typescript/index.d.ts.map +1 -1
- package/build/typescript/localize.d.ts +3 -0
- package/build/typescript/localize.d.ts.map +1 -0
- package/build/typescript/magic/assets.d.ts +4 -2
- package/build/typescript/magic/assets.d.ts.map +1 -1
- package/build/typescript/navigate/testing.d.ts +2 -0
- package/build/typescript/navigate/testing.d.ts.map +1 -0
- package/build/typescript/navigate.d.ts +3 -0
- package/build/typescript/navigate.d.ts.map +1 -0
- package/build/typescript/performance.d.ts +3 -0
- package/build/typescript/performance.d.ts.map +1 -0
- package/build/typescript/polyfills/fetch-get-set-cookie.d.ts +2 -0
- package/build/typescript/polyfills/fetch-get-set-cookie.d.ts.map +1 -0
- package/build/typescript/react/testing.d.ts +5 -0
- package/build/typescript/react/testing.d.ts.map +1 -0
- package/build/typescript/react/tools.d.ts +3 -0
- package/build/typescript/react/tools.d.ts.map +1 -0
- package/build/typescript/react-dom.d.ts +3 -0
- package/build/typescript/react-dom.d.ts.map +1 -0
- package/build/typescript/react.d.ts +3 -0
- package/build/typescript/react.d.ts.map +1 -0
- package/build/typescript/routing.d.ts +3 -0
- package/build/typescript/routing.d.ts.map +1 -0
- package/build/typescript/server/ServerContext.d.ts +2 -2
- package/build/typescript/server/request-router.d.ts +13 -37
- package/build/typescript/server/request-router.d.ts.map +1 -1
- package/build/typescript/server.d.ts +14 -0
- package/build/typescript/server.d.ts.map +1 -0
- package/build/typescript/signals.d.ts +3 -0
- package/build/typescript/signals.d.ts.map +1 -0
- package/build/typescript/static/StaticContext.d.ts +2 -2
- package/build/typescript/static/index.d.ts.map +1 -1
- package/build/typescript/static/render.d.ts +2 -2
- package/build/typescript/testing.d.ts +0 -4
- package/build/typescript/testing.d.ts.map +1 -1
- package/package.json +158 -54
- package/source/assets.ts +20 -2
- package/source/async.ts +17 -0
- package/source/events.ts +20 -0
- package/source/graphql/testing/matchers.ts +37 -0
- package/source/graphql/testing.ts +3 -2
- package/source/html/HTML.tsx +22 -0
- package/source/html.ts +15 -3
- package/source/http.ts +4 -0
- package/source/index.ts +1 -149
- package/source/localize.ts +21 -0
- package/source/magic/assets.ts +7 -4
- package/source/navigate/testing.ts +1 -0
- package/source/navigate.ts +24 -0
- package/source/performance.ts +12 -0
- package/source/polyfills/fetch-get-set-cookie.ts +1 -0
- package/source/react/testing.ts +30 -0
- package/source/react/tools.ts +2 -0
- package/source/routing.ts +24 -0
- package/source/server/ServerContext.tsx +3 -3
- package/source/server/preload.ts +2 -2
- package/source/server/request-router.tsx +281 -403
- package/source/{server/index.ts → server.ts} +20 -46
- package/source/signals.ts +12 -0
- package/source/static/StaticContext.tsx +3 -3
- package/source/static/index.tsx +40 -56
- package/source/static/render.tsx +2 -2
- package/source/testing.ts +0 -29
- package/build/cjs/App.cjs +0 -72
- package/build/cjs/TestApp.cjs +0 -20
- package/build/cjs/matchers.cjs +0 -4
- package/build/esm/App.mjs +0 -70
- package/build/esm/TestApp.mjs +0 -18
- package/build/esm/matchers.mjs +0 -1
- package/build/esm/server/index.mjs +0 -10
- package/build/esnext/App.esnext +0 -70
- package/build/esnext/TestApp.esnext +0 -18
- package/build/esnext/matchers.esnext +0 -1
- package/build/esnext/server/index.esnext +0 -10
- package/source/App.tsx +0 -162
- package/source/TestApp.tsx +0 -33
- package/source/matchers/graphql.ts +0 -24
- package/source/matchers.ts +0 -3
- /package/build/cjs/{global.cjs → globals.cjs} +0 -0
- /package/build/esm/{global.mjs → globals.mjs} +0 -0
- /package/build/esnext/{global.esnext → globals.esnext} +0 -0
- /package/source/{global.ts → globals.ts} +0 -0
- /package/source/{matchers/graphql → graphql/testing/matchers}/operations.ts +0 -0
- /package/source/{matchers/graphql → graphql/testing/matchers}/utilities.ts +0 -0
- /package/source/{react-dom/index.ts → react-dom.ts} +0 -0
- /package/source/{react/index.ts → react.ts} +0 -0
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var reactRouter = require('@quilted/react-router');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, 'Link', {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () { return reactRouter.Link; }
|
|
10
|
+
});
|
|
11
|
+
Object.defineProperty(exports, 'NavigationBlock', {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () { return reactRouter.NavigationBlock; }
|
|
14
|
+
});
|
|
15
|
+
Object.defineProperty(exports, 'Redirect', {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function () { return reactRouter.Redirect; }
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, 'RoutePreloading', {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () { return reactRouter.RoutePreloading; }
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports, 'Routing', {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function () { return reactRouter.Routing; }
|
|
26
|
+
});
|
|
27
|
+
Object.defineProperty(exports, 'useCurrentUrl', {
|
|
28
|
+
enumerable: true,
|
|
29
|
+
get: function () { return reactRouter.useCurrentUrl; }
|
|
30
|
+
});
|
|
31
|
+
Object.defineProperty(exports, 'useInitialUrl', {
|
|
32
|
+
enumerable: true,
|
|
33
|
+
get: function () { return reactRouter.useInitialUrl; }
|
|
34
|
+
});
|
|
35
|
+
Object.defineProperty(exports, 'useNavigate', {
|
|
36
|
+
enumerable: true,
|
|
37
|
+
get: function () { return reactRouter.useNavigate; }
|
|
38
|
+
});
|
|
39
|
+
Object.defineProperty(exports, 'useNavigationBlock', {
|
|
40
|
+
enumerable: true,
|
|
41
|
+
get: function () { return reactRouter.useNavigationBlock; }
|
|
42
|
+
});
|
|
43
|
+
Object.defineProperty(exports, 'useRedirect', {
|
|
44
|
+
enumerable: true,
|
|
45
|
+
get: function () { return reactRouter.useRedirect; }
|
|
46
|
+
});
|
|
47
|
+
Object.defineProperty(exports, 'useRouteChangeFocusRef', {
|
|
48
|
+
enumerable: true,
|
|
49
|
+
get: function () { return reactRouter.useRouteChangeFocusRef; }
|
|
50
|
+
});
|
|
51
|
+
Object.defineProperty(exports, 'useRouteMatch', {
|
|
52
|
+
enumerable: true,
|
|
53
|
+
get: function () { return reactRouter.useRouteMatch; }
|
|
54
|
+
});
|
|
55
|
+
Object.defineProperty(exports, 'useRouteMatchDetails', {
|
|
56
|
+
enumerable: true,
|
|
57
|
+
get: function () { return reactRouter.useRouteMatchDetails; }
|
|
58
|
+
});
|
|
59
|
+
Object.defineProperty(exports, 'useRouter', {
|
|
60
|
+
enumerable: true,
|
|
61
|
+
get: function () { return reactRouter.useRouter; }
|
|
62
|
+
});
|
|
63
|
+
Object.defineProperty(exports, 'useRoutes', {
|
|
64
|
+
enumerable: true,
|
|
65
|
+
get: function () { return reactRouter.useRoutes; }
|
|
66
|
+
});
|
|
67
|
+
Object.defineProperty(exports, 'useScrollRestoration', {
|
|
68
|
+
enumerable: true,
|
|
69
|
+
get: function () { return reactRouter.useScrollRestoration; }
|
|
70
|
+
});
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var reactPerformance = require('@quilted/react-performance');
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
Object.defineProperty(exports, 'PerformanceContext', {
|
|
8
|
+
enumerable: true,
|
|
9
|
+
get: function () { return reactPerformance.PerformanceContext; }
|
|
10
|
+
});
|
|
11
|
+
Object.defineProperty(exports, 'createPerformance', {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () { return reactPerformance.createPerformance; }
|
|
14
|
+
});
|
|
15
|
+
Object.defineProperty(exports, 'usePerformance', {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function () { return reactPerformance.usePerformance; }
|
|
18
|
+
});
|
|
19
|
+
Object.defineProperty(exports, 'usePerformanceNavigation', {
|
|
20
|
+
enumerable: true,
|
|
21
|
+
get: function () { return reactPerformance.usePerformanceNavigation; }
|
|
22
|
+
});
|
|
23
|
+
Object.defineProperty(exports, 'usePerformanceNavigationEvent', {
|
|
24
|
+
enumerable: true,
|
|
25
|
+
get: function () { return reactPerformance.usePerformanceNavigationEvent; }
|
|
26
|
+
});
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
require('@quilted/react-testing/matchers');
|
|
4
|
+
var testing = require('@quilted/testing');
|
|
5
|
+
var reactTesting = require('@quilted/react-testing');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
Object.defineProperty(exports, 'createRender', {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () { return reactTesting.createRender; }
|
|
12
|
+
});
|
|
13
|
+
Object.defineProperty(exports, 'destroyAll', {
|
|
14
|
+
enumerable: true,
|
|
15
|
+
get: function () { return reactTesting.destroyAll; }
|
|
16
|
+
});
|
|
17
|
+
Object.defineProperty(exports, 'render', {
|
|
18
|
+
enumerable: true,
|
|
19
|
+
get: function () { return reactTesting.render; }
|
|
20
|
+
});
|
|
21
|
+
Object.defineProperty(exports, 'rendered', {
|
|
22
|
+
enumerable: true,
|
|
23
|
+
get: function () { return reactTesting.rendered; }
|
|
24
|
+
});
|
|
25
|
+
Object.keys(testing).forEach(function (k) {
|
|
26
|
+
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
27
|
+
enumerable: true,
|
|
28
|
+
get: function () { return testing[k]; }
|
|
29
|
+
});
|
|
30
|
+
});
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
var usefulReactTypes = require('@quilted/useful-react-types');
|
|
4
|
+
var reactUtilities = require('@quilted/react-utilities');
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
Object.keys(usefulReactTypes).forEach(function (k) {
|
|
9
|
+
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
10
|
+
enumerable: true,
|
|
11
|
+
get: function () { return usefulReactTypes[k]; }
|
|
12
|
+
});
|
|
13
|
+
});
|
|
14
|
+
Object.keys(reactUtilities).forEach(function (k) {
|
|
15
|
+
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
16
|
+
enumerable: true,
|
|
17
|
+
get: function () { return reactUtilities[k]; }
|
|
18
|
+
});
|
|
19
|
+
});
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, '__esModule', { value: true });
|
|
4
|
+
|
|
5
|
+
var react = require('@quilted/react');
|
|
6
|
+
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
exports["default"] = react;
|
|
10
|
+
Object.keys(react).forEach(function (k) {
|
|
11
|
+
if (k !== 'default' && !Object.prototype.hasOwnProperty.call(exports, k)) Object.defineProperty(exports, k, {
|
|
12
|
+
enumerable: true,
|
|
13
|
+
get: function () { return react[k]; }
|
|
14
|
+
});
|
|
15
|
+
});
|
|
@@ -14,7 +14,7 @@ function ServerContext({
|
|
|
14
14
|
children
|
|
15
15
|
}) {
|
|
16
16
|
const normalizedUrl = typeof url === 'string' ? new URL(url) : url;
|
|
17
|
-
return react.maybeWrapContext(server$2.AssetsContext, assets, react.maybeWrapContext(server.HttpServerContext, http, react.maybeWrapContext(server$1.
|
|
17
|
+
return react.maybeWrapContext(server$2.AssetsContext, assets, react.maybeWrapContext(server.HttpServerContext, http, react.maybeWrapContext(server$1.HTMLContext, html, react.maybeWrapContext(reactRouter.InitialUrlContext, normalizedUrl, children))));
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
exports.ServerContext = ServerContext;
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
'use strict';
|
|
2
2
|
|
|
3
3
|
var react = require('react');
|
|
4
|
+
var server$4 = require('react-dom/server');
|
|
4
5
|
var assets = require('@quilted/assets');
|
|
5
6
|
var server$2 = require('@quilted/react-assets/server');
|
|
6
7
|
var server$1 = require('@quilted/react-http/server');
|
|
@@ -10,250 +11,224 @@ var requestRouter = require('@quilted/request-router');
|
|
|
10
11
|
var ServerContext = require('./ServerContext.cjs');
|
|
11
12
|
var jsxRuntime = require('react/jsx-runtime');
|
|
12
13
|
|
|
13
|
-
function
|
|
14
|
-
let
|
|
14
|
+
async function renderToResponse(optionsOrElement, definitelyOptions) {
|
|
15
|
+
let element;
|
|
15
16
|
let options;
|
|
16
|
-
if (
|
|
17
|
-
|
|
18
|
-
options =
|
|
17
|
+
if ( /*#__PURE__*/react.isValidElement(optionsOrElement)) {
|
|
18
|
+
element = optionsOrElement;
|
|
19
|
+
options = definitelyOptions;
|
|
19
20
|
} else {
|
|
20
|
-
options =
|
|
21
|
+
options = optionsOrElement;
|
|
21
22
|
}
|
|
22
|
-
const stream = options.stream;
|
|
23
|
-
return async (request, requestContext) => {
|
|
24
|
-
const accepts = request.headers.get('Accept');
|
|
25
|
-
if (accepts != null && !accepts.includes('text/html')) return;
|
|
26
|
-
const renderResponse = stream ? renderAppToStreamedResponse : renderAppToResponse;
|
|
27
|
-
return renderResponse(typeof getApp === 'function' ? () => getApp(request, requestContext) : getApp, {
|
|
28
|
-
...options,
|
|
29
|
-
request,
|
|
30
|
-
context: requestContext,
|
|
31
|
-
extract: {
|
|
32
|
-
...options.extract,
|
|
33
|
-
context: typeof options.extract?.context === 'function' ? options.extract.context(request, requestContext) : options.extract?.context
|
|
34
|
-
}
|
|
35
|
-
});
|
|
36
|
-
};
|
|
37
|
-
}
|
|
38
|
-
async function renderAppToResponse(getApp, {
|
|
39
|
-
request,
|
|
40
|
-
context,
|
|
41
|
-
assets,
|
|
42
|
-
extract,
|
|
43
|
-
html: htmlOptions
|
|
44
|
-
}) {
|
|
45
|
-
const app = typeof getApp === 'function' ? await getApp() : getApp;
|
|
46
|
-
const cacheKey = await assets?.cacheKey?.(request);
|
|
47
|
-
const renderDetails = await serverRenderDetailsForApp(app, {
|
|
48
|
-
extract,
|
|
49
|
-
cacheKey,
|
|
50
|
-
url: request.url,
|
|
51
|
-
headers: request.headers
|
|
52
|
-
});
|
|
53
23
|
const {
|
|
54
|
-
headers,
|
|
55
|
-
statusCode = 200,
|
|
56
|
-
redirectUrl
|
|
57
|
-
} = renderDetails.http.state;
|
|
58
|
-
if (redirectUrl) {
|
|
59
|
-
return requestRouter.redirect(redirectUrl, {
|
|
60
|
-
status: statusCode,
|
|
61
|
-
headers
|
|
62
|
-
});
|
|
63
|
-
}
|
|
64
|
-
const content = await renderAppDetailsToHtmlString(renderDetails, {
|
|
65
24
|
request,
|
|
66
|
-
|
|
67
|
-
assets,
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
25
|
+
stream: shouldStream = false,
|
|
26
|
+
assets: assets$1,
|
|
27
|
+
cacheKey: explicitCacheKey,
|
|
28
|
+
waitUntil = noop,
|
|
29
|
+
renderHTML
|
|
30
|
+
} = options;
|
|
31
|
+
const baseUrl = request.URL ?? new URL(request.url);
|
|
32
|
+
const cacheKey = explicitCacheKey ?? (await assets$1?.cacheKey?.(request)) ?? {};
|
|
33
|
+
const html = new server.HTMLManager();
|
|
34
|
+
const http = new server$1.HttpManager({
|
|
35
|
+
headers: request.headers
|
|
73
36
|
});
|
|
74
|
-
|
|
75
|
-
async function renderAppToStreamedResponse(getApp, {
|
|
76
|
-
request,
|
|
77
|
-
context,
|
|
78
|
-
assets: assets$1,
|
|
79
|
-
extract,
|
|
80
|
-
html: htmlOptions
|
|
81
|
-
}) {
|
|
82
|
-
const headers = new Headers();
|
|
83
|
-
const stream = new TransformStream();
|
|
84
|
-
const cacheKey = await assets$1?.cacheKey?.(request);
|
|
85
|
-
const guaranteedAssets = await assets$1?.entry({
|
|
37
|
+
const assetsManager = new server$2.AssetsManager({
|
|
86
38
|
cacheKey
|
|
87
39
|
});
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
40
|
+
let responseStatus = 200;
|
|
41
|
+
let appHeaders;
|
|
42
|
+
let appStream;
|
|
43
|
+
if (shouldStream === false && element != null) {
|
|
44
|
+
const rendered = await server$3.extract(element, {
|
|
45
|
+
decorate(element) {
|
|
46
|
+
return /*#__PURE__*/jsxRuntime.jsx(ServerContext.ServerContext, {
|
|
47
|
+
http: http,
|
|
48
|
+
html: html,
|
|
49
|
+
url: baseUrl,
|
|
50
|
+
assets: assetsManager,
|
|
51
|
+
children: element
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
const {
|
|
56
|
+
headers,
|
|
57
|
+
statusCode = 200,
|
|
58
|
+
redirectUrl
|
|
59
|
+
} = http.state;
|
|
60
|
+
if (redirectUrl) {
|
|
61
|
+
return new requestRouter.RedirectResponse(redirectUrl, {
|
|
62
|
+
status: statusCode,
|
|
63
|
+
headers,
|
|
64
|
+
request
|
|
65
|
+
});
|
|
94
66
|
}
|
|
67
|
+
appHeaders = headers;
|
|
68
|
+
responseStatus = statusCode;
|
|
69
|
+
const appTransformStream = new TransformStream();
|
|
70
|
+
const appWriter = appTransformStream.writable.getWriter();
|
|
71
|
+
appStream = appTransformStream.readable;
|
|
72
|
+
appWriter.write(rendered);
|
|
73
|
+
appWriter.close();
|
|
95
74
|
}
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
await writer.close();
|
|
75
|
+
if (appStream == null) {
|
|
76
|
+
const appTransformStream = new TransformStream();
|
|
77
|
+
appStream = appTransformStream.readable;
|
|
78
|
+
const renderAppStream = async function renderAppStream() {
|
|
79
|
+
const appWriter = appTransformStream.writable.getWriter();
|
|
80
|
+
if (element != null) {
|
|
81
|
+
const rendered = await server$3.extract(element, {
|
|
82
|
+
decorate(element) {
|
|
83
|
+
return /*#__PURE__*/jsxRuntime.jsx(ServerContext.ServerContext, {
|
|
84
|
+
http: http,
|
|
85
|
+
html: html,
|
|
86
|
+
url: baseUrl,
|
|
87
|
+
assets: assetsManager,
|
|
88
|
+
children: element
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
appWriter.write(rendered);
|
|
93
|
+
}
|
|
94
|
+
appWriter.close();
|
|
95
|
+
};
|
|
96
|
+
waitUntil(renderAppStream());
|
|
119
97
|
}
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
} = {}) {
|
|
127
|
-
const html = new server.HtmlManager();
|
|
128
|
-
const http = new server$1.HttpManager({
|
|
98
|
+
const {
|
|
99
|
+
headers,
|
|
100
|
+
body
|
|
101
|
+
} = await renderToHTMLStream(appStream);
|
|
102
|
+
return new requestRouter.HTMLResponse(body, {
|
|
103
|
+
status: responseStatus,
|
|
129
104
|
headers
|
|
130
105
|
});
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
106
|
+
async function renderToHTMLStream(content) {
|
|
107
|
+
const headers = new Headers(appHeaders);
|
|
108
|
+
const [synchronousAssets, preloadAssets] = await Promise.all([assets$1?.entry({
|
|
109
|
+
cacheKey,
|
|
110
|
+
modules: assetsManager.usedModules({
|
|
111
|
+
timing: 'load'
|
|
112
|
+
})
|
|
113
|
+
}), assets$1?.modules(assetsManager.usedModules({
|
|
114
|
+
timing: 'preload'
|
|
115
|
+
}), {
|
|
116
|
+
cacheKey
|
|
117
|
+
})]);
|
|
118
|
+
if (synchronousAssets) {
|
|
119
|
+
for (const style of synchronousAssets.styles) {
|
|
120
|
+
headers.append('Link', preloadHeader(assets.styleAssetPreloadAttributes(style)));
|
|
121
|
+
}
|
|
122
|
+
for (const script of synchronousAssets.scripts) {
|
|
123
|
+
headers.append('Link', preloadHeader(assets.scriptAssetPreloadAttributes(script)));
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
if (renderHTML) {
|
|
127
|
+
const body = await renderHTML(content, {
|
|
128
|
+
manager: html,
|
|
129
|
+
assets: synchronousAssets,
|
|
130
|
+
preloadAssets
|
|
146
131
|
});
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
132
|
+
return {
|
|
133
|
+
headers,
|
|
134
|
+
body
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
const responseStream = new TextEncoderStream();
|
|
138
|
+
const body = responseStream.readable;
|
|
139
|
+
const renderFullHTML = async function renderFullHTML() {
|
|
140
|
+
const writer = responseStream.writable.getWriter();
|
|
141
|
+
writer.write(`<!DOCTYPE html>`);
|
|
142
|
+
const {
|
|
143
|
+
htmlAttributes,
|
|
144
|
+
bodyAttributes,
|
|
145
|
+
...headProps
|
|
146
|
+
} = html.state;
|
|
147
|
+
const htmlContent = server$4.renderToStaticMarkup(
|
|
148
|
+
/*#__PURE__*/
|
|
149
|
+
// eslint-disable-next-line jsx-a11y/html-has-lang
|
|
150
|
+
jsxRuntime.jsxs("html", {
|
|
151
|
+
...htmlAttributes,
|
|
152
|
+
children: [/*#__PURE__*/jsxRuntime.jsxs("head", {
|
|
153
|
+
children: [/*#__PURE__*/jsxRuntime.jsx(server.Head, {
|
|
154
|
+
...headProps
|
|
155
|
+
}), synchronousAssets?.scripts.map(script => /*#__PURE__*/jsxRuntime.jsx(server.Script, {
|
|
156
|
+
asset: script,
|
|
157
|
+
baseUrl: baseUrl
|
|
158
|
+
}, script.source)), synchronousAssets?.styles.map(style => /*#__PURE__*/jsxRuntime.jsx(server.Style, {
|
|
159
|
+
asset: style,
|
|
160
|
+
baseUrl: baseUrl
|
|
161
|
+
}, style.source)), preloadAssets?.styles.map(style => /*#__PURE__*/jsxRuntime.jsx(server.StylePreload, {
|
|
162
|
+
asset: style,
|
|
163
|
+
baseUrl: baseUrl
|
|
164
|
+
}, style.source)), preloadAssets?.scripts.map(script => /*#__PURE__*/jsxRuntime.jsx(server.ScriptPreload, {
|
|
165
|
+
asset: script,
|
|
166
|
+
baseUrl: baseUrl
|
|
167
|
+
}, script.source))]
|
|
168
|
+
}), /*#__PURE__*/jsxRuntime.jsx("body", {
|
|
169
|
+
...bodyAttributes,
|
|
170
|
+
dangerouslySetInnerHTML: {
|
|
171
|
+
__html: '%%CONTENT%%'
|
|
172
|
+
}
|
|
173
|
+
})]
|
|
174
|
+
}));
|
|
175
|
+
const [firstChunk, secondChunk] = htmlContent.split('%%CONTENT%%');
|
|
176
|
+
writer.write(firstChunk);
|
|
177
|
+
if (element != null) writer.write(`<div id="app">`);
|
|
178
|
+
const reader = content.getReader();
|
|
179
|
+
|
|
180
|
+
// eslint-disable-next-line no-constant-condition
|
|
181
|
+
while (true) {
|
|
182
|
+
const {
|
|
183
|
+
done,
|
|
184
|
+
value
|
|
185
|
+
} = await reader.read();
|
|
186
|
+
if (done) {
|
|
187
|
+
break;
|
|
188
|
+
}
|
|
189
|
+
writer.write(value);
|
|
190
|
+
}
|
|
191
|
+
if (element != null) writer.write(`</div>`);
|
|
192
|
+
const [newSynchronousAssets, newPreloadAssets] = await Promise.all([assets$1?.entry({
|
|
193
|
+
cacheKey,
|
|
194
|
+
modules: assetsManager.usedModules({
|
|
195
|
+
timing: 'load'
|
|
196
|
+
})
|
|
197
|
+
}), assets$1?.modules(assetsManager.usedModules({
|
|
198
|
+
timing: 'preload'
|
|
199
|
+
}), {
|
|
200
|
+
cacheKey
|
|
201
|
+
})]);
|
|
202
|
+
if (newSynchronousAssets) {
|
|
203
|
+
const diffedSynchronousAssets = diffBrowserAssetsEntries(newSynchronousAssets, synchronousAssets);
|
|
204
|
+
const diffedPreloadAssets = diffBrowserAssetsEntries(newPreloadAssets, preloadAssets);
|
|
205
|
+
const additionalAssetsContent = server$4.renderToStaticMarkup( /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
206
|
+
children: [diffedSynchronousAssets.scripts.map(script => /*#__PURE__*/jsxRuntime.jsx(server.Script, {
|
|
207
|
+
asset: script,
|
|
208
|
+
baseUrl: baseUrl
|
|
209
|
+
}, script.source)), diffedSynchronousAssets.styles.map(style => /*#__PURE__*/jsxRuntime.jsx(server.Style, {
|
|
210
|
+
asset: style,
|
|
211
|
+
baseUrl: baseUrl
|
|
212
|
+
}, style.source)), diffedPreloadAssets.styles.map(style => /*#__PURE__*/jsxRuntime.jsx(server.StylePreload, {
|
|
213
|
+
asset: style,
|
|
214
|
+
baseUrl: baseUrl
|
|
215
|
+
}, style.source)), diffedPreloadAssets.scripts.map(script => /*#__PURE__*/jsxRuntime.jsx(server.ScriptPreload, {
|
|
216
|
+
asset: script,
|
|
217
|
+
baseUrl: baseUrl
|
|
218
|
+
}, script.source))]
|
|
219
|
+
}));
|
|
220
|
+
writer.write(additionalAssetsContent);
|
|
221
|
+
}
|
|
222
|
+
writer.write(secondChunk);
|
|
223
|
+
writer.close();
|
|
224
|
+
};
|
|
225
|
+
waitUntil(renderFullHTML());
|
|
226
|
+
return {
|
|
227
|
+
headers,
|
|
228
|
+
body
|
|
229
|
+
};
|
|
188
230
|
}
|
|
189
|
-
const htmlElement = await renderHtml(rendered, {
|
|
190
|
-
request,
|
|
191
|
-
context,
|
|
192
|
-
html: htmlManager,
|
|
193
|
-
http,
|
|
194
|
-
assets: entryAssets,
|
|
195
|
-
preloadAssets,
|
|
196
|
-
rootElement
|
|
197
|
-
});
|
|
198
|
-
return server.renderHtmlToString(htmlElement);
|
|
199
231
|
}
|
|
200
|
-
const defaultRenderHtml = function defaultRenderHtml(content, {
|
|
201
|
-
request,
|
|
202
|
-
html,
|
|
203
|
-
assets: assets$1,
|
|
204
|
-
preloadAssets,
|
|
205
|
-
rootElement
|
|
206
|
-
}) {
|
|
207
|
-
const baseUrl = new URL(request.url);
|
|
208
|
-
return /*#__PURE__*/jsxRuntime.jsx(server.Html, {
|
|
209
|
-
manager: html,
|
|
210
|
-
rootElement: rootElement,
|
|
211
|
-
headEndContent: /*#__PURE__*/jsxRuntime.jsxs(jsxRuntime.Fragment, {
|
|
212
|
-
children: [assets$1 && assets$1.styles.map(style => {
|
|
213
|
-
const attributes = assets.styleAssetAttributes(style, {
|
|
214
|
-
baseUrl
|
|
215
|
-
});
|
|
216
|
-
return /*#__PURE__*/jsxRuntime.jsx("link", {
|
|
217
|
-
...attributes
|
|
218
|
-
}, style.source);
|
|
219
|
-
}), assets$1 && assets$1.scripts.map(script => {
|
|
220
|
-
const isModule = script.attributes?.type === 'module';
|
|
221
|
-
const attributes = assets.scriptAssetAttributes(script, {
|
|
222
|
-
baseUrl
|
|
223
|
-
});
|
|
224
|
-
if (isModule) {
|
|
225
|
-
return /*#__PURE__*/jsxRuntime.jsxs(react.Fragment, {
|
|
226
|
-
children: [/*#__PURE__*/jsxRuntime.jsx("link", {
|
|
227
|
-
...assets.scriptAssetPreloadAttributes(script)
|
|
228
|
-
}), /*#__PURE__*/jsxRuntime.jsx("script", {
|
|
229
|
-
...attributes,
|
|
230
|
-
async: true
|
|
231
|
-
})]
|
|
232
|
-
}, script.source);
|
|
233
|
-
}
|
|
234
|
-
return /*#__PURE__*/jsxRuntime.jsx("script", {
|
|
235
|
-
...attributes,
|
|
236
|
-
defer: true
|
|
237
|
-
}, script.source);
|
|
238
|
-
}), preloadAssets && preloadAssets.styles.map(style => {
|
|
239
|
-
const attributes = assets.styleAssetPreloadAttributes(style, {
|
|
240
|
-
baseUrl
|
|
241
|
-
});
|
|
242
|
-
return /*#__PURE__*/jsxRuntime.jsx("link", {
|
|
243
|
-
...attributes
|
|
244
|
-
}, style.source);
|
|
245
|
-
}), preloadAssets && preloadAssets.scripts.map(script => {
|
|
246
|
-
const attributes = assets.scriptAssetPreloadAttributes(script, {
|
|
247
|
-
baseUrl
|
|
248
|
-
});
|
|
249
|
-
return /*#__PURE__*/jsxRuntime.jsx("link", {
|
|
250
|
-
...attributes
|
|
251
|
-
}, script.source);
|
|
252
|
-
})]
|
|
253
|
-
}),
|
|
254
|
-
children: content
|
|
255
|
-
});
|
|
256
|
-
};
|
|
257
232
|
function preloadHeader(attributes) {
|
|
258
233
|
const {
|
|
259
234
|
as,
|
|
@@ -273,7 +248,16 @@ function preloadHeader(attributes) {
|
|
|
273
248
|
}
|
|
274
249
|
return header;
|
|
275
250
|
}
|
|
251
|
+
function diffBrowserAssetsEntries(newList, oldList) {
|
|
252
|
+
const oldStyles = new Set(oldList.styles.map(style => style.source));
|
|
253
|
+
const oldScripts = new Set(oldList.scripts.map(script => script.source));
|
|
254
|
+
return {
|
|
255
|
+
styles: newList.styles.filter(style => !oldStyles.has(style.source)),
|
|
256
|
+
scripts: newList.scripts.filter(script => !oldScripts.has(script.source))
|
|
257
|
+
};
|
|
258
|
+
}
|
|
259
|
+
function noop(..._args) {
|
|
260
|
+
// noop
|
|
261
|
+
}
|
|
276
262
|
|
|
277
|
-
exports.
|
|
278
|
-
exports.renderAppToResponse = renderAppToResponse;
|
|
279
|
-
exports.renderAppToStreamedResponse = renderAppToStreamedResponse;
|
|
263
|
+
exports.renderToResponse = renderToResponse;
|