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, 13, , 14]);
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*/, 7];
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": "application/octet-stream",
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 9:
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 10:
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 11:
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 12:
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 13:
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 14: return [2 /*return*/];
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, 13, , 14]);
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*/, 7];
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": "application/octet-stream",
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 9:
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 10:
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 11:
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 12:
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 13:
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*/, 14];
173
- case 14: return [2 /*return*/];
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.32",
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
  },