@catmint/adapter-vercel 0.0.0-prealpha.6 → 0.0.0-prealpha.8
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/config-gen.d.ts.map +1 -1
- package/dist/config-gen.js +20 -2
- package/dist/config-gen.js.map +1 -1
- package/dist/function-gen.js +184 -17
- package/dist/function-gen.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +72 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/dist/config-gen.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-gen.d.ts","sourceRoot":"","sources":["../src/config-gen.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;GAEG;AACH,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,KAAK,CAAC;QACV,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;QAC7C,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,UAAU,kBAAkB;IAC1B,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,WAAW,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AAE1D;;GAEG;AACH,UAAU,YAAY;IACpB,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAmBD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"config-gen.d.ts","sourceRoot":"","sources":["../src/config-gen.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAElD;;GAEG;AACH,UAAU,iBAAiB;IACzB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,KAAK,CAAC;QACV,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,MAAM,CAAC;QAC7C,GAAG,EAAE,MAAM,CAAC;QACZ,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB,CAAC,CAAC;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;GAIG;AACH,UAAU,kBAAkB;IAC1B,MAAM,EAAE,SAAS,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;IACzE,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,KAAK,WAAW,GAAG,iBAAiB,GAAG,kBAAkB,CAAC;AAE1D;;GAEG;AACH,UAAU,YAAY;IACpB,OAAO,EAAE,CAAC,CAAC;IACX,MAAM,EAAE,WAAW,EAAE,CAAC;CACvB;AAmBD;;;;;;;;GAQG;AACH,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,WAAW,GAAG,YAAY,CA4FxE"}
|
package/dist/config-gen.js
CHANGED
|
@@ -40,7 +40,11 @@ export function generateVercelConfig(manifest) {
|
|
|
40
40
|
dest: "/index",
|
|
41
41
|
});
|
|
42
42
|
// 3. Process manifest routes
|
|
43
|
+
// Skip static routes without middleware — they are served directly from
|
|
44
|
+
// the static/ directory via { handle: "filesystem" } below.
|
|
43
45
|
for (const route of [...manifest.routes, ...manifest.endpoints]) {
|
|
46
|
+
if (route.renderMode === "static" && !route.hasMiddleware)
|
|
47
|
+
continue;
|
|
44
48
|
const src = routePathToVercelSrc(route.path);
|
|
45
49
|
// For cached routes with prerender configs, route to the dedicated function
|
|
46
50
|
const routeName = route.cache && route.path !== "/"
|
|
@@ -69,11 +73,25 @@ export function generateVercelConfig(manifest) {
|
|
|
69
73
|
}
|
|
70
74
|
routes.push(vercelRoute);
|
|
71
75
|
}
|
|
72
|
-
// 4.
|
|
76
|
+
// 4. Rewrite middleware-protected static routes to the serverless function.
|
|
77
|
+
// These paths have pre-rendered HTML but must go through middleware, so
|
|
78
|
+
// they MUST NOT be served from the static/ directory by Vercel's CDN.
|
|
79
|
+
// This rewrite rule runs BEFORE { handle: "filesystem" } to intercept
|
|
80
|
+
// the request before Vercel checks for a matching static file.
|
|
81
|
+
for (const route of manifest.routes) {
|
|
82
|
+
if (route.hasMiddleware && route.renderMode === "static") {
|
|
83
|
+
const src = routePathToVercelSrc(route.path);
|
|
84
|
+
routes.push({
|
|
85
|
+
src,
|
|
86
|
+
dest: "/index",
|
|
87
|
+
});
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
// 5. Check the filesystem (static/ directory) before the catch-all.
|
|
73
91
|
// Without this, the catch-all below would intercept requests for static
|
|
74
92
|
// assets (JS, CSS, images) and send them to the serverless function.
|
|
75
93
|
routes.push({ handle: "filesystem" });
|
|
76
|
-
//
|
|
94
|
+
// 6. Fallback: rewrite all unmatched requests to the serverless function
|
|
77
95
|
// This only triggers for requests that didn't match a static file above.
|
|
78
96
|
if (manifest.mode !== "frontend") {
|
|
79
97
|
routes.push({
|
package/dist/config-gen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config-gen.js","sourceRoot":"","sources":["../src/config-gen.ts"],"names":[],"mappings":"AAAA,0EAA0E;AA2C1E;;;;;;;;GAQG;AACH,SAAS,oBAAoB,CAAC,SAAiB;IAC7C,OAAO,SAAS;SACb,OAAO,CAAC,eAAe,EAAE,SAAS,CAAC,CAAC,0BAA0B;SAC9D,OAAO,CAAC,WAAW,EAAE,SAAS,CAAC,CAAC,yBAAyB;SACzD,OAAO,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,WAAW;SAClC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,CAAC,2BAA2B;AACvD,CAAC;AAED;;;;;;;;GAQG;AACH,MAAM,UAAU,oBAAoB,CAAC,QAAqB;IACxD,MAAM,MAAM,GAAkB,EAAE,CAAC;IAEjC,wDAAwD;IACxD,MAAM,CAAC,IAAI,CAAC;QACV,GAAG,EAAE,oBAAoB;QACzB,OAAO,EAAE;YACP,eAAe,EAAE,qCAAqC;SACvD;QACD,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,iFAAiF;IACjF,MAAM,CAAC,IAAI,CAAC;QACV,GAAG,EAAE,0BAA0B;QAC/B,IAAI,EAAE,QAAQ;KACf,CAAC,CAAC;IAEH,6BAA6B;IAC7B,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAChE,MAAM,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAE7C,4EAA4E;QAC5E,MAAM,SAAS,GACb,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,GAAG;YAC/B,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC;YAC/B,CAAC,CAAC,OAAO,CAAC;QAEd,MAAM,WAAW,GAAgB;YAC/B,GAAG;YACH,IAAI,EAAE,IAAI,SAAS,EAAE;SACtB,CAAC;QAEF,IAAI,KAAK,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;YAC1B,WAAW,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;QACtC,CAAC;QAED,wCAAwC;QACxC,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAChB,MAAM,OAAO,GAA2B,EAAE,CAAC;YAC3C,MAAM,UAAU,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC9B,IAAI,KAAK,CAAC,KAAK,CAAC,UAAU,KAAK,SAAS,EAAE,CAAC;gBACzC,UAAU,CAAC,IAAI,CAAC,YAAY,KAAK,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,CAAC;gBACtD,UAAU,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;YAC5C,CAAC;YACD,OAAO,CAAC,eAAe,CAAC,GAAG,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACjD,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;gBAC7B,OAAO,CAAC,WAAW,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACrD,CAAC;YACD,WAAW,CAAC,OAAO,GAAG,OAAO,CAAC;QAChC,CAAC;QAED,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAC3B,CAAC;IAED,oEAAoE;IACpE,wEAAwE;IACxE,qEAAqE;IACrE,MAAM,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAEtC,yEAAyE;IACzE,yEAAyE;IACzE,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC;YACV,GAAG,EAAE,OAAO;YACZ,IAAI,EAAE,QAAQ;SACf,CAAC,CAAC;IACL,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC;QACV,MAAM;KACP,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"config-gen.js","sourceRoot":"","sources":["../src/config-gen.ts"],"names":[],"mappings":"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"}
|
package/dist/function-gen.js
CHANGED
|
@@ -123,6 +123,12 @@ function generateNodejsFunction(manifest, maxBodySize, headerPreset) {
|
|
|
123
123
|
return `// Auto-generated by @catmint/adapter-vercel (Node.js runtime) — do not edit
|
|
124
124
|
import * as rscEntry from "./rsc/index.js";
|
|
125
125
|
import * as ssrEntry from "./ssr/index.js";
|
|
126
|
+
import { readFile, stat } from "node:fs/promises";
|
|
127
|
+
import { join, extname } from "node:path";
|
|
128
|
+
import { fileURLToPath } from "node:url";
|
|
129
|
+
|
|
130
|
+
const __dirname = fileURLToPath(new URL(".", import.meta.url));
|
|
131
|
+
const PRERENDERED_DIR = join(__dirname, "prerendered");
|
|
126
132
|
${cacheAdapterSetup}
|
|
127
133
|
function collectBody(req) {
|
|
128
134
|
const MAX_BODY_SIZE = ${maxBodySize};
|
|
@@ -143,6 +149,28 @@ function collectBody(req) {
|
|
|
143
149
|
});
|
|
144
150
|
}
|
|
145
151
|
|
|
152
|
+
function nodeReqToWebRequest(req) {
|
|
153
|
+
const protocol = "https";
|
|
154
|
+
const host = req.headers.host || "localhost";
|
|
155
|
+
const reqUrl = new URL(req.url || "/", \`\${protocol}://\${host}\`);
|
|
156
|
+
const headers = new Headers();
|
|
157
|
+
for (const [key, value] of Object.entries(req.headers)) {
|
|
158
|
+
if (value) {
|
|
159
|
+
if (Array.isArray(value)) {
|
|
160
|
+
for (const v of value) {
|
|
161
|
+
headers.append(key, v);
|
|
162
|
+
}
|
|
163
|
+
} else {
|
|
164
|
+
headers.set(key, value);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return new Request(reqUrl.href, {
|
|
169
|
+
method: req.method || "GET",
|
|
170
|
+
headers,
|
|
171
|
+
});
|
|
172
|
+
}
|
|
173
|
+
|
|
146
174
|
async function pipeWebStreamToResponse(webStream, res) {
|
|
147
175
|
const reader = webStream.getReader();
|
|
148
176
|
try {
|
|
@@ -238,7 +266,55 @@ ${headerPreset === "baseline"
|
|
|
238
266
|
const method = (req.method || "GET").toUpperCase();
|
|
239
267
|
|
|
240
268
|
try {
|
|
241
|
-
// 1.
|
|
269
|
+
// 1. Middleware execution — runs for all routes handled by this function.
|
|
270
|
+
// For RSC flight requests, run middleware against the TARGET page path
|
|
271
|
+
// (from ?path= query param), not the literal /__catmint/rsc pathname.
|
|
272
|
+
var middlewareHeaders = null;
|
|
273
|
+
if (ssrEntry.executeMiddleware) {
|
|
274
|
+
try {
|
|
275
|
+
var middlewarePath = pathname;
|
|
276
|
+
if (pathname === "/__catmint/rsc") {
|
|
277
|
+
var rscTargetPath = url.searchParams.get("path");
|
|
278
|
+
if (rscTargetPath) middlewarePath = rscTargetPath;
|
|
279
|
+
}
|
|
280
|
+
var webRequest = nodeReqToWebRequest(req);
|
|
281
|
+
var mwResult = await ssrEntry.executeMiddleware(middlewarePath, webRequest);
|
|
282
|
+
|
|
283
|
+
if (mwResult.shortCircuit) {
|
|
284
|
+
// Middleware short-circuited — return its response directly
|
|
285
|
+
res.statusCode = mwResult.shortCircuit.status;
|
|
286
|
+
mwResult.shortCircuit.headers.forEach(function(value, key) {
|
|
287
|
+
res.setHeader(key, value);
|
|
288
|
+
});
|
|
289
|
+
var scBody = await mwResult.shortCircuit.text();
|
|
290
|
+
res.end(scBody);
|
|
291
|
+
return;
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
// Middleware passed — capture headers to merge into final response
|
|
295
|
+
if (mwResult.headers && typeof mwResult.headers.forEach === "function") {
|
|
296
|
+
middlewareHeaders = mwResult.headers;
|
|
297
|
+
}
|
|
298
|
+
} catch (err) {
|
|
299
|
+
console.error("Middleware error:", err);
|
|
300
|
+
if (!res.headersSent) {
|
|
301
|
+
res.statusCode = 500;
|
|
302
|
+
res.end("Internal Server Error");
|
|
303
|
+
}
|
|
304
|
+
return;
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
|
|
308
|
+
// Helper: merge middleware headers into the response before sending.
|
|
309
|
+
function applyMiddlewareHeaders() {
|
|
310
|
+
if (middlewareHeaders) {
|
|
311
|
+
middlewareHeaders.forEach(function(value, key) {
|
|
312
|
+
res.setHeader(key, value);
|
|
313
|
+
});
|
|
314
|
+
}
|
|
315
|
+
}
|
|
316
|
+
|
|
317
|
+
// 2. Handle server function RPC calls (/__catmint/fn/*)
|
|
242
318
|
if (pathname.startsWith("/__catmint/fn/") && ssrEntry.handleServerFn) {
|
|
243
319
|
// Enforce POST method
|
|
244
320
|
if (method !== "POST") {
|
|
@@ -281,6 +357,7 @@ ${headerPreset === "baseline"
|
|
|
281
357
|
}
|
|
282
358
|
const result = await ssrEntry.handleServerFn(pathname, parsed);
|
|
283
359
|
if (result) {
|
|
360
|
+
applyMiddlewareHeaders();
|
|
284
361
|
res.statusCode = 200;
|
|
285
362
|
res.setHeader("Content-Type", "application/json");
|
|
286
363
|
res.end(JSON.stringify(result.result));
|
|
@@ -292,7 +369,7 @@ ${headerPreset === "baseline"
|
|
|
292
369
|
return;
|
|
293
370
|
}
|
|
294
371
|
|
|
295
|
-
//
|
|
372
|
+
// 3. RSC flight stream for client-side navigation (/__catmint/rsc?path=...)
|
|
296
373
|
if (pathname === "/__catmint/rsc" && method === "GET" && rscEntry.render) {
|
|
297
374
|
const targetPath = url.searchParams.get("path");
|
|
298
375
|
if (!targetPath) {
|
|
@@ -304,6 +381,7 @@ ${headerPreset === "baseline"
|
|
|
304
381
|
try {
|
|
305
382
|
const rscResult = await rscEntry.render(targetPath);
|
|
306
383
|
if (rscResult) {
|
|
384
|
+
applyMiddlewareHeaders();
|
|
307
385
|
res.statusCode = 200;
|
|
308
386
|
res.setHeader("Content-Type", "text/x-component; charset=utf-8");
|
|
309
387
|
res.setHeader("Cache-Control", "no-cache, no-store, must-revalidate");
|
|
@@ -324,7 +402,7 @@ ${headerPreset === "baseline"
|
|
|
324
402
|
return;
|
|
325
403
|
}
|
|
326
404
|
|
|
327
|
-
//
|
|
405
|
+
// 4. API endpoint handling
|
|
328
406
|
if (ssrEntry.hasEndpoint && ssrEntry.hasEndpoint(pathname)) {
|
|
329
407
|
const fullUrl = \`https://\${req.headers.host || "localhost"}\${req.url || "/"}\`;
|
|
330
408
|
const requestInit = {
|
|
@@ -346,6 +424,7 @@ ${headerPreset === "baseline"
|
|
|
346
424
|
result.response.headers.forEach((value, key) => {
|
|
347
425
|
res.setHeader(key, value);
|
|
348
426
|
});
|
|
427
|
+
applyMiddlewareHeaders();
|
|
349
428
|
res.statusCode = result.response.status;
|
|
350
429
|
if (result.response.body) {
|
|
351
430
|
await pipeWebStreamToResponse(result.response.body, res);
|
|
@@ -361,11 +440,41 @@ ${headerPreset === "baseline"
|
|
|
361
440
|
return;
|
|
362
441
|
}
|
|
363
442
|
|
|
364
|
-
//
|
|
443
|
+
// 5. Pre-rendered pages WITH middleware: serve from function bundle.
|
|
444
|
+
// These are static routes that have middleware ancestors — their HTML
|
|
445
|
+
// was pre-rendered but placed in the function directory, not in
|
|
446
|
+
// Vercel's static/ directory (to avoid bypassing middleware).
|
|
447
|
+
if (method === "GET") {
|
|
448
|
+
let prerenderedPath = pathname;
|
|
449
|
+
if (!extname(prerenderedPath)) {
|
|
450
|
+
prerenderedPath = prerenderedPath.endsWith("/")
|
|
451
|
+
? prerenderedPath + "index.html"
|
|
452
|
+
: prerenderedPath + ".html";
|
|
453
|
+
}
|
|
454
|
+
try {
|
|
455
|
+
const prFilePath = join(PRERENDERED_DIR, prerenderedPath);
|
|
456
|
+
const prStats = await stat(prFilePath);
|
|
457
|
+
if (prStats.isFile()) {
|
|
458
|
+
const content = await readFile(prFilePath);
|
|
459
|
+
applyMiddlewareHeaders();
|
|
460
|
+
res.statusCode = 200;
|
|
461
|
+
res.setHeader("Content-Type", "text/html; charset=utf-8");
|
|
462
|
+
res.setHeader("Content-Length", content.byteLength);
|
|
463
|
+
res.setHeader("Cache-Control", "public, max-age=0, must-revalidate");
|
|
464
|
+
res.end(content);
|
|
465
|
+
return;
|
|
466
|
+
}
|
|
467
|
+
} catch {
|
|
468
|
+
// No prerendered file — continue to RSC rendering
|
|
469
|
+
}
|
|
470
|
+
}
|
|
471
|
+
|
|
472
|
+
// 6. RSC → SSR page rendering pipeline
|
|
365
473
|
if (method === "GET" && rscEntry.render) {
|
|
366
474
|
const rscResult = await rscEntry.render(pathname);
|
|
367
475
|
if (rscResult) {
|
|
368
476
|
const htmlStream = await ssrEntry.renderToHtml(rscResult.stream, rscResult.headConfig);
|
|
477
|
+
applyMiddlewareHeaders();
|
|
369
478
|
res.statusCode = 200;
|
|
370
479
|
res.setHeader("Content-Type", "text/html; charset=utf-8");
|
|
371
480
|
await pipeWebStreamToResponse(htmlStream, res);
|
|
@@ -373,7 +482,7 @@ ${headerPreset === "baseline"
|
|
|
373
482
|
}
|
|
374
483
|
}
|
|
375
484
|
|
|
376
|
-
//
|
|
485
|
+
// 7. Fallback 404
|
|
377
486
|
await sendStatusPage(res, 404, pathname);
|
|
378
487
|
} catch (err) {
|
|
379
488
|
console.error("Serverless function error:", err);
|
|
@@ -384,9 +493,12 @@ ${headerPreset === "baseline"
|
|
|
384
493
|
}
|
|
385
494
|
function generateEdgeFunction(manifest, maxBodySize, headerPreset) {
|
|
386
495
|
const cacheAdapterSetup = generateCacheAdapterSetup(manifest);
|
|
496
|
+
// Check if there are middleware-protected static routes
|
|
497
|
+
const hasMiddlewareProtected = manifest.routes.some((r) => r.hasMiddleware && r.renderMode === "static");
|
|
387
498
|
return `// Auto-generated by @catmint/adapter-vercel (Edge runtime) — do not edit
|
|
388
499
|
import * as rscEntry from "./rsc/index.js";
|
|
389
500
|
import * as ssrEntry from "./ssr/index.js";
|
|
501
|
+
${hasMiddlewareProtected ? 'import { prerenderedPages } from "./prerendered.js";' : ""}
|
|
390
502
|
${cacheAdapterSetup}
|
|
391
503
|
async function statusPageResponse(statusCode, pathname) {
|
|
392
504
|
if (rscEntry.renderStatusPage && ssrEntry.renderToHtml) {
|
|
@@ -465,7 +577,48 @@ ${headerPreset === "baseline"
|
|
|
465
577
|
}
|
|
466
578
|
|
|
467
579
|
try {
|
|
468
|
-
// 1.
|
|
580
|
+
// 1. Middleware execution — runs for all routes handled by this function.
|
|
581
|
+
// For RSC flight requests, run middleware against the TARGET page path
|
|
582
|
+
// (from ?path= query param), not the literal /__catmint/rsc pathname.
|
|
583
|
+
var middlewareHeaders = null;
|
|
584
|
+
if (ssrEntry.executeMiddleware) {
|
|
585
|
+
try {
|
|
586
|
+
var middlewarePath = pathname;
|
|
587
|
+
if (pathname === "/__catmint/rsc") {
|
|
588
|
+
var rscTargetPath = url.searchParams.get("path");
|
|
589
|
+
if (rscTargetPath) middlewarePath = rscTargetPath;
|
|
590
|
+
}
|
|
591
|
+
var mwResult = await ssrEntry.executeMiddleware(middlewarePath, request);
|
|
592
|
+
|
|
593
|
+
if (mwResult.shortCircuit) {
|
|
594
|
+
// Middleware short-circuited — return its response directly
|
|
595
|
+
return mwResult.shortCircuit;
|
|
596
|
+
}
|
|
597
|
+
|
|
598
|
+
// Middleware passed — capture headers to merge into final response
|
|
599
|
+
if (mwResult.headers && typeof mwResult.headers.forEach === "function") {
|
|
600
|
+
middlewareHeaders = mwResult.headers;
|
|
601
|
+
}
|
|
602
|
+
} catch (err) {
|
|
603
|
+
console.error("Middleware error:", err);
|
|
604
|
+
return new Response("Internal Server Error", { status: 500 });
|
|
605
|
+
}
|
|
606
|
+
}
|
|
607
|
+
|
|
608
|
+
// Helper: create a new response with middleware headers merged in
|
|
609
|
+
function applyMiddlewareHeaders(response) {
|
|
610
|
+
if (!middlewareHeaders) return response;
|
|
611
|
+
var headers = new Headers(response.headers);
|
|
612
|
+
middlewareHeaders.forEach(function(value, key) {
|
|
613
|
+
headers.set(key, value);
|
|
614
|
+
});
|
|
615
|
+
return new Response(response.body, {
|
|
616
|
+
status: response.status,
|
|
617
|
+
headers,
|
|
618
|
+
});
|
|
619
|
+
}
|
|
620
|
+
|
|
621
|
+
// 2. Handle server function RPC calls (/__catmint/fn/*)
|
|
469
622
|
if (pathname.startsWith("/__catmint/fn/") && ssrEntry.handleServerFn) {
|
|
470
623
|
// Enforce POST method
|
|
471
624
|
if (method !== "POST") {
|
|
@@ -523,10 +676,10 @@ ${headerPreset === "baseline"
|
|
|
523
676
|
}
|
|
524
677
|
const result = await ssrEntry.handleServerFn(pathname, parsed);
|
|
525
678
|
if (result) {
|
|
526
|
-
return secureResponse(JSON.stringify(result.result), {
|
|
679
|
+
return applyMiddlewareHeaders(secureResponse(JSON.stringify(result.result), {
|
|
527
680
|
status: 200,
|
|
528
681
|
headers: { "Content-Type": "application/json" },
|
|
529
|
-
});
|
|
682
|
+
}));
|
|
530
683
|
}
|
|
531
684
|
return secureResponse(
|
|
532
685
|
JSON.stringify({ error: "Server function not found" }),
|
|
@@ -534,7 +687,7 @@ ${headerPreset === "baseline"
|
|
|
534
687
|
);
|
|
535
688
|
}
|
|
536
689
|
|
|
537
|
-
//
|
|
690
|
+
// 3. RSC flight stream for client-side navigation (/__catmint/rsc?path=...)
|
|
538
691
|
if (pathname === "/__catmint/rsc" && method === "GET" && rscEntry.render) {
|
|
539
692
|
const targetPath = url.searchParams.get("path");
|
|
540
693
|
if (!targetPath) {
|
|
@@ -546,13 +699,13 @@ ${headerPreset === "baseline"
|
|
|
546
699
|
try {
|
|
547
700
|
const rscResult = await rscEntry.render(targetPath);
|
|
548
701
|
if (rscResult) {
|
|
549
|
-
return secureResponse(rscResult.stream, {
|
|
702
|
+
return applyMiddlewareHeaders(secureResponse(rscResult.stream, {
|
|
550
703
|
status: 200,
|
|
551
704
|
headers: {
|
|
552
705
|
"Content-Type": "text/x-component; charset=utf-8",
|
|
553
706
|
"Cache-Control": "no-cache, no-store, must-revalidate",
|
|
554
707
|
},
|
|
555
|
-
});
|
|
708
|
+
}));
|
|
556
709
|
}
|
|
557
710
|
return secureResponse(
|
|
558
711
|
JSON.stringify({ error: "No matching route" }),
|
|
@@ -567,12 +720,12 @@ ${headerPreset === "baseline"
|
|
|
567
720
|
}
|
|
568
721
|
}
|
|
569
722
|
|
|
570
|
-
//
|
|
723
|
+
// 4. API endpoint handling
|
|
571
724
|
if (ssrEntry.hasEndpoint && ssrEntry.hasEndpoint(pathname)) {
|
|
572
725
|
const result = await ssrEntry.handleEndpoint(pathname, method, request);
|
|
573
726
|
|
|
574
727
|
if (result) {
|
|
575
|
-
return result.response;
|
|
728
|
+
return applyMiddlewareHeaders(result.response);
|
|
576
729
|
}
|
|
577
730
|
|
|
578
731
|
return secureResponse(\`Method \${method} not allowed\`, {
|
|
@@ -581,19 +734,33 @@ ${headerPreset === "baseline"
|
|
|
581
734
|
});
|
|
582
735
|
}
|
|
583
736
|
|
|
584
|
-
//
|
|
737
|
+
// 5. Pre-rendered pages WITH middleware: serve from inlined prerendered map.
|
|
738
|
+
if (method === "GET" && typeof prerenderedPages !== "undefined") {
|
|
739
|
+
const prHtml = prerenderedPages[pathname];
|
|
740
|
+
if (prHtml) {
|
|
741
|
+
return applyMiddlewareHeaders(secureResponse(prHtml, {
|
|
742
|
+
status: 200,
|
|
743
|
+
headers: {
|
|
744
|
+
"Content-Type": "text/html; charset=utf-8",
|
|
745
|
+
"Cache-Control": "public, max-age=0, must-revalidate",
|
|
746
|
+
},
|
|
747
|
+
}));
|
|
748
|
+
}
|
|
749
|
+
}
|
|
750
|
+
|
|
751
|
+
// 6. RSC → SSR page rendering pipeline
|
|
585
752
|
if (method === "GET" && rscEntry.render) {
|
|
586
753
|
const rscResult = await rscEntry.render(pathname);
|
|
587
754
|
if (rscResult) {
|
|
588
755
|
const htmlStream = await ssrEntry.renderToHtml(rscResult.stream, rscResult.headConfig);
|
|
589
|
-
return secureResponse(htmlStream, {
|
|
756
|
+
return applyMiddlewareHeaders(secureResponse(htmlStream, {
|
|
590
757
|
status: 200,
|
|
591
758
|
headers: { "Content-Type": "text/html; charset=utf-8" },
|
|
592
|
-
});
|
|
759
|
+
}));
|
|
593
760
|
}
|
|
594
761
|
}
|
|
595
762
|
|
|
596
|
-
//
|
|
763
|
+
// 7. Fallback 404
|
|
597
764
|
return await statusPageResponse(404, pathname);
|
|
598
765
|
} catch (err) {
|
|
599
766
|
console.error("Edge function error:", err);
|
package/dist/function-gen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"function-gen.js","sourceRoot":"","sources":["../src/function-gen.ts"],"names":[],"mappings":"AAAA,kEAAkE;AA2BlE;;GAEG;AACH,SAAS,gBAAgB,CAAC,QAAqB;IAC7C,MAAM,WAAW,GAA6B,EAAE,CAAC;IACjD,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;YACtB,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;gBACnC,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;oBACtB,WAAW,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;gBACxB,CAAC;gBACD,WAAW,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED;;;;;;;GAOG;AACH,SAAS,yBAAyB,CAAC,QAAqB;IACtD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC;IAC9D,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAE7D,IAAI,CAAC,WAAW,IAAI,CAAC,eAAe,EAAE,CAAC;QACrC,OAAO,EAAE,CAAC;IACZ,CAAC;IAED,MAAM,WAAW,GAAG,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,CAAC,WAAW,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAE7D,OAAO;;;;yBAIgB,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC;0BAC1B,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoCxC,CAAC;AACF,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,OAA0B,EAC1B,OAAkB;IAElB,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,MAAM,MAAM,GAAiB;YAC3B,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,YAAY;SACzB,CAAC;QACF,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;QAC3B,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,MAAM,GAAmB;QAC7B,OAAO,EAAE,YAAY;QACrB,OAAO,EAAE,YAAY;QACrB,YAAY,EAAE,QAAQ;KACvB,CAAC;IACF,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;QACpB,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC;IAC3B,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,0BAA0B,CACxC,QAAqB,EACrB,OAA0B,EAC1B,WAAmB,EACnB,YAAiC;IAEjC,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;QACvB,OAAO,oBAAoB,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,sBAAsB,CAAC,QAAQ,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAAqB,EACrB,WAAmB,EACnB,YAAiC;IAEjC,MAAM,iBAAiB,GAAG,yBAAyB,CAAC,QAAQ,CAAC,CAAC;IAE9D,OAAO
|
|
1
|
+
{"version":3,"file":"function-gen.js","sourceRoot":"","sources":["../src/function-gen.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,cAAc,EAGf,MAAM,gBAAgB,CAAC;AAmExB;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,0DAA0D;IAC1D,OAAO,CAAC,EAAE,QAAQ,GAAG,MAAM,CAAC;IAC5B,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CACnC,OAAO,CAAC,EAAE,oBAAoB,GAC7B,cAAc,CA6MhB"}
|
package/dist/index.js
CHANGED
|
@@ -1,7 +1,52 @@
|
|
|
1
1
|
// @catmint/adapter-vercel — Vercel deployment adapter
|
|
2
|
-
import { join } from "node:path";
|
|
2
|
+
import { join, relative } from "node:path";
|
|
3
|
+
import { readFileSync, readdirSync, statSync, existsSync } from "node:fs";
|
|
3
4
|
import { generateVercelConfig } from "./config-gen.js";
|
|
4
5
|
import { generateServerlessFunction, generateVcConfig, } from "./function-gen.js";
|
|
6
|
+
/**
|
|
7
|
+
* Generate a JS module that exports a map of pathname → HTML string
|
|
8
|
+
* for prerendered pages. Used by edge runtimes that cannot read from
|
|
9
|
+
* the filesystem at runtime.
|
|
10
|
+
*/
|
|
11
|
+
function generatePrerenderedModule(prerenderedDir) {
|
|
12
|
+
const entries = [];
|
|
13
|
+
function walk(dir) {
|
|
14
|
+
if (!existsSync(dir))
|
|
15
|
+
return;
|
|
16
|
+
for (const entry of readdirSync(dir)) {
|
|
17
|
+
const fullPath = join(dir, entry);
|
|
18
|
+
const stat = statSync(fullPath);
|
|
19
|
+
if (stat.isDirectory()) {
|
|
20
|
+
walk(fullPath);
|
|
21
|
+
}
|
|
22
|
+
else if (entry.endsWith(".html")) {
|
|
23
|
+
const relPath = relative(prerenderedDir, fullPath);
|
|
24
|
+
let pathname = "/" + relPath.replace(/\\/g, "/");
|
|
25
|
+
if (pathname.endsWith("/index.html")) {
|
|
26
|
+
pathname = pathname.slice(0, -"/index.html".length) || "/";
|
|
27
|
+
}
|
|
28
|
+
else if (pathname.endsWith(".html")) {
|
|
29
|
+
pathname = pathname.slice(0, -".html".length);
|
|
30
|
+
}
|
|
31
|
+
const html = readFileSync(fullPath, "utf-8");
|
|
32
|
+
entries.push({ pathname, html });
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
walk(prerenderedDir);
|
|
37
|
+
if (entries.length === 0) {
|
|
38
|
+
return `// No prerendered pages\nexport const prerenderedPages = {};\n`;
|
|
39
|
+
}
|
|
40
|
+
const lines = [
|
|
41
|
+
"// Auto-generated prerendered page map — do not edit",
|
|
42
|
+
"export const prerenderedPages = {",
|
|
43
|
+
];
|
|
44
|
+
for (const { pathname, html } of entries) {
|
|
45
|
+
lines.push(` ${JSON.stringify(pathname)}: ${JSON.stringify(html)},`);
|
|
46
|
+
}
|
|
47
|
+
lines.push("};");
|
|
48
|
+
return lines.join("\n") + "\n";
|
|
49
|
+
}
|
|
5
50
|
/**
|
|
6
51
|
* Create a Vercel adapter for Catmint.
|
|
7
52
|
*
|
|
@@ -40,6 +85,8 @@ export default function vercelAdapter(options) {
|
|
|
40
85
|
await context.copyDir(context.clientDir, staticOutputDir);
|
|
41
86
|
context.log("@catmint/adapter-vercel: Copied client assets to static/");
|
|
42
87
|
// 3. Copy pre-rendered static pages to static/
|
|
88
|
+
// NOTE: Middleware-protected static pages are NOT copied here — they
|
|
89
|
+
// are served through the serverless function after middleware runs.
|
|
43
90
|
await context.copyDir(context.staticDir, staticOutputDir);
|
|
44
91
|
context.log("@catmint/adapter-vercel: Copied pre-rendered pages to static/");
|
|
45
92
|
// 4. Generate serverless function (only if not frontend-only mode)
|
|
@@ -53,6 +100,21 @@ export default function vercelAdapter(options) {
|
|
|
53
100
|
// import both without filename conflicts.
|
|
54
101
|
await context.copyDir(context.serverDir, join(funcDir, "ssr"));
|
|
55
102
|
await context.copyDir(rscDir, join(funcDir, "rsc"));
|
|
103
|
+
// If there are prerendered pages with middleware, handle them based
|
|
104
|
+
// on the runtime:
|
|
105
|
+
// - Node.js: copy files to function dir (served via filesystem reads)
|
|
106
|
+
// - Edge: generate a JS module with inlined HTML (no fs access at runtime)
|
|
107
|
+
if (context.prerenderedDir && existsSync(context.prerenderedDir)) {
|
|
108
|
+
if (runtime === "edge") {
|
|
109
|
+
const prerenderedModule = generatePrerenderedModule(context.prerenderedDir);
|
|
110
|
+
await context.writeFile(join(funcDir, "prerendered.js"), prerenderedModule);
|
|
111
|
+
context.log("@catmint/adapter-vercel: Generated prerendered.js module (middleware-protected, edge)");
|
|
112
|
+
}
|
|
113
|
+
else {
|
|
114
|
+
await context.copyDir(context.prerenderedDir, join(funcDir, "prerendered"));
|
|
115
|
+
context.log("@catmint/adapter-vercel: Copied prerendered HTML to function (middleware-protected)");
|
|
116
|
+
}
|
|
117
|
+
}
|
|
56
118
|
// Generate the serverless function entry as handler.js.
|
|
57
119
|
// This imports from ./ssr/index.js and ./rsc/index.js and wraps
|
|
58
120
|
// them with the Vercel serverless function handler signature.
|
|
@@ -82,6 +144,15 @@ export default function vercelAdapter(options) {
|
|
|
82
144
|
// The route function re-uses the same serverless entry and server bundle
|
|
83
145
|
await context.copyDir(context.serverDir, join(routeFuncDir, "ssr"));
|
|
84
146
|
await context.copyDir(rscDir, join(routeFuncDir, "rsc"));
|
|
147
|
+
if (context.prerenderedDir && existsSync(context.prerenderedDir)) {
|
|
148
|
+
if (runtime === "edge") {
|
|
149
|
+
const prerenderedModule = generatePrerenderedModule(context.prerenderedDir);
|
|
150
|
+
await context.writeFile(join(routeFuncDir, "prerendered.js"), prerenderedModule);
|
|
151
|
+
}
|
|
152
|
+
else {
|
|
153
|
+
await context.copyDir(context.prerenderedDir, join(routeFuncDir, "prerendered"));
|
|
154
|
+
}
|
|
155
|
+
}
|
|
85
156
|
await context.writeFile(join(routeFuncDir, "handler.js"), functionEntry);
|
|
86
157
|
await context.writeFile(join(routeFuncDir, "package.json"), JSON.stringify({ type: "module" }, null, 2));
|
|
87
158
|
await context.writeFile(join(routeFuncDir, ".vc-config.json"), JSON.stringify(vcConfig, null, 2));
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAOtD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@catmint/adapter-vercel",
|
|
3
|
-
"version": "0.0.0-prealpha.
|
|
3
|
+
"version": "0.0.0-prealpha.8",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": false,
|
|
6
6
|
"license": "MIT",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
}
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"catmint": "0.0.0-prealpha.
|
|
17
|
+
"catmint": "0.0.0-prealpha.8"
|
|
18
18
|
},
|
|
19
19
|
"devDependencies": {
|
|
20
20
|
"typescript": "^5.7.0"
|