jeasx 1.2.2 → 1.4.0
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/package.json +7 -7
- package/serverless.js +9 -7
- package/serverless.ts +13 -9
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jeasx",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.0",
|
|
4
4
|
"description": "Jeasx - the ease of JSX with the power of SSR",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"jsx",
|
|
@@ -25,14 +25,14 @@
|
|
|
25
25
|
},
|
|
26
26
|
"dependencies": {
|
|
27
27
|
"@fastify/cookie": "11.0.2",
|
|
28
|
-
"@fastify/formbody": "8.0.
|
|
29
|
-
"@fastify/multipart": "9.0.
|
|
30
|
-
"@fastify/static": "8.0
|
|
31
|
-
"@types/node": "22.
|
|
28
|
+
"@fastify/formbody": "8.0.2",
|
|
29
|
+
"@fastify/multipart": "9.0.3",
|
|
30
|
+
"@fastify/static": "8.1.0",
|
|
31
|
+
"@types/node": "22.13.1",
|
|
32
32
|
"dotenv-flow": "4.1.0",
|
|
33
|
-
"esbuild": "0.
|
|
33
|
+
"esbuild": "0.25.0",
|
|
34
34
|
"fastify": "5.2.1",
|
|
35
|
-
"jsx-async-runtime": "0.
|
|
35
|
+
"jsx-async-runtime": "0.7.1",
|
|
36
36
|
"pm2": "5.4.3"
|
|
37
37
|
},
|
|
38
38
|
"scripts": {
|
package/serverless.js
CHANGED
|
@@ -37,6 +37,7 @@ serverless.register(fastifyStatic, {
|
|
|
37
37
|
}
|
|
38
38
|
} : void 0
|
|
39
39
|
});
|
|
40
|
+
serverless.decorateRequest("route", "");
|
|
40
41
|
serverless.decorateRequest("path", "");
|
|
41
42
|
serverless.addHook("onRequest", async (request, reply) => {
|
|
42
43
|
const index = request.url.indexOf("?");
|
|
@@ -49,7 +50,7 @@ serverless.all("*", async (request, reply) => {
|
|
|
49
50
|
const context = {};
|
|
50
51
|
const path = request.path;
|
|
51
52
|
for (const route of generateRoutes(path)) {
|
|
52
|
-
const modulePath = join(cwd, "dist", route);
|
|
53
|
+
const modulePath = join(cwd, "dist", `routes${route}.js`);
|
|
53
54
|
let module = modulesCache[modulePath];
|
|
54
55
|
if (module === null) {
|
|
55
56
|
continue;
|
|
@@ -69,6 +70,7 @@ serverless.all("*", async (request, reply) => {
|
|
|
69
70
|
module = modulesCache[modulePath] = await import(`file://${modulePath}`);
|
|
70
71
|
}
|
|
71
72
|
}
|
|
73
|
+
request.route = route;
|
|
72
74
|
response = await module.default.call(context, {
|
|
73
75
|
request,
|
|
74
76
|
reply,
|
|
@@ -78,9 +80,9 @@ serverless.all("*", async (request, reply) => {
|
|
|
78
80
|
return;
|
|
79
81
|
} else if (typeof response === "string" || Buffer.isBuffer(response)) {
|
|
80
82
|
break;
|
|
81
|
-
} else if (route.endsWith("/[...guard]
|
|
83
|
+
} else if (route.endsWith("/[...guard]") && (response === void 0 || !isJSX(response))) {
|
|
82
84
|
continue;
|
|
83
|
-
} else if (route.endsWith("/[404]
|
|
85
|
+
} else if (route.endsWith("/[404]")) {
|
|
84
86
|
reply.status(404);
|
|
85
87
|
break;
|
|
86
88
|
} else if (reply.statusCode === 404) {
|
|
@@ -100,10 +102,10 @@ function generateRoutes(path) {
|
|
|
100
102
|
const segments = generateSegments(path);
|
|
101
103
|
const edges = generateEdges(segments[0]);
|
|
102
104
|
return [
|
|
103
|
-
...segments.toReversed().map((segment) =>
|
|
104
|
-
...edges.map((edge) =>
|
|
105
|
-
...segments.map((segment) =>
|
|
106
|
-
...segments.map((segment) =>
|
|
105
|
+
...segments.toReversed().map((segment) => `${segment}/[...guard]`),
|
|
106
|
+
...edges.map((edge) => `${edge}`),
|
|
107
|
+
...segments.map((segment) => `${segment}/[...path]`),
|
|
108
|
+
...segments.map((segment) => `${segment}/[404]`)
|
|
107
109
|
];
|
|
108
110
|
}
|
|
109
111
|
function generateSegments(path) {
|
package/serverless.ts
CHANGED
|
@@ -50,13 +50,14 @@ serverless.register(fastifyStatic, {
|
|
|
50
50
|
: undefined,
|
|
51
51
|
});
|
|
52
52
|
|
|
53
|
-
// Add path without query parameters to request
|
|
54
53
|
declare module "fastify" {
|
|
55
54
|
interface FastifyRequest {
|
|
56
|
-
path: string;
|
|
55
|
+
path: string; // Path without query parameters
|
|
56
|
+
route: string; // Path to resolved route handler
|
|
57
57
|
}
|
|
58
58
|
}
|
|
59
59
|
|
|
60
|
+
serverless.decorateRequest("route", "");
|
|
60
61
|
serverless.decorateRequest("path", "");
|
|
61
62
|
serverless.addHook("onRequest", async (request, reply) => {
|
|
62
63
|
const index = request.url.indexOf("?");
|
|
@@ -81,7 +82,7 @@ serverless.all("*", async (request, reply) => {
|
|
|
81
82
|
|
|
82
83
|
// Execute route handlers for current request
|
|
83
84
|
for (const route of generateRoutes(path)) {
|
|
84
|
-
const modulePath = join(cwd, "dist", route);
|
|
85
|
+
const modulePath = join(cwd, "dist", `routes${route}.js`);
|
|
85
86
|
|
|
86
87
|
// Resolve module via cache
|
|
87
88
|
let module = modulesCache[modulePath];
|
|
@@ -119,6 +120,9 @@ serverless.all("*", async (request, reply) => {
|
|
|
119
120
|
}
|
|
120
121
|
}
|
|
121
122
|
|
|
123
|
+
// Store current route in request
|
|
124
|
+
request.route = route;
|
|
125
|
+
|
|
122
126
|
// Call the handler with request, reply and optional props
|
|
123
127
|
response = await module.default.call(context, {
|
|
124
128
|
request,
|
|
@@ -131,11 +135,11 @@ serverless.all("*", async (request, reply) => {
|
|
|
131
135
|
} else if (typeof response === "string" || Buffer.isBuffer(response)) {
|
|
132
136
|
break;
|
|
133
137
|
} else if (
|
|
134
|
-
route.endsWith("/[...guard]
|
|
138
|
+
route.endsWith("/[...guard]") &&
|
|
135
139
|
(response === undefined || !isJSX(response))
|
|
136
140
|
) {
|
|
137
141
|
continue;
|
|
138
|
-
} else if (route.endsWith("/[404]
|
|
142
|
+
} else if (route.endsWith("/[404]")) {
|
|
139
143
|
reply.status(404);
|
|
140
144
|
break;
|
|
141
145
|
} else if (reply.statusCode === 404) {
|
|
@@ -174,10 +178,10 @@ function generateRoutes(path: string): string[] {
|
|
|
174
178
|
return [
|
|
175
179
|
...segments
|
|
176
180
|
.toReversed() // [...guard]s are evaluated from top to bottom
|
|
177
|
-
.map((segment) =>
|
|
178
|
-
...edges.map((edge) =>
|
|
179
|
-
...segments.map((segment) =>
|
|
180
|
-
...segments.map((segment) =>
|
|
181
|
+
.map((segment) => `${segment}/[...guard]`),
|
|
182
|
+
...edges.map((edge) => `${edge}`),
|
|
183
|
+
...segments.map((segment) => `${segment}/[...path]`),
|
|
184
|
+
...segments.map((segment) => `${segment}/[404]`),
|
|
181
185
|
];
|
|
182
186
|
}
|
|
183
187
|
|