@umijs/server 4.0.0-canary.20230907.1 → 4.0.0-canary.20231007.1

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
@@ -18,7 +18,10 @@ interface CreateRequestHandlerOptions {
18
18
  createHistory: (opts: any) => any;
19
19
  helmetContext?: any;
20
20
  ServerInsertedHTMLContext: React.Context<ServerInsertedHTMLHook | null>;
21
+ withoutHTML?: boolean;
21
22
  }
22
23
  export declare function createMarkupGenerator(opts: CreateRequestHandlerOptions): (url: string) => Promise<unknown>;
23
24
  export default function createRequestHandler(opts: CreateRequestHandlerOptions): (req: any, res: any, next: any) => Promise<any>;
25
+ export declare function createUmiHandler(opts: CreateRequestHandlerOptions): (req: Request) => Promise<unknown>;
26
+ export declare function createUmiServerLoader(opts: CreateRequestHandlerOptions): (req: Request) => Promise<any>;
24
27
  export {};
package/dist/ssr.js CHANGED
@@ -30,6 +30,8 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
30
30
  var ssr_exports = {};
31
31
  __export(ssr_exports, {
32
32
  createMarkupGenerator: () => createMarkupGenerator,
33
+ createUmiHandler: () => createUmiHandler,
34
+ createUmiServerLoader: () => createUmiServerLoader,
33
35
  default: () => createRequestHandler
34
36
  });
35
37
  module.exports = __toCommonJS(ssr_exports);
@@ -96,7 +98,8 @@ function createJSXGenerator(opts) {
96
98
  pluginManager,
97
99
  location: url,
98
100
  manifest,
99
- loaderData
101
+ loaderData,
102
+ withoutHTML: opts.withoutHTML
100
103
  };
101
104
  const element = await opts.getClientRootComponent(
102
105
  context
@@ -199,6 +202,34 @@ function createRequestHandler(opts) {
199
202
  });
200
203
  };
201
204
  }
205
+ function createUmiHandler(opts) {
206
+ const jsxGeneratorDeferrer = createJSXGenerator({
207
+ ...opts,
208
+ withoutHTML: true
209
+ });
210
+ return function(req) {
211
+ return new Promise(async (resolve, reject) => {
212
+ const jsx = await jsxGeneratorDeferrer(new URL(req.url).pathname);
213
+ if (!jsx) {
214
+ reject(new Error("no page resource"));
215
+ return;
216
+ }
217
+ const stream = await ReactDomServer.renderToReadableStream(jsx.element, {
218
+ bootstrapScripts: [jsx.manifest.assets["umi.js"] || "/umi.js"],
219
+ onError(err) {
220
+ reject(err);
221
+ }
222
+ });
223
+ resolve(stream);
224
+ });
225
+ };
226
+ }
227
+ function createUmiServerLoader(opts) {
228
+ return async function(req) {
229
+ const query = Object.fromEntries(new URL(req.url).searchParams);
230
+ return await executeLoader(query.route, opts.routesWithServerLoader);
231
+ };
232
+ }
202
233
  function matchRoutesForSSR(reqUrl, routesById) {
203
234
  var _a;
204
235
  return ((_a = (0, import_react_router_dom.matchRoutes)(createClientRoutes({ routesById }), reqUrl)) == null ? void 0 : _a.map(
@@ -236,5 +267,7 @@ async function executeLoader(routeKey, routesWithServerLoader) {
236
267
  }
237
268
  // Annotate the CommonJS export names for ESM import in node:
238
269
  0 && (module.exports = {
239
- createMarkupGenerator
270
+ createMarkupGenerator,
271
+ createUmiHandler,
272
+ createUmiServerLoader
240
273
  });
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@umijs/server",
3
- "version": "4.0.0-canary.20230907.1",
3
+ "version": "4.0.0-canary.20231007.1",
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.0-canary.20230907.1"
22
+ "@umijs/bundler-utils": "4.0.0-canary.20231007.1"
23
23
  },
24
24
  "publishConfig": {
25
25
  "access": "public"