zudoku 0.3.0-dev.40 → 0.3.0-dev.41
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/app/entry.server.d.ts +5 -5
- package/dist/app/entry.server.js +4 -4
- package/dist/app/entry.server.js.map +1 -1
- package/dist/vite/dev-server.js +15 -8
- package/dist/vite/dev-server.js.map +1 -1
- package/dist/vite/prerender.d.ts +16 -0
- package/dist/vite/prerender.js +21 -25
- package/dist/vite/prerender.js.map +1 -1
- package/package.json +1 -1
- package/src/app/entry.server.tsx +9 -9
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import type express from "express";
|
|
2
2
|
import "virtual:vite-zudoku-custom-css.css";
|
|
3
3
|
import type { ZudokuConfig } from "../config/config.js";
|
|
4
|
+
import type { FileWritingResponse } from "../vite/prerender.js";
|
|
4
5
|
import "./main.css";
|
|
5
|
-
export declare const render: ({ template,
|
|
6
|
+
export declare const render: ({ template, request: baseRequest, response, config, }: {
|
|
6
7
|
template: string;
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
response: express.Response;
|
|
8
|
+
request: express.Request | Request;
|
|
9
|
+
response: express.Response | FileWritingResponse;
|
|
10
10
|
config: ZudokuConfig;
|
|
11
11
|
}) => Promise<void>;
|
|
12
|
-
export declare function createFetchRequest(req: express.Request, res: express.Response): Request;
|
|
12
|
+
export declare function createFetchRequest(req: express.Request, res: express.Response | FileWritingResponse): Request;
|
package/dist/app/entry.server.js
CHANGED
|
@@ -8,12 +8,12 @@ import "virtual:vite-zudoku-custom-css.css";
|
|
|
8
8
|
import { BootstrapStatic, ServerError } from "zudoku/components";
|
|
9
9
|
import "./main.css";
|
|
10
10
|
import { getRoutesByConfig } from "./main.js";
|
|
11
|
-
export const render = async ({ template,
|
|
11
|
+
export const render = async ({ template, request: baseRequest, response, config, }) => {
|
|
12
12
|
const routes = getRoutesByConfig(config);
|
|
13
13
|
const { query, dataRoutes } = createStaticHandler(routes);
|
|
14
|
-
const request =
|
|
15
|
-
?
|
|
16
|
-
:
|
|
14
|
+
const request = baseRequest instanceof Request
|
|
15
|
+
? baseRequest
|
|
16
|
+
: createFetchRequest(baseRequest, response);
|
|
17
17
|
if (!request) {
|
|
18
18
|
throw new Error("Either fetchRequest or expressRequest must be provided");
|
|
19
19
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"entry.server.js","sourceRoot":"","sources":["../../src/app/entry.server.tsx"],"names":[],"mappings":";AAEA,OAAO,MAAM,MAAM,UAAU,CAAC;AAC9B,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAChF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EACL,mBAAmB,EACnB,kBAAkB,GACnB,MAAM,4BAA4B,CAAC;AACpC,OAAO,oCAAoC,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"entry.server.js","sourceRoot":"","sources":["../../src/app/entry.server.tsx"],"names":[],"mappings":"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"}
|
package/dist/vite/dev-server.js
CHANGED
|
@@ -48,29 +48,36 @@ export class DevServer {
|
|
|
48
48
|
app.use(graphql.graphqlEndpoint, graphql);
|
|
49
49
|
app.use(vite.middlewares);
|
|
50
50
|
printDiagnosticsToConsole(`Server-side rendering ${this.options.ssr ? "enabled" : "disabled"}`);
|
|
51
|
-
app.use("*", async (
|
|
52
|
-
const url =
|
|
51
|
+
app.use("*", async (request, response) => {
|
|
52
|
+
const url = request.originalUrl;
|
|
53
53
|
try {
|
|
54
54
|
const entryJs = getAppClientEntryPath();
|
|
55
55
|
const rawHtml = getDevHtml(entryJs);
|
|
56
56
|
const template = await vite.transformIndexHtml(url, rawHtml);
|
|
57
57
|
if (this.options.ssr) {
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
if (!this.currentConfig) {
|
|
59
|
+
throw new Error("No config loaded");
|
|
60
|
+
}
|
|
61
|
+
const module = await vite.ssrLoadModule(getAppServerEntryPath());
|
|
62
|
+
const render = module.render;
|
|
63
|
+
void render({
|
|
60
64
|
template,
|
|
61
|
-
|
|
62
|
-
response
|
|
65
|
+
request,
|
|
66
|
+
response,
|
|
63
67
|
config: this.currentConfig,
|
|
64
68
|
});
|
|
65
69
|
}
|
|
66
70
|
else {
|
|
67
|
-
|
|
71
|
+
response
|
|
72
|
+
.status(200)
|
|
73
|
+
.set({ "Content-Type": "text/html" })
|
|
74
|
+
.end(template);
|
|
68
75
|
}
|
|
69
76
|
}
|
|
70
77
|
catch (e) {
|
|
71
78
|
vite.ssrFixStacktrace(e);
|
|
72
79
|
logger.error(e);
|
|
73
|
-
|
|
80
|
+
response.status(500).end(e.message);
|
|
74
81
|
}
|
|
75
82
|
});
|
|
76
83
|
return new Promise((resolve) => {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"dev-server.js","sourceRoot":"","sources":["../../src/vite/dev-server.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,UAAU,CAAC;AAChC,OAAO,OAAO,MAAM,SAAS,CAAC;AAE9B,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,IAAI,gBAAgB,EAAE,MAAM,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"dev-server.js","sourceRoot":"","sources":["../../src/vite/dev-server.ts"],"names":[],"mappings":"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"}
|
package/dist/vite/prerender.d.ts
CHANGED
|
@@ -1 +1,17 @@
|
|
|
1
|
+
export declare class FileWritingResponse {
|
|
2
|
+
private readonly fileName;
|
|
3
|
+
private buffer;
|
|
4
|
+
private dontSave;
|
|
5
|
+
private resolve;
|
|
6
|
+
private resolved;
|
|
7
|
+
set(): void;
|
|
8
|
+
status(status: number): void;
|
|
9
|
+
on(): void;
|
|
10
|
+
constructor(fileName: string);
|
|
11
|
+
redirect(): void;
|
|
12
|
+
send: (chunk: string) => Promise<void>;
|
|
13
|
+
write(chunk: string, _encoding?: string): void;
|
|
14
|
+
end(chunk?: string): Promise<void>;
|
|
15
|
+
isSent(): Promise<void>;
|
|
16
|
+
}
|
|
1
17
|
export declare const prerender: (html: string, dir: string) => Promise<any>;
|
package/dist/vite/prerender.js
CHANGED
|
@@ -1,28 +1,31 @@
|
|
|
1
|
-
// Pre-render the app into static HTML.
|
|
2
|
-
// run `npm run generate` and then `dist/static` can be served as a static site.
|
|
3
1
|
import fs from "node:fs/promises";
|
|
4
2
|
import path from "node:path";
|
|
5
|
-
class
|
|
3
|
+
export class FileWritingResponse {
|
|
6
4
|
fileName;
|
|
7
5
|
buffer = "";
|
|
8
6
|
dontSave = false;
|
|
9
|
-
|
|
10
|
-
|
|
7
|
+
resolve = () => { };
|
|
8
|
+
resolved = new Promise((res) => (this.resolve = res));
|
|
9
|
+
set() { }
|
|
10
|
+
status(status) {
|
|
11
|
+
if (status >= 300) {
|
|
12
|
+
this.dontSave = true;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
on() { }
|
|
11
16
|
constructor(fileName) {
|
|
12
17
|
this.fileName = fileName;
|
|
13
|
-
this.fileName = fileName;
|
|
14
18
|
}
|
|
15
|
-
status() { }
|
|
16
19
|
redirect() {
|
|
17
20
|
this.buffer = "redirected";
|
|
18
21
|
this.dontSave = true;
|
|
19
|
-
this.
|
|
22
|
+
this.resolve();
|
|
20
23
|
}
|
|
21
24
|
send = async (chunk) => {
|
|
22
25
|
this.write(chunk);
|
|
23
26
|
await this.end();
|
|
24
27
|
};
|
|
25
|
-
write(chunk) {
|
|
28
|
+
write(chunk, _encoding) {
|
|
26
29
|
this.buffer += chunk;
|
|
27
30
|
}
|
|
28
31
|
async end(chunk = "") {
|
|
@@ -30,29 +33,22 @@ class MyFileWritingResponse {
|
|
|
30
33
|
await fs.mkdir(path.dirname(this.fileName), { recursive: true });
|
|
31
34
|
await fs.writeFile(this.fileName, this.buffer + chunk);
|
|
32
35
|
}
|
|
33
|
-
this.
|
|
36
|
+
this.resolve();
|
|
37
|
+
}
|
|
38
|
+
isSent() {
|
|
39
|
+
return this.resolved;
|
|
34
40
|
}
|
|
35
41
|
}
|
|
36
42
|
export const prerender = async (html, dir) => {
|
|
37
43
|
const config = await import(path.join(dir, "dist/server/zudoku.config.js")).then((m) => m.default);
|
|
38
|
-
const
|
|
44
|
+
const module = await import(path.join(dir, "dist/server/entry.server.js"));
|
|
45
|
+
const render = module.render;
|
|
39
46
|
const { paths } = await import(path.join(dir, "dist/server/zudoku-manifest.js"));
|
|
40
47
|
for (const urlPath of paths) {
|
|
41
48
|
const req = new Request(`http://localhost${urlPath}`);
|
|
42
|
-
const response = new
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
});
|
|
46
|
-
const exit = await render({
|
|
47
|
-
template: html,
|
|
48
|
-
fetchRequest: req,
|
|
49
|
-
response,
|
|
50
|
-
config,
|
|
51
|
-
});
|
|
52
|
-
if (exit === false) {
|
|
53
|
-
continue;
|
|
54
|
-
}
|
|
55
|
-
await responsePromise;
|
|
49
|
+
const response = new FileWritingResponse(path.join(dir, "dist/", `${urlPath}.html`));
|
|
50
|
+
await render({ template: html, request: req, response, config });
|
|
51
|
+
await response.isSent();
|
|
56
52
|
}
|
|
57
53
|
return paths;
|
|
58
54
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prerender.js","sourceRoot":"","sources":["../../src/vite/prerender.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"prerender.js","sourceRoot":"","sources":["../../src/vite/prerender.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
package/src/app/entry.server.tsx
CHANGED
|
@@ -11,28 +11,28 @@ import {
|
|
|
11
11
|
import "virtual:vite-zudoku-custom-css.css";
|
|
12
12
|
import { BootstrapStatic, ServerError } from "zudoku/components";
|
|
13
13
|
import type { ZudokuConfig } from "../config/config.js";
|
|
14
|
+
import type { FileWritingResponse } from "../vite/prerender.js";
|
|
14
15
|
import "./main.css";
|
|
15
16
|
import { getRoutesByConfig } from "./main.js";
|
|
16
17
|
|
|
17
18
|
export const render = async ({
|
|
18
19
|
template,
|
|
19
|
-
|
|
20
|
-
fetchRequest,
|
|
20
|
+
request: baseRequest,
|
|
21
21
|
response,
|
|
22
22
|
config,
|
|
23
23
|
}: {
|
|
24
24
|
template: string;
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
response: express.Response;
|
|
25
|
+
request: express.Request | Request;
|
|
26
|
+
response: express.Response | FileWritingResponse;
|
|
28
27
|
config: ZudokuConfig;
|
|
29
28
|
}) => {
|
|
30
29
|
const routes = getRoutesByConfig(config);
|
|
31
30
|
const { query, dataRoutes } = createStaticHandler(routes);
|
|
32
31
|
|
|
33
|
-
const request =
|
|
34
|
-
|
|
35
|
-
|
|
32
|
+
const request =
|
|
33
|
+
baseRequest instanceof Request
|
|
34
|
+
? baseRequest
|
|
35
|
+
: createFetchRequest(baseRequest, response);
|
|
36
36
|
|
|
37
37
|
if (!request) {
|
|
38
38
|
throw new Error("Either fetchRequest or expressRequest must be provided");
|
|
@@ -121,7 +121,7 @@ export const render = async ({
|
|
|
121
121
|
|
|
122
122
|
export function createFetchRequest(
|
|
123
123
|
req: express.Request,
|
|
124
|
-
res: express.Response,
|
|
124
|
+
res: express.Response | FileWritingResponse,
|
|
125
125
|
): Request {
|
|
126
126
|
const origin = `${req.protocol}://${req.get("host")}`;
|
|
127
127
|
// Note: This had to take originalUrl into account for presumably vite's proxying
|