rasengan 1.0.0-beta.32 → 1.0.0-beta.33
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.
|
@@ -49,17 +49,18 @@ import path, { join } from "node:path";
|
|
|
49
49
|
import { createStaticHandler, createStaticRouter, } from "react-router-dom/server.js";
|
|
50
50
|
// @ts-ignore
|
|
51
51
|
import { createFetchRequest } from "rasengan";
|
|
52
|
+
import { fileTypeFromBuffer } from "file-type";
|
|
52
53
|
// // @ts-ignore
|
|
53
54
|
// import { handleRequest } from "rasengan";
|
|
54
55
|
// // @ts-ignore
|
|
55
56
|
// import type { Context } from "@netlify/functions"
|
|
56
57
|
export default (function (req, context) { return __awaiter(void 0, void 0, void 0, function () {
|
|
57
|
-
var url, host, appPath, err_1, segments, segmentsWithoutOrigin, _i, segments_1, segment, filePath, file, otherFile, file, templateHtml, serverFilePath, bootstrapDirPath, entry, bootstrap, styles, render, staticRoutes, loadTemplateHtml, handler, fetchRequest, context_1, status_1, redirect, helmetContext, router, rendered, html, e_1;
|
|
58
|
+
var url, host, appPath, err_1, segments, segmentsWithoutOrigin, _i, segments_1, segment, filePath, file, otherFile, result, mimeType, file, templateHtml, serverFilePath, bootstrapDirPath, entry, bootstrap, styles, render, staticRoutes, loadTemplateHtml, handler, fetchRequest, context_1, status_1, redirect, helmetContext, router, rendered, html, e_1;
|
|
58
59
|
var _a;
|
|
59
60
|
return __generator(this, function (_b) {
|
|
60
61
|
switch (_b.label) {
|
|
61
62
|
case 0:
|
|
62
|
-
_b.trys.push([0,
|
|
63
|
+
_b.trys.push([0, 14, , 15]);
|
|
63
64
|
url = req.url;
|
|
64
65
|
host = req.headers.get("host");
|
|
65
66
|
appPath = process.cwd();
|
|
@@ -83,7 +84,7 @@ export default (function (req, context) { return __awaiter(void 0, void 0, void
|
|
|
83
84
|
if (url === "/manifest.json") {
|
|
84
85
|
return [2 /*return*/, new Response(path.resolve(join(appPath, "dist/client/manifest.json")))];
|
|
85
86
|
}
|
|
86
|
-
if (!url.includes("/assets")) return [3 /*break*/,
|
|
87
|
+
if (!url.includes("/assets")) return [3 /*break*/, 8];
|
|
87
88
|
segments = url.split("/");
|
|
88
89
|
segmentsWithoutOrigin = __spreadArray([], segments, true);
|
|
89
90
|
for (_i = 0, segments_1 = segments; _i < segments_1.length; _i++) {
|
|
@@ -108,16 +109,20 @@ export default (function (req, context) { return __awaiter(void 0, void 0, void
|
|
|
108
109
|
return [4 /*yield*/, fs.readFile(filePath)];
|
|
109
110
|
case 6:
|
|
110
111
|
otherFile = _b.sent();
|
|
112
|
+
return [4 /*yield*/, fileTypeFromBuffer(otherFile)];
|
|
113
|
+
case 7:
|
|
114
|
+
result = _b.sent();
|
|
115
|
+
mimeType = result ? result.mime : url.endsWith(".svg") ? "image/svg+xml" : "application/octet-stream";
|
|
111
116
|
return [2 /*return*/, new Response(otherFile, {
|
|
112
117
|
headers: {
|
|
113
|
-
"Content-Type":
|
|
118
|
+
"Content-Type": mimeType,
|
|
114
119
|
"Cache-Control": "max-age=31536000",
|
|
115
120
|
},
|
|
116
121
|
})];
|
|
117
|
-
case 7:
|
|
118
|
-
if (!(url.endsWith(".js") || url.endsWith(".css"))) return [3 /*break*/, 9];
|
|
119
|
-
return [4 /*yield*/, fs.readFile(url, "utf-8")];
|
|
120
122
|
case 8:
|
|
123
|
+
if (!(url.endsWith(".js") || url.endsWith(".css"))) return [3 /*break*/, 10];
|
|
124
|
+
return [4 /*yield*/, fs.readFile(url, "utf-8")];
|
|
125
|
+
case 9:
|
|
121
126
|
file = _b.sent();
|
|
122
127
|
return [2 /*return*/, new Response(file, {
|
|
123
128
|
headers: {
|
|
@@ -125,12 +130,12 @@ export default (function (req, context) { return __awaiter(void 0, void 0, void
|
|
|
125
130
|
"Cache-Control": "max-age=31536000",
|
|
126
131
|
},
|
|
127
132
|
})];
|
|
128
|
-
case
|
|
133
|
+
case 10:
|
|
129
134
|
templateHtml = "";
|
|
130
135
|
serverFilePath = join(appPath, "dist/server/entry-server.js");
|
|
131
136
|
bootstrapDirPath = join(appPath, "dist/client/assets");
|
|
132
137
|
return [4 /*yield*/, import(serverFilePath)];
|
|
133
|
-
case
|
|
138
|
+
case 11:
|
|
134
139
|
entry = _b.sent();
|
|
135
140
|
bootstrap = "/assets/" +
|
|
136
141
|
fsSync
|
|
@@ -144,7 +149,7 @@ export default (function (req, context) { return __awaiter(void 0, void 0, void
|
|
|
144
149
|
handler = createStaticHandler(staticRoutes);
|
|
145
150
|
fetchRequest = createFetchRequest(req, host);
|
|
146
151
|
return [4 /*yield*/, handler.query(fetchRequest)];
|
|
147
|
-
case
|
|
152
|
+
case 12:
|
|
148
153
|
context_1 = _b.sent();
|
|
149
154
|
status_1 = context_1.status;
|
|
150
155
|
if (status_1 === 302) {
|
|
@@ -156,7 +161,7 @@ export default (function (req, context) { return __awaiter(void 0, void 0, void
|
|
|
156
161
|
helmetContext = {};
|
|
157
162
|
router = createStaticRouter(handler.dataRoutes, context_1);
|
|
158
163
|
return [4 /*yield*/, render(router, context_1, helmetContext)];
|
|
159
|
-
case
|
|
164
|
+
case 13:
|
|
160
165
|
rendered = _b.sent();
|
|
161
166
|
// Load template html
|
|
162
167
|
if (!templateHtml) {
|
|
@@ -171,13 +176,13 @@ export default (function (req, context) { return __awaiter(void 0, void 0, void
|
|
|
171
176
|
"Cache-Control": "max-age=31536000",
|
|
172
177
|
},
|
|
173
178
|
})];
|
|
174
|
-
case
|
|
179
|
+
case 14:
|
|
175
180
|
e_1 = _b.sent();
|
|
176
181
|
console.log(e_1.stack);
|
|
177
182
|
return [2 /*return*/, new Response(e_1.stack, {
|
|
178
183
|
status: 500,
|
|
179
184
|
})];
|
|
180
|
-
case
|
|
185
|
+
case 15: return [2 /*return*/];
|
|
181
186
|
}
|
|
182
187
|
});
|
|
183
188
|
}); });
|
|
@@ -49,15 +49,16 @@ import path, { join } from "node:path";
|
|
|
49
49
|
import { createStaticHandler, createStaticRouter, } from "react-router-dom/server.js";
|
|
50
50
|
// @ts-ignore
|
|
51
51
|
import { createFetchRequest } from "rasengan";
|
|
52
|
+
import { fileTypeFromBuffer } from "file-type";
|
|
52
53
|
// Create server for production only
|
|
53
54
|
export default function handler(req, res) {
|
|
54
55
|
var _a;
|
|
55
56
|
return __awaiter(this, void 0, void 0, function () {
|
|
56
|
-
var url, host, appPath, err_1, segments, segmentsWithoutOrigin, _i, segments_1, segment, filePath, file, otherFile, file, templateHtml, serverFilePath, bootstrapDirPath, entry, bootstrap, styles, render, staticRoutes, loadTemplateHtml, handler_1, fetchRequest, context, status_1, redirect, helmetContext, router, rendered, html, e_1;
|
|
57
|
+
var url, host, appPath, err_1, segments, segmentsWithoutOrigin, _i, segments_1, segment, filePath, file, otherFile, result, mimeType, file, templateHtml, serverFilePath, bootstrapDirPath, entry, bootstrap, styles, render, staticRoutes, loadTemplateHtml, handler_1, fetchRequest, context, status_1, redirect, helmetContext, router, rendered, html, e_1;
|
|
57
58
|
return __generator(this, function (_b) {
|
|
58
59
|
switch (_b.label) {
|
|
59
60
|
case 0:
|
|
60
|
-
_b.trys.push([0,
|
|
61
|
+
_b.trys.push([0, 14, , 15]);
|
|
61
62
|
url = req.url;
|
|
62
63
|
host = req.headers.host;
|
|
63
64
|
appPath = process.cwd();
|
|
@@ -81,7 +82,7 @@ export default function handler(req, res) {
|
|
|
81
82
|
if (url === "/manifest.json") {
|
|
82
83
|
return [2 /*return*/, res.send(path.resolve(join(appPath, "dist/client/manifest.json")))];
|
|
83
84
|
}
|
|
84
|
-
if (!url.includes("/assets")) return [3 /*break*/,
|
|
85
|
+
if (!url.includes("/assets")) return [3 /*break*/, 8];
|
|
85
86
|
segments = url.split("/");
|
|
86
87
|
segmentsWithoutOrigin = __spreadArray([], segments, true);
|
|
87
88
|
for (_i = 0, segments_1 = segments; _i < segments_1.length; _i++) {
|
|
@@ -106,28 +107,32 @@ export default function handler(req, res) {
|
|
|
106
107
|
return [4 /*yield*/, fs.readFile(filePath)];
|
|
107
108
|
case 6:
|
|
108
109
|
otherFile = _b.sent();
|
|
110
|
+
return [4 /*yield*/, fileTypeFromBuffer(otherFile)];
|
|
111
|
+
case 7:
|
|
112
|
+
result = _b.sent();
|
|
113
|
+
mimeType = result ? result.mime : url.endsWith(".svg") ? "image/svg+xml" : "application/octet-stream";
|
|
109
114
|
return [2 /*return*/, new Response(otherFile, {
|
|
110
115
|
headers: {
|
|
111
|
-
"Content-Type":
|
|
116
|
+
"Content-Type": mimeType,
|
|
112
117
|
"Cache-Control": "max-age=31536000",
|
|
113
118
|
},
|
|
114
119
|
})];
|
|
115
|
-
case 7:
|
|
116
|
-
if (!(url.endsWith(".js") || url.endsWith(".css"))) return [3 /*break*/, 9];
|
|
117
|
-
return [4 /*yield*/, fs.readFile(url, "utf-8")];
|
|
118
120
|
case 8:
|
|
121
|
+
if (!(url.endsWith(".js") || url.endsWith(".css"))) return [3 /*break*/, 10];
|
|
122
|
+
return [4 /*yield*/, fs.readFile(url, "utf-8")];
|
|
123
|
+
case 9:
|
|
119
124
|
file = _b.sent();
|
|
120
125
|
return [2 /*return*/, res
|
|
121
126
|
.status(200)
|
|
122
127
|
.setHeader("Content-Type", url.endsWith(".js") ? "text/javascript" : "text/css")
|
|
123
128
|
.setHeader("Cache-Control", "max-age=31536000")
|
|
124
129
|
.end(file)];
|
|
125
|
-
case
|
|
130
|
+
case 10:
|
|
126
131
|
templateHtml = "";
|
|
127
132
|
serverFilePath = join(appPath, "dist/server/entry-server.js");
|
|
128
133
|
bootstrapDirPath = join(appPath, "dist/client/assets");
|
|
129
134
|
return [4 /*yield*/, import(serverFilePath)];
|
|
130
|
-
case
|
|
135
|
+
case 11:
|
|
131
136
|
entry = _b.sent();
|
|
132
137
|
bootstrap = "/assets/" +
|
|
133
138
|
fsSync
|
|
@@ -141,7 +146,7 @@ export default function handler(req, res) {
|
|
|
141
146
|
handler_1 = createStaticHandler(staticRoutes);
|
|
142
147
|
fetchRequest = createFetchRequest(req, host);
|
|
143
148
|
return [4 /*yield*/, handler_1.query(fetchRequest)];
|
|
144
|
-
case
|
|
149
|
+
case 12:
|
|
145
150
|
context = _b.sent();
|
|
146
151
|
status_1 = context.status;
|
|
147
152
|
if (status_1 === 302) {
|
|
@@ -152,7 +157,7 @@ export default function handler(req, res) {
|
|
|
152
157
|
helmetContext = {};
|
|
153
158
|
router = createStaticRouter(handler_1.dataRoutes, context);
|
|
154
159
|
return [4 /*yield*/, render(router, context, helmetContext)];
|
|
155
|
-
case
|
|
160
|
+
case 13:
|
|
156
161
|
rendered = _b.sent();
|
|
157
162
|
// Load template html
|
|
158
163
|
if (!templateHtml) {
|
|
@@ -165,12 +170,12 @@ export default function handler(req, res) {
|
|
|
165
170
|
.setHeader("Content-Type", "text/html")
|
|
166
171
|
.setHeader("Cache-Control", "max-age=31536000")
|
|
167
172
|
.end(html)];
|
|
168
|
-
case
|
|
173
|
+
case 14:
|
|
169
174
|
e_1 = _b.sent();
|
|
170
175
|
console.log(e_1.stack);
|
|
171
176
|
res.status(500).end(e_1.stack);
|
|
172
|
-
return [3 /*break*/,
|
|
173
|
-
case
|
|
177
|
+
return [3 /*break*/, 15];
|
|
178
|
+
case 15: return [2 /*return*/];
|
|
174
179
|
}
|
|
175
180
|
});
|
|
176
181
|
});
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "rasengan",
|
|
3
3
|
"private": false,
|
|
4
|
-
"version": "1.0.0-beta.
|
|
4
|
+
"version": "1.0.0-beta.33",
|
|
5
5
|
"description": "The modern frontend framework for React",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"main": "lib/esm/index.js",
|
|
@@ -42,18 +42,15 @@
|
|
|
42
42
|
"scripts": {
|
|
43
43
|
"dev": "node server",
|
|
44
44
|
"preview": "cross-env NODE_ENV=production node server",
|
|
45
|
-
|
|
46
45
|
"build": "npm run build:client && npm run build:server",
|
|
47
46
|
"build:client": "vite build --ssrManifest --outDir dist/client",
|
|
48
47
|
"build:server": "vite build --ssr node_modules/rasengan/lib/esm/entries/entry-server.js --outDir dist/server",
|
|
49
48
|
"compile": "tsc -b ./tsconfig.esm.json ./tsconfig.types.json",
|
|
50
49
|
"build:lib:clean": "rm -rf ./lib",
|
|
51
50
|
"build:lib:all": "npm-run-all build:lib:clean compile && node ./src/scripts/copy-extra-files.js",
|
|
52
|
-
|
|
53
51
|
"deploy": "npm publish --access public",
|
|
54
52
|
"deploy:beta": "npm run deploy --tag beta",
|
|
55
53
|
"pack": "npm pack --pack-destination ./../packages/rasengan/"
|
|
56
|
-
|
|
57
54
|
},
|
|
58
55
|
"dependencies": {
|
|
59
56
|
"@vercel/node": "^3.0.14",
|
|
@@ -64,6 +61,7 @@
|
|
|
64
61
|
"cross-spawn": "^7.0.3",
|
|
65
62
|
"execa": "^8.0.1",
|
|
66
63
|
"express": "^4.18.2",
|
|
64
|
+
"file-type": "^19.0.0",
|
|
67
65
|
"inquirer": "^9.2.12",
|
|
68
66
|
"keypress": "^0.2.1",
|
|
69
67
|
"node-fetch": "^3.3.2",
|
|
@@ -75,12 +73,12 @@
|
|
|
75
73
|
"vite-plugin-css-injected-by-js": "^3.5.0"
|
|
76
74
|
},
|
|
77
75
|
"peerDependencies": {
|
|
78
|
-
"@types/node": "^18.0.0 || >=20.0.0",
|
|
79
76
|
"@netlify/functions": "^2.6.0",
|
|
77
|
+
"@types/node": "^18.0.0 || >=20.0.0",
|
|
78
|
+
"less": "*",
|
|
80
79
|
"react": "^18.2.0",
|
|
81
80
|
"react-dom": "^18.2.0",
|
|
82
81
|
"sass": "*",
|
|
83
|
-
"less": "*",
|
|
84
82
|
"stylus": "*",
|
|
85
83
|
"vite": "^5.2.0"
|
|
86
84
|
},
|