@aihu/adapter-vercel 0.1.1 → 0.1.2
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/README.md +6 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -8
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@ npm install @aihu/adapter-vercel
|
|
|
21
21
|
bun add @aihu/adapter-vercel
|
|
22
22
|
```
|
|
23
23
|
|
|
24
|
-
<sub><i>Auto-generated against `@aihu/adapter-vercel@0.1.1
|
|
24
|
+
<sub><i>Auto-generated against `@aihu/adapter-vercel@0.1.1`.</i></sub>
|
|
25
25
|
|
|
26
26
|
<!-- END_AUTOGEN: install -->
|
|
27
27
|
|
|
@@ -37,7 +37,7 @@ bun add @aihu/adapter-vercel
|
|
|
37
37
|
| **Published files** | 3 entries |
|
|
38
38
|
| **License** | MIT |
|
|
39
39
|
|
|
40
|
-
<sub><i>Auto-generated against `@aihu/adapter-vercel@0.1.1
|
|
40
|
+
<sub><i>Auto-generated against `@aihu/adapter-vercel@0.1.1`.</i></sub>
|
|
41
41
|
|
|
42
42
|
<!-- END_AUTOGEN: stats -->
|
|
43
43
|
|
|
@@ -50,7 +50,7 @@ bun add @aihu/adapter-vercel
|
|
|
50
50
|
|---|---|---|
|
|
51
51
|
| `.` | `./dist/index.js` | `—` |
|
|
52
52
|
|
|
53
|
-
<sub><i>Auto-generated against `@aihu/adapter-vercel@0.1.1
|
|
53
|
+
<sub><i>Auto-generated against `@aihu/adapter-vercel@0.1.1`.</i></sub>
|
|
54
54
|
|
|
55
55
|
<!-- END_AUTOGEN: exports -->
|
|
56
56
|
|
|
@@ -64,7 +64,7 @@ bun add @aihu/adapter-vercel
|
|
|
64
64
|
- `@aihu/app` — `workspace:*`
|
|
65
65
|
- `vite` — `>=5.0.0`
|
|
66
66
|
|
|
67
|
-
<sub><i>Auto-generated against `@aihu/adapter-vercel@0.1.1
|
|
67
|
+
<sub><i>Auto-generated against `@aihu/adapter-vercel@0.1.1`.</i></sub>
|
|
68
68
|
|
|
69
69
|
<!-- END_AUTOGEN: deps -->
|
|
70
70
|
|
|
@@ -77,7 +77,7 @@ bun add @aihu/adapter-vercel
|
|
|
77
77
|
- [@aihu/server](../server)
|
|
78
78
|
- [Aihu framework root](../../README.md)
|
|
79
79
|
|
|
80
|
-
<sub><i>Auto-generated against `@aihu/adapter-vercel@0.1.1
|
|
80
|
+
<sub><i>Auto-generated against `@aihu/adapter-vercel@0.1.1`.</i></sub>
|
|
81
81
|
|
|
82
82
|
<!-- END_AUTOGEN: see-also -->
|
|
83
83
|
|
|
@@ -88,6 +88,6 @@ bun add @aihu/adapter-vercel
|
|
|
88
88
|
|
|
89
89
|
MIT — see [LICENSE](../../LICENSE).
|
|
90
90
|
|
|
91
|
-
<sub><i>Auto-generated against `@aihu/adapter-vercel@0.1.1
|
|
91
|
+
<sub><i>Auto-generated against `@aihu/adapter-vercel@0.1.1`.</i></sub>
|
|
92
92
|
|
|
93
93
|
<!-- END_AUTOGEN: license -->
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";;;UAIiB,oBAAA;;AAAjB;;;;EAME,OAAA;EAKA;;;;EAAA,SAAA;
|
|
1
|
+
{"version":3,"file":"index.d.ts","names":[],"sources":["../src/index.ts"],"mappings":";;;UAIiB,oBAAA;;AAAjB;;;;EAME,OAAA;EAKA;;;;EAAA,SAAA;EAyFoB;;;;;EAnFpB,WAAA;AAAA;;;;;;;;;;;;;;;;iBAmFc,MAAA,CAAO,OAAA,GAAU,oBAAA,GAAuB,WAAA"}
|
package/dist/index.js
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
|
-
import{cp as e,mkdir as t,rm as n}from"node:fs/promises";import{join as r,resolve as i}from"node:path";function a(){return[`// AUTO-GENERATED by @aihu/adapter-vercel — do not edit`,`// Vercel Edge Function entry — SPA mode`,`//`,`// In SPA mode (V0), this function handles /api/** routes only.`,`// All page requests are served by Vercel CDN from static/index.html.`,`// For SSR mode, upgrade to @aihu/adapter-vercel with ssr: true (V1+).`,``,`export default async function handler(request) {`,` const url = new URL(request.url)`,` if (!url.pathname.startsWith('/api/')) {`,` return new Response('Not Found', { status: 404 })`,` }`,` return new Response('API route not implemented', { status: 501 })`,`}`,``,`export const config = { runtime: 'edge' }`].join(`
|
|
2
|
-
`)
|
|
3
|
-
`}function
|
|
4
|
-
`)+`
|
|
5
|
-
`}function s(e,t){return e===`edge`?JSON.stringify({runtime:`edge`,entrypoint:`index.js`},null,2)+`
|
|
6
|
-
`:JSON.stringify({runtime:t,handler:`index.js`,maxDuration:10},null,2)+`
|
|
7
|
-
`}function c(){return JSON.stringify({version:3,routes:[{src:`^/assets/(.*)$`,headers:{"cache-control":`public, max-age=31536000, immutable`},continue:!0},{src:`^/api/(.*)$`,dest:`/index.func`},{src:`^/(.*)$`,dest:`/static/index.html`}]},null,2)+`
|
|
8
|
-
`}function l(l){return{name:`vercel`,async adapt(u){let d=l?.runtime??`edge`,f=l?.nodeVersion??`nodejs18.x`,p=i(u.root,l?.outputDir??`.vercel/output`);await n(p,{recursive:!0,force:!0}),await t(p,{recursive:!0});let m=r(p,`static`);await t(m,{recursive:!0}),await e(u.outDir,m,{recursive:!0,force:!0}),console.log(`[@aihu/adapter-vercel] Copied static assets → ${m}`);let h=r(p,`functions`,`index.func`);await t(h,{recursive:!0});let g=d===`edge`?a():o();await u.writeFile(r(h,`index.js`),g);let _=s(d,f);await u.writeFile(r(h,`.vc-config.json`),_),console.log(`[@aihu/adapter-vercel] Wrote function entry (${d} runtime) → ${h}`);let v=c();await u.writeFile(r(p,`config.json`),v),console.log(`[@aihu/adapter-vercel] Build complete → ${p}`),console.log(`[@aihu/adapter-vercel] Deploy with: vercel deploy --prebuilt`)}}}export{l as vercel};
|
|
1
|
+
import{cp as e,mkdir as t,rm as n}from"node:fs/promises";import{join as r,resolve as i}from"node:path";function a(){return`${[`// AUTO-GENERATED by @aihu/adapter-vercel — do not edit`,`// Vercel Edge Function entry — SPA mode`,`//`,`// In SPA mode (V0), this function handles /api/** routes only.`,`// All page requests are served by Vercel CDN from static/index.html.`,`// For SSR mode, upgrade to @aihu/adapter-vercel with ssr: true (V1+).`,``,`export default async function handler(request) {`,` const url = new URL(request.url)`,` if (!url.pathname.startsWith('/api/')) {`,` return new Response('Not Found', { status: 404 })`,` }`,` return new Response('API route not implemented', { status: 501 })`,`}`,``,`export const config = { runtime: 'edge' }`].join(`
|
|
2
|
+
`)}\n`}function o(){return`${[`// AUTO-GENERATED by @aihu/adapter-vercel — do not edit`,`// Vercel Serverless Function entry — SPA mode`,``,`export default async function handler(request, response) {`,` const host = request.headers.host ?? "localhost"`," const url = new URL(request.url, `https://${host}`)",` if (!url.pathname.startsWith('/api/')) {`,` response.status(404).send("Not Found")`,` return`,` }`,` response.status(501).send("API route not implemented")`,`}`].join(`
|
|
3
|
+
`)}\n`}function s(e,t){return e===`edge`?`${JSON.stringify({runtime:`edge`,entrypoint:`index.js`},null,2)}\n`:`${JSON.stringify({runtime:t,handler:`index.js`,maxDuration:10},null,2)}\n`}function c(){return`${JSON.stringify({version:3,routes:[{src:`^/assets/(.*)$`,headers:{"cache-control":`public, max-age=31536000, immutable`},continue:!0},{src:`^/api/(.*)$`,dest:`/index.func`},{src:`^/(.*)$`,dest:`/static/index.html`}]},null,2)}\n`}function l(l){return{name:`vercel`,async adapt(u){let d=l?.runtime??`edge`,f=l?.nodeVersion??`nodejs18.x`,p=i(u.root,l?.outputDir??`.vercel/output`);await n(p,{recursive:!0,force:!0}),await t(p,{recursive:!0});let m=r(p,`static`);await t(m,{recursive:!0}),await e(u.outDir,m,{recursive:!0,force:!0}),console.log(`[@aihu/adapter-vercel] Copied static assets → ${m}`);let h=r(p,`functions`,`index.func`);await t(h,{recursive:!0});let g=d===`edge`?a():o();await u.writeFile(r(h,`index.js`),g);let _=s(d,f);await u.writeFile(r(h,`.vc-config.json`),_),console.log(`[@aihu/adapter-vercel] Wrote function entry (${d} runtime) → ${h}`);let v=c();await u.writeFile(r(p,`config.json`),v),console.log(`[@aihu/adapter-vercel] Build complete → ${p}`),console.log(`[@aihu/adapter-vercel] Deploy with: vercel deploy --prebuilt`)}}}export{l as vercel};
|
|
9
4
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","names":["resolvePath"],"sources":["../src/index.ts"],"sourcesContent":["import { cp, mkdir, rm } from 'node:fs/promises'\nimport { join, resolve as resolvePath } from 'node:path'\nimport type { AdapterContext, AihuAdapter } from '@aihu/app'\n\nexport interface VercelAdapterOptions {\n /**\n * Edge Function runtime.\n * - 'edge': Vercel Edge Runtime (V8 isolates, global deployment) — default\n * - 'serverless': Node.js serverless function (regional)\n */\n runtime?: 'edge' | 'serverless'\n /**\n * Vercel Build Output API output directory.\n * Default: '.vercel/output' (relative to project root)\n */\n outputDir?: string\n /**\n * Node.js version for serverless runtime.\n * Only used when runtime === 'serverless'.\n * Default: 'nodejs18.x'\n */\n nodeVersion?: string\n}\n\nfunction generateEdgeFunctionEntry(): string {\n return
|
|
1
|
+
{"version":3,"file":"index.js","names":["resolvePath"],"sources":["../src/index.ts"],"sourcesContent":["import { cp, mkdir, rm } from 'node:fs/promises'\nimport { join, resolve as resolvePath } from 'node:path'\nimport type { AdapterContext, AihuAdapter } from '@aihu/app'\n\nexport interface VercelAdapterOptions {\n /**\n * Edge Function runtime.\n * - 'edge': Vercel Edge Runtime (V8 isolates, global deployment) — default\n * - 'serverless': Node.js serverless function (regional)\n */\n runtime?: 'edge' | 'serverless'\n /**\n * Vercel Build Output API output directory.\n * Default: '.vercel/output' (relative to project root)\n */\n outputDir?: string\n /**\n * Node.js version for serverless runtime.\n * Only used when runtime === 'serverless'.\n * Default: 'nodejs18.x'\n */\n nodeVersion?: string\n}\n\nfunction generateEdgeFunctionEntry(): string {\n return `${[\n '// AUTO-GENERATED by @aihu/adapter-vercel — do not edit',\n '// Vercel Edge Function entry — SPA mode',\n '//',\n '// In SPA mode (V0), this function handles /api/** routes only.',\n '// All page requests are served by Vercel CDN from static/index.html.',\n '// For SSR mode, upgrade to @aihu/adapter-vercel with ssr: true (V1+).',\n '',\n 'export default async function handler(request) {',\n ' const url = new URL(request.url)',\n \" if (!url.pathname.startsWith('/api/')) {\",\n \" return new Response('Not Found', { status: 404 })\",\n ' }',\n \" return new Response('API route not implemented', { status: 501 })\",\n '}',\n '',\n \"export const config = { runtime: 'edge' }\",\n ].join('\\n')}\\n`\n}\n\nfunction generateServerlessFunctionEntry(): string {\n return `${[\n '// AUTO-GENERATED by @aihu/adapter-vercel — do not edit',\n '// Vercel Serverless Function entry — SPA mode',\n '',\n 'export default async function handler(request, response) {',\n ' const host = request.headers.host ?? \"localhost\"',\n // biome-ignore lint/suspicious/noTemplateCurlyInString: template literal is intentional in generated code\n ' const url = new URL(request.url, `https://${host}`)',\n \" if (!url.pathname.startsWith('/api/')) {\",\n ' response.status(404).send(\"Not Found\")',\n ' return',\n ' }',\n ' response.status(501).send(\"API route not implemented\")',\n '}',\n ].join('\\n')}\\n`\n}\n\nfunction generateVcConfig(runtime: 'edge' | 'serverless', nodeVersion: string): string {\n if (runtime === 'edge') {\n return `${JSON.stringify({ runtime: 'edge', entrypoint: 'index.js' }, null, 2)}\\n`\n }\n return `${JSON.stringify({ runtime: nodeVersion, handler: 'index.js', maxDuration: 10 }, null, 2)}\\n`\n}\n\nfunction generateConfigJson(): string {\n const routes = [\n {\n src: '^/assets/(.*)$',\n headers: { 'cache-control': 'public, max-age=31536000, immutable' },\n continue: true,\n },\n {\n src: '^/api/(.*)$',\n dest: '/index.func',\n },\n {\n src: '^/(.*)$',\n dest: '/static/index.html',\n },\n ]\n return `${JSON.stringify({ version: 3, routes }, null, 2)}\\n`\n}\n\n/**\n * Vercel adapter for aihu (Build Output API v3).\n *\n * Copies static assets to `.vercel/output/static/`, writes an Edge or\n * Serverless function entry, and emits the `config.json` routes manifest.\n *\n * @example\n * // aihu.config.ts\n * import { defineConfig } from '@aihu/app'\n * import { vercel } from '@aihu/adapter-vercel'\n *\n * export default defineConfig({\n * adapter: vercel(),\n * })\n */\nexport function vercel(options?: VercelAdapterOptions): AihuAdapter {\n return {\n name: 'vercel',\n\n async adapt(context: AdapterContext): Promise<void> {\n const runtime = options?.runtime ?? 'edge'\n const nodeVersion = options?.nodeVersion ?? 'nodejs18.x'\n const outputDir = resolvePath(context.root, options?.outputDir ?? '.vercel/output')\n\n // Step 1 — Clean output directory (prevents stale files from prior builds)\n await rm(outputDir, { recursive: true, force: true })\n await mkdir(outputDir, { recursive: true })\n\n // Step 2 — Copy static assets from Vite outDir → .vercel/output/static/\n const staticDir = join(outputDir, 'static')\n await mkdir(staticDir, { recursive: true })\n await cp(context.outDir, staticDir, { recursive: true, force: true })\n console.log(`[@aihu/adapter-vercel] Copied static assets → ${staticDir}`)\n\n // Step 3 — Write Edge/Serverless function entry\n const funcDir = join(outputDir, 'functions', 'index.func')\n await mkdir(funcDir, { recursive: true })\n\n const entryContent =\n runtime === 'edge' ? generateEdgeFunctionEntry() : generateServerlessFunctionEntry()\n await context.writeFile(join(funcDir, 'index.js'), entryContent)\n\n // Step 4 — Write .vc-config.json\n const vcConfig = generateVcConfig(runtime, nodeVersion)\n await context.writeFile(join(funcDir, '.vc-config.json'), vcConfig)\n console.log(`[@aihu/adapter-vercel] Wrote function entry (${runtime} runtime) → ${funcDir}`)\n\n // Step 5 — Write config.json (Build Output API v3 routes)\n const configJson = generateConfigJson()\n await context.writeFile(join(outputDir, 'config.json'), configJson)\n\n console.log(`[@aihu/adapter-vercel] Build complete → ${outputDir}`)\n console.log(`[@aihu/adapter-vercel] Deploy with: vercel deploy --prebuilt`)\n },\n }\n}\n"],"mappings":"uGAwBA,SAAS,GAAoC,CAC3C,MAAO,GAAG,CACR,0DACA,2CACA,KACA,kEACA,wEACA,yEACA,GACA,mDACA,qCACA,6CACA,wDACA,MACA,sEACA,IACA,GACA,4CACD,CAAC,KAAK;EAAK,CAAC,IAGf,SAAS,GAA0C,CACjD,MAAO,GAAG,CACR,0DACA,iDACA,GACA,6DACA,qDAEA,wDACA,6CACA,6CACA,aACA,MACA,2DACA,IACD,CAAC,KAAK;EAAK,CAAC,IAGf,SAAS,EAAiB,EAAgC,EAA6B,CAIrF,OAHI,IAAY,OACP,GAAG,KAAK,UAAU,CAAE,QAAS,OAAQ,WAAY,WAAY,CAAE,KAAM,EAAE,CAAC,IAE1E,GAAG,KAAK,UAAU,CAAE,QAAS,EAAa,QAAS,WAAY,YAAa,GAAI,CAAE,KAAM,EAAE,CAAC,IAGpG,SAAS,GAA6B,CAgBpC,MAAO,GAAG,KAAK,UAAU,CAAE,QAAS,EAAG,OAAA,CAdrC,CACE,IAAK,iBACL,QAAS,CAAE,gBAAiB,sCAAuC,CACnE,SAAU,GACX,CACD,CACE,IAAK,cACL,KAAM,cACP,CACD,CACE,IAAK,UACL,KAAM,qBACP,CAE0C,CAAE,CAAE,KAAM,EAAE,CAAC,IAkB5D,SAAgB,EAAO,EAA6C,CAClE,MAAO,CACL,KAAM,SAEN,MAAM,MAAM,EAAwC,CAClD,IAAM,EAAU,GAAS,SAAW,OAC9B,EAAc,GAAS,aAAe,aACtC,EAAYA,EAAY,EAAQ,KAAM,GAAS,WAAa,iBAAiB,CAGnF,MAAM,EAAG,EAAW,CAAE,UAAW,GAAM,MAAO,GAAM,CAAC,CACrD,MAAM,EAAM,EAAW,CAAE,UAAW,GAAM,CAAC,CAG3C,IAAM,EAAY,EAAK,EAAW,SAAS,CAC3C,MAAM,EAAM,EAAW,CAAE,UAAW,GAAM,CAAC,CAC3C,MAAM,EAAG,EAAQ,OAAQ,EAAW,CAAE,UAAW,GAAM,MAAO,GAAM,CAAC,CACrE,QAAQ,IAAI,iDAAiD,IAAY,CAGzE,IAAM,EAAU,EAAK,EAAW,YAAa,aAAa,CAC1D,MAAM,EAAM,EAAS,CAAE,UAAW,GAAM,CAAC,CAEzC,IAAM,EACJ,IAAY,OAAS,GAA2B,CAAG,GAAiC,CACtF,MAAM,EAAQ,UAAU,EAAK,EAAS,WAAW,CAAE,EAAa,CAGhE,IAAM,EAAW,EAAiB,EAAS,EAAY,CACvD,MAAM,EAAQ,UAAU,EAAK,EAAS,kBAAkB,CAAE,EAAS,CACnE,QAAQ,IAAI,gDAAgD,EAAQ,cAAc,IAAU,CAG5F,IAAM,EAAa,GAAoB,CACvC,MAAM,EAAQ,UAAU,EAAK,EAAW,cAAc,CAAE,EAAW,CAEnE,QAAQ,IAAI,2CAA2C,IAAY,CACnE,QAAQ,IAAI,+DAA+D,EAE9E"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@aihu/adapter-vercel",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.2",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"prepublishOnly": "bun run build"
|
|
26
26
|
},
|
|
27
27
|
"peerDependencies": {
|
|
28
|
-
"@aihu/app": "
|
|
28
|
+
"@aihu/app": "workspace:*",
|
|
29
29
|
"vite": ">=5.0.0"
|
|
30
30
|
},
|
|
31
31
|
"description": "Vercel deployment adapter for @aihu/app.",
|