@modern-js/runtime 2.63.1 → 2.63.3
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/dist/cjs/core/server/requestHandler.js +2 -3
- package/dist/cjs/core/server/stream/afterTemplate.js +3 -6
- package/dist/cjs/core/server/string/index.js +2 -1
- package/dist/cjs/core/server/string/loadable.js +13 -3
- package/dist/cjs/core/server/string/ssrData.js +5 -7
- package/dist/cjs/core/server/utils.js +0 -8
- package/dist/cjs/router/runtime/DeferredDataScripts.node.js +4 -4
- package/dist/cjs/router/runtime/plugin.node.js +2 -2
- package/dist/esm/core/server/requestHandler.js +3 -4
- package/dist/esm/core/server/stream/afterTemplate.js +4 -5
- package/dist/esm/core/server/string/index.js +2 -1
- package/dist/esm/core/server/string/loadable.js +17 -5
- package/dist/esm/core/server/string/ssrData.js +4 -6
- package/dist/esm/core/server/utils.js +0 -8
- package/dist/esm/router/runtime/DeferredDataScripts.node.js +4 -4
- package/dist/esm/router/runtime/plugin.node.js +2 -2
- package/dist/esm-node/core/server/requestHandler.js +3 -4
- package/dist/esm-node/core/server/stream/afterTemplate.js +4 -7
- package/dist/esm-node/core/server/string/index.js +2 -1
- package/dist/esm-node/core/server/string/loadable.js +13 -3
- package/dist/esm-node/core/server/string/ssrData.js +6 -8
- package/dist/esm-node/core/server/utils.js +0 -7
- package/dist/esm-node/router/runtime/DeferredDataScripts.node.js +4 -4
- package/dist/esm-node/router/runtime/plugin.node.js +2 -2
- package/dist/types/core/server/string/loadable.d.ts +3 -2
- package/dist/types/core/server/string/ssrData.d.ts +1 -0
- package/dist/types/core/server/utils.d.ts +0 -1
- package/dist/types/core/types.d.ts +1 -1
- package/dist/types/router/runtime/DeferredDataScripts.node.d.ts +1 -1
- package/package.json +12 -12
|
@@ -31,7 +31,7 @@ var import_constants = require("./constants");
|
|
|
31
31
|
var import_utils = require("./utils");
|
|
32
32
|
function createSSRContext(request, options) {
|
|
33
33
|
const { config, loaderContext, onError, onTiming, locals, resource, params, responseProxy, logger, metrics, reporter } = options;
|
|
34
|
-
const { nonce } = config;
|
|
34
|
+
const { nonce, useJsonScript } = config;
|
|
35
35
|
const { entryName, route } = resource;
|
|
36
36
|
const { headers } = request;
|
|
37
37
|
const cookie = headers.get("cookie") || "";
|
|
@@ -47,10 +47,10 @@ function createSSRContext(request, options) {
|
|
|
47
47
|
}
|
|
48
48
|
const ssrConfig = (0, import_utils.getSSRConfigByEntry)(entryName, config.ssr, config.ssrByEntries);
|
|
49
49
|
const ssrMode = (0, import_utils.getSSRMode)(ssrConfig);
|
|
50
|
-
const inlineScript = (0, import_utils.getSSRInlineScript)(ssrConfig);
|
|
51
50
|
const loaderFailureMode = typeof ssrConfig === "object" ? ssrConfig.loaderFailureMode : void 0;
|
|
52
51
|
return {
|
|
53
52
|
nonce,
|
|
53
|
+
useJsonScript,
|
|
54
54
|
loaderContext,
|
|
55
55
|
redirection: {},
|
|
56
56
|
htmlModifiers: [],
|
|
@@ -80,7 +80,6 @@ function createSSRContext(request, options) {
|
|
|
80
80
|
},
|
|
81
81
|
reporter,
|
|
82
82
|
mode: ssrMode,
|
|
83
|
-
inlineScript,
|
|
84
83
|
onError,
|
|
85
84
|
onTiming,
|
|
86
85
|
loaderFailureMode
|
|
@@ -33,6 +33,7 @@ function buildShellAfterTemplate(afterAppTemplate, options) {
|
|
|
33
33
|
request,
|
|
34
34
|
ssrConfig,
|
|
35
35
|
nonce: config.nonce,
|
|
36
|
+
useJsonScript: config.useJsonScript,
|
|
36
37
|
runtimeContext,
|
|
37
38
|
renderLevel
|
|
38
39
|
}),
|
|
@@ -57,7 +58,7 @@ function buildShellAfterTemplate(afterAppTemplate, options) {
|
|
|
57
58
|
return (0, import_shared.buildHtml)(afterAppTemplate, callbacks);
|
|
58
59
|
}
|
|
59
60
|
function createReplaceSSRData(options) {
|
|
60
|
-
const { runtimeContext, nonce, renderLevel, ssrConfig } = options;
|
|
61
|
+
const { runtimeContext, nonce, renderLevel, useJsonScript, ssrConfig } = options;
|
|
61
62
|
const { request, reporter } = runtimeContext.ssrContext;
|
|
62
63
|
const headers = typeof ssrConfig === "object" && ssrConfig.unsafeHeaders ? Object.fromEntries(Object.entries(request.headers).filter(([key, _]) => {
|
|
63
64
|
var _ssrConfig_unsafeHeaders_map, _ssrConfig_unsafeHeaders;
|
|
@@ -87,12 +88,8 @@ function createReplaceSSRData(options) {
|
|
|
87
88
|
const attrsStr = (0, import_utils.attributesToString)({
|
|
88
89
|
nonce
|
|
89
90
|
});
|
|
90
|
-
const inlineScript = (0, import_utils.getSSRInlineScript)(ssrConfig);
|
|
91
|
-
const useInlineScript = inlineScript !== false;
|
|
92
91
|
const serializeSSRData = (0, import_node.serializeJson)(ssrData);
|
|
93
|
-
const ssrDataScript =
|
|
94
|
-
<script${attrsStr}>window._SSR_DATA = ${serializeSSRData}</script>
|
|
95
|
-
` : `<script type="application/json" id="${import_constants.SSR_DATA_JSON_ID}">${serializeSSRData}</script>`;
|
|
92
|
+
const ssrDataScript = useJsonScript ? `<script type="application/json" id="${import_constants.SSR_DATA_JSON_ID}">${serializeSSRData}</script>` : `<script${attrsStr}>window._SSR_DATA = ${serializeSSRData}</script>`;
|
|
96
93
|
return (template) => (0, import_utils.safeReplace)(template, import_constants2.SSR_DATA_PLACEHOLDER, ssrDataScript);
|
|
97
94
|
}
|
|
98
95
|
// Annotate the CommonJS export names for ESM import in node:
|
|
@@ -91,7 +91,8 @@ const renderString = async (request, serverRoot, options) => {
|
|
|
91
91
|
ssrContext: runtimeContext.ssrContext,
|
|
92
92
|
chunkSet,
|
|
93
93
|
routerContext,
|
|
94
|
-
nonce: config.nonce
|
|
94
|
+
nonce: config.nonce,
|
|
95
|
+
useJsonScript: config.useJsonScript
|
|
95
96
|
})
|
|
96
97
|
];
|
|
97
98
|
const rootElement = (0, import_wrapper.wrapRuntimeContextProvider)(serverRoot, Object.assign(runtimeContext, {
|
|
@@ -80,8 +80,18 @@ class LoadableCollector {
|
|
|
80
80
|
if (!this.extractor) {
|
|
81
81
|
return;
|
|
82
82
|
}
|
|
83
|
-
const { extractor } = this;
|
|
84
|
-
const
|
|
83
|
+
const { extractor, options } = this;
|
|
84
|
+
const { entryName, config } = options;
|
|
85
|
+
const asyncChunks = [];
|
|
86
|
+
if (config.enableAsyncEntry) {
|
|
87
|
+
try {
|
|
88
|
+
asyncChunks.push(...extractor.getChunkAssets([
|
|
89
|
+
`async-${entryName}`
|
|
90
|
+
]));
|
|
91
|
+
} catch (e) {
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
const chunks = [].concat(asyncChunks).concat(extractor.getChunkAssets(extractor.chunks));
|
|
85
95
|
const scriptChunks = generateChunks(chunks, "js");
|
|
86
96
|
const styleChunks = generateChunks(chunks, "css");
|
|
87
97
|
this.emitLoadableScripts(extractor);
|
|
@@ -132,7 +142,7 @@ class LoadableCollector {
|
|
|
132
142
|
chunkSet.jsChunk += scripts.filter((script) => Boolean(script)).join("");
|
|
133
143
|
}
|
|
134
144
|
async emitStyleAssets(chunks) {
|
|
135
|
-
const { template, chunkSet, config } = this.options;
|
|
145
|
+
const { template, chunkSet, config, entryName } = this.options;
|
|
136
146
|
const { enableInlineStyles } = config;
|
|
137
147
|
const atrributes = (0, import_utils.attributesToString)(this.generateAttributes());
|
|
138
148
|
const linkRegExp = /<link .*?href="([^"]+)".*?>/g;
|
|
@@ -78,19 +78,17 @@ function getSSRData() {
|
|
|
78
78
|
};
|
|
79
79
|
}
|
|
80
80
|
function getSSRDataScripts(ssrData, routerData) {
|
|
81
|
-
const { nonce,
|
|
82
|
-
const inlineScript = (0, import_utils.getSSRInlineScript)(ssrConfig);
|
|
83
|
-
const useInlineScript = inlineScript !== false;
|
|
81
|
+
const { nonce, useJsonScript = false } = (0, import_class_private_field_get._)(this, _options);
|
|
84
82
|
const serializeSSRData = (0, import_node.serializeJson)(ssrData);
|
|
85
83
|
const attrsStr = (0, import_utils.attributesToString)({
|
|
86
84
|
nonce
|
|
87
85
|
});
|
|
88
|
-
let ssrDataScripts =
|
|
86
|
+
let ssrDataScripts = useJsonScript ? `<script type="application/json" id="${import_constants.SSR_DATA_JSON_ID}">${serializeSSRData}</script>` : `<script${attrsStr}>window._SSR_DATA = ${serializeSSRData}</script>`;
|
|
89
87
|
if (routerData) {
|
|
90
88
|
const serializedRouterData = (0, import_node.serializeJson)(routerData);
|
|
91
|
-
ssrDataScripts +=
|
|
92
|
-
<script
|
|
93
|
-
<script
|
|
89
|
+
ssrDataScripts += useJsonScript ? `
|
|
90
|
+
<script type="application/json" id="${import_constants.ROUTER_DATA_JSON_ID}">${serializedRouterData}</script>` : `
|
|
91
|
+
<script${attrsStr}>window._ROUTER_DATA = ${serializedRouterData}</script>`;
|
|
94
92
|
}
|
|
95
93
|
return ssrDataScripts;
|
|
96
94
|
}
|
|
@@ -21,7 +21,6 @@ __export(utils_exports, {
|
|
|
21
21
|
attributesToString: () => attributesToString,
|
|
22
22
|
checkIsNode: () => checkIsNode,
|
|
23
23
|
getSSRConfigByEntry: () => getSSRConfigByEntry,
|
|
24
|
-
getSSRInlineScript: () => getSSRInlineScript,
|
|
25
24
|
getSSRMode: () => getSSRMode,
|
|
26
25
|
safeReplace: () => safeReplace,
|
|
27
26
|
serializeErrors: () => serializeErrors
|
|
@@ -76,18 +75,11 @@ function getSSRMode(ssrConfig) {
|
|
|
76
75
|
}
|
|
77
76
|
return (ssrConfig === null || ssrConfig === void 0 ? void 0 : ssrConfig.mode) === "stream" ? "stream" : "string";
|
|
78
77
|
}
|
|
79
|
-
function getSSRInlineScript(ssrConfig) {
|
|
80
|
-
if (typeof ssrConfig === "object") {
|
|
81
|
-
return ssrConfig.inlineScript === void 0 ? true : ssrConfig.inlineScript;
|
|
82
|
-
}
|
|
83
|
-
return true;
|
|
84
|
-
}
|
|
85
78
|
// Annotate the CommonJS export names for ESM import in node:
|
|
86
79
|
0 && (module.exports = {
|
|
87
80
|
attributesToString,
|
|
88
81
|
checkIsNode,
|
|
89
82
|
getSSRConfigByEntry,
|
|
90
|
-
getSSRInlineScript,
|
|
91
83
|
getSSRMode,
|
|
92
84
|
safeReplace,
|
|
93
85
|
serializeErrors
|
|
@@ -30,7 +30,7 @@ var import_constants2 = require("./constants");
|
|
|
30
30
|
var import_utils = require("./utils");
|
|
31
31
|
const DeferredDataScripts = (props) => {
|
|
32
32
|
const staticContext = props === null || props === void 0 ? void 0 : props.context;
|
|
33
|
-
const
|
|
33
|
+
const useJsonScript = props === null || props === void 0 ? void 0 : props.useJsonScript;
|
|
34
34
|
const hydratedRef = (0, import_react.useRef)(false);
|
|
35
35
|
(0, import_react.useEffect)(() => {
|
|
36
36
|
hydratedRef.current = true;
|
|
@@ -44,11 +44,11 @@ const DeferredDataScripts = (props) => {
|
|
|
44
44
|
loaderData: staticContext.loaderData,
|
|
45
45
|
errors: (0, import_utils.serializeErrors)(staticContext.errors)
|
|
46
46
|
};
|
|
47
|
-
const initialScript0 =
|
|
48
|
-
const initialScript1 =
|
|
47
|
+
const initialScript0 = useJsonScript ? `${(0, import_node.serializeJson)(_ROUTER_DATA)}` : "";
|
|
48
|
+
const initialScript1 = useJsonScript ? import_constants2.modernInline : [
|
|
49
49
|
`_ROUTER_DATA = ${(0, import_node.serializeJson)(_ROUTER_DATA)};`,
|
|
50
50
|
import_constants2.modernInline
|
|
51
|
-
].join("\n")
|
|
51
|
+
].join("\n");
|
|
52
52
|
const deferredDataScripts = [];
|
|
53
53
|
const initialScripts = Object.entries(activeDeferreds).map(([routeId, deferredData]) => {
|
|
54
54
|
const pendingKeys = new Set(deferredData.pendingKeys);
|
|
@@ -128,7 +128,7 @@ const routerPlugin = (userConfig = {}) => {
|
|
|
128
128
|
return () => {
|
|
129
129
|
const context = (0, import_react.useContext)(import_core.RuntimeReactContext);
|
|
130
130
|
const { remixRouter, routerContext, ssrContext } = context;
|
|
131
|
-
const { nonce, mode,
|
|
131
|
+
const { nonce, mode, useJsonScript } = ssrContext;
|
|
132
132
|
const routerWrapper = /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, {
|
|
133
133
|
children: [
|
|
134
134
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_router.StaticRouterProvider, {
|
|
@@ -141,7 +141,7 @@ const routerPlugin = (userConfig = {}) => {
|
|
|
141
141
|
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_DeferredDataScripts.default, {
|
|
142
142
|
nonce,
|
|
143
143
|
context: routerContext,
|
|
144
|
-
|
|
144
|
+
useJsonScript
|
|
145
145
|
}),
|
|
146
146
|
mode === "stream" && import_common.JSX_SHELL_STREAM_END_MARK
|
|
147
147
|
]
|
|
@@ -12,10 +12,10 @@ import { createLoaderManager } from "../loader/loaderManager";
|
|
|
12
12
|
import { getGlobalRunner } from "../plugin/runner";
|
|
13
13
|
import { createRoot } from "../react";
|
|
14
14
|
import { CHUNK_CSS_PLACEHOLDER } from "./constants";
|
|
15
|
-
import { getSSRConfigByEntry,
|
|
15
|
+
import { getSSRConfigByEntry, getSSRMode } from "./utils";
|
|
16
16
|
function createSSRContext(request, options) {
|
|
17
17
|
var config = options.config, loaderContext = options.loaderContext, onError = options.onError, onTiming = options.onTiming, locals = options.locals, resource = options.resource, params = options.params, responseProxy = options.responseProxy, logger = options.logger, metrics = options.metrics, reporter = options.reporter;
|
|
18
|
-
var nonce = config.nonce;
|
|
18
|
+
var nonce = config.nonce, useJsonScript = config.useJsonScript;
|
|
19
19
|
var entryName = resource.entryName, route = resource.route;
|
|
20
20
|
var headers = request.headers;
|
|
21
21
|
var cookie = headers.get("cookie") || "";
|
|
@@ -31,10 +31,10 @@ function createSSRContext(request, options) {
|
|
|
31
31
|
}
|
|
32
32
|
var ssrConfig = getSSRConfigByEntry(entryName, config.ssr, config.ssrByEntries);
|
|
33
33
|
var ssrMode = getSSRMode(ssrConfig);
|
|
34
|
-
var inlineScript = getSSRInlineScript(ssrConfig);
|
|
35
34
|
var loaderFailureMode = (typeof ssrConfig === "undefined" ? "undefined" : _type_of(ssrConfig)) === "object" ? ssrConfig.loaderFailureMode : void 0;
|
|
36
35
|
return {
|
|
37
36
|
nonce,
|
|
37
|
+
useJsonScript,
|
|
38
38
|
loaderContext,
|
|
39
39
|
redirection: {},
|
|
40
40
|
htmlModifiers: [],
|
|
@@ -64,7 +64,6 @@ function createSSRContext(request, options) {
|
|
|
64
64
|
},
|
|
65
65
|
reporter,
|
|
66
66
|
mode: ssrMode,
|
|
67
|
-
inlineScript,
|
|
68
67
|
onError,
|
|
69
68
|
onTiming,
|
|
70
69
|
loaderFailureMode
|
|
@@ -6,7 +6,7 @@ import { serializeJson } from "@modern-js/runtime-utils/node";
|
|
|
6
6
|
import { SSR_DATA_JSON_ID } from "../../constants";
|
|
7
7
|
import { SSR_DATA_PLACEHOLDER } from "../constants";
|
|
8
8
|
import { buildHtml } from "../shared";
|
|
9
|
-
import { attributesToString,
|
|
9
|
+
import { attributesToString, safeReplace } from "../utils";
|
|
10
10
|
function buildShellAfterTemplate(afterAppTemplate, options) {
|
|
11
11
|
var request = options.request, config = options.config, ssrConfig = options.ssrConfig, runtimeContext = options.runtimeContext, renderLevel = options.renderLevel, entryName = options.entryName;
|
|
12
12
|
var callbacks = [
|
|
@@ -14,6 +14,7 @@ function buildShellAfterTemplate(afterAppTemplate, options) {
|
|
|
14
14
|
request,
|
|
15
15
|
ssrConfig,
|
|
16
16
|
nonce: config.nonce,
|
|
17
|
+
useJsonScript: config.useJsonScript,
|
|
17
18
|
runtimeContext,
|
|
18
19
|
renderLevel
|
|
19
20
|
}),
|
|
@@ -57,7 +58,7 @@ function buildShellAfterTemplate(afterAppTemplate, options) {
|
|
|
57
58
|
return buildHtml(afterAppTemplate, callbacks);
|
|
58
59
|
}
|
|
59
60
|
function createReplaceSSRData(options) {
|
|
60
|
-
var runtimeContext = options.runtimeContext, nonce = options.nonce, renderLevel = options.renderLevel, ssrConfig = options.ssrConfig;
|
|
61
|
+
var runtimeContext = options.runtimeContext, nonce = options.nonce, renderLevel = options.renderLevel, useJsonScript = options.useJsonScript, ssrConfig = options.ssrConfig;
|
|
61
62
|
var _runtimeContext_ssrContext = runtimeContext.ssrContext, request = _runtimeContext_ssrContext.request, reporter = _runtimeContext_ssrContext.reporter;
|
|
62
63
|
var headers = (typeof ssrConfig === "undefined" ? "undefined" : _type_of(ssrConfig)) === "object" && ssrConfig.unsafeHeaders ? Object.fromEntries(Object.entries(request.headers).filter(function(param) {
|
|
63
64
|
var _param = _sliced_to_array(param, 2), key = _param[0], _ = _param[1];
|
|
@@ -90,10 +91,8 @@ function createReplaceSSRData(options) {
|
|
|
90
91
|
var attrsStr = attributesToString({
|
|
91
92
|
nonce
|
|
92
93
|
});
|
|
93
|
-
var inlineScript = getSSRInlineScript(ssrConfig);
|
|
94
|
-
var useInlineScript = inlineScript !== false;
|
|
95
94
|
var serializeSSRData = serializeJson(ssrData);
|
|
96
|
-
var ssrDataScript =
|
|
95
|
+
var ssrDataScript = useJsonScript ? '<script type="application/json" id="'.concat(SSR_DATA_JSON_ID, '">').concat(serializeSSRData, "</script>") : "<script".concat(attrsStr, ">window._SSR_DATA = ").concat(serializeSSRData, "</script>");
|
|
97
96
|
return function(template) {
|
|
98
97
|
return safeReplace(template, SSR_DATA_PLACEHOLDER, ssrDataScript);
|
|
99
98
|
};
|
|
@@ -90,7 +90,8 @@ var renderString = function() {
|
|
|
90
90
|
ssrContext: runtimeContext.ssrContext,
|
|
91
91
|
chunkSet,
|
|
92
92
|
routerContext,
|
|
93
|
-
nonce: config.nonce
|
|
93
|
+
nonce: config.nonce,
|
|
94
|
+
useJsonScript: config.useJsonScript
|
|
94
95
|
})
|
|
95
96
|
];
|
|
96
97
|
rootElement = wrapRuntimeContextProvider(serverRoot, Object.assign(runtimeContext, {
|
|
@@ -3,6 +3,7 @@ import { _ as _class_call_check } from "@swc/helpers/_/_class_call_check";
|
|
|
3
3
|
import { _ as _create_class } from "@swc/helpers/_/_create_class";
|
|
4
4
|
import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
|
|
5
5
|
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
6
|
+
import { _ as _to_consumable_array } from "@swc/helpers/_/_to_consumable_array";
|
|
6
7
|
import { _ as _ts_generator } from "@swc/helpers/_/_ts_generator";
|
|
7
8
|
import { ChunkExtractor } from "@loadable/server";
|
|
8
9
|
import { attributesToString, checkIsNode } from "../utils";
|
|
@@ -83,7 +84,7 @@ var LoadableCollector = /* @__PURE__ */ function() {
|
|
|
83
84
|
_proto.effect = function effect() {
|
|
84
85
|
var _this = this;
|
|
85
86
|
return _async_to_generator(function() {
|
|
86
|
-
var extractor, chunks, scriptChunks, styleChunks;
|
|
87
|
+
var extractor, options, entryName, config, asyncChunks, _asyncChunks, chunks, scriptChunks, styleChunks;
|
|
87
88
|
return _ts_generator(this, function(_state) {
|
|
88
89
|
switch (_state.label) {
|
|
89
90
|
case 0:
|
|
@@ -92,8 +93,19 @@ var LoadableCollector = /* @__PURE__ */ function() {
|
|
|
92
93
|
2
|
|
93
94
|
];
|
|
94
95
|
}
|
|
95
|
-
extractor = _this.extractor;
|
|
96
|
-
|
|
96
|
+
extractor = _this.extractor, options = _this.options;
|
|
97
|
+
entryName = options.entryName, config = options.config;
|
|
98
|
+
asyncChunks = [];
|
|
99
|
+
if (config.enableAsyncEntry) {
|
|
100
|
+
try {
|
|
101
|
+
;
|
|
102
|
+
(_asyncChunks = asyncChunks).push.apply(_asyncChunks, _to_consumable_array(extractor.getChunkAssets([
|
|
103
|
+
"async-".concat(entryName)
|
|
104
|
+
])));
|
|
105
|
+
} catch (e) {
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
chunks = [].concat(asyncChunks).concat(extractor.getChunkAssets(extractor.chunks));
|
|
97
109
|
scriptChunks = generateChunks(chunks, "js");
|
|
98
110
|
styleChunks = generateChunks(chunks, "css");
|
|
99
111
|
_this.emitLoadableScripts(extractor);
|
|
@@ -220,11 +232,11 @@ var LoadableCollector = /* @__PURE__ */ function() {
|
|
|
220
232
|
_proto.emitStyleAssets = function emitStyleAssets(chunks) {
|
|
221
233
|
var _this = this;
|
|
222
234
|
return _async_to_generator(function() {
|
|
223
|
-
var _this_options, template, chunkSet, config, enableInlineStyles, atrributes, linkRegExp, matchs, existedLinks, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, match, css;
|
|
235
|
+
var _this_options, template, chunkSet, config, entryName, enableInlineStyles, atrributes, linkRegExp, matchs, existedLinks, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, match, css;
|
|
224
236
|
return _ts_generator(this, function(_state) {
|
|
225
237
|
switch (_state.label) {
|
|
226
238
|
case 0:
|
|
227
|
-
_this_options = _this.options, template = _this_options.template, chunkSet = _this_options.chunkSet, config = _this_options.config;
|
|
239
|
+
_this_options = _this.options, template = _this_options.template, chunkSet = _this_options.chunkSet, config = _this_options.config, entryName = _this_options.entryName;
|
|
228
240
|
enableInlineStyles = config.enableInlineStyles;
|
|
229
241
|
atrributes = attributesToString(_this.generateAttributes());
|
|
230
242
|
linkRegExp = /<link .*?href="([^"]+)".*?>/g;
|
|
@@ -8,7 +8,7 @@ import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
|
|
|
8
8
|
import { _ as _type_of } from "@swc/helpers/_/_type_of";
|
|
9
9
|
import { serializeJson } from "@modern-js/runtime-utils/node";
|
|
10
10
|
import { ROUTER_DATA_JSON_ID, SSR_DATA_JSON_ID } from "../../constants";
|
|
11
|
-
import { attributesToString,
|
|
11
|
+
import { attributesToString, serializeErrors } from "../utils";
|
|
12
12
|
var _options = /* @__PURE__ */ new WeakMap(), _getSSRData = /* @__PURE__ */ new WeakSet(), _getSSRDataScripts = /* @__PURE__ */ new WeakSet();
|
|
13
13
|
var SSRDataCollector = /* @__PURE__ */ function() {
|
|
14
14
|
"use strict";
|
|
@@ -65,17 +65,15 @@ function getSSRData() {
|
|
|
65
65
|
};
|
|
66
66
|
}
|
|
67
67
|
function getSSRDataScripts(ssrData, routerData) {
|
|
68
|
-
var _$_class_private_field_get = _class_private_field_get(this, _options), nonce = _$_class_private_field_get.nonce,
|
|
69
|
-
var inlineScript = getSSRInlineScript(ssrConfig);
|
|
70
|
-
var useInlineScript = inlineScript !== false;
|
|
68
|
+
var _$_class_private_field_get = _class_private_field_get(this, _options), nonce = _$_class_private_field_get.nonce, _class_private_field_get_useJsonScript = _$_class_private_field_get.useJsonScript, useJsonScript = _class_private_field_get_useJsonScript === void 0 ? false : _class_private_field_get_useJsonScript;
|
|
71
69
|
var serializeSSRData = serializeJson(ssrData);
|
|
72
70
|
var attrsStr = attributesToString({
|
|
73
71
|
nonce
|
|
74
72
|
});
|
|
75
|
-
var ssrDataScripts =
|
|
73
|
+
var ssrDataScripts = useJsonScript ? '<script type="application/json" id="'.concat(SSR_DATA_JSON_ID, '">').concat(serializeSSRData, "</script>") : "<script".concat(attrsStr, ">window._SSR_DATA = ").concat(serializeSSRData, "</script>");
|
|
76
74
|
if (routerData) {
|
|
77
75
|
var serializedRouterData = serializeJson(routerData);
|
|
78
|
-
ssrDataScripts +=
|
|
76
|
+
ssrDataScripts += useJsonScript ? '\n<script type="application/json" id="'.concat(ROUTER_DATA_JSON_ID, '">').concat(serializedRouterData, "</script>") : "\n<script".concat(attrsStr, ">window._ROUTER_DATA = ").concat(serializedRouterData, "</script>");
|
|
79
77
|
}
|
|
80
78
|
return ssrDataScripts;
|
|
81
79
|
}
|
|
@@ -2,7 +2,6 @@ import { _ as _instanceof } from "@swc/helpers/_/_instanceof";
|
|
|
2
2
|
import { _ as _object_spread } from "@swc/helpers/_/_object_spread";
|
|
3
3
|
import { _ as _object_spread_props } from "@swc/helpers/_/_object_spread_props";
|
|
4
4
|
import { _ as _sliced_to_array } from "@swc/helpers/_/_sliced_to_array";
|
|
5
|
-
import { _ as _type_of } from "@swc/helpers/_/_type_of";
|
|
6
5
|
import { isRouteErrorResponse } from "@modern-js/runtime-utils/remix-router";
|
|
7
6
|
function attributesToString(attributes) {
|
|
8
7
|
return Object.entries(attributes).reduce(function(str, param) {
|
|
@@ -71,17 +70,10 @@ function getSSRMode(ssrConfig) {
|
|
|
71
70
|
}
|
|
72
71
|
return (ssrConfig === null || ssrConfig === void 0 ? void 0 : ssrConfig.mode) === "stream" ? "stream" : "string";
|
|
73
72
|
}
|
|
74
|
-
function getSSRInlineScript(ssrConfig) {
|
|
75
|
-
if ((typeof ssrConfig === "undefined" ? "undefined" : _type_of(ssrConfig)) === "object") {
|
|
76
|
-
return ssrConfig.inlineScript === void 0 ? true : ssrConfig.inlineScript;
|
|
77
|
-
}
|
|
78
|
-
return true;
|
|
79
|
-
}
|
|
80
73
|
export {
|
|
81
74
|
attributesToString,
|
|
82
75
|
checkIsNode,
|
|
83
76
|
getSSRConfigByEntry,
|
|
84
|
-
getSSRInlineScript,
|
|
85
77
|
getSSRMode,
|
|
86
78
|
safeReplace,
|
|
87
79
|
serializeErrors
|
|
@@ -8,7 +8,7 @@ import { modernInline, runRouterDataFnStr, runWindowFnStr } from "./constants";
|
|
|
8
8
|
import { serializeErrors } from "./utils";
|
|
9
9
|
var DeferredDataScripts = function(props) {
|
|
10
10
|
var staticContext = props === null || props === void 0 ? void 0 : props.context;
|
|
11
|
-
var
|
|
11
|
+
var useJsonScript = props === null || props === void 0 ? void 0 : props.useJsonScript;
|
|
12
12
|
var hydratedRef = useRef(false);
|
|
13
13
|
useEffect(function() {
|
|
14
14
|
hydratedRef.current = true;
|
|
@@ -22,11 +22,11 @@ var DeferredDataScripts = function(props) {
|
|
|
22
22
|
loaderData: staticContext.loaderData,
|
|
23
23
|
errors: serializeErrors(staticContext.errors)
|
|
24
24
|
};
|
|
25
|
-
var initialScript0 =
|
|
26
|
-
var initialScript1 =
|
|
25
|
+
var initialScript0 = useJsonScript ? "".concat(serializeJson(_ROUTER_DATA)) : "";
|
|
26
|
+
var initialScript1 = useJsonScript ? modernInline : [
|
|
27
27
|
"_ROUTER_DATA = ".concat(serializeJson(_ROUTER_DATA), ";"),
|
|
28
28
|
modernInline
|
|
29
|
-
].join("\n")
|
|
29
|
+
].join("\n");
|
|
30
30
|
var deferredDataScripts = [];
|
|
31
31
|
var initialScripts = Object.entries(activeDeferreds).map(function(param) {
|
|
32
32
|
var _param = _sliced_to_array(param, 2), routeId = _param[0], deferredData = _param[1];
|
|
@@ -123,7 +123,7 @@ var routerPlugin = function() {
|
|
|
123
123
|
return function() {
|
|
124
124
|
var context = useContext(RuntimeReactContext);
|
|
125
125
|
var remixRouter = context.remixRouter, routerContext = context.routerContext, ssrContext = context.ssrContext;
|
|
126
|
-
var nonce = ssrContext.nonce, mode = ssrContext.mode,
|
|
126
|
+
var nonce = ssrContext.nonce, mode = ssrContext.mode, useJsonScript = ssrContext.useJsonScript;
|
|
127
127
|
var routerWrapper = /* @__PURE__ */ _jsxs(_Fragment, {
|
|
128
128
|
children: [
|
|
129
129
|
/* @__PURE__ */ _jsx(StaticRouterProvider, {
|
|
@@ -136,7 +136,7 @@ var routerPlugin = function() {
|
|
|
136
136
|
/* @__PURE__ */ _jsx(DeferredDataScripts, {
|
|
137
137
|
nonce,
|
|
138
138
|
context: routerContext,
|
|
139
|
-
|
|
139
|
+
useJsonScript
|
|
140
140
|
}),
|
|
141
141
|
mode === "stream" && JSX_SHELL_STREAM_END_MARK
|
|
142
142
|
]
|
|
@@ -5,10 +5,10 @@ import { createLoaderManager } from "../loader/loaderManager";
|
|
|
5
5
|
import { getGlobalRunner } from "../plugin/runner";
|
|
6
6
|
import { createRoot } from "../react";
|
|
7
7
|
import { CHUNK_CSS_PLACEHOLDER } from "./constants";
|
|
8
|
-
import { getSSRConfigByEntry,
|
|
8
|
+
import { getSSRConfigByEntry, getSSRMode } from "./utils";
|
|
9
9
|
function createSSRContext(request, options) {
|
|
10
10
|
const { config, loaderContext, onError, onTiming, locals, resource, params, responseProxy, logger, metrics, reporter } = options;
|
|
11
|
-
const { nonce } = config;
|
|
11
|
+
const { nonce, useJsonScript } = config;
|
|
12
12
|
const { entryName, route } = resource;
|
|
13
13
|
const { headers } = request;
|
|
14
14
|
const cookie = headers.get("cookie") || "";
|
|
@@ -24,10 +24,10 @@ function createSSRContext(request, options) {
|
|
|
24
24
|
}
|
|
25
25
|
const ssrConfig = getSSRConfigByEntry(entryName, config.ssr, config.ssrByEntries);
|
|
26
26
|
const ssrMode = getSSRMode(ssrConfig);
|
|
27
|
-
const inlineScript = getSSRInlineScript(ssrConfig);
|
|
28
27
|
const loaderFailureMode = typeof ssrConfig === "object" ? ssrConfig.loaderFailureMode : void 0;
|
|
29
28
|
return {
|
|
30
29
|
nonce,
|
|
30
|
+
useJsonScript,
|
|
31
31
|
loaderContext,
|
|
32
32
|
redirection: {},
|
|
33
33
|
htmlModifiers: [],
|
|
@@ -57,7 +57,6 @@ function createSSRContext(request, options) {
|
|
|
57
57
|
},
|
|
58
58
|
reporter,
|
|
59
59
|
mode: ssrMode,
|
|
60
|
-
inlineScript,
|
|
61
60
|
onError,
|
|
62
61
|
onTiming,
|
|
63
62
|
loaderFailureMode
|
|
@@ -2,7 +2,7 @@ import { serializeJson } from "@modern-js/runtime-utils/node";
|
|
|
2
2
|
import { SSR_DATA_JSON_ID } from "../../constants";
|
|
3
3
|
import { SSR_DATA_PLACEHOLDER } from "../constants";
|
|
4
4
|
import { buildHtml } from "../shared";
|
|
5
|
-
import { attributesToString,
|
|
5
|
+
import { attributesToString, safeReplace } from "../utils";
|
|
6
6
|
function buildShellAfterTemplate(afterAppTemplate, options) {
|
|
7
7
|
const { request, config, ssrConfig, runtimeContext, renderLevel, entryName } = options;
|
|
8
8
|
const callbacks = [
|
|
@@ -10,6 +10,7 @@ function buildShellAfterTemplate(afterAppTemplate, options) {
|
|
|
10
10
|
request,
|
|
11
11
|
ssrConfig,
|
|
12
12
|
nonce: config.nonce,
|
|
13
|
+
useJsonScript: config.useJsonScript,
|
|
13
14
|
runtimeContext,
|
|
14
15
|
renderLevel
|
|
15
16
|
}),
|
|
@@ -34,7 +35,7 @@ function buildShellAfterTemplate(afterAppTemplate, options) {
|
|
|
34
35
|
return buildHtml(afterAppTemplate, callbacks);
|
|
35
36
|
}
|
|
36
37
|
function createReplaceSSRData(options) {
|
|
37
|
-
const { runtimeContext, nonce, renderLevel, ssrConfig } = options;
|
|
38
|
+
const { runtimeContext, nonce, renderLevel, useJsonScript, ssrConfig } = options;
|
|
38
39
|
const { request, reporter } = runtimeContext.ssrContext;
|
|
39
40
|
const headers = typeof ssrConfig === "object" && ssrConfig.unsafeHeaders ? Object.fromEntries(Object.entries(request.headers).filter(([key, _]) => {
|
|
40
41
|
var _ssrConfig_unsafeHeaders_map, _ssrConfig_unsafeHeaders;
|
|
@@ -64,12 +65,8 @@ function createReplaceSSRData(options) {
|
|
|
64
65
|
const attrsStr = attributesToString({
|
|
65
66
|
nonce
|
|
66
67
|
});
|
|
67
|
-
const inlineScript = getSSRInlineScript(ssrConfig);
|
|
68
|
-
const useInlineScript = inlineScript !== false;
|
|
69
68
|
const serializeSSRData = serializeJson(ssrData);
|
|
70
|
-
const ssrDataScript =
|
|
71
|
-
<script${attrsStr}>window._SSR_DATA = ${serializeSSRData}</script>
|
|
72
|
-
` : `<script type="application/json" id="${SSR_DATA_JSON_ID}">${serializeSSRData}</script>`;
|
|
69
|
+
const ssrDataScript = useJsonScript ? `<script type="application/json" id="${SSR_DATA_JSON_ID}">${serializeSSRData}</script>` : `<script${attrsStr}>window._SSR_DATA = ${serializeSSRData}</script>`;
|
|
73
70
|
return (template) => safeReplace(template, SSR_DATA_PLACEHOLDER, ssrDataScript);
|
|
74
71
|
}
|
|
75
72
|
export {
|
|
@@ -58,7 +58,8 @@ const renderString = async (request, serverRoot, options) => {
|
|
|
58
58
|
ssrContext: runtimeContext.ssrContext,
|
|
59
59
|
chunkSet,
|
|
60
60
|
routerContext,
|
|
61
|
-
nonce: config.nonce
|
|
61
|
+
nonce: config.nonce,
|
|
62
|
+
useJsonScript: config.useJsonScript
|
|
62
63
|
})
|
|
63
64
|
];
|
|
64
65
|
const rootElement = wrapRuntimeContextProvider(serverRoot, Object.assign(runtimeContext, {
|
|
@@ -47,8 +47,18 @@ class LoadableCollector {
|
|
|
47
47
|
if (!this.extractor) {
|
|
48
48
|
return;
|
|
49
49
|
}
|
|
50
|
-
const { extractor } = this;
|
|
51
|
-
const
|
|
50
|
+
const { extractor, options } = this;
|
|
51
|
+
const { entryName, config } = options;
|
|
52
|
+
const asyncChunks = [];
|
|
53
|
+
if (config.enableAsyncEntry) {
|
|
54
|
+
try {
|
|
55
|
+
asyncChunks.push(...extractor.getChunkAssets([
|
|
56
|
+
`async-${entryName}`
|
|
57
|
+
]));
|
|
58
|
+
} catch (e) {
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
const chunks = [].concat(asyncChunks).concat(extractor.getChunkAssets(extractor.chunks));
|
|
52
62
|
const scriptChunks = generateChunks(chunks, "js");
|
|
53
63
|
const styleChunks = generateChunks(chunks, "css");
|
|
54
64
|
this.emitLoadableScripts(extractor);
|
|
@@ -99,7 +109,7 @@ class LoadableCollector {
|
|
|
99
109
|
chunkSet.jsChunk += scripts.filter((script) => Boolean(script)).join("");
|
|
100
110
|
}
|
|
101
111
|
async emitStyleAssets(chunks) {
|
|
102
|
-
const { template, chunkSet, config } = this.options;
|
|
112
|
+
const { template, chunkSet, config, entryName } = this.options;
|
|
103
113
|
const { enableInlineStyles } = config;
|
|
104
114
|
const atrributes = attributesToString(this.generateAttributes());
|
|
105
115
|
const linkRegExp = /<link .*?href="([^"]+)".*?>/g;
|
|
@@ -5,7 +5,7 @@ import { _ as _class_private_method_get } from "@swc/helpers/_/_class_private_me
|
|
|
5
5
|
import { _ as _class_private_method_init } from "@swc/helpers/_/_class_private_method_init";
|
|
6
6
|
import { serializeJson } from "@modern-js/runtime-utils/node";
|
|
7
7
|
import { ROUTER_DATA_JSON_ID, SSR_DATA_JSON_ID } from "../../constants";
|
|
8
|
-
import { attributesToString,
|
|
8
|
+
import { attributesToString, serializeErrors } from "../utils";
|
|
9
9
|
var _options = /* @__PURE__ */ new WeakMap(), _getSSRData = /* @__PURE__ */ new WeakSet(), _getSSRDataScripts = /* @__PURE__ */ new WeakSet();
|
|
10
10
|
class SSRDataCollector {
|
|
11
11
|
effect() {
|
|
@@ -55,19 +55,17 @@ function getSSRData() {
|
|
|
55
55
|
};
|
|
56
56
|
}
|
|
57
57
|
function getSSRDataScripts(ssrData, routerData) {
|
|
58
|
-
const { nonce,
|
|
59
|
-
const inlineScript = getSSRInlineScript(ssrConfig);
|
|
60
|
-
const useInlineScript = inlineScript !== false;
|
|
58
|
+
const { nonce, useJsonScript = false } = _class_private_field_get(this, _options);
|
|
61
59
|
const serializeSSRData = serializeJson(ssrData);
|
|
62
60
|
const attrsStr = attributesToString({
|
|
63
61
|
nonce
|
|
64
62
|
});
|
|
65
|
-
let ssrDataScripts =
|
|
63
|
+
let ssrDataScripts = useJsonScript ? `<script type="application/json" id="${SSR_DATA_JSON_ID}">${serializeSSRData}</script>` : `<script${attrsStr}>window._SSR_DATA = ${serializeSSRData}</script>`;
|
|
66
64
|
if (routerData) {
|
|
67
65
|
const serializedRouterData = serializeJson(routerData);
|
|
68
|
-
ssrDataScripts +=
|
|
69
|
-
<script
|
|
70
|
-
<script
|
|
66
|
+
ssrDataScripts += useJsonScript ? `
|
|
67
|
+
<script type="application/json" id="${ROUTER_DATA_JSON_ID}">${serializedRouterData}</script>` : `
|
|
68
|
+
<script${attrsStr}>window._ROUTER_DATA = ${serializedRouterData}</script>`;
|
|
71
69
|
}
|
|
72
70
|
return ssrDataScripts;
|
|
73
71
|
}
|
|
@@ -47,17 +47,10 @@ function getSSRMode(ssrConfig) {
|
|
|
47
47
|
}
|
|
48
48
|
return (ssrConfig === null || ssrConfig === void 0 ? void 0 : ssrConfig.mode) === "stream" ? "stream" : "string";
|
|
49
49
|
}
|
|
50
|
-
function getSSRInlineScript(ssrConfig) {
|
|
51
|
-
if (typeof ssrConfig === "object") {
|
|
52
|
-
return ssrConfig.inlineScript === void 0 ? true : ssrConfig.inlineScript;
|
|
53
|
-
}
|
|
54
|
-
return true;
|
|
55
|
-
}
|
|
56
50
|
export {
|
|
57
51
|
attributesToString,
|
|
58
52
|
checkIsNode,
|
|
59
53
|
getSSRConfigByEntry,
|
|
60
|
-
getSSRInlineScript,
|
|
61
54
|
getSSRMode,
|
|
62
55
|
safeReplace,
|
|
63
56
|
serializeErrors
|
|
@@ -7,7 +7,7 @@ import { modernInline, runRouterDataFnStr, runWindowFnStr } from "./constants";
|
|
|
7
7
|
import { serializeErrors } from "./utils";
|
|
8
8
|
const DeferredDataScripts = (props) => {
|
|
9
9
|
const staticContext = props === null || props === void 0 ? void 0 : props.context;
|
|
10
|
-
const
|
|
10
|
+
const useJsonScript = props === null || props === void 0 ? void 0 : props.useJsonScript;
|
|
11
11
|
const hydratedRef = useRef(false);
|
|
12
12
|
useEffect(() => {
|
|
13
13
|
hydratedRef.current = true;
|
|
@@ -21,11 +21,11 @@ const DeferredDataScripts = (props) => {
|
|
|
21
21
|
loaderData: staticContext.loaderData,
|
|
22
22
|
errors: serializeErrors(staticContext.errors)
|
|
23
23
|
};
|
|
24
|
-
const initialScript0 =
|
|
25
|
-
const initialScript1 =
|
|
24
|
+
const initialScript0 = useJsonScript ? `${serializeJson(_ROUTER_DATA)}` : "";
|
|
25
|
+
const initialScript1 = useJsonScript ? modernInline : [
|
|
26
26
|
`_ROUTER_DATA = ${serializeJson(_ROUTER_DATA)};`,
|
|
27
27
|
modernInline
|
|
28
|
-
].join("\n")
|
|
28
|
+
].join("\n");
|
|
29
29
|
const deferredDataScripts = [];
|
|
30
30
|
const initialScripts = Object.entries(activeDeferreds).map(([routeId, deferredData]) => {
|
|
31
31
|
const pendingKeys = new Set(deferredData.pendingKeys);
|
|
@@ -94,7 +94,7 @@ const routerPlugin = (userConfig = {}) => {
|
|
|
94
94
|
return () => {
|
|
95
95
|
const context = useContext(RuntimeReactContext);
|
|
96
96
|
const { remixRouter, routerContext, ssrContext } = context;
|
|
97
|
-
const { nonce, mode,
|
|
97
|
+
const { nonce, mode, useJsonScript } = ssrContext;
|
|
98
98
|
const routerWrapper = /* @__PURE__ */ _jsxs(_Fragment, {
|
|
99
99
|
children: [
|
|
100
100
|
/* @__PURE__ */ _jsx(StaticRouterProvider, {
|
|
@@ -107,7 +107,7 @@ const routerPlugin = (userConfig = {}) => {
|
|
|
107
107
|
/* @__PURE__ */ _jsx(DeferredDataScripts, {
|
|
108
108
|
nonce,
|
|
109
109
|
context: routerContext,
|
|
110
|
-
|
|
110
|
+
useJsonScript
|
|
111
111
|
}),
|
|
112
112
|
mode === "stream" && JSX_SHELL_STREAM_END_MARK
|
|
113
113
|
]
|
|
@@ -2,8 +2,8 @@ import type { ReactElement } from 'react';
|
|
|
2
2
|
import type { ChunkSet, Collector } from './types';
|
|
3
3
|
declare module '@loadable/server' {
|
|
4
4
|
interface ChunkExtractor {
|
|
5
|
-
chunks:
|
|
6
|
-
getChunkAssets: (chunks:
|
|
5
|
+
chunks: string[];
|
|
6
|
+
getChunkAssets: (chunks: string[]) => Chunk[];
|
|
7
7
|
}
|
|
8
8
|
}
|
|
9
9
|
export interface LoadableCollectorOptions {
|
|
@@ -20,6 +20,7 @@ export interface LoadableCollectorConfig {
|
|
|
20
20
|
enableInlineStyles?: boolean | RegExp;
|
|
21
21
|
enableInlineScripts?: boolean | RegExp;
|
|
22
22
|
crossorigin?: boolean | 'anonymous' | 'use-credentials';
|
|
23
|
+
enableAsyncEntry?: boolean;
|
|
23
24
|
}
|
|
24
25
|
export declare class LoadableCollector implements Collector {
|
|
25
26
|
private options;
|
|
@@ -17,4 +17,3 @@ export declare function checkIsNode(): boolean;
|
|
|
17
17
|
export declare function serializeErrors(errors: StaticHandlerContext['errors']): StaticHandlerContext['errors'];
|
|
18
18
|
export declare function getSSRConfigByEntry(entryName: string, ssr?: ServerUserConfig['ssr'], ssrByEntries?: ServerUserConfig['ssrByEntries']): import("@modern-js/app-tools").SSR;
|
|
19
19
|
export declare function getSSRMode(ssrConfig?: SSRConfig): 'string' | 'stream' | false;
|
|
20
|
-
export declare function getSSRInlineScript(ssrConfig?: SSRConfig): boolean;
|
|
@@ -52,7 +52,7 @@ export type SSRServerContext = Pick<BaseSSRServerContext, 'redirection' | 'respo
|
|
|
52
52
|
loaderFailureMode?: 'clientRender' | 'errorBoundary';
|
|
53
53
|
onError?: (e: unknown) => void;
|
|
54
54
|
onTiming?: (name: string, dur: number) => void;
|
|
55
|
-
|
|
55
|
+
useJsonScript?: boolean;
|
|
56
56
|
};
|
|
57
57
|
interface TSSRBaseContext {
|
|
58
58
|
request: BaseSSRServerContext['request'] & {
|
|
@@ -6,7 +6,7 @@ import type { StaticHandlerContext } from '@modern-js/runtime-utils/remix-router
|
|
|
6
6
|
*/
|
|
7
7
|
declare const DeferredDataScripts: (props?: {
|
|
8
8
|
nonce?: string;
|
|
9
|
-
|
|
9
|
+
useJsonScript?: boolean;
|
|
10
10
|
context: StaticHandlerContext;
|
|
11
11
|
}) => import("react").JSX.Element | null;
|
|
12
12
|
export default DeferredDataScripts;
|
package/package.json
CHANGED
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"modern",
|
|
16
16
|
"modern.js"
|
|
17
17
|
],
|
|
18
|
-
"version": "2.63.
|
|
18
|
+
"version": "2.63.3",
|
|
19
19
|
"engines": {
|
|
20
20
|
"node": ">=14.17.6"
|
|
21
21
|
},
|
|
@@ -200,11 +200,11 @@
|
|
|
200
200
|
"react-is": "^18",
|
|
201
201
|
"react-side-effect": "^2.1.1",
|
|
202
202
|
"styled-components": "^5.3.1",
|
|
203
|
-
"@modern-js/plugin
|
|
204
|
-
"@modern-js/
|
|
205
|
-
"@modern-js/
|
|
206
|
-
"@modern-js/
|
|
207
|
-
"@modern-js/utils": "2.63.
|
|
203
|
+
"@modern-js/plugin": "2.63.3",
|
|
204
|
+
"@modern-js/plugin-data-loader": "2.63.3",
|
|
205
|
+
"@modern-js/types": "2.63.3",
|
|
206
|
+
"@modern-js/runtime-utils": "2.63.3",
|
|
207
|
+
"@modern-js/utils": "2.63.3"
|
|
208
208
|
},
|
|
209
209
|
"peerDependencies": {
|
|
210
210
|
"react": ">=17",
|
|
@@ -212,7 +212,7 @@
|
|
|
212
212
|
},
|
|
213
213
|
"devDependencies": {
|
|
214
214
|
"@remix-run/web-fetch": "^4.1.3",
|
|
215
|
-
"@rsbuild/core": "1.1.
|
|
215
|
+
"@rsbuild/core": "1.1.10",
|
|
216
216
|
"@testing-library/react": "^13.4.0",
|
|
217
217
|
"@types/cookie": "0.6.0",
|
|
218
218
|
"@types/invariant": "^2.2.30",
|
|
@@ -227,11 +227,11 @@
|
|
|
227
227
|
"ts-jest": "^29.1.0",
|
|
228
228
|
"ts-node": "^10.9.1",
|
|
229
229
|
"typescript": "^5",
|
|
230
|
-
"webpack": "^5.
|
|
231
|
-
"@modern-js/app-tools": "2.63.
|
|
232
|
-
"@
|
|
233
|
-
"@
|
|
234
|
-
"@scripts/jest-config": "2.63.
|
|
230
|
+
"webpack": "^5.97.1",
|
|
231
|
+
"@modern-js/app-tools": "2.63.3",
|
|
232
|
+
"@modern-js/core": "2.63.3",
|
|
233
|
+
"@scripts/build": "2.63.3",
|
|
234
|
+
"@scripts/jest-config": "2.63.3"
|
|
235
235
|
},
|
|
236
236
|
"sideEffects": false,
|
|
237
237
|
"publishConfig": {
|