@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 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<unknown>;
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
- const jsxGeneratorDeferrer = createJSXGenerator(opts);
206
- return function(req) {
207
- return new Promise(async (resolve, reject) => {
208
- const jsx = await jsxGeneratorDeferrer(new URL(req.url).pathname);
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.84",
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.84"
22
+ "@umijs/bundler-utils": "4.0.86"
23
23
  },
24
24
  "publishConfig": {
25
25
  "access": "public"