@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.
@@ -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,CAyExE"}
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"}
@@ -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. Check the filesystem (static/ directory) before the catch-all.
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
- // 5. Fallback: rewrite all unmatched requests to the serverless function
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({
@@ -1 +1 @@
1
- {"version":3,"file":"config-gen.js","sourceRoot":"","sources":["../src/config-gen.ts"],"names":[],"mappings":"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"}
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,wEAAwE;IACxE,4DAA4D;IAC5D,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QAChE,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,aAAa;YAAE,SAAS;QAEpE,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,4EAA4E;IAC5E,wEAAwE;IACxE,sEAAsE;IACtE,sEAAsE;IACtE,+DAA+D;IAC/D,KAAK,MAAM,KAAK,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpC,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,UAAU,KAAK,QAAQ,EAAE,CAAC;YACzD,MAAM,GAAG,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC7C,MAAM,CAAC,IAAI,CAAC;gBACV,GAAG;gBACH,IAAI,EAAE,QAAQ;aACf,CAAC,CAAC;QACL,CAAC;IACH,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"}
@@ -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. Handle server function RPC calls (/__catmint/fn/*)
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
- // 2. RSC flight stream for client-side navigation (/__catmint/rsc?path=...)
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
- // 3. API endpoint handling
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
- // 4. RSC SSR page rendering pipeline
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
- // 5. Fallback 404
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. Handle server function RPC calls (/__catmint/fn/*)
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
- // 2. RSC flight stream for client-side navigation (/__catmint/rsc?path=...)
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
- // 3. API endpoint handling
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
- // 4. RSC SSR page rendering pipeline
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
- // 5. Fallback 404
763
+ // 7. Fallback 404
597
764
  return await statusPageResponse(404, pathname);
598
765
  } catch (err) {
599
766
  console.error("Edge function error:", err);
@@ -1 +1 @@
1
- {"version":3,"file":"function-gen.js","sourceRoot":"","sources":["../src/function-gen.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"function-gen.js","sourceRoot":"","sources":["../src/function-gen.ts"],"names":[],"mappings":"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"}
@@ -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;AAoBxB;;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,CAgKhB"}
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":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,sDAAsD;AAOtD,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAC1E,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EACL,0BAA0B,EAC1B,gBAAgB,GACjB,MAAM,mBAAmB,CAAC;AAE3B;;;;GAIG;AACH,SAAS,yBAAyB,CAAC,cAAsB;IACvD,MAAM,OAAO,GAA8C,EAAE,CAAC;IAE9D,SAAS,IAAI,CAAC,GAAW;QACvB,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,OAAO;QAC7B,KAAK,MAAM,KAAK,IAAI,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;YACrC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAClC,MAAM,IAAI,GAAG,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAChC,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;gBACvB,IAAI,CAAC,QAAQ,CAAC,CAAC;YACjB,CAAC;iBAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;gBACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;gBACnD,IAAI,QAAQ,GAAG,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;gBACjD,IAAI,QAAQ,CAAC,QAAQ,CAAC,aAAa,CAAC,EAAE,CAAC;oBACrC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,GAAG,CAAC;gBAC7D,CAAC;qBAAM,IAAI,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;oBACtC,QAAQ,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBAChD,CAAC;gBACD,MAAM,IAAI,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBAC7C,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YACnC,CAAC;QACH,CAAC;IACH,CAAC;IAED,IAAI,CAAC,cAAc,CAAC,CAAC;IAErB,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,gEAAgE,CAAC;IAC1E,CAAC;IAED,MAAM,KAAK,GAAG;QACZ,sDAAsD;QACtD,mCAAmC;KACpC,CAAC;IACF,KAAK,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,OAAO,EAAE,CAAC;QACzC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACxE,CAAC;IACD,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACjB,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;AACjC,CAAC;AA+BD;;;;;;;;;;;;;;GAcG;AACH,MAAM,CAAC,OAAO,UAAU,aAAa,CACnC,OAA8B;IAE9B,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,IAAI,QAAQ,CAAC;IAC7C,MAAM,OAAO,GAAG,OAAO,EAAE,OAAO,CAAC;IACjC,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,SAAS,CAAC;IAEtD,OAAO;QACL,IAAI,EAAE,yBAAyB;QAC/B,KAAK,CAAC,KAAK,CAAC,OAAuB;YACjC,OAAO,CAAC,GAAG,CACT,mEAAmE,CACpE,CAAC;YAEF,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAuB,CAAC;YAEjD,sCAAsC;YACtC,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gBACvB,yBAAyB,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAC/C,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CACpB,OAAO,CAAC,SAAS,EACjB,IAAI,EACJ,IAAI,EACJ,SAAS,EACT,QAAQ,CACT,CAAC;YAEF,0BAA0B;YAC1B,MAAM,UAAU,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;YAClD,MAAM,OAAO,CAAC,SAAS,CACrB,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,EAC9B,IAAI,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CACpC,CAAC;YACF,OAAO,CAAC,GAAG,CACT,+DAA+D,CAChE,CAAC;YAEF,mCAAmC;YACnC,MAAM,eAAe,GAAG,IAAI,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YAClD,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CAAC,0DAA0D,CAAC,CAAC;YAExE,+CAA+C;YAC/C,qEAAqE;YACrE,oEAAoE;YACpE,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,eAAe,CAAC,CAAC;YAC1D,OAAO,CAAC,GAAG,CACT,+DAA+D,CAChE,CAAC;YAEF,mEAAmE;YACnE,IAAI,QAAQ,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gBACjC,MAAM,OAAO,GAAG,IAAI,CAAC,SAAS,EAAE,WAAW,EAAE,YAAY,CAAC,CAAC;gBAE3D,4DAA4D;gBAC5D,qEAAqE;gBACrE,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBAEpD,kEAAkE;gBAClE,iEAAiE;gBACjE,0CAA0C;gBAC1C,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBAC/D,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;gBAEpD,oEAAoE;gBACpE,kBAAkB;gBAClB,sEAAsE;gBACtE,2EAA2E;gBAC3E,IAAI,OAAO,CAAC,cAAc,IAAI,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;oBACjE,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;wBACvB,MAAM,iBAAiB,GAAG,yBAAyB,CACjD,OAAO,CAAC,cAAc,CACvB,CAAC;wBACF,MAAM,OAAO,CAAC,SAAS,CACrB,IAAI,CAAC,OAAO,EAAE,gBAAgB,CAAC,EAC/B,iBAAiB,CAClB,CAAC;wBACF,OAAO,CAAC,GAAG,CACT,uFAAuF,CACxF,CAAC;oBACJ,CAAC;yBAAM,CAAC;wBACN,MAAM,OAAO,CAAC,OAAO,CACnB,OAAO,CAAC,cAAc,EACtB,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAC7B,CAAC;wBACF,OAAO,CAAC,GAAG,CACT,qFAAqF,CACtF,CAAC;oBACJ,CAAC;gBACH,CAAC;gBAED,wDAAwD;gBACxD,gEAAgE;gBAChE,8DAA8D;gBAC9D,MAAM,aAAa,GAAG,0BAA0B,CAC9C,QAAQ,EACR,OAAO,EACP,WAAW,EACX,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CACtC,CAAC;gBACF,MAAM,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,OAAO,EAAE,YAAY,CAAC,EAAE,aAAa,CAAC,CAAC;gBAEpE,uEAAuE;gBACvE,uEAAuE;gBACvE,oEAAoE;gBACpE,MAAM,OAAO,CAAC,SAAS,CACrB,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,EAC7B,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAC5C,CAAC;gBAEF,2BAA2B;gBAC3B,MAAM,QAAQ,GAAG,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;gBACpD,MAAM,OAAO,CAAC,SAAS,CACrB,IAAI,CAAC,OAAO,EAAE,iBAAiB,CAAC,EAChC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAClC,CAAC;gBAEF,OAAO,CAAC,GAAG,CACT,iFAAiF,CAClF,CAAC;gBAEF,gDAAgD;gBAChD,MAAM,WAAW,GAAG,QAAQ,CAAC,KAAK,EAAE,YAAY,EAAE,WAAW,CAAC;gBAC9D,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBAE5D,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,IAAI,WAAW,EAAE,CAAC;oBAC3C,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;wBACjC,wDAAwD;wBACxD,2DAA2D;wBAC3D,MAAM,SAAS,GACb,KAAK,CAAC,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;wBAE/D,2DAA2D;wBAC3D,IAAI,SAAS,KAAK,OAAO;4BAAE,SAAS;wBAEpC,+CAA+C;wBAC/C,MAAM,YAAY,GAAG,IAAI,CACvB,SAAS,EACT,WAAW,EACX,GAAG,SAAS,OAAO,CACpB,CAAC;wBAEF,yEAAyE;wBACzE,MAAM,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;wBACpE,MAAM,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;wBACzD,IAAI,OAAO,CAAC,cAAc,IAAI,UAAU,CAAC,OAAO,CAAC,cAAc,CAAC,EAAE,CAAC;4BACjE,IAAI,OAAO,KAAK,MAAM,EAAE,CAAC;gCACvB,MAAM,iBAAiB,GAAG,yBAAyB,CACjD,OAAO,CAAC,cAAc,CACvB,CAAC;gCACF,MAAM,OAAO,CAAC,SAAS,CACrB,IAAI,CAAC,YAAY,EAAE,gBAAgB,CAAC,EACpC,iBAAiB,CAClB,CAAC;4BACJ,CAAC;iCAAM,CAAC;gCACN,MAAM,OAAO,CAAC,OAAO,CACnB,OAAO,CAAC,cAAc,EACtB,IAAI,CAAC,YAAY,EAAE,aAAa,CAAC,CAClC,CAAC;4BACJ,CAAC;wBACH,CAAC;wBACD,MAAM,OAAO,CAAC,SAAS,CACrB,IAAI,CAAC,YAAY,EAAE,YAAY,CAAC,EAChC,aAAa,CACd,CAAC;wBACF,MAAM,OAAO,CAAC,SAAS,CACrB,IAAI,CAAC,YAAY,EAAE,cAAc,CAAC,EAClC,IAAI,CAAC,SAAS,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAC5C,CAAC;wBACF,MAAM,OAAO,CAAC,SAAS,CACrB,IAAI,CAAC,YAAY,EAAE,iBAAiB,CAAC,EACrC,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC,CAClC,CAAC;wBAEF,4BAA4B;wBAC5B,MAAM,eAAe,GAAoB;4BACvC,UAAU,EAAE,KAAK,CAAC,KAAK,EAAE,UAAU,IAAI,KAAK;4BAC5C,WAAW;yBACZ,CAAC;wBAEF,MAAM,OAAO,CAAC,SAAS,CACrB,IAAI,CACF,SAAS,EACT,WAAW,EACX,GAAG,SAAS,wBAAwB,CACrC,EACD,IAAI,CAAC,SAAS,CAAC,eAAe,EAAE,IAAI,EAAE,CAAC,CAAC,CACzC,CAAC;wBAEF,OAAO,CAAC,GAAG,CACT,mDAAmD,KAAK,CAAC,IAAI,UAAU,KAAK,CAAC,KAAK,EAAE,UAAU,IAAI,MAAM,IAAI,CAC7G,CAAC;oBACJ,CAAC;oBAED,OAAO,CAAC,GAAG,CACT,oCAAoC,YAAY,CAAC,MAAM,wBAAwB,CAChF,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,OAAO,CAAC,GAAG,CACT,gEAAgE,CACjE,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,SAAS,yBAAyB,CAChC,QAAqB,EACrB,OAAuB;IAEvB,gDAAgD;IAChD,IAAI,QAAQ,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,OAAO,CAAC,GAAG,CACT,kFAAkF;YAChF,qFAAqF,CACxF,CAAC;IACJ,CAAC;IAED,MAAM,kBAAkB,GAAG;QACzB,OAAO;QACP,IAAI;QACJ,eAAe;QACf,SAAS;QACT,OAAO;QACP,KAAK;QACL,KAAK;QACL,KAAK;KACN,CAAC;IACF,KAAK,MAAM,EAAE,IAAI,QAAQ,CAAC,eAAe,EAAE,CAAC;QAC1C,KAAK,MAAM,SAAS,IAAI,kBAAkB,EAAE,CAAC;YAC3C,IAAI,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;gBAClC,OAAO,CAAC,GAAG,CACT,uDAAuD,EAAE,CAAC,IAAI,gBAAgB;oBAC5E,aAAa,SAAS,kDAAkD,CAC3E,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@catmint/adapter-vercel",
3
- "version": "0.0.0-prealpha.6",
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.6"
17
+ "catmint": "0.0.0-prealpha.8"
18
18
  },
19
19
  "devDependencies": {
20
20
  "typescript": "^5.7.0"