@umijs/server 4.0.84 → 4.0.86
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/ssr.d.ts +4 -2
- package/dist/ssr.js +15 -33
- package/package.json +2 -2
package/dist/ssr.d.ts
CHANGED
|
@@ -6,7 +6,7 @@ export declare type ServerInsertedHTMLHook = (callbacks: () => React.ReactNode)
|
|
|
6
6
|
interface CreateRequestHandlerOptions {
|
|
7
7
|
routesWithServerLoader: RouteLoaders;
|
|
8
8
|
PluginManager: any;
|
|
9
|
-
manifest: (() => {
|
|
9
|
+
manifest: ((sourceDir?: string) => {
|
|
10
10
|
assets: Record<string, string>;
|
|
11
11
|
}) | {
|
|
12
12
|
assets: Record<string, string>;
|
|
@@ -18,9 +18,11 @@ interface CreateRequestHandlerOptions {
|
|
|
18
18
|
createHistory: (opts: any) => any;
|
|
19
19
|
helmetContext?: any;
|
|
20
20
|
ServerInsertedHTMLContext: React.Context<ServerInsertedHTMLHook | null>;
|
|
21
|
+
withoutHTML?: boolean;
|
|
22
|
+
sourceDir?: string;
|
|
21
23
|
}
|
|
22
24
|
export declare function createMarkupGenerator(opts: CreateRequestHandlerOptions): (url: string) => Promise<unknown>;
|
|
23
25
|
export default function createRequestHandler(opts: CreateRequestHandlerOptions): (req: any, res: any, next: any) => Promise<any>;
|
|
24
|
-
export declare function createUmiHandler(opts: CreateRequestHandlerOptions): (req: Request) => Promise<
|
|
26
|
+
export declare function createUmiHandler(opts: CreateRequestHandlerOptions): (req: Request, params?: CreateRequestHandlerOptions) => Promise<NodeJS.ReadableStream>;
|
|
25
27
|
export declare function createUmiServerLoader(opts: CreateRequestHandlerOptions): (req: Request) => Promise<any>;
|
|
26
28
|
export {};
|
package/dist/ssr.js
CHANGED
|
@@ -62,7 +62,8 @@ function createJSXGenerator(opts) {
|
|
|
62
62
|
getPlugins,
|
|
63
63
|
getValidKeys,
|
|
64
64
|
getRoutes,
|
|
65
|
-
createHistory
|
|
65
|
+
createHistory,
|
|
66
|
+
sourceDir
|
|
66
67
|
} = opts;
|
|
67
68
|
createHistory({ type: "memory", initialEntries: [url], initialIndex: 1 });
|
|
68
69
|
const pluginManager = PluginManager.create({
|
|
@@ -91,14 +92,15 @@ function createJSXGenerator(opts) {
|
|
|
91
92
|
})
|
|
92
93
|
)
|
|
93
94
|
);
|
|
94
|
-
const manifest = typeof opts.manifest === "function" ? opts.manifest() : opts.manifest;
|
|
95
|
+
const manifest = typeof opts.manifest === "function" ? opts.manifest(sourceDir) : opts.manifest;
|
|
95
96
|
const context = {
|
|
96
97
|
routes,
|
|
97
98
|
routeComponents,
|
|
98
99
|
pluginManager,
|
|
99
100
|
location: url,
|
|
100
101
|
manifest,
|
|
101
|
-
loaderData
|
|
102
|
+
loaderData,
|
|
103
|
+
withoutHTML: opts.withoutHTML
|
|
102
104
|
};
|
|
103
105
|
const element = await opts.getClientRootComponent(
|
|
104
106
|
context
|
|
@@ -202,42 +204,22 @@ function createRequestHandler(opts) {
|
|
|
202
204
|
};
|
|
203
205
|
}
|
|
204
206
|
function createUmiHandler(opts) {
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
if (!jsx) {
|
|
210
|
-
reject(new Error("no page resource"));
|
|
211
|
-
return;
|
|
212
|
-
}
|
|
213
|
-
let buf = Buffer.alloc(0);
|
|
214
|
-
const writable = new import_stream.Writable();
|
|
215
|
-
writable._write = (chunk, _encoding, next) => {
|
|
216
|
-
buf = Buffer.concat([buf, chunk]);
|
|
217
|
-
next();
|
|
218
|
-
};
|
|
219
|
-
writable.on("finish", async () => {
|
|
220
|
-
resolve(import_stream.Readable.from(buf));
|
|
221
|
-
});
|
|
222
|
-
const stream = await ReactDomServer.renderToPipeableStream(jsx.element, {
|
|
223
|
-
bootstrapScripts: [jsx.manifest.assets["umi.js"] || "/umi.js"],
|
|
224
|
-
onShellReady() {
|
|
225
|
-
stream.pipe(writable);
|
|
226
|
-
},
|
|
227
|
-
onError(err) {
|
|
228
|
-
reject(err);
|
|
229
|
-
}
|
|
230
|
-
});
|
|
207
|
+
return async function(req, params) {
|
|
208
|
+
const jsxGeneratorDeferrer = createJSXGenerator({
|
|
209
|
+
...opts,
|
|
210
|
+
...params
|
|
231
211
|
});
|
|
212
|
+
const jsx = await jsxGeneratorDeferrer(new URL(req.url).pathname);
|
|
213
|
+
if (!jsx) {
|
|
214
|
+
throw new Error("no page resource");
|
|
215
|
+
}
|
|
216
|
+
return ReactDomServer.renderToNodeStream(jsx.element);
|
|
232
217
|
};
|
|
233
218
|
}
|
|
234
219
|
function createUmiServerLoader(opts) {
|
|
235
220
|
return async function(req) {
|
|
236
221
|
const query = Object.fromEntries(new URL(req.url).searchParams);
|
|
237
|
-
return await executeLoader(
|
|
238
|
-
query.route,
|
|
239
|
-
opts.routesWithServerLoader
|
|
240
|
-
);
|
|
222
|
+
return await executeLoader(query.route, opts.routesWithServerLoader);
|
|
241
223
|
};
|
|
242
224
|
}
|
|
243
225
|
function matchRoutesForSSR(reqUrl, routesById) {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@umijs/server",
|
|
3
|
-
"version": "4.0.
|
|
3
|
+
"version": "4.0.86",
|
|
4
4
|
"description": "@umijs/server",
|
|
5
5
|
"homepage": "https://github.com/umijs/umi/tree/master/packages/server#readme",
|
|
6
6
|
"bugs": "https://github.com/umijs/umi/issues",
|
|
@@ -19,7 +19,7 @@
|
|
|
19
19
|
"react": "18.1.0",
|
|
20
20
|
"react-dom": "18.1.0",
|
|
21
21
|
"react-router-dom": "6.3.0",
|
|
22
|
-
"@umijs/bundler-utils": "4.0.
|
|
22
|
+
"@umijs/bundler-utils": "4.0.86"
|
|
23
23
|
},
|
|
24
24
|
"publishConfig": {
|
|
25
25
|
"access": "public"
|